diff --git a/src/slice/service/SliceServiceServicerImpl.py b/src/slice/service/SliceServiceServicerImpl.py
index f030e7c1116211a39b875070f728bf5d521979c4..ada7218588391766147a02f9713b540016522aa7 100644
--- a/src/slice/service/SliceServiceServicerImpl.py
+++ b/src/slice/service/SliceServiceServicerImpl.py
@@ -50,9 +50,19 @@ class SliceServiceServicerImpl(SliceServiceServicer):
             slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED # pylint: disable=no-member
             context_client.SetSlice(slice_request)
             _slice = context_client.GetSlice(request.slice_id)
+
         slice_request = Slice()
         slice_request.CopyFrom(_slice)
 
+        if len(request.slice_endpoint_ids) < 2:
+            # unable to identify the kind of slice; just update endpoints, constraints and config rules
+            # update the slice in database, and return
+            # pylint: disable=no-member
+            copy_endpoint_ids(request.slice_endpoint_ids, slice_request.slice_endpoint_ids)
+            copy_constraints(request.slice_constraints, slice_request.slice_constraints)
+            copy_config_rules(request.slice_config.config_rules, slice_request.slice_config.config_rules)
+            return context_client.SetSlice(slice_request)
+
         #LOGGER.info('json_current_slice = {:s}'.format(str(json_current_slice)))
         #json_updated_slice = grpc_message_to_json(request)
         #LOGGER.info('json_updated_slice = {:s}'.format(str(json_updated_slice)))
@@ -62,73 +72,84 @@ class SliceServiceServicerImpl(SliceServiceServicer):
         if is_multi_domain(context_client, request.slice_endpoint_ids):
             interdomain_client = InterdomainClient()
             slice_id = interdomain_client.RequestSlice(request)
-        else:
-            service_id = ServiceId()
+            slice_ = context_client.GetSlice(slice_id)
+            slice_active = Slice()
+            slice_active.CopyFrom(slice_)
+            slice_active.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_ACTIVE # pylint: disable=no-member
+            context_client.SetSlice(slice_active)
+            return slice_id
+
+        # Local domain slice
+        service_id = ServiceId()
+        # pylint: disable=no-member
+        context_uuid = service_id.context_id.context_uuid.uuid = request.slice_id.context_id.context_uuid.uuid
+        slice_uuid = service_uuid = service_id.service_uuid.uuid = request.slice_id.slice_uuid.uuid
+
+        service_client = ServiceClient()
+        try:
+            _service = context_client.GetService(service_id)
+        except: # pylint: disable=bare-except
             # pylint: disable=no-member
-            context_uuid = service_id.context_id.context_uuid.uuid = request.slice_id.context_id.context_uuid.uuid
-            slice_uuid = service_uuid = service_id.service_uuid.uuid = request.slice_id.slice_uuid.uuid
-
-            service_client = ServiceClient()
-            try:
-                _service = context_client.GetService(service_id)
-            except: # pylint: disable=bare-except
-                # pylint: disable=no-member
-                service_request = Service()
-                service_request.service_id.CopyFrom(service_id)
-                service_request.service_type = ServiceTypeEnum.SERVICETYPE_UNKNOWN
-                service_request.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED
-                service_reply = service_client.CreateService(service_request)
-                if service_reply != service_request.service_id: # pylint: disable=no-member
-                    # pylint: disable=raise-missing-from
-                    raise Exception('Service creation failed. Wrong Service Id was returned')
-                _service = context_client.GetService(service_id)
             service_request = Service()
-            service_request.CopyFrom(_service)
-
-            # pylint: disable=no-member
-            copy_endpoint_ids(request.slice_endpoint_ids, service_request.service_endpoint_ids)
-            copy_constraints(request.slice_constraints, service_request.service_constraints)
-            copy_config_rules(request.slice_config.config_rules, service_request.service_config.config_rules)
-
+            service_request.service_id.CopyFrom(service_id)
             service_request.service_type = ServiceTypeEnum.SERVICETYPE_UNKNOWN
-            for config_rule in request.slice_config.config_rules:
-                LOGGER.info('config_rule: {:s}'.format(grpc_message_to_json_string(config_rule)))
-                config_rule_kind = config_rule.WhichOneof('config_rule')
-                LOGGER.info('config_rule_kind: {:s}'.format(str(config_rule_kind)))
-                if config_rule_kind != 'custom': continue
-                custom = config_rule.custom
-                resource_key = custom.resource_key
-                LOGGER.info('resource_key: {:s}'.format(str(resource_key)))
-
-                # TODO: parse resource key with regular expression, e.g.:
-                #    m = re.match('\/device\[[^\]]\]\/endpoint\[[^\]]\]\/settings', s)
-                if not resource_key.startswith('/device'): continue
-                if not resource_key.endswith('/settings'): continue
-
-                resource_value = json.loads(custom.resource_value)
-                LOGGER.info('resource_value: {:s}'.format(str(resource_value)))
-
-                if service_request.service_type == ServiceTypeEnum.SERVICETYPE_UNKNOWN:
-                    if (resource_value.get('address_ip') is not None and \
-                        resource_value.get('address_prefix') is not None):
-                        service_request.service_type = ServiceTypeEnum.SERVICETYPE_L3NM
-                        LOGGER.info('is L3')
-                    else:
-                        service_request.service_type = ServiceTypeEnum.SERVICETYPE_L2NM
-                        LOGGER.info('is L2')
-                    break
-
-            service_reply = service_client.UpdateService(service_request)
+            service_request.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PLANNED
+            service_reply = service_client.CreateService(service_request)
             if service_reply != service_request.service_id: # pylint: disable=no-member
