diff --git a/src/service/service/task_scheduler/TaskExecutor.py b/src/service/service/task_scheduler/TaskExecutor.py
index ac06e321d342fc7cddb9f54958a38ed87067c922..9e7175e74b07f8b1d826b857dced26ac10e39c3d 100644
--- a/src/service/service/task_scheduler/TaskExecutor.py
+++ b/src/service/service/task_scheduler/TaskExecutor.py
@@ -219,13 +219,22 @@ class TaskExecutor:
         service = item
         if (isinstance(item, ServiceId)):
             service = self.get_service(item)
-        class_service_handler = None
+        service_handler = None
         service_handler_settings = {}
         for connection in connections.connections:
             connection_uuid=connection.connection_id.connection_uuid
-            if class_service_handler is None:
-                class_service_handler = self.get_service_handler(connection, service,**service_handler_settings)
-            if class_service_handler.check_media_channel(connection_uuid):
+            if service_handler is None:
+                service_handlers = self.get_service_handlers(
+                    connection, service, **service_handler_settings
+                )
+                # TODO: improve to select different service handlers when needed
+                # By now, assume a single service handler is retrieved for all the
+                # device types in the path, i.e., all entries carry the same
+                # service handler, so we choose the first one retrieved.
+                if len(service_handlers) < 1:
+                    raise Exception('Unsupported case: {:s}'.format(str(service_handlers)))
+                service_handler,_ = list(service_handlers.values())[0]
+            if service_handler.check_media_channel(connection_uuid):
                 return True
         return False
 
@@ -234,7 +243,16 @@ class TaskExecutor:
     ) -> bool:
         service_handler_settings = {}
         connection_uuid = connection.connection_id.connection_uuid
-        service_handler_class = self.get_service_handler(connection, service, **service_handler_settings)
+        classes_service_handlers = self.get_service_handlers(
+            connection, service, **service_handler_settings
+        )
+        # TODO: improve to select different service handlers when needed
+        # By now, assume a single service handler is retrieved for all the
+        # device types in the path, i.e., all entries carry the same
+        # service handler, so we choose the first one retrieved.
+        if len(classes_service_handlers) < 1:
+            raise Exception('Unsupported case: {:s}'.format(str(classes_service_handlers)))
+        service_handler_class,_ = list(classes_service_handlers.values())[0]
         return service_handler_class.check_media_channel(connection_uuid)
 
     def get_device_controller(self, device : Device) -> Optional[Device]:
diff --git a/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py b/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py
index b1afdeef19d6526d6f52b05924b5b77a8049da8f..a624e81b58d4d2e7f6f1ad109f99a0eb1c73bb63 100644
--- a/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py
+++ b/src/service/service/task_scheduler/tasks/Task_OpticalConnectionDeconfigure.py
@@ -48,7 +48,16 @@ class Task_OpticalConnectionDeconfigure(_Task):
         service = self._task_executor.get_service(connection.service_id)
         errors = []
         service_handler_settings = {}
-        service_handler = self._task_executor.get_service_handler(connection, service, **service_handler_settings)
+        service_handlers = self._task_executor.get_service_handlers(
+            connection, service, **service_handler_settings
+        )
+        # TODO: improve to select different service handlers when needed
+        # By now, assume a single service handler is retrieved for all the
+        # device types in the path, i.e., all entries carry the same
+        # service handler, so we choose the first one retrieved.
+        if len(service_handlers) < 1:
+            raise Exception('Unsupported case: {:s}'.format(str(service_handlers)))
+        service_handler,_ = list(service_handlers.values())[0]
 
         endpointids_to_delete = endpointids_to_raw(connection.path_hops_endpoint_ids)
         connection_uuid = connection.connection_id.connection_uuid.uuid