diff --git a/src/slice/Dockerfile b/src/slice/Dockerfile
index 96a751d156edcaef38794ecfe5b409cbeb081e82..7dadc477f70667c827d4a9eb0ddd013c85b97344 100644
--- a/src/slice/Dockerfile
+++ b/src/slice/Dockerfile
@@ -64,6 +64,7 @@ RUN python3 -m pip install -r requirements.txt
 WORKDIR /var/teraflow
 COPY src/context/. context/
 COPY src/interdomain/. interdomain/
+COPY src/pathcomp/. pathcomp/
 COPY src/service/. service/
 COPY src/slice/. slice/
 
diff --git a/src/slice/service/SliceServiceServicerImpl.py b/src/slice/service/SliceServiceServicerImpl.py
index 53875f0e6ae7c8e3e7d5ac9dad7501a2136844c4..f030e7c1116211a39b875070f728bf5d521979c4 100644
--- a/src/slice/service/SliceServiceServicerImpl.py
+++ b/src/slice/service/SliceServiceServicerImpl.py
@@ -17,11 +17,12 @@ from common.proto.context_pb2 import (
     Empty, Service, ServiceId, ServiceStatusEnum, ServiceTypeEnum, Slice, SliceId, SliceStatusEnum)
 from common.proto.slice_pb2_grpc import SliceServiceServicer
 from common.rpc_method_wrapper.Decorator import create_metrics, safe_and_metered_rpc_method
+from common.tools.context_queries.InterDomain import is_multi_domain
 from common.tools.grpc.ConfigRules import copy_config_rules
 from common.tools.grpc.Constraints import copy_constraints
 from common.tools.grpc.EndPointIds import copy_endpoint_ids
 from common.tools.grpc.ServiceIds import update_service_ids
-from common.tools.grpc.Tools import grpc_message_to_json, grpc_message_to_json_string
+from common.tools.grpc.Tools import grpc_message_to_json_string
 from context.client.ContextClient import ContextClient
 from interdomain.client.InterdomainClient import InterdomainClient
 from service.client.ServiceClient import ServiceClient
@@ -42,11 +43,11 @@ class SliceServiceServicerImpl(SliceServiceServicer):
         try:
             _slice = context_client.GetSlice(request.slice_id)
             #json_current_slice = grpc_message_to_json(_slice)
-        except:
+        except: # pylint: disable=bare-except
             #json_current_slice = {}
             slice_request = Slice()
-            slice_request.slice_id.CopyFrom(request.slice_id)
-            slice_request.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_PLANNED
+            slice_request.slice_id.CopyFrom(request.slice_id) # pylint: disable=no-member
+            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()
@@ -58,39 +59,33 @@ class SliceServiceServicerImpl(SliceServiceServicer):
         #changes = deepdiff.DeepDiff(json_current_slice, json_updated_slice)
         #LOGGER.info('changes = {:s}'.format(str(changes)))
 
-        domains = set()
-        for slice_endpoint_id in request.slice_endpoint_ids:
-            device_uuid = slice_endpoint_id.device_id.device_uuid.uuid
-            device_parts = device_uuid.split('@')
-            domain_uuid = '' if len(device_parts) == 1 else device_parts[1]
-            domains.add(domain_uuid)
-        LOGGER.info('domains = {:s}'.format(str(domains)))
-        is_multi_domain = len(domains) > 1
-        LOGGER.info('is_multi_domain = {:s}'.format(str(is_multi_domain)))
-
-        if is_multi_domain:
+        if is_multi_domain(context_client, request.slice_endpoint_ids):
             interdomain_client = InterdomainClient()
             slice_id = interdomain_client.RequestSlice(request)
         else:
             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:
+            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)
@@ -138,7 +133,7 @@ class SliceServiceServicerImpl(SliceServiceServicer):
         slice_ = context_client.GetSlice(slice_id)
         slice_active = Slice()
         slice_active.CopyFrom(slice_)
-        slice_active.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_ACTIVE
+        slice_active.slice_status.slice_status = SliceStatusEnum.SLICESTATUS_ACTIVE # pylint: disable=no-member
         context_client.SetSlice(slice_active)
         return slice_id
 
@@ -175,21 +170,11 @@ class SliceServiceServicerImpl(SliceServiceServicer):
         context_client = ContextClient()
         try:
             _slice = context_client.GetSlice(request)
-        except:
+        except: # pylint: disable=bare-except
             return Empty()
 
-        domains = set()
-        for slice_endpoint_id in _slice.slice_endpoint_ids:
-            device_uuid = slice_endpoint_id.device_id.device_uuid.uuid
-            device_parts = device_uuid.split('@')
-            domain_uuid = '' if len(device_parts) == 1 else device_parts[1]
-            domains.add(domain_uuid)
-        LOGGER.info('domains = {:s}'.format(str(domains)))
-        is_multi_domain = len(domains) > 1
-        LOGGER.info('is_multi_domain = {:s}'.format(str(is_multi_domain)))
-
-        if is_multi_domain:
-            interdomain_client = InterdomainClient()
+        if is_multi_domain(context_client, _slice.slice_endpoint_ids):
+            #interdomain_client = InterdomainClient()
             #slice_id = interdomain_client.DeleteSlice(request)
             raise NotImplementedError('Delete inter-domain slice')
         else: