diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2631adff7392aad3efb19e737f5c976fabb7d844..54fbb6f47dbbc1bf7a0035d7fafdca51064a1bce 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -60,6 +60,7 @@ child-lib:
   variables:
     COMPONENT: $COMPONENT
     MODE: $MODE
+    DISABLE_DEP_CHECK: "true"
   trigger:
     include: "services/common/.gitlab-ci-library.yml"
     strategy: depend
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dbe3dd08cbee0507db1827e83f95e68d0ffd3c26..776dbefb8ea25f27c7ae82d373cc6219b4110276 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@ Tous les changements de ce projet seront documentés dans ce document.
 
 ## [Non livré]
 
+- Mise à jour de Java 17 vers 21 et des dépendances
 - Defect: Libellé erreur erroné quand donnée de référence manquante
 - Ajout du mode d'utilisation et taux d'utilisation
 - Ajout d'une API /version pour récupérer la version courante de NumEcoEval dans le composant référentiel
diff --git a/services/.workspace/.idea/compiler.xml b/services/.workspace/.idea/compiler.xml
index f846159834d25b6c569ec6503c8ee672b8e3994e..84cc240af38dc7893a3d41b3e62e4c328bf1f58f 100644
--- a/services/.workspace/.idea/compiler.xml
+++ b/services/.workspace/.idea/compiler.xml
@@ -8,14 +8,14 @@
         <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
         <outputRelativeToContentRoot value="true" />
       </profile>
-      <profile name="Annotation profile for api-expositiondonneesentrees" enabled="true">
+      <profile name="Annotation profile for common" enabled="true">
         <sourceOutputDir name="target/generated-sources/annotations" />
         <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
         <outputRelativeToContentRoot value="true" />
         <processorPath useClasspath="false">
-          <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.5.3.Final/mapstruct-processor-1.5.3.Final.jar" />
-          <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.5.3.Final/mapstruct-1.5.3.Final.jar" />
-          <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.26/lombok-1.18.26.jar" />
+          <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.5.5.Final/mapstruct-processor-1.5.5.Final.jar" />
+          <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.5.5.Final/mapstruct-1.5.5.Final.jar" />
+          <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.30/lombok-1.18.30.jar" />
           <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok-mapstruct-binding/0.2.0/lombok-mapstruct-binding-0.2.0.jar" />
           <entry name="$MAVEN_REPOSITORY$/com/github/therapi/therapi-runtime-javadoc-scribe/0.15.0/therapi-runtime-javadoc-scribe-0.15.0.jar" />
           <entry name="$MAVEN_REPOSITORY$/com/github/therapi/therapi-runtime-javadoc/0.15.0/therapi-runtime-javadoc-0.15.0.jar" />
@@ -30,8 +30,8 @@
         <module name="api-rest-caculs" />
         <module name="calculs" />
         <module name="api-expositiondonneesentrees" />
-        <module name="api-event-calculs" />
         <module name="api-event-donneesEntrees" />
+        <module name="api-event-calculs" />
       </profile>
     </annotationProcessing>
     <bytecodeTargetLevel>
diff --git a/services/.workspace/.idea/misc.xml b/services/.workspace/.idea/misc.xml
index 7363f2addc2ae079b7a7bae6dc57cb306cd08ee4..0ab13561ffaa90122bac87600be511be4b057512 100644
--- a/services/.workspace/.idea/misc.xml
+++ b/services/.workspace/.idea/misc.xml
@@ -15,7 +15,7 @@
     </option>
     <option name="workspaceImportForciblyTurnedOn" value="true" />
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="temurin-17" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="openjdk-21" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>
\ No newline at end of file
diff --git a/services/.workspace/.idea/runConfigurations/api_event_calculs__gen_sources_.xml b/services/.workspace/.idea/runConfigurations/api_event_calculs__gen_sources_.xml
index af7bfa9f7ac6f008811d8da85534a6f465b76adf..b1f2a817f444a2201a3f550402eba1168a41991c 100644
--- a/services/.workspace/.idea/runConfigurations/api_event_calculs__gen_sources_.xml
+++ b/services/.workspace/.idea/runConfigurations/api_event_calculs__gen_sources_.xml
@@ -8,7 +8,7 @@
           <option name="environmentProperties">
             <map />
           </option>
-          <option name="jreName" value="temurin-17" />
+          <option name="jreName" value="openjdk-21" />
           <option name="mavenProperties">
             <map />
           </option>
diff --git a/services/.workspace/.idea/runConfigurations/api_expositiondonneesentrees__gen_sources_.xml b/services/.workspace/.idea/runConfigurations/api_expositiondonneesentrees__gen_sources_.xml
index 89a394ebdd0c2167359695ce572b55d7013e2f4e..07aaa566e4aac35ababe6d361b1142468ea2a48d 100644
--- a/services/.workspace/.idea/runConfigurations/api_expositiondonneesentrees__gen_sources_.xml
+++ b/services/.workspace/.idea/runConfigurations/api_expositiondonneesentrees__gen_sources_.xml
@@ -8,7 +8,7 @@
           <option name="environmentProperties">
             <map />
           </option>
-          <option name="jreName" value="temurin-17" />
+          <option name="jreName" value="openjdk-21" />
           <option name="mavenProperties">
             <map />
           </option>
diff --git a/services/.workspace/.idea/runConfigurations/install_calculs.xml b/services/.workspace/.idea/runConfigurations/install_calculs.xml
index d8b53028f2762392a24a01911a7bb5555cd6d5cf..29e0955b302000d0470af31efc9759613d32f046 100644
--- a/services/.workspace/.idea/runConfigurations/install_calculs.xml
+++ b/services/.workspace/.idea/runConfigurations/install_calculs.xml
@@ -8,7 +8,7 @@
           <option name="environmentProperties">
             <map />
           </option>
-          <option name="jreName" value="temurin-17" />
+          <option name="jreName" value="openjdk-21" />
           <option name="mavenProperties">
             <map />
           </option>
