diff --git a/src/dbscanserving/client/DbscanServingClient.py b/src/dbscanserving/client/DbscanServingClient.py
index 6f2556a82633dd608506fb1153e03cb9febb5b65..3116e9fe3b65d4c5ba37b3ebbfc9f4819b97ace3 100644
--- a/src/dbscanserving/client/DbscanServingClient.py
+++ b/src/dbscanserving/client/DbscanServingClient.py
@@ -53,5 +53,5 @@ class DbscanServingClient:
             request.num_features
         ))
         response = self.stub.Detect(request)
-        LOGGER.debug('Detect result with {:s} cluster indices'.format(len(response.cluster_indices)))
+        LOGGER.debug('Detect result with {} cluster indices'.format(len(response.cluster_indices)))
         return response
diff --git a/src/opticalattackdetector/service/OpticalAttackDetectorServiceServicerImpl.py b/src/opticalattackdetector/service/OpticalAttackDetectorServiceServicerImpl.py
index 5160515132864cc1e055fab7c1927ae210a92b80..d447859818a4f2d586b101bd4f39bd3965058a30 100644
--- a/src/opticalattackdetector/service/OpticalAttackDetectorServiceServicerImpl.py
+++ b/src/opticalattackdetector/service/OpticalAttackDetectorServiceServicerImpl.py
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 import os, grpc, logging, random
+from common.tools.timestamp.Converters import timestamp_utcnow_to_float
 from common.rpc_method_wrapper.Decorator import create_metrics, safe_and_metered_rpc_method
 from context.client.ContextClient import ContextClient
 from monitoring.client.MonitoringClient import MonitoringClient
@@ -25,7 +26,7 @@ from common.proto.context_pb2 import (Empty,
     Context,  ContextId,  ContextIdList,  ContextList,
     Service,  ServiceId,  ServiceIdList,  ServiceList
 )
-from common.proto.monitoring_pb2 import KpiList
+from common.proto.monitoring_pb2 import Kpi
 from common.proto.optical_attack_detector_pb2_grpc import (
     OpticalAttackDetectorServiceServicer)
 
@@ -77,6 +78,14 @@ class OpticalAttackDetectorServiceServicerImpl(OpticalAttackDetectorServiceServi
                 grpc_sample.features.append(random.uniform(5000., 6000.))
             request.samples.append(grpc_sample)
         response: DetectionResponse = dbscanserving_client.Detect(request)
+
+        # including KPI
+        kpi = Kpi()
+        kpi.kpi_id.kpi_id.uuid = "1"
+        kpi.timestamp.timestamp = timestamp_utcnow_to_float()
+        kpi.kpi_value.int32Val = response.cluster_indices[-1]
+        monitoring_client.IncludeKpi(kpi)
+
         if -1 in response.cluster_indices:  # attack detected
             attack = AttackDescription()
             attack.cs_id.uuid = service_id.service_uuid.uuid
diff --git a/src/opticalattackmanager/service/__main__.py b/src/opticalattackmanager/service/__main__.py
index c9e9b0c73dc06c59ca7e5a3430f68dd5d4c457e0..cf6539f80826e1d2ed77485d2ef9831ed1871045 100644
--- a/src/opticalattackmanager/service/__main__.py
+++ b/src/opticalattackmanager/service/__main__.py
@@ -32,12 +32,12 @@ async def detect_attack(endpoint, context_id, service_id):
                                          options=CHANNEL_OPTIONS) as channel:
         stub = OpticalAttackDetectorServiceStub(channel)
 
-        service_id = ServiceId()
-        service_id.context_id.context_uuid.uuid = context_id
-        service_id.service_uuid.uuid = str(service_id)
+        service = ServiceId()
+        service.context_id.context_uuid.uuid = context_id
+        service.service_uuid.uuid = str(service_id)
         # Timeout in seconds.
         # Please refer gRPC Python documents for more detail. https://grpc.io/grpc/python/grpc.html
-        await stub.DetectAttack(service_id,
+        await stub.DetectAttack(service,
                                        timeout=10)
     print("Greeter client received:", service_id)