diff --git a/scripts/run_tests_locally-optical-attack-detector.sh b/scripts/run_tests_locally-optical-attack-detector.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e34c62b5665677c3040900abee6f95f0fb20233c
--- /dev/null
+++ b/scripts/run_tests_locally-optical-attack-detector.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+# 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.
+
+
+PROJECTDIR=`pwd`
+RCFILE=$PROJECTDIR/coverage/.coveragerc
+COVERAGEFILE=$PROJECTDIR/coverage/.coverage
+
+# Destroy old coverage file and configure the correct folder on the .coveragerc file
+rm -f $COVERAGEFILE
+cat $PROJECTDIR/coverage/.coveragerc.template | sed s+~/tfs-ctrl+$PROJECTDIR+g > $RCFILE
+
+echo
+echo "Pre-test clean-up:"
+echo "------------------"
+docker rm -f redis opticalattackdetector dbscanserving
+docker network rm tfs_br
+
+echo
+echo "Pull Docker images:"
+echo "-------------------"
+docker pull redis:7.0-alpine
+
+echo
+echo "Build optical attack detector:"
+echo "------------------------------"
+docker build -t "opticalattackdetector:latest" -f ./src/opticalattackdetector/Dockerfile .
+docker images --filter="dangling=true" --quiet | xargs -r docker rmi
+
+echo
+echo "Build dbscan serving:"
+echo "---------------------"
+docker build -t "dbscanserving:latest" -f ./src/dbscanserving/Dockerfile .
+docker images --filter="dangling=true" --quiet | xargs -r docker rmi
+
+echo
+echo "Create test environment:"
+echo "------------------------"
+export REDIS_PASSWORD=$(uuidgen)
+docker network create -d bridge --subnet=172.254.254.0/24 --gateway=172.254.254.1 --ip-range=172.254.254.0/24 tfs_br
+
+docker run --name redis -d --network=tfs_br -p 16379:6379 --rm \
+    --env REDIS_PASSWORD=${REDIS_PASSWORD} \
+    redis:7.0-alpine redis-server --requirepass ${REDIS_PASSWORD}
+
+docker run --name dbscanserving -d --network=tfs_br -p 10008:10008 --rm \
+    --env LOG_LEVEL=DEBUG \
+    dbscanserving:latest "python -m dbscanserving.service"
+
+echo
+echo "Waiting for initialization..."
+echo "-----------------------------"
+while ! docker logs redis 2>&1 | grep -q 'Ready to accept connections'; do sleep 1; done
+docker logs redis
+#while ! docker logs dbscanserving 2>&1 | grep -q 'Server is ready'; do sleep 1; done
+docker logs dbscanserving
+#sleep 10
+docker ps -a
+
+echo
+echo "Run unitary tests and analyze code coverage:"
+echo "--------------------------------------------"
+export REDIS_ADDRESS=$(docker inspect redis --format "{{.NetworkSettings.Networks.tfs_br.IPAddress}}")
+export DBSCANSERVING_ADDRESS=$(docker inspect dbscanserving --format "{{.NetworkSettings.Networks.tfs_br.IPAddress}}")
+docker run --name opticalattackdetector -d --network=tfs_br -p 10006:10006 --rm \
+    --env REDIS_PASSWORD=${REDIS_PASSWORD} \
+    --env DBSCANSERVINGSERVICE_SERVICE_HOST=${DBSCANSERVING_ADDRESS} \
+    --env CACHINGSERVICE_SERVICE_HOST=${REDIS_ADDRESS} \
+    opticalattackdetector:latest
+
+sleep 5
+docker ps -a
+docker logs opticalattackdetector
+docker exec -i opticalattackdetector bash -c "coverage run -m pytest --log-level=DEBUG --verbose opticalattackdetector/tests/test_unitary.py"
+docker logs redis
+docker logs dbscanserving
+docker logs opticalattackdetector
+
+echo
+echo "Coverage report:"
+echo "----------------"
+docker exec -i opticalattackdetector bash -c "coverage report --include='opticalattackdetector/*' --sort cover --show-missing --skip-covered"
+
+echo
+echo "Post-test clean-up:"
+echo "-------------------"
+docker rm -f redis opticalattackdetector dbscanserving
+docker network rm tfs_br
+
+echo "Done!"
diff --git a/src/bgpls_speaker/.gitlab-ci.yml b/src/bgpls_speaker/.gitlab-ci.yml
index 68b04f8e7d12812c3d19a269a00d5337874d7762..5020256266cf4f84b280985844f24dabad35c39c 100644
--- a/src/bgpls_speaker/.gitlab-ci.yml
+++ b/src/bgpls_speaker/.gitlab-ci.yml
@@ -38,45 +38,45 @@ build bgpls_speaker:
       - manifests/${IMAGE_NAME}service.yaml
       - .gitlab-ci.yml
 
