diff --git a/src/kpi_manager/service/__main__.py b/src/kpi_manager/service/__main__.py
index 50b5048679e6b45a57187f2e4fbfca154a63280a..132a152194adb7780f35550483e14a2414df1cf8 100644
--- a/src/kpi_manager/service/__main__.py
+++ b/src/kpi_manager/service/__main__.py
@@ -29,35 +29,6 @@ def signal_handler(signal, frame): # pylint: disable=redefined-outer-name
     LOGGER.warning('Terminate signal received')
     terminate.set()
 
-# def start_kpi_manager(name_mapping : NameMapping):
-#     LOGGER.info('Start Kpi Manager...',)
-
-#     events_collector = EventsDeviceCollector(name_mapping)
-#     events_collector.start()
-
-#     # TODO: redesign this method to be more clear and clean
-
-#     # Iterate while terminate is not set
-#     while not terminate.is_set():
-#         list_new_kpi_ids = events_collector.listen_events()
-
-#         # Monitor Kpis
-#         if bool(list_new_kpi_ids):
-#             for kpi_id in list_new_kpi_ids:
-#                 # Create Monitor Kpi Requests
-#                 monitor_kpi_request = monitoring_pb2.MonitorKpiRequest()
-#                 monitor_kpi_request.kpi_id.CopyFrom(kpi_id)
-#                 monitor_kpi_request.monitoring_window_s = 86400
-#                 monitor_kpi_request.sampling_rate_s = 10
-#                 events_collector._monitoring_client.MonitorKpi(monitor_kpi_request)
-        
-#         time.sleep(0.5) # let other tasks run; do not overload CPU
-#     else:
-#         # Terminate is set, looping terminates
-#         LOGGER.warning("Stopping execution...")
-
-#     events_collector.start()
-
 def main():
     global LOGGER # pylint: disable=global-statement
 
@@ -77,21 +48,11 @@ def main():
 
     LOGGER.debug('Starting...')
 
-    # Start metrics server
-    metrics_port = get_metrics_port()
-    start_http_server(metrics_port)
-
     name_mapping = NameMapping()
-    # Starting monitoring service
-    # grpc_service = MonitoringService(name_mapping)
-    # grpc_service.start()
-    # start_monitoring(name_mapping)
 
     grpc_service = KpiManagerService(name_mapping)
     grpc_service.start()
 
-    # start_kpi_manager(name_mapping)
-
     # Wait for Ctrl+C or termination signal
     while not terminate.wait(timeout=1.0): pass
 
diff --git a/src/kpi_value_api/service/__main__.py b/src/kpi_value_api/service/__main__.py
new file mode 100644
index 0000000000000000000000000000000000000000..1a8707112601f317ab111ff19329d00620ad3284
--- /dev/null
+++ b/src/kpi_value_api/service/__main__.py
@@ -0,0 +1,55 @@
+# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (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 logging, signal, sys, threading, time
+from prometheus_client import start_http_server
+from common.Settings import  get_log_level
+from .NameMapping import NameMapping          # import updated
+from .KpiValueApiService import KpiValueApiService
+
+terminate = threading.Event()
+LOGGER = None
+
+def signal_handler(signal, frame): # pylint: disable=redefined-outer-name
+    LOGGER.warning('Terminate signal received')
+    terminate.set()
+
+def main():
+    global LOGGER # pylint: disable=global-statement
+
+    log_level = get_log_level()
+    logging.basicConfig(level=log_level)
+    LOGGER = logging.getLogger(__name__)
+
+    signal.signal(signal.SIGINT,  signal_handler)
+    signal.signal(signal.SIGTERM, signal_handler)
+
+    LOGGER.debug('Starting...')
+
+    name_mapping = NameMapping()
+
+    grpc_service = KpiValueApiService(name_mapping)
+    grpc_service.start()
+
+    # Wait for Ctrl+C or termination signal
+    while not terminate.wait(timeout=1.0): pass
+
+    LOGGER.debug('Terminating...')
+    grpc_service.stop()
+
+    LOGGER.debug('Bye')
+    return 0
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/src/kpi_value_writer/service/__main__.py b/src/kpi_value_writer/service/__main__.py
index 9085bc4683ba159bb64043e7b82173442f0a5bdd..3e1d8989f4492c47f1e78e57a107ccb033d3f4c0 100644
--- a/src/kpi_value_writer/service/__main__.py
+++ b/src/kpi_value_writer/service/__main__.py
@@ -12,16 +12,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import logging, signal, sys, threading, time
+import logging, signal, sys, threading
 from prometheus_client import start_http_server
