diff --git a/src/kpi_manager/service/KpiManagerServiceServicerImpl.py b/src/kpi_manager/service/KpiManagerServiceServicerImpl.py
index 1dd214506339ccb257830c28fc43d0d80cdee9e7..38e6a1fe16f9ed89ee24934bc14040f2d60b5cdc 100644
--- a/src/kpi_manager/service/KpiManagerServiceServicerImpl.py
+++ b/src/kpi_manager/service/KpiManagerServiceServicerImpl.py
@@ -18,7 +18,7 @@ from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_m
 from common.proto.context_pb2 import Empty
 from common.proto.kpi_manager_pb2_grpc import KpiManagerServiceServicer
 from common.proto.kpi_manager_pb2 import KpiId, KpiDescriptor, KpiDescriptorFilter, KpiDescriptorList
-# from kpi_manager.database.Kpi_DB import KpiDB
+from common.method_wrappers.ServiceExceptions import NotFoundException
 from kpi_manager.database.KpiDB import KpiDB
 from kpi_manager.database.KpiModel import Kpi as KpiModel
 
@@ -31,65 +31,48 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer):
         self.kpi_db_obj = KpiDB(KpiModel)
     
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
-    def SetKpiDescriptor(self, request: KpiDescriptor, grpc_context: grpc.ServicerContext # type: ignore
-                        ) -> KpiId: # type: ignore
+    def SetKpiDescriptor(
+        self, request: KpiDescriptor, grpc_context: grpc.ServicerContext # type: ignore
+    ) -> KpiId: # type: ignore
         response = KpiId()
         LOGGER.info("Received gRPC message object: {:}".format(request))
-        try:
-            kpi_to_insert = KpiModel.convert_KpiDescriptor_to_row(request)
-            if(self.kpi_db_obj.add_row_to_db(kpi_to_insert)):
-                response.kpi_id.uuid = request.kpi_id.kpi_id.uuid
-                # LOGGER.info("Added Row: {:}".format(response))
-            return response
-        except Exception as e:
-            LOGGER.info("Unable to create KpiModel class object. {:}".format(e))
-    
+        kpi_to_insert = KpiModel.convert_KpiDescriptor_to_row(request)
+        if self.kpi_db_obj.add_row_to_db(kpi_to_insert):
+            response.kpi_id.uuid = request.kpi_id.kpi_id.uuid
+            # LOGGER.info("Added Row: {:}".format(response))
+        return response
+
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)        
-    def GetKpiDescriptor(self, request: KpiId, grpc_context: grpc.ServicerContext # type: ignore
-                         ) -> KpiDescriptor: # type: ignore
+    def GetKpiDescriptor(
+        self, request: KpiId, grpc_context: grpc.ServicerContext # type: ignore
+    ) -> KpiDescriptor: # type: ignore
         response = KpiDescriptor()
-        print("--> Received gRPC message object: {:}".format(request))
         LOGGER.info("Received gRPC message object: {:}".format(request))
-        try: 
-            kpi_id_to_search = request.kpi_id.uuid
-            row = self.kpi_db_obj.search_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search)
-            if row is None:
-                print ('No matching row found for kpi id: {:}'.format(kpi_id_to_search))
-                LOGGER.info('No matching row found kpi id: {:}'.format(kpi_id_to_search))
-                return Empty()
-            else:
-                response = KpiModel.convert_row_to_KpiDescriptor(row)
-                return response
-        except Exception as e:
-            print ('Unable to search kpi id. {:}'.format(e))
-            LOGGER.info('Unable to search kpi id. {:}'.format(e))
-            raise e
+        kpi_id_to_search = request.kpi_id.uuid
+        row = self.kpi_db_obj.search_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search)
+        if row is None:
+            LOGGER.info('No matching row found kpi id: {:}'.format(kpi_id_to_search))
+            raise NotFoundException('KpiDescriptor', kpi_id_to_search)
+        response = KpiModel.convert_row_to_KpiDescriptor(row)
+        return response
     
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
-    def DeleteKpiDescriptor(self, request: KpiId, grpc_context: grpc.ServicerContext # type: ignore
-                            ) -> Empty: # type: ignore
+    def DeleteKpiDescriptor(
+        self, request: KpiId, grpc_context: grpc.ServicerContext # type: ignore
+    ) -> Empty: # type: ignore
         LOGGER.info("Received gRPC message object: {:}".format(request))
-        try:
-            kpi_id_to_search = request.kpi_id.uuid
-            self.kpi_db_obj.delete_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search)
-        except Exception as e:
-            LOGGER.info('Unable to search kpi id. {:}'.format(e))
-        finally:
-            return Empty()
+        kpi_id_to_search = request.kpi_id.uuid
+        self.kpi_db_obj.delete_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search)
+        return Empty()
 
     @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
-    def SelectKpiDescriptor(self, filter: KpiDescriptorFilter, grpc_context: grpc.ServicerContext # type: ignore
-                            ) -> KpiDescriptorList: # type: ignore
+    def SelectKpiDescriptor(
+        self, filter: KpiDescriptorFilter, grpc_context: grpc.ServicerContext # type: ignore
+    ) -> KpiDescriptorList: # type: ignore
         LOGGER.info("Received gRPC message object: {:}".format(filter))
         response = KpiDescriptorList()
-        try:
-            rows = self.kpi_db_obj.select_with_filter(KpiModel, filter)
-        except Exception as e:
-            LOGGER.info('Unable to apply filter on kpi descriptor. {:}'.format(e))
-        try:
-            for row in rows:
-                kpiDescriptor_obj = KpiModel.convert_row_to_KpiDescriptor(row)
-                response.kpi_descriptor_list.append(kpiDescriptor_obj)
-            return response
-        except Exception as e:
-            LOGGER.info('Unable to process filter response {:}'.format(e))
+        rows = self.kpi_db_obj.select_with_filter(KpiModel, filter)
+        for row in rows:
+            kpiDescriptor_obj = KpiModel.convert_row_to_KpiDescriptor(row)
+            response.kpi_descriptor_list.append(kpiDescriptor_obj)
+        return response