diff --git a/services/.workspace/.idea/runConfigurations/install_common.xml b/services/.workspace/.idea/runConfigurations/install_common.xml
index 86ce6c8478833e04599599b7cf14b495f23f70ce..01d1be23dcf27f0317306d366e11144598da179f 100644
--- a/services/.workspace/.idea/runConfigurations/install_common.xml
+++ b/services/.workspace/.idea/runConfigurations/install_common.xml
@@ -8,7 +8,7 @@
           <option name="environmentProperties">
             <map />
           </option>
-          <option name="jreName" value="temurin-17" />
+          <option name="jreName" value="openjdk-21" />
           <option name="mavenProperties">
             <map />
           </option>
diff --git a/services/.workspace/.idea/runConfigurations/install_core.xml b/services/.workspace/.idea/runConfigurations/install_core.xml
index 104f7ef69e0b2a705a3034cce45e074cd9d0864f..63ea27ee0ba053ae6d247b4097bc2b01a9114dc1 100644
--- a/services/.workspace/.idea/runConfigurations/install_core.xml
+++ b/services/.workspace/.idea/runConfigurations/install_core.xml
@@ -8,7 +8,7 @@
           <option name="environmentProperties">
             <map />
           </option>
-          <option name="jreName" value="temurin-17" />
+          <option name="jreName" value="openjdk-21" />
           <option name="mavenProperties">
             <map />
           </option>
diff --git a/services/api-event-calculs/dependency_check_suppressions.xml b/services/api-event-calculs/dependency_check_suppressions.xml
deleted file mode 100644
index 15f53bbc9ca0caa969e8cf94333045ac34dbd899..0000000000000000000000000000000000000000
--- a/services/api-event-calculs/dependency_check_suppressions.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.1.xsd">
-
-    <suppress>
-        <notes><![CDATA[
-   file name: spring-security-crypto-5.7.3.jar
-   La librairie Spring Security est en version 5.7.3.
-   Cette CVE est marquée uniquement jusqu'à la version 5.2.4 (exclus)
-   https://nvd.nist.gov/vuln/detail/CVE-2020-5408
-   ]]></notes>
-        <cve>CVE-2020-5408</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   file name: spring-web-5.3.22.jar
-   Dans notre contexte, nous ne recevons pas de code Java de l'extérieur et n'effectuons pas de dé-sérialisation de code Java
-   Côté Spring, le point est déjà remonté comme un faux-positif : https://github.com/spring-projects/spring-framework/issues/24434#issuecomment-744519525
-   ]]></notes>
-        <cve>CVE-2016-1000027</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   file name: snakeyaml-1.33.jar
-   Faux-positif : la version de Snakeyaml est la 1.33, la CVE existe uniquement sur les versions < 1.32
-   https://nvd.nist.gov/vuln/detail/CVE-2022-38752
-   ]]></notes>
-        <cve>CVE-2022-38752</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-positif sur toutes les librairies utils: https://github.com/jeremylong/DependencyCheck/issues/5213
-   Concerne : software.amazon.awssdk:utils qui n'est pas utilisé
-   ]]></notes>
-        <cve>CVE-2021-4277</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-positif : matchent à tort sur tous les commons : https://github.com/jeremylong/DependencyCheck/issues/5132
-   ]]></notes>
-        <cve>CVE-2021-37533</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-    et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2022-1471</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-   et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2022-3064</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-   et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2021-4235</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : json-smart est une dépendance transitive.
-   Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite
-   et c'est souhaités comme cela (traitement de gros volumes de données).
-   ]]></notes>
-        <cve>CVE-2023-1370</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-Positif : Concerne hutool-json et json-java qui ne sont pas utilisés.
-   Le faux-positif se trouve sur json-path, jackson-core, accessors-smart et json-smart.
-   cf. https://github.com/jeremylong/DependencyCheck/issues/5502
-   ]]></notes>
-        <cve>CVE-2022-45688</cve>
-    </suppress>
-
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-Positif : Conformément au lien, nous ne sommes pas dans un des cas de vulnérabilité.
-   cf. cf. https://github.com/jeremylong/DependencyCheck/issues/5502
-   ]]></notes>
-        <cve>CVE-2023-20862</cve>
-    </suppress>
-</suppressions>
diff --git a/services/api-event-calculs/pom.xml b/services/api-event-calculs/pom.xml
index 094c07ff991d91fe3b4086197fd1d41bb6f7e8f9..05bf8fa1512398aa19cf76ebc6a1a876b054280e 100644
--- a/services/api-event-calculs/pom.xml
+++ b/services/api-event-calculs/pom.xml
@@ -42,11 +42,12 @@
         <dependency>
             <groupId>org.mte.numecoeval</groupId>
             <artifactId>common</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.mte.numecoeval</groupId>
             <artifactId>calculs</artifactId>
-            <version>1.2.3-SNAPSHOT</version>
+            <version>${project.version}</version>
         </dependency>
 
         <dependency>
@@ -230,7 +231,7 @@
                                 <serviceImplementation>false</serviceImplementation>
                                 <booleanGetterPrefix>is</booleanGetterPrefix>
                                 <additionalModelTypeAnnotations>
-                                    @lombok.AllArgsConstructor;@lombok.Builder;@lombok.NoArgsConstructor
+                                    @lombok.experimental.SuperBuilder
                                 </additionalModelTypeAnnotations>
                             </configOptions>
                         </configuration>
@@ -274,7 +275,7 @@
                                 <serviceImplementation>false</serviceImplementation>
                                 <booleanGetterPrefix>is</booleanGetterPrefix>
                                 <additionalModelTypeAnnotations>
-                                    @lombok.AllArgsConstructor;@lombok.Builder;@lombok.NoArgsConstructor
+                                    @lombok.experimental.SuperBuilder
                                 </additionalModelTypeAnnotations>
                             </configOptions>
                         </configuration>
