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/service/DeviceService.py b/src/device/service/DeviceService.py
index c7868e44579fb27b6eecc6806f64e3bb531d7cd4..908d133768984c9e4a29999d17c81779d50cfa76 100644
--- a/src/device/service/DeviceService.py
+++ b/src/device/service/DeviceService.py
@@ -12,15 +12,20 @@
 # 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 .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
+
+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)
 
 # Custom gRPC settings
 # Multiple clients might keep connections alive waiting for RPC methods to be executed.
@@ -33,12 +38,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/pathcomp/frontend/Dockerfile b/src/pathcomp/frontend/Dockerfile
index 3c63ad2ae1eee0e047d1b0f5ed5c232eda09f57d..4f694c79a7a2f90fedca21d96f8fe324a0e3b77a 100644
--- a/src/pathcomp/frontend/Dockerfile
+++ b/src/pathcomp/frontend/Dockerfile
@@ -71,6 +71,7 @@ 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/
+COPY src/forecaster/tests/. forecaster/tests/
 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 = {