diff --git a/src/service/service/ServiceServiceServicerImpl.py b/src/service/service/ServiceServiceServicerImpl.py
index 0b2e0760161c109a2ba6a5feecc931e8bcf5c14f..6531376b84732b1ec80e335cfc6cd816be944b0a 100644
--- a/src/service/service/ServiceServiceServicerImpl.py
+++ b/src/service/service/ServiceServiceServicerImpl.py
@@ -19,12 +19,12 @@ from common.method_wrappers.ServiceExceptions import AlreadyExistsException, Inv
 from common.proto.context_pb2 import Empty, Service, ServiceId, ServiceStatusEnum, ServiceTypeEnum
 from common.proto.pathcomp_pb2 import PathCompRequest
 from common.proto.service_pb2_grpc import ServiceServiceServicer
+from common.tools.context_queries.Service import get_service_by_id
 from common.tools.grpc.Tools import grpc_message_to_json, grpc_message_to_json_string
 from context.client.ContextClient import ContextClient
 from pathcomp.frontend.client.PathCompClient import PathCompClient
 from .service_handler_api.ServiceHandlerFactory import ServiceHandlerFactory
 from .task_scheduler.TaskScheduler import TasksScheduler
-from .tools.ContextGetters import get_service
 
 LOGGER = logging.getLogger(__name__)
 
@@ -69,7 +69,9 @@ class ServiceServiceServicerImpl(ServiceServiceServicer):
 
         # check that service does not exist
         context_client = ContextClient()
-        current_service = get_service(context_client, request.service_id)
+        current_service = get_service_by_id(
+            context_client, request.service_id, rw_copy=False,
+            include_config_rules=False, include_constraints=False, include_endpoint_ids=False)
         if current_service is not None:
             context_uuid = request.service_id.context_id.context_uuid.uuid
             service_uuid = request.service_id.service_uuid.uuid
@@ -86,7 +88,9 @@ class ServiceServiceServicerImpl(ServiceServiceServicer):
         # Set service status to "SERVICESTATUS_PLANNED" to ensure rest of components are aware the service is
         # being modified.
         context_client = ContextClient()
-        _service : Optional[Service] = get_service(context_client, request.service_id)
+        _service : Optional[Service] = get_service_by_id(
+            context_client, request.service_id, rw_copy=False,
+            include_config_rules=False, include_constraints=False, include_endpoint_ids=False)
         service = Service()
         service.CopyFrom(request if _service is None else _service)
         if service.service_type == ServiceTypeEnum.SERVICETYPE_UNKNOWN:                     # pylint: disable=no-member
@@ -106,7 +110,11 @@ class ServiceServiceServicerImpl(ServiceServiceServicer):
             service.service_config.config_rules.add().CopyFrom(config_rule) # pylint: disable=no-member
 
         service_id_with_uuids = context_client.SetService(service)
-        service_with_uuids = context_client.GetService(service_id_with_uuids)
+
+        # PathComp requires endpoints, constraints and config rules
+        service_with_uuids = get_service_by_id(
+            context_client, service_id_with_uuids, rw_copy=False,
+            include_config_rules=True, include_constraints=True, include_endpoint_ids=True)
 
         num_disjoint_paths = 0
         for constraint in request.service_constraints:
@@ -147,10 +155,8 @@ class ServiceServiceServicerImpl(ServiceServiceServicer):
 
         # Set service status to "SERVICESTATUS_PENDING_REMOVAL" to ensure rest of components are aware the service is
         # being modified.
-        _service : Optional[Service] = get_service(context_client, request)
-        if _service is None: raise Exception('Service({:s}) not found'.format(grpc_message_to_json_string(request)))
-        service = Service()
-        service.CopyFrom(_service)
+        service : Optional[Service] = get_service_by_id(context_client, request, rw_copy=True)
+        if service is None: raise Exception('Service({:s}) not found'.format(grpc_message_to_json_string(request)))
         # pylint: disable=no-member
         service.service_status.service_status = ServiceStatusEnum.SERVICESTATUS_PENDING_REMOVAL
         context_client.SetService(service)