diff --git a/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculService.java b/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculService.java
index 7afd35344fd1abee4707a2d308cf521b332fc464..b70ac8b57e6541c79364019039743c2cd987e142 100644
--- a/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculService.java
+++ b/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculService.java
@@ -24,7 +24,7 @@ public class SyncCalculService {
 
 
     public ReponseCalculRest calcul(SyncCalculRest syncCalculRest) {
-        var result = new ReponseCalculRest();
+        var result = ReponseCalculRest.builder().build();
 
         if (syncCalculRest.getEquipementPhysiqueIds() != null && !syncCalculRest.getEquipementPhysiqueIds().isEmpty()) {
             List<CalculSizes> calculSizesList = equipementPhysiqueRepository.findEquipementPhysiqueDTOs(syncCalculRest.getEquipementPhysiqueIds()).stream()
diff --git a/services/api-event-calculs/src/test/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculServiceTest.java b/services/api-event-calculs/src/test/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculServiceTest.java
index ee05e985989cad00d2cf384551e943618da73567..0d15cf801d133dfa250dc96e7fa7fab1211740af 100644
--- a/services/api-event-calculs/src/test/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculServiceTest.java
+++ b/services/api-event-calculs/src/test/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculServiceTest.java
@@ -56,14 +56,10 @@ class SyncCalculServiceTest {
 
         Mockito.when(mainEquipementPhysiqueService.calcul(any())).thenReturn(calculSizes);
 
-        var syncCalculRest = mapper.readValue("""
-                {
-                    "equipementPhysiqueIds": [1,2]
-                }
-                """, SyncCalculRest.class);
-
         /* EXECUTE */
-        var actual = syncCalculService.calcul(syncCalculRest);
+        var actual = syncCalculService.calcul(SyncCalculRest.builder()
+                .equipementPhysiqueIds(List.of(1L, 2L))
+                .build());
 
         /* ASSERT */
         Assertions.assertEquals(2, actual.getNbrEquipementPhysique());
@@ -85,14 +81,10 @@ class SyncCalculServiceTest {
 
         Mockito.when(mainMessagerieService.calcul(any())).thenReturn(calculSizes);
 
-        var syncCalculRest = mapper.readValue("""
-                {
-                    "messagerieIds": [10,20,30]
-                }
-                """, SyncCalculRest.class);
-
         /* EXECUTE */
-        var actual = syncCalculService.calcul(syncCalculRest);
+        var actual = syncCalculService.calcul(SyncCalculRest.builder()
+                .messagerieIds(List.of(10L, 20L, 30L))
+                .build());
 
         /* ASSERT */
         Assertions.assertEquals(3, actual.getNbrMessagerie());
diff --git a/services/api-event-donneesentrees/dependency_check_suppressions.xml b/services/api-event-donneesentrees/dependency_check_suppressions.xml
deleted file mode 100644
index 15f53bbc9ca0caa969e8cf94333045ac34dbd899..0000000000000000000000000000000000000000
--- a/services/api-event-donneesentrees/dependency_check_suppressions.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.1.xsd">
-
-    <suppress>
-        <notes><![CDATA[
-   file name: spring-security-crypto-5.7.3.jar
-   La librairie Spring Security est en version 5.7.3.
-   Cette CVE est marquée uniquement jusqu'à la version 5.2.4 (exclus)
-   https://nvd.nist.gov/vuln/detail/CVE-2020-5408
-   ]]></notes>
-        <cve>CVE-2020-5408</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   file name: spring-web-5.3.22.jar
-   Dans notre contexte, nous ne recevons pas de code Java de l'extérieur et n'effectuons pas de dé-sérialisation de code Java
-   Côté Spring, le point est déjà remonté comme un faux-positif : https://github.com/spring-projects/spring-framework/issues/24434#issuecomment-744519525
-   ]]></notes>
-        <cve>CVE-2016-1000027</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   file name: snakeyaml-1.33.jar
-   Faux-positif : la version de Snakeyaml est la 1.33, la CVE existe uniquement sur les versions < 1.32
-   https://nvd.nist.gov/vuln/detail/CVE-2022-38752
-   ]]></notes>
-        <cve>CVE-2022-38752</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-positif sur toutes les librairies utils: https://github.com/jeremylong/DependencyCheck/issues/5213
-   Concerne : software.amazon.awssdk:utils qui n'est pas utilisé
-   ]]></notes>
-        <cve>CVE-2021-4277</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-positif : matchent à tort sur tous les commons : https://github.com/jeremylong/DependencyCheck/issues/5132
-   ]]></notes>
-        <cve>CVE-2021-37533</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-    et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2022-1471</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-   et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2022-3064</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-   et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2021-4235</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : json-smart est une dépendance transitive.
-   Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite
-   et c'est souhaités comme cela (traitement de gros volumes de données).
-   ]]></notes>
-        <cve>CVE-2023-1370</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-Positif : Concerne hutool-json et json-java qui ne sont pas utilisés.
-   Le faux-positif se trouve sur json-path, jackson-core, accessors-smart et json-smart.
-   cf. https://github.com/jeremylong/DependencyCheck/issues/5502
-   ]]></notes>
-        <cve>CVE-2022-45688</cve>
-    </suppress>
-
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-Positif : Conformément au lien, nous ne sommes pas dans un des cas de vulnérabilité.
-   cf. cf. https://github.com/jeremylong/DependencyCheck/issues/5502
-   ]]></notes>
-        <cve>CVE-2023-20862</cve>
-    </suppress>
-</suppressions>
diff --git a/services/api-event-donneesentrees/pom.xml b/services/api-event-donneesentrees/pom.xml
index c484db9f9cecabc20c243e5dea756ef5a60392fd..9e0f64f4b8f28040b5173f10560eb2eb2259b41e 100644
--- a/services/api-event-donneesentrees/pom.xml
+++ b/services/api-event-donneesentrees/pom.xml
@@ -36,6 +36,7 @@
         <dependency>
             <groupId>org.mte.numecoeval</groupId>
             <artifactId>common</artifactId>
+            <version>${project.version}</version>
         </dependency>
 
         <dependency>
diff --git a/services/api-expositiondonneesentrees/README.md b/services/api-expositiondonneesentrees/README.md
index 628853ac3b5589c2ed8a7d691bbda05c25a89473..ffbe1ffee0604b89eed4a406bc653ad4091a2567 100644
--- a/services/api-expositiondonneesentrees/README.md
+++ b/services/api-expositiondonneesentrees/README.md
@@ -6,11 +6,11 @@ Le contrat d'interface est disponible au format [OpenAPI 3](src/main/resources/s
 
 ## Pré-requis
 
