diff --git a/scripts/run_tests_locally-kpi-DB.sh b/scripts/run_tests_locally-kpi-DB.sh
index 75d92206106859991624c18d09c29a3637e9d1e4..895f986cced3721fbf07e34f8669f33a45c021a3 100755
--- a/scripts/run_tests_locally-kpi-DB.sh
+++ b/scripts/run_tests_locally-kpi-DB.sh
@@ -25,4 +25,4 @@ cd $PROJECTDIR/src
 
 RCFILE=$PROJECTDIR/coverage/.coveragerc
 python3 -m pytest --log-level=INFO --log-cli-level=INFO --verbose \
-    kpi_management/kpi_manager/database/tests/KpiDBtests.py
\ No newline at end of file
+    kpi_manager/database/tests/KpiDBtests.py
\ No newline at end of file
diff --git a/scripts/run_tests_locally-kpi-manager.sh b/scripts/run_tests_locally-kpi-manager.sh
index 17c0c02ac19e806033eb1be34c38c7c6429a6d5e..be69980e05f2b4f922a970df77f7d15b4a178fcc 100755
--- a/scripts/run_tests_locally-kpi-manager.sh
+++ b/scripts/run_tests_locally-kpi-manager.sh
@@ -25,4 +25,4 @@ cd $PROJECTDIR/src
 
 RCFILE=$PROJECTDIR/coverage/.coveragerc
 python3 -m pytest --log-level=INFO --log-cli-level=INFO --verbose \