-# Apply unit test to the component
-unit_test bgpls_speaker:
-  variables:
-    IMAGE_NAME: 'bgpls_speaker' # name of the microservice
-    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
-  stage: unit_test
-  needs:
-    - build bgpls_speaker
-  before_script:
-    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-    - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create --driver=bridge teraflowbridge; fi
-    - if docker container ls | grep $IMAGE_NAME; then docker rm -f $IMAGE_NAME; else echo "$IMAGE_NAME image is not in the system"; fi
-  script:
-    - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
-    - docker run --name $IMAGE_NAME -d -p 20030:20030  -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG
-    - sleep 5
-    - docker ps -a
-    - docker logs $IMAGE_NAME
-    - docker exec -i $IMAGE_NAME bash -c "coverage run -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_unitary.py --junitxml=/opt/results/${IMAGE_NAME}_report.xml"
-    - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing"
-  coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
-  after_script:
-    - docker rm -f $IMAGE_NAME
-    - docker network rm teraflowbridge
-  rules:
-    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
-    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
-    - changes:
-      - src/common/**/*.py
-      - proto/*.proto
-      - src/$IMAGE_NAME/**/*.{py,in,yml}
-      - src/$IMAGE_NAME/Dockerfile
-      - src/$IMAGE_NAME/tests/*.py
-      - manifests/${IMAGE_NAME}service.yaml
-      - .gitlab-ci.yml
-  artifacts:
-      when: always
-      reports:
-        junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report.xml
+## Apply unit test to the component
+#unit_test bgpls_speaker:
+#  variables:
+#    IMAGE_NAME: 'bgpls_speaker' # name of the microservice
+#    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
+#  stage: unit_test
+#  needs:
+#    - build bgpls_speaker
+#  before_script:
+#    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+#    - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create --driver=bridge teraflowbridge; fi
+#    - if docker container ls | grep $IMAGE_NAME; then docker rm -f $IMAGE_NAME; else echo "$IMAGE_NAME image is not in the system"; fi
+#  script:
+#    - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+#    - docker run --name $IMAGE_NAME -d -p 20030:20030  -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG
+#    - sleep 5
+#    - docker ps -a
+#    - docker logs $IMAGE_NAME
+#    - docker exec -i $IMAGE_NAME bash -c "coverage run -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_unitary.py --junitxml=/opt/results/${IMAGE_NAME}_report.xml"
+#    - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing"
+#  coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
+#  after_script:
+#    - docker rm -f $IMAGE_NAME
+#    - docker network rm teraflowbridge
+#  rules:
+#    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+#    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
+#    - changes:
+#      - src/common/**/*.py
+#      - proto/*.proto
+#      - src/$IMAGE_NAME/**/*.{py,in,yml}
+#      - src/$IMAGE_NAME/Dockerfile
+#      - src/$IMAGE_NAME/tests/*.py
+#      - manifests/${IMAGE_NAME}service.yaml
+#      - .gitlab-ci.yml
+#  artifacts:
+#      when: always
+#      reports:
+#        junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report.xml
 
 ## Deployment of the service in Kubernetes Cluster
 #deploy bgpls_speaker:
diff --git a/src/device/Config.py b/src/device/Config.py
index 1549d9811aa5d1c193a44ad45d0d7773236c0612..2e831a4054522db5206ad424483367a20be324b9 100644
--- a/src/device/Config.py
+++ b/src/device/Config.py
@@ -12,3 +12,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+
+import os
+
+TRUE_VALUES = {'T', 'TRUE', 'YES', '1'}
+DEVICE_EMULATED_ONLY = os.environ.get('DEVICE_EMULATED_ONLY')
+LOAD_ALL_DEVICE_DRIVERS = (DEVICE_EMULATED_ONLY is None) or (DEVICE_EMULATED_ONLY.upper() not in TRUE_VALUES)
diff --git a/src/device/service/DeviceService.py b/src/device/service/DeviceService.py
index c7868e44579fb27b6eecc6806f64e3bb531d7cd4..0e1ce79f955607cceed2bb791e44ae547b5772f5 100644
--- a/src/device/service/DeviceService.py
+++ b/src/device/service/DeviceService.py
@@ -12,15 +12,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import os
 from common.Constants import ServiceNameEnum
 from common.Settings import get_service_port_grpc
 from common.proto.device_pb2_grpc import add_DeviceServiceServicer_to_server