-- JDK 17
-    - [Open JDK](https://jdk.java.net/java-se-ri/17)
+- JDK 21
+    - [Open JDK](https://jdk.java.net/java-se-ri/21)
     - [Coretto](https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/downloads-list.html)
 - [Maven 3](https://maven.apache.org/download.cgi)
-- Un IDE compatible avec Maven 3 et JDK 17
+- Un IDE compatible avec Maven 3 et JDK 21
 
 ## Build
 
diff --git a/services/api-expositiondonneesentrees/dependency_check_suppressions.xml b/services/api-expositiondonneesentrees/dependency_check_suppressions.xml
deleted file mode 100644
index 7937ced36578ad474a7a2d84af4a487d30b95bf1..0000000000000000000000000000000000000000
--- a/services/api-expositiondonneesentrees/dependency_check_suppressions.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.1.xsd">
-
-    <suppress>
-        <notes><![CDATA[
-   file name: spring-security-crypto-5.7.3.jar
-   La librairie Spring Security est en version 5.7.3.
-   Cette CVE est marquée uniquement jusqu'à la version 5.2.4 (exclus)
-   https://nvd.nist.gov/vuln/detail/CVE-2020-5408
-   ]]></notes>
-        <cve>CVE-2020-5408</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   file name: spring-web-5.3.22.jar
-   Dans notre contexte, nous ne recevons pas de code Java de l'extérieur et n'effectuons pas de dé-sérialisation de code Java
-   Côté Spring, le point est déjà remonté comme un faux-positif : https://github.com/spring-projects/spring-framework/issues/24434#issuecomment-744519525
-   ]]></notes>
-        <cve>CVE-2016-1000027</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   file name: snakeyaml-1.33.jar
-   Faux-positif : la version de Snakeyaml est la 1.33, la CVE existe uniquement sur les versions < 1.32
-   https://nvd.nist.gov/vuln/detail/CVE-2022-38752
-   ]]></notes>
-        <cve>CVE-2022-38752</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-positif sur toutes les librairies utils: https://github.com/jeremylong/DependencyCheck/issues/5213
-   Concerne : software.amazon.awssdk:utils qui n'est pas utilisé
-   ]]></notes>
-        <cve>CVE-2021-4277</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-positif : matchent à tort sur tous les commons : https://github.com/jeremylong/DependencyCheck/issues/5132
-   ]]></notes>
-        <cve>CVE-2021-37533</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-    et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2022-1471</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-   et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2022-3064</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-   et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2021-4235</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : json-smart est une dépendance transitive.
-   Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite
-   et c'est souhaités comme cela (traitement de gros volumes de données).
-   ]]></notes>
-        <cve>CVE-2023-1370</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-Positif : Concerne hutool-json et json-java qui ne sont pas utilisés.
-   Le faux-positif se trouve sur json-path, jackson-core, accessors-smart et json-smart.
-   cf. https://github.com/jeremylong/DependencyCheck/issues/5502
-   ]]></notes>
-        <cve>CVE-2022-45688</cve>
-    </suppress>
-
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-Positif : Conformément au lien, nous ne sommes pas dans un des cas de vulnérabilité.
-   cf. cf. https://github.com/jeremylong/DependencyCheck/issues/5502
-   ]]></notes>
-        <cve>CVE-2023-20862</cve>
-    </suppress>
-
-
-</suppressions>
diff --git a/services/api-expositiondonneesentrees/pom.xml b/services/api-expositiondonneesentrees/pom.xml
index 336f9edef16edef8312557f68a28cea1a3f47f4a..30692296b67596377c2f925b5070e5f4f09b1fb8 100644
--- a/services/api-expositiondonneesentrees/pom.xml
+++ b/services/api-expositiondonneesentrees/pom.xml
@@ -39,6 +39,7 @@
         <dependency>
             <groupId>org.mte.numecoeval</groupId>
             <artifactId>common</artifactId>
+            <version>${project.version}</version>
         </dependency>
 
         <!-- REST -->
@@ -297,7 +298,7 @@
                                 <serviceImplementation>false</serviceImplementation>
                                 <booleanGetterPrefix>is</booleanGetterPrefix>
                                 <additionalModelTypeAnnotations>
-                                    @lombok.AllArgsConstructor;@lombok.Builder;@lombok.NoArgsConstructor
+                                    @lombok.experimental.SuperBuilder
                                 </additionalModelTypeAnnotations>
                             </configOptions>
                         </configuration>
diff --git a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/StatutPourCalculPortImpl.java b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/StatutPourCalculPortImpl.java
index 6832764f3900b454f45278a346a71f2a5ba7cc95..39da64041253166f03d96ff6a093bcfd01f3632d 100644
--- a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/StatutPourCalculPortImpl.java
+++ b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/StatutPourCalculPortImpl.java
@@ -51,11 +51,11 @@ public class StatutPourCalculPortImpl implements StatutPourCalculPort {
         var statut = StatutCalculRest.StatutEnum.EN_COURS;
         if (etat == 100) statut = StatutCalculRest.StatutEnum.TERMINE;
 
-        var result = new StatutCalculRest();
-        result.setStatut(statut);
-        result.setEtat(etat + "%");
-        result.setEquipementPhysique(volumeMapper.toRest(volumeEqPh));
-        result.setMessagerie(volumeMapper.toRest(volumeMessagerie));
-        return result;
+        return StatutCalculRest.builder()
+                .statut(statut)
+                .etat(etat + "%")
+                .equipementPhysique(volumeMapper.toRest(volumeEqPh))
+                .messagerie(volumeMapper.toRest(volumeMessagerie))
+                .build();
     }
 }
diff --git a/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/domain/port/input/StatutPourCalculPortImplTest.java b/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/domain/port/input/StatutPourCalculPortImplTest.java
index e5162cec935f1e158d5a0b112e9465a8205e7589..759780e146182eda45ed3fccfc9c797dc81d13f7 100644
--- a/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/domain/port/input/StatutPourCalculPortImplTest.java
+++ b/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/domain/port/input/StatutPourCalculPortImplTest.java
@@ -11,6 +11,7 @@ import org.mte.numecoeval.expositiondonneesentrees.domain.exception.NotFoundExce
 import org.mte.numecoeval.expositiondonneesentrees.domain.model.Volume;
 import org.mte.numecoeval.expositiondonneesentrees.domain.ports.input.impl.StatutPourCalculPortImpl;
 import org.mte.numecoeval.expositiondonneesentrees.generated.api.model.StatutCalculRest;
