diff --git a/data-handling-ng.yml b/data-handling-ng.yml
index 4f39e4fab9a927f37a35955467857802c2d19627..cdc3d97d37db3db0cec7ea2d5575e1da830cb271 100644
--- a/data-handling-ng.yml
+++ b/data-handling-ng.yml
@@ -97,7 +97,7 @@ CollectDatabaseManual:
     - branch=${CHAT_INPUT}${TRIGGER_INPUT}
     - if [[ ! -d /data/${branch} ]]; then echo "Branch $branch does not exist"; exit 1; fi
     - cd /data/${branch}/files
-    - tar --exclude={"cae","css","js","languages","pdfpreview","php","styles","translations","video_thumbnails"} -czvf files.tar.gz public private
+    - tar --exclude={"cae","css","js","languages","pdfpreview","php","styles","translations","video_thumbnails"} -czvf files.tar.gz $COLLECT_DIRECTORIES
     - cd -
     - mv /data/${branch}/files/files.tar.gz .
   artifacts:
@@ -108,6 +108,8 @@ CollectDatabaseManual:
 
 CollectFiles:
   extends: .CollectFiles
+  variables:
+    COLLECT_DIRECTORIES: public private
   only:
     refs:
       - triggers
@@ -117,10 +119,31 @@ CollectFiles:
 
 CollectFilesManual:
   extends: .CollectFiles
+  variables:
+    COLLECT_DIRECTORIES: public private
   only:
     variables:
       - $TRIGGERMODE == 'manual' && $TRIGGERTASK == 'CollectFiles'
 
+CollectPublicFiles:
+  extends: .CollectFiles
+  variables:
+    COLLECT_DIRECTORIES: public
+  only:
+    refs:
+      - triggers
+      - chat
+    variables:
+      - $CI_PIPELINE_SOURCE == 'chat' || $TRIGGERTASK == 'CollectPublicFiles'
+
+CollectPublicFilesManual:
+  extends: .CollectFiles
+  variables:
+    COLLECT_DIRECTORIES: public
+  only:
+    variables:
+      - $TRIGGERMODE == 'manual' && $TRIGGERTASK == 'CollectPublicFiles'
+
 CopyDataToStage:
   variables:
     GIT_STRATEGY: none