+from common.proto.openconfig_device_pb2_grpc import add_OpenConfigServiceServicer_to_server
 from common.tools.service.GenericGrpcService import GenericGrpcService
+from device.Config import LOAD_ALL_DEVICE_DRIVERS
 from .driver_api.DriverInstanceCache import DriverInstanceCache
 from .DeviceServiceServicerImpl import DeviceServiceServicerImpl
 from .monitoring.MonitoringLoops import MonitoringLoops
 from .OpenConfigServicer import OpenConfigServicer
-from common.proto.openconfig_device_pb2_grpc import add_OpenConfigServiceServicer_to_server
 
 # Custom gRPC settings
 # Multiple clients might keep connections alive waiting for RPC methods to be executed.
@@ -33,12 +35,14 @@ class DeviceService(GenericGrpcService):
         super().__init__(port, max_workers=GRPC_MAX_WORKERS, cls_name=cls_name)
         self.monitoring_loops = MonitoringLoops()
         self.device_servicer = DeviceServiceServicerImpl(driver_instance_cache, self.monitoring_loops)
-        self.openconfig_device_servicer=OpenConfigServicer(driver_instance_cache,self.monitoring_loops)
+        if LOAD_ALL_DEVICE_DRIVERS:
+            self.openconfig_device_servicer = OpenConfigServicer(driver_instance_cache,self.monitoring_loops)
 
     def install_servicers(self):
         self.monitoring_loops.start()
         add_DeviceServiceServicer_to_server(self.device_servicer, self.server)
-        add_OpenConfigServiceServicer_to_server(self.openconfig_device_servicer,self.server)
+        if LOAD_ALL_DEVICE_DRIVERS:
+            add_OpenConfigServiceServicer_to_server(self.openconfig_device_servicer,self.server)
 
     def stop(self):
         super().stop()
diff --git a/src/device/service/DeviceServiceServicerImpl.py b/src/device/service/DeviceServiceServicerImpl.py
index 76fb6545430f4802d7d37c0c35a35a0539aa200e..5e5d7540c0ffbc860ba912cbbcacc637b7d790c5 100644
--- a/src/device/service/DeviceServiceServicerImpl.py
+++ b/src/device/service/DeviceServiceServicerImpl.py
@@ -31,7 +31,6 @@ from context.client.ContextClient import ContextClient
 from .driver_api._Driver import _Driver
 from .driver_api.DriverInstanceCache import DriverInstanceCache, get_driver
 from .monitoring.MonitoringLoops import MonitoringLoops