diff --git a/src/service/service/task_scheduler/TaskExecutor.py b/src/service/service/task_scheduler/TaskExecutor.py
index 3d157e3145d4b195c0251a4ab79f710a38726569..96751e83770e1b98df4770cf74bb453f6a0519ef 100644
--- a/src/service/service/task_scheduler/TaskExecutor.py
+++ b/src/service/service/task_scheduler/TaskExecutor.py
@@ -17,11 +17,13 @@ from enum import Enum
 from typing import TYPE_CHECKING, Any, Dict, Optional, Union
 from common.method_wrappers.ServiceExceptions import NotFoundException
 from common.proto.context_pb2 import Connection, ConnectionId, Device, DeviceId, Service, ServiceId
+from common.tools.context_queries.Connection import get_connection_by_id
+from common.tools.context_queries.Device import get_device
+from common.tools.context_queries.Service import get_service_by_id
 from common.tools.object_factory.Device import json_device_id
 from context.client.ContextClient import ContextClient
 from device.client.DeviceClient import DeviceClient
 from service.service.service_handler_api.ServiceHandlerFactory import ServiceHandlerFactory, get_service_handler_class
-from service.service.tools.ContextGetters import get_connection, get_device, get_service
 from service.service.tools.ObjectKeys import get_connection_key, get_device_key, get_service_key
 
 if TYPE_CHECKING:
@@ -72,7 +74,7 @@ class TaskExecutor:
         connection_key = get_connection_key(connection_id)
         connection = self._load_grpc_object(CacheableObjectType.CONNECTION, connection_key)
         if connection is None:
-            connection = get_connection(self._context_client, connection_id)
+            connection = get_connection_by_id(self._context_client, connection_id)
             if connection is None: raise NotFoundException('Connection', connection_key)
             connection : Connection = self._store_editable_grpc_object(
                 CacheableObjectType.CONNECTION, connection_key, Connection, connection)
@@ -94,7 +96,7 @@ class TaskExecutor:
         device_key = get_device_key(device_id)
         device = self._load_grpc_object(CacheableObjectType.DEVICE, device_key)
         if device is None:
-            device = get_device(self._context_client, device_id)
+            device = get_device(self._context_client, device_id.device_uuid.uuid)
             if device is None: raise NotFoundException('Device', device_key)
             device : Device = self._store_editable_grpc_object(
                 CacheableObjectType.DEVICE, device_key, Device, device)
@@ -145,7 +147,7 @@ class TaskExecutor:
         service_key = get_service_key(service_id)
         service = self._load_grpc_object(CacheableObjectType.SERVICE, service_key)
         if service is None:
-            service = get_service(self._context_client, service_id)
+            service = get_service_by_id(self._context_client, service_id)
             if service is None: raise NotFoundException('Service', service_key)
             service : service = self._store_editable_grpc_object(
                 CacheableObjectType.SERVICE, service_key, Service, service)
diff --git a/src/service/service/tools/ContextGetters.py b/src/service/service/tools/ContextGetters.py
deleted file mode 100644
index 9b1d6224d1e4201cbc0720e7ce818a86e5ae2042..0000000000000000000000000000000000000000
--- a/src/service/service/tools/ContextGetters.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2022-2023 ETSI TeraFlowSDN - TFS OSG (https://tfs.etsi.org/)
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import grpc
-from typing import Optional
-from common.proto.context_pb2 import Connection, ConnectionId, Device, DeviceId, Service, ServiceId
-from context.client.ContextClient import ContextClient
-
-def get_connection(context_client : ContextClient, connection_id : ConnectionId) -> Optional[Connection]:
-    try:
-        connection : Connection = context_client.GetConnection(connection_id)
-        return connection
-    except grpc.RpcError as e:
-        if e.code() != grpc.StatusCode.NOT_FOUND: raise # pylint: disable=no-member
-        return None
-
-def get_device(context_client : ContextClient, device_id : DeviceId) -> Optional[Device]:
-    try:
-        device : Device = context_client.GetDevice(device_id)
-        return device
-    except grpc.RpcError as e:
-        if e.code() != grpc.StatusCode.NOT_FOUND: raise # pylint: disable=no-member
-        return None
-
-def get_service(context_client : ContextClient, service_id : ServiceId) -> Optional[Service]:
-    try:
-        service : Service = context_client.GetService(service_id)
-        return service
-    except grpc.RpcError as e:
-        if e.code() != grpc.StatusCode.NOT_FOUND: raise # pylint: disable=no-member
-        return None