diff --git a/README.md b/README.md
index 2a194cde5cca2ac12726abc0e9020fecc4ca7912..a141402c30f1fe7ccd1c48365bd71ebea1802916 100644
--- a/README.md
+++ b/README.md
@@ -162,25 +162,34 @@ Initialize swarm & stack:
 
 ```bash
 docker swarm init                               # initialize swarm
-# build images
+```
+
+Build images:
+```
 docker build core/ --cache-from registry.gitlab.eox.at/esa/prism/vs/pvs_core -t registry.gitlab.eox.at/esa/prism/vs/pvs_core
 docker build cache/ --cache-from registry.gitlab.eox.at/esa/prism/vs/pvs_cache -t registry.gitlab.eox.at/esa/prism/vs/pvs_cache
 docker build preprocessor/ --cache-from registry.gitlab.eox.at/esa/prism/vs/pvs_preprocessor -t registry.gitlab.eox.at/esa/prism/vs/pvs_preprocessor
 docker build client/ --cache-from registry.gitlab.eox.at/esa/prism/vs/pvs_client -t registry.gitlab.eox.at/esa/prism/vs/pvs_client
-#or
-    docker login -u {DOCKER_USER} -p {DOCKER_PASSWORD} registry.gitlab.eox.at
-    docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_core
-    docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_cache
-    docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_preprocessor
-    docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_client
+
+Or pull them from the registry:
+```
+docker login -u {DOCKER_USER} -p {DOCKER_PASSWORD} registry.gitlab.eox.at
+docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_core
+docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_cache
+docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_preprocessor
+docker pull registry.gitlab.eox.at/esa/prism/vs/pvs_client
+```
+
+Deploy the stack:
+```
 docker stack deploy -c docker-compose.vhr18.yml -c docker-compose.vhr18.dev.yml vhr18-pvs  # start VHR_IMAGE_2018 stack in dev mode, for example to use local sources
 docker stack deploy -c docker-compose.emg.yml -c docker-compose.emg.dev.yml emg-pvs  # start Emergency stack in dev mode, for example to use local sources
 
 docker exec -it $(docker ps -qf "name=vhr18-pvs_renderer") /bin/bash
 cd /var/www/pvs/dev/pvs_instance
 python manage.py runserver 0.0.0.0:8080
-
 ```
+
 Tear town stack including data:
 
 ```bash
@@ -191,15 +200,3 @@ docker volume rm vhr18-pvs_traefik-data
 docker volume rm vhr18-pvs_cache-db
 docker volume rm vhr18-pvs_instance-data
 ```
-
-Generate mapcache.sqlite
-
-```bash
-docker exec -it $(docker ps -qf "name=vhr18-pvs_renderer") python3 /var/www/pvs/dev/pvs_instance/manage.py mapcache sync -f
-docker exec -it $(docker ps -qf "name=vhr18-pvs_renderer") mv VHR_IMAGE_2018.sqlite /cache-db/vhr18_mapcache_cache.sqlite
-
-docker exec -it $(docker ps -qf "name=emg-pvs_renderer") python3 /var/www/pvs/dev/pvs_instance/manage.py mapcache sync -f
-docker exec -it $(docker ps -qf "name=emg-pvs_renderer") mv Emergency.sqlite /cache-db/emg_mapcache_cache.sqlite
-```
-
-
diff --git a/core/registrar.py b/core/registrar.py
index dee575790794cd4be5298e2a9551f821b1ef31df..be32759d43acc862299587ecfb7afa82d31f922b 100644
--- a/core/registrar.py
+++ b/core/registrar.py
@@ -52,6 +52,7 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pvs_instance.settings")
 django.setup()
 
 from eoxserver.backends import access
+from eoxserver.backends import models as backends
 from eoxserver.resources.coverages import models
 from eoxserver.resources.coverages.registration.product import (
     ProductRegistrator
@@ -104,26 +105,39 @@ def add_mask(product):
     )
 
 
-def get_product_level(product):
+def get_product_type_and_level(metadata_item):
+    with access.vsi_open(metadata_item) as f:
+        tree = lxml.etree.parse(f)
+    root = tree.getroot()
+
     try:
-        metadata_item = product.metadata_items.all()[0]
-        with access.vsi_open(metadata_item) as f:
-            tree = lxml.etree.parse(f)
-        root = tree.getroot()
-        xp = '/gsc:report/gsc:opt_metadata/gml:metaDataProperty/gsc:EarthObservationMetaData/eop:parentIdentifier/text()'
+        xp = '//gml:using/eop:EarthObservationEquipment/eop:platform/eop:Platform/eop:shortName/text()'
         product_type_name = tree.xpath(xp, namespaces=root.nsmap)[0]
-        if product_type_name.endswith('Level_1'):
-            return 'Level_1'
-        if product_type_name.endswith('Level_3'):
-            return 'Level_3'
+    except Exception as e:
+        logger.warning(
+            'Failed to determine product type of %s, error was %s'
+            % (metadata_item.location, e)
+        )
+
+    try:
+        xp = '//gml:metaDataProperty/gsc:EarthObservationMetaData/eop:parentIdentifier/text()'
+        parent_identifier = tree.xpath(xp, namespaces=root.nsmap)[0]
+
+        print("parent identifier --->", parent_identifier)
+        if parent_identifier.endswith('Level_1'):
+            level = 'Level_1'
+        if parent_identifier.endswith('Level_3'):
+            level = 'Level_3'
         else:
-            raise Exception('Invalid product type name %s' % product_type_name)
+            raise Exception('Invalid parent identifier type name %s' % parent_identifier)
     except Exception as e:
         logger.warning(
-            'Failed to determine product level for product %s, error was %s'
-            % (product.identifier, e)
+            'Failed to determine product level of %s, error was %s'
+            % (metadata_item.location, e)
         )
 
+    return product_type_name, level
+
 
 class RegistrationError(Exception):
     pass
@@ -173,7 +187,10 @@ def registrar(
             % objects_prefix
         )
 
-    product_type = data_package.split("/")[2]
+    storage = backends.Storage.objects.get(name=upload_container)
+    metadata_item = models.MetaDataItem(storage=storage, location=metadata_package)
+
+    product_type, level = get_product_type_and_level(metadata_item)
 
     product, replaced = ProductRegistrator().register(
         metadata_locations=[[upload_container,
@@ -185,12 +202,12 @@ def registrar(
         package_path=None,
         overrides={},
     )
+
     collection = models.Collection.objects.get(
         identifier=collection
     )
     models.collection_insert_eo_object(collection, product)
 
-    level = get_product_level(product)
     if level == 'Level_1':
         collection_level_1 = models.Collection.objects.get(
             identifier="%s_Level_1" % collection
diff --git a/docker-compose.emg.yml b/docker-compose.emg.yml
index 739eeb4a9763093d19521fb5c792fe0858ef0015..9f31b3a6c7b1d0b9779e33c62257bbf7f7cf64f2 100644
--- a/docker-compose.emg.yml
+++ b/docker-compose.emg.yml
@@ -62,6 +62,7 @@ services:
         target: /cache-db
     env_file:
       - env/emg.env
+      - env/emg_db.env
       - env/emg_obs.env
     environment:
       INSTANCE_ID: "prism-view-server_cache"