-                raise Exception('Service update failed. Wrong Service Id was returned')
-
-            copy_endpoint_ids(request.slice_endpoint_ids, slice_request.slice_endpoint_ids)
-            copy_constraints(request.slice_constraints, slice_request.slice_constraints)
-            copy_config_rules(request.slice_config.config_rules, slice_request.slice_config.config_rules)
-
-            update_service_ids(slice_request.slice_service_ids, context_uuid, service_uuid)
-            context_client.SetSlice(slice_request)
-            slice_id = slice_request.slice_id
+                # pylint: disable=raise-missing-from
+                raise Exception('Service creation failed. Wrong Service Id was returned')
+            _service = context_client.GetService(service_id)
+        service_request = Service()
+        service_request.CopyFrom(_service)
+
+        # pylint: disable=no-member
+        copy_endpoint_ids(request.slice_endpoint_ids, service_request.service_endpoint_ids)
+        copy_constraints(request.slice_constraints, service_request.service_constraints)
+        copy_config_rules(request.slice_config.config_rules, service_request.service_config.config_rules)
+
+        service_request.service_type = ServiceTypeEnum.SERVICETYPE_UNKNOWN
+        for config_rule in request.slice_config.config_rules:
+            LOGGER.info('config_rule: {:s}'.format(grpc_message_to_json_string(config_rule)))
+            config_rule_kind = config_rule.WhichOneof('config_rule')
+            LOGGER.info('config_rule_kind: {:s}'.format(str(config_rule_kind)))
+            if config_rule_kind != 'custom': continue
+            custom = config_rule.custom
+            resource_key = custom.resource_key
+            LOGGER.info('resource_key: {:s}'.format(str(resource_key)))
+
+            # TODO: parse resource key with regular expression, e.g.:
+            #    m = re.match('\/device\[[^\]]\]\/endpoint\[[^\]]\]\/settings', s)
+            if not resource_key.startswith('/device'): continue
+            if not resource_key.endswith('/settings'): continue
+
+            resource_value = json.loads(custom.resource_value)
+            LOGGER.info('resource_value: {:s}'.format(str(resource_value)))
+
+            if service_request.service_type == ServiceTypeEnum.SERVICETYPE_UNKNOWN:
+                if (resource_value.get('address_ip') is not None and \
+                    resource_value.get('address_prefix') is not None):
+                    service_request.service_type = ServiceTypeEnum.SERVICETYPE_L3NM
+                    LOGGER.info('is L3')
+                else:
+                    service_request.service_type = ServiceTypeEnum.SERVICETYPE_L2NM
+                    LOGGER.info('is L2')
+                break
+
+        if service_request.service_type == ServiceTypeEnum.SERVICETYPE_UNKNOWN:
+            service_request.service_type = ServiceTypeEnum.SERVICETYPE_L2NM
+            LOGGER.info('assume L2')
+
+        service_reply = service_client.UpdateService(service_request)
+        if service_reply != service_request.service_id: # pylint: disable=no-member
+            raise Exception('Service update failed. Wrong Service Id was returned')
+
+        copy_endpoint_ids(request.slice_endpoint_ids, slice_request.slice_endpoint_ids)
+        copy_constraints(request.slice_constraints, slice_request.slice_constraints)
+        copy_config_rules(request.slice_config.config_rules, slice_request.slice_config.config_rules)
+
+        update_service_ids(slice_request.slice_service_ids, context_uuid, service_uuid)
+        context_client.SetSlice(slice_request)
+        slice_id = slice_request.slice_id
 
         slice_ = context_client.GetSlice(slice_id)
         slice_active = Slice()
diff --git a/src/slice/service/__main__.py b/src/slice/service/__main__.py
index a59c54b4b1b56865871d331409c1a7f60629aec6..b2f4536503ac176628c42cf0211315089697c50e 100644
--- a/src/slice/service/__main__.py
+++ b/src/slice/service/__main__.py
@@ -15,7 +15,9 @@
 import logging, signal, sys, threading
 from prometheus_client import start_http_server
 from common.Constants import ServiceNameEnum
-from common.Settings import ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_log_level, get_metrics_port, wait_for_environment_variables
+from common.Settings import (
+    ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_log_level, get_metrics_port,
+    wait_for_environment_variables)
 from .SliceService import SliceService
 
 terminate = threading.Event()