diff --git a/src/monitoring/.gitlab-ci.yml b/src/monitoring/.gitlab-ci.yml
index e40c1e9ee3c2c1410bcfca115396e050d9ba8e1e..17dc763252b1e478bf77bbfccecb5acc1cc91b0d 100644
--- a/src/monitoring/.gitlab-ci.yml
+++ b/src/monitoring/.gitlab-ci.yml
@@ -2,131 +2,80 @@
 build monitoring:
   variables:
     IMAGE_NAME: 'monitoring' # name of the microservice
+    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
   stage: build
   before_script:
     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
   script:
-    - |- 
-        if [[ $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH ]]; then
-          docker build -t "$IMAGE_NAME:$CI_DEFAULT_BRANCH" -t "$IMAGE_NAME:$VERSION" -f ./src/$IMAGE_NAME/Dockerfile ./src/
-          docker tag "$IMAGE_NAME:$CI_DEFAULT_BRANCH" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_DEFAULT_BRANCH"
-          docker tag "$IMAGE_NAME:$VERSION" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$VERSION"
-          docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_DEFAULT_BRANCH"
-          docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$VERSION"
-        elif [[ $CI_PIPELINE_SOURCE == "merge_request_event" ]]; then
-          docker build -t "$IMAGE_NAME:$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" -f ./src/$IMAGE_NAME/Dockerfile ./src/
-          docker tag "$IMAGE_NAME:$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
-          docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
-        elif [[ $CI_PIPELINE_SOURCE == "push" ]]; then
-          docker build -t "$IMAGE_NAME:$CI_COMMIT_BRANCH" -f ./src/$IMAGE_NAME/Dockerfile ./src/
-          docker tag "$IMAGE_NAME:$CI_COMMIT_BRANCH" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_BRANCH"
-          docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_BRANCH"
-        fi
+    - docker build -t "$IMAGE_NAME:$IMAGE_TAG" -f ./src/$IMAGE_NAME/Dockerfile ./src/
+    - docker tag "$IMAGE_NAME:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
+    - docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
   rules:
-    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
-      changes:
-        - src/$IMAGE_NAME/*.{py,in,yml}
-        - src/$IMAGE_NAME/Dockerfile
-        - src/$IMAGE_NAME/tests/*.py
-        - src/$IMAGE_NAME/tests/Dockerfile
-        - manifests/$IMAGE_NAME.yaml
-        - .gitlab-ci.yml
-    - if: '$CI_PIPELINE_SOURCE == "push"'
-      changes:
-        - src/$IMAGE_NAME/*.{py,in,yml}
-        - src/$IMAGE_NAME/Dockerfile
-        - src/$IMAGE_NAME/tests/*.py
-        - src/$IMAGE_NAME/tests/Dockerfile
-        - manifests/$IMAGE_NAME.yaml
-        - .gitlab-ci.yml
+    - changes:
+      - src/$IMAGE_NAME/*.{py,in,yml}
+      - src/$IMAGE_NAME/Dockerfile
+      - src/$IMAGE_NAME/tests/*.py
+      - src/$IMAGE_NAME/tests/Dockerfile
+      - manifests/$IMAGE_NAME.yaml
+      - .gitlab-ci.yml
 
 # test if the Docker image can be pulled from the gitlab registry
 test monitoring pull:
   variables:
     IMAGE_NAME: 'monitoring' # name of the microservice
+    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
   stage: test
   needs:
     - build monitoring
   before_script:
     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
   script:
-    - |- 
-        if [[ $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH ]]; then
-          docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_DEFAULT_BRANCH"
-          docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$VERSION"
-        elif [[ $CI_PIPELINE_SOURCE == "merge_request_event" ]]; then
-          docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
-        elif [[ $CI_PIPELINE_SOURCE == "push" ]]; then
-          docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_BRANCH"
-        fi
+    - docker pull "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$IMAGE_TAG"
   rules:
-    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
-      changes:
-        - src/$IMAGE_NAME/*.{py,in,yml}
-        - src/$IMAGE_NAME/Dockerfile
-        - src/$IMAGE_NAME/tests/*.py
-        - src/$IMAGE_NAME/tests/Dockerfile
-        - manifests/$IMAGE_NAME.yaml
-        - .gitlab-ci.yml
-    - if: '$CI_PIPELINE_SOURCE == "push"'
-      changes:
-        - src/$IMAGE_NAME/*.{py,in,yml}
-        - src/$IMAGE_NAME/Dockerfile
-        - src/$IMAGE_NAME/tests/*.py
-        - src/$IMAGE_NAME/tests/Dockerfile
-        - manifests/$IMAGE_NAME.yaml
-        - .gitlab-ci.yml
+    - changes:
+      - src/$IMAGE_NAME/*.{py,in,yml}
+      - src/$IMAGE_NAME/Dockerfile
+      - src/$IMAGE_NAME/tests/*.py
+      - src/$IMAGE_NAME/tests/Dockerfile
+      - manifests/$IMAGE_NAME.yaml
+      - .gitlab-ci.yml
 
 # test if the Docker image can be executed
 test monitoring run:
   variables:
     IMAGE_NAME: 'monitoring' # name of the microservice
+    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
   stage: test
   needs:
     - build monitoring
   before_script:
     - if docker network list | grep teraflowbridge; then echo "teraflowbridge is already created"; else docker network create -d bridge teraflowbridge; fi  
   script:
-    - |- 
-        if [[ $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH ]]; then
-          docker run -d -p 7070:7070 --name $IMAGE_NAME --network=teraflowbridge --rm "$IMAGE_NAME:$CI_DEFAULT_BRANCH"
-        elif [[ $CI_PIPELINE_SOURCE == "merge_request_event" ]]; then
-          docker run -d -p 7070:7070 --name $IMAGE_NAME --network=teraflowbridge --rm "$IMAGE_NAME:$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
-        elif [[ $CI_PIPELINE_SOURCE == "push" ]]; then
-          docker run -d -p 7070:7070 --name $IMAGE_NAME --network=teraflowbridge --rm "$IMAGE_NAME:$CI_COMMIT_BRANCH"
-        fi
+    - docker run -d -p 7070:7070 --name $IMAGE_NAME --network=teraflowbridge --rm "$IMAGE_NAME:$IMAGE_TAG"
     - docker ps
   after_script:
-    - docker stop $IMAGE_NAME
+    - docker stop monitoring
   rules:
-    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
-      changes:
-        - src/$IMAGE_NAME/*.{py,in,yml}
-        - src/$IMAGE_NAME/Dockerfile
-        - src/$IMAGE_NAME/tests/*.py
-        - src/$IMAGE_NAME/tests/Dockerfile
-        - manifests/$IMAGE_NAME.yaml
-        - .gitlab-ci.yml
-    - if: '$CI_PIPELINE_SOURCE == "push"'
-      changes:
-        - src/$IMAGE_NAME/*.{py,in,yml}
-        - src/$IMAGE_NAME/Dockerfile
-        - src/$IMAGE_NAME/tests/*.py
-        - src/$IMAGE_NAME/tests/Dockerfile
-        - manifests/$IMAGE_NAME.yaml
-        - .gitlab-ci.yml
+    - changes:
+      - src/$IMAGE_NAME/*.{py,in,yml}
+      - src/$IMAGE_NAME/Dockerfile
+      - src/$IMAGE_NAME/tests/*.py
+      - src/$IMAGE_NAME/tests/Dockerfile
+      - manifests/$IMAGE_NAME.yaml
+      - .gitlab-ci.yml
 
 # apply unit test to the monitoring component
 test monitoring pytest:
   variables:
     IMAGE_NAME: 'monitoring' # name of the microservice
     IMAGE_NAME_TEST: 'monitoring-test' # name of the microservice
+    IMAGE_TAG: 'latest' # tag of the container image (production, development, etc)
   stage: test
   needs:
     - build monitoring
   script:
-    - docker build -t "$IMAGE_NAME_TEST" -f ./src/$IMAGE_NAME/tests/Dockerfile ./src/
-    - docker run -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" $IMAGE_NAME_TEST
+    - docker build -t "$IMAGE_NAME_TEST:$IMAGE_TAG" -f ./src/$IMAGE_NAME/tests/Dockerfile ./src/
+    - docker run -v "$PWD/src/$IMAGE_NAME/tests:/opt/results" $IMAGE_NAME_TEST:$IMAGE_TAG
   rules:
     - changes:
       - src/$IMAGE_NAME/*.{py,in,yml}
@@ -150,6 +99,7 @@ deploy monitoring development:
     - build monitoring
     - test monitoring run
   script:
+    - 'sed -i "s/image: .*/image: $CI_REGISTRY\/$CI_PROJECT_NAMESPACE\/$CI_PROJECT_NAME\/$IMAGE_NAME:$IMAGE_TAG/" manifests/$IMAGE_NAME.yaml'
     - kubectl version
     - kubectl get all
     - kubectl apply -f "manifests/$IMAGE_NAME.yaml"
@@ -180,6 +130,7 @@ deploy monitoring production:
     - build monitoring
     - test monitoring run
   script:
+    - 'sed -i "s/image: .*/image: $CI_REGISTRY\/$CI_PROJECT_NAMESPACE\/$CI_PROJECT_NAME\/$IMAGE_NAME:$IMAGE_TAG/" manifests/$IMAGE_NAME.yaml'
     - kubectl version
     - kubectl get all
     - kubectl apply -f "manifests/$IMAGE_NAME.yaml"
@@ -199,4 +150,3 @@ deploy monitoring production:
         - src/$IMAGE_NAME/tests/Dockerfile
         - manifests/$IMAGE_NAME.yaml
         - .gitlab-ci.yml
-