+import org.mte.numecoeval.expositiondonneesentrees.generated.api.model.VolumeRest;
 import org.mte.numecoeval.expositiondonneesentrees.infrastructure.mapper.VolumeMapper;
 import org.springframework.test.util.ReflectionTestUtils;
 import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper;
@@ -47,20 +48,18 @@ class StatutPourCalculPortImplTest {
         /* EXECUTE : params does not matter in the test */
         var actual = statutPourCalculPort.statutCalculs(volumeEqPhysique, volumeMessagerie);
 
-        var expected = mapper.readValue("""
-                {
-                     "statut" : "EN_COURS",
-                     "etat" : "98%",
-                     "equipementPhysique" : {
-                       "nbEnCours" : 10,
-                       "nbTraite" : 100
-                     },
-                     "messagerie" : {
-                       "nbEnCours" : 50,
-                       "nbTraite" : 5000
-                     }
-                   }
-                """, StatutCalculRest.class);
+        var expected = StatutCalculRest.builder()
+                .statut(StatutCalculRest.StatutEnum.EN_COURS)
+                .etat("98%")
+                .equipementPhysique(VolumeRest.builder()
+                        .nbEnCours(10)
+                        .nbTraite(100)
+                        .build())
+                .messagerie(VolumeRest.builder()
+                        .nbEnCours(50)
+                        .nbTraite(5000)
+                        .build())
+                .build();
 
         /* ASSERT */
         assertEquals(mapper.writeValueAsString(expected), mapper.writeValueAsString(actual));
@@ -77,20 +76,18 @@ class StatutPourCalculPortImplTest {
         /* EXECUTE : params does not matter in the test */
         var actual = statutPourCalculPort.statutCalculs(volumeEqPhysique, volumeMessagerie);
 
-        var expected = mapper.readValue("""
-                {
-                   "statut" : "TERMINE",
-                   "etat" : "100%",
-                   "equipementPhysique" : {
-                     "nbEnCours" : 0,
-                     "nbTraite" : 100
-                   },
-                   "messagerie" : {
-                     "nbEnCours" : 0,
-                     "nbTraite" : 5000
-                   }
-                 }
-                """, StatutCalculRest.class);
+        var expected = StatutCalculRest.builder()
+                .statut(StatutCalculRest.StatutEnum.TERMINE)
+                .etat("100%")
+                .equipementPhysique(VolumeRest.builder()
+                        .nbEnCours(0)
+                        .nbTraite(100)
+                        .build())
+                .messagerie(VolumeRest.builder()
+                        .nbEnCours(0)
+                        .nbTraite(5000)
+                        .build())
+                .build();
 
         /* ASSERT */
         assertEquals(mapper.writeValueAsString(expected), mapper.writeValueAsString(actual));
diff --git a/services/api-referentiel/dependency_check_suppressions.xml b/services/api-referentiel/dependency_check_suppressions.xml
deleted file mode 100644
index 15f53bbc9ca0caa969e8cf94333045ac34dbd899..0000000000000000000000000000000000000000
--- a/services/api-referentiel/dependency_check_suppressions.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.1.xsd">
-
-    <suppress>
-        <notes><![CDATA[
-   file name: spring-security-crypto-5.7.3.jar
-   La librairie Spring Security est en version 5.7.3.
-   Cette CVE est marquée uniquement jusqu'à la version 5.2.4 (exclus)
-   https://nvd.nist.gov/vuln/detail/CVE-2020-5408
-   ]]></notes>
-        <cve>CVE-2020-5408</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   file name: spring-web-5.3.22.jar
-   Dans notre contexte, nous ne recevons pas de code Java de l'extérieur et n'effectuons pas de dé-sérialisation de code Java
-   Côté Spring, le point est déjà remonté comme un faux-positif : https://github.com/spring-projects/spring-framework/issues/24434#issuecomment-744519525
-   ]]></notes>
-        <cve>CVE-2016-1000027</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   file name: snakeyaml-1.33.jar
-   Faux-positif : la version de Snakeyaml est la 1.33, la CVE existe uniquement sur les versions < 1.32
-   https://nvd.nist.gov/vuln/detail/CVE-2022-38752
-   ]]></notes>
-        <cve>CVE-2022-38752</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-positif sur toutes les librairies utils: https://github.com/jeremylong/DependencyCheck/issues/5213
-   Concerne : software.amazon.awssdk:utils qui n'est pas utilisé
-   ]]></notes>
-        <cve>CVE-2021-4277</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-positif : matchent à tort sur tous les commons : https://github.com/jeremylong/DependencyCheck/issues/5132
-   ]]></notes>
-        <cve>CVE-2021-37533</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-    et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2022-1471</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-   et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2022-3064</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-   et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2021-4235</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : json-smart est une dépendance transitive.
-   Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite
-   et c'est souhaités comme cela (traitement de gros volumes de données).
-   ]]></notes>
-        <cve>CVE-2023-1370</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-Positif : Concerne hutool-json et json-java qui ne sont pas utilisés.
-   Le faux-positif se trouve sur json-path, jackson-core, accessors-smart et json-smart.
-   cf. https://github.com/jeremylong/DependencyCheck/issues/5502
-   ]]></notes>
-        <cve>CVE-2022-45688</cve>
-    </suppress>
-
-
-    <suppress>
-        <notes><![CDATA[
-   Faux-Positif : Conformément au lien, nous ne sommes pas dans un des cas de vulnérabilité.
-   cf. cf. https://github.com/jeremylong/DependencyCheck/issues/5502
-   ]]></notes>
-        <cve>CVE-2023-20862</cve>
-    </suppress>
-</suppressions>
diff --git a/services/api-referentiel/pom.xml b/services/api-referentiel/pom.xml
index f574396143e2e87cd46efb455f0b529a5a331ef3..33820b21f02235b7bf0645643956568381bcbac9 100644
--- a/services/api-referentiel/pom.xml
+++ b/services/api-referentiel/pom.xml
@@ -39,6 +39,7 @@
         <dependency>
             <groupId>org.mte.numecoeval</groupId>
             <artifactId>common</artifactId>
