diff --git a/core/Dockerfile b/core/Dockerfile
index da66d65d9dbc319b4d991d5bba9ae2279cb651cf..a49166790edc279a7aec1509ddb03a36f4071b50 100644
--- a/core/Dockerfile
+++ b/core/Dockerfile
@@ -50,6 +50,7 @@ ENV INSTANCE_ID="prism-view-server_core" \
     INSTANCE_NAME="pvs_instance"\
     INSTANCE_DIR="/var/www/pvs/dev/pvs_instance/" \
     COLLECTION= \
+    UPLOAD_CONTAINER= \
     DB_USER= \
     DB_PW= \
     DB_HOST= \
diff --git a/core/registrar.py b/core/registrar.py
index 51bb1892e6ab2845925b6e29ac0a68af0ebce259..a774a1d501fe24cbb537c0ff4e7701e5a952bc42 100644
--- a/core/registrar.py
+++ b/core/registrar.py
@@ -139,17 +139,15 @@ class RegistrationError(Exception):
 @transaction.atomic
 def registrar(
     collection,
-    objects_prefix, replace=False, client=None, registered_set_key=None
+    objects_prefix, upload_container, replace=False, client=None, registered_set_key=None
 ):
     logger.info("Starting registration of product '%s'." % objects_prefix)
 
-    container = objects_prefix.split("/")[1]
-    package = "/".join(objects_prefix.split("/")[2:])
     metadata_package, data_package, has_vrt = None, None, None
 
     with SwiftService() as swift:
         list_parts_gen = swift.list(
-            container=container, options={"prefix": package},
+            container=upload_container, options={"prefix": objects_prefix},
         )
         for page in list_parts_gen:
             if page["success"]:
@@ -184,7 +182,7 @@ def registrar(
     product_type = data_package.split("/")[1]
 
     product, replaced = ProductRegistrator().register(
-        metadata_locations=[[container,
+        metadata_locations=[[upload_container,
                              metadata_package, ], ],
         type_name="%s_Product_%s" % (collection, product_type),
         replace=replace,
@@ -211,8 +209,8 @@ def registrar(
         models.collection_insert_eo_object(collection_level_3, product)
 
     report = GDALRegistrator().register(
-        data_locations=[[container, data_package, ], ],
-        metadata_locations=[[container,
+        data_locations=[[upload_container, data_package, ], ],
+        metadata_locations=[[upload_container,
                              metadata_package, ], ],
         coverage_type_name="RGBNir",
         overrides={"identifier": "%s__coverage" % product.identifier},
@@ -246,6 +244,7 @@ def registrar(
 
 def registrar_redis_wrapper(
     collection,
+    upload_container,
     replace=False, host="localhost", port=6379,
     register_queue_key="register_queue",
     registered_set_key="registered_set",
@@ -260,6 +259,7 @@ def registrar_redis_wrapper(
             registrar(
                 collection,
                 value[1],
+                upload_container,
                 replace=replace,
                 client=client,
                 registered_set_key=registered_set_key
@@ -332,15 +332,22 @@ if __name__ == "__main__":
         logger.critical("Provided collection '%s' is not valid." % collection)
         sys.exit(1)
 
+    upload_container = os.environ.get('UPLOAD_CONTAINER')
+    if upload_container is None:
+        logger.critical("UPLOAD_CONTAINER environment variable not set.")
+        sys.exit(1)
+
     if arg_values.mode == "standard":
         registrar(
             collection,
             arg_values.objects_prefix,
+            upload_container,
             replace=arg_values.replace,
         )
     else:
         registrar_redis_wrapper(
             collection,
+            upload_container,
             replace=arg_values.replace,
             host=arg_values.redis_host,
             port=arg_values.redis_port,
diff --git a/env/emg.env b/env/emg.env
index 75b1cd21157bbc350b10c8586afe561b1a939936..d056fa2885245bb91d5d250f4fed083dcc54eafe 100644
--- a/env/emg.env
+++ b/env/emg.env
@@ -1,4 +1,5 @@
 COLLECTION=Emergency
+UPLOAD_CONTAINER=emg-data
 
 GDAL_DISABLE_READDIR_ON_OPEN=TRUE
 CPL_VSIL_CURL_ALLOWED_EXTENSIONS=.TIF,.tif,.xml
diff --git a/env/vhr18.env b/env/vhr18.env
index 8c04b00bf71965ffbbdfcbebfe83df770577fdcb..33c93caf76fbc1d6cfc995e939bf40a66cfce66d 100644
--- a/env/vhr18.env
+++ b/env/vhr18.env
@@ -1,4 +1,5 @@
 COLLECTION=VHR_IMAGE_2018
+UPLOAD_CONTAINER=vhr18-data
 
 GDAL_DISABLE_READDIR_ON_OPEN=TRUE
 CPL_VSIL_CURL_ALLOWED_EXTENSIONS=.TIF,.tif,.xml
diff --git a/preprocessor/Dockerfile b/preprocessor/Dockerfile
index 8a9a19969a7e92ee5f86744a061463f535bda9b0..39b317ed07e797dd0dcce2811e53ea32155fa7b7 100644
--- a/preprocessor/Dockerfile
+++ b/preprocessor/Dockerfile
@@ -41,6 +41,7 @@ RUN apk add --no-cache gcc py3-pip python3-dev py3-setuptools musl-dev \
 
 ENV INSTANCE_ID="prism-data-access-server_preprocessor" \
     COLLECTION= \
+    UPLOAD_CONTAINER= \
     ST_AUTH_VERSION=3 \
     OS_AUTH_URL="https://auth.cloud.ovh.net/v3/" \
     OS_USERNAME= \
diff --git a/preprocessor/preprocessor.py b/preprocessor/preprocessor.py
index 58d08be7e152d837a50075e19aec8ecc007e0f1f..62d964dbb827404b728a81391227fb85fe45897a 100644
--- a/preprocessor/preprocessor.py
+++ b/preprocessor/preprocessor.py
@@ -86,7 +86,7 @@ def setup_logging(verbosity):
 
 
 def preprocessor(
-    collection, tar_object_path, replace=False,
+    collection, tar_object_path, upload_container, replace=False,
     client=None, register_queue_key=None
 ):
     logger.info("Starting preprocessing of '%s'." % (tar_object_path))
@@ -100,7 +100,7 @@ def preprocessor(
             if not replace:
                 try:
                     list_parts_gen = swift.list(
-                        container=container, options={"prefix": package},
+                        container=upload_container, options={"prefix": tar_object_path},
                     )
                     for page in list_parts_gen:
                         if page["success"]:
@@ -245,7 +245,7 @@ def preprocessor(
                     SwiftUploadObject(
                         vrt_name,
                         object_name=os.path.join(
-                            package, os.path.basename(vrt_name))
+                            container, package, os.path.basename(vrt_name))
                     )
                 )
 
@@ -257,23 +257,26 @@ def preprocessor(
                     swift_upload_options["segment_size"] = 2 * 1024 * 1024 * 1024  # 2gb segments
 
                 dest_object_name = os.path.join(
-                    package, os.path.basename(data_file)
+                    container, package, os.path.basename(data_file)
                 )
                 objects.append(
-                    SwiftUploadObject(data_file, object_name=dest_object_name)
+                    SwiftUploadObject(
+                        data_file,
+                        object_name=dest_object_name
+                    )
                 )
 
             # add metadata to files to be uploaded after data files
             objects.append(
                 SwiftUploadObject(
                     os.path.join(tmpdirname, metadata_file),
-                    object_name=os.path.join(package, metadata_file)
+                    object_name=os.path.join(container, package, metadata_file)
                 )
             )
 
             # upload files
             for upload in swift.upload(
-                container=container,
+                container=upload_container,
                 objects=objects,
                 options=swift_upload_options
             ):
@@ -312,7 +315,7 @@ def preprocessor(
 
 
 def preprocessor_redis_wrapper(
-    collection, replace=False, host="localhost", port=6379,
+    collection, upload_container, replace=False, host="localhost", port=6379,
     preprocess_queue_key="preprocess_queue",
     register_queue_key="register_queue"
 ):
@@ -325,6 +328,7 @@ def preprocessor_redis_wrapper(
         preprocessor(
             collection,
             value[1],
+            upload_container,
             replace=replace,
             client=client,
             register_queue_key=register_queue_key
@@ -392,15 +396,22 @@ if __name__ == "__main__":
         logger.critical("Provided collection '%s' is not valid." % collection)
         sys.exit(1)
 
+    upload_container = os.environ.get('UPLOAD_CONTAINER')
+    if upload_container is None:
+        logger.critical("UPLOAD_CONTAINER environment variable not set.")
+        sys.exit(1)
+
     if arg_values.mode == "standard":
         preprocessor(
             collection,
             arg_values.tar_object_path,
+            upload_container,
             replace=arg_values.replace,
         )
     else:
         preprocessor_redis_wrapper(
             collection,
+            upload_container,
             replace=arg_values.replace,
             host=arg_values.redis_host,
             port=arg_values.redis_port,