-from .drivers.oc_driver.OCDriver import OCDriver
 from .ErrorMessages import ERROR_MISSING_DRIVER, ERROR_MISSING_KPI
 from .Tools import (
     check_connect_rules, check_no_endpoints, compute_rules_to_add_delete, configure_rules, deconfigure_rules,
diff --git a/src/device/service/drivers/__init__.py b/src/device/service/drivers/__init__.py
index 1e8cff6052d840af2aa57ff22793380f06f16356..beb3db38e153445e48d61e3ad4ac5d514297a91d 100644
--- a/src/device/service/drivers/__init__.py
+++ b/src/device/service/drivers/__init__.py
@@ -15,12 +15,9 @@
 import os
 from common.DeviceTypes import DeviceTypeEnum
 from common.proto.context_pb2 import DeviceDriverEnum
+from device.Config import LOAD_ALL_DEVICE_DRIVERS
 from ..driver_api.FilterFields import FilterFieldEnum
 
-TRUE_VALUES = {'T', 'TRUE', 'YES', '1'}
-DEVICE_EMULATED_ONLY = os.environ.get('DEVICE_EMULATED_ONLY')
-LOAD_ALL_DEVICE_DRIVERS = (DEVICE_EMULATED_ONLY is None) or (DEVICE_EMULATED_ONLY.upper() not in TRUE_VALUES)
-
 DRIVERS = []
 
 from .emulated.EmulatedDriver import EmulatedDriver # pylint: disable=wrong-import-position
diff --git a/src/monitoring/tests/test_unitary.py b/src/monitoring/tests/test_unitary.py
index f2c2215970545e1f6583598bdc5ef88299ba76d2..9aa6acea46a8350553a0c1aed3db8f9e444c4877 100644
--- a/src/monitoring/tests/test_unitary.py
+++ b/src/monitoring/tests/test_unitary.py
@@ -38,7 +38,6 @@ from common.tools.service.GenericGrpcService import GenericGrpcService
 from common.tools.timestamp.Converters import timestamp_utcnow_to_float #, timestamp_string_to_float
 from context.client.ContextClient import ContextClient
 from device.client.DeviceClient import DeviceClient
-from device.service.DeviceService import DeviceService
 from device.service.driver_api.DriverFactory import DriverFactory
 from device.service.driver_api.DriverInstanceCache import DriverInstanceCache
 from monitoring.client.MonitoringClient import MonitoringClient
@@ -54,7 +53,8 @@ from monitoring.tests.Messages import create_kpi_request, create_kpi_request_d,
 from monitoring.tests.Objects import DEVICE_DEV1, DEVICE_DEV1_CONNECT_RULES, DEVICE_DEV1_UUID, ENDPOINT_END1_UUID
 
 os.environ['DEVICE_EMULATED_ONLY'] = 'TRUE'
-from device.service.drivers import DRIVERS  # pylint: disable=wrong-import-position,ungrouped-imports
+from device.service.DeviceService import DeviceService  # pylint: disable=wrong-import-position,ungrouped-imports
+from device.service.drivers import DRIVERS              # pylint: disable=wrong-import-position,ungrouped-imports
 
 
 ###########################
diff --git a/src/opticalattackdetector/.gitlab-ci.yml b/src/opticalattackdetector/.gitlab-ci.yml
index 9c064f118ed435ff1c2f7cad92c2f717b87969d8..d329cd265389a0e4680727e4ec62a4f970431531 100644
--- a/src/opticalattackdetector/.gitlab-ci.yml
+++ b/src/opticalattackdetector/.gitlab-ci.yml
@@ -55,6 +55,7 @@ unit_test opticalattackdetector:
     - export REDIS_PASSWORD=$(uuidgen)
     - docker pull "redis:7.0-alpine"
     - docker run --name redis -d --network=teraflowbridge -p 16379:6379 -e REDIS_PASSWORD=${REDIS_PASSWORD} --rm redis:7.0-alpine redis-server --requirepass ${REDIS_PASSWORD}
+    - while ! docker logs redis 2>&1 | grep -q 'Ready to accept connections'; do sleep 1; done
     - docker logs redis
     - REDIS_ADDRESS=$(docker inspect redis --format "{{.NetworkSettings.Networks.teraflowbridge.IPAddress}}")
     - docker pull "$CI_REGISTRY_IMAGE/dbscanserving:$IMAGE_TAG"
diff --git a/src/pathcomp/frontend/Dockerfile b/src/pathcomp/frontend/Dockerfile
index 3c63ad2ae1eee0e047d1b0f5ed5c232eda09f57d..c2b9a7a7c7892a3dbce4ed1295b1530e292751c6 100644
--- a/src/pathcomp/frontend/Dockerfile
+++ b/src/pathcomp/frontend/Dockerfile
@@ -68,9 +68,9 @@ COPY src/context/__init__.py context/__init__.py
 COPY src/context/client/. context/client/
 COPY src/device/__init__.py device/__init__.py
 COPY src/device/client/. device/client/
-COPY src/forecaster/__init__.py forecaster/__init__.py
-COPY src/forecaster/client/. forecaster/client/
-COPY src/forecaster/service/. forecaster/service/
+# Requires entire Forecaster component for the tests
+# TODO: Improve testing framework
+COPY src/forecaster/. forecaster/
 COPY src/monitoring/__init__.py monitoring/__init__.py
 COPY src/monitoring/client/. monitoring/client/
 COPY src/service/__init__.py service/__init__.py
diff --git a/src/slice/.gitlab-ci.yml b/src/slice/.gitlab-ci.yml
index 8cfa422f082d1a3779d4260fc33b672986cae009..28db8751a4b9f2fa267adcd76fd3ae9bd45c959c 100644
--- a/src/slice/.gitlab-ci.yml
+++ b/src/slice/.gitlab-ci.yml
@@ -38,46 +38,46 @@ build slice:
       - manifests/${IMAGE_NAME}service.yaml
       - .gitlab-ci.yml
 
-# Apply unit test to the component
-unit_test slice:
-  variables:
-    IMAGE_NAME: 'slice' # name of the microservice
-    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
-  stage: unit_test
-  needs:
-    - build slice
-  before_script:
-    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-    - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create -d bridge teraflowbridge; fi
-    - if docker container ls | grep $IMAGE_NAME; then docker rm -f $IMAGE_NAME; else echo "$IMAGE_NAME image is not in the system"; fi
-  script:
-    - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
-    - docker run --name $IMAGE_NAME -d -p 4040:4040  -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG
-    - sleep 5
-    - docker ps -a
-    - docker logs $IMAGE_NAME
-    - docker exec -i $IMAGE_NAME bash -c "coverage run -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_unitary.py --junitxml=/opt/results/${IMAGE_NAME}_report.xml"
-    - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing"
-  coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
-  after_script:
-    - docker rm -f $IMAGE_NAME
-    - docker network rm teraflowbridge
-  rules:
-    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
-    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
-    - changes:
-      - src/common/**/*.py
-      - proto/*.proto
-      - src/$IMAGE_NAME/**/*.{py,in,yml}
-      - src/$IMAGE_NAME/Dockerfile
-      - src/$IMAGE_NAME/tests/*.py
-      - src/$IMAGE_NAME/tests/Dockerfile
-      - manifests/${IMAGE_NAME}service.yaml
-      - .gitlab-ci.yml
-  artifacts:
-      when: always
-      reports:
-        junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report.xml
+## Apply unit test to the component
+#unit_test slice:
+#  variables:
+#    IMAGE_NAME: 'slice' # name of the microservice
+#    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
+#  stage: unit_test
+#  needs:
+#    - build slice
+#  before_script:
+#    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
+#    - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create -d bridge teraflowbridge; fi
+#    - if docker container ls | grep $IMAGE_NAME; then docker rm -f $IMAGE_NAME; else echo "$IMAGE_NAME image is not in the system"; fi
+#  script:
+#    - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+#    - docker run --name $IMAGE_NAME -d -p 4040:4040  -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG
+#    - sleep 5
+#    - docker ps -a
+#    - docker logs $IMAGE_NAME
+#    - docker exec -i $IMAGE_NAME bash -c "coverage run -m pytest --log-level=INFO --verbose $IMAGE_NAME/tests/test_unitary.py --junitxml=/opt/results/${IMAGE_NAME}_report.xml"
+#    - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing"
+#  coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
+#  after_script:
+#    - docker rm -f $IMAGE_NAME
+#    - docker network rm teraflowbridge
+#  rules:
+#    - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && ($CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH)'
+#    - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "develop"'
+#    - changes:
+#      - src/common/**/*.py
+#      - proto/*.proto
+#      - src/$IMAGE_NAME/**/*.{py,in,yml}
+#      - src/$IMAGE_NAME/Dockerfile
+#      - src/$IMAGE_NAME/tests/*.py
+#      - src/$IMAGE_NAME/tests/Dockerfile
+#      - manifests/${IMAGE_NAME}service.yaml
+#      - .gitlab-ci.yml
+#  artifacts:
+#      when: always
+#      reports:
+#        junit: src/$IMAGE_NAME/tests/${IMAGE_NAME}_report.xml
 
 ## Deployment of the service in Kubernetes Cluster
 #deploy slice:
diff --git a/src/slice/service/slice_grouper/MetricsExporter.py b/src/slice/service/slice_grouper/MetricsExporter.py
index 3708641eef64e100fae18e875a4fbc4896357057..b884373aabe8827949108a72bcf0e00b1b8e3c83 100644
--- a/src/slice/service/slice_grouper/MetricsExporter.py
+++ b/src/slice/service/slice_grouper/MetricsExporter.py
@@ -29,8 +29,8 @@ MSG_REST_FAILED       = '[rest_request] Query({:s}) failed, retry={:d}/{:d}...'
 MSG_ERROR_MAX_RETRIES = 'Maximum number of retries achieved: {:d}'
 
 METRICSDB_HOSTNAME  = os.environ.get('METRICSDB_HOSTNAME')
-METRICSDB_ILP_PORT  = int(os.environ.get('METRICSDB_ILP_PORT'))
-METRICSDB_REST_PORT = int(os.environ.get('METRICSDB_REST_PORT'))
+METRICSDB_ILP_PORT  = int(os.environ.get('METRICSDB_ILP_PORT', 0))
+METRICSDB_REST_PORT = int(os.environ.get('METRICSDB_REST_PORT', 0))
 METRICSDB_TABLE_SLICE_GROUPS = os.environ.get('METRICSDB_TABLE_SLICE_GROUPS')
 
 COLORS = {