diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e5b7b8a2b97d5addc2a4931f5b45dff6050a26a3..cbd0e04b3599f7fd033965f40ded86152e5edf80 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -14,9 +14,36 @@ stages:
   - build-push
   - deploy
 
-build-test:
+sonarqube:
+  stage: quality
+  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sonarsource/sonar-scanner-cli:4
+  needs: []
+  only:
+    - merge_requests
+  variables:
+    SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar' # Defines the location of the analysis task cache
+    GIT_DEPTH: '0' # T
+  cache:
+    key: '${CI_JOB_NAME}'
+    paths:
+      - .sonar/cache
+  script:
+    - >
+      sonar-scanner
+      -Dsonar.projectName="ecolyo-backoffice-front"
+      -Dsonar.projectVersion=1.0
+      -Dsonar.sourceEncoding=UTF-8
+      -Dsonar.projectBaseDir=.
+      -Dsonar.host.url=${SONAR_URL}
+      -Dsonar.projectKey=${CI_PROJECT_PATH_SLUG}
+      -Dsonar.login=${SONAR_TOKEN}
+      -Dsonar.cpd.exclusions=tests/**,src/**/*.spec.ts*
+      -Dsonar.qualitygate.wait=true
+
+build:
   stage: build
   image: node:20-alpine
+  needs: []
   before_script:
     - apk add git
     - apk add bash
@@ -30,46 +57,23 @@ build-test:
 build-push:
   stage: build-push
   image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:25
+  needs: []
   variables:
     DOCKER_TLS_CERTDIR: ''
     DOCKER_HOST: tcp://docker:2375/
     DOCKER_DRIVER: overlay2
-  needs: []
-  only:
-    - master
-    - dev
   script:
     - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
     - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" --build-arg conf=prod .
     - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
-
-sonarqube:
-  stage: quality
   only:
-    - merge_requests
-  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sonarsource/sonar-scanner-cli:4
-  variables:
-    SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar' # Defines the location of the analysis task cache
-    GIT_DEPTH: '0' # T
-  cache:
-    key: '${CI_JOB_NAME}'
-    paths:
-      - .sonar/cache
-  script:
-    - >
-      sonar-scanner
-      -Dsonar.projectName="ecolyo-backoffice-front"
-      -Dsonar.projectVersion=1.0
-      -Dsonar.sourceEncoding=UTF-8
-      -Dsonar.projectBaseDir=.
-      -Dsonar.host.url=${SONAR_URL}
-      -Dsonar.projectKey=${CI_PROJECT_PATH_SLUG}
-      -Dsonar.login=${SONAR_TOKEN}
-      -Dsonar.cpd.exclusions=tests/**,src/**/*.spec.ts*
-      -Dsonar.qualitygate.wait=true
+    - master
+    - dev
 
 deploy_rec:
   stage: deploy
+  needs:
+    - build-push
   environment:
     name: Recette - Ecolyo Agent
     url: https://ecolyo-agent-rec.apps.grandlyon.com/
@@ -77,7 +81,6 @@ deploy_rec:
     - NAMESPACE=ns-ecolyo-bo-r01-syn
     - sed -i "s/{{IMAGE_TAG}}/dev/" ./k8s/deployments/ecolyo-agent-client-deployment.yml
     - export KUBECONFIG=$KUBE_CONFIG_REC
-
   script:
     - find k8s/ -name '*.yml' -exec sed -i "s/{{NS}}/$NAMESPACE/g" {} \;
     - sed -i "s/{{HOSTNAME}}/ecolyo-agent-rec.apps.grandlyon.com/g" ./k8s/routes/ecolyo-agent-client-route.yml
@@ -99,6 +102,8 @@ deploy_rec:
 
 deploy_prod:
   stage: deploy
+  needs:
+    - build-push
   environment:
     name: Prod - Ecolyo Agent
     url: https://ecolyo-agent.apps.grandlyon.com/