-from common.Constants import ServiceNameEnum
-from common.Settings import (
-    ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_log_level, get_metrics_port,
-    wait_for_environment_variables)
-from common.proto import monitoring_pb2
-from monitoring.service.EventTools import EventsDeviceCollector # import updated
-from monitoring.service.NameMapping import NameMapping          # import updated
-from .KpiManagerService import KpiManagerService
+from .NameMapping import NameMapping          # import updated
+from .KpiValueWriter import KpiValueWriter
+from common.Settings import get_log_level, get_metrics_port
 
 terminate = threading.Event()
 LOGGER = None
@@ -30,35 +25,6 @@ def signal_handler(signal, frame): # pylint: disable=redefined-outer-name
     LOGGER.warning('Terminate signal received')
     terminate.set()
 
-def start_kpi_manager(name_mapping : NameMapping):
-    LOGGER.info('Start Monitoring...',)
-
-    events_collector = EventsDeviceCollector(name_mapping)
-    events_collector.start()
-
-    # TODO: redesign this method to be more clear and clean
-
-    # Iterate while terminate is not set
-    while not terminate.is_set():
-        list_new_kpi_ids = events_collector.listen_events()
-
-        # Monitor Kpis
-        if bool(list_new_kpi_ids):
-            for kpi_id in list_new_kpi_ids:
-                # Create Monitor Kpi Requests
-                monitor_kpi_request = monitoring_pb2.MonitorKpiRequest()
-                monitor_kpi_request.kpi_id.CopyFrom(kpi_id)
-                monitor_kpi_request.monitoring_window_s = 86400
-                monitor_kpi_request.sampling_rate_s = 10
-                events_collector._monitoring_client.MonitorKpi(monitor_kpi_request)
-        
-        time.sleep(0.5) # let other tasks run; do not overload CPU
-    else:
-        # Terminate is set, looping terminates
-        LOGGER.warning("Stopping execution...")
-
-    events_collector.start()
-
 def main():
     global LOGGER # pylint: disable=global-statement
 
@@ -66,40 +32,25 @@ def main():
     logging.basicConfig(level=log_level)
     LOGGER = logging.getLogger(__name__)
 
-    wait_for_environment_variables([
-        get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_HOST     ),
-        get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC),
-        get_env_var_name(ServiceNameEnum.DEVICE,  ENVVAR_SUFIX_SERVICE_HOST     ),
-        get_env_var_name(ServiceNameEnum.DEVICE,  ENVVAR_SUFIX_SERVICE_PORT_GRPC),
-    ])
-
     signal.signal(signal.SIGINT,  signal_handler)
     signal.signal(signal.SIGTERM, signal_handler)
 
-    LOGGER.info('Starting...')
+    LOGGER.debug('Starting...')
 
-    # Start metrics server
-    metrics_port = get_metrics_port()
-    start_http_server(metrics_port)
+    start_http_server(get_metrics_port)     # add Prometheus client port
 
     name_mapping = NameMapping()
-    # Starting monitoring service
-    # grpc_service = MonitoringService(name_mapping)
-    # grpc_service.start()
-    # start_monitoring(name_mapping)
 
-    grpc_service = KpiManagerService(name_mapping)
+    grpc_service = KpiValueWriter(name_mapping)
     grpc_service.start()
 
-    start_kpi_manager(name_mapping)
-
     # Wait for Ctrl+C or termination signal
     while not terminate.wait(timeout=1.0): pass
 
-    LOGGER.info('Terminating...')
+    LOGGER.debug('Terminating...')
     grpc_service.stop()
 
-    LOGGER.info('Bye')
+    LOGGER.debug('Bye')
     return 0
 
 if __name__ == '__main__':