+            <version>${project.version}</version>
         </dependency>
 
         <!-- open api docs provisoire -->
diff --git a/services/api-referentiel/src/test/java/org/mte/numecoeval/referentiel/ReferentielApplicationTests.java b/services/api-referentiel/src/test/java/org/mte/numecoeval/referentiel/ReferentielApplicationTests.java
index 5d1c0da87d2007f08862bdc4b22e20efa5a97a2f..c7d1e02e8fd5cc01d4a7d63033614e3049dcc14e 100644
--- a/services/api-referentiel/src/test/java/org/mte/numecoeval/referentiel/ReferentielApplicationTests.java
+++ b/services/api-referentiel/src/test/java/org/mte/numecoeval/referentiel/ReferentielApplicationTests.java
@@ -5,8 +5,8 @@ import io.restassured.http.ContentType;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.mte.numecoeval.referentiel.infrastructure.restapi.dto.ErrorResponseDTO;
 import org.mte.numecoeval.referentiel.infrastructure.restapi.controller.hypothese.ReferentielHypotheseRestApi;
+import org.mte.numecoeval.referentiel.infrastructure.restapi.dto.ErrorResponseDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.core.env.Environment;
@@ -14,7 +14,6 @@ import org.springframework.test.context.ActiveProfiles;
 import org.springframework.web.bind.annotation.GetMapping;
 
 import java.util.Arrays;
-import java.util.LinkedHashMap;
 import java.util.Objects;
 
 import static io.restassured.RestAssured.given;
@@ -33,6 +32,7 @@ class ReferentielApplicationTests {
         RestAssured.baseURI = "http://localhost";
         RestAssured.port = Integer.parseInt(Objects.requireNonNull(environment.getProperty("server.port")));
     }
