diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index 801f789aad5bf3bec30fb8b3beb635bf96e5169f..4ad935d8368aa8e6d3d22bfe3936dd63475eed9f 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -28,7 +28,7 @@ replace = version="{new_version}"
 search = version="{current_version}"
 replace = version="{new_version}"
 
-[bumpversion:glob:registrar/setup.py]
+[bumpversion:glob:core/setup.py]
 search = version="{current_version}"
 replace = version="{new_version}"
 
diff --git a/core/registrar/backend.py b/core/registrar/backend.py
index 056017e04464616e16b5520c1a98db0b9ce6b5af..a51d3deeb2aaec649620ace7938ffc5cf6ca3143 100644
--- a/core/registrar/backend.py
+++ b/core/registrar/backend.py
@@ -7,7 +7,9 @@ import json
 
 import django
 from django.db import transaction
+from django.db.models import Count
 from django.contrib.gis.geos import GEOSGeometry, Polygon
+from osgeo import gdal
 
 from .exceptions import RegistrationError
 from .context import Context
@@ -129,14 +131,16 @@ class EOxServerBackend(Backend):
         from eoxserver.resources.coverages.registration.registrators.gdal import GDALRegistrator
 
         # get the mapping for this particular item
-        type_mapping = self.mapping[item.product_type]
+        try:
+            type_mapping = self.mapping[item.product_type]
+        except KeyError:
+            raise RegistrationError(f'Could not find mapping for {item.product_type} in configuration')
         mapping = type_mapping.get(item.product_level) or type_mapping.get(None)
 
         if not mapping:
             raise RegistrationError(f'Could not get mapping for {item.product_type} {item.product_level}')
 
         _, metadata_file = source.get_container_and_path(item.metadata_files[0])
-        # metadata_file = '/'.join(item.metadata_files[0].split('/')[1:])
         storage = self._get_storage_from_source(source, item.path)
 
         try:
@@ -180,9 +184,26 @@ class EOxServerBackend(Backend):
                 storage + [source.get_container_and_path(raster_item)[1]]
                 for raster_item in (raster_items if isinstance(raster_items, list) else [raster_items])
             ]
-
+            if isinstance(coverage_type_name, list):
+                # determine which one to use based on number of bands
+                gdal_path_prefix = ''
+                if isinstance(source, SwiftSource):
+                    gdal_path_prefix = '/vsiswift/'
+                elif isinstance(source, S3Source):
+                    gdal_path_prefix = '/vsis3/'
+                raster_item_to_check = f'{gdal_path_prefix}{raster_items[0][0]}/{raster_items[0][1]}'
+                ds = gdal.Open(raster_item_to_check)
+                logger.debug("Raster has number of bands: '%s'" % ds.RasterCount)
+                # find covtype that has correct number of bands
+                try:
+                    coverage_model = models.CoverageType.objects \
+                        .filter(name__in=coverage_type_name) \
+                        .annotate(field_count=Count('field_types')) \
+                        .get(field_count=ds.RasterCount)
+                except models.CoverageType.DoesNotExist:
+                    raise RegistrationError(f'Coverage Band Count is different than in any of configured CoverageTypes')
+                coverage_type_name = coverage_model.name
             logger.info(f"Registering coverage{'s' if len(raster_items) > 1 else ''} {raster_items} as {coverage_type_name}")
-
             report = GDALRegistrator().register(
                 data_locations=raster_items,
                 metadata_locations=[storage + [metadata_file]],
diff --git a/core/setup.py b/core/setup.py
index 93112025b3dde3f53a4f33ca88c9f6013c33960a..223d0ed5738d4a44a88dc5e5d6233d1ea820725a 100644
--- a/core/setup.py
+++ b/core/setup.py
@@ -6,7 +6,7 @@ long_description = ""
 
 setup(
     name="registrar", # Replace with your own username
-    version="1.0.0-rc.2",
+    version="1.0.0",
     author="",
     author_email="",
     description="registrar for PVS",