-    kpi_management/kpi_manager/tests/test_kpi_manager.py
\ No newline at end of file
+    kpi_manager/tests/test_kpi_manager.py
\ No newline at end of file
diff --git a/src/kpi_management/kpi_manager/service/__init__.py b/src/kpi_management/kpi_manager/service/__init__.py
deleted file mode 100644
index 1549d9811aa5d1c193a44ad45d0d7773236c0612..0000000000000000000000000000000000000000
--- a/src/kpi_management/kpi_manager/service/__init__.py
+++ /dev/null
@@ -1,14 +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.
-
diff --git a/src/kpi_manager/Dockerfile b/src/kpi_manager/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..9454f59328ce9206bb2f678b81ce2e289d2a9055
--- /dev/null
+++ b/src/kpi_manager/Dockerfile
@@ -0,0 +1,70 @@
+# 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.
+
+FROM python:3.9-slim
+
+# Install dependencies
+RUN apt-get --yes --quiet --quiet update && \
+    apt-get --yes --quiet --quiet install wget g++ git && \
+    rm -rf /var/lib/apt/lists/*
+
+# Set Python to show logs as they occur
+ENV PYTHONUNBUFFERED=0
+
+# Download the gRPC health probe
+RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \
+    wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
+    chmod +x /bin/grpc_health_probe
+
+# Get generic Python packages
+RUN python3 -m pip install --upgrade pip
+RUN python3 -m pip install --upgrade setuptools wheel
+RUN python3 -m pip install --upgrade pip-tools
+
+# Get common Python packages
+# Note: this step enables sharing the previous Docker build steps among all the Python components
+WORKDIR /var/teraflow
+COPY common_requirements.in common_requirements.in
+RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in
+RUN python3 -m pip install -r common_requirements.txt
+
+# Add common files into working directory
+WORKDIR /var/teraflow/common
+COPY src/common/. ./
+RUN rm -rf proto
+
+# Create proto sub-folder, copy .proto files, and generate Python code
+RUN mkdir -p /var/teraflow/common/proto
+WORKDIR /var/teraflow/common/proto
+RUN touch __init__.py
+COPY proto/*.proto ./
+RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto
+RUN rm *.proto
+RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \;
+
+# Create component sub-folders, get specific Python packages
+RUN mkdir -p /var/teraflow/kpi_manager
+WORKDIR /var/teraflow/kpi_manager
+COPY src/kpi_manager/requirements.in requirements.in
+RUN pip-compile --quiet --output-file=requirements.txt requirements.in
+RUN python3 -m pip install -r requirements.txt
+
+# Add component files into working directory
+WORKDIR /var/teraflow
+COPY src/context/. context/
+COPY src/device/. device/
+COPY src/kpi_manager/. kpi_manager/
+
+# Start the service
+ENTRYPOINT ["python", "-m", "kpi_manager.service"]
diff --git a/src/kpi_management/kpi_manager/README.md b/src/kpi_manager/README.md
similarity index 98%
rename from src/kpi_management/kpi_manager/README.md
rename to src/kpi_manager/README.md
index 68885dd13824ede6b5680611c1ef01a704281e3d..72ba6e5594adeef4a29d650615716c26273ed115 100644
--- a/src/kpi_management/kpi_manager/README.md
+++ b/src/kpi_manager/README.md
@@ -1,5 +1,6 @@
 # How to locally run and test KPI manager micro-service
 
+## --- File links need to be updated. ---
 ### Pre-requisets 
 The following requirements should be fulfilled before the execuation of KPI management service.
 
diff --git a/src/kpi_management/kpi_manager/__init__.py b/src/kpi_manager/__init__.py
similarity index 100%
rename from src/kpi_management/kpi_manager/__init__.py
rename to src/kpi_manager/__init__.py
diff --git a/src/kpi_management/kpi_manager/client/KpiManagerClient.py b/src/kpi_manager/client/KpiManagerClient.py
similarity index 100%
rename from src/kpi_management/kpi_manager/client/KpiManagerClient.py
rename to src/kpi_manager/client/KpiManagerClient.py
diff --git a/src/kpi_management/kpi_manager/client/__init__.py b/src/kpi_manager/client/__init__.py
similarity index 100%
rename from src/kpi_management/kpi_manager/client/__init__.py
rename to src/kpi_manager/client/__init__.py
diff --git a/src/kpi_management/kpi_manager/database/service/KpiEngine.py b/src/kpi_manager/database/KpiEngine.py
similarity index 97%
rename from src/kpi_management/kpi_manager/database/service/KpiEngine.py
rename to src/kpi_manager/database/KpiEngine.py
index 041784ff47e9a5199158193e07f4ac90e394ce5a..7fe31946b9386ddc7f67c0d8e3d572ccb73b0e65 100644
--- a/src/kpi_management/kpi_manager/database/service/KpiEngine.py
+++ b/src/kpi_manager/database/KpiEngine.py
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import logging, sqlalchemy, sqlalchemy_utils
+import logging, sqlalchemy
 # from common.Settings import get_setting
 
 LOGGER = logging.getLogger(__name__)
diff --git a/src/kpi_management/kpi_manager/database/service/KpiModel.py b/src/kpi_manager/database/KpiModel.py
similarity index 100%
rename from src/kpi_management/kpi_manager/database/service/KpiModel.py
rename to src/kpi_manager/database/KpiModel.py
diff --git a/src/kpi_management/kpi_manager/database/service/Kpi_DB.py b/src/kpi_manager/database/Kpi_DB.py
similarity index 97%
rename from src/kpi_management/kpi_manager/database/service/Kpi_DB.py
rename to src/kpi_manager/database/Kpi_DB.py
index 21027fa7b85ac9e86257a62576e0ed4df471470f..a414609bbbfc0c9548a6cd8a168ebe0bc55818d5 100644
--- a/src/kpi_management/kpi_manager/database/service/Kpi_DB.py
+++ b/src/kpi_manager/database/Kpi_DB.py
@@ -17,8 +17,8 @@ import sqlalchemy
 import sqlalchemy_utils
 from sqlalchemy.orm import sessionmaker
 from sqlalchemy.ext.declarative import declarative_base
-from kpi_management.kpi_manager.database.service.KpiEngine import KpiEngine
-from kpi_management.kpi_manager.database.service.KpiModel import Kpi
+from kpi_manager.database.KpiEngine import KpiEngine
+from kpi_manager.database.KpiModel import Kpi
 
 LOGGER = logging.getLogger(__name__)
 DB_NAME = "kpi"
diff --git a/src/kpi_management/kpi_manager/database/__init__.py b/src/kpi_manager/database/__init__.py
similarity index 100%
rename from src/kpi_management/kpi_manager/database/__init__.py
rename to src/kpi_manager/database/__init__.py
diff --git a/src/kpi_management/kpi_manager/database/tests/KpiDBtests.py b/src/kpi_manager/database/tests/KpiDBtests.py
similarity index 92%
rename from src/kpi_management/kpi_manager/database/tests/KpiDBtests.py
rename to src/kpi_manager/database/tests/KpiDBtests.py
index 402dac8e01dfdab23c5df1bdfefd1e79beda9854..f75f05c14e76c66057d17978cc687ddcb81a0ca4 100644
--- a/src/kpi_management/kpi_manager/database/tests/KpiDBtests.py
+++ b/src/kpi_manager/database/tests/KpiDBtests.py
@@ -14,7 +14,7 @@
 
 
 import logging
-from kpi_management.kpi_manager.database.service.Kpi_DB import Kpi_DB
+from kpi_manager.database.Kpi_DB import Kpi_DB
 
 LOGGER = logging.getLogger(__name__)
 
diff --git a/src/kpi_manager/requirements.in b/src/kpi_manager/requirements.in
new file mode 100644
index 0000000000000000000000000000000000000000..d96e4b1b8a028fee11bfb435d71b64a71747f483
--- /dev/null
+++ b/src/kpi_manager/requirements.in
@@ -0,0 +1,63 @@
+# 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.
+
+anytree==2.8.0
+APScheduler==3.10.1
+attrs==23.2.0
+certifi==2024.2.2
+charset-normalizer==2.0.12
+colorama==0.4.6
+confluent-kafka==2.3.0
+coverage==6.3
+future-fstrings==1.2.0
+greenlet==3.0.3
+grpcio==1.47.5
+grpcio-health-checking==1.47.5
+grpcio-tools==1.47.5
+grpclib==0.4.4
+h2==4.1.0
+hpack==4.0.0
+hyperframe==6.0.1
+idna==3.7
+influx-line-protocol==0.1.4
+iniconfig==2.0.0
+kafka-python==2.0.2
+multidict==6.0.5
+networkx==3.3
+packaging==24.0
+pluggy==1.5.0
+prettytable==3.5.0
+prometheus-client==0.13.0
+protobuf==3.20.3
+psycopg2-binary==2.9.3
+py==1.11.0
+py-cpuinfo==9.0.0
+pytest==6.2.5
+pytest-benchmark==3.4.1
+pytest-depends==1.0.1
+python-dateutil==2.8.2
+python-json-logger==2.0.2
+pytz==2024.1
+questdb==1.0.1
+requests==2.27.1
+six==1.16.0
+SQLAlchemy==1.4.52
+sqlalchemy-cockroachdb==1.4.4
+SQLAlchemy-Utils==0.38.3
+toml==0.10.2
+typing_extensions==4.12.0
+tzlocal==5.2
+urllib3==1.26.18
+wcwidth==0.2.13
+xmltodict==0.12.0
diff --git a/src/kpi_management/kpi_manager/service/KpiManagerService.py b/src/kpi_manager/service/KpiManagerService.py
similarity index 92%
rename from src/kpi_management/kpi_manager/service/KpiManagerService.py
rename to src/kpi_manager/service/KpiManagerService.py
index d4a8a8104cc0117f42670917b9ef551e16f9cbb1..ecc7105a73c7e9238ee560203ff653e950706342 100755
--- a/src/kpi_management/kpi_manager/service/KpiManagerService.py
+++ b/src/kpi_manager/service/KpiManagerService.py
@@ -16,7 +16,7 @@ from common.Constants import ServiceNameEnum
 from common.Settings import get_service_port_grpc
 from common.proto.kpi_management_pb2_grpc import add_KpiManagerServiceServicer_to_server
 from common.tools.service.GenericGrpcService import GenericGrpcService
-from kpi_management.kpi_manager.service.KpiManagerServiceServicerImpl import KpiManagerServiceServicerImpl
+from kpi_manager.service.KpiManagerServiceServicerImpl import KpiManagerServiceServicerImpl
 from monitoring.service.NameMapping import NameMapping
 
 class KpiManagerService(GenericGrpcService):
diff --git a/src/kpi_management/kpi_manager/service/KpiManagerServiceServicerImpl.py b/src/kpi_manager/service/KpiManagerServiceServicerImpl.py
similarity index 97%
rename from src/kpi_management/kpi_manager/service/KpiManagerServiceServicerImpl.py
rename to src/kpi_manager/service/KpiManagerServiceServicerImpl.py
index 3a3052182d7c8cf724f5c1abbaeda4d3c07c5223..cf13c0526345805812447cae52bf832476346ed9 100644
--- a/src/kpi_management/kpi_manager/service/KpiManagerServiceServicerImpl.py
+++ b/src/kpi_manager/service/KpiManagerServiceServicerImpl.py
@@ -22,8 +22,8 @@ from common.proto.kpi_management_pb2 import KpiId, KpiDescriptor, KpiDescriptorF
 from monitoring.service.NameMapping import NameMapping
 # from monitoring.service import ManagementDBTools
 
-from kpi_management.kpi_manager.database.service.Kpi_DB import Kpi_DB
-from kpi_management.kpi_manager.database.service.KpiModel import Kpi as KpiModel
+from kpi_manager.database.Kpi_DB import Kpi_DB
+from kpi_manager.database.KpiModel import Kpi as KpiModel
 # from telemetry.database.TelemetryModel import Kpi as KpiModel
 from common.proto.context_pb2 import DeviceId, LinkId, ServiceId, SliceId,\
                              ConnectionId, EndPointId
diff --git a/src/kpi_management/kpi_manager/database/service/__init__.py b/src/kpi_manager/service/__init__.py
similarity index 100%
rename from src/kpi_management/kpi_manager/database/service/__init__.py
rename to src/kpi_manager/service/__init__.py
diff --git a/src/kpi_management/kpi_manager/tests/test_kpi_manager.py b/src/kpi_manager/tests/test_kpi_manager.py
similarity index 88%
rename from src/kpi_management/kpi_manager/tests/test_kpi_manager.py
rename to src/kpi_manager/tests/test_kpi_manager.py
index 531efc20ceaee4244331ad8cecef584e2f9b7e1e..ccb7f16c2d6fdffc049b562b627d5266d6d76c88 100755
--- a/src/kpi_management/kpi_manager/tests/test_kpi_manager.py
+++ b/src/kpi_manager/tests/test_kpi_manager.py
@@ -13,46 +13,30 @@
 # limitations under the License.
 
 
-# import sys
-# sys.path.append('.')
 import os, pytest
-import logging, json
+import logging
 from typing import Union
 
-# from apscheduler.schedulers.background import BackgroundScheduler
-
-from common.proto.context_pb2 import ConfigActionEnum, Context, ContextId, DeviceOperationalStatusEnum, EventTypeEnum, DeviceEvent, Device, Empty, Topology, TopologyId
+from common.proto.context_pb2 import  Empty
 from common.Constants import ServiceNameEnum
-# from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME, ServiceNameEnum
-from common.Settings import (
+from common.Settings import ( 
     ENVVAR_SUFIX_SERVICE_HOST, ENVVAR_SUFIX_SERVICE_PORT_GRPC, get_env_var_name, get_service_port_grpc)
 from common.tests.MockServicerImpl_Context import MockServicerImpl_Context
 from common.proto.context_pb2_grpc import add_ContextServiceServicer_to_server
-# from common.proto.kpi_sample_types_pb2 import KpiSampleType
-# from common.tools.object_factory.Context import json_context, json_context_id
-# from common.tools.object_factory.Topology import json_topology, json_topology_id
-# from common.proto.monitoring_pb2 import KpiId, KpiDescriptor, SubsDescriptor, SubsList, AlarmID, \
-#     AlarmDescriptor, AlarmList, KpiDescriptorList, SubsResponse, AlarmResponse, RawKpiTable #, Kpi, KpiList
+
 from common.proto.kpi_management_pb2 import KpiId, KpiDescriptor, KpiDescriptorFilter, KpiDescriptorList
 from common.tools.service.GenericGrpcService import GenericGrpcService
 from context.client.ContextClient import ContextClient
 
-
 from device.service.driver_api.DriverFactory import DriverFactory
 from device.service.driver_api.DriverInstanceCache import DriverInstanceCache
 from device.service.DeviceService import DeviceService
 from device.client.DeviceClient import DeviceClient
 
-from kpi_management.kpi_manager.tests.test_messages import create_kpi_descriptor_request, create_kpi_filter_request
-# from monitoring.service.MonitoringService import MonitoringService
-from kpi_management.kpi_manager.service.KpiManagerService import KpiManagerService
-# from monitoring.client.MonitoringClient import MonitoringClient
-from kpi_management.kpi_manager.client.KpiManagerClient import KpiManagerClient
-
-from kpi_management.kpi_manager.service.KpiManagerServiceServicerImpl import KpiManagerServiceServicerImpl
+from kpi_manager.tests.test_messages import create_kpi_descriptor_request, create_kpi_filter_request
+from kpi_manager.service.KpiManagerService import KpiManagerService
+from kpi_manager.client.KpiManagerClient import KpiManagerClient
 
-# from monitoring.service.ManagementDBTools import ManagementDB
-# from monitoring.service.MetricsDBTools import MetricsDB
 from monitoring.service.NameMapping import NameMapping
 
 os.environ['DEVICE_EMULATED_ONLY'] = 'TRUE'
diff --git a/src/kpi_management/kpi_manager/tests/test_messages.py b/src/kpi_manager/tests/test_messages.py
similarity index 100%
rename from src/kpi_management/kpi_manager/tests/test_messages.py
rename to src/kpi_manager/tests/test_messages.py