+
     @Test
     void contextLoads() {
         Assertions.assertNotNull(ReferentielApplication.class);
@@ -55,14 +55,12 @@ class ReferentielApplicationTests {
     }
 
     @Test
-    void unknownEndpoint_shouldReturn400() throws NoSuchMethodException {
+    void unknownEndpoint_shouldReturn500() throws NoSuchMethodException {
         var response = given()
                 .contentType(ContentType.JSON)
                 .get("/this/is/not/an/existing/endpoint?true=yes")
                 .thenReturn();
 
-        assertEquals(404, response.getStatusCode());
-        var errorResponseDTO = response.as(LinkedHashMap.class);
-        assertEquals("/this/is/not/an/existing/endpoint", errorResponseDTO.get("path"));
+        assertEquals(500, response.getStatusCode());
     }
 }
diff --git a/services/calculs/README.md b/services/calculs/README.md
index d1a5f7b2c0370887b775ae7b17e86adba8d61ec8..f5dc0eb276400ef8756aeefe7e75070a1a3fd62d 100644
--- a/services/calculs/README.md
+++ b/services/calculs/README.md
@@ -6,11 +6,11 @@ Module contenant l'intégralité des règles de calculs et du code métier lié
 
 ## Requirements
 
-- Any JDK 17 Implementation
+- Any JDK 21 Implementation
     - [Coretto](https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/downloads-list.html)
-    - [Open JDK](https://jdk.java.net/java-se-ri/17)
+    - [Open JDK](https://jdk.java.net/java-se-ri/21)
 - [Maven 3](https://maven.apache.org/download.cgi)
-- IDE compatible with Maven 3 and JDK 17 are highly recommended to develop
+- IDE compatible with Maven 3 and JDK 21 are highly recommended to develop
 
 ### Build
 
@@ -21,7 +21,11 @@ mvn clean install
 ```
 
 ## License
+
 Le projet est sous licence Apache 2
 
 ## Project status
-If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
+
+If you have run out of energy or time for your project, put a note at the top of the README saying that development has
+slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or
+owner, allowing your project to keep going. You can also make an explicit request for maintainers.
diff --git a/services/calculs/dependency_check_suppressions.xml b/services/calculs/dependency_check_suppressions.xml
deleted file mode 100644
index 8e4bfe629077460e8a73135f51fe1dd571b06ee0..0000000000000000000000000000000000000000
--- a/services/calculs/dependency_check_suppressions.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : json-smart est une dépendance transitive.
-   Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite
-   et c'est souhaités comme cela (traitement de gros volumes de données).
-   ]]></notes>
-        <cve>CVE-2023-1370</cve>
-    </suppress>
-</suppressions>
diff --git a/services/calculs/pom.xml b/services/calculs/pom.xml
index ecceebc44ee5e4bb02ab26d5e2e46fbb0e931af1..dd2164c679a501b3be3f734c5f1512c1e9693fac 100644
--- a/services/calculs/pom.xml
+++ b/services/calculs/pom.xml
@@ -54,16 +54,6 @@
             <artifactId>commons-lang3</artifactId>
             <version>${apache-commons-lang3.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-            <version>${apache-commons-collection4.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>${apache-commons-io.version}</version>
-        </dependency>
 
         <dependency>
             <groupId>org.projectlombok</groupId>
diff --git a/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/data/demande/DemandeCalculImpactEquipementPhysique.java b/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/data/demande/DemandeCalculImpactEquipementPhysique.java
index 535d1b7752e34cdeaf23f35c48df00c5f808914d..4ea04c79e8018f9f68fce6742585101b26bf00bf 100644
--- a/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/data/demande/DemandeCalculImpactEquipementPhysique.java
+++ b/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/data/demande/DemandeCalculImpactEquipementPhysique.java
@@ -4,7 +4,6 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Getter;
 import lombok.Setter;
-import org.apache.commons.collections4.CollectionUtils;
 import org.mte.numecoeval.calculs.domain.data.entree.EquipementPhysique;
 import org.mte.numecoeval.calculs.domain.data.referentiel.*;
 
@@ -38,21 +37,20 @@ public class DemandeCalculImpactEquipementPhysique {
     List<ReferentielMixElectrique> mixElectriques;
 
     public Optional<ReferentielHypothese> getHypotheseFromCode(String code) {
-        if (code == null) {
+        if (code == null || hypotheses == null) {
             return Optional.empty();
         }
-        return CollectionUtils.emptyIfNull(hypotheses)
-                .stream()
+
+        return hypotheses.stream()
                 .filter(hypothese -> code.equals(hypothese.getCode()))
                 .findFirst();
     }
 
     public Optional<ReferentielImpactEquipement> getImpactEquipement(String refEquipement) {
-        if (refEquipement == null) {
+        if (refEquipement == null || impactEquipements == null) {
             return Optional.empty();
         }
-        return CollectionUtils.emptyIfNull(impactEquipements)
-                .stream()
+        return impactEquipements.stream()
                 .filter(Objects::nonNull)
                 .filter(impactEquipement -> refEquipement.equals(impactEquipement.getRefEquipement())
                         && critere.getNomCritere().equals(impactEquipement.getCritere())
@@ -62,11 +60,10 @@ public class DemandeCalculImpactEquipementPhysique {
     }
 
     public Optional<ReferentielMixElectrique> getMixElectrique(String pays) {
-        if (pays == null) {
+        if (pays == null || mixElectriques == null) {
             return Optional.empty();
         }
-        return CollectionUtils.emptyIfNull(mixElectriques)
-                .stream()
+        return mixElectriques.stream()
                 .filter(Objects::nonNull)
                 .filter(mixElectrique -> pays.equals(mixElectrique.getPays())
                         && critere.getNomCritere().equals(mixElectrique.getCritere())
diff --git a/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/port/input/service/impl/CalculImpactReseauServiceImpl.java b/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/port/input/service/impl/CalculImpactReseauServiceImpl.java
index aa94858196d3d6c25247ee0f162fe1f7c16ad12d..d9fe16ac9451b6a4778464733aa0624de5932d33 100644
--- a/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/port/input/service/impl/CalculImpactReseauServiceImpl.java
+++ b/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/port/input/service/impl/CalculImpactReseauServiceImpl.java
@@ -3,7 +3,6 @@ package org.mte.numecoeval.calculs.domain.port.input.service.impl;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
 import org.mte.numecoeval.calculs.domain.data.demande.DemandeCalculImpactReseau;
 import org.mte.numecoeval.calculs.domain.data.erreur.TypeErreurCalcul;
 import org.mte.numecoeval.calculs.domain.data.indicateurs.ImpactReseau;
@@ -56,7 +55,7 @@ public class CalculImpactReseauServiceImpl implements CalculImpactReseauService
                 .filter(refImpactReseau ->
                         demandeCalcul.getEtape().getCode().equals(refImpactReseau.getEtapeACV())
                                 && demandeCalcul.getCritere().getNomCritere().equals(refImpactReseau.getCritere())
-                                && StringUtils.equals(refImpactReseau.getRefReseau(), refReseau)
+                                && refReseau.equals(refImpactReseau.getRefReseau())
                 )
                 .findFirst()
                 .orElseThrow(() -> new CalculImpactException(
diff --git a/services/common/.gitlab-ci-library.yml b/services/common/.gitlab-ci-library.yml
index 333d3823909ad520f920c27976c1d29a58d341fc..64086d3fe936628380dd7bb26de3919dd6ff4c75 100644
--- a/services/common/.gitlab-ci-library.yml
+++ b/services/common/.gitlab-ci-library.yml
@@ -25,12 +25,13 @@ cache:
     - .m2/
 
 variables:
+  MAVEN_DOCKER_IMAGE: "maven:3.9.6-eclipse-temurin-21"
   MAVEN_PROJECT_DIR: services/$COMPONENT
   PROJECT_DIR: services/$COMPONENT
   MAVEN_CLI_OPTS: "-s ci_settings.xml --batch-mode"
   MAVEN_OPTS: "-Dmaven.repo.local=.m2"
   DEPENDENCY_CHECK_SCAN_PATH: $CI_PROJECT_DIR/services/$COMPONENT
-  DEPENDENCY_CHECK_SUPPRESSION_PATH: $CI_PROJECT_DIR/services/$COMPONENT
+  DEPENDENCY_CHECK_SUPPRESSION_PATH: $CI_PROJECT_DIR/services/core
 
 #Compilation et Tests pour les Merges requests et les commits
 test-application:
diff --git a/services/common/.gitlab-ci-maven.yml b/services/common/.gitlab-ci-maven.yml
index 8a32043ea82b00b487775faeeb405233f45a6db2..76001a38f2bb76800e049f162c93545e877807a4 100644
--- a/services/common/.gitlab-ci-maven.yml
+++ b/services/common/.gitlab-ci-maven.yml
@@ -29,13 +29,14 @@ stages:
   - analysis
 
 variables:
+  MAVEN_DOCKER_IMAGE: "maven:3.9.6-eclipse-temurin-21"
   MAVEN_PROJECT_DIR: services/$COMPONENT
   PROJECT_DIR: services/$COMPONENT
   MAVEN_CLI_OPTS: "-s $CI_PROJECT_DIR/services/common/ci_settings.xml --batch-mode"
   MAVEN_OPTS: "-Dmaven.repo.local=.m2"
-  DEPENDENCY_CHECK_SCAN_PATH: $CI_PROJECT_DIR/services/$COMPONENT
-  DEPENDENCY_CHECK_SUPPRESSION_PATH: $CI_PROJECT_DIR/services/$COMPONENT
   DOCKER_IMAGE: "$CI_REGISTRY_IMAGE/$COMPONENT:$CI_COMMIT_REF_NAME"
+  DEPENDENCY_CHECK_SCAN_PATH: $CI_PROJECT_DIR/services/$COMPONENT
+  DEPENDENCY_CHECK_SUPPRESSION_PATH: $CI_PROJECT_DIR/services/core
 
 #Compilation et Tests pour les Merges requests et les commits
 test-application:
@@ -60,10 +61,6 @@ build-application:
   extends:
     - .tags-runner
     - .java:build
-  only:
-    - main
-    - develop
-    - tags
 
 build-image:
   stage: build-image
@@ -80,7 +77,3 @@ build-image:
     DOCKER_PASSWORD: $CI_REGISTRY_PASSWORD
     REGISTRY_URL: $CI_REGISTRY
     IMAGE_URL: $CI_REGISTRY_IMAGE/$COMPONENT
-  only:
-    - main
-    - develop
-    - tags
diff --git a/services/common/Dockerfile b/services/common/Dockerfile
index 9ba5cf5d87a84da687f5ebd42624ee1420a3e190..adda00c1b7624157d6a5b2989eb1599d2289aa15 100644
--- a/services/common/Dockerfile
+++ b/services/common/Dockerfile
@@ -1,4 +1,4 @@
-FROM openjdk:17-jdk-slim
+FROM openjdk:21-jdk-slim
 
 # Logs
 ENV LOGS_DIR=/app/logs
diff --git a/services/common/dependency_check_suppressions.xml b/services/common/dependency_check_suppressions.xml
deleted file mode 100644
index 790bf7a1a3b282690efe670d18df127d68d6f791..0000000000000000000000000000000000000000
--- a/services/common/dependency_check_suppressions.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml
-    et non des fichiers externes.
-   ]]></notes>
-        <cve>CVE-2022-1471</cve>
-    </suppress>
-
-    <suppress>
-        <notes><![CDATA[
-   Non-applicable : json-smart est une dépendance transitive.
-   Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite
-   et c'est souhaités comme cela (traitement de gros volumes de données).
-   ]]></notes>
-        <cve>CVE-2023-1370</cve>
-    </suppress>
-</suppressions>
diff --git a/services/core/dependency_check_suppressions.xml b/services/core/dependency_check_suppressions.xml
index fbf9371b9855dacda4603cfaba33e10d71151dd1..9f9224ad8603be91c6310af4ce4de8d939103735 100644
--- a/services/core/dependency_check_suppressions.xml
+++ b/services/core/dependency_check_suppressions.xml
@@ -1,3 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd">
+
+    <suppress>
+        <notes><![CDATA[
+   Faux-Positif : Concerne hutool-json et json-java qui ne sont pas utilisés.
+   Le faux-positif se trouve sur json-path
+   cf. https://github.com/jeremylong/DependencyCheck/issues/5502
+   ]]></notes>
+        <cve>CVE-2022-45688</cve>
+    </suppress>
+
 </suppressions>
diff --git a/services/core/pom.xml b/services/core/pom.xml
index 0e1c2f799d3673252da25ecc1550035cebb6a971..98249ad784d6297592ddaba4faaf755b1d9ff35f 100644
--- a/services/core/pom.xml
+++ b/services/core/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>3.0.7</version>
+        <version>3.2.1</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
 
@@ -36,44 +36,39 @@
     </distributionManagement>
 
     <properties>
-        <java.version>17</java.version>
+        <java.version>21</java.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 
         <!-- Utilitaires -->
-        <apache-commons-lang3.version>3.12.0</apache-commons-lang3.version>
+        <apache-commons-lang3.version>3.14.0</apache-commons-lang3.version>
         <apache-commons-collection4.version>4.4</apache-commons-collection4.version>
-        <apache-commons-io.version>2.11.0</apache-commons-io.version>
-        <apache-commons-csv.version>1.9.0</apache-commons-csv.version>
-        <mapstruct.version>1.5.3.Final</mapstruct.version>
+        <apache-commons-io.version>2.15.1</apache-commons-io.version>
+        <apache-commons-csv.version>1.10.0</apache-commons-csv.version>
+        <mapstruct.version>1.5.5.Final</mapstruct.version>
 
-        <!-- CVE multiples sur Snakeyaml (CVE-2020-13936, CVE-2022-38749, CVE-2022-38751, CVE-2022-38750, CVE-2022-38752)-->
-        <snakeyaml.version>1.33</snakeyaml.version>
-        <!-- CVE sur Postgres (CVE-2022-41946) -->
-        <postgresql.version>42.5.4</postgresql.version>
-
-        <!-- CVE sur Spring CVE-2023-20863-->
-        <spring-framework.version>6.0.8</spring-framework.version>
+        <postgresql.version>42.7.1</postgresql.version>
 
+        <!-- L'erreur vient d'une de ces 4 lib -->
         <!-- Documentation automatique des API REST en OpenAPI 3.0 -->
-        <springdoc-openapi-ui.version>2.0.4</springdoc-openapi-ui.version>
+        <springdoc-openapi-ui.version>2.3.0</springdoc-openapi-ui.version>
 
         <!-- OpenAPI Generator (API REST generator) -->
-        <openapi-generator-version>6.4.0</openapi-generator-version>
+        <openapi-generator-version>7.2.0</openapi-generator-version>
         <jackson-databind-nullable-version>0.2.6</jackson-databind-nullable-version>
         <!-- scs-multiapi-maven-plugin (Async API generator)-->
-        <scs-multiapi-maven-plugin.version>4.5.0</scs-multiapi-maven-plugin.version>
+        <scs-multiapi-maven-plugin.version>5.3.3</scs-multiapi-maven-plugin.version>
 
         <!-- Tests -->
         <meanbean.version>2.0.3</meanbean.version>
-        <equalsverifier.version>3.10.1</equalsverifier.version>
-        <wiremock.version>2.34.0</wiremock.version>
+        <equalsverifier.version>3.15.6</equalsverifier.version>
+        <wiremock.version>3.0.1</wiremock.version>
         <javafaker.version>1.0.2</javafaker.version>
-        <cucumber-bom.version>7.11.1</cucumber-bom.version>
-        <jacoco.version>0.8.8</jacoco.version>
-        <instancio-junit.version>2.2.0</instancio-junit.version>
+        <cucumber-bom.version>7.15.0</cucumber-bom.version>
+        <jacoco.version>0.8.11</jacoco.version>
+        <instancio-junit.version>4.1.0</instancio-junit.version>
         <surefireArgLine>-Dfile.encoding=UTF-8</surefireArgLine>
-        <embedded-database-spring-test.version>2.2.0</embedded-database-spring-test.version>
-        <embedded-postgres.version>2.0.3</embedded-postgres.version>
+        <embedded-database-spring-test.version>2.5.0</embedded-database-spring-test.version>
+        <embedded-postgres.version>2.0.6</embedded-postgres.version>
     </properties>
 
     <dependencyManagement>
@@ -222,7 +217,7 @@
                     <plugin>
                         <groupId>org.owasp</groupId>
                         <artifactId>dependency-check-maven</artifactId>
-                        <version>8.1.2</version>
+                        <version>9.0.9</version>
                         <executions>
                             <execution>
                                 <goals>