diff --git a/.env.dist b/.env.dist
index 9d77483cd0ee10196520a3840464f33835a5cd30..6a7739807ac9c3f1f209e4fcfcf51952a2ba9ae4 100644
--- a/.env.dist
+++ b/.env.dist
@@ -36,21 +36,22 @@ APP_COOKIE_IDLE_TIMEOUT=5400
 # Cookie lifetime is 4 hours in seconds
 APP_COOKIE_LIFETIME=14400
 APP_DEFAULT_REFERENT="Référent RGPD"
-APP_DPO_ADDRESS_CITY="Saintes"
-APP_DPO_ADDRESS_STREET="2 rue des Rochers"
-APP_DPO_ADDRESS_ZIP_CODE="17100"
+# Informations du DPD
 APP_DPO_CIVILITY=m
-APP_DPO_FIRST_NAME=Michaël
-APP_DPO_LAST_NAME=Edlich
-APP_DPO_COMPANY=Soluris
-APP_DPO_JOB="Chargé de mission Solutions Documentaires Electroniques"
-APP_DPO_MAIL=m.edlich@soluris.fr
-APP_DPO_PHONE_NUMBER=0546923905
+APP_DPO_FIRST_NAME="Prénom"
+APP_DPO_LAST_NAME="Nom"
+APP_DPO_JOB="Titre de poste"
+APP_DPO_MAIL=MonAdresseEmail@Domaine.fr
+APP_DPO_PHONE_NUMBER=0123456789
+APP_DPO_COMPANY="Nom de la structure"
+APP_DPO_ADDRESS_STREET="Rue"
+APP_DPO_ADDRESS_CITY="Ville"
+APP_DPO_ADDRESS_ZIP_CODE="11111"
 APP_ENV=dev
-APP_FOOTER_PROVIDER_NAME=SOLURIS
-APP_FOOTER_PROVIDER_URL="https://example.fr"
+APP_FOOTER_PROVIDER_NAME="Nom de la structure"
+APP_FOOTER_PROVIDER_URL="https://www.soluris.fr"
 APP_IMAGE_FAVICON_PATH="images/logo_madis_2020_favicon.png"
-APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="htpps//example.fr"
+APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="https//www.soluris.fr"
 APP_IMAGE_SIDEBAR_BOTTOM_PATH="images/soluris-logo-white.png"
 APP_IMAGE_SIDEBAR_REDUCED_PATH="images/logo_madis_2020_favicon.png"
 APP_IMAGE_LOGO_BLANC="images/logo_madis_2020_blanc.png"
@@ -74,11 +75,11 @@ APP_DATATABLE_DEFAULT_PAGE_LENGTH=15
 APP_PASSWORD_REQUIRE_MIN_LENGTH=14
 # if true, the password requires uppercase AND lowercase character
 APP_PASSWORD_REQUIRE_CASE_DIFF=true
-# if true, the password requires atleast 1 letter
+# if true, the password requires at least 1 letter
 APP_PASSWORD_REQUIRE_LETTERS=true
-# if true, the password requires atleast 1 number
+# if true, the password requires at least 1 number
 APP_PASSWORD_REQUIRE_NUMBERS=true
-# if true, the password requires atleast 1 special character (&!?, etc)
+# if true, the password requires at least 1 special character (&!?, etc)
 APP_PASSWORD_REQUIRE_SPECIAL_CHARACTERS=true
 
 # global maximum upload size for file uploads
@@ -105,7 +106,6 @@ APP_NOTIFICATION_EMAIL_FIRST_LINE="Des modifications ont été apportées dans <
 # Activate notification module
 APP_ACTIVATE_NOTIFICATIONS=true
 
-
 #TRUSTED_PROXIES=127.0.0.1,127.0.0.2
 #TRUSTED_HOSTS=localhost,example.com
 ###< symfony/framework-bundle ###
@@ -117,7 +117,7 @@ TOOLTIP_CONFORMITE_ORGANISATION_TRES_ELOIGNEE="La ou les pratique(s) sont très
 TOOLTIP_CONFORMITE_ORGANISATION_PARTIELLE="La ou les pratique(s) sont partielles (20% < Pratique > 80%) au regard de la définition.<br/>Elles ne sont pas documentées."
 TOOLTIP_CONFORMITE_ORGANISATION_QUASI_CONFORME="La ou les pratiques sont conformes ou quasiment conforme à la définition (80% < Pratique > 100%)."
 TOOLTIP_CONFORMITE_ORGANISATION_MESURABLE="La ou les pratiques sont conforme à la définition.<br/>Elles sont documentées et contrôlables dans le cas d'un audit."
-TOOLTIP_CONFORMITE_ORGANISATION_REVISEE="La ou les pratiques sont coordonnées et conforme à la définition.<br/>Des évaluations sont réalisées.<br/>Des améliorations sont systématiquement apportées à partir de l'analyse des évaluations effectuées. "
+TOOLTIP_CONFORMITE_ORGANISATION_REVISEE="La ou les pratiques sont coordonnées et conforme à la définition.<br/>Des évaluations sont réalisées.<br/>Des améliorations sont systématiquement apportées à partir de l'analyse des évaluations effectuées."
 ###> knplabs/knp-snappy-bundle ###
 WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf
 WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage
@@ -148,7 +148,7 @@ SSO_KEY_FIELD="sub"
 SSO_LOGOUT_URL=
 
 ###> Value used for oauth2 client config see config/packages/knpu_oauth2_client.yaml ###
-# leave empty to disable SSO (available types: keycloak)
+# leave empty to disable SSO (available types: lemonldap and keycloak)
 OAUTH_TYPE=
 OAUTH_URL=https://xxxxxxxxxx/auth
 OAUTH_REALM=REALM
diff --git a/.env.test b/.env.test
index 5c0e7d6498177960d33e44557bf0ecb8b986d517..0679f4d8cd28fe30bbef552b9095366a48392ed3 100644
--- a/.env.test
+++ b/.env.test
@@ -30,21 +30,22 @@ APP_COOKIE_IDLE_TIMEOUT=5400
 # Cookie lifetime is 4 hours in seconds
 APP_COOKIE_LIFETIME=14400
 APP_DEFAULT_REFERENT="Référent RGPD"
-APP_DPO_ADDRESS_CITY="Saintes"
-APP_DPO_ADDRESS_STREET="2 rue des Rochers"
-APP_DPO_ADDRESS_ZIP_CODE="17100"
+# Informations du DPD
 APP_DPO_CIVILITY=m
-APP_DPO_FIRST_NAME=Michaël
-APP_DPO_LAST_NAME=Edlich
-APP_DPO_COMPANY=Soluris
-APP_DPO_JOB="Chargé de mission Solutions Documentaires Electroniques"
-APP_DPO_MAIL=m.edlich@soluris.fr
-APP_DPO_PHONE_NUMBER=0546923905
+APP_DPO_FIRST_NAME="Prénom"
+APP_DPO_LAST_NAME="Nom"
+APP_DPO_JOB="Titre de poste"
+APP_DPO_MAIL=MonAdresseEmail@Domaine.fr
+APP_DPO_PHONE_NUMBER=0123456789
+APP_DPO_COMPANY="Nom de la structure"
+APP_DPO_ADDRESS_STREET="Rue"
+APP_DPO_ADDRESS_CITY="Ville"
+APP_DPO_ADDRESS_ZIP_CODE="11111"
 APP_ENV=dev
-APP_FOOTER_PROVIDER_NAME=SOLURIS
-APP_FOOTER_PROVIDER_URL="https://example.fr"
+APP_FOOTER_PROVIDER_NAME="Nom de la structure"
+APP_FOOTER_PROVIDER_URL="https://www.soluris.fr"
 APP_IMAGE_FAVICON_PATH="images/logo_madis_2020_favicon.png"
-APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="htpps//example.fr"
+APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="https//www.soluris.fr"
 APP_IMAGE_SIDEBAR_BOTTOM_PATH="images/soluris-logo-white.png"
 APP_IMAGE_SIDEBAR_REDUCED_PATH="images/logo_madis_2020_favicon.png"
 APP_IMAGE_LOGO_BLANC="images/logo_madis_2020_blanc.png"
@@ -84,7 +85,7 @@ TOOLTIP_CONFORMITE_ORGANISATION_TRES_ELOIGNEE="La ou les pratique(s) sont très
 TOOLTIP_CONFORMITE_ORGANISATION_PARTIELLE="La ou les pratique(s) sont partielles (20% < Pratique > 80%) au regard de la définition.<br/>Elles ne sont pas documentées."
 TOOLTIP_CONFORMITE_ORGANISATION_QUASI_CONFORME="La ou les pratiques sont conformes ou quasiment conforme à la définition (80% < Pratique > 100%)."
 TOOLTIP_CONFORMITE_ORGANISATION_MESURABLE="La ou les pratiques sont conforme à la définition.<br/>Elles sont documentées et contrôlables dans le cas d'un audit."
-TOOLTIP_CONFORMITE_ORGANISATION_REVISEE="La ou les pratiques sont coordonnées et conforme à la définition.<br/>Des évaluations sont réalisées.<br/>Des améliorations sont systématiquement apportées à partir de l'analyse des évaluations effectuées. "
+TOOLTIP_CONFORMITE_ORGANISATION_REVISEE="La ou les pratiques sont coordonnées et conforme à la définition.<br/>Des évaluations sont réalisées.<br/>Des améliorations sont systématiquement apportées à partir de l'analyse des évaluations effectuées."
 ###> knplabs/knp-snappy-bundle ###
 WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf
 WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage
@@ -95,7 +96,6 @@ WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage
 # For Gmail as a transport, use: "gmail://username:password@localhost"
 # For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
 # Delivery is disabled by default via "null://localhost"
-MAILER_URL=null://localhost
 MAILER_DSN=null://localhost
 ###< symfony/swiftmailer-bundle ###
 
@@ -120,7 +120,7 @@ SSO_KEY_FIELD="sub"
 SSO_LOGOUT_URL=
 
 ###> Value used for oauth2 client config see config/packages/knpu_oauth2_client.yaml ###
-# leave empty to disable SSO (available types: keycloak)
+# leave empty to disable SSO (available types: lemonldap and keycloak)
 OAUTH_TYPE=keycloak
 OAUTH_URL=https://xxxxxxxxxx/auth
 OAUTH_REALM=REALM
diff --git a/.gitlab-pages.html b/.gitlab-pages.html
index b58aa347e6717a59a90950d416f435bfbe1565d1..4bed8efdde1bf3b898fb8e0621336996d4475969 100644
--- a/.gitlab-pages.html
+++ b/.gitlab-pages.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html lang="en">
+<html lang="fr-FR">
 <head>
     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css">
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7b5a229fb26b0167139d916d17e211f23b675a48..b0b1879332ecc82069985cf5b4125a2ff4a2a27e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,48 @@
 CHANGELOG
 =========
+## [2.4.5] - 2024-05-31
+### Ajout
+- [Tableau de bord] Ajout du type "S'opposer au traitement" dans le graphique des types des demandes.
+- [Référentiels] Ajout du référentiel XML sur la sécurité des données de la CNIL v2024.
+- [Référentiels] Ajout du référentiel XML sur la sécurité et l'homologation des services publics numériques à la cybersécurité.
+- [Référentiels] Ajout du référentiel XML sur les recommandations sur le nomadisme numérique de l'ANSSI.
+- [Référentiels] Ajout du référentiel XML de l'indice de maturité Madis par défaut.
+### Changement
+- [Global] Divers renommages et traductions.
+- [Global] Migration de la font Awesome v6.4.2 en v6.5.2.
+- [Documentation] Mise à jour de la documentation technique.
+- [Documentation] Mise à jour de la documentation utilisateur.
+- [Accessibilité] Mise à jour de la déclaration d'accessibilité et du plan d'actions 2024.
+- [Traitements] Modification du terme "Délai de conservation" en "Durée de conservation".
+- [Traitements] Modification du bloc "Conformité du traitement" et "Analyse d'impact" dans la visualisation d'un traitement, ainsi que les différents PDF générés.
+- [Actions de protection] Modification des colonnes "Coûts" et "Charge" pour ne pas être affichées par défaut.
+- [Actions de protection] Modification sur le nom de la colonne ordonnée par défaut (avant priorité).
+- [Plan d'actions] Modification sur la date d'échéance de la colonne ordonnée par défaut (avant priorité).
+- [AIPD] Modification du modèle AIPD pour qu'une justification ne soit pas obligatoire par défaut.
+- [AIPD] Modification des icônes et actions liées aux AIPD dans la conformité des traitements.
+- [Structure] Modification du type de structure "Association" en "Association ou Groupement (GIP ou GIE)".
+### Fix
+- [Global] Fix global d'éléments non souhaités affichés en Lecteur.
+- [Accessibilité] De nombreux fixes divers liés à l'accessibilité suite à l'audit RGAA.
+- [Tableau de bord] Fix des calculs des demandes à traiter.
+- [Tableau de bord] Fix des calculs du graphique des types des demandes.
+- [Tableau de bord] Fix des calculs du graphique du statut des demandes.
+- [Tableau de bord] Fix des calculs des violations.
+- [Traitements] Fix du bloc pour de la conformité du traitement et de l'AIPD qui ne s'affichaient pas toujours.
+- [Violations] Fix des nombres supérieurs à 9 chiffres.
+- [Preuves] Fix d'obligation de dépôt de fichier lors de la modification d'une preuve.
+- [AIPD] Fix d'un principe fondamental qui générait une erreur lors de la réalisation d'une AIPD, ou de son export PDF.
+- [AIPD] Fix d'éléments affichés dans le graphique des mesures dans l'export PDF d'une AIPD.
+- [Bilan] Fix de la largeur des tableaux dans le bilan.
+- [Référentiels] Fix de l'URL de certains liens PDF.
+- [Espace documentaire] Fix du type .avi qui n'était pas déposable dans l'espace documentaire.
+### Suppression
+- [Image] Suppression de l'icône `favicon.ico` du dossier `public`, qui étant en double dans les images. Penser à adapter le chemin vers le bon favicon `images/logo_madis_2020_favicon.png`.
+### Migration
+- [Migration] Ajout d'un fichier de migration pour créer automatiquement les catégories de données dans les traitements.
+- [Migration] Ajout d'un fichier de migration pour mettre à jour les titres, les couleurs, les descriptions, et les questions, pour la conformité de la structure.
+- [Migration] Ajout d'un fichier de migration pour corriger le nom d'un principe fondamental de la conformité des traitements.
+
 ## [2.4.0] - 2024-02-13
 Détails des modifications #894
 ### Ajout
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0685a4c73a788e62ddcb83900e0bba90a0039e81..871031bcf5c85ef71d7b1d0ce0a46bf118200904 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,7 +1,56 @@
 Contribution
 ============
 
-Si vous souhaitez contribuer à MADIS,
-veuillez vous référer à la page de documentation correspondante :
+## Contributeurs historiques
 
-[Cycle de vie d'une contribution](/doc/developpement/6-cycle-de-vie-contribution.md)
+* **BOURLARD Donovan** - Travail initial
+* **ANODE Stratégie Digitale** - Maintenance et évolutions
+
+Des contributions ont peut-être été faites sur le projet. Pour analyser la liste des contributeurs, référez-vous au dépôt de code sur GitLab.
+
+Si vous souhaitez contribuer à Madis, veuillez vous référer à la documentation vous correspondant :
+- [Signaler un problème ou une suggestion d'amélioration](#signaler-un-problème-ou-une-suggestion-damélioration)
+- [Proposer un développement d'une fonctionnalité](#proposer-un-développement-dune-fonctionnalité)
+    1. [Création d'un ticket](#1-création-dun-ticket)
+    2. [Développements](#2-développements)
+    3. [Traitement de la demande de fusion par les mainteneurs](#3-traitement-de-la-demande-de-fusion-par-les-mainteneurs)
+
+## Signaler un problème ou une suggestion d'amélioration
+
+Avant toute contribution, merci de vérifier qu'une demande similaire n'est pas déjà en cours ou résolue. Pour cela, veuillez vérifier :
+1. Que le problème soit bien présent dans la [dernière version](https://gitlab.adullact.net/soluris/madis/-/tags) (Consulter le [journal des modifications (Changelog)](CHANGELOG.md#changelog)) ;
+2. Qu'un [ticket ouvert](https://gitlab.adullact.net/soluris/madis/-/issues) ne décrit pas déjà votre demande (dans ce cas, participez à la discussion de ce dernier).
+
+Dans le cas où il n'y aurait pas de ticket déjà ouvert, il faudra alors en créer un. Il est recommandé de donner au ticket un titre concis et le plus explicite possible.
+
+**Recommandation Madis** : Il est proposé que chaque ticket soit préfixé par le nom du module. Par exemple, un ticket pour le registre des traitements aura comme titre `[Traitements] Mon titre explicite et concis`.
+
+La description du ticket détaille et précise le propos. Il est possible d'ajouter des images, voire des fichiers. Veuillez apporter un maximum d'informations pour permettre un traitement efficace de celui-ci.
+
+## Proposer un développement d'une fonctionnalité
+
+Il est possible de proposer un développement que ce soit pour le correctif d'un problème, pour l'amélioration de Madis, ou encore le développement de nouvelles fonctionnalités.
+
+### 1. Création d'un ticket
+
+En général, avant de réaliser des développements, il est préférable de commencer par [créer un ticket](#signaler-un-problème-ou-une-suggestion-damélioration) regroupant vos intentions de développement pour le partager au reste de la communauté et de la faire réagir. Cela permet par exemple, d'anticiper le fait qu'une fonctionnalité ou un correctif ne corresponde pas à Madis et à ses utilisateurs, ou soit incomplète.
+
+La discussion se fait sous forme de commentaires du ticket. Pour les contributeurs ayant un peu d'expérience, il est suggéré de mettre à jour la description de l'issue au gré de la discussion.
+
+### 2. Développements
+
+Dans les recommandations de travail collaboratif, il est proposé de créer une nouvelle branche à partir de la `develop` pour chaque nouveau travail. Par convention, il est conseillé de préfixer le nom la branche nouvellement créée par l'id du ticket associé.
+
+Avant tout développement, vous devez suivre et respecter l'[architecture et la qualité du code existant](doc/developpement/2-architecture-et-qualite.md#architecture-et-qualité), de plus il est important de respecter plusieurs éléments :
+- Le projet Madis étant sous licence AGPLv3, tout ajout de librairie au projet Madis doit donc être conforme avec celle-ci ;
+- Les conventions de codage ;
+- La sécurité ;
+- L'accessibilité selon les [critères et tests du RGAA](https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/).
+
+Une fois le code développé et testé, vous devez pousser votre code vers le GitLab et faire un merge request de votre branche vers la branche `develop`. Gérer les éventuels conflits en les corrigeant. Lors du merge, vous devrez faire référence au ticket associé si ce n'est pas déjà le cas, et éventuellement apporter des informations détaillées de votre développement.
+
+### 3. Traitement de la demande de fusion par les mainteneurs
+
+Le lancement de la merge request génère une notification aux mainteneurs. Ces derniers traitent la merge request. Une phase de recettage est réalisée, et un nouvel espace de discussion est possible entre mainteneur et développeur.
+
+Si tout est conforme, le mainteneur valide la merge request et le code est passé dans la branche develop. Celui-ci sera alors intégré directement dans une nouvelle version Madis, ou dans une version future.
diff --git a/README.md b/README.md
index b15c3803423bf67337245e69d3f81c186ba57728..87893dd23c2aa2393c6ce8cee87cda8ee07b9e7b 100644
--- a/README.md
+++ b/README.md
@@ -1,45 +1,21 @@
 # Madis
 
-
-[![CI](https://gitlab.adullact.net/soluris/madis/badges/master/pipeline.svg?style=flat)](https://example.gitlab.adullact.net/soluris/madis/badges/commits/master)
-[![coverage](https://gitlab.adullact.net/soluris/madis/badges/master/coverage.svg?style=flat)](https://gitlab.adullact.net/soluris/madis/)
-
-Accompagnement dans la gestion du Règlement Général à la Protection des Données (RGPD). 
-
-# Table des matières
-
-- [Installation de MADIS](doc/installation)
-    - [Pré-requis pour lancer l'installation de MADIS](doc/installation/1-pre-requis.md)
-    - [Configurer les services (NGINX, ...)](doc/installation/2-configurer-les-services.md)
-    - [Cloner le dépôt de code MADIS depuis GIT](doc/installation/3-cloner-le-depot-git-de-madis.md)
-    - [Configurer MADIS et effectuer son premier lancement](doc/installation/4-premiere-configuration-de-madis.md)
-    - [Paramétrage complémentaire](doc/installation/5-parametrages-complementaires.md)
-    
-- [Gestion de l'application](doc/gestion-application)
-    - [Requêtes SQL](doc/gestion-application/1-requetes-sql.md)
-
-- [Maintenance applicative & montées de versions](doc/maintenance-applicative)
-    - [Pré-requis pour lancer l'installation de MADIS](doc/maintenance-applicative/1-pre-requis.md)
-    - [Réaliser une montée/descente de version de MADIS](doc/maintenance-applicative/2-realiser-une-montee-de-version.md)
-    - [Descriptif des variables d'environnement de Symfony](doc/maintenance-applicative/4-descriptif-variables-environement-symfony.md)
-    - [Problèmes possibles et connus lors de mises à jour](doc/maintenance-applicative/3-problemes-possible-lors-de-mises-a-jour.md)
-    
-- [[DEVELOPPEURS] Documentation technique](doc/developpement)
-    - [Pré-requis pour lancer l'installation de MADIS](doc/developpement/1-pre-requis.md)
-    - [Architecture applicative](doc/developpement/2-architecture-applicative.md)
-    - [Les bonnes pratiques de développement](doc/developpement/3-bonnes-pratiques-de-developpement.md)
-    - [Effectuer la maintenance et les montées de versions](doc/developpement/4-maintenance-et-montee-de-version.md)
-    - [Qualité du code](doc/developpement/5-qualite-de-code.md)
-    - [Cycle de vie d'une contribution](doc/developpement/6-cycle-de-vie-contribution.md)
-
-## Stack technique
-Le projet est construit avec :
-* [Symfony 4.4](http://symfony.com/doc/current/index.html) - Comme framework backend
-* [AdminLTE 2](https://adminlte.io/) - Comme support CSS
-
-## Contributeurs historiques
-* __BOURLARD Donovan__ - Travail initial
-* __ANODE Stratégie Digitale__ - Maintenance et évolutions
-
-Des contributions ont peut-être été faites sur le projet.
-Pour analyser la liste des contributeurs, référez vous au dépôt de code sur Gitlab.  
+L'application Madis est une application pensée par [Soluris](https://www.soluris.fr) pour vous accompagner dans la gestion du Règlement Général à la Protection des Données (RGPD).
+
+## Table des matières
+
+- [Licence d'utilisation de Madis](LICENSE.md)
+- [Installation de Madis](doc/installation#madis-installation)
+    - [Installer Madis par script](doc/installation/1-installation-script.md#installer-madis-par-script)
+    - [Installer Madis manuellement](doc/installation/2-installation-manuelle.md#installation-manuelle)
+- [Journal des modifications (Changelog)](CHANGELOG.md#changelog)
+- [Documentation utilisateur](https://documentation-madis.readthedocs.io/fr/latest/docutilisateur.html)
+- [Maintenance et gestion applicative](doc/maintenance-et-gestion-application#maintenance-et-gestion-applicative)
+    - [Paramétrage complémentaire et .env](doc/maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md#paramétrage-complémentaire-et-env)
+    - [Mettre à jour Madis](doc/maintenance-et-gestion-application/2-mettre-a-jour-madis.md#mettre-à-jour-madis)
+    - [Requêtes SQL](doc/maintenance-et-gestion-application/3-requetes-sql.md#requêtes-sql)
+- [Documentation technique développeurs](doc/developpement#madis-documentation-technique-développeurs)
+    - [Lancer la stack de développement](doc/developpement/1-lancer-stack-developpement.md#lancer-la-stack-de-développement)
+    - [Architecture et qualité](doc/developpement/2-architecture-et-qualite.md#architecture-et-qualité)
+    - [Déployer une nouvelle version](doc/developpement/3-deployer-une-nouvelle-version.md#déployer-une-nouvelle-version)
+- [Contribuer au projet](CONTRIBUTING.md#contribution)
diff --git a/UPGRADE.md b/UPGRADE.md
deleted file mode 100644
index a18701ff86db56400f648469d942160f4abf9b0c..0000000000000000000000000000000000000000
--- a/UPGRADE.md
+++ /dev/null
@@ -1,113 +0,0 @@
-# Informations de mises à jour
-
-Il est possible que vous deviez réaliser des actions manuelles lors
-de vos montées de version de MADIS.
-
-De ce fait, répertoriez-vous à ce qui est écrit ci-dessous.
-
-**_Note: Si aucune trace n'est présente dans ce fichier pour la version
-que vous souhaitez installer, c'est que vous n'avez rien à faire._**
-
-De manière préventive, n'oubliez pas de faire un dump de votre base de
-données avant d'effectuer une montée de version.  
-
-
-# Passage en v1.6.0
-
-### Paramétrage de la subrogation d'un utilisateur
-
-Dans le `.env` vous pouvez modifier les informations liées à la subrogation des utilisateurs.
-Dans le cas où vous créez des données pour les structure,
-vous pouvez choisir si vous souhaitez faire afficher le nom de la personne sur qui l'admin s'est connectée
-ou le nom de l'admin lui même. 
-
-_Note : Vous pouvez aller regarder le fichier `.env.dist` en guise d'exemple._
-
-Pour cela, ajoutez la variable suivante dans votre `.env` et configurez la.
-- Mettre `1` si le nom de l'admin doit apparaitre
-- Mettre `0` si le nom de la personne sur laquelle l'admin s'est connecté doit apparaitre
-
-```text
-APP_IMPERSONATE_CREATOR_IS_ADMIN=0
-```
-
-
-# Passage en v1.5.0
-
-### Paramétrage des timeout Cookie
-
-Dans le `.env` vous pouvez modifier les informations liées à la durée de vie
-des cookies ainsi que la deconnexion au bout d'un certain temps d'inactivité
-
-Pour cela, ajoutez les variables suivantes dans votre `.env`.
-
-```text
-# Déconnexion pour une inactivité au bout de 1h30 (en secondes)
-APP_COOKIE_IDLE_TIMEOUT=5400
-# Déxonnexion au bout de 4h (en secondes), même si j'utilise l'application
-APP_COOKIE_LIFETIME=14400
-```
-
-Il vous faudra également vérifier que dans votre fichier `php.ini`
-la variable `session.gc_maxlifetime` égale ou supérieure à votre durée d'inactivité.
-Le cas échéant, la session pourrait être supprimée pour inactivité par PHP et non par
-votre configuration de MADIS.
-
-Pour prendre connaissance de l'emplacement de votre fichier `php.ini`,
-utilisez la commande `php --ini`. Une fois modifié, il vous suffira de restarter votre PHP.
-
-
-
-# Passage en v1.4.0
-
-**Note d'attention :** Cette nouvelle version va modifier vos données présentes
-en Base de Données. Pensez à créer une sauvegarde de votre BDD au cas où.
-
-### Possibilité de configurer les logos & le fournisseur de service
-
-Dans le `.env` vous pouvez modifier les informations des logos et
-du fournisseur de service MADIS (si vous ne souhaitez modifier les
-informations, copiez les variables comme affichées dans l'exemple)
-
-Ajoutez les variables suivantes dans votre `.env`.
-
-```text
-APP_FOOTER_PROVIDER_NAME=SOLURIS
-APP_FOOTER_PROVIDER_URL="https://soluris.fr"
-APP_IMAGE_FAVICON_PATH="favicon.ico"
-APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="https://soluris.fr"
-APP_IMAGE_SIDEBAR_BOTTOM_PATH="images/soluris-logo-white.png"
-APP_IMAGE_SIDEBAR_REDUCED_PATH="images/icon-32x32.png"
-```
-
-_Note: Vous pourrez venir modifier ces variables plus tard._
-
-Si vous souhaitez ajouter vos propres images, le dossier `public/custom`
-n'est pas versionné dans GIT. 
-De ce fait, si vous souhaitez ajouter un favicon dans
-`public/custom/images/favicon.ico` par exemple, il vous suffira de changer
-`APP_IMAGE_FAVICON_PATH="favicon.ico"` par `APP_IMAGE_FAVICON_PATH="custom/images/favicon.ico"`
-(le dossier `public` étant déjà ciblé par défaut).
-
-Finissez par lancer la commande `bin/console cache:clear` pour que ces
-données soient appliquées
-
-
-
-# Passage en v1.3.1
-
-### Ajout de l'adresse du DPD moral / par défaut
- 
-Modifier le fichier `.env` pour y ajouter les 3 champs suivants,
-dans la section `symfony/framework-bundle` comme montré ci-dessous. 
-
-_Note: Vous pouvez vous aider du fichier `.env.dist`
-qui est le fichier de référence, avec des valeurs par défaut._
-
-```text
-###> symfony/framework-bundle ###
-APP_DPO_ADDRESS_CITY="Saintes"
-APP_DPO_ADDRESS_STREET="2 rue des Rochers"
-APP_DPO_ADDRESS_ZIP_CODE="17100"
-###< symfony/framework-bundle ###
-```
diff --git a/assets/css/app.scss b/assets/css/app.scss
index ff63b00cc7db957f6f167162952a5314ee7f8ee0..6a1eb919b2cdc35de911479d82fcb0d1eddcb9d9 100644
--- a/assets/css/app.scss
+++ b/assets/css/app.scss
@@ -1,13 +1,20 @@
 /* GLOBAL */
-a:focus, button:focus {
+a:focus, button:focus, input[type=submit] {
   outline: 1px dashed !important;
 }
+table a:hover,
+table a:focus {
+  text-decoration: underline;
+}
 .float-left {
   float: left;
 }
 .mt-2 {
   margin: 5px 0 0;
 }
+tbody th[scope] {
+  font-weight: initial;
+}
 
 /* Bootstrap v5.3 */
 .p-0 {
@@ -60,7 +67,7 @@ body > div.banner-impersonate {
     margin-left: 1em;
     font-size: small;
   }
-  div {
+  p {
     line-height: 50px;
   }
 }
@@ -85,6 +92,9 @@ a:not([href]).banner-impersonate {
     max-width: 2em;
     max-height: 2em;
   }
+  .logo-lg img {
+    width: 65%;
+  }
   .sidebar-toggle:before {
     content: "";
   }
@@ -144,7 +154,7 @@ button.header-menu-active {
 .footer-public > footer {
   margin-left:0;
 }
-footer p a {
+footer a {
   text-decoration: underline;
 }
 
@@ -173,6 +183,7 @@ footer p a {
   }
   li.header {
     padding: 0 0 0 15px;
+    color: #b8c7ce !important;
   }
 }
 .sidebar-mini.sidebar-collapse .main-sidebar > .sidebar > .sidebar-menu li.header:hover {
@@ -205,6 +216,33 @@ footer p a {
     margin-left: -15px !important;
 }
 
+/* Breadcrumb */
+.content-header .breadcrumb a {
+  color:#444;
+  text-decoration:none;
+  display:inline-block;
+  &:hover,
+	&:focus {
+		text-decoration: underline;
+	}
+}
+.content-header .breadcrumb li {
+  padding: 0;
+}
+.content-header .breadcrumb a > .fa,
+.content-header .breadcrumb a > .glyphicon,
+.content-header .breadcrumb a >.ion {
+  margin-right:5px;
+}
+.content-header .breadcrumb li+li:before {
+  content:'>\00a0';
+  padding: 0 5px;
+  color: #ccc;
+}
+.breadcrumb li.active {
+  color: #726C6C;
+}
+
 /* Form */
 .form-group>label.required:after,
 thead th.required:after {
@@ -283,6 +321,9 @@ textarea.textareaheight {
 .content-wrapper.public{
   margin-left: 0;
 }
+#table_info {
+  display: flex;
+}
 
 /* DatePicker */
 .daterangepicker {
@@ -572,7 +613,6 @@ div.dt-button-collection {
   }
 }
 
-
 button.dt-button, div.dt-button, a.dt-button {
   position: relative;
   display: inline-block;
@@ -604,27 +644,30 @@ button.dt-button, div.dt-button, a.dt-button {
   text-overflow: ellipsis;
 }
 
-  /* ---------- NOTIFICATIONS ---------- */
-
-  #notifications i.fa-bell {
-    font-size: 16px;
-  }
-  #notifications .badge {
-    position: relative;
-    top: -10px;
-    left: -5px;
-  }
-  #notifications .dropdown-large{
-    min-width:550px;
-  }
-  #notifications .dropdown-large a {
-    color: #3c8dbc!important;
-  }
-  #notifications .single-notification {
-    background-color : #deedf6;
-  }
+/* ---------- NOTIFICATIONS ---------- */
+#notifications i.fa-bell {
+  font-size: 16px;
+}
+#notifications .badge {
+  position: relative;
+  top: -10px;
+  left: -5px;
+}
+#notifications .dropdown-large {
+  min-width:550px;
+}
+#notifications .single-notification {
+  background-color : #deedf6;
+}
+.notification-link-underline a:hover,
+.notification-link-underline a:focus {
+  text-decoration: underline;
+}
 
-  /* -------- LOGIN PAGE -------------- */
+/* -------- LOGIN PAGE -------------- */
+.login-logo img {
+  width: 80%;
+}
 #sso_login {
   border-top: 1px solid #666;
   margin-top: 20px;
diff --git a/assets/js/app.js b/assets/js/app.js
index 545f217523a507f47408443f017cac8de9c9e89d..ba002eec85a93e21cf5b00f4312abdec1a86cfe7 100644
--- a/assets/js/app.js
+++ b/assets/js/app.js
@@ -284,9 +284,8 @@ window.modifyDatatable = function () {
         var el = $(this)
         var id = el.attr('id')
         var cls = el.attr('class')
-        el.wrap( "<nav></nav>" );
+        el.wrap( "<nav role='navigation' aria-label='Pagination'></nav>" );
     })
-
 }
 
 function traiterBoutons() {
diff --git a/composer.json b/composer.json
index 52abf3ec03ef48b41631de30e4c7058db4467668..58267dd9058d1c6068dfaab87cad4355d4d18c6e 100755
--- a/composer.json
+++ b/composer.json
@@ -34,7 +34,7 @@
         "nelmio/cors-bundle": "^2.1",
         "oro/doctrine-extensions": "^2.0",
         "phpdocumentor/reflection-docblock": "^5",
-        "phpoffice/phpword": "^1.0",
+        "phpoffice/phpword": "1.1.*",
         "phpspec/prophecy-phpunit": "^2.0",
         "ramsey/uuid": "^4.6",
         "ramsey/uuid-doctrine": "^1.8",
diff --git a/composer.lock b/composer.lock
index ec69cd71a94c09787d6e630f667fe174fa829467..690840d54df43bb77ad89db162c7b07ed02b2294 100755
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "1e02d809c59863a255355423d0f0e7c3",
+    "content-hash": "7252ff269b962df1b0b906220647da39",
     "packages": [
         {
             "name": "api-platform/core",
-            "version": "v2.7.16",
+            "version": "v2.7.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/api-platform/core.git",
-                "reference": "e6f77e20b4ed9cb3e44c7398d6cda971d32190b0"
+                "reference": "6ff3e05d97602cdaa3b329112ca21f7e916a504d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/api-platform/core/zipball/e6f77e20b4ed9cb3e44c7398d6cda971d32190b0",
-                "reference": "e6f77e20b4ed9cb3e44c7398d6cda971d32190b0",
+                "url": "https://api.github.com/repos/api-platform/core/zipball/6ff3e05d97602cdaa3b329112ca21f7e916a504d",
+                "reference": "6ff3e05d97602cdaa3b329112ca21f7e916a504d",
                 "shasum": ""
             },
             "require": {
@@ -165,15 +165,9 @@
             ],
             "support": {
                 "issues": "https://github.com/api-platform/core/issues",
-                "source": "https://github.com/api-platform/core/tree/v2.7.16"
+                "source": "https://github.com/api-platform/core/tree/v2.7.18"
             },
-            "funding": [
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/api-platform/core",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2023-10-06T10:13:25+00:00"
+            "time": "2024-03-19T07:17:43+00:00"
         },
         {
             "name": "beberlei/doctrineextensions",
@@ -283,25 +277,25 @@
         },
         {
             "name": "brick/math",
-            "version": "0.11.0",
+            "version": "0.12.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/brick/math.git",
-                "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478"
+                "reference": "f510c0a40911935b77b86859eb5223d58d660df1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478",
-                "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478",
+                "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1",
+                "reference": "f510c0a40911935b77b86859eb5223d58d660df1",
                 "shasum": ""
             },
             "require": {
-                "php": "^8.0"
+                "php": "^8.1"
             },
             "require-dev": {
                 "php-coveralls/php-coveralls": "^2.2",
-                "phpunit/phpunit": "^9.0",
-                "vimeo/psalm": "5.0.0"
+                "phpunit/phpunit": "^10.1",
+                "vimeo/psalm": "5.16.0"
             },
             "type": "library",
             "autoload": {
@@ -321,12 +315,17 @@
                 "arithmetic",
                 "bigdecimal",
                 "bignum",
+                "bignumber",
                 "brick",
-                "math"
+                "decimal",
+                "integer",
+                "math",
+                "mathematics",
+                "rational"
             ],
             "support": {
                 "issues": "https://github.com/brick/math/issues",
-                "source": "https://github.com/brick/math/tree/0.11.0"
+                "source": "https://github.com/brick/math/tree/0.12.1"
             },
             "funding": [
                 {
@@ -334,7 +333,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2023-01-15T23:15:59+00:00"
+            "time": "2023-11-29T23:19:16+00:00"
         },
         {
             "name": "composer/package-versions-deprecated",
@@ -672,34 +671,32 @@
         },
         {
             "name": "doctrine/collections",
-            "version": "2.1.4",
+            "version": "1.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/collections.git",
-                "reference": "72328a11443a0de79967104ad36ba7b30bded134"
+                "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/collections/zipball/72328a11443a0de79967104ad36ba7b30bded134",
-                "reference": "72328a11443a0de79967104ad36ba7b30bded134",
+                "url": "https://api.github.com/repos/doctrine/collections/zipball/2b44dd4cbca8b5744327de78bafef5945c7e7b5e",
+                "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e",
                 "shasum": ""
             },
             "require": {
-                "doctrine/deprecations": "^1",
-                "php": "^8.1"
+                "doctrine/deprecations": "^0.5.3 || ^1",
+                "php": "^7.1.3 || ^8.0"
             },
             "require-dev": {
-                "doctrine/coding-standard": "^12",
-                "ext-json": "*",
-                "phpstan/phpstan": "^1.8",
-                "phpstan/phpstan-phpunit": "^1.0",
-                "phpunit/phpunit": "^9.5",
-                "vimeo/psalm": "^5.11"
+                "doctrine/coding-standard": "^9.0 || ^10.0",
+                "phpstan/phpstan": "^1.4.8",
+                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5",
+                "vimeo/psalm": "^4.22"
             },
             "type": "library",
             "autoload": {
                 "psr-4": {
-                    "Doctrine\\Common\\Collections\\": "src"
+                    "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -738,36 +735,22 @@
             ],
             "support": {
                 "issues": "https://github.com/doctrine/collections/issues",
-                "source": "https://github.com/doctrine/collections/tree/2.1.4"
+                "source": "https://github.com/doctrine/collections/tree/1.8.0"
             },
-            "funding": [
-                {
-                    "url": "https://www.doctrine-project.org/sponsorship.html",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://www.patreon.com/phpdoctrine",
-                    "type": "patreon"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2023-10-03T09:22:33+00:00"
+            "time": "2022-09-01T20:12:10+00:00"
         },
         {
             "name": "doctrine/common",
-            "version": "3.4.3",
+            "version": "3.4.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/common.git",
-                "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced"
+                "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/common/zipball/8b5e5650391f851ed58910b3e3d48a71062eeced",
-                "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced",
+                "url": "https://api.github.com/repos/doctrine/common/zipball/0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a",
+                "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a",
                 "shasum": ""
             },
             "require": {
@@ -829,7 +812,7 @@
             ],
             "support": {
                 "issues": "https://github.com/doctrine/common/issues",
-                "source": "https://github.com/doctrine/common/tree/3.4.3"
+                "source": "https://github.com/doctrine/common/tree/3.4.4"
             },
             "funding": [
                 {
@@ -845,7 +828,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-10-09T11:47:59+00:00"
+            "time": "2024-04-16T13:35:33+00:00"
         },
         {
             "name": "doctrine/dbal",
@@ -958,29 +941,25 @@
         },
         {
             "name": "doctrine/deprecations",
-            "version": "1.1.2",
+            "version": "v0.5.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/deprecations.git",
-                "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
+                "reference": "9504165960a1f83cc1480e2be1dd0a0478561314"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
-                "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
+                "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314",
+                "reference": "9504165960a1f83cc1480e2be1dd0a0478561314",
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1 || ^8.0"
+                "php": "^7.1|^8.0"
             },
             "require-dev": {
-                "doctrine/coding-standard": "^9",
-                "phpstan/phpstan": "1.4.10 || 1.10.15",
-                "phpstan/phpstan-phpunit": "^1.0",
-                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
-                "psalm/plugin-phpunit": "0.18.4",
-                "psr/log": "^1 || ^2 || ^3",
-                "vimeo/psalm": "4.30.0 || 5.12.0"
+                "doctrine/coding-standard": "^6.0|^7.0|^8.0",
+                "phpunit/phpunit": "^7.0|^8.0|^9.0",
+                "psr/log": "^1.0"
             },
             "suggest": {
                 "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
@@ -999,9 +978,9 @@
             "homepage": "https://www.doctrine-project.org/",
             "support": {
                 "issues": "https://github.com/doctrine/deprecations/issues",
-                "source": "https://github.com/doctrine/deprecations/tree/1.1.2"
+                "source": "https://github.com/doctrine/deprecations/tree/v0.5.3"
             },
-            "time": "2023-09-27T20:04:15+00:00"
+            "time": "2021-03-21T12:59:47+00:00"
         },
         {
             "name": "doctrine/doctrine-bundle",
@@ -1292,16 +1271,16 @@
         },
         {
             "name": "doctrine/inflector",
-            "version": "2.0.9",
+            "version": "2.0.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/inflector.git",
-                "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65"
+                "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65",
-                "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65",
+                "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+                "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc",
                 "shasum": ""
             },
             "require": {
@@ -1363,7 +1342,7 @@
             ],
             "support": {
                 "issues": "https://github.com/doctrine/inflector/issues",
-                "source": "https://github.com/doctrine/inflector/tree/2.0.9"
+                "source": "https://github.com/doctrine/inflector/tree/2.0.10"
             },
             "funding": [
                 {
@@ -1379,34 +1358,34 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-01-15T18:05:13+00:00"
+            "time": "2024-02-18T20:23:39+00:00"
         },
         {
             "name": "doctrine/instantiator",
-            "version": "2.0.0",
+            "version": "1.5.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0"
+                "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
-                "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
+                "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
                 "shasum": ""
             },
             "require": {
-                "php": "^8.1"
+                "php": "^7.1 || ^8.0"
             },
             "require-dev": {
-                "doctrine/coding-standard": "^11",
+                "doctrine/coding-standard": "^9 || ^11",
                 "ext-pdo": "*",
                 "ext-phar": "*",
-                "phpbench/phpbench": "^1.2",
-                "phpstan/phpstan": "^1.9.4",
-                "phpstan/phpstan-phpunit": "^1.3",
-                "phpunit/phpunit": "^9.5.27",
-                "vimeo/psalm": "^5.4"
+                "phpbench/phpbench": "^0.16 || ^1",
+                "phpstan/phpstan": "^1.4",
+                "phpstan/phpstan-phpunit": "^1",
+                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+                "vimeo/psalm": "^4.30 || ^5.4"
             },
             "type": "library",
             "autoload": {
@@ -1433,7 +1412,7 @@
             ],
             "support": {
                 "issues": "https://github.com/doctrine/instantiator/issues",
-                "source": "https://github.com/doctrine/instantiator/tree/2.0.0"
+                "source": "https://github.com/doctrine/instantiator/tree/1.5.0"
             },
             "funding": [
                 {
@@ -1449,37 +1428,35 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-12-30T00:23:10+00:00"
+            "time": "2022-12-30T00:15:36+00:00"
         },
         {
             "name": "doctrine/lexer",
-            "version": "2.1.0",
+            "version": "1.2.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/lexer.git",
-                "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124"
+                "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
-                "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
+                "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229",
+                "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229",
                 "shasum": ""
             },
             "require": {
-                "doctrine/deprecations": "^1.0",
                 "php": "^7.1 || ^8.0"
             },
             "require-dev": {
-                "doctrine/coding-standard": "^9 || ^10",
+                "doctrine/coding-standard": "^9.0",
                 "phpstan/phpstan": "^1.3",
                 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
-                "psalm/plugin-phpunit": "^0.18.3",
-                "vimeo/psalm": "^4.11 || ^5.0"
+                "vimeo/psalm": "^4.11"
             },
             "type": "library",
             "autoload": {
                 "psr-4": {
-                    "Doctrine\\Common\\Lexer\\": "src"
+                    "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1511,7 +1488,7 @@
             ],
             "support": {
                 "issues": "https://github.com/doctrine/lexer/issues",
-                "source": "https://github.com/doctrine/lexer/tree/2.1.0"
+                "source": "https://github.com/doctrine/lexer/tree/1.2.3"
             },
             "funding": [
                 {
@@ -1527,7 +1504,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-12-14T08:49:07+00:00"
+            "time": "2022-02-28T11:07:21+00:00"
         },
         {
             "name": "doctrine/migrations",
@@ -1627,34 +1604,34 @@
         },
         {
             "name": "doctrine/orm",
-            "version": "2.17.4",
+            "version": "2.14.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/orm.git",
-                "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d"
+                "reference": "a64f315dfeae5e50b17f132626fd9e9b4ec8985d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/orm/zipball/ccfc97c32f63aaa0988ac6aa42e71c5590bb794d",
-                "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d",
+                "url": "https://api.github.com/repos/doctrine/orm/zipball/a64f315dfeae5e50b17f132626fd9e9b4ec8985d",
+                "reference": "a64f315dfeae5e50b17f132626fd9e9b4ec8985d",
                 "shasum": ""
             },
             "require": {
                 "composer-runtime-api": "^2",
                 "doctrine/cache": "^1.12.1 || ^2.1.1",
-                "doctrine/collections": "^1.5 || ^2.1",
+                "doctrine/collections": "^1.5 || ^2.0",
                 "doctrine/common": "^3.0.3",
                 "doctrine/dbal": "^2.13.1 || ^3.2",
                 "doctrine/deprecations": "^0.5.3 || ^1",
                 "doctrine/event-manager": "^1.2 || ^2",
                 "doctrine/inflector": "^1.4 || ^2.0",
-                "doctrine/instantiator": "^1.3 || ^2",
-                "doctrine/lexer": "^2",
+                "doctrine/instantiator": "^1.3",
+                "doctrine/lexer": "^1.2.3 || ^2",
                 "doctrine/persistence": "^2.4 || ^3",
                 "ext-ctype": "*",
                 "php": "^7.1 || ^8.0",
                 "psr/cache": "^1 || ^2 || ^3",
-                "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0",
+                "symfony/console": "^4.2 || ^5.0 || ^6.0",
                 "symfony/polyfill-php72": "^1.23",
                 "symfony/polyfill-php80": "^1.16"
             },
@@ -1663,16 +1640,16 @@
             },
             "require-dev": {
                 "doctrine/annotations": "^1.13 || ^2",
-                "doctrine/coding-standard": "^9.0.2 || ^12.0",
+                "doctrine/coding-standard": "^9.0.2 || ^11.0",
                 "phpbench/phpbench": "^0.16.10 || ^1.0",
-                "phpstan/phpstan": "~1.4.10 || 1.10.35",
+                "phpstan/phpstan": "~1.4.10 || 1.10.6",
                 "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6",
                 "psr/log": "^1 || ^2 || ^3",
                 "squizlabs/php_codesniffer": "3.7.2",
-                "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0",
-                "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0",
-                "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
-                "vimeo/psalm": "4.30.0 || 5.16.0"
+                "symfony/cache": "^4.4 || ^5.4 || ^6.0",
+                "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2",
+                "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0",
+                "vimeo/psalm": "4.30.0 || 5.9.0"
             },
             "suggest": {
                 "ext-dom": "Provides support for XSD validation for XML mapping files",
@@ -1722,22 +1699,22 @@
             ],
             "support": {
                 "issues": "https://github.com/doctrine/orm/issues",
-                "source": "https://github.com/doctrine/orm/tree/2.17.4"
+                "source": "https://github.com/doctrine/orm/tree/2.14.3"
             },
-            "time": "2024-01-26T19:41:16+00:00"
+            "time": "2023-04-20T09:46:32+00:00"
         },
         {
             "name": "doctrine/persistence",
-            "version": "3.2.0",
+            "version": "3.3.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/persistence.git",
-                "reference": "63fee8c33bef740db6730eb2a750cd3da6495603"
+                "reference": "477da35bd0255e032826f440b94b3e37f2d56f42"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/persistence/zipball/63fee8c33bef740db6730eb2a750cd3da6495603",
-                "reference": "63fee8c33bef740db6730eb2a750cd3da6495603",
+                "url": "https://api.github.com/repos/doctrine/persistence/zipball/477da35bd0255e032826f440b94b3e37f2d56f42",
+                "reference": "477da35bd0255e032826f440b94b3e37f2d56f42",
                 "shasum": ""
             },
             "require": {
@@ -1806,7 +1783,7 @@
             ],
             "support": {
                 "issues": "https://github.com/doctrine/persistence/issues",
-                "source": "https://github.com/doctrine/persistence/tree/3.2.0"
+                "source": "https://github.com/doctrine/persistence/tree/3.3.2"
             },
             "funding": [
                 {
@@ -1822,20 +1799,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-05-17T18:32:04+00:00"
+            "time": "2024-03-12T14:54:36+00:00"
         },
         {
             "name": "doctrine/sql-formatter",
-            "version": "1.1.3",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/sql-formatter.git",
-                "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5"
+                "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/25a06c7bf4c6b8218f47928654252863ffc890a5",
-                "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5",
+                "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a321d114e0a18e6497f8a2cd6f890e000cc17ecc",
+                "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc",
                 "shasum": ""
             },
             "require": {
@@ -1872,32 +1849,32 @@
             ],
             "support": {
                 "issues": "https://github.com/doctrine/sql-formatter/issues",
-                "source": "https://github.com/doctrine/sql-formatter/tree/1.1.3"
+                "source": "https://github.com/doctrine/sql-formatter/tree/1.2.0"
             },
-            "time": "2022-05-23T21:33:49+00:00"
+            "time": "2023-08-16T21:49:04+00:00"
         },
         {
             "name": "egulias/email-validator",
-            "version": "4.0.2",
+            "version": "3.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/egulias/EmailValidator.git",
-                "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e"
+                "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e",
-                "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e",
+                "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7",
+                "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7",
                 "shasum": ""
             },
             "require": {
-                "doctrine/lexer": "^2.0 || ^3.0",
-                "php": ">=8.1",
-                "symfony/polyfill-intl-idn": "^1.26"
+                "doctrine/lexer": "^1.2|^2",
+                "php": ">=7.2",
+                "symfony/polyfill-intl-idn": "^1.15"
             },
             "require-dev": {
-                "phpunit/phpunit": "^10.2",
-                "vimeo/psalm": "^5.12"
+                "phpunit/phpunit": "^8.5.8|^9.3.3",
+                "vimeo/psalm": "^4"
             },
             "suggest": {
                 "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
@@ -1905,7 +1882,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.0.x-dev"
+                    "dev-master": "3.0.x-dev"
                 }
             },
             "autoload": {
@@ -1933,7 +1910,7 @@
             ],
             "support": {
                 "issues": "https://github.com/egulias/EmailValidator/issues",
-                "source": "https://github.com/egulias/EmailValidator/tree/4.0.2"
+                "source": "https://github.com/egulias/EmailValidator/tree/3.2.6"
             },
             "funding": [
                 {
@@ -1941,7 +1918,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2023-10-06T06:47:41+00:00"
+            "time": "2023-06-01T07:04:22+00:00"
         },
         {
             "name": "exercise/htmlpurifier-bundle",
@@ -2130,16 +2107,16 @@
         },
         {
             "name": "friendsofphp/proxy-manager-lts",
-            "version": "v1.0.16",
+            "version": "v1.0.18",
             "source": {
                 "type": "git",
                 "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git",
-                "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c"
+                "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/ecadbdc9052e4ad08c60c8a02268712e50427f7c",
-                "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c",
+                "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/2c8a6cffc3220e99352ad958fe7cf06bf6f7690f",
+                "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f",
                 "shasum": ""
             },
             "require": {
@@ -2196,7 +2173,7 @@
             ],
             "support": {
                 "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues",
-                "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.16"
+                "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.18"
             },
             "funding": [
                 {
@@ -2208,38 +2185,38 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-05-24T07:17:17+00:00"
+            "time": "2024-03-20T12:50:41+00:00"
         },
         {
             "name": "friendsofsymfony/ckeditor-bundle",
-            "version": "2.4.0",
+            "version": "2.5.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/FriendsOfSymfony/FOSCKEditorBundle.git",
-                "reference": "a4df4056b2832881e17b939e83f25406a6cc6414"
+                "reference": "9d4cd4f2db4d800164b9c3051e4bfdee21acb27f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/FriendsOfSymfony/FOSCKEditorBundle/zipball/a4df4056b2832881e17b939e83f25406a6cc6414",
-                "reference": "a4df4056b2832881e17b939e83f25406a6cc6414",
+                "url": "https://api.github.com/repos/FriendsOfSymfony/FOSCKEditorBundle/zipball/9d4cd4f2db4d800164b9c3051e4bfdee21acb27f",
+                "reference": "9d4cd4f2db4d800164b9c3051e4bfdee21acb27f",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
                 "ext-zip": "*",
-                "php": "^7.1|^8.0",
-                "symfony/asset": "^4.4 || ^5.0 || ^6.0",
-                "symfony/config": "^4.4 || ^5.0 || ^6.0",
-                "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0",
-                "symfony/expression-language": "^4.4 || ^5.0 || ^6.0",
-                "symfony/form": "^4.4 || ^5.0 || ^6.0",
-                "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0",
-                "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0",
-                "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0",
-                "symfony/options-resolver": "^4.4 || ^5.0 || ^6.0",
-                "symfony/property-access": "^4.4 || ^5.0 || ^6.0",
-                "symfony/routing": "^4.4 || ^5.0 || ^6.0",
-                "symfony/twig-bundle": "^4.4 || ^5.0 || ^6.0",
+                "php": "^8.0",
+                "symfony/asset": "^5.4 || ^6.0 || ^7.0",
+                "symfony/config": "^5.4 || ^6.0 || ^7.0",
+                "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0",
+                "symfony/expression-language": "^5.4 || ^6.0 || ^7.0",
+                "symfony/form": "^5.4 || ^6.0 || ^7.0",
+                "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0",
+                "symfony/http-foundation": "^5.4 || ^6.0 || ^7.0",
+                "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0",
+                "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0",
+                "symfony/property-access": "^5.4 || ^6.0 || ^7.0",
+                "symfony/routing": "^5.4 || ^6.0 || ^7.0",
+                "symfony/twig-bundle": "^5.4 || ^6.0 || ^7.0",
                 "twig/twig": "^2.4 || ^3.0"
             },
             "conflict": {
@@ -2247,11 +2224,11 @@
                 "sebastian/exporter": "<2.0.0"
             },
             "require-dev": {
-                "friendsofphp/php-cs-fixer": "^2.0",
-                "matthiasnoback/symfony-dependency-injection-test": "^3.0 || ^4.0",
-                "symfony/console": "^4.4 || ^5.0 || ^6.0",
-                "symfony/phpunit-bridge": "^4.4 || ^5.0 || ^6.0",
-                "symfony/yaml": "^4.4 || ^5.0 || ^6.0"
+                "friendsofphp/php-cs-fixer": "^3.41",
+                "matthiasnoback/symfony-dependency-injection-test": "^4.0 || ^5.0",
+                "symfony/console": "^5.4 || ^6.0 || ^7.0",
+                "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0",
+                "symfony/yaml": "^5.4 || ^6.0 || ^7.0"
             },
             "suggest": {
                 "egeloen/form-extra-bundle": "Allows to load CKEditor asynchronously"
@@ -2287,9 +2264,9 @@
             ],
             "support": {
                 "issues": "https://github.com/FriendsOfSymfony/FOSCKEditorBundle/issues",
-                "source": "https://github.com/FriendsOfSymfony/FOSCKEditorBundle/tree/2.4.0"
+                "source": "https://github.com/FriendsOfSymfony/FOSCKEditorBundle/tree/2.5.0"
             },
-            "time": "2022-01-07T12:34:18+00:00"
+            "time": "2024-01-23T15:35:55+00:00"
         },
         {
             "name": "gedmo/doctrine-extensions",
@@ -2918,47 +2895,47 @@
         },
         {
             "name": "jms/serializer",
-            "version": "3.29.1",
+            "version": "3.24.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/schmittjoh/serializer.git",
-                "reference": "111451f43abb448ce297361a8ab96a9591e848cd"
+                "reference": "bd18f0a6ee4d75515b33091afa3333e100e0be43"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/111451f43abb448ce297361a8ab96a9591e848cd",
-                "reference": "111451f43abb448ce297361a8ab96a9591e848cd",
+                "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/bd18f0a6ee4d75515b33091afa3333e100e0be43",
+                "reference": "bd18f0a6ee4d75515b33091afa3333e100e0be43",
                 "shasum": ""
             },
             "require": {
-                "doctrine/annotations": "^1.14 || ^2.0",
-                "doctrine/instantiator": "^1.3.1 || ^2.0",
-                "doctrine/lexer": "^2.0 || ^3.0",
+                "doctrine/annotations": "^1.13 || ^2.0",
+                "doctrine/instantiator": "^1.0.3 || ^2.0",
+                "doctrine/lexer": "^1.1 || ^2",
                 "jms/metadata": "^2.6",
-                "php": "^7.2 || ^8.0",
-                "phpstan/phpdoc-parser": "^1.20"
+                "php": "^7.2||^8.0",
+                "phpstan/phpdoc-parser": "^0.4 || ^0.5 || ^1.0"
             },
             "require-dev": {
-                "doctrine/coding-standard": "^12.0",
-                "doctrine/orm": "^2.14 || ^3.0",
-                "doctrine/persistence": "^2.5.2 || ^3.0",
-                "doctrine/phpcr-odm": "^1.5.2 || ^2.0",
+                "doctrine/coding-standard": "^8.1",
+                "doctrine/orm": "~2.1",
+                "doctrine/persistence": "^1.3.3|^2.0|^3.0",
+                "doctrine/phpcr-odm": "^1.3|^2.0",
                 "ext-pdo_sqlite": "*",
-                "jackalope/jackalope-doctrine-dbal": "^1.3",
-                "ocramius/proxy-manager": "^1.0 || ^2.0",
+                "jackalope/jackalope-doctrine-dbal": "^1.1.5",
+                "ocramius/proxy-manager": "^1.0|^2.0",
                 "phpbench/phpbench": "^1.0",
                 "phpstan/phpstan": "^1.0.2",
-                "phpunit/phpunit": "^8.5.21 || ^9.0 || ^10.0",
-                "psr/container": "^1.0 || ^2.0",
-                "symfony/dependency-injection": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
-                "symfony/expression-language": "^3.2 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
-                "symfony/filesystem": "^4.2 || ^5.0 || ^6.0 || ^7.0",
-                "symfony/form": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
-                "symfony/translation": "^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
-                "symfony/uid": "^5.1 || ^6.0 || ^7.0",
-                "symfony/validator": "^3.1.9 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
-                "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
-                "twig/twig": "^1.34 || ^2.4 || ^3.0"
+                "phpunit/phpunit": "^8.5.21||^9.0||^10.0",
+                "psr/container": "^1.0|^2.0",
+                "symfony/dependency-injection": "^3.0|^4.0|^5.0|^6.0",
+                "symfony/expression-language": "^3.2|^4.0|^5.0|^6.0",
+                "symfony/filesystem": "^3.0|^4.0|^5.0|^6.0",
+                "symfony/form": "^3.0|^4.0|^5.0|^6.0",
+                "symfony/translation": "^3.0|^4.0|^5.0|^6.0",
+                "symfony/uid": "^5.1|^6.0",
+                "symfony/validator": "^3.1.9|^4.0|^5.0|^6.0",
+                "symfony/yaml": "^3.3|^4.0|^5.0|^6.0",
+                "twig/twig": "~1.34|~2.4|^3.0"
             },
             "suggest": {
                 "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.",
@@ -3002,7 +2979,7 @@
             ],
             "support": {
                 "issues": "https://github.com/schmittjoh/serializer/issues",
-                "source": "https://github.com/schmittjoh/serializer/tree/3.29.1"
+                "source": "https://github.com/schmittjoh/serializer/tree/3.24.0"
             },
             "funding": [
                 {
@@ -3010,44 +2987,44 @@
                     "type": "github"
                 }
             ],
-            "time": "2023-12-14T15:25:09+00:00"
+            "time": "2023-06-04T20:28:00+00:00"
         },
         {
             "name": "knplabs/dictionary-bundle",
-            "version": "v3.4.0",
+            "version": "v3.5.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/KnpLabs/DictionaryBundle.git",
-                "reference": "2cd8ac26f7e81c136e714e20b59008528aa36618"
+                "reference": "bc4a766e29d7a0a7f7df04dd7e2da4aea9f292ab"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/KnpLabs/DictionaryBundle/zipball/2cd8ac26f7e81c136e714e20b59008528aa36618",
-                "reference": "2cd8ac26f7e81c136e714e20b59008528aa36618",
+                "url": "https://api.github.com/repos/KnpLabs/DictionaryBundle/zipball/bc4a766e29d7a0a7f7df04dd7e2da4aea9f292ab",
+                "reference": "bc4a766e29d7a0a7f7df04dd7e2da4aea9f292ab",
                 "shasum": ""
             },
             "require": {
-                "php": ">=8.0",
-                "symfony/config": "^5.4 || ^6.2@dev",
-                "symfony/dependency-injection": "^5.4 || ^6.2@dev",
-                "symfony/form": "^5.4 || ^6.2@dev",
-                "symfony/http-foundation": "^5.4 || ^6.2@dev",
-                "symfony/http-kernel": "^5.4 || ^6.2@dev",
-                "symfony/validator": "^5.4 || ^6.2@dev",
+                "php": ">=8.1",
+                "symfony/config": "^5.4 || ^6.4 || ^7.0@dev",
+                "symfony/dependency-injection": "^5.4 || ^6.4 || ^7.0@dev",
+                "symfony/form": "^5.4 || ^6.4 || ^7.0@dev",
+                "symfony/http-foundation": "^5.4 || ^6.4 || ^7.0@dev",
+                "symfony/http-kernel": "^5.4 || ^6.4 || ^7.0@dev",
+                "symfony/validator": "^5.4 || ^6.4 || ^7.0@dev",
                 "twig/twig": "^2.15.3 || ^3.4.3"
             },
             "require-dev": {
-                "fakerphp/faker": "^1.20",
-                "friends-of-phpspec/phpspec-code-coverage": "^6.1",
-                "friendsofphp/php-cs-fixer": "^3.13",
-                "pedrotroller/php-cs-custom-fixer": "^2.28",
-                "phpspec/phpspec": "^7.2",
-                "phpspec/prophecy": "^1.15",
-                "phpstan/phpstan": "^1.9",
-                "rector/rector": "^0.14.7",
-                "symfony/twig-bridge": "^5.4 || ^6.2@dev",
-                "symfony/var-dumper": "^5.4 || ^6.2@dev",
-                "webmozart/assert": "^1.11"
+                "fakerphp/faker": "1.23.1",
+                "friends-of-phpspec/phpspec-code-coverage": "6.3.0",
+                "friendsofphp/php-cs-fixer": "3.49.0",
+                "pedrotroller/php-cs-custom-fixer": "2.33.0",
+                "phpspec/phpspec": "7.5.0",
+                "phpspec/prophecy": "1.18.0",
+                "phpstan/phpstan": "1.10.59",
+                "rector/rector": "1.0.1",
+                "symfony/twig-bridge": "^5.4 || ^6.4 || ^7.0@dev",
+                "symfony/var-dumper": "^5.4 || ^6.4 || ^7.0@dev",
+                "webmozart/assert": "1.11.0"
             },
             "type": "symfony-bundle",
             "extra": {
@@ -3080,9 +3057,9 @@
             ],
             "support": {
                 "issues": "https://github.com/KnpLabs/DictionaryBundle/issues",
-                "source": "https://github.com/KnpLabs/DictionaryBundle/tree/v3.4.0"
+                "source": "https://github.com/KnpLabs/DictionaryBundle/tree/v3.5.0"
             },
-            "time": "2023-06-15T14:38:50+00:00"
+            "time": "2024-02-23T16:12:59+00:00"
         },
         {
             "name": "knplabs/gaufrette",
@@ -3289,16 +3266,16 @@
         },
         {
             "name": "knplabs/knp-snappy-bundle",
-            "version": "v1.10.0",
+            "version": "v1.10.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/KnpLabs/KnpSnappyBundle.git",
-                "reference": "0080ff4ad9526c08792823cf7566060ffba07ef6"
+                "reference": "24c61f0b52e8fff60b42b9fac5f2e776e22177e3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/KnpLabs/KnpSnappyBundle/zipball/0080ff4ad9526c08792823cf7566060ffba07ef6",
-                "reference": "0080ff4ad9526c08792823cf7566060ffba07ef6",
+                "url": "https://api.github.com/repos/KnpLabs/KnpSnappyBundle/zipball/24c61f0b52e8fff60b42b9fac5f2e776e22177e3",
+                "reference": "24c61f0b52e8fff60b42b9fac5f2e776e22177e3",
                 "shasum": ""
             },
             "require": {
@@ -3341,9 +3318,9 @@
             ],
             "support": {
                 "issues": "https://github.com/KnpLabs/KnpSnappyBundle/issues",
-                "source": "https://github.com/KnpLabs/KnpSnappyBundle/tree/v1.10.0"
+                "source": "https://github.com/KnpLabs/KnpSnappyBundle/tree/v1.10.1"
             },
-            "time": "2023-12-18T09:56:06+00:00"
+            "time": "2024-04-19T09:05:01+00:00"
         },
         {
             "name": "knplabs/knp-time-bundle",
@@ -3420,16 +3397,16 @@
         },
         {
             "name": "knpuniversity/oauth2-client-bundle",
-            "version": "v2.18.0",
+            "version": "v2.18.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/knpuniversity/oauth2-client-bundle.git",
-                "reference": "2f6c9342c711597e3b5f1f2468910336be5232d6"
+                "reference": "1d59f49f164805b45f95f92cf743781bc2ba7d2b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/2f6c9342c711597e3b5f1f2468910336be5232d6",
-                "reference": "2f6c9342c711597e3b5f1f2468910336be5232d6",
+                "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/1d59f49f164805b45f95f92cf743781bc2ba7d2b",
+                "reference": "1d59f49f164805b45f95f92cf743781bc2ba7d2b",
                 "shasum": ""
             },
             "require": {
@@ -3474,9 +3451,9 @@
             ],
             "support": {
                 "issues": "https://github.com/knpuniversity/oauth2-client-bundle/issues",
-                "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.18.0"
+                "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.18.1"
             },
-            "time": "2023-12-18T21:58:12+00:00"
+            "time": "2024-02-14T17:41:28+00:00"
         },
         {
             "name": "laminas/laminas-code",
@@ -3541,6 +3518,68 @@
             ],
             "time": "2023-10-18T10:00:55+00:00"
         },
+        {
+            "name": "laminas/laminas-escaper",
+            "version": "2.13.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/laminas/laminas-escaper.git",
+                "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba",
+                "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba",
+                "shasum": ""
+            },
+            "require": {
+                "ext-ctype": "*",
+                "ext-mbstring": "*",
+                "php": "~8.1.0 || ~8.2.0 || ~8.3.0"
+            },
+            "conflict": {
+                "zendframework/zend-escaper": "*"
+            },
+            "require-dev": {
+                "infection/infection": "^0.27.0",
+                "laminas/laminas-coding-standard": "~2.5.0",
+                "maglnet/composer-require-checker": "^3.8.0",
+                "phpunit/phpunit": "^9.6.7",
+                "psalm/plugin-phpunit": "^0.18.4",
+                "vimeo/psalm": "^5.9"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Laminas\\Escaper\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs",
+            "homepage": "https://laminas.dev",
+            "keywords": [
+                "escaper",
+                "laminas"
+            ],
+            "support": {
+                "chat": "https://laminas.dev/chat",
+                "docs": "https://docs.laminas.dev/laminas-escaper/",
+                "forum": "https://discourse.laminas.dev",
+                "issues": "https://github.com/laminas/laminas-escaper/issues",
+                "rss": "https://github.com/laminas/laminas-escaper/releases.atom",
+                "source": "https://github.com/laminas/laminas-escaper"
+            },
+            "funding": [
+                {
+                    "url": "https://funding.communitybridge.org/projects/laminas-project",
+                    "type": "community_bridge"
+                }
+            ],
+            "time": "2023-10-10T08:35:13+00:00"
+        },
         {
             "name": "lcobucci/clock",
             "version": "3.0.0",
@@ -3607,16 +3646,16 @@
         },
         {
             "name": "lcobucci/jwt",
-            "version": "5.2.0",
+            "version": "5.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/lcobucci/jwt.git",
-                "reference": "0ba88aed12c04bd2ed9924f500673f32b67a6211"
+                "reference": "08071d8d2c7f4b00222cc4b1fb6aa46990a80f83"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/lcobucci/jwt/zipball/0ba88aed12c04bd2ed9924f500673f32b67a6211",
-                "reference": "0ba88aed12c04bd2ed9924f500673f32b67a6211",
+                "url": "https://api.github.com/repos/lcobucci/jwt/zipball/08071d8d2c7f4b00222cc4b1fb6aa46990a80f83",
+                "reference": "08071d8d2c7f4b00222cc4b1fb6aa46990a80f83",
                 "shasum": ""
             },
             "require": {
@@ -3664,7 +3703,7 @@
             ],
             "support": {
                 "issues": "https://github.com/lcobucci/jwt/issues",
-                "source": "https://github.com/lcobucci/jwt/tree/5.2.0"
+                "source": "https://github.com/lcobucci/jwt/tree/5.3.0"
             },
             "funding": [
                 {
@@ -3676,7 +3715,7 @@
                     "type": "patreon"
                 }
             ],
-            "time": "2023-11-20T21:17:42+00:00"
+            "time": "2024-04-11T23:07:54+00:00"
         },
         {
             "name": "league/oauth2-client",
@@ -3750,22 +3789,22 @@
         },
         {
             "name": "lexik/jwt-authentication-bundle",
-            "version": "v2.20.3",
+            "version": "v2.21.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/lexik/LexikJWTAuthenticationBundle.git",
-                "reference": "a196d68d07dd5486a523cc3415620badbb5d25c2"
+                "reference": "d57159da3f572b42ab609630edb6e27d71b37eca"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/lexik/LexikJWTAuthenticationBundle/zipball/a196d68d07dd5486a523cc3415620badbb5d25c2",
-                "reference": "a196d68d07dd5486a523cc3415620badbb5d25c2",
+                "url": "https://api.github.com/repos/lexik/LexikJWTAuthenticationBundle/zipball/d57159da3f572b42ab609630edb6e27d71b37eca",
+                "reference": "d57159da3f572b42ab609630edb6e27d71b37eca",
                 "shasum": ""
             },
             "require": {
                 "ext-openssl": "*",
                 "lcobucci/clock": "^1.2|^2.0|^3.0",
-                "lcobucci/jwt": "^3.4|^4.1|^5.0",
+                "lcobucci/jwt": "^3.4.6|^4.1|^5.0",
                 "namshi/jose": "^7.2",
                 "php": ">=7.1",
                 "symfony/config": "^4.4|^5.4|^6.0|^7.0",
@@ -3787,7 +3826,7 @@
                 "symfony/dom-crawler": "^5.4|^6.0|^7.0",
                 "symfony/filesystem": "^4.4|^5.4|^6.0|^7.0",
                 "symfony/framework-bundle": "^4.4|^5.4|^6.0|^7.0",
-                "symfony/phpunit-bridge": "^4.4|^5.4|^6.0|^7.0",
+                "symfony/phpunit-bridge": "^7.0.1",
                 "symfony/security-guard": "^4.4|^5.4|^6.0|^7.0",
                 "symfony/var-dumper": "^4.4|^5.4|^6.0|^7.0",
                 "symfony/yaml": "^4.4|^5.4|^6.0|^7.0"
@@ -3853,7 +3892,7 @@
             ],
             "support": {
                 "issues": "https://github.com/lexik/LexikJWTAuthenticationBundle/issues",
-                "source": "https://github.com/lexik/LexikJWTAuthenticationBundle/tree/v2.20.3"
+                "source": "https://github.com/lexik/LexikJWTAuthenticationBundle/tree/v2.21.0"
             },
             "funding": [
                 {
@@ -3865,7 +3904,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-14T15:58:11+00:00"
+            "time": "2024-04-27T15:46:45+00:00"
         },
         {
             "name": "myclabs/deep-copy",
@@ -4057,21 +4096,21 @@
         },
         {
             "name": "nikic/php-parser",
-            "version": "v4.18.0",
+            "version": "v4.19.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999"
+                "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999",
-                "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b",
+                "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b",
                 "shasum": ""
             },
             "require": {
                 "ext-tokenizer": "*",
-                "php": ">=7.0"
+                "php": ">=7.1"
             },
             "require-dev": {
                 "ircmaxell/php-yacc": "^0.0.7",
@@ -4107,9 +4146,9 @@
             ],
             "support": {
                 "issues": "https://github.com/nikic/PHP-Parser/issues",
-                "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0"
+                "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1"
             },
-            "time": "2023-12-10T21:03:43+00:00"
+            "time": "2024-03-17T08:10:35+00:00"
         },
         {
             "name": "oro/doctrine-extensions",
@@ -4224,20 +4263,21 @@
         },
         {
             "name": "phar-io/manifest",
-            "version": "2.0.3",
+            "version": "2.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phar-io/manifest.git",
-                "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+                "reference": "54750ef60c58e43759730615a392c31c80e23176"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
-                "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+                "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176",
+                "reference": "54750ef60c58e43759730615a392c31c80e23176",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
+                "ext-libxml": "*",
                 "ext-phar": "*",
                 "ext-xmlwriter": "*",
                 "phar-io/version": "^3.0.1",
@@ -4278,9 +4318,15 @@
             "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
             "support": {
                 "issues": "https://github.com/phar-io/manifest/issues",
-                "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+                "source": "https://github.com/phar-io/manifest/tree/2.0.4"
             },
-            "time": "2021-07-20T11:28:43+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/theseer",
+                    "type": "github"
+                }
+            ],
+            "time": "2024-03-03T12:33:53+00:00"
         },
         {
             "name": "phar-io/version",
@@ -4445,27 +4491,24 @@
         },
         {
             "name": "phpdocumentor/type-resolver",
-            "version": "1.8.0",
+            "version": "1.6.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc"
+                "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc",
-                "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
+                "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
                 "shasum": ""
             },
             "require": {
-                "doctrine/deprecations": "^1.0",
                 "php": "^7.4 || ^8.0",
-                "phpdocumentor/reflection-common": "^2.0",
-                "phpstan/phpdoc-parser": "^1.13"
+                "phpdocumentor/reflection-common": "^2.0"
             },
             "require-dev": {
                 "ext-tokenizer": "*",
-                "phpbench/phpbench": "^1.2",
                 "phpstan/extension-installer": "^1.1",
                 "phpstan/phpstan": "^1.8",
                 "phpstan/phpstan-phpunit": "^1.1",
@@ -4497,83 +4540,30 @@
             "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
             "support": {
                 "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
-                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0"
-            },
-            "time": "2024-01-11T11:49:22+00:00"
-        },
-        {
-            "name": "phpoffice/math",
-            "version": "0.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/PHPOffice/Math.git",
-                "reference": "f0f8cad98624459c540cdd61d2a174d834471773"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/PHPOffice/Math/zipball/f0f8cad98624459c540cdd61d2a174d834471773",
-                "reference": "f0f8cad98624459c540cdd61d2a174d834471773",
-                "shasum": ""
-            },
-            "require": {
-                "ext-dom": "*",
-                "ext-xml": "*",
-                "php": "^7.1|^8.0"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "^0.12.88 || ^1.0.0",
-                "phpunit/phpunit": "^7.0 || ^9.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "PhpOffice\\Math\\": "src/Math/",
-                    "Tests\\PhpOffice\\Math\\": "tests/Math/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Progi1984",
-                    "homepage": "https://lefevre.dev"
-                }
-            ],
-            "description": "Math - Manipulate Math Formula",
-            "homepage": "https://phpoffice.github.io/Math/",
-            "keywords": [
-                "MathML",
-                "officemathml",
-                "php"
-            ],
-            "support": {
-                "issues": "https://github.com/PHPOffice/Math/issues",
-                "source": "https://github.com/PHPOffice/Math/tree/0.1.0"
+                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2"
             },
-            "time": "2023-09-25T12:08:20+00:00"
+            "time": "2022-10-14T12:47:21+00:00"
         },
         {
             "name": "phpoffice/phpword",
-            "version": "1.2.0",
+            "version": "1.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/PHPOffice/PHPWord.git",
-                "reference": "e76b701ef538cb749641514fcbc31a68078550fa"
+                "reference": "90a55955e6a772bb4cd9b1ef6a7e88c8976c2561"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/e76b701ef538cb749641514fcbc31a68078550fa",
-                "reference": "e76b701ef538cb749641514fcbc31a68078550fa",
+                "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/90a55955e6a772bb4cd9b1ef6a7e88c8976c2561",
+                "reference": "90a55955e6a772bb4cd9b1ef6a7e88c8976c2561",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-json": "*",
                 "ext-xml": "*",
-                "php": "^7.1|^8.0",
-                "phpoffice/math": "^0.1"
+                "laminas/laminas-escaper": ">=2.6",
+                "php": "^7.1|^8.0"
             },
             "require-dev": {
                 "dompdf/dompdf": "^2.0",
@@ -4583,9 +4573,8 @@
                 "friendsofphp/php-cs-fixer": "^3.3",
                 "mpdf/mpdf": "^8.1",
                 "phpmd/phpmd": "^2.13",
-                "phpstan/phpstan-phpunit": "@stable",
                 "phpunit/phpunit": ">=7.0",
-                "symfony/process": "^4.4 || ^5.0",
+                "symfony/process": "^4.4",
                 "tecnickcom/tcpdf": "^6.5"
             },
             "suggest": {
@@ -4631,7 +4620,7 @@
                 }
             ],
             "description": "PHPWord - A pure PHP library for reading and writing word processing documents (OOXML, ODF, RTF, HTML, PDF)",
-            "homepage": "https://phpoffice.github.io/PHPWord/",
+            "homepage": "https://phpword.readthedocs.io/",
             "keywords": [
                 "ISO IEC 29500",
                 "OOXML",
@@ -4659,9 +4648,9 @@
             ],
             "support": {
                 "issues": "https://github.com/PHPOffice/PHPWord/issues",
-                "source": "https://github.com/PHPOffice/PHPWord/tree/1.2.0"
+                "source": "https://github.com/PHPOffice/PHPWord/tree/1.1.0"
             },
-            "time": "2023-11-30T11:22:23+00:00"
+            "time": "2023-05-30T07:59:14+00:00"
         },
         {
             "name": "phpspec/prophecy",
@@ -4734,27 +4723,27 @@
         },
         {
             "name": "phpspec/prophecy-phpunit",
-            "version": "v2.1.0",
+            "version": "v2.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpspec/prophecy-phpunit.git",
-                "reference": "29f8114c2c319a4308e6b070902211e062efa392"
+                "reference": "16e1247e139434bce0bac09848bc5c8d882940fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/29f8114c2c319a4308e6b070902211e062efa392",
-                "reference": "29f8114c2c319a4308e6b070902211e062efa392",
+                "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/16e1247e139434bce0bac09848bc5c8d882940fc",
+                "reference": "16e1247e139434bce0bac09848bc5c8d882940fc",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.3 || ^8",
                 "phpspec/prophecy": "^1.18",
-                "phpunit/phpunit": "^9.1 || ^10.1"
+                "phpunit/phpunit": "^9.1 || ^10.1 || ^11.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.0-dev"
+                    "dev-master": "2.x-dev"
                 }
             },
             "autoload": {
@@ -4780,22 +4769,22 @@
             ],
             "support": {
                 "issues": "https://github.com/phpspec/prophecy-phpunit/issues",
-                "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.1.0"
+                "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.2.0"
             },
-            "time": "2023-12-08T12:48:02+00:00"
+            "time": "2024-03-01T08:33:58+00:00"
         },
         {
             "name": "phpstan/phpdoc-parser",
-            "version": "1.25.0",
+            "version": "1.28.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpstan/phpdoc-parser.git",
-                "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240"
+                "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240",
-                "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240",
+                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb",
+                "reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb",
                 "shasum": ""
             },
             "require": {
@@ -4827,22 +4816,22 @@
             "description": "PHPDoc parser with support for nullable, intersection and generic types",
             "support": {
                 "issues": "https://github.com/phpstan/phpdoc-parser/issues",
-                "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0"
+                "source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0"
             },
-            "time": "2024-01-04T17:06:16+00:00"
+            "time": "2024-04-03T18:51:33+00:00"
         },
         {
             "name": "phpunit/php-code-coverage",
-            "version": "9.2.30",
+            "version": "9.2.31",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089"
+                "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089",
-                "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965",
+                "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965",
                 "shasum": ""
             },
             "require": {
@@ -4899,7 +4888,7 @@
             "support": {
                 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
                 "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
-                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30"
+                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31"
             },
             "funding": [
                 {
@@ -4907,7 +4896,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2023-12-22T06:47:57+00:00"
+            "time": "2024-03-02T06:37:42+00:00"
         },
         {
             "name": "phpunit/php-file-iterator",
@@ -5152,16 +5141,16 @@
         },
         {
             "name": "phpunit/phpunit",
-            "version": "9.6.16",
+            "version": "9.6.19",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f"
+                "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f",
-                "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8",
+                "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8",
                 "shasum": ""
             },
             "require": {
@@ -5235,7 +5224,7 @@
             "support": {
                 "issues": "https://github.com/sebastianbergmann/phpunit/issues",
                 "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
-                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16"
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19"
             },
             "funding": [
                 {
@@ -5251,7 +5240,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-01-19T07:03:14+00:00"
+            "time": "2024-04-05T04:35:58+00:00"
         },
         {
             "name": "psr/cache",
@@ -5846,20 +5835,20 @@
         },
         {
             "name": "ramsey/uuid",
-            "version": "4.7.5",
+            "version": "4.7.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/ramsey/uuid.git",
-                "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e"
+                "reference": "91039bc1faa45ba123c4328958e620d382ec7088"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
-                "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
+                "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088",
+                "reference": "91039bc1faa45ba123c4328958e620d382ec7088",
                 "shasum": ""
             },
             "require": {
-                "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11",
+                "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12",
                 "ext-json": "*",
                 "php": "^8.0",
                 "ramsey/collection": "^1.2 || ^2.0"
@@ -5922,7 +5911,7 @@
             ],
             "support": {
                 "issues": "https://github.com/ramsey/uuid/issues",
-                "source": "https://github.com/ramsey/uuid/tree/4.7.5"
+                "source": "https://github.com/ramsey/uuid/tree/4.7.6"
             },
             "funding": [
                 {
@@ -5934,7 +5923,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-08T05:53:05+00:00"
+            "time": "2024-04-27T21:32:50+00:00"
         },
         {
             "name": "ramsey/uuid-doctrine",
@@ -6213,16 +6202,16 @@
         },
         {
             "name": "sebastian/cli-parser",
-            "version": "1.0.1",
+            "version": "1.0.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/cli-parser.git",
-                "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+                "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
-                "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+                "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
+                "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
                 "shasum": ""
             },
             "require": {
@@ -6257,7 +6246,7 @@
             "homepage": "https://github.com/sebastianbergmann/cli-parser",
             "support": {
                 "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
-                "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+                "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2"
             },
             "funding": [
                 {
@@ -6265,7 +6254,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2020-09-28T06:08:49+00:00"
+            "time": "2024-03-02T06:27:43+00:00"
         },
         {
             "name": "sebastian/code-unit",
@@ -6511,16 +6500,16 @@
         },
         {
             "name": "sebastian/diff",
-            "version": "4.0.5",
+            "version": "4.0.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/diff.git",
-                "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131"
+                "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
-                "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc",
+                "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc",
                 "shasum": ""
             },
             "require": {
@@ -6565,7 +6554,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/diff/issues",
-                "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5"
+                "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6"
             },
             "funding": [
                 {
@@ -6573,7 +6562,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2023-05-07T05:35:17+00:00"
+            "time": "2024-03-02T06:30:58+00:00"
         },
         {
             "name": "sebastian/environment",
@@ -6640,16 +6629,16 @@
         },
         {
             "name": "sebastian/exporter",
-            "version": "4.0.5",
+            "version": "4.0.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
+                "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
-                "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72",
+                "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72",
                 "shasum": ""
             },
             "require": {
@@ -6705,7 +6694,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/exporter/issues",
-                "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
+                "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6"
             },
             "funding": [
                 {
@@ -6713,20 +6702,20 @@
                     "type": "github"
                 }
             ],
-            "time": "2022-09-14T06:03:37+00:00"
+            "time": "2024-03-02T06:33:00+00:00"
         },
         {
             "name": "sebastian/global-state",
-            "version": "5.0.6",
+            "version": "5.0.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/global-state.git",
-                "reference": "bde739e7565280bda77be70044ac1047bc007e34"
+                "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34",
-                "reference": "bde739e7565280bda77be70044ac1047bc007e34",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
+                "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
                 "shasum": ""
             },
             "require": {
@@ -6769,7 +6758,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/global-state/issues",
-                "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6"
+                "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7"
             },
             "funding": [
                 {
@@ -6777,7 +6766,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2023-08-02T09:26:13+00:00"
+            "time": "2024-03-02T06:35:11+00:00"
         },
         {
             "name": "sebastian/lines-of-code",
@@ -7013,16 +7002,16 @@
         },
         {
             "name": "sebastian/resource-operations",
-            "version": "3.0.3",
+            "version": "3.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/resource-operations.git",
-                "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+                "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
-                "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
+                "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
                 "shasum": ""
             },
             "require": {
@@ -7034,7 +7023,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.0-dev"
+                    "dev-main": "3.0-dev"
                 }
             },
             "autoload": {
@@ -7055,8 +7044,7 @@
             "description": "Provides a list of PHP built-in functions that operate on resources",
             "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
             "support": {
-                "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
-                "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+                "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4"
             },
             "funding": [
                 {
@@ -7064,7 +7052,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2020-09-28T06:45:17+00:00"
+            "time": "2024-03-14T16:00:52+00:00"
         },
         {
             "name": "sebastian/type",
@@ -7252,16 +7240,16 @@
         },
         {
             "name": "symfony/asset",
-            "version": "v5.4.31",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/asset.git",
-                "reference": "edb2457a0ef615d420d2319851f679a4cc3b3635"
+                "reference": "929f31ba3d8662e41fc751327c897a9e3390f7a9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/asset/zipball/edb2457a0ef615d420d2319851f679a4cc3b3635",
-                "reference": "edb2457a0ef615d420d2319851f679a4cc3b3635",
+                "url": "https://api.github.com/repos/symfony/asset/zipball/929f31ba3d8662e41fc751327c897a9e3390f7a9",
+                "reference": "929f31ba3d8662e41fc751327c897a9e3390f7a9",
                 "shasum": ""
             },
             "require": {
@@ -7306,7 +7294,7 @@
             "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/asset/tree/v5.4.31"
+                "source": "https://github.com/symfony/asset/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -7322,20 +7310,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-10-31T07:58:33+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/cache",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/cache.git",
-                "reference": "b17f28169f7a2f2c0cddf2b044d729f5b75efe5a"
+                "reference": "982237e35079fdcc31ab724f06b6131992c4fd24"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/cache/zipball/b17f28169f7a2f2c0cddf2b044d729f5b75efe5a",
-                "reference": "b17f28169f7a2f2c0cddf2b044d729f5b75efe5a",
+                "url": "https://api.github.com/repos/symfony/cache/zipball/982237e35079fdcc31ab724f06b6131992c4fd24",
+                "reference": "982237e35079fdcc31ab724f06b6131992c4fd24",
                 "shasum": ""
             },
             "require": {
@@ -7403,7 +7391,7 @@
                 "psr6"
             ],
             "support": {
-                "source": "https://github.com/symfony/cache/tree/v5.4.34"
+                "source": "https://github.com/symfony/cache/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -7419,20 +7407,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-18T14:56:06+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/cache-contracts",
-            "version": "v2.5.2",
+            "version": "v2.5.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/cache-contracts.git",
-                "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc"
+                "reference": "fee6db04d913094e2fb55ff8e7db5685a8134463"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc",
-                "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc",
+                "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/fee6db04d913094e2fb55ff8e7db5685a8134463",
+                "reference": "fee6db04d913094e2fb55ff8e7db5685a8134463",
                 "shasum": ""
             },
             "require": {
@@ -7482,7 +7470,7 @@
                 "standards"
             ],
             "support": {
-                "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2"
+                "source": "https://github.com/symfony/cache-contracts/tree/v2.5.3"
             },
             "funding": [
                 {
@@ -7498,20 +7486,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-01-02T09:53:40+00:00"
+            "time": "2024-01-23T13:51:25+00:00"
         },
         {
             "name": "symfony/config",
-            "version": "v5.4.31",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/config.git",
-                "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9"
+                "reference": "62cec4a067931552624a9962002c210c502d42fd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/config/zipball/dd5ea39de228813aba0c23c3a4153da2a4cf3cd9",
-                "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9",
+                "url": "https://api.github.com/repos/symfony/config/zipball/62cec4a067931552624a9962002c210c502d42fd",
+                "reference": "62cec4a067931552624a9962002c210c502d42fd",
                 "shasum": ""
             },
             "require": {
@@ -7561,7 +7549,7 @@
             "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/config/tree/v5.4.31"
+                "source": "https://github.com/symfony/config/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -7577,20 +7565,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-09T08:22:43+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "4b4d8cd118484aa604ec519062113dd87abde18c"
+                "reference": "f3e591c48688a0cfa1a3296205926c05e84b22b1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/4b4d8cd118484aa604ec519062113dd87abde18c",
-                "reference": "4b4d8cd118484aa604ec519062113dd87abde18c",
+                "url": "https://api.github.com/repos/symfony/console/zipball/f3e591c48688a0cfa1a3296205926c05e84b22b1",
+                "reference": "f3e591c48688a0cfa1a3296205926c05e84b22b1",
                 "shasum": ""
             },
             "require": {
@@ -7660,7 +7648,7 @@
                 "terminal"
             ],
             "support": {
-                "source": "https://github.com/symfony/console/tree/v5.4.34"
+                "source": "https://github.com/symfony/console/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -7676,20 +7664,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-08T13:33:03+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/dependency-injection",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/dependency-injection.git",
-                "reference": "75d568165a65fa7d8124869ec7c3a90424352e6c"
+                "reference": "5b4505f2afbe1d11d43a3917d0c1c178a38f6f19"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/75d568165a65fa7d8124869ec7c3a90424352e6c",
-                "reference": "75d568165a65fa7d8124869ec7c3a90424352e6c",
+                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5b4505f2afbe1d11d43a3917d0c1c178a38f6f19",
+                "reference": "5b4505f2afbe1d11d43a3917d0c1c178a38f6f19",
                 "shasum": ""
             },
             "require": {
@@ -7749,7 +7737,7 @@
             "description": "Allows you to standardize and centralize the way objects are constructed in your application",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/dependency-injection/tree/v5.4.34"
+                "source": "https://github.com/symfony/dependency-injection/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -7765,7 +7753,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-28T09:31:38+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/deprecation-contracts",
@@ -7836,16 +7824,16 @@
         },
         {
             "name": "symfony/doctrine-bridge",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/doctrine-bridge.git",
-                "reference": "0c5e5ad8b8249a0a86f415e16695180c3b61be76"
+                "reference": "968c814f4e882d59708f3130f3a90f1fb40da321"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/0c5e5ad8b8249a0a86f415e16695180c3b61be76",
-                "reference": "0c5e5ad8b8249a0a86f415e16695180c3b61be76",
+                "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/968c814f4e882d59708f3130f3a90f1fb40da321",
+                "reference": "968c814f4e882d59708f3130f3a90f1fb40da321",
                 "shasum": ""
             },
             "require": {
@@ -7864,7 +7852,7 @@
                 "doctrine/orm": "<2.7.4",
                 "symfony/cache": "<5.4",
                 "symfony/dependency-injection": "<4.4",
-                "symfony/form": "<5.4.21|>=6,<6.2.7",
+                "symfony/form": "<5.4.38|>=6,<6.4.6",
                 "symfony/http-kernel": "<5",
                 "symfony/messenger": "<4.4",
                 "symfony/property-info": "<5",
@@ -7885,7 +7873,7 @@
                 "symfony/dependency-injection": "^4.4|^5.0|^6.0",
                 "symfony/doctrine-messenger": "^5.1|^6.0",
                 "symfony/expression-language": "^4.4|^5.0|^6.0",
-                "symfony/form": "^5.4.21|^6.2.7",
+                "symfony/form": "^5.4.38|^6.4.6",
                 "symfony/http-kernel": "^5.0|^6.0",
                 "symfony/messenger": "^4.4|^5.0|^6.0",
                 "symfony/property-access": "^4.4|^5.0|^6.0",
@@ -7932,7 +7920,7 @@
             "description": "Provides integration for Doctrine with various Symfony components",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.34"
+                "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -7948,20 +7936,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-14T14:38:10+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/dotenv",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/dotenv.git",
-                "reference": "07d75571cc7efc88f1aae96eddc5f671826c7327"
+                "reference": "9e29d603b2e21d82d0cdfa7b75c7303022e0b971"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dotenv/zipball/07d75571cc7efc88f1aae96eddc5f671826c7327",
-                "reference": "07d75571cc7efc88f1aae96eddc5f671826c7327",
+                "url": "https://api.github.com/repos/symfony/dotenv/zipball/9e29d603b2e21d82d0cdfa7b75c7303022e0b971",
+                "reference": "9e29d603b2e21d82d0cdfa7b75c7303022e0b971",
                 "shasum": ""
             },
             "require": {
@@ -8003,7 +7991,7 @@
                 "environment"
             ],
             "support": {
-                "source": "https://github.com/symfony/dotenv/tree/v5.4.34"
+                "source": "https://github.com/symfony/dotenv/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -8019,20 +8007,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-28T12:17:46+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/error-handler",
-            "version": "v5.4.29",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/error-handler.git",
-                "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078"
+                "reference": "9e02a6e831d6c2dbc5f96c8ff5314d453ecd53cd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/error-handler/zipball/328c6fcfd2f90b64c16efaf0ea67a311d672f078",
-                "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078",
+                "url": "https://api.github.com/repos/symfony/error-handler/zipball/9e02a6e831d6c2dbc5f96c8ff5314d453ecd53cd",
+                "reference": "9e02a6e831d6c2dbc5f96c8ff5314d453ecd53cd",
                 "shasum": ""
             },
             "require": {
@@ -8074,7 +8062,7 @@
             "description": "Provides tools to manage errors and ease debugging PHP code",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/error-handler/tree/v5.4.29"
+                "source": "https://github.com/symfony/error-handler/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -8090,20 +8078,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-09-06T21:54:06+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher.git",
-                "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3"
+                "reference": "d40fae9fd85c762b6ba378152fdd1157a85d7e4f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e3bca343efeb613f843c254e7718ef17c9bdf7a3",
-                "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d40fae9fd85c762b6ba378152fdd1157a85d7e4f",
+                "reference": "d40fae9fd85c762b6ba378152fdd1157a85d7e4f",
                 "shasum": ""
             },
             "require": {
@@ -8159,7 +8147,7 @@
             "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.34"
+                "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -8175,20 +8163,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-27T21:12:56+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/event-dispatcher-contracts",
-            "version": "v3.4.0",
+            "version": "v3.4.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/event-dispatcher-contracts.git",
-                "reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
+                "reference": "4e64b49bf370ade88e567de29465762e316e4224"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
-                "reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224",
+                "reference": "4e64b49bf370ade88e567de29465762e316e4224",
                 "shasum": ""
             },
             "require": {
@@ -8235,7 +8223,7 @@
                 "standards"
             ],
             "support": {
-                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0"
+                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2"
             },
             "funding": [
                 {
@@ -8251,20 +8239,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-05-23T14:45:45+00:00"
+            "time": "2024-01-23T14:51:35+00:00"
         },
         {
             "name": "symfony/expression-language",
-            "version": "v5.4.21",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/expression-language.git",
-                "reference": "501589522b844b8eecf012c133f0404f0eef77ac"
+                "reference": "3a24a58e4eebae5dc977bc7a27f633f9c5338416"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/expression-language/zipball/501589522b844b8eecf012c133f0404f0eef77ac",
-                "reference": "501589522b844b8eecf012c133f0404f0eef77ac",
+                "url": "https://api.github.com/repos/symfony/expression-language/zipball/3a24a58e4eebae5dc977bc7a27f633f9c5338416",
+                "reference": "3a24a58e4eebae5dc977bc7a27f633f9c5338416",
                 "shasum": ""
             },
             "require": {
@@ -8298,7 +8286,7 @@
             "description": "Provides an engine that can compile and evaluate expressions",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/expression-language/tree/v5.4.21"
+                "source": "https://github.com/symfony/expression-language/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -8314,27 +8302,28 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-02-14T08:03:56+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v5.4.25",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364"
+                "reference": "e6edd875d5d39b03de51f3c3951148cfa79a4d12"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364",
-                "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/e6edd875d5d39b03de51f3c3951148cfa79a4d12",
+                "reference": "e6edd875d5d39b03de51f3c3951148cfa79a4d12",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.2.5",
                 "symfony/polyfill-ctype": "~1.8",
                 "symfony/polyfill-mbstring": "~1.8",
-                "symfony/polyfill-php80": "^1.16"
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/process": "^5.4|^6.4"
             },
             "type": "library",
             "autoload": {
@@ -8362,7 +8351,7 @@
             "description": "Provides basic utilities for the filesystem",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/filesystem/tree/v5.4.25"
+                "source": "https://github.com/symfony/filesystem/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -8378,20 +8367,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-05-31T13:04:02+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/finder",
-            "version": "v5.4.27",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/finder.git",
-                "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d"
+                "reference": "f6a96e4fcd468a25fede16ee665f50ced856bd0a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d",
-                "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/f6a96e4fcd468a25fede16ee665f50ced856bd0a",
+                "reference": "f6a96e4fcd468a25fede16ee665f50ced856bd0a",
                 "shasum": ""
             },
             "require": {
@@ -8425,7 +8414,7 @@
             "description": "Finds files and directories via an intuitive fluent interface",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/finder/tree/v5.4.27"
+                "source": "https://github.com/symfony/finder/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -8441,20 +8430,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-07-31T08:02:31+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/flex",
-            "version": "v1.21.4",
+            "version": "v1.21.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/flex.git",
-                "reference": "7b40eec950ded5de7054f807c209d3c612efe517"
+                "reference": "06b58a5e5b4c6528fb12e0fac5fea0db3f1e7ae8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/flex/zipball/7b40eec950ded5de7054f807c209d3c612efe517",
-                "reference": "7b40eec950ded5de7054f807c209d3c612efe517",
+                "url": "https://api.github.com/repos/symfony/flex/zipball/06b58a5e5b4c6528fb12e0fac5fea0db3f1e7ae8",
+                "reference": "06b58a5e5b4c6528fb12e0fac5fea0db3f1e7ae8",
                 "shasum": ""
             },
             "require": {
@@ -8490,7 +8479,7 @@
             "description": "Composer plugin for Symfony",
             "support": {
                 "issues": "https://github.com/symfony/flex/issues",
-                "source": "https://github.com/symfony/flex/tree/v1.21.4"
+                "source": "https://github.com/symfony/flex/tree/v1.21.6"
             },
             "funding": [
                 {
@@ -8506,20 +8495,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-01-02T11:08:17+00:00"
+            "time": "2024-03-02T08:16:37+00:00"
         },
         {
             "name": "symfony/form",
-            "version": "v5.4.33",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/form.git",
-                "reference": "9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec"
+                "reference": "6e732c48a5489b809ed077668ed9b3d9d01ea92a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/form/zipball/9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec",
-                "reference": "9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec",
+                "url": "https://api.github.com/repos/symfony/form/zipball/6e732c48a5489b809ed077668ed9b3d9d01ea92a",
+                "reference": "6e732c48a5489b809ed077668ed9b3d9d01ea92a",
                 "shasum": ""
             },
             "require": {
@@ -8542,7 +8531,7 @@
                 "symfony/error-handler": "<4.4.5",
                 "symfony/framework-bundle": "<4.4",
                 "symfony/http-kernel": "<4.4",
-                "symfony/translation": "<4.4",
+                "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3",
                 "symfony/translation-contracts": "<1.1.7",
                 "symfony/twig-bridge": "<5.4.21|>=6,<6.2.7"
             },
@@ -8556,7 +8545,7 @@
                 "symfony/http-kernel": "^4.4|^5.0|^6.0",
                 "symfony/intl": "^4.4|^5.0|^6.0",
                 "symfony/security-csrf": "^4.4|^5.0|^6.0",
-                "symfony/translation": "^4.4|^5.0|^6.0",
+                "symfony/translation": "^5.4.35|~6.3.12|^6.4.3",
                 "symfony/uid": "^5.1|^6.0",
                 "symfony/validator": "^4.4.17|^5.1.9|^6.0",
                 "symfony/var-dumper": "^4.4|^5.0|^6.0"
@@ -8592,7 +8581,7 @@
             "description": "Allows to easily create, process and reuse HTML forms",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/form/tree/v5.4.33"
+                "source": "https://github.com/symfony/form/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -8608,20 +8597,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-30T10:45:54+00:00"
+            "time": "2024-04-25T08:06:42+00:00"
         },
         {
             "name": "symfony/framework-bundle",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/framework-bundle.git",
-                "reference": "ee446bb6a89ec758ffc1614f54c003124c7d7a88"
+                "reference": "65640a7c74ab356bf6518bee38bc6dc9d036ffd7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ee446bb6a89ec758ffc1614f54c003124c7d7a88",
-                "reference": "ee446bb6a89ec758ffc1614f54c003124c7d7a88",
+                "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/65640a7c74ab356bf6518bee38bc6dc9d036ffd7",
+                "reference": "65640a7c74ab356bf6518bee38bc6dc9d036ffd7",
                 "shasum": ""
             },
             "require": {
@@ -8704,7 +8693,7 @@
                 "symfony/web-link": "^4.4|^5.0|^6.0",
                 "symfony/workflow": "^5.2|^6.0",
                 "symfony/yaml": "^4.4|^5.0|^6.0",
-                "twig/twig": "^2.10|^3.0"
+                "twig/twig": "^2.10|^3.0.4"
             },
             "suggest": {
                 "ext-apcu": "For best performance of the system caches",
@@ -8742,7 +8731,7 @@
             "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/framework-bundle/tree/v5.4.34"
+                "source": "https://github.com/symfony/framework-bundle/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -8758,20 +8747,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-29T14:52:40+00:00"
+            "time": "2024-04-28T08:53:28+00:00"
         },
         {
             "name": "symfony/http-foundation",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-foundation.git",
-                "reference": "4da1713e88cf9c44bd4bf65f54772681222fcbec"
+                "reference": "3356c93efc30b0c85a37606bdfef16b813faec0e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/4da1713e88cf9c44bd4bf65f54772681222fcbec",
-                "reference": "4da1713e88cf9c44bd4bf65f54772681222fcbec",
+                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3356c93efc30b0c85a37606bdfef16b813faec0e",
+                "reference": "3356c93efc30b0c85a37606bdfef16b813faec0e",
                 "shasum": ""
             },
             "require": {
@@ -8818,7 +8807,7 @@
             "description": "Defines an object-oriented layer for the HTTP specification",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/http-foundation/tree/v5.4.34"
+                "source": "https://github.com/symfony/http-foundation/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -8834,20 +8823,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-27T11:45:35+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/http-kernel",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-kernel.git",
-                "reference": "f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b"
+                "reference": "1d812dc3a2863cc4246aaa636b0d71e0bf68e6b0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b",
-                "reference": "f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b",
+                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1d812dc3a2863cc4246aaa636b0d71e0bf68e6b0",
+                "reference": "1d812dc3a2863cc4246aaa636b0d71e0bf68e6b0",
                 "shasum": ""
             },
             "require": {
@@ -8896,6 +8885,7 @@
                 "symfony/stopwatch": "^4.4|^5.0|^6.0",
                 "symfony/translation": "^4.4|^5.0|^6.0",
                 "symfony/translation-contracts": "^1.1|^2|^3",
+                "symfony/var-dumper": "^4.4.31|^5.4",
                 "twig/twig": "^2.13|^3.0.4"
             },
             "suggest": {
@@ -8930,7 +8920,7 @@
             "description": "Provides a structured process for converting a Request into a Response",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/http-kernel/tree/v5.4.34"
+                "source": "https://github.com/symfony/http-kernel/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -8946,20 +8936,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-30T13:02:02+00:00"
+            "time": "2024-04-29T11:17:46+00:00"
         },
         {
             "name": "symfony/mailer",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/mailer.git",
-                "reference": "0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5"
+                "reference": "93543ff1554d1098b0f80bb01ff27e9da123af5c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/mailer/zipball/0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5",
-                "reference": "0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5",
+                "url": "https://api.github.com/repos/symfony/mailer/zipball/93543ff1554d1098b0f80bb01ff27e9da123af5c",
+                "reference": "93543ff1554d1098b0f80bb01ff27e9da123af5c",
                 "shasum": ""
             },
             "require": {
@@ -9006,7 +8996,7 @@
             "description": "Helps sending emails",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/mailer/tree/v5.4.34"
+                "source": "https://github.com/symfony/mailer/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -9022,20 +9012,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-02T08:41:43+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/mime",
-            "version": "v5.4.26",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/mime.git",
-                "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2"
+                "reference": "a5364f016fd9e090f7b4f250a97ea6925a5ca985"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/mime/zipball/2ea06dfeee20000a319d8407cea1d47533d5a9d2",
-                "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2",
+                "url": "https://api.github.com/repos/symfony/mime/zipball/a5364f016fd9e090f7b4f250a97ea6925a5ca985",
+                "reference": "a5364f016fd9e090f7b4f250a97ea6925a5ca985",
                 "shasum": ""
             },
             "require": {
@@ -9050,15 +9040,16 @@
                 "phpdocumentor/reflection-docblock": "<3.2.2",
                 "phpdocumentor/type-resolver": "<1.4.0",
                 "symfony/mailer": "<4.4",
-                "symfony/serializer": "<5.4.26|>=6,<6.2.13|>=6.3,<6.3.2"
+                "symfony/serializer": "<5.4.35|>=6,<6.3.12|>=6.4,<6.4.3"
             },
             "require-dev": {
                 "egulias/email-validator": "^2.1.10|^3.1|^4",
                 "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
                 "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+                "symfony/process": "^5.4|^6.4",
                 "symfony/property-access": "^4.4|^5.1|^6.0",
                 "symfony/property-info": "^4.4|^5.1|^6.0",
-                "symfony/serializer": "^5.4.26|~6.2.13|^6.3.2"
+                "symfony/serializer": "^5.4.35|~6.3.12|^6.4.3"
             },
             "type": "library",
             "autoload": {
@@ -9090,7 +9081,7 @@
                 "mime-type"
             ],
             "support": {
-                "source": "https://github.com/symfony/mime/tree/v5.4.26"
+                "source": "https://github.com/symfony/mime/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -9106,20 +9097,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-07-27T06:29:31+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/options-resolver",
-            "version": "v5.4.21",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/options-resolver.git",
-                "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9"
+                "reference": "1303bb73d6c3882f07c618129295503085dfddb9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9",
-                "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9",
+                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/1303bb73d6c3882f07c618129295503085dfddb9",
+                "reference": "1303bb73d6c3882f07c618129295503085dfddb9",
                 "shasum": ""
             },
             "require": {
@@ -9159,7 +9150,7 @@
                 "options"
             ],
             "support": {
-                "source": "https://github.com/symfony/options-resolver/tree/v5.4.21"
+                "source": "https://github.com/symfony/options-resolver/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -9175,20 +9166,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-02-14T08:03:56+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/password-hasher",
-            "version": "v5.4.31",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/password-hasher.git",
-                "reference": "f1a07181f3442836b0aadfd4c65841804d4173c4"
+                "reference": "b4516ba6a9190a469eeb2c2f3447bfc0e5b17aee"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/password-hasher/zipball/f1a07181f3442836b0aadfd4c65841804d4173c4",
-                "reference": "f1a07181f3442836b0aadfd4c65841804d4173c4",
+                "url": "https://api.github.com/repos/symfony/password-hasher/zipball/b4516ba6a9190a469eeb2c2f3447bfc0e5b17aee",
+                "reference": "b4516ba6a9190a469eeb2c2f3447bfc0e5b17aee",
                 "shasum": ""
             },
             "require": {
@@ -9233,7 +9224,7 @@
                 "password"
             ],
             "support": {
-                "source": "https://github.com/symfony/password-hasher/tree/v5.4.31"
+                "source": "https://github.com/symfony/password-hasher/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -9249,20 +9240,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-02T10:18:11+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/polyfill-intl-grapheme",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
-                "reference": "875e90aeea2777b6f135677f618529449334a612"
+                "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612",
-                "reference": "875e90aeea2777b6f135677f618529449334a612",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
+                "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
                 "shasum": ""
             },
             "require": {
@@ -9273,9 +9264,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -9314,7 +9302,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -9330,20 +9318,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-01-26T09:26:14+00:00"
+            "time": "2024-01-29T20:11:03+00:00"
         },
         {
             "name": "symfony/polyfill-intl-icu",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-intl-icu.git",
-                "reference": "e46b4da57951a16053cd751f63f4a24292788157"
+                "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e46b4da57951a16053cd751f63f4a24292788157",
-                "reference": "e46b4da57951a16053cd751f63f4a24292788157",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/07094a28851a49107f3ab4f9120ca2975a64b6e1",
+                "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1",
                 "shasum": ""
             },
             "require": {
@@ -9354,9 +9342,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -9401,7 +9386,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -9417,20 +9402,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-03-21T17:27:24+00:00"
+            "time": "2024-01-29T20:12:16+00:00"
         },
         {
             "name": "symfony/polyfill-intl-idn",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-intl-idn.git",
-                "reference": "ecaafce9f77234a6a449d29e49267ba10499116d"
+                "reference": "a287ed7475f85bf6f61890146edbc932c0fff919"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d",
-                "reference": "ecaafce9f77234a6a449d29e49267ba10499116d",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919",
+                "reference": "a287ed7475f85bf6f61890146edbc932c0fff919",
                 "shasum": ""
             },
             "require": {
@@ -9443,9 +9428,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -9488,7 +9470,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -9504,20 +9486,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-01-26T09:30:37+00:00"
+            "time": "2024-01-29T20:11:03+00:00"
         },
         {
             "name": "symfony/polyfill-intl-normalizer",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92"
+                "reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
-                "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
+                "reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
                 "shasum": ""
             },
             "require": {
@@ -9528,9 +9510,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -9572,7 +9551,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -9588,20 +9567,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-01-26T09:26:14+00:00"
+            "time": "2024-01-29T20:11:03+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "42292d99c55abe617799667f454222c54c60e229"
+                "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
-                "reference": "42292d99c55abe617799667f454222c54c60e229",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+                "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
                 "shasum": ""
             },
             "require": {
@@ -9615,9 +9594,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -9655,7 +9631,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -9671,7 +9647,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-07-28T09:04:16+00:00"
+            "time": "2024-01-29T20:11:03+00:00"
         },
         {
             "name": "symfony/polyfill-php56",
@@ -9743,16 +9719,16 @@
         },
         {
             "name": "symfony/polyfill-php73",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php73.git",
-                "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5"
+                "reference": "21bd091060673a1177ae842c0ef8fe30893114d2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5",
-                "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2",
+                "reference": "21bd091060673a1177ae842c0ef8fe30893114d2",
                 "shasum": ""
             },
             "require": {
@@ -9760,9 +9736,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -9802,7 +9775,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -9818,20 +9791,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-01-26T09:26:14+00:00"
+            "time": "2024-01-29T20:11:03+00:00"
         },
         {
             "name": "symfony/polyfill-php80",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php80.git",
-                "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
+                "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
-                "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+                "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
                 "shasum": ""
             },
             "require": {
@@ -9839,9 +9812,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -9885,7 +9855,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -9901,20 +9871,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-01-26T09:26:14+00:00"
+            "time": "2024-01-29T20:11:03+00:00"
         },
         {
             "name": "symfony/polyfill-php81",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-php81.git",
-                "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b"
+                "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b",
-                "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b",
+                "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d",
+                "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d",
                 "shasum": ""
             },
             "require": {
@@ -9922,9 +9892,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -9964,7 +9931,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -9980,20 +9947,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-01-26T09:26:14+00:00"
+            "time": "2024-01-29T20:11:03+00:00"
         },
         {
             "name": "symfony/process",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a"
+                "reference": "85a554acd7c28522241faf2e97b9541247a0d3d5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/8fa22178dfc368911dbd513b431cd9b06f9afe7a",
-                "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a",
+                "url": "https://api.github.com/repos/symfony/process/zipball/85a554acd7c28522241faf2e97b9541247a0d3d5",
+                "reference": "85a554acd7c28522241faf2e97b9541247a0d3d5",
                 "shasum": ""
             },
             "require": {
@@ -10026,7 +9993,7 @@
             "description": "Executes commands in sub-processes",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/process/tree/v5.4.34"
+                "source": "https://github.com/symfony/process/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -10042,20 +10009,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-02T08:41:43+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/property-access",
-            "version": "v5.4.26",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/property-access.git",
-                "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa"
+                "reference": "1b93ca45890ce5555895efe27bd848c41396530c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/property-access/zipball/0249e46f69e92049a488f39fcf531cb42c50caaa",
-                "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa",
+                "url": "https://api.github.com/repos/symfony/property-access/zipball/1b93ca45890ce5555895efe27bd848c41396530c",
+                "reference": "1b93ca45890ce5555895efe27bd848c41396530c",
                 "shasum": ""
             },
             "require": {
@@ -10107,7 +10074,7 @@
                 "reflection"
             ],
             "support": {
-                "source": "https://github.com/symfony/property-access/tree/v5.4.26"
+                "source": "https://github.com/symfony/property-access/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -10123,20 +10090,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-07-13T15:20:41+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/property-info",
-            "version": "v5.4.24",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/property-info.git",
-                "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1"
+                "reference": "bf257e78b0471e67757af038344919f498af804d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/property-info/zipball/d43b85b00699b4484964c297575b5c6f9dc5f6e1",
-                "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1",
+                "url": "https://api.github.com/repos/symfony/property-info/zipball/bf257e78b0471e67757af038344919f498af804d",
+                "reference": "bf257e78b0471e67757af038344919f498af804d",
                 "shasum": ""
             },
             "require": {
@@ -10198,7 +10165,7 @@
                 "validator"
             ],
             "support": {
-                "source": "https://github.com/symfony/property-info/tree/v5.4.24"
+                "source": "https://github.com/symfony/property-info/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -10214,20 +10181,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-05-15T20:11:03+00:00"
+            "time": "2024-04-19T15:51:11+00:00"
         },
         {
             "name": "symfony/proxy-manager-bridge",
-            "version": "v5.4.21",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/proxy-manager-bridge.git",
-                "reference": "a4cf96f3acfa252503a216bea877478f9621c7c0"
+                "reference": "2af1b394cc8bee0fecc7c8925f7fbc6934efef41"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/a4cf96f3acfa252503a216bea877478f9621c7c0",
-                "reference": "a4cf96f3acfa252503a216bea877478f9621c7c0",
+                "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/2af1b394cc8bee0fecc7c8925f7fbc6934efef41",
+                "reference": "2af1b394cc8bee0fecc7c8925f7fbc6934efef41",
                 "shasum": ""
             },
             "require": {
@@ -10265,7 +10232,7 @@
             "description": "Provides integration for ProxyManager with various Symfony components",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.4.21"
+                "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -10281,20 +10248,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-02-16T09:33:00+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/routing",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/routing.git",
-                "reference": "f1d08ed59d7718845bb70acd7480fa7da8966ec0"
+                "reference": "5485974ef20de1150dd195a81e9da4915d45263f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/routing/zipball/f1d08ed59d7718845bb70acd7480fa7da8966ec0",
-                "reference": "f1d08ed59d7718845bb70acd7480fa7da8966ec0",
+                "url": "https://api.github.com/repos/symfony/routing/zipball/5485974ef20de1150dd195a81e9da4915d45263f",
+                "reference": "5485974ef20de1150dd195a81e9da4915d45263f",
                 "shasum": ""
             },
             "require": {
@@ -10355,7 +10322,7 @@
                 "url"
             ],
             "support": {
-                "source": "https://github.com/symfony/routing/tree/v5.4.34"
+                "source": "https://github.com/symfony/routing/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -10371,20 +10338,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-27T12:51:02+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/security-bundle",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/security-bundle.git",
-                "reference": "6477c31e36dfa25b07befea20bc8326f4ba11d75"
+                "reference": "ac98aefdaeaaebce15e42254f37a24984a6982a5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6477c31e36dfa25b07befea20bc8326f4ba11d75",
-                "reference": "6477c31e36dfa25b07befea20bc8326f4ba11d75",
+                "url": "https://api.github.com/repos/symfony/security-bundle/zipball/ac98aefdaeaaebce15e42254f37a24984a6982a5",
+                "reference": "ac98aefdaeaaebce15e42254f37a24984a6982a5",
                 "shasum": ""
             },
             "require": {
@@ -10458,7 +10425,7 @@
             "description": "Provides a tight integration of the Security component into the Symfony full-stack framework",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/security-bundle/tree/v5.4.34"
+                "source": "https://github.com/symfony/security-bundle/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -10474,20 +10441,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-19T08:26:08+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/security-core",
-            "version": "v5.4.30",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/security-core.git",
-                "reference": "3908c54da30dd68c2fe31915d82a1c81809d1928"
+                "reference": "df88cf83d6b25d25106a63261d97adb78c5690c2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/security-core/zipball/3908c54da30dd68c2fe31915d82a1c81809d1928",
-                "reference": "3908c54da30dd68c2fe31915d82a1c81809d1928",
+                "url": "https://api.github.com/repos/symfony/security-core/zipball/df88cf83d6b25d25106a63261d97adb78c5690c2",
+                "reference": "df88cf83d6b25d25106a63261d97adb78c5690c2",
                 "shasum": ""
             },
             "require": {
@@ -10503,6 +10470,7 @@
                 "symfony/http-foundation": "<5.3",
                 "symfony/ldap": "<4.4",
                 "symfony/security-guard": "<4.4",
+                "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3",
                 "symfony/validator": "<5.2"
             },
             "require-dev": {
@@ -10514,7 +10482,7 @@
                 "symfony/expression-language": "^4.4|^5.0|^6.0",
                 "symfony/http-foundation": "^5.3|^6.0",
                 "symfony/ldap": "^4.4|^5.0|^6.0",
-                "symfony/translation": "^4.4|^5.0|^6.0",
+                "symfony/translation": "^5.4.35|~6.3.12|^6.4.3",
                 "symfony/validator": "^5.2|^6.0"
             },
             "suggest": {
@@ -10551,7 +10519,7 @@
             "description": "Symfony Security Component - Core Library",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/security-core/tree/v5.4.30"
+                "source": "https://github.com/symfony/security-core/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -10567,20 +10535,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-10-27T07:38:28+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/security-csrf",
-            "version": "v5.4.27",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/security-csrf.git",
-                "reference": "995fcfcc5a3be09df157b4960668f61cceb86611"
+                "reference": "52773ed2b696c19e06480b8dccc234851ccaabca"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/security-csrf/zipball/995fcfcc5a3be09df157b4960668f61cceb86611",
-                "reference": "995fcfcc5a3be09df157b4960668f61cceb86611",
+                "url": "https://api.github.com/repos/symfony/security-csrf/zipball/52773ed2b696c19e06480b8dccc234851ccaabca",
+                "reference": "52773ed2b696c19e06480b8dccc234851ccaabca",
                 "shasum": ""
             },
             "require": {
@@ -10624,7 +10592,7 @@
             "description": "Symfony Security Component - CSRF Library",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/security-csrf/tree/v5.4.27"
+                "source": "https://github.com/symfony/security-csrf/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -10640,20 +10608,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-07-28T14:44:35+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/security-guard",
-            "version": "v5.4.27",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/security-guard.git",
-                "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc"
+                "reference": "df059bf319673f4b5a52ba670dbf1e7e30621588"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/security-guard/zipball/72c53142533462fc6fda4a429c2a21c2b944a8cc",
-                "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc",
+                "url": "https://api.github.com/repos/symfony/security-guard/zipball/df059bf319673f4b5a52ba670dbf1e7e30621588",
+                "reference": "df059bf319673f4b5a52ba670dbf1e7e30621588",
                 "shasum": ""
             },
             "require": {
@@ -10692,7 +10660,7 @@
             "description": "Symfony Security Component - Guard",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/security-guard/tree/v5.4.27"
+                "source": "https://github.com/symfony/security-guard/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -10708,20 +10676,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-07-28T14:44:35+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/security-http",
-            "version": "v5.4.31",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/security-http.git",
-                "reference": "6d3cd5a4deee9697738db8d24258890ca4140ae9"
+                "reference": "42a12aa0db45b0f20997f3b67eea29717bf82a5d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/security-http/zipball/6d3cd5a4deee9697738db8d24258890ca4140ae9",
-                "reference": "6d3cd5a4deee9697738db8d24258890ca4140ae9",
+                "url": "https://api.github.com/repos/symfony/security-http/zipball/42a12aa0db45b0f20997f3b67eea29717bf82a5d",
+                "reference": "42a12aa0db45b0f20997f3b67eea29717bf82a5d",
                 "shasum": ""
             },
             "require": {
@@ -10778,7 +10746,7 @@
             "description": "Symfony Security Component - HTTP Integration",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/security-http/tree/v5.4.31"
+                "source": "https://github.com/symfony/security-http/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -10794,20 +10762,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-03T16:13:08+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/serializer",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/serializer.git",
-                "reference": "b8353e4208e9161f34d22c4631c63404b26ba929"
+                "reference": "107d7e0b67f9295098aa7b29b1daeddd6303c658"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/serializer/zipball/b8353e4208e9161f34d22c4631c63404b26ba929",
-                "reference": "b8353e4208e9161f34d22c4631c63404b26ba929",
+                "url": "https://api.github.com/repos/symfony/serializer/zipball/107d7e0b67f9295098aa7b29b1daeddd6303c658",
+                "reference": "107d7e0b67f9295098aa7b29b1daeddd6303c658",
                 "shasum": ""
             },
             "require": {
@@ -10838,7 +10806,7 @@
                 "symfony/http-foundation": "^4.4|^5.0|^6.0",
                 "symfony/http-kernel": "^4.4|^5.0|^6.0",
                 "symfony/mime": "^4.4|^5.0|^6.0",
-                "symfony/property-access": "^5.4|^6.0",
+                "symfony/property-access": "^5.4.26|^6.3",
                 "symfony/property-info": "^5.4.24|^6.2.11",
                 "symfony/uid": "^5.3|^6.0",
                 "symfony/validator": "^4.4|^5.0|^6.0",
@@ -10881,7 +10849,7 @@
             "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/serializer/tree/v5.4.34"
+                "source": "https://github.com/symfony/serializer/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -10897,20 +10865,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-27T08:53:17+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/service-contracts",
-            "version": "v2.5.2",
+            "version": "v2.5.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/service-contracts.git",
-                "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c"
+                "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
-                "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a2329596ddc8fd568900e3fc76cba42489ecc7f3",
+                "reference": "a2329596ddc8fd568900e3fc76cba42489ecc7f3",
                 "shasum": ""
             },
             "require": {
@@ -10964,7 +10932,7 @@
                 "standards"
             ],
             "support": {
-                "source": "https://github.com/symfony/service-contracts/tree/v2.5.2"
+                "source": "https://github.com/symfony/service-contracts/tree/v2.5.3"
             },
             "funding": [
                 {
@@ -10980,7 +10948,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-05-30T19:17:29+00:00"
+            "time": "2023-04-21T15:04:16+00:00"
         },
         {
             "name": "symfony/skeleton",
@@ -11049,16 +11017,16 @@
         },
         {
             "name": "symfony/stopwatch",
-            "version": "v5.4.21",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/stopwatch.git",
-                "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee"
+                "reference": "fb97497490bcec8a3c32c809cacfdd4c15dc8390"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee",
-                "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fb97497490bcec8a3c32c809cacfdd4c15dc8390",
+                "reference": "fb97497490bcec8a3c32c809cacfdd4c15dc8390",
                 "shasum": ""
             },
             "require": {
@@ -11091,7 +11059,7 @@
             "description": "Provides a way to profile code",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/stopwatch/tree/v5.4.21"
+                "source": "https://github.com/symfony/stopwatch/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -11107,20 +11075,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-02-14T08:03:56+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/string",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/string.git",
-                "reference": "e3f98bfc7885c957488f443df82d97814a3ce061"
+                "reference": "495e71bae5862308051b9e63cc3e34078eed83ef"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/string/zipball/e3f98bfc7885c957488f443df82d97814a3ce061",
-                "reference": "e3f98bfc7885c957488f443df82d97814a3ce061",
+                "url": "https://api.github.com/repos/symfony/string/zipball/495e71bae5862308051b9e63cc3e34078eed83ef",
+                "reference": "495e71bae5862308051b9e63cc3e34078eed83ef",
                 "shasum": ""
             },
             "require": {
@@ -11177,7 +11145,7 @@
                 "utf8"
             ],
             "support": {
-                "source": "https://github.com/symfony/string/tree/v5.4.34"
+                "source": "https://github.com/symfony/string/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -11193,20 +11161,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-09T13:20:28+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/templating",
-            "version": "v5.4.21",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/templating.git",
-                "reference": "a47d5f1c8f7a636d27f8918d9cfd508242714e70"
+                "reference": "8c064ea86a979d69cc508f6ae4b75e869cda8fcb"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/templating/zipball/a47d5f1c8f7a636d27f8918d9cfd508242714e70",
-                "reference": "a47d5f1c8f7a636d27f8918d9cfd508242714e70",
+                "url": "https://api.github.com/repos/symfony/templating/zipball/8c064ea86a979d69cc508f6ae4b75e869cda8fcb",
+                "reference": "8c064ea86a979d69cc508f6ae4b75e869cda8fcb",
                 "shasum": ""
             },
             "require": {
@@ -11245,7 +11213,7 @@
             "description": "Provides all the tools needed to build any kind of template system",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/templating/tree/v5.4.21"
+                "source": "https://github.com/symfony/templating/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -11261,20 +11229,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-02-14T08:03:56+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/translation",
-            "version": "v5.4.31",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/translation.git",
-                "reference": "ba72f72fceddf36f00bd495966b5873f2d17ad8f"
+                "reference": "0fabede35e3985c4f96089edeeefe8313e15ca3a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/translation/zipball/ba72f72fceddf36f00bd495966b5873f2d17ad8f",
-                "reference": "ba72f72fceddf36f00bd495966b5873f2d17ad8f",
+                "url": "https://api.github.com/repos/symfony/translation/zipball/0fabede35e3985c4f96089edeeefe8313e15ca3a",
+                "reference": "0fabede35e3985c4f96089edeeefe8313e15ca3a",
                 "shasum": ""
             },
             "require": {
@@ -11342,7 +11310,7 @@
             "description": "Provides tools to internationalize your application",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/translation/tree/v5.4.31"
+                "source": "https://github.com/symfony/translation/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -11358,20 +11326,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-03T16:16:43+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/translation-contracts",
-            "version": "v2.5.2",
+            "version": "v2.5.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/translation-contracts.git",
-                "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe"
+                "reference": "b0073a77ac0b7ea55131020e87b1e3af540f4664"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe",
-                "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe",
+                "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b0073a77ac0b7ea55131020e87b1e3af540f4664",
+                "reference": "b0073a77ac0b7ea55131020e87b1e3af540f4664",
                 "shasum": ""
             },
             "require": {
@@ -11420,7 +11388,7 @@
                 "standards"
             ],
             "support": {
-                "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2"
+                "source": "https://github.com/symfony/translation-contracts/tree/v2.5.3"
             },
             "funding": [
                 {
@@ -11436,20 +11404,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-06-27T16:58:25+00:00"
+            "time": "2024-01-23T13:51:25+00:00"
         },
         {
             "name": "symfony/twig-bridge",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/twig-bridge.git",
-                "reference": "4ced0e91705d689b77763678367bd522d79f9f9a"
+                "reference": "1384448132165f95f76ca67cd722c560e29b8245"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/4ced0e91705d689b77763678367bd522d79f9f9a",
-                "reference": "4ced0e91705d689b77763678367bd522d79f9f9a",
+                "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/1384448132165f95f76ca67cd722c560e29b8245",
+                "reference": "1384448132165f95f76ca67cd722c560e29b8245",
                 "shasum": ""
             },
             "require": {
@@ -11489,7 +11457,7 @@
                 "symfony/security-core": "^4.4|^5.0|^6.0",
                 "symfony/security-csrf": "^4.4|^5.0|^6.0",
                 "symfony/security-http": "^4.4|^5.0|^6.0",
-                "symfony/serializer": "^5.2|^6.0",
+                "symfony/serializer": "^5.4.35|~6.3.12|^6.4.3",
                 "symfony/stopwatch": "^4.4|^5.0|^6.0",
                 "symfony/translation": "^5.2|^6.0",
                 "symfony/web-link": "^4.4|^5.0|^6.0",
@@ -11541,7 +11509,7 @@
             "description": "Provides integration for Twig with various Symfony components",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/twig-bridge/tree/v5.4.34"
+                "source": "https://github.com/symfony/twig-bridge/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -11557,20 +11525,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-15T11:59:38+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/twig-bundle",
-            "version": "v5.4.31",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/twig-bundle.git",
-                "reference": "62e3505a62f482a577f55ba08747dc6a3b7463b3"
+                "reference": "f8565fcf3266503395078a78768b4c3bec03a2c1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/62e3505a62f482a577f55ba08747dc6a3b7463b3",
-                "reference": "62e3505a62f482a577f55ba08747dc6a3b7463b3",
+                "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/f8565fcf3266503395078a78768b4c3bec03a2c1",
+                "reference": "f8565fcf3266503395078a78768b4c3bec03a2c1",
                 "shasum": ""
             },
             "require": {
@@ -11631,7 +11599,7 @@
             "description": "Provides a tight integration of Twig into the Symfony full-stack framework",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/twig-bundle/tree/v5.4.31"
+                "source": "https://github.com/symfony/twig-bundle/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -11647,20 +11615,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-10-31T07:58:33+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/validator",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/validator.git",
-                "reference": "0700751f19b5e8dcfadb6614662216a93f37e2dd"
+                "reference": "8a2f9f786ae44dd22dd1bbc624767c4e9118e1fc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/validator/zipball/0700751f19b5e8dcfadb6614662216a93f37e2dd",
-                "reference": "0700751f19b5e8dcfadb6614662216a93f37e2dd",
+                "url": "https://api.github.com/repos/symfony/validator/zipball/8a2f9f786ae44dd22dd1bbc624767c4e9118e1fc",
+                "reference": "8a2f9f786ae44dd22dd1bbc624767c4e9118e1fc",
                 "shasum": ""
             },
             "require": {
@@ -11682,7 +11650,7 @@
                 "symfony/http-kernel": "<4.4",
                 "symfony/intl": "<4.4",
                 "symfony/property-info": "<5.3",
-                "symfony/translation": "<4.4",
+                "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3",
                 "symfony/yaml": "<4.4"
             },
             "require-dev": {
@@ -11702,7 +11670,7 @@
                 "symfony/mime": "^4.4|^5.0|^6.0",
                 "symfony/property-access": "^4.4|^5.0|^6.0",
                 "symfony/property-info": "^5.3|^6.0",
-                "symfony/translation": "^4.4|^5.0|^6.0",
+                "symfony/translation": "^5.4.35|~6.3.12|^6.4.3",
                 "symfony/yaml": "^4.4|^5.0|^6.0"
             },
             "suggest": {
@@ -11743,7 +11711,7 @@
             "description": "Provides tools to validate values",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/validator/tree/v5.4.34"
+                "source": "https://github.com/symfony/validator/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -11759,20 +11727,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-29T15:57:36+00:00"
+            "time": "2024-04-27T09:31:10+00:00"
         },
         {
             "name": "symfony/var-dumper",
-            "version": "v5.4.29",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-dumper.git",
-                "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65"
+                "reference": "1987f86ad7f339fe3d3e8e6cf3b7ce4d4b8e547e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6172e4ae3534d25ee9e07eb487c20be7760fcc65",
-                "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1987f86ad7f339fe3d3e8e6cf3b7ce4d4b8e547e",
+                "reference": "1987f86ad7f339fe3d3e8e6cf3b7ce4d4b8e547e",
                 "shasum": ""
             },
             "require": {
@@ -11832,7 +11800,7 @@
                 "dump"
             ],
             "support": {
-                "source": "https://github.com/symfony/var-dumper/tree/v5.4.29"
+                "source": "https://github.com/symfony/var-dumper/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -11848,20 +11816,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-09-12T10:09:58+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/var-exporter",
-            "version": "v6.4.2",
+            "version": "v6.4.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/var-exporter.git",
-                "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e"
+                "reference": "825f9b00c37bbe1c1691cc1aff9b5451fc9b4405"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/var-exporter/zipball/5fe9a0021b8d35e67d914716ec8de50716a68e7e",
-                "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e",
+                "url": "https://api.github.com/repos/symfony/var-exporter/zipball/825f9b00c37bbe1c1691cc1aff9b5451fc9b4405",
+                "reference": "825f9b00c37bbe1c1691cc1aff9b5451fc9b4405",
                 "shasum": ""
             },
             "require": {
@@ -11869,6 +11837,8 @@
                 "symfony/deprecation-contracts": "^2.5|^3"
             },
             "require-dev": {
+                "symfony/property-access": "^6.4|^7.0",
+                "symfony/serializer": "^6.4|^7.0",
                 "symfony/var-dumper": "^5.4|^6.0|^7.0"
             },
             "type": "library",
@@ -11907,7 +11877,7 @@
                 "serialize"
             ],
             "support": {
-                "source": "https://github.com/symfony/var-exporter/tree/v6.4.2"
+                "source": "https://github.com/symfony/var-exporter/tree/v6.4.7"
             },
             "funding": [
                 {
@@ -11923,20 +11893,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-27T08:18:35+00:00"
+            "time": "2024-04-18T09:22:46+00:00"
         },
         {
             "name": "symfony/web-link",
-            "version": "v5.4.21",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/web-link.git",
-                "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb"
+                "reference": "4c63edebd61782446985cc4836cdc1a500a860c4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/web-link/zipball/57c03a5e89ed7c2d7a1a09258dfec12f95f95adb",
-                "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb",
+                "url": "https://api.github.com/repos/symfony/web-link/zipball/4c63edebd61782446985cc4836cdc1a500a860c4",
+                "reference": "4c63edebd61782446985cc4836cdc1a500a860c4",
                 "shasum": ""
             },
             "require": {
@@ -11994,7 +11964,7 @@
                 "push"
             ],
             "support": {
-                "source": "https://github.com/symfony/web-link/tree/v5.4.21"
+                "source": "https://github.com/symfony/web-link/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -12010,7 +11980,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-02-14T08:03:56+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/webpack-encore-bundle",
@@ -12087,16 +12057,16 @@
         },
         {
             "name": "symfony/yaml",
-            "version": "v5.4.31",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/yaml.git",
-                "reference": "f387675d7f5fc4231f7554baa70681f222f73563"
+                "reference": "bc780e16879000f77a1022163c052f5323b5e640"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/yaml/zipball/f387675d7f5fc4231f7554baa70681f222f73563",
-                "reference": "f387675d7f5fc4231f7554baa70681f222f73563",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/bc780e16879000f77a1022163c052f5323b5e640",
+                "reference": "bc780e16879000f77a1022163c052f5323b5e640",
                 "shasum": ""
             },
             "require": {
@@ -12142,7 +12112,7 @@
             "description": "Loads and dumps YAML files",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/yaml/tree/v5.4.31"
+                "source": "https://github.com/symfony/yaml/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -12158,20 +12128,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-03T14:41:28+00:00"
+            "time": "2024-04-23T11:57:27+00:00"
         },
         {
             "name": "theseer/tokenizer",
-            "version": "1.2.2",
+            "version": "1.2.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
+                "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
-                "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
+                "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
                 "shasum": ""
             },
             "require": {
@@ -12200,7 +12170,7 @@
             "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
             "support": {
                 "issues": "https://github.com/theseer/tokenizer/issues",
-                "source": "https://github.com/theseer/tokenizer/tree/1.2.2"
+                "source": "https://github.com/theseer/tokenizer/tree/1.2.3"
             },
             "funding": [
                 {
@@ -12208,38 +12178,38 @@
                     "type": "github"
                 }
             ],
-            "time": "2023-11-20T00:12:19+00:00"
+            "time": "2024-03-03T12:36:25+00:00"
         },
         {
             "name": "twig/extra-bundle",
-            "version": "v3.8.0",
+            "version": "v3.9.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/twigphp/twig-extra-bundle.git",
-                "reference": "32807183753de0388c8e59f7ac2d13bb47311140"
+                "reference": "ef6869adf1fdab66f7e495771a7ba01496ffc0d5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/32807183753de0388c8e59f7ac2d13bb47311140",
-                "reference": "32807183753de0388c8e59f7ac2d13bb47311140",
+                "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/ef6869adf1fdab66f7e495771a7ba01496ffc0d5",
+                "reference": "ef6869adf1fdab66f7e495771a7ba01496ffc0d5",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.2.5",
-                "symfony/framework-bundle": "^5.4|^6.0|^7.0",
-                "symfony/twig-bundle": "^5.4|^6.0|^7.0",
+                "symfony/framework-bundle": "^5.4|^6.4|^7.0",
+                "symfony/twig-bundle": "^5.4|^6.4|^7.0",
                 "twig/twig": "^3.0"
             },
             "require-dev": {
                 "league/commonmark": "^1.0|^2.0",
                 "symfony/phpunit-bridge": "^6.4|^7.0",
                 "twig/cache-extra": "^3.0",
-                "twig/cssinliner-extra": "^2.12|^3.0",
-                "twig/html-extra": "^2.12|^3.0",
-                "twig/inky-extra": "^2.12|^3.0",
-                "twig/intl-extra": "^2.12|^3.0",
-                "twig/markdown-extra": "^2.12|^3.0",
-                "twig/string-extra": "^2.12|^3.0"
+                "twig/cssinliner-extra": "^3.0",
+                "twig/html-extra": "^3.0",
+                "twig/inky-extra": "^3.0",
+                "twig/intl-extra": "^3.0",
+                "twig/markdown-extra": "^3.0",
+                "twig/string-extra": "^3.0"
             },
             "type": "symfony-bundle",
             "autoload": {
@@ -12270,7 +12240,7 @@
                 "twig"
             ],
             "support": {
-                "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.8.0"
+                "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.9.3"
             },
             "funding": [
                 {
@@ -12282,25 +12252,25 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-21T14:02:01+00:00"
+            "time": "2024-04-18T09:24:21+00:00"
         },
         {
             "name": "twig/string-extra",
-            "version": "v3.8.0",
+            "version": "v3.9.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/twigphp/string-extra.git",
-                "reference": "b0c9037d96baff79abe368dc092a59b726517548"
+                "reference": "5ff1c41366aa003d45f6e2707c5d698c1b37ff99"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/twigphp/string-extra/zipball/b0c9037d96baff79abe368dc092a59b726517548",
-                "reference": "b0c9037d96baff79abe368dc092a59b726517548",
+                "url": "https://api.github.com/repos/twigphp/string-extra/zipball/5ff1c41366aa003d45f6e2707c5d698c1b37ff99",
+                "reference": "5ff1c41366aa003d45f6e2707c5d698c1b37ff99",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.2.5",
-                "symfony/string": "^5.4|^6.0|^7.0",
+                "symfony/string": "^5.4|^6.4|^7.0",
                 "symfony/translation-contracts": "^1.1|^2|^3",
                 "twig/twig": "^3.0"
             },
@@ -12337,7 +12307,7 @@
                 "unicode"
             ],
             "support": {
-                "source": "https://github.com/twigphp/string-extra/tree/v3.8.0"
+                "source": "https://github.com/twigphp/string-extra/tree/v3.9.0"
             },
             "funding": [
                 {
@@ -12349,34 +12319,41 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-21T14:02:01+00:00"
+            "time": "2024-02-10T08:52:03+00:00"
         },
         {
             "name": "twig/twig",
-            "version": "v3.8.0",
+            "version": "v3.9.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/twigphp/Twig.git",
-                "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d"
+                "reference": "a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
-                "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
+                "url": "https://api.github.com/repos/twigphp/Twig/zipball/a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58",
+                "reference": "a842d75fed59cdbcbd3a3ad7fb9eb768fc350d58",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.2.5",
+                "symfony/deprecation-contracts": "^2.5|^3",
                 "symfony/polyfill-ctype": "^1.8",
                 "symfony/polyfill-mbstring": "^1.3",
                 "symfony/polyfill-php80": "^1.22"
             },
             "require-dev": {
                 "psr/container": "^1.0|^2.0",
-                "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0"
+                "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
             },
             "type": "library",
             "autoload": {
+                "files": [
+                    "src/Resources/core.php",
+                    "src/Resources/debug.php",
+                    "src/Resources/escaper.php",
+                    "src/Resources/string_loader.php"
+                ],
                 "psr-4": {
                     "Twig\\": "src/"
                 }
@@ -12409,7 +12386,7 @@
             ],
             "support": {
                 "issues": "https://github.com/twigphp/Twig/issues",
-                "source": "https://github.com/twigphp/Twig/tree/v3.8.0"
+                "source": "https://github.com/twigphp/Twig/tree/v3.9.3"
             },
             "funding": [
                 {
@@ -12421,7 +12398,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-21T18:54:41+00:00"
+            "time": "2024-04-18T11:59:33+00:00"
         },
         {
             "name": "webmozart/assert",
@@ -12792,16 +12769,16 @@
         },
         {
             "name": "composer/pcre",
-            "version": "3.1.1",
+            "version": "3.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/pcre.git",
-                "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9"
+                "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9",
-                "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+                "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
+                "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8",
                 "shasum": ""
             },
             "require": {
@@ -12843,7 +12820,7 @@
             ],
             "support": {
                 "issues": "https://github.com/composer/pcre/issues",
-                "source": "https://github.com/composer/pcre/tree/3.1.1"
+                "source": "https://github.com/composer/pcre/tree/3.1.3"
             },
             "funding": [
                 {
@@ -12859,7 +12836,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-10-11T07:11:09+00:00"
+            "time": "2024-03-19T10:26:25+00:00"
         },
         {
             "name": "composer/semver",
@@ -12944,16 +12921,16 @@
         },
         {
             "name": "composer/xdebug-handler",
-            "version": "3.0.3",
+            "version": "3.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/xdebug-handler.git",
-                "reference": "ced299686f41dce890debac69273b47ffe98a40c"
+                "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
-                "reference": "ced299686f41dce890debac69273b47ffe98a40c",
+                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/4f988f8fdf580d53bdb2d1278fe93d1ed5462255",
+                "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255",
                 "shasum": ""
             },
             "require": {
@@ -12964,7 +12941,7 @@
             "require-dev": {
                 "phpstan/phpstan": "^1.0",
                 "phpstan/phpstan-strict-rules": "^1.1",
-                "symfony/phpunit-bridge": "^6.0"
+                "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5"
             },
             "type": "library",
             "autoload": {
@@ -12988,9 +12965,9 @@
                 "performance"
             ],
             "support": {
-                "irc": "irc://irc.freenode.org/composer",
+                "irc": "ircs://irc.libera.chat:6697/composer",
                 "issues": "https://github.com/composer/xdebug-handler/issues",
-                "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
+                "source": "https://github.com/composer/xdebug-handler/tree/3.0.4"
             },
             "funding": [
                 {
@@ -13006,7 +12983,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-02-25T21:32:43+00:00"
+            "time": "2024-03-26T18:29:49+00:00"
         },
         {
             "name": "dama/doctrine-test-bundle",
@@ -13291,16 +13268,16 @@
         },
         {
             "name": "friendsofphp/php-cs-fixer",
-            "version": "v3.48.0",
+            "version": "v3.54.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
-                "reference": "a92472c6fb66349de25211f31c77eceae3df024e"
+                "reference": "2aecbc8640d7906c38777b3dcab6f4ca79004d08"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a92472c6fb66349de25211f31c77eceae3df024e",
-                "reference": "a92472c6fb66349de25211f31c77eceae3df024e",
+                "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2aecbc8640d7906c38777b3dcab6f4ca79004d08",
+                "reference": "2aecbc8640d7906c38777b3dcab6f4ca79004d08",
                 "shasum": ""
             },
             "require": {
@@ -13310,7 +13287,7 @@
                 "ext-json": "*",
                 "ext-tokenizer": "*",
                 "php": "^7.4 || ^8.0",
-                "sebastian/diff": "^4.0 || ^5.0",
+                "sebastian/diff": "^4.0 || ^5.0 || ^6.0",
                 "symfony/console": "^5.4 || ^6.0 || ^7.0",
                 "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0",
                 "symfony/filesystem": "^5.4 || ^6.0 || ^7.0",
@@ -13324,6 +13301,7 @@
             },
             "require-dev": {
                 "facile-it/paraunit": "^1.3 || ^2.0",
+                "infection/infection": "^0.27.11",
                 "justinrainbow/json-schema": "^5.2",
                 "keradus/cli-executor": "^2.1",
                 "mikey179/vfsstream": "^1.6.11",
@@ -13331,7 +13309,8 @@
                 "php-cs-fixer/accessible-object": "^1.1",
                 "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4",
                 "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4",
-                "phpunit/phpunit": "^9.6 || ^10.5.5",
+                "phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2",
+                "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0",
                 "symfony/yaml": "^5.4 || ^6.0 || ^7.0"
             },
             "suggest": {
@@ -13370,7 +13349,7 @@
             ],
             "support": {
                 "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
-                "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.48.0"
+                "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.54.0"
             },
             "funding": [
                 {
@@ -13378,7 +13357,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2024-01-19T21:44:39+00:00"
+            "time": "2024-04-17T08:12:13+00:00"
         },
         {
             "name": "hautelook/alice-bundle",
@@ -13462,16 +13441,16 @@
         },
         {
             "name": "monolog/monolog",
-            "version": "2.9.2",
+            "version": "2.9.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Seldaek/monolog.git",
-                "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f"
+                "reference": "a30bfe2e142720dfa990d0a7e573997f5d884215"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f",
-                "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f",
+                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/a30bfe2e142720dfa990d0a7e573997f5d884215",
+                "reference": "a30bfe2e142720dfa990d0a7e573997f5d884215",
                 "shasum": ""
             },
             "require": {
@@ -13492,8 +13471,8 @@
                 "mongodb/mongodb": "^1.8",
                 "php-amqplib/php-amqplib": "~2.4 || ^3",
                 "phpspec/prophecy": "^1.15",
-                "phpstan/phpstan": "^0.12.91",
-                "phpunit/phpunit": "^8.5.14",
+                "phpstan/phpstan": "^1.10",
+                "phpunit/phpunit": "^8.5.38 || ^9.6.19",
                 "predis/predis": "^1.1 || ^2.0",
                 "rollbar/rollbar": "^1.3 || ^2 || ^3",
                 "ruflin/elastica": "^7",
@@ -13548,7 +13527,7 @@
             ],
             "support": {
                 "issues": "https://github.com/Seldaek/monolog/issues",
-                "source": "https://github.com/Seldaek/monolog/tree/2.9.2"
+                "source": "https://github.com/Seldaek/monolog/tree/2.9.3"
             },
             "funding": [
                 {
@@ -13560,7 +13539,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-10-27T15:25:26+00:00"
+            "time": "2024-04-12T20:52:51+00:00"
         },
         {
             "name": "nelmio/alice",
@@ -13658,16 +13637,16 @@
         },
         {
             "name": "phpstan/phpstan",
-            "version": "1.10.57",
+            "version": "1.10.67",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpstan/phpstan.git",
-                "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e"
+                "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e",
-                "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e",
+                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/16ddbe776f10da6a95ebd25de7c1dbed397dc493",
+                "reference": "16ddbe776f10da6a95ebd25de7c1dbed397dc493",
                 "shasum": ""
             },
             "require": {
@@ -13710,13 +13689,9 @@
                 {
                     "url": "https://github.com/phpstan",
                     "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
-                    "type": "tidelift"
                 }
             ],
-            "time": "2024-01-24T11:51:34+00:00"
+            "time": "2024-04-16T07:22:02+00:00"
         },
         {
             "name": "roave/security-advisories",
@@ -13724,12 +13699,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/Roave/SecurityAdvisories.git",
-                "reference": "cea5a32b418b44dc5a480049f531f53563c26210"
+                "reference": "c9920ef42818bc65373cec1acc26bdee7a487e72"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/cea5a32b418b44dc5a480049f531f53563c26210",
-                "reference": "cea5a32b418b44dc5a480049f531f53563c26210",
+                "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/c9920ef42818bc65373cec1acc26bdee7a487e72",
+                "reference": "c9920ef42818bc65373cec1acc26bdee7a487e72",
                 "shasum": ""
             },
             "conflict": {
@@ -13745,7 +13720,7 @@
                 "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
                 "amazing/media2click": ">=1,<1.3.3",
                 "amphp/artax": "<1.0.6|>=2,<2.0.6",
-                "amphp/http": "<1.0.1",
+                "amphp/http": "<=1.7.2|>=2,<=2.1",
                 "amphp/http-client": ">=4,<4.4",
                 "anchorcms/anchor-cms": "<=0.12.7",
                 "andreapollastri/cipi": "<=3.1.15",
@@ -13762,6 +13737,7 @@
                 "athlon1600/php-proxy-app": "<=3",
                 "austintoddj/canvas": "<=3.4.2",
                 "automad/automad": "<=1.10.9",
+                "automattic/jetpack": "<9.8",
                 "awesome-support/awesome-support": "<=6.0.7",
                 "aws/aws-sdk-php": "<3.288.1",
                 "azuracast/azuracast": "<0.18.3",
@@ -13769,26 +13745,31 @@
                 "backpack/crud": "<3.4.9",
                 "bacula-web/bacula-web": "<8.0.0.0-RC2-dev",
                 "badaso/core": "<2.7",
-                "bagisto/bagisto": "<1.3.2",
+                "bagisto/bagisto": "<2.1",
                 "barrelstrength/sprout-base-email": "<1.2.7",
                 "barrelstrength/sprout-forms": "<3.9",
                 "barryvdh/laravel-translation-manager": "<0.6.2",
                 "barzahlen/barzahlen-php": "<2.0.1",
-                "baserproject/basercms": "<4.8",
+                "baserproject/basercms": "<5.0.9",
                 "bassjobsen/bootstrap-3-typeahead": ">4.0.2",
+                "bbpress/bbpress": "<2.6.5",
+                "bcosca/fatfree": "<3.7.2",
+                "bedita/bedita": "<4",
                 "bigfork/silverstripe-form-capture": ">=3,<3.1.1",
                 "billz/raspap-webgui": "<2.9.5",
                 "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3",
+                "blueimp/jquery-file-upload": "==6.4.4",
                 "bmarshall511/wordpress_zero_spam": "<5.2.13",
                 "bolt/bolt": "<3.7.2",
                 "bolt/core": "<=4.2",
                 "bottelet/flarepoint": "<2.2.1",
+                "bref/bref": "<2.1.17",
                 "brightlocal/phpwhois": "<=4.2.5",
                 "brotkrueml/codehighlight": "<2.7",
                 "brotkrueml/schema": "<1.13.1|>=2,<2.5.1",
                 "brotkrueml/typo3-matomo-integration": "<1.3.2",
                 "buddypress/buddypress": "<7.2.1",
-                "bugsnag/bugsnag-laravel": "<2.0.2",
+                "bugsnag/bugsnag-laravel": ">=2,<2.0.2",
                 "bytefury/crater": "<6.0.2",
                 "cachethq/cachet": "<2.5.1",
                 "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10",
@@ -13798,33 +13779,36 @@
                 "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
                 "cartalyst/sentry": "<=2.1.6",
                 "catfan/medoo": "<1.7.5",
+                "causal/oidc": "<2.1",
                 "cecil/cecil": "<7.47.1",
-                "centreon/centreon": "<22.10.0.0-beta1",
+                "centreon/centreon": "<22.10.15",
                 "cesnet/simplesamlphp-module-proxystatistics": "<3.1",
                 "chriskacerguis/codeigniter-restserver": "<=2.7.1",
                 "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3",
-                "ckeditor/ckeditor": "<4.17",
-                "cockpit-hq/cockpit": "<=2.6.3",
+                "ckeditor/ckeditor": "<4.24",
+                "cockpit-hq/cockpit": "<=2.6.3|==2.7",
                 "codeception/codeception": "<3.1.3|>=4,<4.1.22",
                 "codeigniter/framework": "<3.1.9",
-                "codeigniter4/framework": "<=4.4.2",
+                "codeigniter4/framework": "<4.4.7",
                 "codeigniter4/shield": "<1.0.0.0-beta8",
                 "codiad/codiad": "<=2.8.4",
-                "composer/composer": "<1.10.27|>=2,<2.2.22|>=2.3,<2.6.4",
-                "concrete5/concrete5": "<9.2.3",
+                "composer/composer": "<1.10.27|>=2,<2.2.23|>=2.3,<2.7",
+                "concrete5/concrete5": "<9.2.8",
                 "concrete5/core": "<8.5.8|>=9,<9.1",
                 "contao-components/mediaelement": ">=2.14.2,<2.21.1",
-                "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4",
-                "contao/core": ">=2,<3.5.39",
-                "contao/core-bundle": "<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10",
-                "contao/listing-bundle": ">=4,<4.4.8",
+                "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4",
+                "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4",
+                "contao/core": "<3.5.39",
+                "contao/core-bundle": "<4.13.40|>=5,<5.3.4",
+                "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8",
                 "contao/managed-edition": "<=1.5",
                 "corveda/phpsandbox": "<1.3.5",
                 "cosenary/instagram": "<=2.3",
-                "craftcms/cms": "<=4.5.10",
+                "craftcms/cms": "<4.6.2",
                 "croogo/croogo": "<4",
                 "cuyz/valinor": "<0.12",
                 "czproject/git-php": "<4.0.3",
+                "dapphp/securimage": "<3.6.6",
                 "darylldoyle/safe-svg": "<1.9.10",
                 "datadog/dd-trace": ">=0.30,<0.30.2",
                 "datatables/datatables": "<1.10.10",
@@ -13832,11 +13816,12 @@
                 "dbrisinajumi/d2files": "<1",
                 "dcat/laravel-admin": "<=2.1.3.0-beta",
                 "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3",
-                "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1",
+                "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4",
                 "desperado/xml-bundle": "<=0.1.7",
+                "devgroup/dotplant": "<2020.09.14-dev",
                 "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2",
                 "doctrine/annotations": "<1.2.7",
-                "doctrine/cache": "<1.3.2|>=1.4,<1.4.2",
+                "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
                 "doctrine/common": "<2.4.3|>=2.5,<2.5.1",
                 "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4",
                 "doctrine/doctrine-bundle": "<1.5.2",
@@ -13844,21 +13829,23 @@
                 "doctrine/mongodb-odm": "<1.0.2",
                 "doctrine/mongodb-odm-bundle": "<3.0.1",
                 "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
-                "dolibarr/dolibarr": "<18.0.2",
+                "dolibarr/dolibarr": "<=19",
                 "dompdf/dompdf": "<2.0.4",
                 "doublethreedigital/guest-entries": "<3.1.2",
-                "drupal/core": "<9.5.11|>=10,<10.0.11|>=10.1,<10.1.4",
-                "drupal/drupal": ">=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
+                "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2",
+                "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
                 "duncanmcclean/guest-entries": "<3.1.2",
                 "dweeves/magmi": "<=0.7.24",
-                "ec-cube/ec-cube": "<2.4.4",
+                "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2",
                 "ecodev/newsletter": "<=4",
                 "ectouch/ectouch": "<=2.7.2",
+                "egroupware/egroupware": "<16.1.20170922",
                 "elefant/cms": "<2.0.7",
                 "elgg/elgg": "<3.3.24|>=4,<4.0.5",
                 "elijaa/phpmemcacheadmin": "<=1.3",
                 "encore/laravel-admin": "<=1.8.19",
                 "endroid/qr-code-bundle": "<3.4.2",
+                "enhavo/enhavo-app": "<=0.13.1",
                 "enshrined/svg-sanitize": "<0.15",
                 "erusev/parsedown": "<1.7.2",
                 "ether/logs": "<3.0.4",
@@ -13873,7 +13860,7 @@
                 "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26",
                 "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
                 "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12",
-                "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.34",
+                "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35",
                 "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8",
                 "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev",
                 "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15",
@@ -13885,14 +13872,18 @@
                 "ezyang/htmlpurifier": "<4.1.1",
                 "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
                 "facturascripts/facturascripts": "<=2022.08",
+                "fastly/magento2": "<1.2.26",
                 "feehi/cms": "<=2.1.1",
                 "feehi/feehicms": "<=2.1.1",
                 "fenom/fenom": "<=2.12.1",
                 "filegator/filegator": "<7.8",
+                "filp/whoops": "<2.1.13",
+                "fineuploader/php-traditional-server": "<=1.2.2",
                 "firebase/php-jwt": "<6",
                 "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2",
                 "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6",
                 "flarum/core": "<1.8.5",
+                "flarum/flarum": "<0.1.0.0-beta8",
                 "flarum/framework": "<1.8.5",
                 "flarum/mentions": "<1.6.3",
                 "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15",
@@ -13905,21 +13896,24 @@
                 "fooman/tcpdf": "<6.2.22",
                 "forkcms/forkcms": "<5.11.1",
                 "fossar/tcpdf-parser": "<6.2.22",
-                "francoisjacquet/rosariosis": "<11",
+                "francoisjacquet/rosariosis": "<=11.5.1",
                 "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2",
                 "friendsofsymfony/oauth2-php": "<1.3",
                 "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
                 "friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
+                "friendsofsymfony1/swiftmailer": ">=4,<5.4.13|>=6,<6.2.5",
+                "friendsofsymfony1/symfony1": ">=1.1,<1.15.19",
                 "friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
                 "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6",
-                "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.1",
+                "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.3",
                 "froxlor/froxlor": "<=2.1.1",
+                "frozennode/administrator": "<=5.0.12",
                 "fuel/core": "<1.8.1",
                 "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3",
                 "gaoming13/wechat-php-sdk": "<=1.10.2",
                 "genix/cms": "<=1.1.11",
-                "getgrav/grav": "<=1.7.42.1",
-                "getkirby/cms": "<3.5.8.3-dev|>=3.6,<3.6.6.3-dev|>=3.7,<3.7.5.2-dev|>=3.8,<3.8.4.1-dev|>=3.9,<3.9.6",
+                "getgrav/grav": "<1.7.45",
+                "getkirby/cms": "<4.1.1",
                 "getkirby/kirby": "<=2.5.12",
                 "getkirby/panel": "<2.5.14",
                 "getkirby/starterkit": "<=3.7.0.2",
@@ -13931,7 +13925,7 @@
                 "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
                 "gree/jose": "<2.2.1",
                 "gregwar/rst": "<1.0.3",
-                "grumpydictator/firefly-iii": "<6.1.1",
+                "grumpydictator/firefly-iii": "<6.1.7",
                 "gugoan/economizzer": "<=0.9.0.0-beta1",
                 "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5",
                 "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5",
@@ -13946,18 +13940,20 @@
                 "httpsoft/http-message": "<1.0.12",
                 "hyn/multi-tenant": ">=5.6,<5.7.2",
                 "ibexa/admin-ui": ">=4.2,<4.2.3",
-                "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.4",
+                "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2",
                 "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3",
                 "ibexa/post-install": "<=1.0.4",
                 "ibexa/solr": ">=4.5,<4.5.4",
                 "ibexa/user": ">=4,<4.4.3",
                 "icecoder/icecoder": "<=8.1",
                 "idno/known": "<=1.3.1",
-                "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10",
+                "ilicmiljan/secure-props": ">=1.2,<1.2.2",
+                "illuminate/auth": "<5.5.10",
                 "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4",
                 "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40",
                 "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
                 "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
+                "imdbphp/imdbphp": "<=5.1.1",
                 "impresscms/impresscms": "<=1.4.5",
                 "impresspages/impresspages": "<=1.0.12",
                 "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3",
@@ -13965,6 +13961,7 @@
                 "in2code/lux": "<17.6.1|>=18,<24.0.2",
                 "innologi/typo3-appointments": "<2.0.6",
                 "intelliants/subrion": "<4.2.2",
+                "inter-mediator/inter-mediator": "==5.5",
                 "islandora/islandora": ">=2,<2.4.1",
                 "ivankristianto/phpwhois": "<=4.3",
                 "jackalope/jackalope-doctrine-dbal": "<1.7.4",
@@ -13972,11 +13969,12 @@
                 "james-heinrich/phpthumb": "<1.7.12",
                 "jasig/phpcas": "<1.3.3",
                 "jcbrand/converse.js": "<3.3.3",
+                "johnbillion/wp-crontrol": "<1.16.2",
                 "joomla/application": "<1.0.13",
                 "joomla/archive": "<1.1.12|>=2,<2.0.1",
                 "joomla/filesystem": "<1.6.2|>=2,<2.0.1",
                 "joomla/filter": "<1.4.4|>=2,<2.0.1",
-                "joomla/framework": ">=2.5.4,<=3.8.12",
+                "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12",
                 "joomla/input": ">=2,<2.0.2",
                 "joomla/joomla-cms": ">=2.5,<3.9.12",
                 "joomla/session": "<1.3.1",
@@ -13988,19 +13986,21 @@
                 "kelvinmo/simplexrd": "<3.1.1",
                 "kevinpapst/kimai2": "<1.16.7",
                 "khodakhah/nodcms": "<=3",
-                "kimai/kimai": "<2.1",
+                "kimai/kimai": "<2.13",
                 "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4",
                 "klaviyo/magento2-extension": ">=1,<3",
                 "knplabs/knp-snappy": "<=1.4.2",
                 "kohana/core": "<3.3.3",
                 "krayin/laravel-crm": "<1.2.2",
                 "kreait/firebase-php": ">=3.2,<3.8.1",
+                "kumbiaphp/kumbiapp": "<=1.1.1",
                 "la-haute-societe/tcpdf": "<6.2.22",
                 "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2",
                 "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1",
                 "laminas/laminas-http": "<2.14.2",
                 "laravel/fortify": "<1.11.1",
                 "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75",
+                "laravel/laravel": ">=5.4,<5.4.22",
                 "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
                 "latte/latte": "<2.10.8",
                 "lavalite/cms": "<=9",
@@ -14009,11 +14009,13 @@
                 "league/flysystem": "<1.1.4|>=2,<2.1.1",
                 "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3",
                 "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
+                "libreform/libreform": ">=2,<=2.0.8",
                 "librenms/librenms": "<2017.08.18",
                 "liftkit/database": "<2.13.2",
+                "lightsaml/lightsaml": "<1.3.5",
                 "limesurvey/limesurvey": "<3.27.19",
                 "livehelperchat/livehelperchat": "<=3.91",
-                "livewire/livewire": ">2.2.4,<2.2.6",
+                "livewire/livewire": ">2.2.4,<2.2.6|>=3.3.5,<3.4.9",
                 "lms/routes": "<2.1.1",
                 "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2",
                 "luyadev/yii-helpers": "<1.2.1",
@@ -14025,11 +14027,12 @@
                 "magneto/core": "<1.9.4.4-dev",
                 "maikuolan/phpmussel": ">=1,<1.6",
                 "mainwp/mainwp": "<=4.4.3.3",
-                "mantisbt/mantisbt": "<=2.25.7",
+                "mantisbt/mantisbt": "<2.26.1",
                 "marcwillmann/turn": "<0.3.3",
                 "matyhtf/framework": "<3.0.6",
-                "mautic/core": "<4.3",
-                "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35",
+                "mautic/core": "<4.4.12|>=5.0.0.0-alpha,<5.0.4",
+                "mdanter/ecc": "<2",
+                "mediawiki/core": "<1.36.2",
                 "mediawiki/matomo": "<2.4.3",
                 "mediawiki/semantic-media-wiki": "<4.0.2",
                 "melisplatform/melis-asset-manager": "<5.0.1",
@@ -14037,10 +14040,11 @@
                 "melisplatform/melis-front": "<5.0.1",
                 "mezzio/mezzio-swoole": "<3.7|>=4,<4.3",
                 "mgallegos/laravel-jqgrid": "<=1.3",
-                "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2.0.0.0-RC1-dev,<2.0.1",
+                "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1",
                 "microsoft/microsoft-graph-beta": "<2.0.1",
                 "microsoft/microsoft-graph-core": "<2.0.2",
                 "microweber/microweber": "<=2.0.4",
+                "mikehaertl/php-shellcommand": "<1.6.1",
                 "miniorange/miniorange-saml": "<1.4.3",
                 "mittwald/typo3_forum": "<1.2.1",
                 "mobiledetect/mobiledetectlib": "<2.8.32",
@@ -14048,13 +14052,17 @@
                 "mojo42/jirafeau": "<4.4",
                 "mongodb/mongodb": ">=1,<1.9.2",
                 "monolog/monolog": ">=1.8,<1.12",
-                "moodle/moodle": "<4.3.0.0-RC2-dev",
+                "moodle/moodle": "<=4.3.3",
                 "mos/cimage": "<0.7.19",
                 "movim/moxl": ">=0.8,<=0.10",
+                "movingbytes/social-network": "<=1.2.1",
                 "mpdf/mpdf": "<=7.1.7",
                 "munkireport/comment": "<4.1",
                 "munkireport/managedinstalls": "<2.6",
+                "munkireport/munki_facts": "<1.5",
                 "munkireport/munkireport": ">=2.5.3,<5.6.3",
+                "munkireport/reportdata": "<3.5",
+                "munkireport/softwareupdate": "<1.6",
                 "mustache/mustache": ">=2,<2.14.1",
                 "namshi/jose": "<2.2",
                 "neoan3-apps/template": "<1.1.1",
@@ -14074,6 +14082,7 @@
                 "nukeviet/nukeviet": "<4.5.02",
                 "nyholm/psr7": "<1.6.1",
                 "nystudio107/craft-seomatic": "<3.4.12",
+                "nzedb/nzedb": "<0.8",
                 "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
                 "october/backend": "<1.1.2",
                 "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1",
@@ -14082,34 +14091,40 @@
                 "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.2",
                 "omeka/omeka-s": "<4.0.3",
                 "onelogin/php-saml": "<2.10.4",
-                "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
+                "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5",
                 "open-web-analytics/open-web-analytics": "<1.7.4",
                 "opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev",
                 "openid/php-openid": "<2.3",
-                "openmage/magento-lts": "<20.2",
+                "openmage/magento-lts": "<20.5",
+                "opensolutions/vimbadmin": "<=3.0.15",
                 "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2",
                 "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5",
                 "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1",
                 "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1",
                 "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7",
                 "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1",
-                "oro/customer-portal": ">=4.2,<=4.2.8|>=5,<5.0.11|>=5.1,<5.1.1",
-                "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<5.0.8",
+                "oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3",
+                "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3",
                 "oxid-esales/oxideshop-ce": "<4.5",
+                "oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1",
                 "packbackbooks/lti-1-3-php-library": "<5",
                 "padraic/humbug_get_contents": "<1.1.2",
                 "pagarme/pagarme-php": "<3",
                 "pagekit/pagekit": "<=1.0.18",
                 "paragonie/random_compat": "<2",
-                "passbolt/passbolt_api": "<2.11",
+                "passbolt/passbolt_api": "<4.6.2",
+                "paypal/adaptivepayments-sdk-php": "<=3.9.2",
+                "paypal/invoice-sdk-php": "<=3.9",
                 "paypal/merchant-sdk-php": "<3.12",
+                "paypal/permissions-sdk-php": "<=3.9.1",
                 "pear/archive_tar": "<1.4.14",
+                "pear/auth": "<1.2.4",
                 "pear/crypt_gpg": "<1.6.7",
                 "pear/pear": "<=1.10.1",
                 "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1",
                 "personnummer/personnummer": "<3.0.2",
                 "phanan/koel": "<5.1.4",
-                "phenx/php-svg-lib": "<0.5.1",
+                "phenx/php-svg-lib": "<0.5.2",
                 "php-mod/curl": "<2.3.2",
                 "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1",
                 "phpems/phpems": ">=6,<=6.1.3",
@@ -14117,28 +14132,29 @@
                 "phpmailer/phpmailer": "<6.5",
                 "phpmussel/phpmussel": ">=1,<1.6",
                 "phpmyadmin/phpmyadmin": "<5.2.1",
-                "phpmyfaq/phpmyfaq": "<=3.1.7",
+                "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5",
+                "phpoffice/common": "<0.2.9",
                 "phpoffice/phpexcel": "<1.8",
                 "phpoffice/phpspreadsheet": "<1.16",
-                "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.34",
+                "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36",
                 "phpservermon/phpservermon": "<3.6",
                 "phpsysinfo/phpsysinfo": "<3.4.3",
-                "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3",
+                "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3",
                 "phpwhois/phpwhois": "<=4.2.5",
                 "phpxmlrpc/extras": "<0.6.1",
                 "phpxmlrpc/phpxmlrpc": "<4.9.2",
                 "pi/pi": "<=2.5",
-                "pimcore/admin-ui-classic-bundle": "<1.3.2",
+                "pimcore/admin-ui-classic-bundle": "<1.3.4",
                 "pimcore/customer-management-framework-bundle": "<4.0.6",
                 "pimcore/data-hub": "<1.2.4",
                 "pimcore/demo": "<10.3",
                 "pimcore/ecommerce-framework-bundle": "<1.0.10",
                 "pimcore/perspective-editor": "<1.5.1",
-                "pimcore/pimcore": "<11.1.1",
-                "pixelfed/pixelfed": "<=0.11.4",
+                "pimcore/pimcore": "<11.2.3",
+                "pixelfed/pixelfed": "<0.11.11",
                 "plotly/plotly.js": "<2.25.2",
                 "pocketmine/bedrock-protocol": "<8.0.2",
-                "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1",
+                "pocketmine/pocketmine-mp": "<5.11.2",
                 "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1",
                 "pressbooks/pressbooks": "<5.18",
                 "prestashop/autoupgrade": ">=4,<4.10.1",
@@ -14146,7 +14162,7 @@
                 "prestashop/blockwishlist": ">=2,<2.1.1",
                 "prestashop/contactform": ">=1.0.1,<4.3",
                 "prestashop/gamification": "<2.3.2",
-                "prestashop/prestashop": "<8.1.3",
+                "prestashop/prestashop": "<8.1.4",
                 "prestashop/productcomments": "<5.0.2",
                 "prestashop/ps_emailsubscription": "<2.6.1",
                 "prestashop/ps_facetedsearch": "<3.4.1",
@@ -14162,6 +14178,8 @@
                 "pusher/pusher-php-server": "<2.2.1",
                 "pwweb/laravel-core": "<=0.3.6.0-beta",
                 "pyrocms/pyrocms": "<=3.9.1",
+                "qcubed/qcubed": "<=3.1.1",
+                "quickapps/cms": "<=2.0.0.0-beta2",
                 "rainlab/blog-plugin": "<1.4.1",
                 "rainlab/debugbar-plugin": "<3.1",
                 "rainlab/user-plugin": "<=1.4.5",
@@ -14169,27 +14187,28 @@
                 "rap2hpoutre/laravel-log-viewer": "<0.13",
                 "react/http": ">=0.7,<1.9",
                 "really-simple-plugins/complianz-gdpr": "<6.4.2",
-                "remdex/livehelperchat": "<3.99",
-                "reportico-web/reportico": "<=7.1.21",
+                "redaxo/source": "<=5.15.1",
+                "remdex/livehelperchat": "<4.29",
+                "reportico-web/reportico": "<=8.1",
                 "rhukster/dom-sanitizer": "<1.0.7",
                 "rmccue/requests": ">=1.6,<1.8",
-                "robrichards/xmlseclibs": "<3.0.4",
+                "robrichards/xmlseclibs": ">=1,<3.0.4",
                 "roots/soil": "<4.1",
                 "rudloff/alltube": "<3.0.3",
                 "s-cart/core": "<6.9",
                 "s-cart/s-cart": "<6.9",
                 "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
-                "sabre/dav": "<1.7.11|>=1.8,<1.8.9",
+                "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9",
                 "scheb/two-factor-bundle": "<3.26|>=4,<4.11",
                 "sensiolabs/connect": "<4.2.3",
                 "serluck/phpwhois": "<=4.2.6",
                 "sfroemken/url_redirect": "<=1.2.1",
                 "sheng/yiicms": "<=1.2",
-                "shopware/core": "<=6.5.7.3",
-                "shopware/platform": "<=6.5.7.3",
+                "shopware/core": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1",
+                "shopware/platform": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1",
                 "shopware/production": "<=6.3.5.2",
-                "shopware/shopware": "<=5.7.17",
-                "shopware/storefront": "<=6.4.8.1",
+                "shopware/shopware": "<6.2.3",
+                "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev",
                 "shopxo/shopxo": "<2.2.6",
                 "showdoc/showdoc": "<2.10.4",
                 "silverstripe-australia/advancedreports": ">=1,<=2",
@@ -14199,18 +14218,18 @@
                 "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1",
                 "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
                 "silverstripe/framework": "<4.13.39|>=5,<5.1.11",
-                "silverstripe/graphql": "<3.8.2|>=4,<4.3.7|>=5,<5.1.3",
+                "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3",
                 "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1",
                 "silverstripe/recipe-cms": ">=4.5,<4.5.3",
                 "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
-                "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4",
+                "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4|>=2.1,<2.1.2",
                 "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1",
                 "silverstripe/subsites": ">=2,<2.6.1",
                 "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
-                "silverstripe/userforms": "<3",
+                "silverstripe/userforms": "<3|>=5,<5.4.2",
                 "silverstripe/versioned-admin": ">=1,<1.11.1",
                 "simple-updates/phpwhois": "<=1",
-                "simplesamlphp/saml2": "<1.15.4|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12",
+                "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12",
                 "simplesamlphp/simplesamlphp": "<1.18.6",
                 "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
                 "simplesamlphp/simplesamlphp-module-openid": "<1",
@@ -14232,22 +14251,23 @@
                 "spoonity/tcpdf": "<6.2.22",
                 "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
                 "ssddanbrown/bookstack": "<22.02.3",
-                "statamic/cms": "<4.36",
+                "statamic/cms": "<4.46",
                 "stormpath/sdk": "<9.9.99",
                 "studio-42/elfinder": "<2.1.62",
                 "subhh/libconnect": "<7.0.8|>=8,<8.1",
                 "sukohi/surpass": "<1",
-                "sulu/sulu": "<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8|==2.4.0.0-RC1|>=2.5,<2.5.10",
+                "sulu/sulu": "<1.6.44|>=2,<2.4.17|>=2.5,<2.5.13",
                 "sumocoders/framework-user-bundle": "<1.4",
+                "superbig/craft-audit": "<3.0.2",
                 "swag/paypal": "<5.4.4",
-                "swiftmailer/swiftmailer": ">=4,<5.4.5",
+                "swiftmailer/swiftmailer": "<6.2.5",
                 "swiftyedit/swiftyedit": "<1.2",
                 "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
                 "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
                 "sylius/grid-bundle": "<1.10.1",
                 "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1",
-                "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
-                "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2",
+                "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
+                "sylius/sylius": "<=1.12.13",
                 "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99",
                 "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4",
                 "symbiote/silverstripe-seed": "<6.0.3",
@@ -14257,7 +14277,7 @@
                 "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
                 "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4",
                 "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1",
-                "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3",
+                "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4",
                 "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
                 "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
                 "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
@@ -14275,7 +14295,7 @@
                 "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8",
                 "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8",
                 "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12",
-                "symfony/symfony": "<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
+                "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
                 "symfony/translation": ">=2,<2.0.17",
                 "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
                 "symfony/ux-autocomplete": "<2.11.2",
@@ -14283,39 +14303,43 @@
                 "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8",
                 "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
                 "symfony/webhook": ">=6.3,<6.3.8",
-                "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
+                "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2",
                 "symphonycms/symphony-2": "<2.6.4",
                 "t3/dce": "<0.11.5|>=2.2,<2.6.2",
                 "t3g/svg-sanitizer": "<1.0.3",
                 "t3s/content-consent": "<1.0.3|>=2,<2.0.2",
                 "tastyigniter/tastyigniter": "<3.3",
                 "tcg/voyager": "<=1.4",
-                "tecnickcom/tcpdf": "<6.2.22",
+                "tecnickcom/tcpdf": "<=6.7.4",
                 "terminal42/contao-tablelookupwizard": "<3.3.5",
                 "thelia/backoffice-default-template": ">=2.1,<2.1.2",
                 "thelia/thelia": ">=2.1,<2.1.3",
                 "theonedemon/phpwhois": "<=4.2.5",
-                "thinkcmf/thinkcmf": "<=5.1.7",
+                "thinkcmf/thinkcmf": "<6.0.8",
                 "thorsten/phpmyfaq": "<3.2.2",
                 "tikiwiki/tiki-manager": "<=17.1",
-                "tinymce/tinymce": "<5.10.9|>=6,<6.7.3",
+                "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1",
+                "tinymce/tinymce": "<7",
                 "tinymighty/wiki-seo": "<1.2.2",
                 "titon/framework": "<9.9.99",
                 "tobiasbg/tablepress": "<=2.0.0.0-RC1",
                 "topthink/framework": "<6.0.14",
                 "topthink/think": "<=6.1.1",
                 "topthink/thinkphp": "<=3.2.3",
+                "torrentpier/torrentpier": "<=2.4.1",
                 "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2",
                 "tribalsystems/zenario": "<=9.4.59197",
                 "truckersmp/phpwhois": "<=4.3.1",
                 "ttskch/pagination-service-provider": "<1",
                 "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3",
                 "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
-                "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
-                "typo3/cms-core": "<8.7.55|>=9,<9.5.44|>=10,<10.4.41|>=11,<11.5.33|>=12,<12.4.8",
+                "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
+                "typo3/cms-core": "<=8.7.56|>=9,<=9.5.45|>=10,<=10.4.42|>=11,<=11.5.34|>=12,<=12.4.10|==13",
                 "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
+                "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1",
                 "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
-                "typo3/cms-install": ">=12.2,<12.4.8",
+                "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5",
+                "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8",
                 "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30",
                 "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
                 "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3",
@@ -14329,8 +14353,13 @@
                 "userfrosting/userfrosting": ">=0.3.1,<4.6.3",
                 "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
                 "uvdesk/community-skeleton": "<=1.1.1",
+                "uvdesk/core-framework": "<=1.1.1",
                 "vanilla/safecurl": "<0.9.2",
+                "verbb/comments": "<1.5.5",
+                "verbb/image-resizer": "<2.0.9",
+                "verbb/knock-knock": "<1.2.8",
                 "verot/class.upload.php": "<=2.1.6",
+                "villagedefrance/opencart-overclocked": "<=1.11.1",
                 "vova07/yii2-fileapi-widget": "<0.1.9",
                 "vrana/adminer": "<4.8.1",
                 "waldhacker/hcaptcha": "<2.1.2",
@@ -14338,6 +14367,7 @@
                 "wallabag/wallabag": "<2.6.7",
                 "wanglelecc/laracms": "<=1.0.3",
                 "web-auth/webauthn-framework": ">=3.3,<3.3.4",
+                "web-feet/coastercms": "==5.5",
                 "webbuilders-group/silverstripe-kapost-bridge": "<0.4",
                 "webcoast/deferred-image-processing": "<1.0.2",
                 "webklex/laravel-imap": "<5.3",
@@ -14347,16 +14377,20 @@
                 "wikimedia/parsoid": "<0.12.2",
                 "willdurand/js-translation-bundle": "<2.1.1",
                 "winter/wn-backend-module": "<1.2.4",
+                "winter/wn-dusk-plugin": "<2.1",
                 "winter/wn-system-module": "<1.2.4",
-                "wintercms/winter": "<1.2.3",
+                "wintercms/winter": "<=1.2.3",
                 "woocommerce/woocommerce": "<6.6",
-                "wp-cli/wp-cli": "<2.5",
+                "wp-cli/wp-cli": ">=0.12,<2.5",
                 "wp-graphql/wp-graphql": "<=1.14.5",
+                "wp-premium/gravityforms": "<2.4.21",
                 "wpanel/wpanel4-cms": "<=4.3.1",
                 "wpcloud/wp-stateless": "<3.2",
+                "wpglobus/wpglobus": "<=1.9.6",
                 "wwbn/avideo": "<=12.4",
                 "xataface/xataface": "<3",
                 "xpressengine/xpressengine": "<3.0.15",
+                "yab/quarx": "<2.4.5",
                 "yeswiki/yeswiki": "<4.1",
                 "yetiforce/yetiforce-crm": "<=6.4",
                 "yidashi/yii2cmf": "<=2",
@@ -14373,12 +14407,13 @@
                 "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6",
                 "yoast-seo-for-typo3/yoast_seo": "<7.2.3",
                 "yourls/yourls": "<=1.8.2",
+                "yuan1994/tpadmin": "<=1.3.12",
                 "zencart/zencart": "<=1.5.7.0-beta",
                 "zendesk/zendesk_api_client_php": "<2.2.11",
-                "zendframework/zend-cache": "<2.4.8|>=2.5,<2.5.3",
+                "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
                 "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
                 "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
-                "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
+                "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5",
                 "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3",
                 "zendframework/zend-diactoros": "<1.8.4",
                 "zendframework/zend-feed": "<2.10.3",
@@ -14386,7 +14421,7 @@
                 "zendframework/zend-http": "<2.8.1",
                 "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
                 "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
-                "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
+                "zendframework/zend-mail": "<2.4.11|>=2.5,<2.7.2",
                 "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
                 "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
                 "zendframework/zend-validator": ">=2.3,<2.3.6",
@@ -14403,11 +14438,11 @@
                 "zendframework/zendservice-slideshare": "<2.0.2",
                 "zendframework/zendservice-technorati": "<2.0.2",
                 "zendframework/zendservice-windowsazure": "<2.0.2",
-                "zendframework/zendxml": "<1.0.1",
+                "zendframework/zendxml": ">=1,<1.0.1",
                 "zenstruck/collection": "<0.2.1",
                 "zetacomponents/mail": "<1.8.2",
                 "zf-commons/zfc-user": "<1.2.2",
-                "zfcampus/zf-apigility-doctrine": "<1.0.3",
+                "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
                 "zfr/zfr-oauth2-server-module": "<0.1.2",
                 "zoujingli/thinkadmin": "<=6.1.53"
             },
@@ -14447,20 +14482,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-01-24T22:04:16+00:00"
+            "time": "2024-04-26T17:04:41+00:00"
         },
         {
             "name": "symfony/browser-kit",
-            "version": "v5.4.35",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/browser-kit.git",
-                "reference": "2f6f979b579ed1c051465c3c2fb81daf5bb4a002"
+                "reference": "4c5d1a88ceee2b1c5c0b400b0137989ec34f70fa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/browser-kit/zipball/2f6f979b579ed1c051465c3c2fb81daf5bb4a002",
-                "reference": "2f6f979b579ed1c051465c3c2fb81daf5bb4a002",
+                "url": "https://api.github.com/repos/symfony/browser-kit/zipball/4c5d1a88ceee2b1c5c0b400b0137989ec34f70fa",
+                "reference": "4c5d1a88ceee2b1c5c0b400b0137989ec34f70fa",
                 "shasum": ""
             },
             "require": {
@@ -14503,7 +14538,7 @@
             "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/browser-kit/tree/v5.4.35"
+                "source": "https://github.com/symfony/browser-kit/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -14519,20 +14554,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-01-23T13:51:25+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/css-selector",
-            "version": "v5.4.26",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/css-selector.git",
-                "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a"
+                "reference": "0934c9f1d433776f25c629bdc93f3e157d139e08"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/css-selector/zipball/0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a",
-                "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a",
+                "url": "https://api.github.com/repos/symfony/css-selector/zipball/0934c9f1d433776f25c629bdc93f3e157d139e08",
+                "reference": "0934c9f1d433776f25c629bdc93f3e157d139e08",
                 "shasum": ""
             },
             "require": {
@@ -14569,7 +14604,7 @@
             "description": "Converts CSS selectors to XPath expressions",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/css-selector/tree/v5.4.26"
+                "source": "https://github.com/symfony/css-selector/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -14585,20 +14620,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-07-07T06:10:25+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/debug-bundle",
-            "version": "v5.4.26",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/debug-bundle.git",
-                "reference": "17c372891d4554d5d2f5cf602aef02c859ad52d8"
+                "reference": "9df8c72d6922835c3bf6c58d9936efc3eeed039d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/17c372891d4554d5d2f5cf602aef02c859ad52d8",
-                "reference": "17c372891d4554d5d2f5cf602aef02c859ad52d8",
+                "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/9df8c72d6922835c3bf6c58d9936efc3eeed039d",
+                "reference": "9df8c72d6922835c3bf6c58d9936efc3eeed039d",
                 "shasum": ""
             },
             "require": {
@@ -14648,7 +14683,7 @@
             "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/debug-bundle/tree/v5.4.26"
+                "source": "https://github.com/symfony/debug-bundle/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -14664,20 +14699,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-07-11T21:42:03+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/dom-crawler",
-            "version": "v5.4.32",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/dom-crawler.git",
-                "reference": "728f1fc136252a626ba5a69c02bd66a3697ff201"
+                "reference": "1dffb111b038412b028caba029240e379fda85b2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/728f1fc136252a626ba5a69c02bd66a3697ff201",
-                "reference": "728f1fc136252a626ba5a69c02bd66a3697ff201",
+                "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/1dffb111b038412b028caba029240e379fda85b2",
+                "reference": "1dffb111b038412b028caba029240e379fda85b2",
                 "shasum": ""
             },
             "require": {
@@ -14723,7 +14758,7 @@
             "description": "Eases DOM navigation for HTML and XML documents",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/dom-crawler/tree/v5.4.32"
+                "source": "https://github.com/symfony/dom-crawler/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -14739,27 +14774,27 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-11-17T20:43:48+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/http-client",
-            "version": "v5.4.35",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-client.git",
-                "reference": "53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3"
+                "reference": "3cdc551aa98173bb8bac7e5ee49f3526abde0b04"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-client/zipball/53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3",
-                "reference": "53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3",
+                "url": "https://api.github.com/repos/symfony/http-client/zipball/3cdc551aa98173bb8bac7e5ee49f3526abde0b04",
+                "reference": "3cdc551aa98173bb8bac7e5ee49f3526abde0b04",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.2.5",
                 "psr/log": "^1|^2|^3",
                 "symfony/deprecation-contracts": "^2.1|^3",
-                "symfony/http-client-contracts": "^2.4",
+                "symfony/http-client-contracts": "^2.5.3",
                 "symfony/polyfill-php73": "^1.11",
                 "symfony/polyfill-php80": "^1.16",
                 "symfony/service-contracts": "^1.0|^2|^3"
@@ -14775,7 +14810,7 @@
                 "amphp/http-client": "^4.2.1",
                 "amphp/http-tunnel": "^1.0",
                 "amphp/socket": "^1.1",
-                "guzzlehttp/promises": "^1.4",
+                "guzzlehttp/promises": "^1.4|^2.0",
                 "nyholm/psr7": "^1.0",
                 "php-http/httplug": "^1.0|^2.0",
                 "php-http/message-factory": "^1.0",
@@ -14814,7 +14849,7 @@
                 "http"
             ],
             "support": {
-                "source": "https://github.com/symfony/http-client/tree/v5.4.35"
+                "source": "https://github.com/symfony/http-client/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -14830,20 +14865,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2024-01-29T14:02:34+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/http-client-contracts",
-            "version": "v2.5.2",
+            "version": "v2.5.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-client-contracts.git",
-                "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70"
+                "reference": "e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70",
-                "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70",
+                "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1",
+                "reference": "e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1",
                 "shasum": ""
             },
             "require": {
@@ -14892,7 +14927,7 @@
                 "standards"
             ],
             "support": {
-                "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2"
+                "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.3"
             },
             "funding": [
                 {
@@ -14908,7 +14943,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-04-12T15:48:08+00:00"
+            "time": "2024-03-26T19:42:53+00:00"
         },
         {
             "name": "symfony/maker-bundle",
@@ -15006,16 +15041,16 @@
         },
         {
             "name": "symfony/monolog-bridge",
-            "version": "v5.4.31",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/monolog-bridge.git",
-                "reference": "3e295d9b0a873476356cb6cff0ce39b3f528b387"
+                "reference": "c61589f4ba11236cb68433123c99dd2d77ab9b43"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/3e295d9b0a873476356cb6cff0ce39b3f528b387",
-                "reference": "3e295d9b0a873476356cb6cff0ce39b3f528b387",
+                "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/c61589f4ba11236cb68433123c99dd2d77ab9b43",
+                "reference": "c61589f4ba11236cb68433123c99dd2d77ab9b43",
                 "shasum": ""
             },
             "require": {
@@ -15070,7 +15105,7 @@
             "description": "Provides integration for Monolog with various Symfony components",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.31"
+                "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -15086,7 +15121,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-10-31T07:58:33+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "symfony/monolog-bundle",
@@ -15171,16 +15206,16 @@
         },
         {
             "name": "symfony/phpunit-bridge",
-            "version": "v6.4.2",
+            "version": "v6.4.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/phpunit-bridge.git",
-                "reference": "bd0455b7888e4adac29cf175d819c51f88fed942"
+                "reference": "a33ca737283c76617c4089a8425c7785b344e283"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/bd0455b7888e4adac29cf175d819c51f88fed942",
-                "reference": "bd0455b7888e4adac29cf175d819c51f88fed942",
+                "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/a33ca737283c76617c4089a8425c7785b344e283",
+                "reference": "a33ca737283c76617c4089a8425c7785b344e283",
                 "shasum": ""
             },
             "require": {
@@ -15232,7 +15267,7 @@
             "description": "Provides utilities for PHPUnit, especially user deprecation notices management",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.2"
+                "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.7"
             },
             "funding": [
                 {
@@ -15248,20 +15283,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-19T09:12:31+00:00"
+            "time": "2024-04-18T09:22:46+00:00"
         },
         {
             "name": "symfony/web-profiler-bundle",
-            "version": "v5.4.34",
+            "version": "v5.4.39",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/web-profiler-bundle.git",
-                "reference": "8b3344d0d7faeb6c52e60d4a3657405c5c68625f"
+                "reference": "35f4b10747a08277fe3901bb0ed7b32f5cb41213"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8b3344d0d7faeb6c52e60d4a3657405c5c68625f",
-                "reference": "8b3344d0d7faeb6c52e60d4a3657405c5c68625f",
+                "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/35f4b10747a08277fe3901bb0ed7b32f5cb41213",
+                "reference": "35f4b10747a08277fe3901bb0ed7b32f5cb41213",
                 "shasum": ""
             },
             "require": {
@@ -15312,7 +15347,7 @@
             "description": "Provides a development tool that gives detailed information about the execution of any request",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.34"
+                "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.39"
             },
             "funding": [
                 {
@@ -15328,7 +15363,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-12-20T14:42:24+00:00"
+            "time": "2024-04-18T08:26:06+00:00"
         },
         {
             "name": "theofidry/alice-data-fixtures",
diff --git a/config/domain/aipd/translations/messages.fr.yaml b/config/domain/aipd/translations/messages.fr.yaml
index 6ab77bda00ed987bd16ee54a6341a843b61396b8..00b02a08d72e636f29d66c3e7514bcc7823d560c 100644
--- a/config/domain/aipd/translations/messages.fr.yaml
+++ b/config/domain/aipd/translations/messages.fr.yaml
@@ -1,6 +1,9 @@
 aipd:
     treatment:
         label:
+            last_aipd: Dernière AIPD
+            no_conformite_traitement: Aucune AIPD et aucune évaluation de conformité du traitement
+            no_aipd: Aucune AIPD
             avis_aipd: Avis AIPD
             validation_in_progress: En cours de validation
 
@@ -126,7 +129,7 @@ aipd:
             step_start: Une fois le modèle choisi, il n'est plus possible de revenir en arrière.
             step_1: Cette étape permet d’analyser la conformité des critères relatifs à la description du traitement. Pour chaque description, indiquer le niveau de conformité, et éventuellement une justification et une image.
             step_2: Cette étape permet de prendre connaissance des informations renseignées par l’évaluation de la conformité du traitement. Pour chaque critère, justifier le contexte lorsque cela est possible.
-            step_3: Cette étape permet d’évaluer l’impact potentiel des différents scénarios de menace. Pour chaque scénario de menace, lorsque cela est possible, indiquer le critère DIC ( Disponibilité ; Intégrité ; Confidentialité) ainsi que la vraisemblance et la gravité des menaces. Adapter la précision en fonction du contexte.
+            step_3: Cette étape permet d’évaluer l’impact potentiel des différents scénarios de menace. Pour chaque scénario de menace, lorsque cela est possible, indiquer le critère DIC (Disponibilité ; Intégrité ; Confidentialité) ainsi que la vraisemblance et la gravité des menaces. Adapter la précision en fonction du contexte.
             step_4: Cette étape permet d’évaluer les mesures de protection mises en œuvre. Pour chacune des mesures, indiquer le niveau de mise en œuvre et adapter le détail en fonction.
             step_final: Cette étape finale permet de valider l’instruction de l’AIPD. Une fois validée, il ne sera plus possible de la modifier.
             contexte: Description
@@ -144,6 +147,7 @@ aipd:
         action:
             create: Réaliser une AIPD
             edit: Modifier l'AIPD
+            print: Imprimer l'AIPD
             modele: Choisir ce modèle
             new_submit : Créer l'AIPD
             edit_submit : Modifier l'AIPD
diff --git a/config/domain/aipd/validation/critere_principe_fondamental.yaml b/config/domain/aipd/validation/critere_principe_fondamental.yaml
index a4ab52f9f6fd99003c4a86d81be2f22b0e9e67d2..831d27cb3166584924bb27c153767e4937cb02d1 100644
--- a/config/domain/aipd/validation/critere_principe_fondamental.yaml
+++ b/config/domain/aipd/validation/critere_principe_fondamental.yaml
@@ -2,7 +2,7 @@ App\Domain\Aipd\Model\CriterePrincipeFondamental:
     properties:
         fichier:
             - File:
-                  maxSize: 3072k
+                  maxSize: '%APP_MAX_UPLOAD_SIZE%'
                   mimeTypes:
                       - image/jpeg
                       - image/png
diff --git a/config/domain/documentation/translations/messages.fr.yaml b/config/domain/documentation/translations/messages.fr.yaml
index 864bd260c017a1c46455fb0282e8100922a0d84d..1effbfe236d1c9bc7586fd007a573bfa7699ea96 100644
--- a/config/domain/documentation/translations/messages.fr.yaml
+++ b/config/domain/documentation/translations/messages.fr.yaml
@@ -8,7 +8,7 @@ documentation:
             grid: Afficher en grille
             new_submit: Créer le document
             edit_submit: Modifier le document
-            removeThumb: Supprimer la vignette
+            removeThumb: Supprimer la miniature
             copy: Copier
         tab:
             file: Fichier
diff --git a/config/domain/page/translations/messages.fr.yaml b/config/domain/page/translations/messages.fr.yaml
index 5f4aa80f9e9b1d3a07cfdedaa232eba9fdcd8188..90f17292e5966769cb79392f389b697e36ac8257 100644
--- a/config/domain/page/translations/messages.fr.yaml
+++ b/config/domain/page/translations/messages.fr.yaml
@@ -2,12 +2,12 @@ page:
     declaration:
         title: Déclaration d'accessibilité
         breadcrumb: Déclaration d'accessibilité
-        version: 1.7.12
-        result: non conforme
-        rate: 24,62
-        average_rate: 37,82
+        version: 2.4.5
+        result: partiellement conforme
+        rate: 51,43
+        average_rate: 68,82
         created_at: 31 août 2023
-        updated_at: 06 septembre 2023
+        updated_at: 18 avril 2024
     schema_pluriannuel_2022_2024:
         title: Schéma pluriannuel de mise en accessibilité 2022 – 2024
         breadcrumb: Schéma pluriannuel 2022 – 2024
@@ -27,7 +27,7 @@ page:
         title: Plan annuel 2024
         breadcrumb: Plan annuel 2024
         created_at: 08 décembre 2023
-        updated_at: 08 décembre 2023
+        updated_at: 18 avril 2024
     credit:
         title: Crédit
         breadcrumb: Crédit
diff --git a/config/domain/registry/translations/messages.fr.yaml b/config/domain/registry/translations/messages.fr.yaml
index 27b53baa9e21aff88e0008f6b84961962a911afd..1c7ba06d634e29ebeacf41b66af2d93e2d60d88a 100644
--- a/config/domain/registry/translations/messages.fr.yaml
+++ b/config/domain/registry/translations/messages.fr.yaml
@@ -10,8 +10,8 @@ registry:
             new_submit: Créer le traitement
             edit_submit: Modifier le traitement
             edit_config_submit: Modifier la configuration
-            add_delay: Ajouter un délai de conservation
-            delete_delay: Supprimer le délai de conservation
+            add_delay: Ajouter une durée de conservation
+            delete_delay: Supprimer la durée de conservation
             deactivate: Désactiver
         title:
             create: Créer un traitement
@@ -21,7 +21,7 @@ registry:
             list_active: Actifs
             list_inactive: Inactifs
             show: Visualiser un traitement
-            configure: Configurer le registre des traitements
+            configure: Configurer le registre public des traitements
             archive: Désactiver un traitement
         breadcrumb:
             create: Créer
@@ -30,6 +30,7 @@ registry:
             edit: Modifier "%name%"
             list: Liste des traitements
             show: Visualiser "%name%"
+            configure: Configurer le registre public des traitements
             archive: Désactiver
         label:
             statut: Statut
@@ -68,7 +69,7 @@ registry:
             estimated_concerned_people: Nombre de personnes concernées
             tools_if_inactif: Logiciels et supports
             paper_processing: Traitement papier
-            shelflife: Délai de conservation
+            shelflife: Durée de conservation
             shelflife_name: Nom
             shelflife_duration: Durée
             shelflife_ultimate_fate: Sort final
@@ -83,9 +84,11 @@ registry:
             security_saving: Sauvegarde
             security_update: Mise à jour
             security_other: Autres
-            security_entitled_persons: À tout moment il est possible de ressortir les personnes habilitées
+            security_entitled_persons: À tout moment, il est possible de ressortir les personnes habilitées
             security_open_accounts: La personne ou la procédure qui permet d’ouvrir des comptes est clairement identifiée
             security_specificities_delivered: Les spécificités de sensibilisation liées à ce traitement sont délivrées
+            last_conformite_traitement: Dernière évaluation
+            no_conformite_traitement: Aucune évaluation de conformité du traitement
             conformite_traitement: Conformité du traitement
             conformite_traitement_created_at: Conformité du traitement - Date création
             conformite_traitement_updated_at: Conformité du traitement - Date modification
@@ -110,7 +113,7 @@ registry:
             conformite: Conformité du traitement
             data_category: Catégorie des données
             details: Détails
-            last_aipd: Dernière analyse d'impact réalisée
+            last_aipd: Analyse d'impact
             recipients: Destination
             security: Mesures de sécurité et confidentialité
             specific: Traitement spécifique
@@ -171,8 +174,8 @@ registry:
     tool:
         title:
             list: Liste des logiciels et supports
-            create: Création d'un logiciel ou support
-            edit: Modification d'un logiciel ou support
+            create: Créer un logiciel ou support
+            edit: Modifier un logiciel ou support
             delete: Suppression d'un logiciel ou support
             show: Visualiser un logiciel ou support
         breadcrumb:
diff --git a/config/domain/reporting/translations/messages.fr.yaml b/config/domain/reporting/translations/messages.fr.yaml
index b88e79cb8d898c067757b5c727d2bcb50a8eb534..cc25ae4b4e81cf8293e019c1c47cd53b4a609486 100644
--- a/config/domain/reporting/translations/messages.fr.yaml
+++ b/config/domain/reporting/translations/messages.fr.yaml
@@ -4,8 +4,9 @@ reporting:
         breadcrumb: Tableau de bord
         tab:
             registry_contractors: Sous-traitants
+            registry_requests: Demandes
             registry_action_plan: Plan d'actions
-            registry_action_plan_subtitle: prochaines
+            registry_action_plan_subtitle: prochaines actions
             maturity_survey: Indice de maturité
             conformite_traitements: Conformité des traitements
             conformite_structure: Conformité de la structure
@@ -29,7 +30,7 @@ reporting:
             maturity_referentiel_error: Le référentiel contient moins de trois sections
             maturity_survey_average: Structures ayant fait un indice de maturité (12 derniers mois)
             total_structures: Structures
-            mutual_dpd: DPD
+            mutual_dpd: DPD mutualisé
             export_registry_treatments: Exporter les traitements
             export_registry_treatments_csv: Exporter les traitements en CSV
             export_registry_contractors: Exporter les sous-traitants
@@ -38,6 +39,13 @@ reporting:
             export_registry_mesurements_csv: Exporter les actions de protection en CSV
             export_user_collectivities: Exporter les structures
             export_user_collectivities_csv: Exporter les structures en CSV
+        action:
+            read_more: Plus d'informations
+            read_more_requests: Plus d'informations sur les demandes
+            read_more_aipd: Plus d'informations sur les AIPD
+            read_more_action_plan: Plus d'informations sur le plan d'actionsc
+            read_more_violation: Plus d'informations sur les violations
+            read_more_mesurements: Plus d'informations sur les actions de protection
 
     journalisation:
         title: Journalisation des actions
diff --git a/config/domain/user/translations/messages.fr.yaml b/config/domain/user/translations/messages.fr.yaml
index f740961121eb302069e892d4e9aeacf751982996..753a82a8a2ea5266877ae54f491d45a5d16ceaea 100644
--- a/config/domain/user/translations/messages.fr.yaml
+++ b/config/domain/user/translations/messages.fr.yaml
@@ -17,7 +17,7 @@ user:
             show: Visualiser "%name%"
             my_organization_show: Ma structure
         action:
-            back_to_show: Retour à la visualisation
+            back_to_show: Retourner à la visualisation
             new: Nouvelle structure
             new_submit: Créer la structure
             edit_submit: Modifier la structure
@@ -163,7 +163,7 @@ user:
             locked: Compte bloqué
             reset_password: Réinitialisation de mot de passe
         action:
-            back_to_login: Retour à la page de connexion
+            back_to_login: Retourner à la page de connexion
             forget_password: Mot de passe oublié ?
             sso_login: Se connecter avec %service%
             reset_submit: Modifier le mot de passe
diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml
index a74b240abe8b32085de990a48bcf8dffa3a4d3e4..fcc694b9430518111839ba137cdde11356fb0301 100644
--- a/config/packages/framework.yaml
+++ b/config/packages/framework.yaml
@@ -1,5 +1,5 @@
 parameters:
-    app.version: "2.4.4"
+    app.version: "2.4.5"
 
 framework:
     secret: '%env(APP_SECRET)%'
diff --git a/doc/developpement/1-lancer-stack-developpement.md b/doc/developpement/1-lancer-stack-developpement.md
index a309068828e198b0bc9c7b27c67d311e809e4634..28839d65f97c17edd0bf9413bd2a44731b034d80 100644
--- a/doc/developpement/1-lancer-stack-developpement.md
+++ b/doc/developpement/1-lancer-stack-developpement.md
@@ -1,72 +1,83 @@
-Lancer la Stack de développement
+Lancer la stack de développement
 ================================
 
-## Pré-requis
-* docker
+1. [Pré-requis](#1-pré-requis)
+2. [Installation](#2-installation)
+    - [SSL](#ssl)
+3. [Utilisation basique](#3-utilisation-basique)
+4. [Lancer les tests](#4-lancer-les-tests)
+5. [Usages de développement](#5-usages-de-développement)
 
-## Installation
-Copier le fichier `.env.dist` vers `.env` et éditez le avec les valeurs vous correspondant.
+## 1. Pré-requis
 
-Si vous utilisez un processeur ARM (raspberry pi, mac M1 / M2) vous pouvez notamment changer les images docker pour des images ARM en remplaçant
+* Docker
 
-```
+## 2. Installation
+
+Copier le fichier `.env.dist` vers `.env` et éditez le avec les valeurs vous correspondant. Pour plus d'informations, consultez le [paramétrage complémentaire](../maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md#paramétrage-complémentaire-et-env) du .env.
+
+Si vous utilisez un processeur ARM (raspberry pi, mac M1 / M2) vous pouvez notamment changer les images docker pour des images ARM en remplaçant :
+```bash
 DOCKER_IMAGE_PHP=gitlab.adullact.net:4567/soluris/madis/php:1.2
 DOCKER_IMAGE_NGINX=gitlab.adullact.net:4567/soluris/madis/nginx:1.2
 ```
-par 
-```
+Par :
+```bash
 DOCKER_IMAGE_PHP=gitlab.adullact.net:4567/soluris/madis/php:1.2-arm64
 DOCKER_IMAGE_NGINX=gitlab.adullact.net:4567/soluris/madis/nginx:1.2-arm64
 ```
 
-Ensuite, connectez votre docker à Gitlab avec vos identifiants.  
-Cela vous permettra d'accéder aux images Docker du projet.
+Ensuite, connectez votre docker à GitLab avec vos identifiants. Cela vous permettra d'accéder aux images Docker du projet.
 ```bash
 docker login gitlab.adullact.net:4567
 ```
 
-#### SSL
+### SSL
 
-Afin d'obtenir des certificats autosignés vous avez besoin d'installer [mkcert](https://github.com/FiloSottile/mkcert) sur votre machine.1  
-Créez le certificat et la clef pour votre environnement de développement
+Afin d'obtenir des certificats auto-signés, vous avez besoin d'installer [mkcert](https://github.com/FiloSottile/mkcert) sur votre machine.
 
+Créez le certificat et la clef pour votre environnement de développement.
 ```bash
 mkcert -key-file key.pem -cert-file cert.pem 127.0.0.1 madis.local
 ```
+
 Puis copiez les fichiers créés dans le dossier `docker/nginx/certificats/default`.
 ```bash
 cp *.pem ./docker/nginx/certificats/default/
 ```
 
-
-Finissez par initialiser le projet.  
-Pour cela le fichier `docker-service` fourni un raccourci pour lancer toute la Stack.
+Finissez par initialiser le projet. Pour cela, le fichier `docker-service` fourni un raccourci pour lancer toute la stack.
 ```bash
 ./docker-service initialize
 ```
 
 Pour aller plus loin, vous pouvez étudier le fichier `docker-service` pour voir les commandes lancées.
 
-## Utilisation basique
+## 3. Utilisation basique
 
-* Project URL : http://127.0.0.1:8888 ou https://127.0.0.1 
+* URL du projet : `http://127.0.0.1:8888` ou `https://127.0.0.1`
 
-## Quelques identifiants clés
+Quelques identifiants clés :
+- **Administrateur :** `admin@awkan.fr` / `111111` ;
+- **Gestionnaire 1:** `collectivite@awkan.fr` / `111111` ;
+- **Gestionnaire 2:** `collectivite2@awkan.fr` / `111111` ;
+- **Lecteur :** `lecteur@awkan.fr` / `111111` ;
+- **Utilisateur inactif :** `inactif@awkan.fr` / `111111`.
 
-- **Admin:** admin@awkan.fr / 111111
-- **Collectivity 1:** collectivite@awkan.fr / 111111
-- **Collectivity 2:** collectivite2@awkan.fr / 111111
-- **Preview:** lecteur@awkan.fr / 111111
-- **Inactive:** inactif@awkan.fr / 111111
+## 4. Lancer les tests
 
-## Lancer les tests
 ```bash
-./docker-service tests              # Run quality tests, unit tests and functionnal tests
-./docker-service unitTests          # Run unit tests
-./docker-service qualityTests       # Run quality tests
+./docker-service tests         # Run quality tests, unit tests and functionnal tests
+./docker-service unitTests     # Run unit tests
+./docker-service qualityTests  # Run quality tests
 ```
 
-## Usages de développement
-* Le process Git utilisé est le Git Flow
-* Les tests sont écrits en PHPUnit
-* Le style de code doit être vérifié avec CSFixer et PHPLint avant les commits
+En savoir plus sur la [génération de rapports](2-architecture-et-qualite.md#3-générer-un-rapport-gitlab-page).
+
+## 5. Usages de développement
+
+* Le process Git utilisé est le Git Flow ;
+* Les tests sont écrits en PHPUnit ;
+* Le style de code doit être vérifié avec CSFixer et PHPLint avant les commits.
+
+En savoir plus sur l'[architecture applicative](2-architecture-et-qualite.md#architecture-et-qualité) et sur les [déploiements](3-deployer-une-nouvelle-version.md#déployer-une-nouvelle-version).
diff --git a/doc/developpement/2-architecture-applicative.md b/doc/developpement/2-architecture-applicative.md
deleted file mode 100644
index e21eb634fa2de2baaf4e4aad12acef8161c7f9dc..0000000000000000000000000000000000000000
--- a/doc/developpement/2-architecture-applicative.md
+++ /dev/null
@@ -1,53 +0,0 @@
-Architecture applicative
-========================
-
-### Organisation des dossiers
-
-L’architecture de base d’un projet Symfony Flex est la suivante : 
-
-![Image 005](Image 005.jpg)
-
-L’architecture est standard mais voici un petit rappel :
-- *.env* et *.env.dist* sont les paramètres de l’application
-
-- *composer.json* et *composer.lock* sont les gestionnaires de versions de paquets
-
-- *config/bundles.php* contient la configuration des librairies
-
-- *config/packages* contient la définition et la configuration des librairies utilisées (des paramétrages spécifiques peuvent être ajoutés selon l’environnement, il s’agit des dossiers *config/dev/\** et config/test/*).
-
-- *config/routes.yaml* contient la définition des routes de l’application
-
-- *config/services.yaml* contient la définition des services 
-
-- *public/index.php* est le fichier qui permet de lancer l’application (le serveur web pointe sur ce fichier)
-
-- *src* contient le code métier de l’application (Controller par exemple)
-
-- vendor contient les librairies (généré par composer)
-
-### Concept de développement DDD & Hexagonal
-
-![Image 006](Image 006.jpg)
-
-
-
-Vous vous y perdez sans doute dans cette arborescence ? Vous pouvez tout d’abord commencer par vous renseigner sur :
-
-- L’architecture hexagonale : <http://blog.xebia.fr/2016/03/16/perennisez-votre-metier-avec-larchitecture-hexagonale/>
-
-- Le Domain Driven Development : <https://blog.xebia.fr/2009/01/28/ddd-la-conception-qui-lie-le-fonctionnel-et-le-code/>
-
- Le concept de développement utilisé ici est un mélange de ces deux principes.
-
-### Utilisation de l’architecture hexagonale
-
-L’architecture hexagonale est utilisée ici pour s’affranchir de la contrainte technique MySQL. Il sera ainsi très simple de connecter une autre source de donnée. On pourra facilement brancher une API, une base de données Postgres par exemple, si besoin.
-
-C’est pour cela que vous possédez deux dossiers : Domain et Infrastructure.
-
--	Domain va contenir les classes PHP utilisées dans l’application. Elles sont décorrélées des implémentations de Base de données et va mettre à disposition des Interfaces PHP qu’il faudra implémenter pour récupérer les données.
-
--	Infrastructure va contenir les implémentations aux interfaces du Domain. On y trouvera ici toute l’implémentation technique pour chaque source de données que l’on souhaitera brancher sur l’application. Actuellement, l’implémentation utilisée est ORM (soit le dossier *Infrastructure/ORM*). On va y trouver notamment le mapping Doctrine pour la création de la base de données et l’implémentation des *Repository* qui vont être utilisés dans l’application.
-
-La configuration Symfony de cette architecture se déroule dans le dossier *config/domain* et *config/infrastructure* qui va respecter la même architecture précédemment expliqué avec ces mêmes dossiers.
diff --git a/doc/developpement/2-architecture-et-qualite.md b/doc/developpement/2-architecture-et-qualite.md
new file mode 100644
index 0000000000000000000000000000000000000000..81daeb7e94f5f2090804e0ee625a6a775737890d
--- /dev/null
+++ b/doc/developpement/2-architecture-et-qualite.md
@@ -0,0 +1,58 @@
+Architecture et qualité
+========================
+
+1. [Architecture applicative](#1-architecture-applicative)
+    - [Organisation des dossiers](#organisation-des-dossiers)
+    - [Utilisation de l’architecture hexagonale](#utilisation-de-larchitecture-hexagonale)
+2. [Bonnes pratiques de développement](#2-bonnes-pratiques-de-développement)
+3. [Générer un rapport GitLab Page](#3-générer-un-rapport-gitlab-page)
+
+## 1. Architecture applicative
+
+### Organisation des dossiers
+
+L’architecture est standard, mais voici un petit rappel :
+- `.env` et `.env.dist` sont les paramètres de l’application ;
+- `composer.json` et `composer.lock` sont les gestionnaires de versions de paquets ;
+- `config/bundles.php` contient la configuration des librairies ;
+- `config/packages` contient la définition et la configuration des librairies utilisées (des paramétrages spécifiques peuvent être ajoutés selon l’environnement, il s’agit des dossiers `config/dev/*` et `config/test/*`) ;
+- `config/routes.yaml` contient la définition des routes de l’application ;
+- `config/services.yaml` contient la définition des services ;
+- `public/index.php` est le fichier qui permet de lancer l’application (le serveur web pointe sur ce fichier) ;
+- `src` contient le code métier de l’application (Controller par exemple) ;
+- `vendor` contient les librairies (généré par composer).
+
+### Utilisation de l’architecture hexagonale
+
+L’architecture hexagonale est utilisée ici pour s’affranchir de la contrainte technique MySQL. Il sera ainsi très simple de connecter une autre source de donnée. On pourra facilement brancher une API, une base de données Postgres par exemple, si besoin.
+
+C’est pour cela que vous possédez deux dossiers : Domain et Infrastructure.
+-	**Domain** va contenir les classes PHP utilisées dans l’application. Elles sont décorrélées des implémentations de base de données et va mettre à disposition des Interfaces PHP qu’il faudra implémenter pour récupérer les données.
+-	**Infrastructure** va contenir les implémentations aux interfaces du Domain. On y trouvera ici toute l’implémentation technique pour chaque source de données que l’on souhaitera brancher sur l’application. Actuellement, l’implémentation utilisée est ORM (soit le dossier `Infrastructure/ORM`). On va y trouver notamment le mapping Doctrine pour la création de la base de données et l’implémentation des `Repository` qui vont être utilisés dans l’application.
+
+La configuration Symfony de cette architecture se déroule dans le dossier `config/domain` et `config/infrastructure` qui va respecter la même architecture précédemment expliquée avec ces mêmes dossiers.
+
+## 2. Bonnes pratiques de développement
+
+Des bonnes pratiques sont à adopter pour le développement :
+-	**Git Flow** : Le dépôt Git est maintenu en suivant le Git flow. Appliquez-le durant vos développements ;
+-	**GitHook** : Utilisez le git-hook mis à disposition (nécessite Docker) qui va lancer un php-cs-fixer afin que le code respecte des conventions de formatage ;
+-	**Tests** : À chaque développement de fonctionnalité, pensez à créer les tests associés (PHPUnit, Behat) ;
+-	**Migration de base de données** : Si des modifications de base de données sont à effectuer, générez les doctrines migrations associées ;
+-	**Merge requests** : Si vous travaillez à plusieurs développeurs, utilisez des Merge Requests afin de faire valider votre code par une tierce personne ;
+-	**Ubiquitous language** : Le projet a été développé initialement sans utiliser l'ubiquitous language, menant à une compréhension ardue des modèles/propriétés et de mauvaises traductions. Il est désormais utilisé afin de faciliter la compréhension et d'éviter ces problèmes.
+
+## 3. Générer un rapport GitLab Page
+
+Lors du commit, des jobs de qualité sont générés et consultables sur le [projet GitLab](https://gitlab.adullact.net/soluris/madis/pipelines).
+
+Plusieurs étapes sont lancées, et généreront des indicateurs de qualité du projet visualisables sur une [page GitLab](https://soluris.gitlab.io/madis/) :
+- PHPUnit code coverage ;
+- PHPMetrics ;
+- PHPMD (Mess Detector).
+
+Certaines règles de qualités ont parallèlement été établies :
+- PHPStan ;
+- PHP-CS-FIXER ;
+- Lint de fichiers YAML et PHP ;
+- Check de sécurité Symfony.
diff --git a/doc/developpement/3-bonnes-pratiques-de-developpement.md b/doc/developpement/3-bonnes-pratiques-de-developpement.md
deleted file mode 100644
index ebeb9f4940f066fd1242cd481e97f7339b466ee0..0000000000000000000000000000000000000000
--- a/doc/developpement/3-bonnes-pratiques-de-developpement.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Les bonnes pratiques de développement
-=====================================
-
-Des bonnes pratiques sont à adopter pour le développement :
-
--	**Git Flow** : Le dépôt GIT est maintenu en suivant le Git flow. Appliquez-le durant vos développements.
--	**GitHook** : Utilisez le git-hook mis à disposition (nécessite Docker) qui va lancer un php-cs-fixer afin que le code respecte des conventions de formatage.
--	**Tests** : A chaque développement de fonctionnalité, pensez à créer les tests associés (PHPUnit, Behat).
--	**Migration de BDD** : Si des modifications de base de données sont à effectuer, générez les doctrines migrations associées.
--	**Merge requests** : Si vous travaillez à plusieurs développeurs, utilisez des Merge Requests afin de faire valider votre code par une tierce personne.
--	**Ubiquitous language** : Le projet a été développé initialement sans utiliser l'ubiquitous language, menant à une compréhension ardue des modèles/propriétés et de mauvaises traductions. Il est désormais utilisé afin de faciliter la compréhension et d'éviter ces problèmes
diff --git a/doc/developpement/3-deployer-une-nouvelle-version.md b/doc/developpement/3-deployer-une-nouvelle-version.md
new file mode 100644
index 0000000000000000000000000000000000000000..c2ba6eb296e96dc1457ef6dc9b0564949c514c9a
--- /dev/null
+++ b/doc/developpement/3-deployer-une-nouvelle-version.md
@@ -0,0 +1,42 @@
+Déployer une nouvelle version
+=======================
+
+1. [Montée de version des librairies](#1-montée-de-version-des-librairies)
+2. [Déploiement d’une nouvelle version de l’application](#2-déploiement-dune-nouvelle-version-de-lapplication)
+    - [Préparer une nouvelle version](#préparer-une-nouvelle-version)
+    - [Déployer la nouvelle version](#déployer-la-nouvelle-version)
+
+## 1. Montée de version des librairies
+
+Les dépendances sont gérées avec le gestionnaire de paquet `composer`. Ce dernier permet de tenir à jour les librairies.
+
+Une simple commande permet de mettre à jour les librairies (les fix de bugs ou de failles de sécurité).
+
+Utilisez la commande `composer update` qui va modifier le fichier `composer.lock`. Pensez ensuite à l’ajouter au Git, puis créer un nouveau tag pour pouvoir effectuer cette montée de version en production.
+
+## 2. Déploiement d’une nouvelle version de l’application
+
+### Préparer une nouvelle version
+
+Nous suivons le Git Flow. Le code qui est prêt à mettre en production se trouve sur la branche develop.
+
+Il faut donc monter la version de l’application dans le fichier `config/packages/framework.yaml` et modifier le [CHANGELOG.md](../../CHANGELOG.md#changelog) avec les dernières modifications.
+
+**Recommandation Madis** : Il est proposé que chaque nouveau changelog soit constitué d'un titre formé par le numéro de version, suivi de la date de tag en format Année-Mois-Jour. Par exemple : `[2.4.5] - 2024-04-29`.
+
+De plus, les sous-titres suivent l'ordre suivant et sont à adapter selon la présence :
+1. Ajout ;
+2. Changements ;
+3. Fix ;
+4. Suppression ;
+5. Migration.
+
+Enfin, chacun des éléments est préfixé par le nom du module. Par exemple : `[Traitements] Mon titre explicite et concis`.
+
+Il suffit ensuite de merger cette version dans la master, puis de [créer un tag](https://gitlab.adullact.net/soluris/madis/-/tags) avec le numéro de version correspondant.
+
+### Déployer la nouvelle version
+
+Pour déployer, rien de plus simple. Rendez-vous sur le site correspondant, dans le dossier du projet et lancez la commande `git checkout` dans la dernière version, puis `./bin/deploy`.
+
+Pour plus d'informations, consulter la documentation pour [mettre à jour Madis](../maintenance-et-gestion-application/2-mettre-a-jour-madis.md#1-monter-de-version).
diff --git a/doc/developpement/4-maintenance-et-montee-de-version.md b/doc/developpement/4-maintenance-et-montee-de-version.md
deleted file mode 100644
index c0426d8d06fc1a059a112f58da092f335ede09b1..0000000000000000000000000000000000000000
--- a/doc/developpement/4-maintenance-et-montee-de-version.md
+++ /dev/null
@@ -1,30 +0,0 @@
-Maintenance applicative
-=======================
-
-## Montées de versions de librairies
-
-Les dépendances sont gérées avec le gestionnaire de paquet *composer*. Ce dernier permet de tenir à jour les librairies.
-
-Une simple commande permet de mettre à jour les librairies (les fix de bugs ou de failles de sécurité).
-
-Utilisez la commande `composer update` qui va modifier le fichier *composer.lock*. Pensez ensuite à l’ajouter au GIT puis créer une nouvelle release pour pouvoir effectuer cette montée de version en production.
-
-
-## Déploiement d’une nouvelle version de l’application
-
-### Préparer la release
-
-Parlons GIT.
-Nous suivons le Git Flow. Le code qui est prêt à mettre en production se trouve donc sur la branche develop. Il faut donc créer une branche de release, y monter la version de l’application dans le fichier *config/packages/framework.yaml* et modifier le « *CHANGELOG.md* » avec les dernières modifications.
-
-Il vous suffit de merger cette release dans la develop et  master puis de tagger la master avec le numéro de version correspondant.
-
-### Déployer en pré-production et prodution
-
-Pour déployer, rien de plus simple. Rendez-vous sur le site correspondant, dans le dossier du projet
-
--	/var/www/gestion-rgpd* pour la pré-production
--	/var/www/madis* pour la production
-
-Lancez-y la commande `./bin/deploy` pour la préproduction, cela mettra à jour avec la branche `develop`.
-Pour la production, reportez vous à la partie de la documentation traitant de ce sujet.
diff --git a/doc/developpement/5-qualite-de-code.md b/doc/developpement/5-qualite-de-code.md
deleted file mode 100644
index 58d01141cdc0ed4ff85791ffe56bca7c37488c58..0000000000000000000000000000000000000000
--- a/doc/developpement/5-qualite-de-code.md
+++ /dev/null
@@ -1,23 +0,0 @@
-Qualité du code
-===============
-
-## Générer un rapport
-
-Pour cela il vous suffit d'aller sur le [projet Gitlab](https://gitlab.adullact.net/soluris/madis/pipelines)
-et d'y lancer les jobs de qualité et génération de rapports.
-
-Vous pourrez alors lancer la dernière étape qui est "Quality-assurance-report".
-Cela va déployer une page Gitlab sur laquelle vous pourrez visualiser les indicateurs de qualité du projet :
-- PHPMD (Mess Detector)
-- PHPMetrics
-- PHPUnit code coverage
-
-Lien de la Gitlab Page : [https://soluris.gitlab.io/madis/](https://soluris.gitlab.io/madis/)
-
-## Règles de qualité
-
-Certaines règles de qualités ont parallèlement été établies :
-- PHPStan
-- PHP-CS-FIXER
-- lint de fichiers YAML et PHP
-- check de sécurité Symfony
diff --git a/doc/developpement/6-cycle-de-vie-contribution.md b/doc/developpement/6-cycle-de-vie-contribution.md
deleted file mode 100644
index 3f8c88a75531c717a029020d44d5030bec4c21cb..0000000000000000000000000000000000000000
--- a/doc/developpement/6-cycle-de-vie-contribution.md
+++ /dev/null
@@ -1,102 +0,0 @@
-Cycle de vie d'une contribution
-===============================
-
-Le but de cette page est de présenter le cycle de vie d'une contribution. Ceci dans le but de permettre aux contributeurs habituels de s'y référer (en cas d'oubli), et aux nouveaux contributeurs de comprendre les mécanismes de collaboration en travail à distance avec l'aide d'un Gitlab.
-
-Tout ces points s'inspirent très largement des documents suivants
-
-* [Introduction to GitLab Flow](https://docs.gitlab.com/ee/workflow/gitlab_flow.html#do-not-order-commits-with-rebase)
-* [GitLab Workflow: An Overview](https://about.gitlab.com/2016/10/25/gitlab-workflow-an-overview/)
-
-## Étapes du cycle de vie d'une contribution
-
-Vue synthétique des étapes : 
-
-1. Vérification qu'une demande similaire n'est pas déjà en cours
-2. Création d'un ticket (*issue*)
-3. Discussion
-4. Si besoin, enrichissement de l'issue
-5. Création "automatique" de la Demande de fusion (*merge request*)
-6. Développement
-7. Prévention des conflits
-8. Finalisation de la Demande de fusion
-9. Traitement de la Demande de fusion par les mainteneurs
-
-## 1. Vérification qu'une demande similaire n'est pas déjà en cours
-
-Avant toute contribution, merci de vérifier qu'une demande similaire n'est pas déjà en cours ou résolu.
-Pour cela, veuillez vérifier :
-- Qu'aucune mention de votre problème n'est présent dans la documentation
-- Qu'un ticket ouvert ne décrit pas déjà votre demande (dans ce cas, participez à la discussion de ce dernier)
-
-## 2. Création d'un ticket
-
-Dans le but de travailler de manière répartie (tout le monde n'est pas dans le même bureau) et asynchrone
-(tout le monde n'est pas sur le projet en même temps), il recommandé de consigner par écrit toute idée, suggestion, bug. 
-
-Dit autrement "tout est issue".
-
-Il est recommandé de donner à l'issue un titre concis et le plus explicite possible. 
-
-**Recommandation MADIS** : il est proposé que chaque issue soit préfixée par le nom du module.
-Par exemple une issue dans le registre des traitements aura
-comme titre `[Registre des traitements] - mon-titre-explicite-et-concis`
-
-La description de l'issue détaille et précise le propos.
-Il est possible d'ajouter des images, voire des fichiers.
-
-L'intérêt de créer au plus tôt une issue est d'afficher au reste de la communauté ses intentions et de la faire réagir.
-Exemple : je souhaite me lancer dans le développement d'une fonctionnalité, je créé l'issue afférente.
-Si d'autres personnes ont la même idée, une discussion peut commencer.
-
-## 3. Discussion
-
-La discussion se fait sous forme de commentaires de l'issue.
-
-## 4. Enrichissement de l'issue
-
-Pour les contributeur ayant un peu d'expérience,
-il est suggéré de mettre à jour la description de l'issue au gré de la disccussion.
-(On peut aussi imaginer créer d'autres issues et fermer la première au profit de celles nouvellement créées).
-
-## 5. Création "automatique" de la Demande de fusion
-
-Utiliser le bouton "Create merge request"
-
-Dans les recommandations de travail collaboratif, il est proposé de créer une nouvelle branche pour chaque nouveau travail.
-Par convention, la branche nouvellement créée verra son nom préfixé par l'id de l'issue associé. 
-
-Dans la foulée, il est recommandé de créer la demande de fusion "merge request" et
-de préfixer son nom par la chaîne `WIP: ` (WIP : work in progress).
-Ceci permet d'afficher à la communauté le fait qu'une personne travaille sur le sujet, et éventuellement d'avoir des retours d'autres contributeurs.
-
-Le bouton "Create merge request" permet de faire toutes ces opérations en un seul clic.
-
-## 6. Développement
-
-Le / les développeurs produisent leur code (commits dans la branche dédiée à l'issue, puis push vers le Gitlab)
-
-## 7. Prévention des conflits
-
-TODO à détailler le pourquoi du comment
-
-Depuis la branche associée à l'issue : 
-
-```
-git pull origin master
-git merge master
-```
-
-Gérer les éventuels conflits. Si conflits, corriger, commiter, pusher.
-
-## 8. Finalisation de la Demande de fusion
-
-Sur la page de la merge request, faire un "resolve WIP status" puis lancer la merge request
-
-## 9. Traitement de la Demande de fusion par les mainteneurs
-
-Le lancement de la merge request génère une notification aux mainteneurs. Ces derniers traitent la merge request.
-
-Un nouvel espace de discussion est possible entre mainteneur et développeur.
-
-Le mainteneur valide la merge request, le code est passé dans la branche develop.
diff --git a/doc/developpement/index.md b/doc/developpement/index.md
index 0cd9ddd54dc398a858a9874d9bbb198df3e6b4ca..b5e29ad9436a7d68c558a5b3e3ba66e9c439a428 100644
--- a/doc/developpement/index.md
+++ b/doc/developpement/index.md
@@ -1,9 +1,18 @@
-MADIS - Développement
+Madis - Documentation technique développeurs
 =====================
 
-- [Pré-requis pour lancer l'installation de MADIS](1-pre-requis.md)
-- [Architecture applicative](2-architecture-applicative.md)
-- [Les bonnes pratiques de développement](3-bonnes-pratiques-de-developpement.md)
-- [Effectuer la maintenance et les montées de versions](4-maintenance-et-montee-de-version.md)
-- [Qualité du code](5-qualite-de-code.md)
-- [Cycle de vie d'une contribution](6-cycle-de-vie-contribution.md)
\ No newline at end of file
+## Table des matières
+
+- [Lancer la stack de développement](1-lancer-stack-developpement.md#lancer-la-stack-de-développement)
+    - [Pré-requis](1-lancer-stack-developpement.md#1-pré-requis)
+    - [Installation](1-lancer-stack-developpement.md#2-installation)
+    - [Utilisation basique](1-lancer-stack-developpement.md#3-utilisation-basique)
+    - [Lancer les tests](1-lancer-stack-developpement.md#4-lancer-les-tests)
+    - [Usages de développement](1-lancer-stack-developpement.md#5-usages-de-développement)
+- [Architecture et qualité](2-architecture-et-qualite.md#architecture-et-qualité)
+    - [Architecture applicative](2-architecture-et-qualite.md#1-architecture-applicative)
+    - [Bonnes pratiques de développement](2-architecture-et-qualite.md#2-bonnes-pratiques-de-développement)
+    - [Générer un rapport GitLab Page](2-architecture-et-qualite.md#3-générer-un-rapport-gitlab-page)
+- [Déployer une nouvelle version](3-deployer-une-nouvelle-version.md#déployer-une-nouvelle-version)
+    - [Montée de version des librairies](3-deployer-une-nouvelle-version.md#1-montée-de-version-des-librairies)
+    - [Déploiement d’une nouvelle version de l’application](3-deployer-une-nouvelle-version.md#2-déploiement-dune-nouvelle-version-de-lapplication)
diff --git a/doc/gestion-application/1-requetes-sql.md b/doc/gestion-application/1-requetes-sql.md
deleted file mode 100644
index 9b36dcd9255a2266150185b23b42a03012dfd1bf..0000000000000000000000000000000000000000
--- a/doc/gestion-application/1-requetes-sql.md
+++ /dev/null
@@ -1,82 +0,0 @@
-Requêtes SQL
-============
-
-## Dupliquer les traitements sur une structure
-
-Une procédure SQL a été créée afin de dupliquer les traitements
-sur les structures de destination.
-
-```sql
-CREATE DEFINER=`madis`@`localhost` PROCEDURE `dupliquer_traitements_sur_une_CT`(id_coll_source CHAR(36), id_user_dest CHAR(36), id_coll_destination CHAR(36))
-BLOCK1: BEGIN
-	DECLARE done1 INT DEFAULT FALSE;
-    DECLARE a CHAR(36);
-	DECLARE b VARCHAR(255);
-	DECLARE listetraitements CURSOR FOR	SELECT id, name FROM registry_treatment where collectivity_id = id_coll_destination;
-    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done1 = TRUE;
-	INSERT INTO registry_treatment(id, collectivity_id, creator_id, name, goal, software, legal_basis, legal_basis_justification, concerned_people, recipient_category, active, created_at, updated_at, delay_number, delay_period, manager, security_access_control_check, security_access_control_comment, security_tracability_check, security_tracability_comment, security_saving_check, security_saving_comment, paper_processing, security_update_check, security_update_comment, security_other_check, security_other_comment, delay_other_delay, delay_comment, data_category_other, systematic_monitoring, large_scale_collection, vulnerable_people, data_crossing, completion, template, template_identifier) SELECT UUID(), id_coll_destination, id_user_dest, name, goal, software, legal_basis, legal_basis_justification, concerned_people, recipient_category, "1", "2018-09-27 18:00:00", "2018-09-27 18:00:00", delay_number, delay_period, manager, security_access_control_check, security_access_control_comment, security_tracability_check, security_tracability_comment, security_saving_check, security_saving_comment, paper_processing, security_update_check, security_update_comment, security_other_check, security_other_comment, delay_other_delay, delay_comment, data_category_other, systematic_monitoring, large_scale_collection, vulnerable_people, data_crossing, completion, "1", template_identifier FROM registry_treatment WHERE collectivity_id = id_coll_source;
-	OPEN listetraitements;
-	LOOP1: LOOP
-		FETCH listetraitements INTO a, b;
-		IF done1 THEN
-			LEAVE LOOP1;
-		END IF;
-		BLOCK2: BEGIN
-			DECLARE done2 INT DEFAULT FALSE;
-			DECLARE c VARCHAR(50);
-			DECLARE listecategories	CURSOR FOR SELECT treatment_data_category_code from registry_assoc_treatment_data_category where registry_assoc_treatment_data_category.treatment_id = (SELECT id FROM registry_treatment WHERE registry_treatment.name = b AND collectivity_id = id_coll_source);
-            DECLARE CONTINUE HANDLER FOR NOT FOUND SET done2 = TRUE;
-			OPEN listecategories;
-			LOOP2: LOOP
-				FETCH listecategories INTO c;
-				IF done2 THEN
-					LEAVE LOOP2;
-				END IF;
-				INSERT INTO registry_assoc_treatment_data_category(treatment_id, treatment_data_category_code) VALUES (a, c);
-			END LOOP LOOP2;
-            CLOSE listecategories;
-        END BLOCK2;
-	END LOOP LOOP1;
-  	CLOSE listetraitements;
-END BLOCK1
-```
-
-## Conformité des traitements
-### Ajouter une question 
-
-Pour ajouter une nouvelle question dans la conformité des traitements il faut vérifier en base de données la 
-dernière valeur pour le champ qui ordonne les questions.
-
-Dans l'exemple suivant l'ordre de la question est à 13 car la dernière question en base a la valeur 12. 
-Bien faire attention à la génération de la clef primaire qui est ici un uuid.
-
-```sql
-INSERT INTO `conformite_traitement_question` (`id`, `question`, `position`) VALUES ('4d66c04e-62e7-4216-85a2-6d9feb71722a', 'Ceci est le texte de la question', '13')
-```
-
-## Conformité de la structure
-### Ajouter une question 
-
-2 cas se présentent pour ajouter une question à la conformité de la structure :
-
-####1 - Pour ajouter une nouvelle question dans à un processus existant 
-Il faut vérifier en base de données la dernière valeur pour le champ `position` qui ordonne les questions liées à ce processus.
-
-Dans l'exemple suivant la position de la question est à 5 car la dernière question en base a la valeur 4. 
-Bien faire attention à la génération de la clef primaire qui est ici un uuid.
-
-```sql
-INSERT INTO `registry_conformite_organisation_question` (`id`, `processus_id`, `nom`, `position`) VALUES ('4d66c04e-62e7-4216-85a2-6d9feb71722a', 'b2a186df-cf81-4199-a292-53dbdb43b609', 'Ceci est le texte de la question', '5')
-```
-
-####2 - Pour ajouter un nouveau processus et une nouvelle question
-Il faut vérifier en base de données la dernière valeur pour le champ `position` qui ordonne les processus.
-
-Dans l'exemple suivant la position du processus est à 13 car le dernier processus en base a la valeur 12. 
-Bien faire attention à la génération de la clef primaire qui est ici un uuid.
-
-```sql
-INSERT INTO `registry_conformite_organisation_processus` (`id`, `nom`, `couleur`, `description`, `position`) VALUES ('b2a186df-cf81-4199-a292-53dbdb43b609', 'Nom du processus', 'info', 'Description du processus', '13')
-```
-Puis, ajouter la question en utilisant l'uuid du processus précédemment créé pour la colonne `processus_id`. 
-Suivre alors la procédure décrite dans le cas n°1
\ No newline at end of file
diff --git a/doc/gestion-application/index.md b/doc/gestion-application/index.md
deleted file mode 100644
index 6832be4500a0db1f2027aef7f6d79536afdd04e6..0000000000000000000000000000000000000000
--- a/doc/gestion-application/index.md
+++ /dev/null
@@ -1,4 +0,0 @@
-Gestion de l'application
-========================
-
-- [Requêtes SQL](1-requetes-sql.md)
diff --git a/doc/index.md b/doc/index.md
index f2dd072d90d1c69cb5a76aa84439039af3fb5925..4445d1616575467bd3e45ecdc0b1f0955f00ca5c 100644
--- a/doc/index.md
+++ b/doc/index.md
@@ -1,29 +1,20 @@
-MADIS - Documentation
+Madis - Documentation
 =====================
 
 ## Table des matières
 
-- [Installation de MADIS](installation)
-    - [Pré-requis pour lancer l'installation de MADIS](installation/1-pre-requis.md)
-    - [Configurer les services (NGINX, ...)](installation/2-configurer-les-services.md)
-    - [Cloner le dépôt de code MADIS depuis GIT](installation/3-cloner-le-depot-git-de-madis.md)
-    - [Configurer MADIS et effectuer son premier lancement](installation/4-premiere-configuration-de-madis.md)
-    - [Paramétrage complémentaire](installation/5-parametrages-complementaires.md)
-    
-- [Gestion de l'application](gestion-application)
-    - [Requêtes SQL](gestion-application/1-requetes-sql.md)
-
-- [Maintenance applicative & montées de versions](maintenance-applicative)
-    - [Pré-requis pour lancer l'installation de MADIS](maintenance-applicative/1-pre-requis.md)
-    - [Réaliser une montée/descente de version de MADIS](maintenance-applicative/2-realiser-une-montee-de-version.md)
-    - [Descriptif des variables d'environnement de Symfony](maintenance-applicative/4-descriptif-variables-environement-symfony.md)
-    - [Problèmes possibles et connus lors de mises à jour](maintenance-applicative/3-problemes-possible-lors-de-mises-a-jour.md)
-    
-- [[DEVELOPPEURS] Documentation technique](developpement)
-    - [Pré-requis pour lancer l'installation de MADIS](developpement/1-pre-requis.md)
-    - [Architecture applicative](developpement/2-architecture-applicative.md)
-    - [Les bonnes pratiques de développement](developpement/3-bonnes-pratiques-de-developpement.md)
-    - [Effectuer la maintenance et les montées de versions](developpement/4-maintenance-et-montee-de-version.md)
-    - [Qualité du code](developpement/5-qualite-de-code.md)
-    - [Cycle de vie d'une contribution](developpement/6-cycle-de-vie-contribution.md)
-
+- [Licence d'utilisation de Madis](../LICENSE.md)
+- [Installation de Madis](installation#madis-installation)
+    - [Installer Madis par script](installation/1-installation-script.md#installer-madis-par-script)
+    - [Installer Madis manuellement](installation/2-installation-manuelle.md#installer-madis-manuellement)
+- [Journal des modifications (Changelog)](../CHANGELOG.md#changelog)
+- [Documentation utilisateur](https://documentation-madis.readthedocs.io/fr/latest/docutilisateur.html)
+- [Maintenance et gestion applicative](maintenance-et-gestion-application#maintenance-et-gestion-applicative)
+    - [Paramétrage complémentaire et .env](maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md#paramétrage-complémentaire-et-env)
+    - [Mettre à jour Madis](maintenance-et-gestion-application/2-mettre-a-jour-madis.md#mettre-à-jour-madis)
+    - [Requêtes SQL](maintenance-et-gestion-application/3-requetes-sql.md#requêtes-sql)
+- [Documentation technique développeurs](developpement#madis-documentation-technique-développeurs)
+    - [Lancer la stack de développement](developpement/1-lancer-stack-developpement.md#lancer-la-stack-de-développement)
+    - [Architecture et qualité](developpement/2-architecture-et-qualite.md#architecture-et-qualité)
+    - [Déployer une nouvelle version](developpement/3-deployer-une-nouvelle-version.md#déployer-une-nouvelle-version)
+- [Contribuer au projet](../CONTRIBUTING.md#contribution)
diff --git a/doc/installation/1-installation-script.md b/doc/installation/1-installation-script.md
new file mode 100644
index 0000000000000000000000000000000000000000..f2c44efecc8b78bc5feea1e83be32f15f8d7ca85
--- /dev/null
+++ b/doc/installation/1-installation-script.md
@@ -0,0 +1,65 @@
+Installer Madis par script
+============
+
+1. [Pré-requis technique](#1-pré-requis-technique)
+2. [Étapes d'installation](#2-étapes-dinstallation)
+3. [Installation](#3-installation)
+
+**Cette méthode d'installation doit être utilisée uniquement sur un système d'exploitation fraîchement installé.**
+
+## 1. Pré-requis technique
+
+Pour installer Madis via un script, il vous faudra être sur un des systèmes d'exploitation suivant :
+-	Ubuntu 22 ;
+-	Debian GNU/Linux 12 ;
+-	Rocky Linux.
+
+Configuration matérielle conseillée :
+- 1 CPU ;
+- Minimum 2 Go de mémoire ;
+- 80 Go de stockage système.
+
+## 2. Étapes d'installation
+
+L'installateur permet de réaliser les étapes suivantes :
+1. Nom de domaine de l'application ;
+2. Mot de passe pour la base de données ;
+3. Email (Permet de recevoir un email de confirmation d'installation, et sert comme identifiant de connexion à Madis) ;
+4. Mot de passe pour l'utilisateur (sert comme mot de passe de connexion à Madis) ;
+5. (Optionnel) Recevoir un email avec les informations de connexion ;
+6. (Optionnel) Paramétrage d'un serveur SMTP ;
+7. Installation automatique et paramétrage des éléments suivants :
+    -	Installation de divers éléments nécessaires (PHP-FPM, NGINX, Curl, git, NodeJS, Composer, Wkhtmltopdf...), des extensions PHP (php8.1-bz2 php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd php8.1-intl php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-readline php8.1-xml php8.1-zip), ainsi qu'une base de données MySQL (ou MariaDB pour Rocky Linux) ;
+    - Installation de Madis 2.4.5 ;
+    - Paramétrage du .env ;
+    - Ajout d'une structure et d'un utilisateur ;
+    - Installation du modèle AIPD et des référentiels ;
+    - Initialisation du Cron des notifications.
+
+## 3. Installation
+
+Vous devez être en root ou avoir les privilèges avec Sudo pour exécuter ce script.
+
+**Attention : Si vous avez déjà une installation de Madis, celle-ci va être écrasée.**
+
+[Télécharger le fichier d'installation Madis (SH - 16 Ko)](install.sh) ou utilisez la commande suivante :
+```bash
+wget --no-check-certificate https://gitlab.adullact.net/soluris/madis/-/raw/master/doc/installation/install.sh
+```
+
+Rendez le fichier exécutable.
+```bash
+chmod +x install.sh
+```
+
+Puis installez le fichier.
+```bash
+./install.sh
+```
+
+Une fois l'installation terminée, vous pouvez vous connecter sur l'URL paramétrée avec le compte créé lors de l'installation, [consulter la documentation utilisateur](https://documentation-madis.readthedocs.io/fr/latest/docutilisateur.html), ou paramétrer les [variables d'environnements](../maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md#paramétrage-complémentaire-et-env).
+
+**Note : Dans le fichier .env, pensez à modifier la chaîne de caractère utilisée dans la sécurité de votre application lors de votre première installation.**
+```bash
+APP_SECRET=a98f56b9ea67f189df8ed6a39c548503
+```
diff --git a/doc/installation/1-pre-requis.md b/doc/installation/1-pre-requis.md
deleted file mode 100644
index 97f2a7b66a00e9790e45caa8c5330f53e1d979b3..0000000000000000000000000000000000000000
--- a/doc/installation/1-pre-requis.md
+++ /dev/null
@@ -1,63 +0,0 @@
-Installation
-============
-
-## Pré-requis technique
-
-### Installation pour le Développement
-Afin de permettre un développement rapide sans s’occuper de la stack technique,
-un Docker est mis à disposition. Il va utiliser les paquets suivants :
-
-* PHP-FPM 8.1
-* NGINX 1.23
-* MySQL 8.0 ou mariaDB 10.8
-* Composer
-* GIT
-* NodeJS 18 et npm 9
-
-Pour cela, reportez vous au [lancement de la Stack de developpement](../developpement/1-lancer-stack-developpement.md).
-
-### Installation pour un déploiement de MADIS sur un serveur
-
-Les Docker n'ont pas été étudiés pour fonctionner en mode production.
-De ce fait, et pour des problématiques de sécurités, veuillez installer MADIS sans docker.
-
-
-Pour cela il vous faudra installer manuellement la stack technique.
-Vous trouverez ci-dessous la stack technique utilisée et testée.
--	PHP-FPM 8.1
--	NGINX 1.23
--	MySQL 8.0 (ou MariaDB à partir de 10.8.3)
--	NodeJS 18
--	Composer
--	GIT
--	npm >= 8
--   Wkhtmltopdf
-
-Ainsi que des extensions PHP : *php8.1-apcu php8.1-common php-fdomdocument php8.1-xml php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd php8.1-intl php8.1-json php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-readline php8.1-bz2 php8.1-zip*.
-
-(L'application peut néanmoins être compatible avec d'autres versions mais le support a lieu sur les versions énumérées ci-dessus)
-
-#### Où aller télécharger ces packages ?
-
-
-Installer nodeJS en suivant les indications suivantes:
-- https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions 
-
-Installer YARN en version 1+
-- https://yarnpkg.com/lang/fr/docs/install/#debian-stable
-
-Installer php-fpm 8.1
-
-   Pour Ubuntu :
-​      - https://www.linuxcapable.com/how-to-install-php-8-1-on-ubuntu-22-04-lts/
-
-   Pour Debian 11 (Bullseye) :
-​      - https://www.it-connect.fr/installation-de-php-8-1-sur-debian-11-pour-son-serveur-web/
-
-(Si nécessaire) Installer MariaDB 10.8 :
-
-​	Pour Debian 11 (Bullseye)
-
-  - https://www.linuxcapable.com/install-upgrade-mariadb-10-8-on-debian-11-bullseye/
-
-Pour installer Wkhtmltopdf suivre la documentation suivante : [Installer wkhtmltopdf](6-installer-wkhtmltopdf.md).
diff --git a/doc/installation/2-configurer-les-services.md b/doc/installation/2-configurer-les-services.md
deleted file mode 100644
index 0fb4203a0a397da74bba88c2c095c9f84690745c..0000000000000000000000000000000000000000
--- a/doc/installation/2-configurer-les-services.md
+++ /dev/null
@@ -1,47 +0,0 @@
-Configurer les services
-=======================
-
-## Configurer NGINX
-
-NGINX doit être configuré pour recevoir MADIS. La configuration devra respecter les conditions suivantes :
--	Toujours rediriger /sur /index.php si la ressource statique n’a pas su être servi
--	Utiliser « /*index.php* » lance PHP-FPM pour exécuter Symfony via son Front Controller
--	Rediriger tout autre appel en 404 
-
-Tous les détails de la configuration sont exposés ici : 
-https://symfony.com/doc/current/setup/web_server_configuration.html#nginx
-
-Faites pointer NGINX sur le path  /var/www/madis/public. Pour tester rapidement votre configuration, ajoutez les fichiers correspondant dans le dossier « public » :
--	index.php (avec un `phpinfo();` ) par exemple
--	image.png (ou tout autre image statique)
-
-Si vous avez suivi la documentation Symfony, vous obtiendrez les comportements suivants :
--	/ vous amènera sur la page de connexion MADIS
--	/index.php ne fonctionnera pas (la clause NGINX est en internal donc inaccessible depuis l’URL)
--	/image.png vous affichera votre image
-
-## Configurer MySQL
-
-Lors de l’installation de MySQL vous avez dû créer un utilisateur root pour MySQL. Vous allez maintenant créer un utilisateur pour l’application MADIS.
-
-Connectez-vous avec ce compte root afin de pouvoir créer les accès utilisateur (évitez le copier/coller pour les caractères spéciaux).
-
-```mysql
-# Créer une BDD pour madis
-CREATE DATABASE madis ;
-
-# Créer un utilisateur avec un mot de passe que vous choisirez avec précaution
-CREATE USER madis@'localhost' IDENTIFIED BY 'ThisIsAStrengthPassword111!';
-
-# Donner les accès à la BDD à notre nouvel utilisateur
-GRANT ALL PRIVILEGES ON madis.* TO 'madis'@'localhost';
-```
-
-Enfin, modifiez votre fichier `/etc/my.cnf` en y ajoutant ou remplaçant les lignes suivantes :
-
-```
-[mysqld]
-sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
-```
-
-Votre BDD est maintenant opérationnelle. Tentez de vous connecter en ligne de commande via mysql -u madis -p. Si vous réussissez à vous connecter, tout est en place.
diff --git a/doc/installation/2-installation-manuelle.md b/doc/installation/2-installation-manuelle.md
new file mode 100644
index 0000000000000000000000000000000000000000..e508ca7633da552a8e6ca47f48f2753c3e337e63
--- /dev/null
+++ b/doc/installation/2-installation-manuelle.md
@@ -0,0 +1,293 @@
+Installer Madis manuellement
+============
+
+1. [Pré-requis technique](#1-pré-requis-technique)
+2. [Cloner le dépôt Git de Madis](#2-cloner-le-dépôt-git-de-madis)
+3. [Configurer les services](#3-configurer-les-services)
+    - [Configurer NGINX](#configurer-nginx)
+    - [Configurer MySQL/MariaDB](#configurer-mysqlmariadb)
+4. [Paramétrer et déployer l'application Madis](#4-paramétrer-et-déployer-lapplication-madis)
+5. [Installer Wkhtmltopdf](#5-installer-wkhtmltopdf)
+6. [(Option) Configuration API](#6-option-configuration-api)
+
+## 1. Pré-requis technique
+
+Madis peut être installé sur l'un des systèmes d'exploitation suivant :
+-	Ubuntu 22 ;
+-	Debian GNU/Linux 12 ;
+-	Rocky Linux.
+
+D'autres systèmes d'exploitation peuvent être compatibles avec l'application, cependant seuls ceux dans les versions énumérées ci-dessus ont été testés.
+
+Configuration matérielle conseillée :
+- 1 CPU ;
+- Minimum 2 Go de mémoire ;
+- 80 Go de stockage système.
+
+Pour installer Madis manuellement, il vous faudra installer la stack technique dans les versions suivantes :
+-	PHP-FPM v8.1 ([Pour Ubuntu](https://www.linuxcapable.com/how-to-install-php-8-1-on-ubuntu-22-04-lts/) / [Pour Debian v11 (Bullseye)](https://www.it-connect.fr/installation-de-php-8-1-sur-debian-11-pour-son-serveur-web/)) ;
+-	NGINX v1.23 ;
+-	MySQL v8.0 (ou MariaDB à partir de v10.8.3 : [Pour Debian v11 (Bullseye)](https://aymeric-cucherousset.fr/en/install-mariadb-on-debian-11/)) ;
+-	[NodeJS v18.x](https://github.com/nodesource/distributions?tab=readme-ov-file#deb-supported-versions) ;
+-	[Composer](https://getcomposer.org/download/) à partir de v2.7 ;
+-	Git ;
+-	npm à partir de v8 ;
+- [Wkhtmltopdf v0.12.5](#installer-wkhtmltopdf) ;
+- Ainsi que des extensions PHP : *php8.1-apcu php8.1-common php-fdomdocument php8.1-xml php8.1-cli php8.1-curl php8.1-fpm php8.1-gd php8.1-intl php8.1-json php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-readline php8.1-bz2 php8.1-zip* ;
+- Seulement pour Debian GNU/Linux 12 : [YARN v1+](https://classic.yarnpkg.com/en/docs/install#debian-stable).
+
+L'application peut néanmoins être compatible avec d'autres versions, mais le support a lieu sur les versions énumérées ci-dessus.
+
+Vérifier bien la version des binaires installés avant de continuer l'installation.
+
+## 2. Cloner le dépôt Git de Madis
+
+Modifier les permissions d'accès.
+```bash
+sudo chown -R www-data: /var/www
+```
+
+Pour cloner le projet, placez-vous dans le chemin suivant.
+```bash
+cd /var/www
+```
+
+Clonez Madis via la commande suivante.
+```bash
+sudo -u www-data git clone https://gitlab.adullact.net/soluris/madis.git /var/www/madis
+```
+
+Enfin, placez-vous dans le chemin suivant.
+```bash
+cd /var/www/madis
+```
+
+## 3. Configurer les services
+
+### Configurer NGINX
+
+NGINX doit être configuré pour recevoir Madis. La configuration devra respecter les conditions suivantes :
+-	Toujours rediriger `/` sur `/index.php` si la ressource statique n’a pas su être servie ;
+-	Utiliser « `/index.php` » lance PHP-FPM pour exécuter Symfony via son Front Controller ;
+-	Rediriger tout autre appel en 404.
+
+Tous les détails de la configuration sont exposés ici : [Configuring a Web Server (En anglais)](https://symfony.com/doc/current/setup/web_server_configuration.html#nginx).
+
+Faire pointer NGINX sur le chemin `/var/www/madis/public`.
+
+Pour tester rapidement la configuration, vous pouvez ajouter les fichiers correspondant dans le dossier « public » :
+-	index.php (avec un `phpinfo();` ) par exemple ;
+-	image.png (ou tout autre image statique).
+
+Si vous avez suivi la documentation Symfony, vous obtiendrez les comportements suivants :
+-	`/` vous amènera sur la page de connexion Madis ;
+-	`/index.php` ne fonctionnera pas (la clause NGINX est en `internal`, donc inaccessible depuis l’URL) ;
+-	`/image.png` vous affichera votre image.
+
+Exemple de fichier de configuration NGINX :
+```nginx
+server {
+    server_name madis.soluris.fr;
+    root /var/www/madis/public;
+
+    location / {
+        # try to serve file directly, fallback to index.php
+        try_files $uri /index.php$is_args$args;
+    }
+	client_max_body_size 10M;
+    location ~ ^/index\.php(/|$) {
+        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
+        fastcgi_split_path_info ^(.+\.php)(/.*)$;
+        include fastcgi_params;
+
+        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
+        fastcgi_param DOCUMENT_ROOT $realpath_root;
+
+        internal;
+    }
+
+    # return 404 for all other php files not matching the front controller
+    # this prevents access to other php files you don't want to be accessible.
+    location ~ \.php$ {
+        return 404;
+    }
+
+    error_log /var/log/nginx/madis_error.log;
+    access_log /var/log/nginx/madis_access.log;
+}
+```
+
+### Configurer MySQL/MariaDB
+
+Lors de l’installation de MySQL ou MariaDB, vous avez dû créer un utilisateur root pour MySQL. Vous allez maintenant créer un utilisateur pour l’application Madis.
+
+Connectez-vous avec ce compte root afin de pouvoir créer les accès utilisateur.
+
+Créer une base de données pour Madis.
+```mysql
+CREATE DATABASE madis ;
+```
+
+Créer un utilisateur pour accéder à la base de données. Remplacer *MonMotDePasse* par un mot de passe fort.
+```mysql
+CREATE USER madis@'localhost' IDENTIFIED BY 'MonMotDePasse';
+```
+
+Donner les accès à la base de données au nouvel utilisateur :
+```mysql
+GRANT ALL PRIVILEGES ON madis.* TO 'madis'@'localhost';
+```
+
+Enfin, modifier le fichier `/etc/my.cnf` en y ajoutant ou remplaçant les lignes suivantes :
+```mysql
+[mysqld]
+sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
+```
+
+Votre base de données est maintenant opérationnelle. Tentez de vous connecter en ligne de commande via `mysql -u madis -p`. Si vous réussissez à vous connecter, tout est en place.
+
+## 4. Paramétrer et déployer l'application Madis
+
+Copier le fichier *.env.dist* en *.env*.
+```bash
+sudo -u www-data cp /var/www/madis/.env.dist /var/www/madis/.env
+```
+
+Supprimez la partie `###> DOCKER ###`, et complétez les informations restantes par celles vous concernant. Pour plus d'informations, consultez le [paramétrage complémentaire](../maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md#paramétrage-complémentaire-et-env) du .env.
+
+**Attention : Modifiez la chaîne de caractère utilisée dans la sécurité de votre application lors de votre première installation.**
+```bash
+APP_SECRET=a98f56b9ea67f189df8ed6a39c548503
+```
+
+Modifier les informations de connexion la base de données (En savoir plus sur le [format à utiliser](http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url)). Remplacer *MonMotDePasse* par un mot de passe fort.
+```bash
+DATABASE_URL=mysql://user:MonMotDePasse@db:3306/madis
+```
+
+Vérifiez que Madis communique bien avec la base de données avec la commande suivante.
+```bash
+bin/console doctrine:schema:update --dump-sql
+```
+
+Si des lignes SQL s’affichent, vous communiquez bien avec la base de données (cette commande vous affiche le différentiel entre le schéma de la base de données et Madis). N’en faites rien, on va créer le schéma à l’étape suivante.
+
+Pour consulter la liste des versions disponibles.
+```shell
+sudo -u www-data git tag
+```
+
+Puis placez-vous dans la version à utiliser.
+```bash
+sudo -u www-data git checkout v2.4.5
+```
+
+Enfin, lancez la commande suivante pour finaliser l’installation de Madis.
+```bash
+sudo -u www-data ./bin/deploy
+```
+
+Il ne reste plus qu'à créer une structure et un utilisateur qui devra être associé à une structure (L'`id` de la structure doit correspondre au `collectivity_id` de l'utilisateur).
+
+Connectez-vous à votre base de données.
+```bash
+mysql -u madis -p
+```
+
+**Les commandes suivantes peuvent être utilisées telles qu'elles. Modifier les informations directement dans l'application pour une saisie plus aisée.**
+
+La commande suivante permet de créer une structure. Remplacer les différentes informations *NomDeLaStructure*, *NomCourtDeLaStructure*, *MonAdresse*, ou encore *MaVille*.
+```mysql
+INSERT INTO user_collectivity (id, name, short_name, type, siren, active, created_at, updated_at, address_line_one, address_city, address_zip_code, address_insee, different_dpo, different_it_manager) VALUES ('aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', 'NomDeLaStructure', 'NomCourtDeLaStructure', 'other', 111111111, 1, NOW(), NOW(), 'MonAdresse', 'MaVille', 11111, '0000', 0, 0);
+```
+
+Générer un mot de passe chiffré. Remplacer *MonMotDePasse* par un mot de passe fort. Il devra être coller à la place de *MonMotDePasseChiffré* dans la commande suivante de création d'utilisateur.
+```bash
+php -r "echo (password_hash('MonMotDePasse',1));"
+```
+
+La commande suivante permet de créer un utilisateur pour accéder à Madis. Remplacer les différentes informations *MonPrénom*, *MonNom*, *MonAdresseEmail@Domaine.fr* ou encore *MonMotDePasseChiffré*.
+```mysql
+INSERT INTO user_user (id, collectivity_id, first_name, last_name, email, password, roles, enabled, forget_password_token) VALUES (UUID(), 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', 'MonPrénom', 'MonNom', 'MonAdresseEmail@Domaine.fr', 'MonMotDePasseChiffré', '[\"ROLE_ADMIN\"]', 1, NULL);
+```
+
+Pour installer le modèle AIPD par défaut, lancez la commande suivante.
+```bash
+sudo -u www-data ./bin/console aipd:model:import fixtures/default/aipd/Modele_par_defaut_AIPD.xml
+```
+
+Pour installer les référentiels de maturité par défaut, lancez la commande suivante.
+```bash
+sudo -u www-data ./bin/console maturity:referentiel:import fixtures/default/maturity/
+```
+
+Vous pouvez maintenant vous connecter à Madis avec le compte paramétré, [consulter la documentation utilisateur](https://documentation-madis.readthedocs.io/fr/latest/docutilisateur.html), ou paramétrer les [variables d'environnements](../maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md#paramétrage-complémentaire-et-env).
+
+## 5. Installer Wkhtmltopdf
+
+Afin de permettre la génération des PDFs par l'application, l'installation du binaire wkhtmltopdf est nécessaire. Il est nécessaire, pour l'environnement de production de télécharger manuellement wkhtmltopdf.
+
+Il faut d'abord vérifier la version de l'OS du serveur.
+```bash
+tail /etc/os-release
+```
+Résultat :
+```bash
+PRETTY_NAME="Debian GNU/Linux 10 (buster)"
+NAME="Debian GNU/Linux"
+VERSION_ID="10"
+VERSION="10 (buster)"
+VERSION_CODENAME=buster
+ID=debian
+HOME_URL="https://www.debian.org/"
+SUPPORT_URL="https://www.debian.org/support"
+BUG_REPORT_URL="https://bugs.debian.org/"
+```
+
+La version dans l'exemple ci-dessus est donc `buster`.
+
+**Comme la version de wkhtmltopdf actuellement utilisée par l'application n'est pas la dernière, mais la 0.12.5**, il faut se rendre sur le GitHub [wkhtmltopdf](https://github.com/wkhtmltopdf/wkhtmltopdf/releases/0.12.5/) afin de sélectionner le bon binaire. On choisira le binaire pour amd64 correspondant à la version de l'OS.
+
+Une fois le binaire sélectionné, copier le lien de téléchargement et téléchargez-le via wget.
+```bash
+wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.buster_amd64.deb
+```
+
+Puis, installer les pré-requis de wkhtmltopdf pour fonctionner.
+```bash
+apt-get install fontconfig libfreetype6 libjpeg62-turbo libpng16-16 libxrender1 xfonts-75dpi xfonts-base
+```
+
+Enfin, installer le binaire.
+```bash
+dpkg -i wkhtmltox_0.12.5-1.buster_amd64.deb
+```
+
+Vérifier la bonne configuration des variables d'environnement suivantes dans le .env, et modifier les chemins si nécessaire.
+```
+WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf
+WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage
+```
+
+## 6. (Option) Configuration API
+
+- [Documentation Api platform](https://api-platform.com/)
+- [Documentation LexikJWTAuthentication](https://github.com/lexik/LexikJWTAuthenticationBundle)
+
+Générer des clés publiques et privées pour le JWT.
+```shell
+sudo -u www-data php ./bin/console lexik:jwt:generate-keypair
+```
+
+La documentation de l'API est disponible depuis Madis en ajoutant à l’URL du **nom de domaine Madis** : `/api/docs`.
+
+Exemple : `madis-exemple.fr/api/docs`
+
+Pour utiliser la documentation, le chemin `/login` permet de récupérer son `Bearer token` afin de s'authentifier et de pouvoir accéder aux autres requêtes.
+1. Lancez la requête `/login` ;
+2. Remplissez votre identifiant et votre mot de passe ;
+3. `Execute` ;
+4. Copiez le token ;
+5. Cliquez sur « **Authentification** » puis écrivez `Bearer collezVotreToken` ;
+6. `Login` ;
+7. Vous êtes authentifié. Vous pouvez ensuite utiliser les autres requêtes.
diff --git a/doc/installation/3-cloner-le-depot-git-de-madis.md b/doc/installation/3-cloner-le-depot-git-de-madis.md
deleted file mode 100644
index 79146a253b774185456971371d9bd74f884e845e..0000000000000000000000000000000000000000
--- a/doc/installation/3-cloner-le-depot-git-de-madis.md
+++ /dev/null
@@ -1,25 +0,0 @@
-Cloner le dépot GIT de MADIS
-============================
-
-Pour cloner le projet, il vous faut tout d’abord autoriser votre serveur à accéder au dépôt GIT du projet. Pour autoriser le serveur à ne faire que cloner (et non mettre à jour) le code de MADIS, allez sur https://gitlab.adullact.net/soluris/madis/settings/repository et ajouter la clé SSH de votre serveur sans cocher « autoriser l’accès d’écriture ».
-
-Votre serveur a maintenant accès au dépôt MADIS. Clonez le dépôt
-
-```bash
-# Supprimer le dossier de test de tout à l’heure
-rm -Rf /var/www/madis
-
-# Génération d'une clé (pour accès GIT)
-# laisser les options par défaut
-ssh-keygen -t rsa -b 4096
-# Récupérer la clé SSH et la coller dans GitLab dans les clés de déploiements
-cat ~/.ssh/id_rsa.pub
-
-# Cloner MADIS
-cd /var/www
-git clone git@gitlab.adullact.net:soluris/madis.git madis
-
-# Placez vous sur la version à utiliser (prendre la dernière disponible)
-cd madis
-git checkout v1.10.3
-```
diff --git a/doc/installation/4-premiere-configuration-de-madis.md b/doc/installation/4-premiere-configuration-de-madis.md
deleted file mode 100644
index 89dd13d7816335f2c3ba522b8799ec5407521eab..0000000000000000000000000000000000000000
--- a/doc/installation/4-premiere-configuration-de-madis.md
+++ /dev/null
@@ -1,71 +0,0 @@
-Configurer MADIS pour la première fois
-======================================
-
-## Paramétrer l'application MADIS
-
-Paramétrez maintenant MADIS.
-
-- Copier le fichier *.env.dist* en *.env* puis supprimez la partie ###> DOCKER ### 
-
-- Remplacez les informations restantes par celles vous concernant
-
-- Vérifiez que MADIS communique bien avec la BDD avec la commande suivante : `bin/console doctrine:schema :update --dump-sql`.
-Si des lignes SQL s’affichent, vous communiquez bien avec la BDD (cette commande vous affiche le différentiel entre le schéma de la BDD et MADIS). N’en faites rien, on va créer le schéma à l’étape suivante
-
-- Lancez la commande `./bin/deploy`  pour finaliser l’installation de MADIS
-
- 
-
-## Initialiser la base de données pour utiliser MADIS
-
-### Créer le premier utilisateur pour l’application
-
-Vous devriez pouvoir vous connecter avec l’utilisateur [admin@soluris.fr](mailto:admin@soluris.fr)
-et le mot de passe M4d1Ss0rur1s. Si ce n’est pas le cas, vérifiez que vous ayez un utilisateur dans
-la base de données madis.user_user. Si vous avez réussi à vous connecter, changez les informations
-administrateur ainsi que le mot de passe et vous pouvez commencer à créer votre compte utilisateur
-et ceux de vos futurs utilisateurs.
-
-Le tutoriel s’arrête donc ici pour vous.
-
- 
-
-Si ce n’est pas le cas, suivez les étapes suivantes : 
-
-Créez un utilisateur « administrateur » qui vous servira à créer votre compte. Cet utilisateur doit être associé à une collecivité.
-
-Connectez-vous à votre BDD `mysql -u madis -p` puis créez une structure et un utilisateur.
-
- 
-
-Voici un exemple de requête correspondant à MADIS v1.0.0 (susceptible d’évoluer) :
-
-Vous pouvez les utiliser telles qu’elles sont écrites pour ensuite modifier les données dans l’application pour une saisie plus aisée (à l’exception du mot de passe pour l’administrateur que vous pouvez générer directement avec des générateurs en ligne ou par ligne de commande PHP ex : 
- `php -r 'echo (password_hash("pass",1));'`
-
-
-
-```mysql
-# Créer une structure
-INSERT INTO `user_collectivity` (`id`, `name`, `short_name`, `type`, `siren`, `active`, `created_at`, `updated_at`, `address_line_one`, `address_line_two`, `address_city`, `address_zip_code`, `address_insee`, `legal_manager_civility`, `legal_manager_first_name`, `legal_manager_last_name`, `legal_manager_job`, `legal_manager_mail`, `legal_manager_phone_number`, `referent_civility`, `referent_first_name`, `referent_last_name`, `referent_job`, `referent_mail`, `referent_phone_number`, `dpo_civility`, `dpo_first_name`, `dpo_last_name`, `dpo_job`, `dpo_mail`, `dpo_phone_number`, `it_manager_civility`, `it_manager_first_name`, `it_manager_last_name`, `it_manager_job`, `it_manager_mail`, `it_manager_phone_number`, `website`, `different_dpo`, `different_it_manager`) VALUES
-('3d62101b-bf48-11e8-ac9b-0242ac180002', 'Administration', 'Admin', 'departmental_union', 111111111, 1, NOW(), NOW(), 'A DEFINIR', NULL, 'A DEFINIR', 11111, '0000', 'm', 'A DEFINIR', 'A DEFINIR', 'A DEFINIR', 'm.edlich@soluris.fr', '0000000000', 'm', 'A DEFINIR', 'A DEFINIR', 'A DEFINIR', 'm.edlich@soluris.fr', '0000000000', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0);
-
-# Créer un utilisateur
-INSERT INTO `user_user` (`id`, `collectivity_id`, `first_name`, `last_name`, `email`, `password`, `roles`, `enabled`, `forget_password_token`) VALUES
-(UUID(), '3d62101b-bf48-11e8-ac9b-0242ac180002', 'Admin', 'Admin', 'm.edlich@soluris.fr', '$2y$10$xofkbNT.c8U3AK6mpOdAEOU9LATv/X01nUJqag88zNF4pUweN7ddm', '[\"ROLE_ADMIN\"]', 1, NULL);
-
-# Créer les catégories de base
-INSERT INTO `registry_treatment_data_category` VALUES ('bank','Information bancaire',7,0),('bank-situation','Situation bancaire',8,0),('birth','Date, lieu de naissance',2,0),('caf','Numéro de CAF',17,0),('connexion','Connexion',15,0),('earning','Revenus',12,0),('email','Emails',13,0),('family-situation','Situation familiale',3,0),('filiation','Filiation',4,0),('geo','Géolocalisation',16,0),('health','Santé',18,1),('heritage','Patrimoine',9,0),('identity','Pièces d’identité',20,0),('ip','Adresse IP',14,0),('name','Nom, Prénom',1,0),('phone','Coordonnées téléphoniques',6,0),('picture','Photos-vidéos',21,0),('postal','Coordonnées postales',5,0),('professional-situation','Situation professionnelle',11,0),('public-religious-opinion','Opinion politique ou religieuse',23,1),('racial-ethnic-opinion','Origine raciale ou ethnique',24,1),('sex-life','Vie sexuelle',25,1),('social-security-number','Numéro de Sécurité Sociale',19,1),('syndicate','Appartenance Syndicale',22,1),('tax-situation','Situation fiscale',10,0);
-```
-
-Vous pouvez maintenant vous connecter à MADIS avec cet utilisateur et commencer la configuration.
-
-Pour installer le modèle AIPD par défaut, lancez la commande suivante : 
-```bash
-bin/console aipd:model:import fixtures/default/aipd/Modele_par_defaut_AIPD.xml
-```
-
-Pour installer les réferentiels de maturité par défaut, lancez la commande suivante:
-```bash
-bin/console maturity:referentiel:import fixtures/default/maturity/
-```
diff --git a/doc/installation/5-parametrages-complementaires.md b/doc/installation/5-parametrages-complementaires.md
deleted file mode 100644
index 5fb96a937a5140402d02488ae9c4b01d795f4de1..0000000000000000000000000000000000000000
--- a/doc/installation/5-parametrages-complementaires.md
+++ /dev/null
@@ -1,76 +0,0 @@
-Paramétrages complémentaires
-============================
-
-# Limite de taille des pièces jointes déposées
-
-Dans la configuration Nginx, il est possible de définir la taille limite d'upload de fichier :
-```nginx
-server {
-    client_max_body_size 5M;
-}
-```
-
-```shell
-#Recharger la configuration de nginx
-service nginx reload
-```
-
-Il faut aussi modifier la limite présente dans le php.ini (/etc/php/7.1/fpm/php.ini)
-```php
-upload_max_filesize = 5M
-```
-```shell
-#Recharger la configuration de php
-service php7.1-fpm reload
-```
-
-Il faut ensuite modifier l'application si nécessaire (config/domain/registry/validation/proof.yaml).
-
-## Exemple de fichier de configuration nginx
-
-```nginx
-server {
-    server_name madis.soluris.fr;
-    root /var/www/madis/public;
-
-    location / {
-        # try to serve file directly, fallback to index.php
-        try_files $uri /index.php$is_args$args;
-    }
-	client_max_body_size 5M;
-    location ~ ^/index\.php(/|$) {
-        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
-        fastcgi_split_path_info ^(.+\.php)(/.*)$;
-        include fastcgi_params;
-
-     
-        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
-        fastcgi_param DOCUMENT_ROOT $realpath_root;
-
-        internal;
-    }
-
-    # return 404 for all other php files not matching the front controller
-    # this prevents access to other php files you don't want to be accessible.
-    location ~ \.php$ {
-        return 404;
-    }
-
-    error_log /var/log/nginx/madis_error.log;
-    access_log /var/log/nginx/madis_access.log;
-}
-```
-
-##Module notifications
-
-Pour activer le module notifications, rajouter ceci dans le fichier .env :
-```
-APP_ACTIVATE_NOTIFICATIONS=true
-```
-
-Vous devrez ensuite ajouter les deux lignes suivantes à votre cron :
-```
-* * * * * cd /var/www/madis && $(which php8.1) bin/console notifications:generate >> /var/www/madis/notifications.log
-* * * * * cd /var/www/madis && $(which php8.1) bin/console notifications:send >> /var/www/madis/notifications.log
-```
-En veillant bien à changer le chemin `/var/www/madis/` par celui qui vous correspond.
diff --git a/doc/installation/6-installer-wkhtmltopdf.md b/doc/installation/6-installer-wkhtmltopdf.md
deleted file mode 100644
index 72de9f0c993c78d51f85941dc27a95b34ccf6845..0000000000000000000000000000000000000000
--- a/doc/installation/6-installer-wkhtmltopdf.md
+++ /dev/null
@@ -1,59 +0,0 @@
-Installation de WKHTMLTOPDF
-============================
-Afin de permettre la génération des PDFs par l'application, l'installation du binaire wkhtmltopdf 
-est nécessaire.
-
-## Environnement de développement
-
-Le téléchargement, l'installation et le paramétrage de wkhtmltopdf est déjà prête à l'emploi lors
-de l'installation de l'application en environnement de développement:
-- Le Dockerfile télécharge le binaire
-- Il installe ensuite les prérequis pour le binaire
-- Il décompile wkhtmltopdf
-- La configuration du bundle KnpSnappyBundle se charge de la configuration via les variables d'environnement (.env)
-
-## Environnement de production
-Il est nécessaire, pour l'environnement de production, de télécharger manuellement wkhtmltopdf.
-Il faut d'abord vérifier la version de l'OS du serveur :
-```bash
-tail /etc/os-release
-```
-Résultat :
-```bash
-PRETTY_NAME="Debian GNU/Linux 10 (buster)"
-NAME="Debian GNU/Linux"
-VERSION_ID="10"
-VERSION="10 (buster)"
-VERSION_CODENAME=buster
-ID=debian
-HOME_URL="https://www.debian.org/"
-SUPPORT_URL="https://www.debian.org/support"
-BUG_REPORT_URL="https://bugs.debian.org/"
-```
-La version dans l'exemple ci-dessus est donc "buster".
-Se rendre alors sur https://wkhtmltopdf.org/downloads.html afin de sélectionner la bonne version de wkhtmltopdf pour celle-ci.
-On choisira le binaire pour amd64 correspondant à la version de l'OS.
-###### Note : La version de wkhtmltopdf actuellement utilisée par l'application n'étant pas la dernière mais la 0.12.5, il faut alors se rendre sur https://github.com/wkhtmltopdf/wkhtmltopdf/releases/0.12.5/ afin de sélectionner le bon binaire.
-
-
-Une fois le binaire sélectionné, copier le lien de téléchargement et télécharger-le via wget :
-```bash
-wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.buster_amd64.deb
-```
-
-Puis, installer les prérequis de wkhtmltopdf pour fonctionner :
-```bash
-apt-get install fontconfig libfreetype6 libjpeg62-turbo libpng16-16 libxrender1 xfonts-75dpi xfonts-base
-```
-
-Enfin, installer le binaire:
-```bash
-dpkg -i wkhtmltox_0.12.5-1.buster_amd64.deb
-```
-
-Vérifier alors la bonne configuration des variables d'envrionnement suivantes dans le .env, et
- modifier les paths si nécessaire :
-```
-WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf
-WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage
-```
diff --git a/doc/installation/7-installer-api.md b/doc/installation/7-installer-api.md
deleted file mode 100644
index c12bbb0f73f1d64d176b8e99b9405c2d6edb369f..0000000000000000000000000000000000000000
--- a/doc/installation/7-installer-api.md
+++ /dev/null
@@ -1,40 +0,0 @@
-Installation de l'API
-============================
-
-Documentation Api platform :
-- https://api-platform.com/ 
-
-Documentation LexikJWTAuthentication :
-- https://github.com/lexik/LexikJWTAuthenticationBundle
-
-
-Génération des clés publiques et privées pour le JWT
-
-```shell
-./docker-service jwtKeys
-```
-
-ou 
-
-```shell
-php bin/console lexik:jwt:generate-keypair
-```
-
-
-Documentation de l'API disponible sur /api/docs
-
-Pour utiliser la documentation, la route /login permet de récupérer son Bearer token afin de s'authentifier et de pouvoir accéder aux autres requêtes.
-
-1. Lancez la requete /login (Try it out)
-
-2. Remplissez votre username et votre password
-
-3. Execute
-
-4. Copiez le token
-
-5. Cliquez sur "Authentification" puis ecrivez "Bearer collezVotreToken"
-
-6. Login
-
-7. Vous êtes authentifié. Vous pouvez ensuite utiliser les autres requêtes.
\ No newline at end of file
diff --git a/doc/installation/index.md b/doc/installation/index.md
index 0b4698ffa5b7952b241cd4fa097d7e6a84b9537b..ef01766693cf35f508c877bc251032d878e98048 100644
--- a/doc/installation/index.md
+++ b/doc/installation/index.md
@@ -1,15 +1,16 @@
-MADIS - Installation
+Madis - Installation
 ====================
 
+## Table des matières
 
-MADIS est une application développée principalement en PHP.
-
-Elle s’appuie sur le Framework **Symfony 4 (version Flex)**.
-Le CSS de l’application s’appuie sur AdminLTE 2, qui permet de gérer très facilement la création de vues.
-
-- [Pré-requis pour lancer l'installation de MADIS](1-pre-requis.md)
-- [Configurer les services (NGINX, ...)](2-configurer-les-services.md)
-- [Cloner le dépôt de code MADIS depuis GIT](3-cloner-le-depot-git-de-madis.md)
-- [Configurer MADIS et effectuer son premier lancement](4-premiere-configuration-de-madis.md)
-- [Paramétrage complémentaire](5-parametrages-complementaires.md)
-- [Installer Wkhtmltopdf](6-installer-wkhtmltopdf.md)
+- [Installer Madis par script](1-installation-script.md#installer-madis-par-script)
+    - [Pré-requis technique](1-installation-automatisee.md#1-pré-requis-technique)
+    - [Étapes d'installation](1-installation-automatisee.md#2-étapes-dinstallation)
+    - [Installation](1-installation-automatisee.md#3-installation)
+- [Installer Madis manuellement](2-installation-manuelle.md#installer-madis-manuellement)
+    - [Pré-requis technique](2-installation-manuelle.md#1-pré-requis-technique)
+    - [Cloner le dépôt Git de Madis](2-installation-manuelle.md#2-cloner-le-dépôt-git-de-madis)
+    - [Configurer les services](2-installation-manuelle.md#3-configurer-les-services)
+    - [Paramétrer et déployer l'application Madis](2-installation-manuelle.md#4-paramétrer-et-déployer-lapplication-madis)
+    - [Installer Wkhtmltopdf](2-installation-manuelle.md#5-installer-wkhtmltopdf)
+    - [(Option) Configuration API](2-installation-manuelle.md#6-option-configuration-api)
diff --git a/doc/installation/install.sh b/doc/installation/install.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ea1fe41df785e83e552c943877cf0dc37c1aeec4
--- /dev/null
+++ b/doc/installation/install.sh
@@ -0,0 +1,389 @@
+#!/bin/bash
+default_domain="madis.mondomaine.fr"
+default_password="MotDePasseParDefaut"
+default_mail="m.edlich@soluris.fr"
+default_user_password="madis"
+smtp_server="mail.smtp2go.com"
+smtp_port="2525"
+smtp_username="smtp-test-mike-sol-mad"
+smtp_password="nz77KhEGVhuKVFob"
+from_address="m.edlich@soluris.fr"
+
+export NEWT_COLORS='
+'
+# Fonction pour afficher un message d'erreur et quitter le script
+print_error_and_exit() {
+    local message="$1"
+    echo "Erreur : $message"
+    exit 1
+}
+check_command_success() {
+    local exit_code="$1"
+    local command_name="$2"
+    if [ "$exit_code" -ne 0 ]; then
+        print_error_and_exit "La commande \"$command_name\" a échoué avec le code de sortie $exit_code."
+    fi
+}
+
+# Vérification du système d'exploitation
+if grep -qE "Ubuntu 22" /etc/os-release; then
+    systemOS="ubuntu22"
+elif grep -qE "Debian GNU/Linux 12" /etc/os-release; then
+    systemOS="debian12"
+elif grep -qE "Rocky Linux" /etc/os-release; then
+    systemOS="rocky"
+else
+    print_error_and_exit "Système d'exploitation non pris en charge."
+	exit 1
+fi
+
+
+if [ "$(id -u)" -eq 0 ]; then
+	apt install -y --no-install-recommends sudo
+else
+if ! sudo -v &> /dev/null; then
+    echo "Vous devez être root ou avoir les privilèges avec Sudo pour executer ce script."
+    exit 1
+fi
+fi
+
+# Définition de la variable NEEDRESTART_MODE
+sudo sed -i "s/#\$nrconf{restart} = 'i';/\$nrconf{restart} = 'a';/" /etc/needrestart/needrestart.conf
+export NEEDRESTART_MODE=a
+
+
+
+if [ "$systemOS" = "debian12" ] || [ "$systemOS" = "ubuntu22" ]; then
+	# Installation des paquets
+	export DEBIAN_FRONTEND=noninteractive
+	sudo apt update
+	sudo apt upgrade -y
+	nginxusr="www-data"
+fi
+if [ "$systemOS" = "rocky" ]; then
+	sudo dnf update -y
+	sudo dnf upgrade -y
+	nginxusr="nginx"
+fi
+
+if [ "$systemOS" = "debian12" ]; then
+  sudo apt install -y --no-install-recommends xfonts-base net-tools xfonts-75dpi xfonts-utils xfonts-encodings x11-common libfontenc1 libxrender1 fontconfig git nginx default-mysql-server gnupg curl apt-transport-https lsb-release ca-certificates wget sudo libjpeg62-turbo telnet whiptail
+  apt-key adv --fetch-keys "https://packages.sury.org/php/apt.gpg" > /dev/null 2>&1
+  sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
+  sudo echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
+  sudo echo "deb https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
+  sudo curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
+  sudo curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
+  sudo apt update && sudo apt -y upgrade && apt -y install php8.1-bz2 php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd php8.1-intl php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-readline php8.1-xml php8.1-zip
+elif [ "$systemOS" = "ubuntu22" ]; then
+  sudo apt install -y --no-install-recommends sudo curl net-tools mysql-server nginx php8.1-bz2 php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd php8.1-intl php8.1-mbstring php8.1-mysql php8.1-opcache php8.1-readline php8.1-xml php8.1-zip fontconfig libfontenc1 libxrender1 x11-common xfonts-75dpi xfonts-base xfonts-utils git telnet wget whiptail
+elif [ "$systemOS" = "rocky" ]; then
+  sudo dnf install -y epel-release
+	sudo dnf -y config-manager --set-enabled powertools
+	sudo dnf -y module reset php
+	sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
+	sudo dnf module enable php:remi-8.1 -y
+  sudo dnf install -y --nogpgcheck sudo net-tools mariadb-server nginx php php-bz2 php-cli php-common php-curl php-fpm php-gd php-intl php-json php-mbstring php-mysqlnd php-opcache php-readline php-xml php-zip fontconfig libfontenc libXrender xorg-x11-fonts-Type1 xorg-x11-fonts-misc xorg-x11-fonts-75dpi git telnet compat-openssl11
+else
+  print_error_and_exit "Système d'exploitation non pris en charge."
+	exit 1
+fi
+
+# Affichage d'un message agréable
+echo "Bienvenue dans le script d'installation de l'application Madis."
+
+# Fonction pour afficher une boîte de dialogue Whiptail avec une question Oui/Non
+ask_yes_no() {
+    local question="$1"
+    whiptail --title "Question" --yesno "$question" --yes-button "Oui" --no-button "Non" 10 60
+    return $?
+}
+
+# Affichage de la boîte de dialogue de confirmation
+whiptail --title "Question" --yesno "Ce script va installer Madis sur votre serveur.\n\nATTENTION : Si vous avez déjà une installation de Madis celle-ci va être écrasée.\n\nÊtes vous sûr de vouloir continuer ?"  --yes-button "Oui" --no-button "Non" 15 60
+response=$?
+if [ $response -eq 0 ]; then
+    echo "Installation en cours..."
+
+input_smtp_info() {
+    smtp_server=$(whiptail --inputbox "Entrez le serveur SMTP :" 10 60 3>&1 1>&2 2>&3)
+    smtp_port=$(whiptail --inputbox "Entrez le port SMTP :" 10 60 3>&1 1>&2 2>&3)
+    smtp_username=$(whiptail --inputbox "Entrez le nom d'utilisateur SMTP :" 10 60 3>&1 1>&2 2>&3)
+    smtp_password=$(whiptail --passwordbox "Entrez le mot de passe SMTP :" 10 60 3>&1 1>&2 2>&3)
+    from_address=$(whiptail --inputbox "Entrez l'adresse e-mail expéditeur :" 10 60 3>&1 1>&2 2>&3)
+}
+
+# Demande du nom de domaine à configurer
+domain_name=$(whiptail --inputbox "Veuillez saisir le nom de domaine à configurer (ex: madis.mondomaine.fr) :" 10 65 "$default_domain" --title "Nom de domaine" 3>&1 1>&2 2>&3)
+
+# Si aucun nom de domaine n'est saisi, définir une valeur par défaut
+if [ -z "$domain_name" ]; then
+    domain_name=$default_domain
+fi
+
+# Demande du mot de passe pour la base de données
+db_password=$(whiptail --passwordbox "Veuillez saisir le mot de passe pour la base de données :" 10 65 --title "Mot de passe MySQL" "$default_password" 3>&1 1>&2 2>&3)
+# Si aucun mot de passe n'est saisi, définir une valeur par défaut
+if [ -z "$db_password" ]; then
+    db_password=$default_password
+fi
+
+user_name=$(whiptail --inputbox "Veuillez saisir votre email (ex: m.edlich@soluris.fr) :" 10 65 "$default_mail" --title "Mail de l'utilisateur" 3>&1 1>&2 2>&3)
+# Si aucun email n'est saisi, définir une valeur par défaut
+if [ -z "$user_name" ]; then
+    user_name=$default_mail
+fi
+
+# Demande du mot de passe pour l'utilisateur
+user_password=$(whiptail --passwordbox "Veuillez saisir le mot de passe pour l'utilisateur :" 10 65 --title "Mot de passe Utilisateur" "$default_user_password" 3>&1 1>&2 2>&3)
+# Si aucun mot de passe n'est saisi, définir une valeur par défaut
+if [ -z "$user_password" ]; then
+    user_password=$default_user_password
+fi
+
+ask_yes_no "Voulez-vous envoyer un email avec les informations de connexion ?"
+send_email=$?
+
+if [ $send_email -eq 0 ]; then
+    # Demander à l'utilisateur s'il souhaite configurer le serveur SMTP maintenant
+    ask_yes_no "Voulez-vous configurer le serveur SMTP maintenant ?"
+    configure_smtp=$?
+
+    if [ $configure_smtp -eq 0 ]; then
+        # Saisir les informations SMTP
+        input_smtp_info
+        # Afficher les informations saisies
+        whiptail --msgbox "Configuration SMTP :\nServeur : $smtp_server\nPort : $smtp_port\nNom d'utilisateur : $smtp_username\nMot de passe : *****\nAdresse e-mail expéditeur : $from_address" 12 60
+    fi
+fi
+
+
+if sudo ss -tuln | grep ':80'; then
+    echo "Quelque chose tourne sur le port 80. Arrêt du service..."
+    # Rechercher les processus écoutant sur le port 80 avec lsof
+    process_info=$(sudo lsof -i :80 | awk 'NR==2 {print $1}')
+    # Arrêter le service
+    sudo systemctl stop $process_info
+fi
+
+if [ "$systemOS" = "debian12" ] || [ "$systemOS" = "ubuntu22" ]; then
+sudo curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
+sudo apt-get install -y --no-install-recommends nodejs
+fi
+if [ "$systemOS" = "rocky" ]; then
+	sudo curl -sL https://rpm.nodesource.com/setup_18.x -o nodesource_setup.sh
+	sudo bash nodesource_setup.sh
+	sudo dnf install nodejs -y
+fi
+
+if [ "$systemOS" = "debian12" ]; then
+sudo wget "http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.1w-0+deb11u1_amd64.deb"
+sudo wget "https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.buster_amd64.deb"
+sudo dpkg -i libssl1.1_1.1.1w-0+deb11u1_amd64.deb && rm -f libssl1.1_1.1.1w-0+deb11u1_amd64.deb
+sudo dpkg -i wkhtmltox_0.12.5-1.buster_amd64.deb && rm -f wkhtmltox_0.12.5-1.buster_amd64.deb
+fi
+if [ "$systemOS" = "ubuntu22" ]; then
+sudo wget "https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.focal_amd64.deb"
+sudo wget "http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb"
+sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb && rm -f libssl1.1_1.1.0g-2ubuntu4_amd64.deb
+sudo dpkg -i wkhtmltox_0.12.5-1.focal_amd64.deb && rm -f wkhtmltox_0.12.5-1.focal_amd64.deb
+fi
+if [ "$systemOS" = "rocky" ]; then
+sudo wget "https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm"
+sudo rpm -i wkhtmltox-0.12.5-1.centos8.x86_64.rpm && rm -f wkhtmltox-0.12.5-1.centos8.x86_64.rpm
+fi
+
+password_hash=$(php -r "echo (password_hash('$user_password',1));")
+
+# Installation de Composer
+sudo curl -sS https://getcomposer.org/installer -o /usr/local/bin/composer-setup.php
+if [ "$systemOS" = "rocky" ]; then
+	sudo ln -s /bin/php /usr/bin/php8.1
+	sudo php /usr/local/bin/composer-setup.php --install-dir=/usr/bin --filename=composer
+fi
+if [ "$systemOS" = "debian12" ] || [ "$systemOS" = "ubuntu22" ]; then
+	sudo php /usr/local/bin/composer-setup.php --install-dir=/usr/local/bin --filename=composer
+fi
+
+# Configuration de Nginx
+if [ "$systemOS" = "rocky" ]; then
+	sudo mkdir /etc/nginx/sites-available
+	sudo mkdir /etc/nginx/sites-enabled
+fi
+sudo unlink /etc/nginx/sites-enabled/*
+sudo rm -f /etc/nginx/sites-enabled/*
+cat << EOF | sudo tee /etc/nginx/sites-available/madis.conf > /dev/null
+server {
+    server_name $domain_name;
+    root /var/www/madis/public;
+    location / {
+        try_files \$uri /index.php\$is_args\$args;
+    }
+    location ~ ^/index\.php(/|$) {
+        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
+        fastcgi_split_path_info ^(.+\.php)(/.*)$;
+        include fastcgi_params;
+        fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
+        fastcgi_param DOCUMENT_ROOT \$realpath_root;
+        internal;
+    }
+    location ~ \.php$ {
+        return 404;
+    }
+    error_log /var/log/nginx/madis_error.log;
+    access_log /var/log/nginx/madis_access.log;
+}
+EOF
+sudo ln -s /etc/nginx/sites-available/madis.conf /etc/nginx/sites-enabled/
+if [ "$systemOS" = "rocky" ]; then
+	sudo sed -i 's|fastcgi_pass unix:/var/run/php/php8\.1-fpm\.sock;|fastcgi_pass unix:/run/php-fpm/www.sock;|g' /etc/nginx/sites-available/madis.conf
+	sed -i '/include \/etc\/nginx\/conf.d\/\*\.conf;/a     include \/etc\/nginx\/sites-enabled\/\*\.conf;' /etc/nginx/nginx.conf
+	sudo systemctl enable mariadb
+	sudo systemctl restart mariadb
+	sudo systemctl enable nginx
+	sudo firewall-cmd --permanent --add-service=http
+	sudo firewall-cmd --reload
+	sudo sed -i 's|^SELINUX=.*|SELINUX=disabled|' /etc/selinux/config
+fi
+sudo systemctl restart nginx
+
+# Configuration de la base de données
+db_exists=$(sudo mysql -e "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME='madis';" | grep -q 'madis' && echo "true" || echo "false")
+if [ "$db_exists" == "true" ]; then
+    echo "La base de données 'madis' existe déjà. Elle sera supprimée."
+    sudo mysql -e "DROP DATABASE madis;"
+fi
+user_exists=$(sudo mysql -e "SELECT User FROM mysql.user WHERE User='madis';" | grep -q 'madis' && echo "true" || echo "false")
+if [ "$user_exists" == "true" ]; then
+    echo "L'utilisateur 'madis' existe déjà. Il sera supprimé."
+    sudo mysql -e "DROP USER madis@localhost;"
+fi
+
+sudo mysql <<MYSQL_SCRIPT
+CREATE DATABASE madis;
+CREATE USER madis@'localhost' IDENTIFIED BY '$db_password';
+GRANT ALL PRIVILEGES ON madis.* TO 'madis'@'localhost';
+FLUSH PRIVILEGES;
+QUIT
+MYSQL_SCRIPT
+
+# Modification des permissions
+sudo chown -R $nginxusr: /var/www
+
+# Clonage du dépôt
+if [ -d "/var/www/madis" ]; then
+    echo "Le répertoire /var/www/madis existe déjà. Il sera supprimé."
+    sudo rm -rf /var/www/madis
+fi
+sudo -u $nginxusr git clone https://gitlab.adullact.net/soluris/madis.git /var/www/madis
+
+# Copie du fichier .env.dist
+sudo -u $nginxusr cp /var/www/madis/.env.dist /var/www/madis/.env
+
+# Configuration de .env
+sudo sed -i "s|DATABASE_URL=.*|DATABASE_URL=mysql://madis:$db_password@localhost:3306/madis|" /var/www/madis/.env
+sudo sed -i "s|APP_ENV=.*|APP_ENV=prod|" /var/www/madis/.env
+sudo sed -i "s|APP_URL=.*|APP_URL=http://$domain_name|" /var/www/madis/.env
+sudo sed -i "s|APP_CONNEXION_STATUS_KNOW=.*|APP_CONNEXION_STATUS_KNOW=true|" /var/www/madis/.env
+sudo sed -i "s|APP_COMMUNE_SVG_REDUCED_PATH=.*|APP_COMMUNE_SVG_REDUCED_PATH=''|" /var/www/madis/.env
+sudo sed -i "s|MAILER_DSN=.*|MAILER_DSN=smtp://$smtp_username:smtp_password@$smtp_server:$smtp_port|" /var/www/madis/.env
+
+# Checkout du dépôt
+sudo -u $nginxusr git --git-dir=/var/www/madis/.git --work-tree=/var/www/madis checkout v2.4.5
+
+# Déploiement
+sudo -u $nginxusr bash -c "cd /var/www/madis && bin/deploy"
+
+# Insertion des données initiales dans la base de données
+sudo mysql madis <<MYSQL_SCRIPT
+use madis;
+INSERT INTO user_collectivity (id, name, short_name, type, siren, active, created_at, updated_at, address_line_one, address_city, address_zip_code, address_insee, different_dpo, different_it_manager) VALUES ('aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', 'Administration', 'Admin', 'other', 111111111, 1, NOW(), NOW(), 'A DEFINIR', 'A DEFINIR', 11111, '0000', 0, 0);
+INSERT INTO user_user (id, collectivity_id, first_name, last_name, email, password, roles, enabled, forget_password_token) VALUES (UUID(), 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', 'Admin', 'Admin', '$user_name', '$password_hash', '[\"ROLE_ADMIN\"]', 1, NULL);
+QUIT
+MYSQL_SCRIPT
+
+# Commenter cette ligne pour une installation sans trace
+curl -sS --connect-timeout 2 -m 5 "https://statistiques-sites.soluris.fr/matomo.php?idsite=114&rec=1" > /dev/null || true
+
+# Installation du modèle AIPD et des référentiels
+sudo -u $nginxusr bash -c "cd /var/www/madis &&  bin/console aipd:model:import fixtures/default/aipd/Modele_par_defaut_AIPD.xml"
+sudo -u $nginxusr bash -c "cd /var/www/madis &&  ./bin/console maturity:referentiel:import fixtures/default/maturity/"
+
+# Cron des notifications
+cron_content="1 * * * * $nginxusr cd /var/www/madis && $(which php8.1) bin/console notifications:generate
+31 * * * * $nginxusr cd /var/www/madis && $(which php8.1) bin/console notifications:send"
+cron_file="/etc/cron.d/madis"
+sudo touch $cron_file
+sudo rm -f $cron_file
+echo "$cron_content" | sudo tee "$cron_file" > /dev/null
+sudo chmod 644 "$cron_file"
+
+recipient=$user_name
+subject="Madis a correctement été installé"
+body="L'installation de Madis est terminée.
+
+Vous pouvez vous connecter avec les informations suivantes :
+
+URL : http://$domain_name
+Login : $user_name
+
+Soluris"
+base64_encode() {
+    echo -n "$1" | base64 | tr -d '\n'
+}
+encoded_username=$(base64_encode "$smtp_username")
+encoded_password=$(base64_encode "$smtp_password")
+{
+sleep 0.5
+echo "EHLO example.com"
+sleep 0.3
+echo "AUTH LOGIN"
+sleep 0.3
+echo "$encoded_username"
+sleep 0.3
+echo "$encoded_password"
+sleep 0.3
+echo "MAIL FROM: <$from_address>"
+sleep 0.3
+echo "RCPT TO: <$recipient>"
+sleep 0.3
+echo "DATA"
+sleep 0.3
+echo "From: $from_address"
+echo "To: $recipient"
+echo "Subject: $subject"
+echo ""
+echo "$body"
+echo "."
+sleep 0.3
+echo "QUIT"
+} | telnet "$smtp_server" "$smtp_port" > /dev/null 2>&1
+
+# Redémarrage de Nginx
+sudo systemctl restart nginx
+
+echo "L'installation de l'application Madis est terminée.
+
+URL : http://$domain_name
+Login : $user_name
+Pass : $user_password
+
+"
+whiptail --msgbox "L'installation de Madis est terminée.\n\nVous pouvez vous connecter avec les informations suivantes :\n\nURL : http://$domain_name\nLogin : $user_name\nPass : $user_password
+" 15 80
+
+if [ "$systemOS" = "rocky" ]; then
+	if whiptail --title "Confirmation" --yesno "Le système doit redémarrer, voulez vous vraiment redémarrer ?" --yes-button "Ok" --no-button "Noonnnn !!!!!" 8 60; then
+		# Si l'utilisateur choisit "Oui", afficher un message d'information et redémarrer
+		whiptail --title "Information" --msgbox "Le serveur va redémarrer dans quelques secondes..." 8 60
+		reboot
+	else
+		# Si l'utilisateur ne répond pas dans les 5 secondes, afficher un message et redémarrer
+		whiptail --title "Information" --msgbox "Redémarrage annulé." 8 60
+	fi
+fi
+
+else
+    echo "L'utilisateur a annulé."
+    exit 0
+fi
diff --git a/doc/maintenance-applicative/1-les-fichiers-a-connaitre.md b/doc/maintenance-applicative/1-les-fichiers-a-connaitre.md
deleted file mode 100644
index ef6e7ec8b0b727cc1e62410677342706f7003c4b..0000000000000000000000000000000000000000
--- a/doc/maintenance-applicative/1-les-fichiers-a-connaitre.md
+++ /dev/null
@@ -1,9 +0,0 @@
-Les fichiers à connaitre
-========================
-
-Vous serez amené à maintenir et mettre à jour MADIS.
-Pour cela, il vous faudra prendre connaissance de
-certains fichiers où seront répertoriés différentes choses :
-
-- **[CHANGELOG.md](../../CHANGELOG.md)** : Répertorie tous les changements qui ont eu lieu dans le code entre les versions.
-- **[UPGRADE.md](../../UPGRADE.md)** : Répertorie toutes les manipulations manuelles à effectuer pour paramétrer MADIS ou effectuer les montées de versions. 
diff --git a/doc/maintenance-applicative/2-realiser-une-montee-de-version.md b/doc/maintenance-applicative/2-realiser-une-montee-de-version.md
deleted file mode 100644
index dcbafa75988d045550a8a7cd1323a626cbc93cf6..0000000000000000000000000000000000000000
--- a/doc/maintenance-applicative/2-realiser-une-montee-de-version.md
+++ /dev/null
@@ -1,107 +0,0 @@
-Réaliser une montée de version
-==============================
-
-## Mettre à jour votre dépôt de code 
-
-Pour cela, vous allez devoir mettre à jour votre dépôt de code :  
-
-```shell
-# Faire un dump de la base de données actuelle,
-# afin de prévenir d'éventuels problèmes lors de la mise à jour
-mysqldump -u madis -pmonMotDePass madis > madis_bdd_DATE.sql
-
-# Se placer dans le dossier de Madis
-cd /var/www/madis
-
-# Prendre connaissance des modifications GIT
-git fetch -p
-
-# Aller sur la version de votre choix (ici 1.2.0)
-git checkout v1.2.0
-
-# Mettre à jour
-./bin/deploy
-```
-
-## Suivre les éventuels manipulation à effectuer
-
-Avec certaines versions, vous aurez peut-être des actions à effectuer
-pour faire fonctionner la nouvelle version de MADIS correctement.
-
-Pour cela, prenez le réflexe après (ou avant) chaque montée de version
-de prendre connaissance du fichier [UPDATE.md](../../UPGRADE.md).
-
-## [AVANCE] Rétrograder de version MADIS
-
-**Attention : Avant toute utilisation de ce qui suit, assurez-vous d'avoir effectué un dump de votre base de données,
-voire de contacter une personne du Support MADIS pour vous aiguiller.
-Toute intervention non maitrisée peut amener à de la perte de données.**
-
-Vous pourrez être confronté au besoin de rétrograder MADIS à une version antérieure.
-Cependant, il peut y avoir eu des modifications de votre Base de données durant la montée de versions.
-
-### Cas 1 : Il n'y a pas eu de migration de données
-
-Il suffit uniquement de remettre le code applicatif souhaité. 
-```shell
-# Faire un dump de la base de données actuelle,
-# afin de prévenir d'éventuels problèmes lors de la mise à jour
-mysqldump -u madis -pmonMotDePass madis > madis_bdd_DATE.sql
-
-# Se placer dans le dossier de Madis
-cd /var/www/madis
-
-# Je suis en v1.3.0 et je souhaite revenir en v1.2.0. 
-# De ce fait, je retourne sur le code de la v1.2.0
-git checkout v1.2.0
-
-# Je relance la mise à jour, qui va me ré-installer l'ancien code
-./bin/deploy
-```
-
-### Cas 2 : Des données ont migrées, "sans perte"
-
-Cela signifie que durant la montée de version MADIS, vos données ont été
-modifiée et/ou déplacées. Dans ce cas précis, les scripts MADIS permettent
-rejouer les scénarios inverse.
- 
-```shell
-# Faire un dump de la base de données actuelle,
-# afin de prévenir d'éventuels problèmes lors de la mise à jour
-mysqldump -u madis -pmonMotDePass madis > madis_bdd_DATE.sql
-
-# Se placer dans le dossier de Madis
-cd /var/www/madis
-
-# Je suis en v1.3.0 et je souhaite revenir en v1.2.0. 
-# Je commence par regarder les migrations que je possède
-ls src/Application/Migrations
-
-# Je dois avoir la liste de toutes les migrations BDD qui ont été créées depuis le lancement de MADIS.
-# Il me faut donc isoler les migrations associées aux versions que je veux downgrader.
-# Par exemple j'ai les versions suivantes (formaté Années-Mois-Jours-Heures-Minutes-Secondes) : 
-# Version20180101134957.php -- v1.3.0
-# Version20171230090807.php -- v1.3.0
-# Version20161230195842.php -- v1.2.0
-# Version20160513152408.php -- v1.1.0
-
-# Je vais donc lancer les scripts inverses dans l'ordre décroissant de création
-# pour migrer les données à leur état "initial"
-bin/console doctrine:migration:execute --down 20180101134957
-bin/console doctrine:migration:execute --down 20171230090807
-
-# Ainsi ma BDD vient d'être remise à son état de v1.2.0.
-# Je peux donc relancer la mise à jour, qui va me ré-installer l'ancien code applicatif
-./bin/deploy
-```
-
-### Cas 3 : Des données ont migrées, "avec perte"
-
-Cela signifie que des données ont été migrées voire supprimées de votre BDD durant la montée de version MADIS.
-Vous ne pourrez donc récupérer toutes vos données si vous revenez à une version antérieure de MADIS.
-
-Une alternative est de croiser les données actuelles avec les données de vos anciens dump de BDD
-mais cette opération reste très laborieuse...
-
-Sinon les étapes sont les mêmes que pour le cas 2. Veillez simplement à faire vos modifications manuelles
-juste après avoir downgradé les migrations de Doctrine.
diff --git a/doc/maintenance-applicative/3-problemes-possible-lors-de-mises-a-jour.md b/doc/maintenance-applicative/3-problemes-possible-lors-de-mises-a-jour.md
deleted file mode 100644
index 8b42d7b60ad7ad4b31712866e527073dfc0989ed..0000000000000000000000000000000000000000
--- a/doc/maintenance-applicative/3-problemes-possible-lors-de-mises-a-jour.md
+++ /dev/null
@@ -1,60 +0,0 @@
-Problèmes connus de mise à jour
-=============================
-
-## Des fichiers sont en cours de modification
-
-Des fichiers ont été modifiés, le checkout est avorté.
-```shell
-root@madis:/var/www/madis# git checkout v1.3.1
-error: Your local changes to the following files would be overwritten by checkout:
-        .env.dist
-        config/domain/user/translations/messages.fr.yaml
-        src/Domain/Reporting/Generator/Word/AbstractGenerator.php
-Please, commit your changes or stash them before you can switch branches.
-Aborting
-
-# Consulter les différences entre les fichiers
-root@madis:/var/www/madis# git diff
-
-# Abandonner les modifications
-root@madis:/var/www/madis# git reset --hard
-HEAD is now at 28aabb01 Merge branch 'release/v1.1.0'
-
-# Relancer le checkout
-root@madis:/var/www/madis# git checkout v1.3.1
-Previous HEAD position was 28aabb01... Merge branch 'release/v1.1.0'
-HEAD is now at bfab85a... Merge branch 'release/v1.3.1'
-```
-
-## Vous n'arrivez pas à effectuer une commande vers le Git distant
-
-```shell
-root@madis:/var/www/madis# git fetch
-ssh: connect to host gitlab.adullact.net port 22: Connection timed out
-fatal: Impossilble de lire le dépôt distant.
-
-Veuillez vérifier que vous avez les droits d'accès
-et que le dépôt existe.
-```
-
-Dans ce cas, vérifiez les accès réseau sur le port 22 vers gitlab.adullact.net et réessayer
-
-Une fois cette manipulation effectuée, `git fetch` ou autre commande git nécessitant
-le contact du dépôt distant devrait fonctionner.
-
-## Débugguer Madis
-
-Logs interessants :
-
-- */var/log/nginx/madis_access.log* : Logs d'accès Nginx
-- */var/log/nginx/madis_error.log* : Logs d'erreur Nginx
-- */var/www/madis/var/log/prod.log* : Logs de Madis
-
-Configuration du fichier */var/www/madis/.env* pour passer l'application en mode DEV :
-
-**Attention** : Evitez d'utiliser ceci en production, celà engendrerait des fuites de sécurité
-de votre application (comme la divulgation de votre configuration du fichier `.env`et ses mots de passe).
-Vous pouvez cependant l'utiliser sur des environnements n'ayant pas d'enjeux ou qui possède des accès restreints.
-
-* *APP_ENV=prod* : à passer en *APP_ENV=dev*
-* *APP_DEBUG=0* : à passer à 1 pour augmenter les logs et profiter d'une barre de logs/debug (profiler) sur l'application
diff --git a/doc/maintenance-applicative/4-descriptif-variables-environement-symfony.md b/doc/maintenance-applicative/4-descriptif-variables-environement-symfony.md
deleted file mode 100644
index 83233563138b2bdbb5d37bb1c859d79ae2bfa5b0..0000000000000000000000000000000000000000
--- a/doc/maintenance-applicative/4-descriptif-variables-environement-symfony.md
+++ /dev/null
@@ -1,123 +0,0 @@
-Descriptif des variables d'environnement Symfony
-================================================
-
-Vous avez une certaine flexibilité dans la configuration de votre application MADIS.
-Pour cela, vous pouvez modifier les variables d'environnement,
-généralement trouvable dans le fichier `.env` de votre application.
-
-Vous trouverez ci-dessous une liste exhaustive des variables de ce fichier ainsi que des explications de ses dernières
-
-```bash
-# APP_MAIL_RECEIVER_DEV : redirige tous les mails envoyés sur un seul destinataire (ça écrase la liste des destinataires pour celle-ci)
-APP_MAIL_RECEIVER_DEV=~
-
-# APP_IMPERSONATE_CREATOR_IS_ADMIN : défini si l'admin doit être identifié comme le créateur d'un élément lors de subrogation. Si à 0, l'utiliasteur est utilisé.
-APP_IMPERSONATE_CREATOR_IS_ADMIN=0
-
-DOCTRINE
-========
-# URL de votre base de données
-# cf. doc pour le format à utiliser http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
-DATABASE_URL=mysql://user:user_pass@db:3306/madis
-
-APPLICATIF MADIS
-================
-# Ces variables d'environnement existent, mais vous ne devriez pas y toucher sans connaissance de cause
-APP_ENV=dev
-APP_MAIL_RECEIVER_DEV=~
-
-CONFIGURATION OBLIGATOIRE MADIS
-===============================
-
-# ATTENTION : Modifiez impérativement cette valeur lors de votre première installation
-# Chaine de caractère qui est utilisée dans la sécurité de votre application
-APP_SECRET=a98f56b9ea67f189df8ed6a39c548503
-
-CONFIGURATION MADIS
-===================
-# Nom de l'application
-APP_APPLICATION_NAME="Madis"
-
-# Temps d'inactivité pour un utilisateur (en secondes).
-# Une fois le temps écoulé, l'utilisateur est automatiquement déconnecté, même si le cookie est encore valide.
-APP_COOKIE_IDLE_TIMEOUT=5400
-
-# Durée de vie du cookie (en secondes)
-APP_COOKIE_LIFETIME=14400
-
-# Nom du référent RGPD par défaut
-APP_DEFAULT_REFERENT="Référent RGPD"
-
-# Adresse du DPD par défaut.
-# Si vous êtes une structure mutualisante assurant le rôle de DPD, saisissez votre adresse
-APP_DPO_ADDRESS_CITY="Saintes"
-APP_DPO_ADDRESS_STREET="2 rue des Rochers"
-APP_DPO_ADDRESS_ZIP_CODE="17100"
-APP_DPO_CIVILITY=m
-APP_DPO_FIRST_NAME=Michaël
-APP_DPO_LAST_NAME=Edlich
-APP_DPO_COMPANY=Soluris
-APP_DPO_JOB="Chargé de mission Solutions Documentaires Electroniques"
-APP_DPO_MAIL=m.edlich@soluris.fr
-APP_DPO_PHONE_NUMBER=0546923905
-
-# Configuration du FOOTER du site (URL et nom de la structure mutualisante)
-APP_FOOTER_PROVIDER_NAME=SOLURIS
-APP_FOOTER_PROVIDER_URL="https://example.fr"
-
-# Dashboard utilisateur paramétrage du nombre de données affiché dans le tableau de journalisation des logs
-APP_USER_DASHBOARD_JOURNALISATION_LIMIT=15
-
-# Nombre d'entrées affichées par page dans les tableaux des vues listes
-APP_DATATABLE_DEFAULT_PAGE_LENGTH=15
-
-# Configuration des images MADIS
-# Favicon
-APP_IMAGE_FAVICON_PATH="favicon.ico"
-# Lien utilisé lors du clic sur l'image dans la sidebar
-APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="htpps//example.fr"
-# Lien vers l'image utilisée dans la sidebar lorsqu'elle est étendue
-# (chemin à configurer à partir du dossier `public` présent à la racine du projet)
-APP_IMAGE_SIDEBAR_BOTTOM_PATH="images/soluris-logo-white.png"
-# Lien vers l'image utilisée dans la sidebar lorsqu'elle est réduite
-# (chemin à configurer à partir du dossier `public` présent à la racine du projet)
-APP_IMAGE_SIDEBAR_REDUCED_PATH="images/icon-32x32.png"
-
-# Défini si l'admin doit être identifié comme le créateur d'un élément lors de subrogation.
-# Si à 0, ce sera le nom de l'utilisateur subrogé qui apparaitra
-# Si à 1, ce sera le nom de l'administrateur qui subroge qui apparaitra
-APP_IMPERSONATE_CREATOR_IS_ADMIN=0
-
-# Adresse email qui apparaitra dans les mails envoyés par MADIS
-APP_MAIL_SENDER_EMAIL=ne-pas-repondre@example.fr
-# Nom de l'expéditeur qui apparaitra dans les mails envoyés par MADIS
-APP_MAIL_SENDER_NAME="Madis"
-
-# Date relative permettant de supprimer, lors de la connexion de l'admin, les logs antérieurs à cette date.
-Doit respecter le format de date relative de PHP (ligne "unit") : https://www.php.net/manual/fr/datetime.formats.relative.php
-APP_LOG_JOURNAL_DURATION=6months
-
-# Valeurs utilisées pour les tooltips sur les réponses dans les formulaires de création/édition
-d'évaluation de conformité d'organisation
-###> CONFORMITE ORGANISATION TOOLTIP ###
-TOOLTIP_CONFORMITE_ORGANISATION_INEXISTANTE="Rien n'est fait"
-TOOLTIP_CONFORMITE_ORGANISATION_TRES_ELOIGNEE="La ou les pratique(s) sont très éloignées de la définition (Pratique <20%)."
-TOOLTIP_CONFORMITE_ORGANISATION_PARTIELLE="La ou les pratique(s) sont partielles (20%<Pratique>80%) au regard de la définition.<br/>Elles ne sont pas documentées."
-TOOLTIP_CONFORMITE_ORGANISATION_QUASI_CONFORME="La ou les pratiques sont conformes ou quasiment conforme à la définition (80%<Pratique>100%)."
-TOOLTIP_CONFORMITE_ORGANISATION_MESURABLE="La ou les pratiques sont conforme à la définition.<br/>Elles sont documentées et contrôlables dans le cas d'un audit."
-TOOLTIP_CONFORMITE_ORGANISATION_REVISEE="La ou les pratiques sont coordonnées et conforme à la définition.<br/>Des évaluations sont réalisées.<br/>Des améliorations sont systématiquement apportées à partir de l'analyse des évaluations effectuées. "
-
-
-# URL vers le mailer que doit utiliser MADIS
-###> symfony/swiftmailer-bundle ###
-# Pour GMAIL, utiliser: "gmail://username:password@localhost"
-# Pour un SMTP générique, utiliser: "smtp://localhost:25?encryption=&auth_mode="
-# Pour désactiver les mails, utiliser: "null://localhost"
-MAILER_URL=gmail://username:password@localhost
-
-# Configuration de KnpSnappyBundle : Emplacement de wkhtmltopdf
-###> knplabs/knp-snappy-bundle ###
-WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf
-WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage
-###< knplabs/knp-snappy-bundle ###
-```
diff --git a/doc/maintenance-applicative/index.md b/doc/maintenance-applicative/index.md
deleted file mode 100644
index d79cd64c78553a7addc1021c69d8519601477849..0000000000000000000000000000000000000000
--- a/doc/maintenance-applicative/index.md
+++ /dev/null
@@ -1,10 +0,0 @@
-MADIS - Maintenance applicative
-===============================
-
-MADIS évolue. C'est pourquoi vous serez amené à le mettre à jour.
-Pour cela, les manipulations à effectuer sont décrites dans cet espace de documentation.
-
-- [Pré-requis pour lancer l'installation de MADIS](1-pre-requis.md)
-- [Réaliser une montée/descente de version de MADIS](2-realiser-une-montee-de-version.md)
-- [Descriptif des variables d'environnement de Symfony](4-descriptif-variables-environement-symfony.md)
-- [Problèmes possibles et connus lors de mises à jour](3-problemes-possible-lors-de-mises-a-jour.md)
diff --git a/doc/maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md b/doc/maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md
new file mode 100644
index 0000000000000000000000000000000000000000..cbfca5d3f8b0747cf962ec2276ad5d6d5aabc9b8
--- /dev/null
+++ b/doc/maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md
@@ -0,0 +1,333 @@
+Paramétrage complémentaire et .env
+============================
+
+1. [Configuration générale](#1-configuration-générale)
+2. [Sécurisation de Madis](#2-sécurisation-de-madis)
+3. [Gérer la taille des pièces jointes déposées](#3-gérer-la-taille-des-pièces-jointes-déposées)
+4. [Configuration des images Madis](#4-configuration-des-images-madis)
+5. [Module notifications](#5-module-notifications)
+6. [Débugguer Madis](#6-débugguer-madis)
+7. [Configuration SSO](#7-configuration-sso)
+8. [Autres variables configurables](#8-autres-variables-configurables)
+
+## 1. Configuration générale
+
+Nom de l'application.
+```bash
+APP_APPLICATION_NAME="Madis"
+```
+
+Nom du référent RGPD par défaut.
+```bash
+APP_DEFAULT_REFERENT="Référent RGPD"
+```
+
+Adresse du DPD par défaut. Si vous êtes une structure de mutualisation assurant le rôle de DPD, saisissez votre adresse. Pour la civilité `APP_DPO_CIVILITY`, il est possible de mettre :
+- Pour Monsieur : `m`
+- Pour Madame : `mme`
+```bash
+APP_DPO_CIVILITY=m
+APP_DPO_FIRST_NAME="Prénom"
+APP_DPO_LAST_NAME="Nom"
+APP_DPO_JOB="Titre de poste"
+APP_DPO_MAIL=MonAdresseEmail@Domaine.fr
+APP_DPO_PHONE_NUMBER=0123456789
+APP_DPO_COMPANY="Nom de la structure"
+APP_DPO_ADDRESS_STREET="Rue"
+APP_DPO_ADDRESS_CITY="Ville"
+APP_DPO_ADDRESS_ZIP_CODE="11111"
+```
+
+Configuration du pied de page du site (Nom et URL de la structure de mutualisation).
+```bash
+APP_FOOTER_PROVIDER_NAME="Nom de la structure"
+APP_FOOTER_PROVIDER_URL="https://www.soluris.fr"
+```
+
+Paramétrage du nombre de données affichées dans le tableau du plan d'actions sur le tableau de bord utilisateur (gestionnaire ou lecteur).
+```bash
+APP_USER_DASHBOARD_ACTION_PLAN_LIMIT=10
+```
+
+Paramétrage du nombre de données affichées dans le tableau de journalisation des actions de la structure sur le tableau de bord utilisateur (gestionnaire ou lecteur).
+```bash
+APP_USER_DASHBOARD_JOURNALISATION_LIMIT=15
+```
+
+Paramétrage du nombre de données affichées dans les tableaux des vues listes.
+```bash
+APP_DATATABLE_DEFAULT_PAGE_LENGTH=15
+```
+
+## 2. Sécurisation de Madis
+
+**Attention : Modifiez impérativement la chaîne de caractère suivante utilisée dans la sécurité de votre application lors de votre première installation.**
+```bash
+APP_SECRET=a98f56b9ea67f189df8ed6a39c548503
+```
+
+Configuration de la politique de mot de passe pour accéder à Madis. Il est possible de configurer les éléments suivants :
+- Longueur minimum ;
+- Nécessite des caractères majuscules et minuscules ;
+- Nécessite au moins 1 lettre ;
+- Nécessite au moins 1 chiffre ;
+- Nécessite au moins 1 caractère spécial.
+```bash
+# Longueur minimale du mot de passe
+APP_PASSWORD_REQUIRE_MIN_LENGTH=14
+# Si true, le mot de passe nécessite des caractères majuscules ET minuscules
+APP_PASSWORD_REQUIRE_CASE_DIFF=true
+# Si true, le mot de passe nécessite au moins 1 lettre
+APP_PASSWORD_REQUIRE_LETTERS=true
+# Si true, le mot de passe nécessite au moins 1 chiffre
+APP_PASSWORD_REQUIRE_NUMBERS=true
+# Si true, le mot de passe nécessite au moins 1 caractère spécial (&!?, etc.)
+APP_PASSWORD_REQUIRE_SPECIAL_CHARACTERS=true
+```
+
+Défini si l'administrateur doit être identifié comme le créateur d'un élément lors de subrogation.
+- Si à 0, ce sera le nom de l'utilisateur subrogé qui apparaîtra ;
+- Si à 1, ce sera le nom de l'administrateur qui subroge qui apparaîtra.
+```bash
+APP_IMPERSONATE_CREATOR_IS_ADMIN=0
+```
+
+Temps maximal de conservation de l'historique de journalisation des actions dans Madis. Par défaut, le temps est de 6 mois (En savoir plus sur le [format à utiliser](https://www.php.net/manual/fr/datetime.formats.relative.php)).
+```bash
+APP_LOG_JOURNAL_DURATION=6months
+```
+
+Nombre de tentatives de connexion avant la désactivation du compte. Un compte désactivé ne pourra plus se connecter, et seul un administrateur pourra le débloquer en modifiant l'option « **Actif** » dans le formulaire de modification de l'utilisateur.
+```bash
+APP_MAX_LOGIN_ATTEMPTS=10
+```
+
+Affiche une case à cocher « **Se souvenir de moi** » sur la page de connexion permettant de se souvenir de l'utilisateur. Cette option permet à un utilisateur de rester connecté jusqu'à 1 semaine.
+```bash
+APP_CONNEXION_STATUS_KNOW=false
+```
+
+Temps maximal d'inactivité pour un utilisateur (en secondes). Une fois le temps écoulé, l'utilisateur est automatiquement déconnecté. Par défaut, le temps est de 1h30.
+```bash
+APP_COOKIE_IDLE_TIMEOUT=5400
+```
+
+Temps maximal de connexion (en secondes). Une fois le temps écoulé, même si l'utilisateur utilise encore activement l'application, il sera automatiquement déconnecté. Par défaut, le temps est de 4h.
+```bash
+APP_COOKIE_LIFETIME=14400
+```
+
+**Note : S'assurer que la configuration PHP `session.gc_maxlifetime` autorise le temps de session au moins supérieur ou égale à ce qui est défini dans le .env.**
+
+## 3. Gérer la taille des pièces jointes déposées
+
+Dans la configuration NGINX, il est possible de définir la taille limite de dépôt de fichier :
+```nginx
+server {
+    client_max_body_size 10M;
+}
+```
+
+Puis recharger la configuration de NGINX :
+```shell
+service nginx reload
+```
+
+Il faut aussi modifier la limite présente dans le `php.ini` (`/etc/php/8.1/fpm/php.ini`) :
+```php
+upload_max_filesize = 10M
+```
+
+Puis recharger la configuration de php :
+```shell
+service php8.1-fpm reload
+```
+
+Il faut ensuite modifier la limite présente dans le .env :
+```php
+APP_MAX_UPLOAD_SIZE=10M
+```
+
+**Note : S'assurer que les configurations NGINX et PHP autorisent des envois au moins supérieurs ou égaux à ce qui est défini dans le .env.**
+
+## 4. Configuration des images Madis
+
+Les images doivent être déposées dans le dossier `public` présent à la racine du projet. Si vous souhaitez ajouter vos propres images, il est possible d'ajouter un dossier `custom` dans `public`. Celui-ci n'est pas versionné dans Git.
+
+Favicon.
+```bash
+APP_IMAGE_FAVICON_PATH="images/logo_madis_2020_favicon.png"
+```
+
+Image utilisée dans la page de connexion.
+```bash
+APP_IMAGE_LOGO_COULEUR="images/logo_madis_2020_couleur.png"
+```
+
+Image utilisée dans l'en-tête.
+```bash
+APP_IMAGE_LOGO_BLANC="images/logo_madis_2020_blanc.png"
+```
+
+Image utilisée dans l'en-tête lorsque la barre latérale du menu est réduite.
+```bash
+APP_IMAGE_SIDEBAR_REDUCED_PATH="images/logo_madis_2020_favicon.png"
+```
+
+Lien utilisé dans la barre latérale du menu.
+```bash
+APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="https//www.soluris.fr"
+```
+
+Image utilisée pour le lien présent dans la barre latérale du menu.
+```bash
+APP_IMAGE_SIDEBAR_BOTTOM_PATH="images/soluris-logo-white.png"
+```
+
+Image SVG utilisée pour la carte du territoire sur le tableau de bord administrateur (administrateur ou référent multi-structures).
+```bash
+APP_COMMUNE_SVG_REDUCED_PATH="images/commune.svg"
+```
+
+Si les images sont modifiées, penser à vider le cache pour que ces données soient appliquées.
+```bash
+sudo -u www-data ./bin/console cache:clear
+```
+
+## 5. Module notifications
+
+Pour activer le module notifications, mettre la variable suivante à `true` dans le fichier .env.
+```bash
+APP_ACTIVATE_NOTIFICATIONS=true
+```
+
+À noter : Les notifications sont supprimées automatiquement après un certain temps. Ce temps est basé sur le temps paramétré pour la journalisation des actions via la variable `APP_LOG_JOURNAL_DURATION`. De plus, l'ensemble des notifications sont supprimées lors de la désactivation du module.
+
+(Option) Si ce n'est pas déjà fait, ajouter au cron les lignes suivantes. Penser à adapter le chemin `/var/www/madis/` au besoin :
+```bash
+01 * * * * www-data cd /var/www/madis && $(which php8.1) ./bin/console notifications:generate
+31 * * * * www-data cd /var/www/madis && $(which php8.1) ./bin/console notifications:send
+```
+
+Nombre de notifications non lues à afficher dans l'en-tête.
+```bash
+APP_NOTIFICATION_HEADER_NUMBER=5
+```
+
+Affichage d'un tableau des dernières notifications non lues sur le tableau de bord administrateur (administrateur ou référent multi-structures).
+```bash
+APP_NOTIFICATION_DASHBOARD_SHOWN=true
+```
+
+Nombre de notifications non lues à afficher sur le tableau de bord administrateur (administrateur ou référent multi-structures).
+```bash
+APP_NOTIFICATION_DASHBOARD_NUMBER=15
+```
+
+Nombre de jours avant l'envoi d'une notification : Aucune connexion depuis la création du compte de l'utilisateur.
+```bash
+APP_INACTIVE_USER_NOTIFICATION_DELAY_DAYS=365
+```
+
+Nombre de jours avant l'envoi d'une notification : Demande non traitée.
+```bash
+APP_REQUEST_NOTIFICATION_DELAY_DAYS=61
+```
+
+Nombre de jours avant l'envoi d'une notification : Aucun indice de maturité réalisé.
+```bash
+APP_SURVEY_NOTIFICATION_DELAY_DAYS=365
+```
+
+Phrase d'introduction des notifications envoyées par email.
+```bash
+APP_NOTIFICATION_EMAIL_FIRST_LINE="Des modifications ont été apportées dans <a href='https://madis.fr'>Madis</a>"
+```
+
+## 6. Débugguer Madis
+
+Logs intéressants :
+- Logs d'accès NGINX : `/var/log/nginx/madis_access.log`
+- Logs d'erreur NGINX : `/var/log/nginx/madis_error.log`
+- Logs Madis : `/var/www/madis/var/log/prod.log`
+
+Configuration du fichier `/var/www/madis/.env` pour passer l'application en mode DEV :
+* Passer `APP_ENV=prod` en `APP_ENV=dev` ;
+* Mettre `APP_DEBUG=0` à 1 pour augmenter les logs et profiter d'une barre de logs/debug sur l'application.
+
+**Attention : Il est déconseillé d'utiliser ceci en production, cela engendrerait des fuites de sécurité de votre application (comme la divulgation de votre configuration du fichier `.env` et ses mots de passe). Vous pouvez cependant l'utiliser sur des environnements n'ayant pas d'enjeux ou qui possèdent des accès restreints.**
+
+Rediriger tous les mails envoyés sur un seul destinataire (cela écrase la liste des destinataires pour celle-ci).
+```bash
+APP_MAIL_RECEIVER_DEV=~
+```
+
+## 7. Configuration SSO
+
+Nom du SSO utilisé dans la page de connexion et dans la gestion des comptes.
+```bash
+SSO_TITLE="SSO"
+```
+
+Icône du SSO utilisé dans la page de connexion et dans la gestion des comptes.
+```bash
+SSO_ICON="images/sso-icon.png"
+```
+
+Variables de configuration du SSO.
+```bash
+# sso user info field used to identify user on the app
+SSO_KEY_FIELD="sub"
+
+# leave empty to disable SSO logout on app logout
+SSO_LOGOUT_URL=
+
+###> Value used for oauth2 client config see config/packages/knpu_oauth2_client.yaml ###
+# leave empty to disable SSO (available types: lemonldap and keycloak)
+OAUTH_TYPE=keycloak
+OAUTH_URL=https://xxxxxxxxxx/auth
+OAUTH_REALM=REALM
+OAUTH_CLIENT_ID=XXXXX
+OAUTH_CLIENT_SECRET=XXXXX
+```
+
+## 8. Autres variables configurables
+
+URL vers la base de données (En savoir plus sur le [format à utiliser](http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url)).
+```bash
+DATABASE_URL=mysql://user:user_pass@db:3306/madis
+```
+
+Adresse email qui apparaîtra dans les emails envoyés par Madis.
+```bash
+APP_MAIL_SENDER_EMAIL=ne-pas-repondre@example.fr
+```
+
+Nom de l'expéditeur qui apparaitra dans les emails envoyés par Madis.
+```bash
+APP_MAIL_SENDER_NAME="Madis"
+```
+
+Valeurs utilisées pour les tooltips sur les réponses dans le formulaire d'évaluation de conformité de la structure.
+```bash
+TOOLTIP_CONFORMITE_ORGANISATION_INEXISTANTE="Rien n'est fait"
+TOOLTIP_CONFORMITE_ORGANISATION_TRES_ELOIGNEE="La ou les pratique(s) sont très éloignées de la définition (Pratique < 20%)."
+TOOLTIP_CONFORMITE_ORGANISATION_PARTIELLE="La ou les pratique(s) sont partielles (20% < Pratique > 80%) au regard de la définition.<br/>Elles ne sont pas documentées."
+TOOLTIP_CONFORMITE_ORGANISATION_QUASI_CONFORME="La ou les pratiques sont conformes ou quasiment conforme à la définition (80% < Pratique > 100%)."
+TOOLTIP_CONFORMITE_ORGANISATION_MESURABLE="La ou les pratiques sont conforme à la définition.<br/>Elles sont documentées et contrôlables dans le cas d'un audit."
+TOOLTIP_CONFORMITE_ORGANISATION_REVISEE="La ou les pratiques sont coordonnées et conforme à la définition.<br/>Des évaluations sont réalisées.<br/>Des améliorations sont systématiquement apportées à partir de l'analyse des évaluations effectuées."
+```
+
+URL vers le mailer que doit utiliser Madis.
+- Pour GMAIL, utiliser : `"gmail://username:password@localhost"`
+- Pour un SMTP générique, utiliser : `"smtp://localhost:25?encryption=&auth_mode="`
+- Pour désactiver les mails, utiliser : `"null://localhost"`
+```bash
+MAILER_DSN=null://localhost
+```
+
+Configuration de l'emplacement de Wkhtmltopdf.
+```bash
+WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf
+WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage
+```
diff --git a/doc/maintenance-et-gestion-application/2-mettre-a-jour-madis.md b/doc/maintenance-et-gestion-application/2-mettre-a-jour-madis.md
new file mode 100644
index 0000000000000000000000000000000000000000..45363c7434deb8f2869c02ec8ba07fb6fd88e5a3
--- /dev/null
+++ b/doc/maintenance-et-gestion-application/2-mettre-a-jour-madis.md
@@ -0,0 +1,145 @@
+Mettre à jour Madis
+==============================
+
+1. [Monter de version](#1-monter-de-version)
+2. [Rétrograder de version](#2-rétrograder-de-version)
+    - [Cas 1 : Il n'y a pas eu de migration de données, ou des données ont migré sans perte](#cas-1-il-ny-a-pas-eu-de-migration-de-données-ou-des-données-ont-migré-sans-perte)
+    - [Cas 2 : Je souhaite rétrograder une migration précise](#cas-2-je-souhaite-rétrograder-une-migration-précise)
+3. [Problèmes connus de mise à jour](#3-problèmes-connus-de-mise-à-jour)
+    - [Des fichiers sont en cours de modification](#des-fichiers-sont-en-cours-de-modification)
+
+Si vous êtes amenés à mettre à jour Madis. Vous pouvez consulter le fichier [CHANGELOG.md](../../CHANGELOG.md#changelog) pour prendre connaissance des changements qui ont eu lieu dans le code entre les versions.
+
+## 1. Monter de version
+
+Pour mettre à jour votre dépôt de code, commencer par faire une sauvegarde de la base de données actuelle afin de prévenir d'éventuels problèmes lors de la mise à jour.
+```shell
+mysqldump -u madis -pMonMotDePasse madis > madis_bdd_DATE.sql
+```
+
+Se placer dans le dossier de Madis.
+```shell
+cd /var/www/madis
+```
+
+Pour prendre connaissance des modifications Git.
+```shell
+sudo -u www-data git fetch -p
+```
+
+Pour consulter la liste des versions disponibles.
+```shell
+sudo -u www-data git tag
+```
+
+Aller sur la version de votre choix (ici v2.4.4).
+```shell
+sudo -u www-data git checkout v2.4.4
+```
+
+Enfin, lancez la commande suivante pour mettre à jour Madis.
+```shell
+sudo -u www-data ./bin/deploy
+```
+
+## 2. Rétrograder de version
+
+**Attention : Avant toute utilisation de ce qui suit, assurez-vous d'avoir effectué une sauvegarde de votre base de données, voire de contacter une personne du Support Madis pour vous aiguiller. Toute intervention non maîtrisée peut amener à de la perte de données.**
+
+Vous pourrez être confronté au besoin de rétrograder Madis à une version antérieure. Cependant, il peut y avoir eu des modifications de votre base de données durant la montée de version.
+
+### Cas 1 : Il n'y a pas eu de migration de données, ou des données ont migré sans perte
+
+Il suffit uniquement de remettre le code applicatif souhaité.
+
+Faire une sauvegarde de la base de données actuelle afin de prévenir d'éventuels problèmes lors de la mise à jour.
+```shell
+mysqldump -u madis -pMonMotDePasse madis > madis_bdd_DATE.sql
+```
+
+Se placer dans le dossier de Madis.
+```shell
+cd /var/www/madis
+```
+
+Pour consulter la liste des versions disponibles.
+```shell
+sudo -u www-data git tag
+```
+
+Je suis en v2.4.4 et je souhaite revenir en v2.4.3, de ce fait, je retourne sur la version souhaitée.
+```shell
+sudo -u www-data git checkout v2.4.3
+```
+
+Je relance la mise à jour, qui va me réinstaller l'ancien code.
+```shell
+sudo -u www-data ./bin/deploy
+```
+
+### Cas 2 : Je souhaite rétrograder une migration précise
+
+Les scripts Madis permettent de rejouer les scénarios inverses.
+
+Faire une sauvegarde de la base de données actuelle afin de prévenir d'éventuels problèmes lors de la mise à jour.
+```shell
+mysqldump -u madis -pMonMotDePasse madis > madis_bdd_DATE.sql
+```
+
+Se placer dans le dossier de Madis.
+```shell
+cd /var/www/madis
+```
+
+Regarder les migrations possibles.
+```shell
+ls src/Application/Migrations
+```
+
+Une liste apparaît de toutes les migrations de base de données qui ont été créées depuis le lancement de Madis. Il me faut donc isoler la ou les migrations à rétrograder. Les fichiers sont formatés de la manière suivante : Années-Mois-Jours-Heures-Minutes-Secondes.
+
+Exemple :
+- `Version20240419140516.php -- v2.2.5`
+- `Version20240410152022.php -- v2.2.5`
+- `Version20240408080622.php -- v2.2.5`
+- `Version20240219091346.php -- v2.2.4`
+
+Je vais donc lancer les scripts inverses dans l'ordre décroissant de création pour migrer les données à leur état initial.
+```shell
+sudo -u www-data bin/console doctrine:migration:execute --down 20240419140516
+```
+
+Enfin, lancez la commande suivante pour réinstaller l'ancien code applicatif.
+```shell
+sudo -u www-data ./bin/deploy
+```
+
+## 3. Problèmes connus de mise à jour
+
+### Des fichiers sont en cours de modification
+
+Des fichiers ont été modifiés, le checkout est avorté.
+```shell
+sudo -u www-data git checkout v2.4.4
+error: Your local changes to the following files would be overwritten by checkout:
+        .env.dist
+        config/domain/user/translations/messages.fr.yaml
+        src/Domain/Reporting/Generator/Word/AbstractGenerator.php
+Please, commit your changes or stash them before you can switch branches.
+Aborting
+```
+
+Consulter les différences entre les fichiers.
+```shell
+sudo -u www-data git diff
+```
+
+Abandonner les modifications.
+```shell
+sudo -u www-data git reset --hard
+```
+
+Relancer le checkout.
+```shell
+sudo -u www-data git checkout v2.4.4
+```
diff --git a/doc/maintenance-et-gestion-application/3-requetes-sql.md b/doc/maintenance-et-gestion-application/3-requetes-sql.md
new file mode 100644
index 0000000000000000000000000000000000000000..f141ae3a13eca9e68c14292387f2b49ef417fb91
--- /dev/null
+++ b/doc/maintenance-et-gestion-application/3-requetes-sql.md
@@ -0,0 +1,23 @@
+Requêtes SQL
+============
+
+1. [Conformité de la structure : Ajouter une question à un processus existant](#1-conformité-de-la-structure-ajouter-une-question-à-un-processus-existant)
+2. [Conformité de la structure : Ajouter un nouveau processus](#2-conformité-de-la-structure-ajouter-un-nouveau-processus)
+
+## 1. Conformité de la structure : Ajouter une question à un processus existant
+
+Il faut vérifier en base de données la dernière valeur pour le champ `position` qui ordonne les questions liées à ce processus. Dans l'exemple suivant la position de la question est à 5, car la dernière question en base de données a la valeur 4. Bien faire attention à la génération de la clef primaire qui est ici un `uuid`.
+
+```sql
+INSERT INTO `registry_conformite_organisation_question` (`id`, `processus_id`, `nom`, `position`) VALUES ('4d66c04e-62e7-4216-85a2-6d9feb71722a', 'b2a186df-cf81-4199-a292-53dbdb43b609', 'Ceci est le texte de la question', '5')
+```
+
+## 2. Conformité de la structure : Ajouter un nouveau processus
+
+Il faut vérifier en base de données la dernière valeur pour le champ `position` qui ordonne les processus. Dans l'exemple suivant la position du processus est à 13 car le dernier processus en base a la valeur 12. Bien faire attention à la génération de la clef primaire qui est ici un `uuid`.
+
+```sql
+INSERT INTO `registry_conformite_organisation_processus` (`id`, `nom`, `couleur`, `description`, `position`) VALUES ('b2a186df-cf81-4199-a292-53dbdb43b609', 'Nom du processus', 'info', 'Description du processus', '13')
+```
+
+Puis ajouter la question en utilisant l'`uuid` du processus précédemment créé pour la colonne `processus_id`. Suivre alors la procédure décrite pour [ajouter une question à un processus existant](#1-conformité-de-la-structure-ajouter-une-question-à-un-processus-existant).
diff --git a/doc/maintenance-et-gestion-application/index.md b/doc/maintenance-et-gestion-application/index.md
new file mode 100644
index 0000000000000000000000000000000000000000..911e1c8b1c403744574034e6a9432dec35600159
--- /dev/null
+++ b/doc/maintenance-et-gestion-application/index.md
@@ -0,0 +1,21 @@
+Maintenance et gestion applicative
+========================
+
+## Table des matières
+
+- [Paramétrage complémentaire et .env](1-parametrages-complementaires-et-env.md#paramétrage-complémentaire-et-env)
+    - [Configuration générale](1-parametrages-complementaires-et-env.md#1-configuration-générale)
+    - [Sécurisation de Madis](1-parametrages-complementaires-et-env.md#2-sécurisation-de-madis)
+    - [Gérer la taille des pièces jointes déposées](1-parametrages-complementaires-et-env.md#3-gérer-la-taille-des-pièces-jointes-déposées)
+    - [Configuration des images Madis](1-parametrages-complementaires-et-env.md#4-configuration-des-images-madis)
+    - [Module notifications](1-parametrages-complementaires-et-env.md#5-module-notifications)
+    - [Débugguer Madis](1-parametrages-complementaires-et-env.md#6-débugguer-madis)
+    - [Configuration SSO](1-parametrages-complementaires-et-env.md#7-configuration-sso)
+    - [Autres variables configurables](1-parametrages-complementaires-et-env.md#8-autres-variables-configurables)
+- [Mettre à jour Madis](2-mettre-a-jour-madis.md#mettre-à-jour-madis)
+    - [Monter de version](2-mettre-a-jour-madis.md#1-monter-de-version)
+    - [Rétrograder de version](2-mettre-a-jour-madis.md#2-rétrograder-de-version)
+    - [Problèmes connus de mise à jour](2-mettre-a-jour-madis.md#3-problèmes-connus-de-mise-à-jour)
+- [Requêtes SQL](3-requetes-sql.md#requêtes-sql)
+    - [Conformité de la structure : Ajouter une question à un processus existant](3-requetes-sql.md#1-conformité-de-la-structure-ajouter-une-question-à-un-processus-existant)
+    - [Conformité de la structure : Ajouter un nouveau processus](3-requetes-sql.md#2-conformité-de-la-structure-ajouter-un-nouveau-processus)
diff --git a/docker/nginx/default b/docker/nginx/default
index f867c70affd09c5d1419f7cff4b099741ae36be8..467546c8f0fae4b15901fe07f00ee1066fdf6ddc 100644
--- a/docker/nginx/default
+++ b/docker/nginx/default
@@ -32,8 +32,6 @@ server {
         include fastcgi_params;
     }
 
-    client_max_body_size 10M;
-
     add_header X-Frame-Options DENY;
     add_header X-Content-Type-Options nosniff;
 
diff --git a/docs/conf.py b/docs/conf.py
index 416e178f3dc15547dbc0cb17fd5f52c737b03fe6..4cea30c7c4b359df5fb13ebded11336bc4e59a1f 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,48 +1,93 @@
-#import sphinx_rtd_theme
-import json
-extensions = [
-    'myst_parser',
-    "sphinxext.opengraph",
-    "sphinx_copybutton",
-    "sphinx_panels",
-#    'sphinx_rtd_theme',
-]
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+
+extensions = ['myst_parser',
+              'sphinxcontrib.opendataservices',
+              'sphinxcontrib.jsonschema',
+              'sphinx_rtd_theme',
+              'sphinx.ext.todo',
+              'sphinx.ext.autodoc',
+              'sphinx_togglebutton',]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+
+source_suffix = ['.rst', '.md']
+master_doc = 'index'
 project = 'Madis'
 copyright = 'Madis Soluris'
 author = 'Soluris'
-language = "fr"
-html_theme = 'sphinx_rtd_theme'
-html_baseurl = 'docutilisateur.html'
 html_logo = "images/logo_madis_2020_blanc.png"
 html_title = "Documentation Madis"
-html_theme_options = {
-    'display_version': True,
-    'prev_next_buttons_location': 'bottom',
-    # Toc options
-    'collapse_navigation': True,
-    'sticky_navigation': True,
-    'navigation_depth': 4,
-    'includehidden': True,
-    'titles_only': False
+
+
+language = "fr"
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
+
+pygments_style = 'sphinx'
+todo_include_todos = False
+
+html_theme = 'sphinx_rtd_theme'
+
+html_css_files = [
+    'custom.css',
+]
+html_static_path = ['_static']
+htmlhelp_basename = 'sphinxdoc'
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+     # 'figure_align': 'htbp',
 }
 
+latex_documents = [
+    (master_doc, 'sphinx.tex', 'Documentation Madis',
+     'Soluris', 'manual'),
+]
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    (master_doc, 'sphinx', 'Documentation Madis',
+     [author], 1)
+]
+
+# If true, show URL addresses after external links.
+#
+# man_show_urls = False
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    (master_doc, 'sphinx', 'Documentation Madis',
+     author, 'sphinx', 'Opensource Madis',
+     'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#
+# texinfo_appendices = []
+
+# If false, no module index is generated.
+#
+# texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#
+# texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+#
+# texinfo_no_detailmenu = False
+
 
-#html_theme = "sphinx_rtd_theme"
-#html_theme_options = {
-#    'analytics_id': 'G-XXXXXXXXXX',  #  Provided by Google in your dashboard
-#    'analytics_anonymize_ip': False,
-#    'logo_only': False,
-#    #'html_logo' : 'image/logo_madis_2020_blanc.png',
-#    'display_version': False,
-#    'prev_next_buttons_location': 'bottom',
-#    'style_external_links': False,
-#    'vcs_pageview_mode': '',
-#    'style_nav_header_background': 'blue',
-#    # Toc options
-#    'collapse_navigation': True,
-#    'sticky_navigation': True,
-#    'navigation_depth': 4,
-#    'includehidden': True,
-#    'titles_only': False
-#}
+locale_dirs = ['locale/']   # path is example but recommended.
+gettext_compact = False     # optional.
 
+togglebutton_hint = ""
diff --git a/docs/docutilisateur.md b/docs/docutilisateur.md
index dd1a60994fec8174bee51a4e51876f84c334e658..c6060aeff98ad17dd013dbecb6b0b1a701fd949f 100644
--- a/docs/docutilisateur.md
+++ b/docs/docutilisateur.md
@@ -32,11 +32,16 @@ Le tableau de bord permet de visualiser en un coup d’œil l’état d’avance
 ![Tableau de bord](images/Madis-Tableau-De-Bord-Utilisateur.png)
 
 Il est possible de visualiser différents indicateurs :
-* Les sous-traitants conformes et non conformes ;
-* Les demandes à traiter et celles traitées ;
-* Des statistiques et accès rapide de modules figurants également dans le menu ;
+* Des graphiques synthétisant le nombre de sous-traitants conformes et non conformes pour les clauses contractuelles, les éléments de sécurité adoptés, le registre des traitements, ainsi que les données hors UE ;
+* Des graphiques synthétisant le nombre de demandes non archivées réparties par types de demandes, ainsi que par statut.
+* Des statistiques et accès rapide pour certains modules :
+  * Le nombre total de demandes non archivées à traiter. Une demande sera considérée comme « **À traiter** » si elle n'a pas de statut « **Demande traitée et clôturée** » ou « **Demande refusée** » avec une date de traitement ;
+  * Le nombre total de violations non archivées ;
+  * Le nombre total d'actions planifiées (Action de protection ayant le statut « **Non appliquée** » et planifiée) ;
+  * Le nombre total d'actions mises en place (Action de protection ayant le statut « **Appliquée** ») ;
+
 * Les deux derniers indices de maturité sous forme de radar. Il est possible de visualiser qu'un seul radar en cliquant sur la date de l'indice de maturité à masquer ainsi que de sélectionner un référentiel en particulier ;
-* Le graphique synthétisant les mesures de sécurité conformes et non conformes sur les traitements informatisés ;
+* Un graphique synthétisant les mesures de sécurité conformes et non conformes sur les traitements informatisés ;
 * La liste des prochaines actions planifiées dans le plan d'action ;
 * D'autres indicateurs peuvent être affichés si les modules sont activés (Conformité des traitements, AIPD à réaliser...).
 
@@ -189,7 +194,7 @@ Dans les informations générales, il est possible de renseigner les éléments
 * **Gestionnaire** : Personne(s) ou service qui gère le traitement. Peut-être différent du responsable de traitement ou du RGPD ;
 * **Statut** : Le statut actif est coché par défaut. Un traitement inactif n'apparaît pas dans le registre des traitements ni dans le bilan ;
 * **Base légale** : Liste des bases légales énumérées dans le RGPD. Il est possible de positionner la base légale sur « **À déterminer** » si la base légale n'est pas connue au moment de la création du traitement ;
-* **Justification de la base légale** : Toute base légale doit être justifiée grâce à des références de texte réglementaire (Exemple CGCT). Par exemple, pour le consentement, il faut avoir l'accord écrit de la personne concernée. Il est également possible d'indiquer le texte réglementaire permettant de justifier le choix du délai de conservation ;
+* **Justification de la base légale** : Toute base légale doit être justifiée grâce à des références de texte réglementaire (Exemple CGCT). Par exemple, pour le consentement, il faut avoir l'accord écrit de la personne concernée. Il est également possible d'indiquer le texte réglementaire permettant de justifier le choix de la durée de conservation ;
 * **Observations** : Toute précision complémentaire sur la tenue de ce traitement ;
 * **Registre public** : Rend visible le traitement dans une page non authentifiée à destination du grand public. Les champs affichés sont ceux [paramétrés par le DPD](#registre-public).
 
@@ -240,10 +245,10 @@ Dans les détails, il est possible de renseigner les éléments suivants :
 * **Nombre de concernés** : Nombre approximatif de personnes concernées par le traitement. Cette information est utile en cas de violations de données personnelles ;
 * **Logiciel et supports** : Si le traitement est informatisé, précise le nom du logiciel utilisé (Word, Excel...). Si le traitement est exclusivement papier, laisser ce champ vide ;
 * **Traitement papier** : Si le traitement est papier ;
-* « **+ Délai de conservation** » permet d'ajouter un ou plusieurs délais de conservation. Pour chacun, il est possible de renseigner les éléments suivants :
-  * **Nom** :  Intitulé du délai de conservation ;
-  * **Durée** :  Durée réelle mise en œuvre par la structure. Si la durée est calculée, préciser les critères utilisés pour déterminer le délai de conservation (Exemple : 3 ans à compter de la fin de la relation contractuelle) ;
-  * **Sort final** : Sort final appliqué à l'issue du délai de conservation. Il est possible de positionner le sort final sur « **Non déterminé** » si le sort final n'est pas connu au moment de la création du traitement ;
+* « **+ Durée de conservation** » permet d'ajouter une ou plusieurs durées de conservation. Pour chacun, il est possible de renseigner les éléments suivants :
+  * **Nom** :  Intitulé de la durée de conservation ;
+  * **Durée** :  Durée réelle mise en œuvre par la structure. Si la durée est calculée, préciser les critères utilisés pour déterminer la durée de conservation (Exemple : 3 ans à compter de la fin de la relation contractuelle) ;
+  * **Sort final** : Sort final appliqué à l'issue de la durée de conservation. Il est possible de positionner le sort final sur « **Non déterminé** » si le sort final n'est pas connu au moment de la création du traitement ;
 
 * **Origine des données** : Données provenant d'un tiers (CAF, Société...) ou de la personne concernée directement ;
 * **Moyens de la collecte** : Moyen utilisé pour collecter les données à caractère personnel ;
@@ -1832,163 +1837,21 @@ Par défaut, les règles de sécurité du mot de passe sont les suivantes :
 
 ## Paramètres de configuration
 
-Variables d'environnement à configurer dans le fichier « **.env** » à la racine de Madis :
-
-```
-APP_APPLICATION_NAME="Madis"
-# Idle time is 1,5 hours in seconds
-APP_COOKIE_IDLE_TIMEOUT=5400
-# Cookie lifetime is 4 hours in seconds
-APP_COOKIE_LIFETIME=14400
-APP_DEFAULT_REFERENT="Référent RGPD"
-APP_DPO_ADDRESS_CITY="Ville"
-APP_DPO_ADDRESS_STREET="1 avenue de la république"
-APP_DPO_ADDRESS_ZIP_CODE="17999"
-APP_DPO_CIVILITY=m
-APP_DPO_FIRST_NAME=
-APP_DPO_LAST_NAME="DPD"
-APP_DPO_COMPANY=Soluris
-APP_DPO_JOB="Délégué à la Protection des Données"
-APP_DPO_MAIL=DPD@soluris.fr
-APP_DPO_PHONE_NUMBER=0601234567
-APP_ENV=dev
-APP_FOOTER_PROVIDER_NAME=Soluris
-APP_FOOTER_PROVIDER_URL="https://example.fr"
-APP_IMAGE_FAVICON_PATH="images/logo_madis_2020_favicon.png"
-APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="https//example.fr"
-APP_IMAGE_SIDEBAR_BOTTOM_PATH="images/soluris-logo-white.png"
-APP_IMAGE_SIDEBAR_REDUCED_PATH="images/logo_madis_2020_favicon.png"
-APP_IMAGE_LOGO_BLANC="images/logo_madis_2020_blanc.png"
-APP_IMAGE_LOGO_COULEUR="images/logo_madis_2020_couleur.png"
-APP_COMMUNE_SVG_REDUCED_PATH="images/commune.svg"
-APP_IMPERSONATE_CREATOR_IS_ADMIN=0
-APP_MAIL_RECEIVER_DEV=~
-APP_MAIL_SENDER_EMAIL=nepasrepondre@soluris.fr
-APP_MAIL_SENDER_NAME="Madis"
-APP_SECRET=a98f56b9ea67f189df8ed6a39c548503
-# lifetime duration for log journal
-APP_LOG_JOURNAL_DURATION=6months
-# number of lines displayed in the user dashboard for journalisation list
-APP_USER_DASHBOARD_JOURNALISATION_LIMIT=15
-# number of lines displayed in the user dashboard for action plan list
-APP_USER_DASHBOARD_ACTION_PLAN_LIMIT=10
-# number of lines displayed for each datatable
-APP_DATATABLE_DEFAULT_PAGE_LENGTH=15
-# Password security configuration
-# password minimum length
-APP_PASSWORD_REQUIRE_MIN_LENGTH=14
-# if true, the password requires uppercase AND lowercase character
-APP_PASSWORD_REQUIRE_CASE_DIFF=true
-# if true, the password requires atleast 1 letter
-APP_PASSWORD_REQUIRE_LETTERS=true
-# if true, the password requires atleast 1 number
-APP_PASSWORD_REQUIRE_NUMBERS=true
-# if true, the password requires atleast 1 special character (&!?, etc)
-APP_PASSWORD_REQUIRE_SPECIAL_CHARACTERS=true
-
-# global maximum upload size for file uploads
-APP_MAX_UPLOAD_SIZE=4M
-# Maximum number of login attempts before the user account is deactivated
-APP_MAX_LOGIN_ATTEMPTS=10
-
-###> Notifications ###
-# Activate notification module
-APP_ACTIVATE_NOTIFICATIONS=true
-# number of unread notificaitons to display on the admin dashboard
-APP_NOTIFICATION_DASHBOARD_NUMBER=15
-# number of unread notificaitons to display on the page header
-APP_NOTIFICATION_HEADER_NUMBER=5
-# Whether to show notifications on the admin dashboard
-APP_NOTIFICATION_DASHBOARD_SHOWN=true
-# Number of days before a inactive user notification is sent
-APP_INACTIVE_USER_NOTIFICATION_DELAY_DAYS=365
-# Number of days before a late request notification is sent
-APP_REQUEST_NOTIFICATION_DELAY_DAYS=61
-# Number of days before a late Survey (indice de maturité) notification is sent
-APP_SURVEY_NOTIFICATION_DELAY_DAYS=365
-APP_NOTIFICATION_EMAIL_FIRST_LINE="Des modifications ont été apportées dans <a target='_blank' href='https://madis-exemple.fr' rel='noreferrer noopener'>Madis</a>"
-###< Notifications ###
-
-#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
-#TRUSTED_HOSTS=localhost,example.com
-
-###> CONFORMITE ORGANISATION TOOLTIP ###
-###> Value used to display in tooltip in the form for the evaluation of the Conformité Organisation ###
-TOOLTIP_CONFORMITE_ORGANISATION_INEXISTANTE="Rien n'est fait"
-TOOLTIP_CONFORMITE_ORGANISATION_TRES_ELOIGNEE="La ou les pratique(s) sont très éloignées de la définition (Pratique < 20 %)."
-TOOLTIP_CONFORMITE_ORGANISATION_PARTIELLE="La ou les pratique(s) sont partielles (20 % < Pratique > 80 %) au regard de la définition.<br/>Elles ne sont pas documentées."
-TOOLTIP_CONFORMITE_ORGANISATION_QUASI_CONFORME="La ou les pratiques sont conformes ou quasiment conforme à la définition (80 % < Pratique > 100 %)."
-TOOLTIP_CONFORMITE_ORGANISATION_MESURABLE="La ou les pratiques sont conforme à la définition.<br/>Elles sont documentées et contrôlables dans le cas d'un audit."
-TOOLTIP_CONFORMITE_ORGANISATION_REVISEE="La ou les pratiques sont coordonnées et conforme à la définition.<br/>Des évaluations sont réalisées.<br/>Des améliorations sont systématiquement apportées à partir de l'analyse des évaluations effectuées."
-
-###> SSO LOGIN ###
-SSO_TITLE="SSO"
-SSO_ICON="images/sso-icon.png"
-# sso user info field used to identify user on the app
-SSO_KEY_FIELD="sub"
-# leave empty to disable SSO logout on app logout
-SSO_LOGOUT_URL=
-###> Value used for oauth2 client config see config/packages/knpu_oauth2_client.yaml ###
-# leave empty to disable SSO (available types: LemonLDAP and keycloak)
-OAUTH_TYPE=
-OAUTH_URL=https://xxxxxxxxxx/auth
-OAUTH_REALM=REALM
-OAUTH_CLIENT_ID=XXXXX
-OAUTH_CLIENT_SECRET=XXXXX
-###< SSO LOGIN ###
-```
+Différentes [variables d'environnement](https://gitlab.adullact.net/soluris/madis/-/blob/master/doc/maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md) sont à configurer dans le fichier « **.env** » à la racine de Madis. :
 
 ### Activation du module de délégation de l'authentification (SSO)
 
-Le module de délégation de l'authentification (SSO) est optionnel. Il peut être activé et configuré dans les variables d'environnement dans le fichier « **.env** ».
+Le module de délégation de l'authentification (SSO) est optionnel. Il peut être activé et configuré dans les [variables d'environnement](https://gitlab.adullact.net/soluris/madis/-/blob/master/doc/maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md?ref_type=heads#7-configuation-sso) dans le fichier « **.env** ».
 
 Ce module permet de paramétrer Madis pour qu’il délègue son authentification à un système de Single Sign On (SSO) tiers. Cette fonctionnalité s’appuie sur le protocole OpenID. Deux configurations (provider) sont disponibles : LemonLDAP et Keycloak.
 
-```
-###> SSO LOGIN ###
-SSO_TITLE="SSO"
-SSO_ICON="images/sso-icon.png"
-# sso user info field used to identify user on the app
-SSO_KEY_FIELD="sub"
-# leave empty to disable SSO logout on app logout
-SSO_LOGOUT_URL=
-###> Value used for oauth2 client config see config/packages/knpu_oauth2_client.yaml ###
-# leave empty to disable SSO (available types: LemonLDAP and keycloak)
-OAUTH_TYPE=
-OAUTH_URL=https://xxxxxxxxxx/auth
-OAUTH_REALM=REALM
-OAUTH_CLIENT_ID=XXXXX
-OAUTH_CLIENT_SECRET=XXXXX
-###< SSO LOGIN ###
-```
-
 Un gestionnaire ou lecteur pourra depuis son compte, s'associer ou se dissocier du fournisseur d'identité paramétré. Un administrateur a la possibilité d'effectuer cette action à la place de l'utilisateur en renseignant la clé d'authentification.
 
 ![Paramétrer la clé d'authentification d'un utilisateur](images/Madis-Modifier-Un-Utilisateur-SSO.png)
 
 ### Activation du module notifications
 
-Le module notifications est optionnel. Il peut être activé et configuré dans les variables d'environnement dans le fichier « **.env** ».
-
-```
-###> Notifications ###
-# Activate notification module
-APP_ACTIVATE_NOTIFICATIONS=true
-# number of unread notificaitons to display on the admin dashboard
-APP_NOTIFICATION_DASHBOARD_NUMBER=15
-# number of unread notificaitons to display on the page header
-APP_NOTIFICATION_HEADER_NUMBER=5
-# Whether to show notifications on the admin dashboard
-APP_NOTIFICATION_DASHBOARD_SHOWN=true
-# Number of days before a inactive user notification is sent
-APP_INACTIVE_USER_NOTIFICATION_DELAY_DAYS=365
-# Number of days before a late request notification is sent
-APP_REQUEST_NOTIFICATION_DELAY_DAYS=61
-# Number of days before a late Survey (indice de maturité) notification is sent
-APP_SURVEY_NOTIFICATION_DELAY_DAYS=365
-APP_NOTIFICATION_EMAIL_FIRST_LINE="Des modifications ont été apportées dans <a target='_blank' href='https://madis-exemple.fr' rel='noreferrer noopener'>Madis</a>"
-###< Notifications ###
-```
+Le module notifications est optionnel. Il peut être activé et configuré dans les [variables d'environnement](https://gitlab.adullact.net/soluris/madis/-/blob/master/doc/maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md?ref_type=heads#5-module-notifications) dans le fichier « **.env** ».
 
 ``À noter : Les notifications sont supprimées automatiquement après un certain temps. Ce temps est basé sur le temps paramétré pour la journalisation des actions. De plus, l'ensemble des notifications sont supprimées lors de la désactivation du module.``
 
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 4bbc14589949aa537d977ef6c7246ab86ef74780..317487fe8d4fecb6affb768f395902e38e3375b6 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -1,7 +1,107 @@
-myst_parser
-myst-parser>=0.16.1
-sphinx-book-theme>=0.2.0
-sphinx-copybutton>=0.4.0
-sphinx-panels>=0.6.0
-sphinxext-opengraph>=0.5.1
-sphinx_rtd_theme
+#
+# This file is autogenerated by pip-compile with Python 3.10
+# by the following command:
+#
+#    pip-compile requirements.in
+#
+alabaster==0.7.16
+    # via sphinx
+babel==2.14.0
+    # via
+    #   sphinx
+    #   sphinx-intl
+certifi==2023.11.17
+    # via requests
+charset-normalizer==3.3.2
+    # via requests
+click==8.1.7
+    # via sphinx-intl
+docutils==0.20.1
+    # via
+    #   myst-parser
+    #   sphinx
+    #   sphinx-rtd-theme
+    #   sphinx-togglebutton
+    #   sphinxcontrib-opendataservices
+    #   sphinxcontrib-opendataservices-jsonschema
+idna==3.6
+    # via requests
+imagesize==1.4.1
+    # via sphinx
+jinja2==3.1.3
+    # via
+    #   myst-parser
+    #   sphinx
+jsonpointer==2.4
+    # via
+    #   sphinxcontrib-opendataservices
+    #   sphinxcontrib-opendataservices-jsonschema
+jsonref==1.1.0
+    # via sphinxcontrib-opendataservices-jsonschema
+markdown-it-py==3.0.0
+    # via
+    #   mdit-py-plugins
+    #   myst-parser
+markupsafe==2.1.4
+    # via jinja2
+mdit-py-plugins==0.4.0
+    # via myst-parser
+mdurl==0.1.2
+    # via markdown-it-py
+myst-parser==2.0.0
+    # via
+    #   -r requirements.in
+    #   sphinxcontrib-opendataservices
+    #   sphinxcontrib-opendataservices-jsonschema
+packaging==23.2
+    # via sphinx
+pygments==2.17.2
+    # via sphinx
+pyyaml==6.0.1
+    # via myst-parser
+requests==2.31.0
+    # via sphinx
+snowballstemmer==2.2.0
+    # via sphinx
+sphinx==7.2.6
+    # via
+    #   -r requirements.in
+    #   myst-parser
+    #   sphinx-intl
+    #   sphinx-rtd-theme
+    #   sphinx-togglebutton
+    #   sphinxcontrib-jquery
+    #   sphinxcontrib-opendataservices
+sphinx-intl==2.1.0
+    # via -r requirements.in
+sphinx-rtd-theme==2.0.0
+    # via -r requirements.in
+sphinx-togglebutton==0.3.2
+    # via -r requirements.in
+sphinxcontrib-applehelp==1.0.8
+    # via sphinx
+sphinxcontrib-devhelp==1.0.6
+    # via sphinx
+sphinxcontrib-htmlhelp==2.0.5
+    # via sphinx
+sphinxcontrib-jquery==4.1
+    # via sphinx-rtd-theme
+sphinxcontrib-jsmath==1.0.1
+    # via sphinx
+sphinxcontrib-opendataservices==0.5.0
+    # via -r requirements.in
+sphinxcontrib-opendataservices-jsonschema==0.6.1
+    # via
+    #   -r requirements.in
+    #   sphinxcontrib-opendataservices
+sphinxcontrib-qthelp==1.0.7
+    # via sphinx
+sphinxcontrib-serializinghtml==1.1.10
+    # via sphinx
+urllib3==2.1.0
+    # via requests
+wheel==0.42.0
+    # via sphinx-togglebutton
+
+# The following packages are considered to be unsafe in a requirements file:
+# setuptools
diff --git a/fixtures/1-maturity-1-domain.yaml b/fixtures/1-maturity-1-domain.yaml
index 7efa02aa8d7da15f23a86eddd31eb8ab9ab8789a..eb3761ef06a765a7382bbe2222044a1789474397 100644
--- a/fixtures/1-maturity-1-domain.yaml
+++ b/fixtures/1-maturity-1-domain.yaml
@@ -2,13 +2,13 @@ App\Domain\Maturity\Model\Domain:
 
     maturity_domain_1:
         name: Technique
-        color: danger
+        color: info
         position: 1
         referentiel: '@maturity_referentiel_2'
 
     maturity_domain_2:
         name: Vie privée
-        color: info
+        color: success
         position: 2
         referentiel: '@maturity_referentiel_2'
 
@@ -20,18 +20,18 @@ App\Domain\Maturity\Model\Domain:
 
     maturity_domain_4:
         name: Organisation
-        color: success
+        color: warning
         position: 4
         referentiel: '@maturity_referentiel_2'
 
     maturity_domain_5:
         name: Juridique
-        color: warning
+        color: info
         position: 5
         referentiel: '@maturity_referentiel_2'
 
     maturity_domain_6:
         name: Sensibilisation Formation
-        color: info
+        color: success
         position: 6
         referentiel: '@maturity_referentiel_2'
diff --git a/fixtures/1-maturity-3-question.yaml b/fixtures/1-maturity-3-question.yaml
index 35ed291419518a1c287299add9cdce32e4b9ea44..91241b58aa699c24ad88505c5c8e2df983a99b2c 100644
--- a/fixtures/1-maturity-3-question.yaml
+++ b/fixtures/1-maturity-3-question.yaml
@@ -11,7 +11,7 @@ App\Domain\Maturity\Model\Question:
         weight: 1
 
     maturity_domain_1_question_2:
-        name: Des moyens de chiffrement pour les ordinateurs portables et les unités de stockage amovibles ( clefs USB, CD, DVD,…) ont été prévus
+        name: Des moyens de chiffrement pour les ordinateurs portables et les unités de stockage amovibles (clefs USB, CD, DVD, ...) ont été prévus
         domain: '@maturity_domain_1'
         position: 2
         optional: false
@@ -25,7 +25,7 @@ App\Domain\Maturity\Model\Question:
         weight: 1
 
     maturity_domain_1_question_4:
-        name: Les mises à jours des logiciels sont faites régulièrement (WindowsUpdate, Antivirus, Navigateur, ...)
+        name: Les mises à jour des logiciels sont faites régulièrement (WindowsUpdate, Antivirus, Navigateur, ...)
         domain: '@maturity_domain_1'
         position: 4
         optional: false
@@ -63,7 +63,7 @@ App\Domain\Maturity\Model\Question:
         weight: 1
 
     maturity_domain_2_question_2:
-        name: Les données à l'issu des traitements sont supprimées ou anonymisées
+        name: Les données à l'issue des traitements sont supprimées ou anonymisées
         domain: '@maturity_domain_2'
         position: 2
         optional: false
@@ -77,7 +77,7 @@ App\Domain\Maturity\Model\Question:
         weight: 1
 
     maturity_domain_2_question_4:
-        name: Les sessions Windows sont protégées par un mot de passe et se vérrouillent automatiquement
+        name: Les sessions Windows sont protégées par un mot de passe et se verrouillent automatiquement
         domain: '@maturity_domain_2'
         position: 3
         optional: false
@@ -240,14 +240,14 @@ App\Domain\Maturity\Model\Question:
         weight: 1
 
     maturity_domain_5_question_5:
-        name: Une charte informatique a été rédigée et annexée au règlement interieur
+        name: Une charte informatique a été rédigée et annexée au règlement intérieur
         domain: '@maturity_domain_5'
         position: 5
         optional: false
         weight: 1
 
     maturity_domain_5_question_6:
-        name: Une clause spécifique est prévue dans les contrats de sous traitance et dans les cahiers des charges
+        name: Une clause spécifique est prévue dans les contrats de sous-traitance et dans les cahiers des charges
         domain: '@maturity_domain_5'
         position: 6
         optional: false
diff --git a/fixtures/2-registry-5-shelfLife.yaml b/fixtures/2-registry-5-shelfLife.yaml
index fe05909b77d33067c9c336f6ef200bac39ad0646..e284b28d80819f7c3cea206c3cebce5deadfcc25 100644
--- a/fixtures/2-registry-5-shelfLife.yaml
+++ b/fixtures/2-registry-5-shelfLife.yaml
@@ -9,11 +9,10 @@ App\Domain\Registry\Model\ShelfLife:
         treatment: '@registry_treatment_awkan_1'
         name: shelflife 2
         duration: 4 jours
-        ultimate_fate: 	conservation
+        ultimate_fate: conservation
 
     registry_treatment_shelf_life_3:
         treatment: '@registry_treatment_awkan_2'
         name: shelflife 3
         duration: 3 jours
         ultimate_fate: conservation
-
diff --git a/fixtures/3-conformite-organisation-1-processus.yaml b/fixtures/3-conformite-organisation-1-processus.yaml
index 7c8bd1a32c3451b0374431c4c016ca42071decc2..e0a5c5e548c1c2c7c68c17033ce58403db623f9d 100644
--- a/fixtures/3-conformite-organisation-1-processus.yaml
+++ b/fixtures/3-conformite-organisation-1-processus.yaml
@@ -1,85 +1,61 @@
 App\Domain\Registry\Model\ConformiteOrganisation\Processus:
     processus_1:
         nom: "Responsabilités"
-        couleur: danger
+        couleur: info
         position: 1
-        description: "Définir et communiquer aux personnes concernées la politique générale de protection des données de la structure.
-                      Définir, mettre en œuvre et réexaminer la politique de gestion des données (processus, ressources, mesures).
-                      S'assurer que la politique de gestion des données est communiquée, comprise et appliquée au sein de la structure."
-
+        description: "Définir et communiquer aux personnes concernées la politique générale de protection des données de la structure. Définir, mettre en œuvre et réexaminer la politique de gestion des données (processus, ressources, mesures). S'assurer que la politique de gestion des données est communiquée, comprise et appliquée au sein de la structure."
     processus_2:
         nom: "Traitements et transferts de données"
-        couleur: info
+        couleur: success
         position: 2
-        description: "Disposer d’un registre des activités de traitement à jour.
-                      S'assurer que les mesures de conformité des traitements de DCP sont effectivement prises en compte en cas de traitements nouveaux ou modifiés.
-                      Gérer les transferts de données."
+        description: "Disposer d’un registre des activités de traitement à jour. S'assurer que les mesures de conformité des traitements des données à caractère personnel sont effectivement prises en compte en cas de traitements nouveaux ou modifiés. Gérer les transferts de données."
     processus_3:
         nom: "Droits de la personne concernée"
-        couleur: info #TODO Temp, need more info
+        couleur: primary
         position: 3
-        description: "S'assurer que l'information est concise pour l'exercice des droits par la personne concernée.
-                      Disposer de procédures internes fiables pour répondre aux demandes des personnes concernées."
+        description: "S'assurer que l'information est concise pour l'exercice des droits par la personne concernée. Disposer de procédures internes fiables pour répondre aux demandes des personnes concernées."
     processus_4:
         nom: "Sous-traitants"
-        couleur: info #TODO Temp, need more info
+        couleur: warning
         position: 4
-        description: "En tant que responsable du traitement, s'assurer de la conformité  des contrats de sous-traitance.
-                      Si l'entreprise agit en tant que sous-traitant, s'assurer que le responsable du traitement a pris en compte ses obligations."
+        description: "En tant que responsable du traitement, s'assurer de la conformité des contrats de sous-traitance. Si l'entreprise agit en tant que sous-traitant, s'assurer que le responsable du traitement a pris en compte ses obligations."
     processus_5:
         nom: "Protection des données dès la conception"
-        couleur: info #TODO Temp, need more info
+        couleur: info
         position: 5
-        description: "Garantir que la gestion des droits de la personne concernée et la sécurité des données sont prises en compte dès la phase de conception du projet et durant son cycle de vie.
-                      Maîtriser la conformité du produit ou du service aux exigences du RGPD au travers de vérifications, de validations et de revues de conception planifiée."
-
+        description: "Garantir que la gestion des droits de la personne concernée et la sécurité des données sont prises en compte dès la phase de conception du projet et durant son cycle de vie. Maîtriser la conformité du produit ou du service aux exigences du RGPD au travers de vérifications, de validations et de revues de conception planifiée."
     processus_6:
         nom: "Gestion des mesures de sécurité"
-        couleur: info #TODO Temp, need more info
+        couleur: success
         position: 6
-        description: "En relation avec le service sécurité de l'information de l'entreprise, mettre en œuvre les mesures de protection sélectionnées afin de répondre aux objectifs de disponibilité,
-                      d’intégrité et de confidentialité des données à caractère personnel.
-                      Détecter les incidents de sécurité pouvant avoir pour conséquence une violation de données."
-
+        description: "En relation avec le service sécurité de l'information de la structure, mettre en œuvre les mesures de protection sélectionnées afin de répondre aux objectifs de disponibilité, d’intégrité et de confidentialité des données à caractère personnel. Détecter les incidents de sécurité pouvant avoir pour conséquence une violation de données."
     processus_7:
         nom: "Analyse d'impacts sur la protection des données"
-        couleur: info #TODO Temp, need more info
+        couleur: primary
         position: 7
         description: "Réaliser une évaluation d'impact sur la protection des données lorsque le traitement est susceptible d’engendrer un risque élevé pour les droits et libertés ou lorsqu'une partie intéressée demande une preuve de conformité."
-
     processus_8:
         nom: "Sensibiliser, former et communiquer"
-        couleur: info #TODO Temp, need more info
+        couleur: warning
         position: 8
-        description: "S'assurer que le personnel à qui ont été affectées les responsabilités définies dans le système de management de la protection des données,
-                     a les compétences nécessaires pour exécuter les tâches requises. S'assurer que tout le personnel approprié a conscience de la pertinence et de l'importance
-                     de ses activités liées aux traitements des DCP."
-
+        description: "S'assurer que le personnel à qui ont été affectées les responsabilités définies dans le système de management de la protection des données, a les compétences nécessaires pour exécuter les tâches requises. S'assurer que tout le personnel approprié a conscience de la pertinence et de l'importance de ses activités liées aux traitements des données à caractère personnel."
     processus_9:
         nom: "Exigences, sollicitations, violations, poursuites"
-        couleur: info #TODO Temp, need more info
+        couleur: info
         position: 9
-        description: "Connaître la réglementation applicable et ses évolutions.
-                      Être en capacité de répondre à des sollicitations ou à des poursuites.
-                      Réagir en cas de violations de données."
-
+        description: "Connaître la réglementation applicable et ses évolutions. Être en capacité de répondre à des sollicitations ou à des poursuites. Réagir en cas de violations de données."
     processus_10:
         nom: "Évaluer et auditer"
-        couleur: info #TODO Temp, need more info
+        couleur: success
         position: 10
-        description: "À intervalles réguliers, vérifier que le système de management de la protection des données est conforme à la politique définie.
-                      Apporter la preuve que les traitements effectués par le responsable du traitement et les sous-traitants sont conformes au règlement."
-
+        description: "À intervalles réguliers, vérifier que le système de management de la protection des données est conforme à la politique définie. Apporter la preuve que les traitements effectués par le responsable du traitement et les sous-traitants sont conformes au règlement."
     processus_11:
         nom: "Gestion de la documentation et des preuves"
-        couleur: info #TODO Temp, need more info
+        couleur: primary
         position: 11
-        description: "Gérer le patrimoine documentaire attaché à la protection des données.
-                      Établir et conserver des enregistrements pour apporter la preuve des mesures techniques et organisationnelles."
-
+        description: "Gérer le patrimoine documentaire attaché à la protection des données. Établir et conserver des enregistrements pour apporter la preuve des mesures techniques et organisationnelles."
     processus_12:
         nom: "Piloter le système de management de la protection des données"
-        couleur: info #TODO Temp, need more info
+        couleur: warning
         position: 12
-        description: "Disposer d'indicateurs pour piloter l'efficacité des processus du système de management de la protection des données.
-                      Produire le bilan (rapport) annuel."
+        description: "Disposer d'indicateurs pour piloter l'efficacité des processus du système de management de la protection des données. Produire le bilan (rapport) annuel."
diff --git a/fixtures/3-conformite-organisation-2-question.yaml b/fixtures/3-conformite-organisation-2-question.yaml
index da5590f7d74565f8c2192d51cf045bfa3e582f09..5136b74e1c435fd94c45a745607e2d93359335b8 100644
--- a/fixtures/3-conformite-organisation-2-question.yaml
+++ b/fixtures/3-conformite-organisation-2-question.yaml
@@ -2,7 +2,7 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_1:
         processus: '@processus_1'
         position: 1
-        nom: "La politique de protection des données informe les personnes concernées sur  les engagements du responsable du traitement notamment : licéité des traitements, exercice des droits des personnes,  transferts vers un pays tiers, destinataires des données, conservation des données collectées, mesures de sécurité des données. Elle précise les coordonnées du responsable du traitement, celles du délégué ou du référent à la protection des données."
+        nom: "La politique de protection des données informe les personnes concernées sur les engagements du responsable du traitement notamment : licéité des traitements, exercice des droits des personnes, transferts vers un pays tiers, destinataires des données, conservation des données collectées, mesures de sécurité des données. Elle précise les coordonnées du responsable du traitement, celles du délégué ou du référent à la protection des données."
     conformite_organisation_question_2:
         processus: '@processus_1'
         position: 2
@@ -14,11 +14,11 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_4:
         processus: '@processus_1'
         position: 4
-        nom: " La politique de gestion des données détaille les mesures techniques et organisationnelles définis par le responsable du traitement pour répondre dans le temps aux exigences du RGPD et pouvoir le démontrer : rôles et responsabilités, règles relatives aux processus du RGPD, procédures de gestion des droits de la personne, procédure en cas de violation de données, sommaire du bilan annuel..."
+        nom: "La politique de gestion des données détaille les mesures techniques et organisationnelles définies par le responsable du traitement pour répondre dans le temps aux exigences du RGPD et pouvoir le démontrer : rôles et responsabilités, règles relatives aux processus du RGPD, procédures de gestion des droits de la personne, procédure en cas de violation de données, sommaire du bilan annuel..."
     conformite_organisation_question_5:
         processus: '@processus_2'
         position: 1
-        nom: "La structure dispose d'un registre des traitements. Le registre renseigne sur les critères minimum précisés à l'article 30 du règlement : nom du responsable du traitement et du DPD, les finalités du traitement, les catégories de personnes concernées et les catégories de DCP, les catégories de destinataires, les transferts de données à caractère personnel vers un pays tiers, les délais de conservation, une description générale des mesures de sécurité."
+        nom: "La structure dispose d'un registre des traitements. Le registre renseigne sur les critères minimum précisés à l'article 30 du règlement : nom du responsable du traitement et du DPD, les finalités du traitement, les catégories de personnes concernées et les catégories de données à caractère personnel, les catégories de destinataires, les transferts de données à caractère personnel vers un pays tiers, les délais de conservation, une description générale des mesures de sécurité."
     conformite_organisation_question_6:
         processus: '@processus_2'
         position: 2
@@ -30,7 +30,7 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_8:
         processus: '@processus_2'
         position: 4
-        nom: "La structure dispose des connaissances nécessaires pour gérer les transferts de données à caractère personnel transfrontaliers dans l'UE, vers des pays tiers ou des organisations internationales. L'inventaire de ces transferts est tenu à jour. "
+        nom: "La structure dispose des connaissances nécessaires pour gérer les transferts de données à caractère personnel transfrontaliers dans l'UE, vers des pays tiers ou des organisations internationales. L'inventaire de ces transferts est tenu à jour."
     conformite_organisation_question_9:
         processus: '@processus_3'
         position: 1
@@ -42,8 +42,7 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_11:
         processus: '@processus_3'
         position: 3
-        nom: "La procédure de gestion de demande d'exercice des droits est documentée. Elle permet de garantir un délai de réponse inférieur à 30 jours.
-              Il existe un point de contact unique à disposition des personnes concernées pour recueillir, enregistrer, qualifier les demandes relatives aux droits de la personne concernée."
+        nom: "La procédure de gestion de demande d'exercice des droits est documentée. Elle permet de garantir un délai de réponse inférieur à 30 jours. Il existe un point de contact unique à disposition des personnes concernées pour recueillir, enregistrer, qualifier les demandes relatives aux droits de la personne concernée."
     conformite_organisation_question_12:
         processus: '@processus_3'
         position: 4
@@ -59,16 +58,15 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_15:
         processus: '@processus_4'
         position: 3
-        nom: "L'organisation dispose de la liste exhaustive des sous-traitants à qui elle a délégué des traitements de DCP.
-              Le gestionnaire de ces contrats est clairement identifié."
+        nom: "La structure dispose de la liste exhaustive des sous-traitants à qui elle a délégué des traitements de données à caractère personnel. Le gestionnaire de ces contrats est clairement identifié."
     conformite_organisation_question_16:
         processus: '@processus_4'
         position: 4
-        nom: "L'organisation surveille à intervalles réguliers la conformité des traitements de DCP confiés à des sous-traitants. Pour tout changement majeur, les risques sont réappréciés."
+        nom: "La structure surveille à intervalles réguliers la conformité des traitements de données à caractère personnel confiés à des sous-traitants. Pour tout changement majeur, les risques sont réappréciés."
     conformite_organisation_question_17:
         processus: '@processus_5'
         position: 1
-        nom: "L'organisation partage une méthode de gestion de projet. Le lancement d'un projet traitant de DCP implique une information préalable auprès du DPD ou du référent DPD. La note de cadrage définit la licéité du traitement, précise les droits que la personne concernée pourra exercer et renseigne sur la finalité, la minimisation des données, la limitation des durées de conservation."
+        nom: "La structure partage une méthode de gestion de projet. Le lancement d'un projet traitant de données à caractère personnel implique une information préalable auprès du DPD ou du référent DPD. La note de cadrage définit la licéité du traitement, précise les droits que la personne concernée pourra exercer et renseigne sur la finalité, la minimisation des données, la limitation des durées de conservation."
     conformite_organisation_question_18:
         processus: '@processus_5'
         position: 2
@@ -80,11 +78,11 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_20:
         processus: '@processus_5'
         position: 4
-        nom: "La procédure de livraison du projet permet au DPD ou référent DPD de vérifier qu'il est conforme à la règlementation et que les procédures visant à permettre à la personne concernée d'exercer ses droits sont opérationnelles."
+        nom: "La procédure de livraison du projet permet au DPD ou référent DPD de vérifier qu'il est conforme à la réglementation et que les procédures visant à permettre à la personne concernée d'exercer ses droits sont opérationnelles."
     conformite_organisation_question_21:
         processus: '@processus_6'
         position: 1
-        nom: "La structure  dispose d'un document (Politique de sécurité du système d'information - PSSI) qui rassemble l'ensemble des mesures de sécurité appliquées."
+        nom: "La structure dispose d'un document (Politique de sécurité du système d'information - PSSI) qui rassemble l'ensemble des mesures de sécurité appliquées."
     conformite_organisation_question_22:
         processus: '@processus_6'
         position: 2
@@ -96,42 +94,31 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_24:
         processus: '@processus_6'
         position: 4
-        nom: "L'accès physique aux locaux contenant des équipements informatiques (serveurs, équipements du réseau)  est contrôlé. Seule les personnes autorisés peuvent y avoir accès.
-              Les armoires et coffres-forts contenant des données sensibles sont systématiquement fermés à clés."
+        nom: "L'accès physique aux locaux contenant des équipements informatiques (serveurs, équipements du réseau) est contrôlé. Seules les personnes autorisées peuvent y avoir accès. Les armoires et coffres-forts contenant des données sensibles sont systématiquement fermés à clé."
     conformite_organisation_question_25:
         processus: '@processus_6'
         position: 5
-        nom: "Tous les équipements ( Postes de travail, smartphones, objets connectés) sont protégés par un antivirus géré par une console centralisée.
-              Les patchs logiciels sont gérés pour éviter les \"trous\" de sécurité.
-              Les postes sont verrouillés en fin de session."
+        nom: "Tous les équipements (Postes de travail, smartphones, objets connectés) sont protégés par un antivirus géré par une console centralisée. Les patchs logiciels sont gérés pour éviter les \"trous\" de sécurité. Les postes sont verrouillés en fin de session."
     conformite_organisation_question_26:
         processus: '@processus_6'
         position: 6
-        nom: "Lorsque des mobiles multifonctions (smartphone), ordinateurs portables ou clé USB sont utilisés, leur usage est encadré.
-              Les utilisateurs en situation de mobilité sont sensibilisés au vol,  à l'écoute et à l'observation passive.
-              Lorsque cela est justifié, les données sont chiffrées sur les équipements ou supports mobiles."
+        nom: "Lorsque des mobiles multifonctions (smartphone), ordinateurs portables ou clé USB sont utilisés, leur usage est encadré. Les utilisateurs en situation de mobilité sont sensibilisés au vol, à l'écoute et à l'observation passive. Lorsque cela est justifié, les données sont chiffrées sur les équipements ou supports mobiles."
     conformite_organisation_question_27:
         processus: '@processus_6'
         position: 7
-        nom: "L'ensemble des données est sauvegardé. Des tests de restauration sont planifiés et réalisés pour vérifier l'intégrité des données sauvegardées.
-              Les saugegardes sont externalisées dans un lieu sécurisé."
+        nom: "L'ensemble des données est sauvegardé. Des tests de restauration sont planifiés et réalisés pour vérifier l'intégrité des données sauvegardées. Les sauvegardes sont externalisées dans un lieu sécurisé."
     conformite_organisation_question_28:
         processus: '@processus_6'
         position: 8
-        nom: "L'ensemble des utilisateurs est sensibilisé à la sécurité informatique, à la protection de la vie privée.
-              Les utilisateurs sont formés aux outils et vigilant dans leurs usages pour éviter les erreurs de manipulation .
-              La charte informatique est signée par chaque utilisateur."
+        nom: "L'ensemble des utilisateurs est sensibilisé à la sécurité informatique, à la protection de la vie privée. Les utilisateurs sont formés aux outils et vigilant dans leurs usages pour éviter les erreurs de manipulation. La charte informatique est signée par chaque utilisateur."
     conformite_organisation_question_29:
         processus: '@processus_6'
         position: 9
-        nom: "Une gestion de droits d'accès ou d'habilitation définit des profils distincts selon les besoins des utilisateurs pour accéder aux données.
-              Il existe une procédure Arrivée/Changement de poste/Départ qui garantit que les comptes utilisateurs sont systématiquement fermés en fin de contrat.
-              Les accès aux applications sont tracés et permettent d'enregistrer qui accède à quoi."
+        nom: "Une gestion de droits d'accès ou d'habilitation définit des profils distincts selon les besoins des utilisateurs pour accéder aux données. Il existe une procédure Arrivée/Changement de poste/Départ qui garantit que les comptes utilisateurs sont systématiquement fermés en fin de contrat. Les accès aux applications sont tracés et permettent d'enregistrer qui accède à quoi."
     conformite_organisation_question_30:
         processus: '@processus_6'
         position: 10
-        nom: "La politique de mot de passe s'applique à l'accès réseau et aux applications. Elle précise la force du mot de passe : 12 caractères ou plus, un nombre, une majuscule, un signe de ponctuation ou un caractère spécial (dollar, dièse, ...).
-              Les mots de passe sont gardés secret par chacun des utilisateurs."
+        nom: "La politique de mot de passe s'applique à l'accès au réseau et aux applications. Elle précise la force du mot de passe : 12 caractères ou plus, un nombre, une majuscule, un signe de ponctuation ou un caractère spécial (dollar, dièse, ...). Les mots de passe sont gardés secret par chacun des utilisateurs."
     conformite_organisation_question_31:
         processus: '@processus_6'
         position: 11
@@ -139,25 +126,23 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_32:
         processus: '@processus_6'
         position: 12
-        nom: "La mise au rebus des supports numériques est contrôlée.
-              Les données sont effacées avant le recyclage."
+        nom: "La mise au rebut des supports numériques est contrôlée. Les données sont effacées avant le recyclage."
     conformite_organisation_question_33:
         processus: '@processus_6'
         position: 13
-        nom: "Les services en ligne, les échanges ou transferts sur les réseaux sont protégés contre l'interception (Chiffrement)
-              Les configurations sont systématiquement contrôlées après la mise à jour d'un service en ligne."
+        nom: "Les services en ligne, les échanges ou transferts sur les réseaux sont protégés contre l'interception (Chiffrement). Les configurations sont systématiquement contrôlées après la mise à jour d'un service en ligne."
     conformite_organisation_question_34:
         processus: '@processus_7'
         position: 1
-        nom: "La structure  dispose d'une méthode formalisée d'analyse de risque notamment celle proposée par la CNIL. Si d'autres méthodes de sécurité globale existent, elles peuvent être mise en cohérence avec la protection des données (ISO 31000, ISO 27005, ISO 27000,EBIOS, HAZOP,HACCP, MEHARI). Dans ce cas, une vigilence devra être apportée car ces dernières ne couvrent pas l'ensemble des mesures permettant la protection des données (par exemple au niveau juridique)."
+        nom: "La structure dispose d'une méthode formalisée d'analyse de risque notamment celle proposée par la CNIL. Si d'autres méthodes de sécurité globale existent, elles peuvent être mises en cohérence avec la protection des données (ISO 31000, ISO 27005, ISO 27000, EBIOS, HAZOP, HACCP, MÉHARI). Dans ce cas, une vigilance devra être apportée, car ces dernières ne couvrent pas l'ensemble des mesures permettant la protection des données (par exemple au niveau juridique)."
     conformite_organisation_question_35:
         processus: '@processus_7'
         position: 2
-        nom: "L'organisation a déjà procédé à une ou plusieurs analyses de risques de son système d'information. Elle dispose d'une compétence interne ou externe pouvant réaliser des analyses d'impacts sur la protection des données."
+        nom: "La structure a déjà procédé à une ou plusieurs analyses de risques de son système d'information. Elle dispose d'une compétence interne ou externe pouvant réaliser des analyses d'impacts sur la protection des données."
     conformite_organisation_question_36:
         processus: '@processus_7'
         position: 3
-        nom: "Conformément à l'article 35 du RGPD et aux lignes directrices portant sur le PIA/AIPD , les nouveaux traitements de DCP &quot;à risque élevé&quot; pour les droits et libertés des personnes comme par exemple de contrôle des personnes, d'évaluations systématiques font l'objet d'une analyse d'impact. La structure a pris connaissance des listes pour lesquelles les analyses sont obligatoires ou non publié pa rla CNIL. Dans le cas ou le traitement ne figure pas sur cette liste , elle applique la règle des critères determinants l'analyse (Cf.Infographie &quot;Dois-je faire une AIPD&quot;)."
+        nom: "Conformément à l'article 35 du RGPD et aux lignes directrices portant sur l'AIPD, les nouveaux traitements de données à caractère personnel \"à risque élevé\" pour les droits et libertés des personnes comme par exemple de contrôle des personnes, d'évaluations systématiques font l'objet d'une analyse d'impact. La structure a pris connaissance des listes publiées par la CNIL pour lesquelles les analyses sont obligatoires ou non. Dans le cas où le traitement ne figurerait pas sur cette liste, elle applique la règle des critères déterminants l'analyse (Cf. Infographie \"Dois-je faire une AIPD\")."
     conformite_organisation_question_37:
         processus: '@processus_7'
         position: 4
@@ -169,7 +154,7 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_39:
         processus: '@processus_8'
         position: 2
-        nom: "Les catégories de collaborateurs directement impliqués dans les traitements de DCP bénéficient de formations ou des sensibilisations spécifiques centrées sur les principes qui les concernent : gestion du consentement, privacy by design, privacy by default, protection contre les traitements non autorisés, exactitude, gestion des droits, violation de données."
+        nom: "Les catégories de collaborateurs directement impliqués dans les traitements de données à caractère personnel bénéficient de formations ou des sensibilisations spécifiques centrées sur les principes qui les concernent : gestion du consentement, privacy by design, privacy by default, protection contre les traitements non autorisés, exactitude, gestion des droits, violation de données."
     conformite_organisation_question_40:
         processus: '@processus_8'
         position: 3
@@ -177,7 +162,7 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_41:
         processus: '@processus_8'
         position: 4
-        nom: "Les messages essentiels de la protection des DCP sont repris régulièrement sous la forme de campagne d'affichages, de mails, d'intervention dans les réunions ou sur les réseaux internes. Les opérations de sensibilisation, de formation et de communication sont mesurées et archivées. Les obligations de l'utilisateur en matière de DCP sont précisées dans la charte informatique."
+        nom: "Les messages essentiels de la protection des données à caractère personnel sont repris régulièrement sous la forme de campagne d'affichages, de mails, d'intervention dans les réunions ou sur les réseaux internes. Les opérations de sensibilisation, de formation et de communication sont mesurées et archivées. Les obligations de l'utilisateur en matière de données à caractère personnel sont précisées dans la charte informatique."
     conformite_organisation_question_42:
         processus: '@processus_9'
         position: 1
@@ -185,7 +170,7 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_43:
         processus: '@processus_9'
         position: 2
-        nom: "La structure  a clairement identifié une expertise juridique interne ou externe, spécialisée dans le RGPD et ses périmètres connexes comme par exemple les spécifications juridiques locales."
+        nom: "La structure a clairement identifié une expertise juridique interne ou externe, spécialisée dans le RGPD et dans ses périmètres connexes comme par exemple les spécifications juridiques locales."
     conformite_organisation_question_44:
         processus: '@processus_9'
         position: 3
@@ -193,11 +178,11 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_45:
         processus: '@processus_9'
         position: 4
-        nom: "Conformément à de multiples articles du RGPD, en cas de violation avérée, la structure  est organisée pour analyser et notifier l'incident auprès de l'autorité de contrôle au plus tard dans les 72 h, et si nécessaire en informer les personnes concernées. Elle serait en capacité de produire un bilan décrivant les circonstances, la chronologie, les dommages et leurs conséquences, les actions correctives décidées. Il existe un registre des violations."
+        nom: "Conformément à de multiples articles du RGPD, en cas de violation avérée, la structure est organisée pour analyser et notifier l'incident auprès de l'autorité de contrôle au plus tard dans les 72 h, et si nécessaire en informer les personnes concernées. Elle serait en capacité de produire un bilan décrivant les circonstances, la chronologie, les dommages et leurs conséquences, les actions correctives décidées. Il existe un registre des violations."
     conformite_organisation_question_46:
         processus: '@processus_10'
         position: 1
-        nom: "Conformément à l'article 32 du RGPD, l'organisation teste, analyse, et évalue l'efficacité des mesures techniques et organisationnelles, pour assurer la sécurité du traitement. Les mesures de sécurité en prévention de la violation de données à caractère personnel sont contrôlées régulièrement et sont aplliquées en cas de violation de données."
+        nom: "Conformément à l'article 32 du RGPD, la structure teste, analyse, et évalue l'efficacité des mesures techniques et organisationnelles, pour assurer la sécurité du traitement. Les mesures de sécurité en prévention de la violation de données à caractère personnel sont contrôlées régulièrement et sont appliquées en cas de violation de données."
     conformite_organisation_question_47:
         processus: '@processus_10'
         position: 2
@@ -213,23 +198,23 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_50:
         processus: '@processus_11'
         position: 1
-        nom: "Il existe un processus de gestion de la documentation applicable au RGPD et comprenant a minima : une organisation du stockage, des règles de marquage, de nommage et de  versioning."
+        nom: "Il existe un processus de gestion de la documentation applicable au RGPD et comprenant a minima : une organisation du stockage, des règles de marquage, de nommage et de versioning."
     conformite_organisation_question_51:
         processus: '@processus_11'
         position: 2
-        nom: "Le DPD ou le référent DPD a établi une liste des documents à produire comme par exemple : politique générale de protection des données, politique de gestion des données, compte rendu de gouvernance, registre des traitements, procédures relative à l'exercice des droits de la personne concernée, modèle de cadrage d'un projet Privacy by design, politique de sécurité."
+        nom: "Le DPD ou le référent DPD a établi une liste des documents à produire comme par exemple : politique générale de protection des données, politique de gestion des données, compte rendu de gouvernance, registre des traitements, procédures relative à l'exercice des droits de la personne concernée, modèle de cadrage d'un projet privacy by design, politique de sécurité."
     conformite_organisation_question_52:
         processus: '@processus_11'
         position: 3
-        nom: "Conformément à l'article 47  du RGPD , les groupes de collectivités engagées dans une activité publique conjointe ayant définis des codes de conduite, ou des règles  contraignantes doivent préciser la procédure de validation et de révision de leur contenu par le responsable du traitement."
+        nom: "Conformément à l'article 47 du RGPD, les groupes de collectivités engagées dans une activité publique conjointe ayant définis des codes de conduite, ou des règles contraignantes doivent préciser la procédure de validation et de révision de leur contenu par le responsable du traitement."
     conformite_organisation_question_53:
         processus: '@processus_11'
         position: 4
-        nom: "Les documents à valeur de preuve sont enregistrés (signés par le responsable du traitement). Ils sont protégés contre les pertes, les divulgations, les falsifications et les accès non autorisés. La liste des documents à valeur de preuve est disponible et tenue à jour (voir onglet liste preuves)."
+        nom: "Les documents à valeur de preuve sont enregistrés (signés par le responsable du traitement). Ils sont protégés contre les pertes, les divulgations, les falsifications et les accès non autorisés. La liste des documents à valeur de preuve est disponible et tenue à jour (Liste des preuves)."
     conformite_organisation_question_54:
         processus: '@processus_12'
         position: 1
-        nom: "S'il existe déjà une organisation interne basée sur les processus, elle communiquée au DPD pour qu'il adapte l'accompagnement. La cartographie des processus de gestion des données détaille les éléments d'entrées et de sorties et mentionne les objectifs, les rôles et responsabilités, les activités."
+        nom: "S'il existe déjà une organisation interne basée sur les processus, elle communique au DPD pour qu'il adapte l'accompagnement. La cartographie des processus de gestion des données détaille les éléments d'entrées et de sorties et mentionne les objectifs, les rôles et responsabilités, les activités."
     conformite_organisation_question_55:
         processus: '@processus_12'
         position: 2
@@ -237,8 +222,8 @@ App\Domain\Registry\Model\ConformiteOrganisation\Question:
     conformite_organisation_question_56:
         processus: '@processus_12'
         position: 3
-        nom: "Le DPD ou le référent DPD  a mis en place un tableau de bord qui comprend des indicateurs permettant de mesurer la conformité au règlement et les progrès réalisés. Les indicateurs sont simples à comprendre et partageable avec les membres de la gouvernance. Exemple d'indicateurs : maturité des processus du système de gestion, ratio d'actions réalisées et à réaliser, ratio nombre de traitement interne/sous-traités."
+        nom: "Le DPD ou le référent DPD a mis en place un tableau de bord qui comprend des indicateurs permettant de mesurer la conformité au règlement et les progrès réalisés. Les indicateurs sont simples à comprendre et partageable avec les membres de la gouvernance. Exemple d'indicateurs : maturité des processus du système de gestion, ratio d'actions réalisées et à réaliser, ratio nombre de traitement interne/sous-traités."
     conformite_organisation_question_57:
         processus: '@processus_12'
         position: 4
-        nom: "Conformément aux lignes directrices relatifs au DPD, le DPD ou le référent DPD produit un bilan annuel (Rapport annuel) partagé avec la structure de gouvernance et validé par le responsable du traitement. Ce rapport comprend entre autre : bilan de conformité des traitements, bilan des opérations de sensibilisation, bilan des PIA, bilan de plan d'actions."
+        nom: "Conformément aux lignes directrices relatives au DPD, le DPD ou le référent DPD produit un bilan annuel (Rapport annuel) partagé avec la structure de gouvernance et validé par le responsable du traitement. Ce rapport comprend entre autres : bilan de conformité des traitements, bilan des opérations de sensibilisation, bilan des AIPD, bilan du plan d'actions."
diff --git a/fixtures/4-aipd_2_modele_question_conformite.yaml b/fixtures/4-aipd_2_modele_question_conformite.yaml
index cc0ecc231df2daab897caab1b2d971357f2b6d25..931dfc701b130371251ac92a452447f30f35c97d 100644
--- a/fixtures/4-aipd_2_modele_question_conformite.yaml
+++ b/fixtures/4-aipd_2_modele_question_conformite.yaml
@@ -76,7 +76,7 @@ App\Domain\AIPD\Model\ModeleQuestionConformite:
             - "Exercice du droit de rectification"
             - 9
             - '@modele_analyse_1'
-        isJustificationObligatoire: true
+        isJustificationObligatoire: false
         texteConformite: "Conforme"
         texteNonConformiteMineure: "Non-conforme mineure"
         texteNonConformiteMajeure: "Non-conformite majeure"
@@ -103,7 +103,7 @@ App\Domain\AIPD\Model\ModeleQuestionConformite:
             - "Exercice du droit d'effacement"
             - 12
             - '@modele_analyse_1'
-        isJustificationObligatoire: true
+        isJustificationObligatoire: false
         texteConformite: "Conforme"
         texteNonConformiteMineure: "Non-conforme mineure"
         texteNonConformiteMajeure: "Non-conformite majeure"
@@ -130,7 +130,7 @@ App\Domain\AIPD\Model\ModeleQuestionConformite:
             - "Transferts : respect des obligations en matière de transfert des données en dehors de l'Union Européenne"
             - 15
             - '@modele_analyse_1'
-        isJustificationObligatoire: true
+        isJustificationObligatoire: false
         texteConformite: "Conforme"
         texteNonConformiteMineure: "Non-conforme mineure"
         texteNonConformiteMajeure: "Non-conformite majeure"
diff --git a/fixtures/default/aipd/Modele_par_defaut_AIPD.xml b/fixtures/default/aipd/Modele_par_defaut_AIPD.xml
index 877527645c5b63db5b037b50c75ce2fe48636724..d2269ae69fa0e0b8d7ff053b62acf36f181aa148 100644
--- a/fixtures/default/aipd/Modele_par_defaut_AIPD.xml
+++ b/fixtures/default/aipd/Modele_par_defaut_AIPD.xml
@@ -76,7 +76,7 @@
     <entry>
       <question><![CDATA[Exercice du droit d'accès]]></question>
       <position>8</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[L'exercice du droit d'accès est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[L'exercice du droit d'accès est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[L'exercice du droit d'accès est non conforme.]]></texte_non_conformite_majeure>
@@ -84,7 +84,7 @@
     <entry>
       <question><![CDATA[Qualité des données : exactes et tenues à jour]]></question>
       <position>4</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[La qualité des données est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[La qualité des données est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[La qualité des données est non conforme.]]></texte_non_conformite_majeure>
@@ -92,7 +92,7 @@
     <entry>
       <question><![CDATA[Recueil du consentement]]></question>
       <position>7</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[Le recueil du consentement est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[Le recueil du consentement est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[Le recueil du consentement est non conforme.]]></texte_non_conformite_majeure>
@@ -100,7 +100,7 @@
     <entry>
       <question><![CDATA[Exercice du droit à la portabilité]]></question>
       <position>11</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[L'exercice du droit à la portabilité est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[L'exercice du droit à la portabilité est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[L'exercice du droit à la portabilité est non conforme.]]></texte_non_conformite_majeure>
@@ -108,7 +108,7 @@
     <entry>
       <question><![CDATA[Exercice du droit de limitation]]></question>
       <position>10</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[L'exercice du droit de limitation est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[L'exercice du droit de limitation est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[L'exercice du droit de limitation est non conforme.]]></texte_non_conformite_majeure>
@@ -116,7 +116,7 @@
     <entry>
       <question><![CDATA[Minimisation des données : adéquates, pertinentes et limitées]]></question>
       <position>3</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[La minimisation des données est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[La minimisation des données est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[La minimisation des données est non conforme.]]></texte_non_conformite_majeure>
@@ -124,7 +124,7 @@
     <entry>
       <question><![CDATA[Sous-traitance : identifiée et contractualisée]]></question>
       <position>14</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[La sous-traitance est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[La sous-traitance est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[La sous-traitance est non conforme.]]></texte_non_conformite_majeure>
@@ -132,7 +132,7 @@
     <entry>
       <question><![CDATA[Finalités : déterminées, explicites et légitime]]></question>
       <position>1</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[La finalité est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[La finalité est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[La finalité est non conforme.]]></texte_non_conformite_majeure>
@@ -140,7 +140,7 @@
     <entry>
       <question><![CDATA[Information des personnes concernées : traitement loyal et transparent]]></question>
       <position>6</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[L'information des personnes concernées est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[L'information des personnes concernées est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[L'information des personnes concernées est non conforme.]]></texte_non_conformite_majeure>
@@ -148,7 +148,7 @@
     <entry>
       <question><![CDATA[Exercice du droit de rectification]]></question>
       <position>9</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[L'exercice du droit de rectification est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[L'exercice du droit de rectification est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[L'exercice du droit de rectification est non conforme.]]></texte_non_conformite_majeure>
@@ -156,7 +156,7 @@
     <entry>
       <question><![CDATA[Transferts : respect des obligations en matière de transfert des données en dehors de l'Union Européenne]]></question>
       <position>15</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[Le Transfert de données est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[Le Transfert de données est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[Le Transfert de données est non conforme.]]></texte_non_conformite_majeure>
@@ -164,7 +164,7 @@
     <entry>
       <question><![CDATA[Exercice du droit d'opposition]]></question>
       <position>13</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[L'exercice du droit d'opposition est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[L'exercice du droit d'opposition est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[L'exercice du droit d'opposition est non conforme.]]></texte_non_conformite_majeure>
@@ -172,7 +172,7 @@
     <entry>
       <question><![CDATA[Exercice du droit d'effacement]]></question>
       <position>12</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[L'exercice du droit d'effacement est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[L'exercice du droit d'effacement est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[L'exercice du droit d'effacement est non conforme.]]></texte_non_conformite_majeure>
@@ -180,7 +180,7 @@
     <entry>
       <question><![CDATA[Fondement : licéité du traitement, interdiction du détournement de finalité]]></question>
       <position>2</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[Le fondement est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[Le fondement est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[Le fondement est non conforme.]]></texte_non_conformite_majeure>
@@ -188,7 +188,7 @@
     <entry>
       <question><![CDATA[Durées de conservation : limitées]]></question>
       <position>5</position>
-      <is_justification_obligatoire>true</is_justification_obligatoire>
+      <is_justification_obligatoire>false</is_justification_obligatoire>
       <texte_conformite><![CDATA[La durée de conservation est conforme.]]></texte_conformite>
       <texte_non_conformite_mineure><![CDATA[La durée de conservation est non conforme mais des améliorations sont prévues.]]></texte_non_conformite_mineure>
       <texte_non_conformite_majeure><![CDATA[La durée de conservation est non conforme.]]></texte_non_conformite_majeure>
diff --git a/fixtures/default/maturity/Indice_de_maturite_standard.xml b/fixtures/default/maturity/Indice_de_maturite_standard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..34df75a4b18547fdfd5c267579c820d4b4540708
--- /dev/null
+++ b/fixtures/default/maturity/Indice_de_maturite_standard.xml
@@ -0,0 +1,1016 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<result>
+  <name><![CDATA[Indice de maturité standard]]></name>
+  <domains>
+    <entry>
+      <name><![CDATA[Juridique]]></name>
+      <color><![CDATA[info]]></color>
+      <position>120</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Les mentions font apparaître la finalité, les droits des personnes et la durée de conservation et sont présentes sur les formulaires (papier et électronique)]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Une politique de gestion des données à caractère personnel a été mise en place]]></name>
+          <position>6</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[La conformité de chaque sous-traitant est vérifiée]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Le consentement des personnes concernées est organisé (classement, conservation, ...)]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Un comité informatique et liberté a été mis en place et se réunit au moins une fois par an]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Une clause spécifique est prévue dans les contrats de sous-traitance et dans les cahiers des charges]]></name>
+          <position>5</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Une charte informatique a été rédigée et annexée au règlement intérieur]]></name>
+          <position>4</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Vie privée]]></name>
+      <color><![CDATA[success]]></color>
+      <position>30</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Les éléments de sécurité de base ont été installés sur tous les appareils informatiques (Antivirus, parefeu)]]></name>
+          <position>4</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les sessions Windows sont protégées par un mot de passe et se verrouillent automatiquement]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les permissions d'accès obsolètes ont été supprimées]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Une politique de protection des données a été mise en place et est connue de tous (interne et externe)]]></name>
+          <position>6</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Chaque utilisateur dispose d'un identifiant unique (pas de compte générique)]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les données à l'issue des traitements sont supprimées ou anonymisées]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Une politique de mot de passe utilisateur rigoureuse a été adoptée (les mots de passe sont strictement confidentiels)]]></name>
+          <position>5</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Violation de données]]></name>
+      <color><![CDATA[primary]]></color>
+      <position>60</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Des études d'impact sur la vie privée sont conduites lorsque le traitement le nécessite]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les supports de sauvegarde sont externalisés]]></name>
+          <position>5</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les appareils mobiles sont régulièrement synchronisés]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les supports de sauvegarde sont stockés dans un endroit sûr]]></name>
+          <position>6</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les jeux de sauvegarde sont régulièrement testés]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[L'intégrité des documents est régulièrement vérifiée]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les procédures à suivre en cas de violation de données sont définies et connues]]></name>
+          <position>4</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Organisation]]></name>
+      <color><![CDATA[warning]]></color>
+      <position>90</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Les conditions de restitution et de destruction des données sont prévues]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Le processus de demande d’exercices des droits est organisé]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Un DPD a été désigné dans la structure]]></name>
+          <position>5</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[L'identité du destinataire est confirmée (en cas de transmission)]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les procédures d'exploitation du SI ont été documentées]]></name>
+          <position>4</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les coordonnées du DPD et son rôle sont connus des personnes concernées, à l'interne et à l'externe]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Un registre des traitements est tenu dans la structure]]></name>
+          <position>6</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Sensibilisation Formation]]></name>
+      <color><![CDATA[info]]></color>
+      <position>150</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Le personnel a été formé à la protection des données à caractère personnel]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les agents connaissent et appliquent le principe de minimisation des données collectées]]></name>
+          <position>4</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Le personnel a été sensibilisé à la protection des données à caractère personnel]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Des actions de sensibilisation sont régulièrement menées]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les élus connaissent le principe d'interdiction d'utilisation des données à caractère personnel à des fins de communication politique]]></name>
+          <position>5</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les élus ont été sensibilisés à la protection des données à caractère personnel]]></name>
+          <position>6</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Le principe d'interdiction de la collecte des données sensibles est connu par les agents et élus de la structure]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Technique]]></name>
+      <color><![CDATA[success]]></color>
+      <position>0</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Une politique de mot de passe administrateur rigoureuse a été adoptée]]></name>
+          <position>6</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les accès distants des appareils informatiques nomades sont sécurisés par VPN]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les mises à jour des logiciels sont faites régulièrement (WindowsUpdate, Antivirus, Navigateur, ...)]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Des moyens de chiffrement pour les ordinateurs portables et les unités de stockage amovibles (clefs USB, CD, DVD, ...) ont été prévus]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Des alarmes anti intrusion ont été installées et sont vérifiées périodiquement]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Un détecteur de fumée et un système anti-feu ont été mis en place]]></name>
+          <position>5</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Les éléments de sécurité ont été installés sur le réseau (Antivirus, parefeu)]]></name>
+          <position>4</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Non / Je ne sais pas]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[En partie]]></name>
+              <position>1</position>
+              <response><![CDATA[1]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Oui / Complètement]]></name>
+              <position>2</position>
+              <response><![CDATA[2]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+  </domains>
+  <created_at><![CDATA[2024-04-26T17:02:38+02:00]]></created_at>
+  <updated_at><![CDATA[2024-04-26T17:11:44+02:00]]></updated_at>
+</result>
diff --git a/fixtures/default/maturity/_ANSSI__Recommandations_sur_le_nomadisme_numerique.xml b/fixtures/default/maturity/_ANSSI__Recommandations_sur_le_nomadisme_numerique.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0d8db5286d28b841cf51b23969b15989f5ce184b
--- /dev/null
+++ b/fixtures/default/maturity/_ANSSI__Recommandations_sur_le_nomadisme_numerique.xml
@@ -0,0 +1,1980 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<result>
+  <name><![CDATA[[ANSSI] Recommandations sur le nomadisme numérique]]></name>
+  <description><![CDATA[L'importance croissante de la mobilité et du télétravail dans le monde professionnel crée de nouveaux risques sur les systèmes d'information. Pour y répondre, il est primordial de prendre en compte la menace et de mettre en place des mesures de sécurisation spécifiques, à la fois techniques et organisationnelles, afin de limiter les risques liés à la pratique du nomadisme numérique. Ce guide n'a pas pour objectif d'être exhaustif sur la sécurité générale d'une infrastructure informatique, mais bien de se focaliser sur les particularités du nomadisme, afin d'adapter le niveau de sécurité à cette nouvelle façon de travailler. Pour plus d'informations : <a href="https://cyber.gouv.fr/sites/default/files/document/guide_nomadisme_anssi_pa_054_v2.pdf" target="_blank">Recommandations sur le nomadisme numérique (PDF - 5,4 Mo)</a>.]]></description>
+  <domains>
+    <entry>
+      <name><![CDATA[Sécuriser le poste nomade]]></name>
+      <color><![CDATA[success]]></color>
+      <position>1</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Maîtriser la connexion de périphériques amovibles sur le poste nomade]]></name>
+          <position>10</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Désactiver IPv6 sur le poste nomade si celui-ci n’est pas nécessaire]]></name>
+          <position>6</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en oeuvre une solution de chiffrement de disque sans composant de sécurité physique]]></name>
+          <position>4</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en oeuvre les fonctions de sécurité du système d’exploitation sur le poste nomade]]></name>
+          <position>12</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Interdire à l’utilisateur la modification de la configuration des moyens de protection et de connexion au SI de l’entité]]></name>
+          <position>5</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Établir le tunnel VPN automatiquement au démarrage du poste nomade et interdire toute action manuelle de l’utilisateur]]></name>
+          <position>18</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[En cas d'usage du split-tunneling, mettre en œuvre une configuration stricte visant à limiter les risques de compromission]]></name>
+          <position>14</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en oeuvre une solution de chiffrement de disque avec un TPM et une carte à puce]]></name>
+          <position>17</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Maîtriser l’intégrité de la séquence de démarrage du poste nomade]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Réduire la durée d’inactivité avant verrouillage automatique de la session utilisateur]]></name>
+          <position>7</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Bloquer l’accès aux portails captifs sur les postes nomades]]></name>
+          <position>16</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en oeuvre une solution de chiffrement de disque avec un TPM]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Sécuriser et maîtriser les flux DNS pour la résolution du nom du concentrateur VPN]]></name>
+          <position>15</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Configurer le client DHCP pour restreindre au strict nécessaire les paramètres à appliquer sur le poste nomade]]></name>
+          <position>21</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Bloquer les flux DNS vers Internet et configurer directement les adresses IP publiques des concentrateurs VPN sur le client]]></name>
+          <position>20</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Interdire le split-tunneling sur le poste nomade et autoriser les seuls flux nécessaires pour monter le tunnel VPN]]></name>
+          <position>19</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Maîtriser le poste nomade de l’utilisateur nomade]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Activer des mécanismes de mise en quarantaine et de remédiation pour les postes nomades non à jour des correctifs de sécurité]]></name>
+          <position>13</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[N'autoriser la navigation Internet en split-tunneling sur le poste nomade que via un proxy de confiance]]></name>
+          <position>9</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre à disposition des moyens de protection physique du poste nomade]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Activer le pare-feu local sur le poste nomade]]></name>
+          <position>8</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Réduire la surface d’attaque sur le système d’exploitation du poste nomade]]></name>
+          <position>11</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Transverse]]></name>
+      <color><![CDATA[info]]></color>
+      <position>63</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Maîtriser la gestion des utilisateurs nomades]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en oeuvre une sonde de détection dans le SI incluant les flux de nomadisme]]></name>
+          <position>13</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Réaliser l’inventaire des activités des utilisateurs compatibles avec le nomadisme]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Prévoir une supervision de l’état de sécurité des postes nomades]]></name>
+          <position>9</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Respecter les recommandations du guide d’administration sécurisée de l’ANSSI pour les ressources liées au nomadisme]]></name>
+          <position>7</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en place un système d’analyse et de corrélation d’événements pour le nomadisme]]></name>
+          <position>12</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Dédier le poste nomade à un utilisateur nomade identifié]]></name>
+          <position>4</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Renforcer la sécurité dans le cas de postes nomades partagés]]></name>
+          <position>5</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en place une journalisation des différents éléments liés au nomadisme en suivant les recommandations des guides de l’ANSSI]]></name>
+          <position>10</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Privilégier l’utilisation de matériels et logiciels disposant d’un visa de sécurité de l’ANSSI]]></name>
+          <position>6</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Assurer le MCO et MCS des éléments contribuant au nomadisme]]></name>
+          <position>8</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Intégrer le nomadisme dans la PSSI de l’entité]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Sensibiliser et former les utilisateurs nomades]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Privilégier le mode push pour la centralisation des journaux des équipements nomades]]></name>
+          <position>11</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Sécuriser les applications métier]]></name>
+      <color><![CDATA[primary]]></color>
+      <position>26</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Authentifier les postes nomades avec une fonction dédiée en cas d’exposition d’applications métiers sur Internet]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Réaliser un filtrage au sein de la passerelle d’interconnexion sur les applications autorisées en nomadisme]]></name>
+          <position>6</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Restreindre au strict besoin métier l’utilisation de la synchronisation de documents hors ligne pour les utilisateurs nomades]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Sécuriser les accès directs aux ressources présentes dans le cloud pour les utilisateurs nomades]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Ne pas exposer d’applications métiers directement sur Internet]]></name>
+          <position>4</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Privilégier l’utilisation de protocoles chiffrés et authentifiés pour l’accès aux applications métier au travers du tunnel VPN]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Interdire un accès direct aux ressources présentes dans le cloud pour les utilisateurs nomades]]></name>
+          <position>5</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Sécuriser l'interconnexion depuis Internet]]></name>
+      <color><![CDATA[warning]]></color>
+      <position>36</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Interdire tous les flux de communication directs entre les postes nomades]]></name>
+          <position>14</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en place une IGC maîtrisée par l’entité et dédiée au nomadisme]]></name>
+          <position>8</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Dédier physiquement un concentrateur VPN pour les connexions internes en Wi-Fi]]></name>
+          <position>18</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Vérifier la validité des certificats client et concentrateur VPN via le mécanisme d’agrafage OCSP]]></name>
+          <position>20</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en place une authentification multifacteur forte pour l’utilisateur nomade]]></name>
+          <position>7</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en place des équipements physiquement dédiés au nomadisme dans la passerelle d’interconnexion]]></name>
+          <position>22</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Authentifier l’utilisateur sur le SI]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Cloisonner logiquement chaque élément de la passerelle d’interconnexion lié au nomadisme]]></name>
+          <position>11</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en place un cloisonnement logique pour les fonctions de nomadisme dans la passerelle d’interconnexion]]></name>
+          <position>10</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Configurer strictement l’autorité de certification légitime sur les postes nomades]]></name>
+          <position>9</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Implémenter des fonctions de sécurité complémentaires au sein de la passerelle d’interconnexion du nomadisme]]></name>
+          <position>21</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Vérifier la validité des certificats concentrateurs VPN par l’ouverture d’un flux direct sur le poste nomade ou par une mesure organisationnelle]]></name>
+          <position>4</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Dédier physiquement des concentrateurs VPN respectivement pour les connexions nomades et internes au SI]]></name>
+          <position>17</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Cloisonner physiquement chaque élément de la passerelle d’interconnexion lié au nomadisme]]></name>
+          <position>23</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en oeuvre un tunnel VPN IPsec à l’état de l’art pour le canal d’interconnexion nomade]]></name>
+          <position>15</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Authentifier le poste nomade sur le SI]]></name>
+          <position>6</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Dédier un ou plusieurs socles physiques pour la fonction de pare-feu externe exposé à Internet]]></name>
+          <position>12</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Authentifier l’utilisateur sur le poste nomade]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Généraliser l'emploi de concentrateurs VPN pour les usages nomade mais aussi interne à l'entité]]></name>
+          <position>16</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Cloisonner logiquement par virtualisation les concentrateurs VPN mutualisés sur un même socle physique]]></name>
+          <position>5</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en place un mécanisme de détection de l’environnement de l’utilisateur nomade]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en oeuvre un tunnel VPN IPsec ou VPN TLS à l’état de l’art pour le canal d’interconnexion nomade]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Protéger les éléments secrets liés aux certificats nomades dans des enclaves sécurisées]]></name>
+          <position>19</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Restreindre les fonctionnalités des pare-feux externes uniquement à du filtrage sur les couches réseaux]]></name>
+          <position>13</position>
+          <weight>1</weight>
+          <optional>true</optional>
+          <option_reason><![CDATA[Non applicable]]></option_reason>
+          <answers>
+            <entry>
+              <name><![CDATA[Totalement mis en Å“uvre]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Problème]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Pas commencé]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Partiellement mis en Å“uvre]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+  </domains>
+  <created_at><![CDATA[2024-03-07T10:39:00+01:00]]></created_at>
+  <updated_at><![CDATA[2024-03-07T10:39:00+01:00]]></updated_at>
+</result>
diff --git a/fixtures/default/maturity/_ANSSI_et_CNIL__Securiser_et_homologuer_ses_services_publics_numeriques_a_la_cybersecurite.xml b/fixtures/default/maturity/_ANSSI_et_CNIL__Securiser_et_homologuer_ses_services_publics_numeriques_a_la_cybersecurite.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dfeda26f7baaf82ffbd113227d713b6df9ef50d9
--- /dev/null
+++ b/fixtures/default/maturity/_ANSSI_et_CNIL__Securiser_et_homologuer_ses_services_publics_numeriques_a_la_cybersecurite.xml
@@ -0,0 +1,1745 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<result>
+  <name><![CDATA[[ANSSI et CNIL] Sécuriser et homologuer ses services publics numériques à la cybersécurité]]></name>
+  <description><![CDATA[Évaluation indicative du niveau de sécurisation de ses services publics numériques (sites web, applications mobiles et API), calculée à partir des mesures proposées par l'ANSSI et la CNIL dans <a href="https://www.monservicesecurise.ssi.gouv.fr" target="_blank">MonServiceSécurisé</a>.]]></description>
+  <domains>
+    <entry>
+      <name><![CDATA[Résilience]]></name>
+      <color><![CDATA[info]]></color>
+      <position>66</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Recourir à une ou plusieurs solutions garantissant un haut niveau de disponibilité du service]]></name>
+          <position>3</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Vérifier régulièrement les sauvegardes]]></name>
+          <position>2</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Organiser un exercice de gestion de crise]]></name>
+          <position>4</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en place une sauvegarde régulière des données dans un environnement non connecté au service numérique]]></name>
+          <position>1</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en place une sauvegarde en continu de la machine virtuelle sur laquelle est déployé le service numérique]]></name>
+          <position>0</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Défense]]></name>
+      <color><![CDATA[success]]></color>
+      <position>57</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Recourir à un service de supervision de la sécurité]]></name>
+          <position>6</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Définir une procédure de gestion des incidents de sécurité]]></name>
+          <position>0</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Conserver l'historique des accès des administrateurs au service]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Envoyer une notification aux administrateurs et aux utilisateurs à chaque connexion]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Conserver l'historique de l'ensemble des événements de sécurité sur le service]]></name>
+          <position>4</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Réaliser une veille régulière des vulnérabilités et des campagnes de compromission]]></name>
+          <position>5</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Tester régulièrement la procédure de gestion des incidents de sécurité]]></name>
+          <position>1</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Gouvernance]]></name>
+      <color><![CDATA[primary]]></color>
+      <position>0</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Planifier l'organisation de contrôles et d'audits de sécurité réguliers]]></name>
+          <position>11</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Réaliser un audit de la sécurité du service]]></name>
+          <position>10</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Identifier les données importantes à protéger]]></name>
+          <position>1</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Disposer d'une liste à jour des équipements et des applicatifs contribuant au fonctionnement du service numérique]]></name>
+          <position>2</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Fixer et/ou identifier les exigences de sécurité incombant aux prestataires]]></name>
+          <position>0</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Déterminer une durée limitée de traitement et de conservation des données à caractère personnel au strict nécessaire]]></name>
+          <position>15</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Vérifier si une analyse sur la protection des données à caractère personnel doit être réalisée]]></name>
+          <position>18</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Disposer d'une liste à jour des comptes disposant d'un accès privilégié au service]]></name>
+          <position>4</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Limiter et connaître les interconnexions entre le service numérique et d'autres systèmes d'information]]></name>
+          <position>3</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Procéder à des vérifications techniques automatiques de la sécurité du service]]></name>
+          <position>6</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Minimiser la collecte des données à caractère personnel au strict nécessaire]]></name>
+          <position>14</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Réaliser une analyse de risque de la sécurité du service numérique]]></name>
+          <position>9</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Fournir des informations aux personnes concernées sur les modalités d’exercice des droits]]></name>
+          <position>17</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Héberger le service numérique et les données au sein de l'Union européenne]]></name>
+          <position>5</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Recourir à un prestataire d'informatique en nuage qualifié SecNumCloud]]></name>
+          <position>12</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Rendre public une procédure permettant de signaler un problème de sécurité]]></name>
+          <position>8</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Remplir le registre des traitements et le tenir à jour]]></name>
+          <position>13</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Fournir des informations aux personnes concernées sur l’utilisation de leurs données à caractère personnel]]></name>
+          <position>16</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Sensibiliser les administrateurs aux consignes de sécurité liées à l'utilisation du service]]></name>
+          <position>7</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Protection]]></name>
+      <color><![CDATA[warning]]></color>
+      <position>25</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Protéger les mots de passe stockés sur le service]]></name>
+          <position>14</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Fixer des contraintes de longueur et de complexité des mots de passe]]></name>
+          <position>10</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Chiffrer le trafic des données avec un certificat de sécurité conforme à la réglementation]]></name>
+          <position>0</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Chiffrer la machine virtuelle]]></name>
+          <position>20</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en place la déconnexion automatique des sessions d'accès après une durée déterminée]]></name>
+          <position>28</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en œuvre une procédure de suppression des comptes inactifs]]></name>
+          <position>9</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Recourir à un service de protection contre les attaques de déni de service]]></name>
+          <position>26</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Limiter les droits de chaque administrateur au strict nécessaire]]></name>
+          <position>4</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Utiliser uniquement les magasins officiels d'applications mobiles pour permettre le téléchargement de l'application]]></name>
+          <position>27</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mettre en œuvre des bonnes pratiques de développement sécurisé du service]]></name>
+          <position>18</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Acheter un ou plusieurs noms de domaine proches du nom de domaine du service]]></name>
+          <position>24</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Différencier le filtrage des accès utilisateurs et administrateurs]]></name>
+          <position>7</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Encourager les administrateurs à utiliser un coffre fort de mots de passe]]></name>
+          <position>12</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Privilégier l'achat d'un nom de domaine en .fr ou .eu]]></name>
+          <position>23</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Fermer tous les ports non strictement nécessaires]]></name>
+          <position>2</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Utiliser des applicatifs récents et maintenus à jour par leurs éditeurs]]></name>
+          <position>16</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Autoriser uniquement la création de comptes d'accès nominatifs associés chacun à une personne]]></name>
+          <position>8</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Anonymiser autant que possible les données conservées concernant l'activité des utilisateurs]]></name>
+          <position>25</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Limiter au strict nécessaire le nombre de personnes disposant d'un accès administrateur au service numérique]]></name>
+          <position>3</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Dissocier les rôles d'administration entre eux]]></name>
+          <position>5</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Installer un certificat de signature électronique conforme à la réglementation]]></name>
+          <position>29</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Administrer techniquement le service dans des environnements dédiés et sécurisés]]></name>
+          <position>15</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Planifier le renouvellement régulier des mots de passe des administrateurs]]></name>
+          <position>13</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Activer l'authentification multifacteur pour l'accès des administrateurs au service]]></name>
+          <position>11</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Disposer d'une politique d'application des mises à jour fonctionnelles et de sécurité du service numérique]]></name>
+          <position>17</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Désactiver tout flux non chiffré]]></name>
+          <position>1</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Dissocier les rôles d'administration et des rôles d'utilisation du service]]></name>
+          <position>6</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Installer uniquement les fonctionnalités nécessaires aux finalités du service]]></name>
+          <position>21</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Limiter au strict nécessaire les privilèges des applicatifs contribuant au fonctionnement du service]]></name>
+          <position>22</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Héberger le service dans une machine virtuelle]]></name>
+          <position>19</position>
+          <weight>2</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Partiel]]></name>
+              <position>2</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[À lancer]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non pris en compte]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Fait]]></name>
+              <position>3</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+  </domains>
+  <created_at><![CDATA[2024-03-27T14:50:07+01:00]]></created_at>
+  <updated_at><![CDATA[2024-03-27T15:09:53+01:00]]></updated_at>
+</result>
diff --git a/fixtures/default/maturity/_CNIL__Securite_des_donnees_v2024.xml b/fixtures/default/maturity/_CNIL__Securite_des_donnees_v2024.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5d644279f0a789f73e4315ec423b1a573da4dcd5
--- /dev/null
+++ b/fixtures/default/maturity/_CNIL__Securite_des_donnees_v2024.xml
@@ -0,0 +1,1480 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<result>
+  <name><![CDATA[[CNIL] Sécurité des données v2024]]></name>
+  <description><![CDATA[À travers 25 fiches, le guide de la sécurité des données personnelles de la CNIL rappelle aussi bien les précautions élémentaires qui devraient être mises en œuvre de façon systématique, que les mesures destinées à renforcer davantage la protection des données. Ce guide constitue une référence en matière de sécurité. Pour plus d'informations : <a href="https://www.cnil.fr/sites/cnil/files/2024-03/cnil_guide_securite_personnelle_2024.pdf" target="_blank">Guide de la sécurité des données personnelles (PDF - 1.7 Mo)</a>.]]></description>
+  <domains>
+    <entry>
+      <name><![CDATA[Impliquer et former les utilisateurs]]></name>
+      <color><![CDATA[info]]></color>
+      <position>10</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Adapter le contenu des sensibilisations à la population ciblée et à leurs tâches]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Sensibiliser les personnes manipulant les données]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Chiffrement, hachage, signature]]></name>
+      <color><![CDATA[success]]></color>
+      <position>104</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Conserver les secrets et les clés cryptographiques de manière sécurisée]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Utiliser des algorithmes, des logiciels et des bibliothèques reconnues et sécurisées]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Sauvegarder]]></name>
+      <color><![CDATA[success]]></color>
+      <position>82</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Tester régulièrement la restauration des sauvegardes et leur intégrité]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Protéger les sauvegardes, autant pendant leur stockage que leur convoyage]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Effectuer des sauvegardes régulières]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Applications mobiles : Conception et développement]]></name>
+      <color><![CDATA[warning]]></color>
+      <position>116</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Utiliser les suites cryptographiques du système d’exploitation et les protections matérielles des secrets]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Encapsuler les communications dans un canal TLS]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Prendre en compte les spécificités de l’environnement mobile pour réduire les données personnelles collectées et limiter les permissions demandées]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Cloud : Informatique en nuage]]></name>
+      <color><![CDATA[primary]]></color>
+      <position>109</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Veiller à la répartition des responsabilités de sécurité dans le contrat]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Évaluer la sécurité mise en place par le fournisseur]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Assurer le même niveau de sécurité dans le cloud que sur site]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Inclure les services cloud dans l’analyse de risques]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Sécuriser les échanges avec l’extérieur]]></name>
+      <color><![CDATA[primary]]></color>
+      <position>61</position>
+      <questions>
+        <entry>
+          <name><![CDATA[S'assurer qu'il s'agit du bon destinataire]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Chiffrer les données avant leur envoi]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Transmettre le secret lors d'un envoi distinct et via un canal différent]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Piloter la sécurité des données]]></name>
+      <color><![CDATA[warning]]></color>
+      <position>0</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Évaluer régulièrement l’efficacité des mesures de sécurité mises en œuvre et adopter une démarche d’amélioration continue]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Faire de la sécurité un enjeu partagé et porté par l’équipe dirigeante]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Sécuriser les sites web]]></name>
+      <color><![CDATA[info]]></color>
+      <position>46</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Contrôler que les entrées des utilisateurs correspondent à ce qui est attendu]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Vérifier qu'aucun secret ou donnée personnelle ne passe par les URL]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Sécuriser les flux d’échange des données]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Encadrer la maintenance et la fin de vie des matériels et des logiciels]]></name>
+      <color><![CDATA[success]]></color>
+      <position>71</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Encadrer les interventions de tiers par un responsable de l'organisme]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Enregistrer les interventions de maintenance dans une main courante]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Effacer les données de tout matériel avant sa mise au rebut]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Gérer les habilitations]]></name>
+      <color><![CDATA[primary]]></color>
+      <position>19</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Réaliser une revue annuelle des habilitations]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Supprimer les permissions d’accès obsolètes]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Définir des profils d’habilitation]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Prévoir la continuité et la reprise d’activité]]></name>
+      <color><![CDATA[primary]]></color>
+      <position>88</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Prévoir un plan de continuité et de reprise d’activité]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Effectuer des exercices régulièrement]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Tracer les opérations]]></name>
+      <color><![CDATA[warning]]></color>
+      <position>76</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Prévoir un système de journalisation]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Protéger les équipements de journalisation et les informations journalisées]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Informer les utilisateurs de la mise en place du système de journalisation]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Analyser régulièrement les traces pour détecter la survenue d’un incident]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Authentifier les utilisateurs]]></name>
+      <color><![CDATA[info]]></color>
+      <position>14</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Obliger l’utilisateur à changer le mot de passe attribué automatiquement ou par un administrateur]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Adopter une politique de mot de passe conforme aux recommandations de la CNIL]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Octroyer un identifiant (« login ») unique à chaque utilisateur]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Protéger le réseau informatique]]></name>
+      <color><![CDATA[success]]></color>
+      <position>35</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Sécuriser les accès distants des appareils informatiques nomades par VPN]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Cloisonner le réseau, entre autres en mettant en place une DMZ (zone démilitarisée)]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Limiter les flux réseau au strict nécessaire]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Sécuriser les réseaux Wi-Fi, notamment en mettant en œuvre le protocole WPA3]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Protéger les locaux]]></name>
+      <color><![CDATA[primary]]></color>
+      <position>57</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Restreindre les accès aux locaux au moyen de portes verrouillées]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Installer des alarmes anti-intrusion et les vérifier périodiquement]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Définir un cadre pour les utilisateurs]]></name>
+      <color><![CDATA[warning]]></color>
+      <position>6</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Rédiger une charte informatique comprenant les modalités d’utilisation des systèmes informatiques, les règles de sécurité et les moyens d’administration en place]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Donner une force contraignante à la charte et y rappeler les sanctions encourues en cas de non-respect]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Intelligence artificielle : Conception et apprentissage]]></name>
+      <color><![CDATA[info]]></color>
+      <position>122</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Adopter les bonnes pratiques de sécurité applicables au développement informatique]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Documenter le fonctionnement et les limitations du système]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Veiller à la qualité et l'intégrité des données utilisées pour l'apprentissage et l'inférence]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Sécuriser les postes de travail]]></name>
+      <color><![CDATA[info]]></color>
+      <position>24</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Prévoir une procédure de verrouillage automatique de session]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Utiliser des antivirus régulièrement mis à jour]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Installer et configurer un pare-feu (« firewall » en anglais) logiciel]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Recueillir l’accord de l’utilisateur avant toute intervention sur son poste]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Gérer les incidents et les violations]]></name>
+      <color><![CDATA[warning]]></color>
+      <position>93</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Prévoir les procédures et les responsabilités internes pour la gestion des incidents, dont la procédure de notification aux régulateurs des violations de données personnelles]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Traiter les alertes remontées par le système de journalisation]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[API : Interfaces de programmation applicative]]></name>
+      <color><![CDATA[success]]></color>
+      <position>128</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Limiter le partage des données uniquement aux personnes et aux finalités prévues]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Organiser et documenter la sécurité des accès aux API et aux données]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Sécuriser l’informatique mobile]]></name>
+      <color><![CDATA[success]]></color>
+      <position>30</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Prévoir des moyens de chiffrement des équipements mobiles]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Exiger un secret pour le déverrouillage des smartphones]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Sensibiliser les utilisateurs aux risques spécifiques du nomadisme]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Analyse de risques]]></name>
+      <color><![CDATA[info]]></color>
+      <position>98</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Suivre au cours du temps l’avancement du plan d’action décidé à l’issue de l’analyse de risques]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Mener une analyse de risques, même minimale, sur les traitements de données envisagés]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Revoir régulièrement l’analyse de risques]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Encadrer les développements informatiques]]></name>
+      <color><![CDATA[primary]]></color>
+      <position>51</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Utiliser des données fictives ou anonymisées pour le développement et les tests]]></name>
+          <position>3</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Proposer des paramètres respectueux de la vie privée par défaut]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Prendre en compte la protection des données personnelles dès la conception]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Réaliser des tests complets avant la mise à disposition ou la mise à jour d’un produit]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Sécuriser les serveurs]]></name>
+      <color><![CDATA[warning]]></color>
+      <position>41</position>
+      <questions>
+        <entry>
+          <name><![CDATA[Limiter l’accès aux outils et interfaces d’administration aux seules personnes habilitées]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Installer sans délai les mises à jour critiques après les avoir testées le cas échéant]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Désinstaller ou désactiver les services et interfaces inutiles]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+    <entry>
+      <name><![CDATA[Gérer la sous-traitance]]></name>
+      <color><![CDATA[info]]></color>
+      <position>66</position>
+      <questions>
+        <entry>
+          <name><![CDATA[S'assurer de l'effectivité des garanties prévues (ex. : audits de sécurité, visites)]]></name>
+          <position>2</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Prévoir les conditions de restitution et de destruction des données]]></name>
+          <position>1</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+        <entry>
+          <name><![CDATA[Prévoir des clauses spécifiques dans les contrats des sous-traitants]]></name>
+          <position>0</position>
+          <weight>1</weight>
+          <optional>false</optional>
+          <answers>
+            <entry>
+              <name><![CDATA[Oui]]></name>
+              <position>1</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+            <entry>
+              <name><![CDATA[Non]]></name>
+              <position>0</position>
+              <response><![CDATA[0]]></response>
+            </entry>
+          </answers>
+        </entry>
+      </questions>
+    </entry>
+  </domains>
+  <created_at><![CDATA[2024-04-18T17:37:26+02:00]]></created_at>
+  <updated_at><![CDATA[2024-04-19T10:24:27+02:00]]></updated_at>
+</result>
diff --git a/migrations/Version20240408080622.php b/migrations/Version20240408080622.php
new file mode 100644
index 0000000000000000000000000000000000000000..64bbe82bcdf8a96e59ba4ecab421ec7a660e43a1
--- /dev/null
+++ b/migrations/Version20240408080622.php
@@ -0,0 +1,37 @@
+<?php
+
+declare(strict_types=1);
+
+namespace DoctrineMigrations;
+
+use Doctrine\DBAL\Schema\Schema;
+use Doctrine\Migrations\AbstractMigration;
+
+/**
+ * Auto-generated Migration: Please modify to your needs!
+ */
+final class Version20240408080622 extends AbstractMigration
+{
+    public function getDescription(): string
+    {
+        return 'Update questions in several tables';
+    }
+
+    public function up(Schema $schema): void
+    {
+        // Update question in conformite_traitement_question table
+        $this->addSql('UPDATE conformite_traitement_question SET question = "Information des personnes concernées : traitement loyal et transparent" WHERE question = "Information des personnes concernées (traitement loyal et transparent"');
+        // Update question in aipd_analyse_question_conformite table
+        $this->addSql('UPDATE aipd_analyse_question_conformite SET question = "Information des personnes concernées : traitement loyal et transparent" WHERE question = "Information des personnes concernées (traitement loyal et transparent"');
+        // Update question in aipd_modele_question_conformite table
+        $this->addSql('UPDATE aipd_modele_question_conformite SET question = "Information des personnes concernées : traitement loyal et transparent" WHERE question = "Information des personnes concernées (traitement loyal et transparent"');
+    }
+
+    public function down(Schema $schema): void
+    {
+        // Revert the updates by setting the questions back to their original values
+        $this->addSql('UPDATE conformite_traitement_question SET question = "Information des personnes concernées (traitement loyal et transparent" WHERE question = "Information des personnes concernées : traitement loyal et transparent"');
+        $this->addSql('UPDATE aipd_analyse_question_conformite SET question = "Information des personnes concernées (traitement loyal et transparent" WHERE question = "Information des personnes concernées : traitement loyal et transparent"');
+        $this->addSql('UPDATE aipd_modele_question_conformite SET question = "Information des personnes concernées (traitement loyal et transparent" WHERE question = "Information des personnes concernées : traitement loyal et transparent"');
+    }
+}
diff --git a/migrations/Version20240410152022.php b/migrations/Version20240410152022.php
new file mode 100644
index 0000000000000000000000000000000000000000..e9d850e4756fd007b9c8e5b50971758908a79751
--- /dev/null
+++ b/migrations/Version20240410152022.php
@@ -0,0 +1,169 @@
+<?php
+
+declare(strict_types=1);
+
+namespace DoctrineMigrations;
+
+use Doctrine\DBAL\Schema\Schema;
+use Doctrine\Migrations\AbstractMigration;
+
+/**
+ * Auto-generated Migration: Please modify to your needs!
+ */
+final class Version20240410152022 extends AbstractMigration
+{
+    public function getDescription(): string
+    {
+        return 'Update sections and questions in several tables for organization conformite';
+    }
+
+    public function up(Schema $schema): void
+    {
+        $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+
+        // Titre
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET nom = "Gestion de la documentation et des preuves"
+            where position = 11');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET nom = "Piloter le système de management de la protection des données"
+            where position = 12');
+
+        // Couleur
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "info" where position = 1');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "success" where position = 2');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "primary" where position = 3');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "warning" where position = 4');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "info" where position = 5');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "success" where position = 6');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "primary" where position = 7');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "warning" where position = 8');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "info" where position = 9');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "success" where position = 10');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "primary" where position = 11');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET couleur = "warning" where position = 12');
+
+        // Description
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET description = "Disposer d’un registre des activités de traitement à jour. S\'assurer que les mesures de conformité des traitements des données à caractère personnel sont effectivement prises en compte en cas de traitements nouveaux ou modifiés. Gérer les transferts de données."
+            where position = 2');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET description = "En tant que responsable du traitement, s\'assurer de la conformité des contrats de sous-traitance. Si l\'entreprise agit en tant que sous-traitant, s\'assurer que le responsable du traitement a pris en compte ses obligations."
+            where position = 4');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET description = "En relation avec le service sécurité de l\'information de la structure, mettre en œuvre les mesures de protection sélectionnées afin de répondre aux objectifs de disponibilité, d’intégrité et de confidentialité des données à caractère personnel. Détecter les incidents de sécurité pouvant avoir pour conséquence une violation de données."
+            where position = 6');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET description = "S\'assurer que le personnel à qui ont été affectées les responsabilités définies dans le système de management de la protection des données, a les compétences nécessaires pour exécuter les tâches requises. S\'assurer que tout le personnel approprié a conscience de la pertinence et de l\'importance de ses activités liées aux traitements des données à caractère personnel."
+            where position = 8');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET description = "Connaître la réglementation applicable et ses évolutions. Être en capacité de répondre à des sollicitations ou à des poursuites. Réagir en cas de violations de données."
+            where position = 9');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET description = "À intervalles réguliers, vérifier que le système de management de la protection des données est conforme à la politique définie. Apporter la preuve que les traitements effectués par le responsable du traitement et les sous-traitants sont conformes au règlement."
+            where position = 10');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET description = "Gérer le patrimoine documentaire attaché à la protection des données. Établir et conserver des enregistrements pour apporter la preuve des mesures techniques et organisationnelles."
+            where position = 11');
+        $this->addSql('UPDATE registry_conformite_organisation_processus SET description = "Disposer d\'indicateurs pour piloter l\'efficacité des processus du système de management de la protection des données. Produire le bilan (rapport) annuel."
+            where position = 12');
+
+        // Question
+        $this->allProcessus = $this->getData('SELECT * FROM registry_conformite_organisation_processus ORDER BY position ASC');
+
+        foreach ($this->allProcessus as $processus) {
+            switch ($processus['position']) {
+                case 1:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La politique de gestion des données détaille les mesures techniques et organisationnelles définies par le responsable du traitement pour répondre dans le temps aux exigences du RGPD et pouvoir le démontrer : rôles et responsabilités, règles relatives aux processus du RGPD, procédures de gestion des droits de la personne, procédure en cas de violation de données, sommaire du bilan annuel..."
+                        where processus_id = "' . $processus['id'] . '" and position = 4');
+                    break;
+                case 2:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La structure dispose d\'un registre des traitements. Le registre renseigne sur les critères minimum précisés à l\'article 30 du règlement : nom du responsable du traitement et du DPD, les finalités du traitement, les catégories de personnes concernées et les catégories de données à caractère personnel, les catégories de destinataires, les transferts de données à caractère personnel vers un pays tiers, les délais de conservation, une description générale des mesures de sécurité."
+                        where processus_id = "' . $processus['id'] . '" and position = 1');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "À chaque traitement est associé un gestionnaire. Tout nouveau traitement est signalé par le gestionnaire au DPD ou au référent DPD pour mise à jour du registre. Tout traitement ultérieur est porté à la connaissance du DPD ou du référent DPD pour avis puis partagé par la gouvernance."
+                        where processus_id = "' . $processus['id'] . '" and position = 2');
+                    break;
+                case 3:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Les modalités de l\'exercice des droits sont communiquées à la personne concernée : Droit d’accès aux données (Art 15) ; Droit de rectification des données (Art 16) ; Droit d’effacement des données (Art 17) ; Droit de limitation du traitement (Art 18) ; Droit de portabilité des données (Art 20) ; Droit d’opposition au traitement (Art 21) ; Droit d’opposition au transfert de données (Art 46)."
+                        where processus_id = "' . $processus['id'] . '" and position = 1');
+                    break;
+                case 4:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La structure dispose de la liste exhaustive des sous-traitants à qui elle a délégué des traitements de données à caractère personnel. Le gestionnaire de ces contrats est clairement identifié."
+                        where processus_id = "' . $processus['id'] . '" and position = 3');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La structure surveille à intervalles réguliers la conformité des traitements de données à caractère personnel confiés à des sous-traitants. Pour tout changement majeur, les risques sont réappréciés."
+                        where processus_id = "' . $processus['id'] . '" and position = 4');
+                    break;
+                case 5:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La structure partage une méthode de gestion de projet. Le lancement d\'un projet traitant de données à caractère personnel implique une information préalable auprès du DPD ou du référent DPD. La note de cadrage définit la licéité du traitement, précise les droits que la personne concernée pourra exercer et renseigne sur la finalité, la minimisation des données, la limitation des durées de conservation."
+                        where processus_id = "' . $processus['id'] . '" and position = 1');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La procédure de livraison du projet permet au DPD ou référent DPD de vérifier qu\'il est conforme à la réglementation et que les procédures visant à permettre à la personne concernée d\'exercer ses droits sont opérationnelles."
+                        where processus_id = "' . $processus['id'] . '" and position = 4');
+                    break;
+                case 6:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La structure dispose d\'un document (Politique de sécurité du système d\'information - PSSI) qui rassemble l\'ensemble des mesures de sécurité appliquées."
+                        where processus_id = "' . $processus['id'] . '" and position = 1');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "L\'accès physique aux locaux contenant des équipements informatiques (serveurs, équipements du réseau) est contrôlé. Seules les personnes autorisées peuvent y avoir accès. Les armoires et coffres-forts contenant des données sensibles sont systématiquement fermés à clé."
+                        where processus_id = "' . $processus['id'] . '" and position = 4');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Tous les équipements (Postes de travail, smartphones, objets connectés) sont protégés par un antivirus géré par une console centralisée. Les patchs logiciels sont gérés pour éviter les \"trous\" de sécurité. Les postes sont verrouillés en fin de session."
+                        where processus_id = "' . $processus['id'] . '" and position = 5');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Lorsque des mobiles multifonctions (smartphone), ordinateurs portables ou clé USB sont utilisés, leur usage est encadré. Les utilisateurs en situation de mobilité sont sensibilisés au vol, à l\'écoute et à l\'observation passive. Lorsque cela est justifié, les données sont chiffrées sur les équipements ou supports mobiles."
+                        where processus_id = "' . $processus['id'] . '" and position = 6');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "L\'ensemble des données est sauvegardé. Des tests de restauration sont planifiés et réalisés pour vérifier l\'intégrité des données sauvegardées. Les sauvegardes sont externalisées dans un lieu sécurisé."
+                        where processus_id = "' . $processus['id'] . '" and position = 7');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "L\'ensemble des utilisateurs est sensibilisé à la sécurité informatique, à la protection de la vie privée. Les utilisateurs sont formés aux outils et vigilant dans leurs usages pour éviter les erreurs de manipulation. La charte informatique est signée par chaque utilisateur."
+                        where processus_id = "' . $processus['id'] . '" and position = 8');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La politique de mot de passe s\'applique à l\'accès au réseau et aux applications. Elle précise la force du mot de passe : 12 caractères ou plus, un nombre, une majuscule, un signe de ponctuation ou un caractère spécial (dollar, dièse, ...). Les mots de passe sont gardés secret par chacun des utilisateurs."
+                        where processus_id = "' . $processus['id'] . '" and position = 10');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La mise au rebut des supports numériques est contrôlée. Les données sont effacées avant le recyclage."
+                        where processus_id = "' . $processus['id'] . '" and position = 12');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Les services en ligne, les échanges ou transferts sur les réseaux sont protégés contre l\'interception (Chiffrement). Les configurations sont systématiquement contrôlées après la mise à jour d\'un service en ligne."
+                        where processus_id = "' . $processus['id'] . '" and position = 13');
+                    break;
+                case 7:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La structure dispose d\'une méthode formalisée d\'analyse de risque notamment celle proposée par la CNIL. Si d\'autres méthodes de sécurité globale existent, elles peuvent être mises en cohérence avec la protection des données (ISO 31000, ISO 27005, ISO 27000, EBIOS, HAZOP, HACCP, MÉHARI). Dans ce cas, une vigilance devra être apportée, car ces dernières ne couvrent pas l\'ensemble des mesures permettant la protection des données (par exemple au niveau juridique)."
+                        where processus_id = "' . $processus['id'] . '" and position = 1');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La structure a déjà procédé à une ou plusieurs analyses de risques de son système d\'information. Elle dispose d\'une compétence interne ou externe pouvant réaliser des analyses d\'impacts sur la protection des données."
+                        where processus_id = "' . $processus['id'] . '" and position = 2');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Conformément à l\'article 35 du RGPD et aux lignes directrices portant sur l\'AIPD, les nouveaux traitements de données à caractère personnel \"à risque élevé\" pour les droits et libertés des personnes comme par exemple de contrôle des personnes, d\'évaluations systématiques font l\'objet d\'une analyse d\'impact. La structure a pris connaissance des listes publiées par la CNIL pour lesquelles les analyses sont obligatoires ou non. Dans le cas où le traitement ne figurerait pas sur cette liste, elle applique la règle des critères déterminants l\'analyse (Cf. Infographie \"Dois-je faire une AIPD\")."
+                        where processus_id = "' . $processus['id'] . '" and position = 3');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Les résultats des analyses sont documentés, partagés avec le DPD ou le référent DPD. Ils font l\'objet d\'un plan d\'action formalisé et approuvé par le responsable de traitement. Le DPD ou référent RGPD contrôle la réalisation du plan de traitement."
+                        where processus_id = "' . $processus['id'] . '" and position = 4');
+                    break;
+                case 8:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Les catégories de collaborateurs directement impliqués dans les traitements de données à caractère personnel bénéficient de formations ou des sensibilisations spécifiques centrées sur les principes qui les concernent : gestion du consentement, privacy by design, privacy by default, protection contre les traitements non autorisés, exactitude, gestion des droits, violation de données."
+                        where processus_id = "' . $processus['id'] . '" and position = 2');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Les messages essentiels de la protection des données à caractère personnel sont repris régulièrement sous la forme de campagne d\'affichages, de mails, d\'intervention dans les réunions ou sur les réseaux internes. Les opérations de sensibilisation, de formation et de communication sont mesurées et archivées. Les obligations de l\'utilisateur en matière de données à caractère personnel sont précisées dans la charte informatique."
+                        where processus_id = "' . $processus['id'] . '" and position = 4');
+                    break;
+                case 9:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "La structure a clairement identifié une expertise juridique interne ou externe, spécialisée dans le RGPD et dans ses périmètres connexes comme par exemple les spécifications juridiques locales."
+                        where processus_id = "' . $processus['id'] . '" and position = 2');
+                    break;
+                case 10:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Conformément à l\'article 32 du RGPD, la structure teste, analyse, et évalue l\'efficacité des mesures techniques et organisationnelles, pour assurer la sécurité du traitement. Les mesures de sécurité en prévention de la violation de données à caractère personnel sont contrôlées régulièrement et sont appliquées en cas de violation de données."
+                        where processus_id = "' . $processus['id'] . '" and position = 1');
+                    break;
+                case 11:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Le DPD ou le référent DPD a établi une liste des documents à produire comme par exemple : politique générale de protection des données, politique de gestion des données, compte rendu de gouvernance, registre des traitements, procédures relative à l\'exercice des droits de la personne concernée, modèle de cadrage d\'un projet privacy by design, politique de sécurité."
+                        where processus_id = "' . $processus['id'] . '" and position = 2');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Conformément à l\'article 47 du RGPD, les groupes de collectivités engagées dans une activité publique conjointe ayant définis des codes de conduite, ou des règles contraignantes doivent préciser la procédure de validation et de révision de leur contenu par le responsable du traitement."
+                        where processus_id = "' . $processus['id'] . '" and position = 3');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Les documents à valeur de preuve sont enregistrés (signés par le responsable du traitement). Ils sont protégés contre les pertes, les divulgations, les falsifications et les accès non autorisés. La liste des documents à valeur de preuve est disponible et tenue à jour (Liste des preuves)."
+                        where processus_id = "' . $processus['id'] . '" and position = 4');
+                    break;
+                case 12:
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "S\'il existe déjà une organisation interne basée sur les processus, elle communique au DPD pour qu\'il adapte l\'accompagnement. La cartographie des processus de gestion des données détaille les éléments d\'entrées et de sorties et mentionne les objectifs, les rôles et responsabilités, les activités."
+                        where processus_id = "' . $processus['id'] . '" and position = 1');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "L\'ensemble des actions sont consolidées dans un seul et même tableau afin de s\'assurer de leur réalisation."
+                        where processus_id = "' . $processus['id'] . '" and position = 2');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Le DPD ou le référent DPD a mis en place un tableau de bord qui comprend des indicateurs permettant de mesurer la conformité au règlement et les progrès réalisés. Les indicateurs sont simples à comprendre et partageable avec les membres de la gouvernance. Exemple d\'indicateurs : maturité des processus du système de gestion, ratio d\'actions réalisées et à réaliser, ratio nombre de traitement interne/sous-traités."
+                        where processus_id = "' . $processus['id'] . '" and position = 3');
+                    $this->addSql('UPDATE registry_conformite_organisation_question SET nom = "Conformément aux lignes directrices relatives au DPD, le DPD ou le référent DPD produit un bilan annuel (Rapport annuel) partagé avec la structure de gouvernance et validé par le responsable du traitement. Ce rapport comprend entre autres : bilan de conformité des traitements, bilan des opérations de sensibilisation, bilan des AIPD, bilan du plan d\'actions."
+                        where processus_id = "' . $processus['id'] . '" and position = 4');
+                    break;
+            }
+        }
+    }
+
+    public function down(Schema $schema): void
+    {
+    }
+
+    private function getData(string $sql): array
+    {
+        $stmt = $this->connection->query($sql);
+
+        return $stmt->fetchAll();
+    }
+}
diff --git a/migrations/Version20240419140516.php b/migrations/Version20240419140516.php
new file mode 100644
index 0000000000000000000000000000000000000000..b9049c717d1f413d034cfcb020f81c1df7c1b417
--- /dev/null
+++ b/migrations/Version20240419140516.php
@@ -0,0 +1,68 @@
+<?php
+
+declare(strict_types=1);
+
+namespace DoctrineMigrations;
+
+use Doctrine\DBAL\Schema\Schema;
+use Doctrine\Migrations\AbstractMigration;
+
+/**
+ * Auto-generated Migration: Please modify to your needs!
+ */
+final class Version20240419140516 extends AbstractMigration
+{
+    public function getDescription(): string
+    {
+        return 'Insert data into registry_treatment_data_category if empty';
+    }
+
+    public function up(Schema $schema): void
+    {
+        // Check if registry_treatment_data_category table is empty
+        $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+        $sql   = 'SELECT COUNT(*) as count FROM registry_treatment_data_category';
+        $stmt  = $this->connection->query($sql);
+        $count = (int) $stmt->fetchColumn();
+
+        if (0 === $count) {
+            // Insert data into registry_treatment_data_category
+            $this->addSql("
+                INSERT INTO registry_treatment_data_category
+                VALUES
+                ('bank','Information bancaire',7,0),
+                ('bank-situation','Situation bancaire',8,0),
+                ('birth','Date, lieu de naissance',2,0),
+                ('caf','Numéro de CAF',17,0),
+                ('connexion','Connexion',15,0),
+                ('earning','Revenus',12,0),
+                ('email','Emails',13,0),
+                ('family-situation','Situation familiale',3,0),
+                ('filiation','Filiation',4,0),
+                ('geo','Géolocalisation',16,0),
+                ('health','Santé',18,1),
+                ('heritage','Patrimoine',9,0),
+                ('identity','Pièces d’identité',20,0),
+                ('ip','Adresse IP',14,0),
+                ('name','Nom, Prénom',1,0),
+                ('phone','Coordonnées téléphoniques',6,0),
+                ('picture','Photos-vidéos',21,0),
+                ('postal','Coordonnées postales',5,0),
+                ('professional-situation','Situation professionnelle',11,0),
+                ('public-religious-opinion','Opinion politique ou religieuse',23,1),
+                ('racial-ethnic-opinion','Origine raciale ou ethnique',24,1),
+                ('sex-life','Vie sexuelle',25,1),
+                ('social-security-number','Numéro de Sécurité Sociale',19,1),
+                ('syndicate','Appartenance Syndicale',22,1),
+                ('tax-situation','Situation fiscale',10,0)
+            ");
+        }
+    }
+
+    public function down(Schema $schema): void
+    {
+        // Down migration not needed for this scenario
+        $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.');
+        $this->addSql('DELETE FROM registry_treatment_data_category');
+    }
+}
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index c5bf828be95dd297149e4da511aa0bb63369e077..0000000000000000000000000000000000000000
Binary files a/public/favicon.ico and /dev/null differ
diff --git a/src/Domain/AIPD/Form/Type/AnalyseAvisType.php b/src/Domain/AIPD/Form/Type/AnalyseAvisType.php
index b42609f32e8d50ebb08a5f21d59cd0dbe225bcd4..bd5ea17fbfb22ec1ad80e6fe7eaa9ac6b70599cb 100644
--- a/src/Domain/AIPD/Form/Type/AnalyseAvisType.php
+++ b/src/Domain/AIPD/Form/Type/AnalyseAvisType.php
@@ -31,7 +31,7 @@ class AnalyseAvisType extends AbstractType
     public function configureOptions(OptionsResolver $resolver)
     {
         $resolver->setDefaults([
-           'data_class' => AnalyseImpact::class,
+            'data_class' => AnalyseImpact::class,
         ]);
     }
 }
diff --git a/src/Domain/AIPD/Form/Type/AnalyseCriterePrincipeFondamentalType.php b/src/Domain/AIPD/Form/Type/AnalyseCriterePrincipeFondamentalType.php
index 43b62bd8865717b6febf84a7965a37de47a265af..aeaf838fe813567640f358aba70eedcc2d7be8d1 100644
--- a/src/Domain/AIPD/Form/Type/AnalyseCriterePrincipeFondamentalType.php
+++ b/src/Domain/AIPD/Form/Type/AnalyseCriterePrincipeFondamentalType.php
@@ -48,8 +48,7 @@ class AnalyseCriterePrincipeFondamentalType extends AbstractType
                         'groups'    => ['default'],
                         'mimeTypes' => [
                             'image/png', // .png
-                            'image/jpg', // .jpg
-                            'image/jpeg', // .jpeg
+                            'image/jpeg', // .jpg, .jpeg
                         ],
                         'mimeTypesMessage' => 'aipd_validator.fichier.file',
                     ]),
diff --git a/src/Domain/AIPD/Form/Type/AnalyseSingleAvisType.php b/src/Domain/AIPD/Form/Type/AnalyseSingleAvisType.php
index c1c73adbf94f7e7596035a2d047997383d5423f2..ddc8c75c4f7c06c579d05518bf8ffd6ecc98d64c 100644
--- a/src/Domain/AIPD/Form/Type/AnalyseSingleAvisType.php
+++ b/src/Domain/AIPD/Form/Type/AnalyseSingleAvisType.php
@@ -46,7 +46,7 @@ class AnalyseSingleAvisType extends AbstractType
     public function configureOptions(OptionsResolver $resolver)
     {
         $resolver->setDefaults([
-           'data_class' => AnalyseAvis::class,
+            'data_class' => AnalyseAvis::class,
         ]);
     }
 }
diff --git a/src/Domain/AIPD/Form/Type/MesureProtectionAIPDType.php b/src/Domain/AIPD/Form/Type/MesureProtectionAIPDType.php
index 7b36969bec7f59aefaf2103db8017d404578055c..94b9a733aa493b446d3b6bba0b0c4f232cc1bfa1 100644
--- a/src/Domain/AIPD/Form/Type/MesureProtectionAIPDType.php
+++ b/src/Domain/AIPD/Form/Type/MesureProtectionAIPDType.php
@@ -69,7 +69,7 @@ class MesureProtectionAIPDType extends AbstractType
     public function configureOptions(OptionsResolver $resolver)
     {
         $resolver->setDefaults([
-                'data_class' => AbstractMesureProtection::class,
+            'data_class' => AbstractMesureProtection::class,
         ]);
     }
 }
diff --git a/src/Domain/Documentation/Form/Type/DocumentType.php b/src/Domain/Documentation/Form/Type/DocumentType.php
index 3fee39e3dab291fb28db2366ee6439b2e7b3602e..32d5865447bd1e03c6e12f337708176eedcaae9e 100644
--- a/src/Domain/Documentation/Form/Type/DocumentType.php
+++ b/src/Domain/Documentation/Form/Type/DocumentType.php
@@ -96,8 +96,7 @@ class DocumentType extends AbstractType implements EventSubscriberInterface
                         'groups'    => ['default'],
                         'mimeTypes' => [
                             'image/png', // .png
-                            'image/jpg', // .jpg
-                            'image/jpeg', // .jpeg
+                            'image/jpeg', // .jpg, .jpeg
                         ],
                         'mimeTypesMessage' => 'document_validator.document_file.thumbnail',
                     ]),
@@ -178,15 +177,14 @@ class DocumentType extends AbstractType implements EventSubscriberInterface
                         'groups'    => ['default'],
                         'mimeTypes' => [
                             'image/png', // .png
-                            'image/jpg', // .jpg
-                            'image/jpeg', // .jpeg
+                            'image/jpeg', // .jpg, .jpeg
                             'audio/mpeg', // .mp3
                             'audio/ogg', // .ogg
                             'audio/wav', // .wav
                             'audio/m4a', // .m4a
                             'video/mp4', // .mp4
                             'video/quicktime', // .mov
-                            'video/avi', // .avi
+                            'video/x-msvideo', // .avi
                             'video/mpeg', // .mpg
                             'video/x-ms-wmv', // .wmv
                             'video/ogg', // .ogv, .ogg
diff --git a/src/Domain/Maturity/Form/Type/QuestionType.php b/src/Domain/Maturity/Form/Type/QuestionType.php
index 6ded0f95f77ed4b7df05bb4062a6b609f6e42ebd..05b0a1ac66eeddb917fa2794d94daef92be66984 100644
--- a/src/Domain/Maturity/Form/Type/QuestionType.php
+++ b/src/Domain/Maturity/Form/Type/QuestionType.php
@@ -77,20 +77,19 @@ class QuestionType extends AbstractType
                 'attr'     => [
                     'placeholder' => 'maturity.referentiel.placeholder.not_concerned',
                     'maxlength'   => 1000,
+                    'aria-label'  => 'Changer l\'option par défaut : Non concerné',
                 ],
                 'purify_html' => true,
             ])
             ->add('answers', CollectionType::class, [
-                    'label'          => false,
-                    'entry_type'     => AnswerType::class,
-                    'required'       => true,
-                    'allow_add'      => true,
-                    'allow_delete'   => true,
-                    'by_reference'   => false,
-                    'prototype_name' => '__answer_name__',
-                ]
-            )
-        ;
+                'label'          => false,
+                'entry_type'     => AnswerType::class,
+                'required'       => true,
+                'allow_add'      => true,
+                'allow_delete'   => true,
+                'by_reference'   => false,
+                'prototype_name' => '__answer_name__',
+            ]);
 
         $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
             $form = $event->getForm();
@@ -115,8 +114,7 @@ class QuestionType extends AbstractType
                     ],
                 ]);
             }
-        })
-        ;
+        });
     }
 
     /**
diff --git a/src/Domain/Maturity/Form/Type/SyntheseAnswerType.php b/src/Domain/Maturity/Form/Type/SyntheseAnswerType.php
index de0007aa99be212cbd9522dcbbcfa8b86790108e..1f32f771dcee522bc883738671e3e8d9c48c6a1c 100644
--- a/src/Domain/Maturity/Form/Type/SyntheseAnswerType.php
+++ b/src/Domain/Maturity/Form/Type/SyntheseAnswerType.php
@@ -57,40 +57,39 @@ class SyntheseAnswerType extends AbstractType
             $a            = $event->getData()->getAnswer()->getRecommendation();
 
             $event->getForm()->add('mesurements', EntityType::class, [
-                    'required'      => false,
-                    'label'         => false,
-                    'class'         => Mesurement::class,
-                    'query_builder' => function (EntityRepository $er) use ($collectivity) {
-                        /** @var User $user */
-                        $user = $this->security->getUser();
+                'required'      => false,
+                'label'         => false,
+                'class'         => Mesurement::class,
+                'query_builder' => function (EntityRepository $er) use ($collectivity) {
+                    /** @var User $user */
+                    $user = $this->security->getUser();
 
-                        return $er->createQueryBuilder('m')
-                            ->andWhere('m.collectivity = :collectivity')
-                            ->setParameter('collectivity', $collectivity)
-                            ->andWhere('m.status = :nonApplied')
-                            ->setParameter('nonApplied', MesurementStatusDictionary::STATUS_NOT_APPLIED)
-                            ->orderBy('m.name', 'ASC');
-                    },
-                    'choice_label' => 'name',
-                    'expanded'     => false,
-                    'multiple'     => true,
-                    'attr'         => [
-                        'class'            => 'selectpicker',
-                        'title'            => 'global.placeholder.multiple_select',
-                        'aria-label'       => $a,
-                        'data-live-search' => true,
-                        'data-width'       => 'calc(100% - 40px)',
-                    ],
-                    'choice_attr' => function (Mesurement $choice) {
-                        $name = $choice->getName();
-                        if (\mb_strlen($name) > 85) {
-                            $name = \mb_substr($name, 0, 85) . '...';
-                        }
+                    return $er->createQueryBuilder('m')
+                        ->andWhere('m.collectivity = :collectivity')
+                        ->setParameter('collectivity', $collectivity)
+                        ->andWhere('m.status = :nonApplied')
+                        ->setParameter('nonApplied', MesurementStatusDictionary::STATUS_NOT_APPLIED)
+                        ->orderBy('m.name', 'ASC');
+                },
+                'choice_label' => 'name',
+                'expanded'     => false,
+                'multiple'     => true,
+                'attr'         => [
+                    'class'            => 'selectpicker',
+                    'title'            => 'global.placeholder.multiple_select',
+                    'aria-label'       => $a,
+                    'data-live-search' => true,
+                    'data-width'       => 'calc(100% - 40px)',
+                ],
+                'choice_attr' => function (Mesurement $choice) {
+                    $name = $choice->getName();
+                    if (\mb_strlen($name) > 85) {
+                        $name = \mb_substr($name, 0, 85) . '...';
+                    }
 
-                        return ['data-content' => $name];
-                    },
-                ]
-            );
+                    return ['data-content' => $name];
+                },
+            ]);
         });
     }
 
diff --git a/src/Domain/Notification/Controller/NotificationController.php b/src/Domain/Notification/Controller/NotificationController.php
index cd3f04b5cef8e44b766e796fc804bd30886b2048..085a0c4bb30da6da0eb687107746ba78b31e2182 100644
--- a/src/Domain/Notification/Controller/NotificationController.php
+++ b/src/Domain/Notification/Controller/NotificationController.php
@@ -182,9 +182,9 @@ class NotificationController extends CRUDController
                     'actions'      => $this->generateActionCellContent($notification),
                 ];
             } else {
-                $notificationUser = $notification->getNotificationUsers()->findFirst(function ($i, Model\NotificationUser $nu) use ($user) {
+                $notificationUser = $notification->getNotificationUsers()->filter(function ($i, Model\NotificationUser $nu) use ($user) {
                     return $nu->getUser() && $nu->getUser()->getId() === $user->getId();
-                });
+                })->first();
 
                 $reponse['data'][] = [
                     'state'   => $notificationUser->getReadAt() ? $read : $unread,
@@ -225,9 +225,9 @@ class NotificationController extends CRUDController
                 </a>';
             }
         } else {
-            $notificationUser = $notification->getNotificationUsers()->findFirst(function ($i, Model\NotificationUser $nu) use ($user) {
+            $notificationUser = $notification->getNotificationUsers()->filter(function ($i, Model\NotificationUser $nu) use ($user) {
                 return $nu->getUser() && $nu->getUser()->getId() === $user->getId();
-            });
+            })->first();
             if ($notificationUser && null === $notificationUser->getReadAt()) {
                 $html .= '<a href="' . $this->router->generate('notification_notification_mark_as_read', ['id' => $id]) . '">
 <i aria-hidden="true" class="fas fa-clipboard-check"></i>&nbsp;
@@ -274,10 +274,10 @@ class NotificationController extends CRUDController
                 $notification->setReadAt(new \DateTime());
                 $notification->setReadBy($this->getUser());
             } else {
-                $nu = $notification->getNotificationUsers()->findFirst(function ($i, $n) use ($user) {
+                $nu = $notification->getNotificationUsers()->filter(function ($i, $n) use ($user) {
                     /* @var Model\NotificationUser $n */
                     return $n->getUser() && $n->getUser()->getId() === $user->getId();
-                });
+                })->first();
                 if ($nu) {
                     $nu->setReadAt(new \DateTime());
                 }
@@ -311,10 +311,10 @@ class NotificationController extends CRUDController
             $notification->setReadBy($this->getUser());
             $this->entityManager->flush();
         } else {
-            $nu = $notification->getNotificationUsers()->findFirst(function ($i, $n) use ($user) {
+            $nu = $notification->getNotificationUsers()->filter(function ($i, $n) use ($user) {
                 /* @var Model\NotificationUser $n */
                 return $n->getUser() && $n->getUser()->getId() === $user->getId();
-            });
+            })->first();
             if ($nu) {
                 $nu->setReadAt(new \DateTime());
                 $this->entityManager->flush();
@@ -342,10 +342,10 @@ class NotificationController extends CRUDController
             $this->entityManager->flush();
         } else {
             $user = $this->userProvider->getAuthenticatedUser();
-            $nu   = $notification->getNotificationUsers()->findFirst(function ($i, $n) use ($user) {
+            $nu   = $notification->getNotificationUsers()->filter(function ($i, $n) use ($user) {
                 /* @var Model\NotificationUser $n */
                 return $n->getUser() && $n->getUser()->getId() === $user->getId();
-            });
+            })->first();
             if ($nu) {
                 $nu->setReadAt(null);
                 $this->entityManager->flush();
@@ -431,10 +431,10 @@ class NotificationController extends CRUDController
             $this->entityManager->flush();
         } else {
             $user = $this->userProvider->getAuthenticatedUser();
-            $nu   = $notification->getNotificationUsers()->findFirst(function ($i, $n) use ($user) {
+            $nu   = $notification->getNotificationUsers()->filter(function ($i, $n) use ($user) {
                 /* @var Model\NotificationUser $n */
                 return $n->getUser()->getId() === $user->getId();
-            });
+            })->first();
             if ($nu) {
                 $this->entityManager->remove($nu);
                 $this->entityManager->flush();
diff --git a/src/Domain/Notification/Dictionary/NotificationModuleDictionary.php b/src/Domain/Notification/Dictionary/NotificationModuleDictionary.php
index 5aa1595f04e784164322e457e3e2b73ff95b2c1b..2e4931c52e447629b25c6d616c07f734b24f7183 100644
--- a/src/Domain/Notification/Dictionary/NotificationModuleDictionary.php
+++ b/src/Domain/Notification/Dictionary/NotificationModuleDictionary.php
@@ -63,10 +63,10 @@ class NotificationModuleDictionary extends SimpleDictionary
             Notification::MODULES[Proof::class]      => 'Preuves',
             Notification::MODULES[Mesurement::class] => 'Actions de protection',
             self::ACTION_PLAN                        => 'Plan d\'actions',
-//            Notification::MODULES[ConformiteTraitement::class] => 'Conformité du traitement',
-//            Notification::MODULES[Conformite::class]           => 'Conformité de la structure',
+            // Notification::MODULES[ConformiteTraitement::class] => 'Conformité du traitement',
+            // Notification::MODULES[Conformite::class]           => 'Conformité de la structure',
             Notification::MODULES[AnalyseImpact::class] => 'AIPD',
-//            Notification::MODULES[Document::class]             => 'Espace Documentaire',
+            // Notification::MODULES[Document::class]             => 'Espace Documentaire',
             Notification::MODULES[Maturity::class] => 'Indice de maturité',
             Notification::MODULES[User::class]     => 'Utilisateurs',
         ];
diff --git a/src/Domain/Notification/Serializer/NotificationNormalizer.php b/src/Domain/Notification/Serializer/NotificationNormalizer.php
index 1045439b7bccc4543a1eb0a7686fd42f371a40d0..ad574dea0378aac9ee76d507744c5e912c7795a6 100644
--- a/src/Domain/Notification/Serializer/NotificationNormalizer.php
+++ b/src/Domain/Notification/Serializer/NotificationNormalizer.php
@@ -140,10 +140,10 @@ class NotificationNormalizer extends ObjectNormalizer
 
         try {
             return md5($format . serialize([
-                    'context'    => $context,
-                    'ignored'    => $context[self::IGNORED_ATTRIBUTES] ?? $this->defaultContext[self::IGNORED_ATTRIBUTES],
-                    'attributes' => $context[self::ATTRIBUTES] ?? $this->defaultContext[self::ATTRIBUTES],
-                ]));
+                'context'    => $context,
+                'ignored'    => $context[self::IGNORED_ATTRIBUTES] ?? $this->defaultContext[self::IGNORED_ATTRIBUTES],
+                'attributes' => $context[self::ATTRIBUTES] ?? $this->defaultContext[self::ATTRIBUTES],
+            ]));
         } catch (\Exception $exception) {
             // The context cannot be serialized, skip the cache
             return false;
diff --git a/src/Domain/Registry/Controller/MesurementController.php b/src/Domain/Registry/Controller/MesurementController.php
index 673c73d975d4b67a90324c4f686ce9be0606fbbc..ba0b386a8c712c72dc59c9a9ae0bc7311a436d05 100644
--- a/src/Domain/Registry/Controller/MesurementController.php
+++ b/src/Domain/Registry/Controller/MesurementController.php
@@ -328,7 +328,7 @@ class MesurementController extends CRUDController
             }
 
             return [
-               'nom',
+                'nom',
                 'date_planification',
                 'cout',
                 'charge',
diff --git a/src/Domain/Registry/Dictionary/ViolationImpactDictionary.php b/src/Domain/Registry/Dictionary/ViolationImpactDictionary.php
index 7e09d1df3ebe75ecd76805d73cfd68ce42b29d62..c57d322d0aacc3e9bb02abbf1438ecc3ceaf45a4 100644
--- a/src/Domain/Registry/Dictionary/ViolationImpactDictionary.php
+++ b/src/Domain/Registry/Dictionary/ViolationImpactDictionary.php
@@ -57,7 +57,7 @@ class ViolationImpactDictionary extends SimpleDictionary
             self::IMPACT_DISCRIMINATION                    => 'Discrimination',
             self::IMPACT_IDENTITY_THEFT                    => 'Vol d\'identité',
             self::IMPACT_FRAUD                             => 'Fraude',
-            self::IMPACT_UNAUTHORIZED_PSEUDO_LIFTING       => 'Levée non autorisée de pseudonimisation',
+            self::IMPACT_UNAUTHORIZED_PSEUDO_LIFTING       => 'Levée non autorisée de pseudonymisation',
             self::IMPACT_FINANCIAL_LOSSES                  => 'Pertes financières',
             self::IMPACT_REPUTATION_DAMAGE                 => 'Atteinte à la réputation',
             self::IMPACT_LOSS_PROFESSIONAL_CONFIDENTIALITY => 'Perte de la confidentialité de données protégées par un secret professionnel',
diff --git a/src/Domain/Registry/Form/Type/ConformiteOrganisation/ConformiteType.php b/src/Domain/Registry/Form/Type/ConformiteOrganisation/ConformiteType.php
index 09bc62b281b361fcf7a61451b5211199a8ede9d4..92ddb7fa7485b20ae5d6fc791d256ca3ba311758 100644
--- a/src/Domain/Registry/Form/Type/ConformiteOrganisation/ConformiteType.php
+++ b/src/Domain/Registry/Form/Type/ConformiteOrganisation/ConformiteType.php
@@ -23,10 +23,9 @@ class ConformiteType extends AbstractType
     {
         $builder
             ->add('reponses', CollectionType::class, [
-                    'required'   => false,
-                    'entry_type' => ReponseType::class,
-                ]
-            );
+                'required'   => false,
+                'entry_type' => ReponseType::class,
+            ]);
 
         $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
             $parentForm   = $event->getForm()->getParent()->getParent();
diff --git a/src/Domain/Registry/Form/Type/ConformiteOrganisation/EvaluationType.php b/src/Domain/Registry/Form/Type/ConformiteOrganisation/EvaluationType.php
index 2451a9e6aee441c12d74ce7dfa29727b72568712..f8c3a0b90d159adcd69992ac0af1abe208687f3e 100644
--- a/src/Domain/Registry/Form/Type/ConformiteOrganisation/EvaluationType.php
+++ b/src/Domain/Registry/Form/Type/ConformiteOrganisation/EvaluationType.php
@@ -35,10 +35,9 @@ class EvaluationType extends AbstractType
                 'by_reference' => false,
             ])
             ->add('conformites', CollectionType::class, [
-                    'entry_type'   => ConformiteType::class,
-                    'by_reference' => false,
-                ]
-            )
+                'entry_type'   => ConformiteType::class,
+                'by_reference' => false,
+            ])
             ->add('save', SubmitType::class, [
                 'row_attr' => ['class' => 'btn'],
             ])
diff --git a/src/Domain/Registry/Form/Type/ConformiteTraitement/ConformiteTraitementType.php b/src/Domain/Registry/Form/Type/ConformiteTraitement/ConformiteTraitementType.php
index c985b177bdbcb0df29da6dc640fce06062c7d34a..b494601bca78ca36d08f4015f85fe1b9e88781a7 100644
--- a/src/Domain/Registry/Form/Type/ConformiteTraitement/ConformiteTraitementType.php
+++ b/src/Domain/Registry/Form/Type/ConformiteTraitement/ConformiteTraitementType.php
@@ -42,9 +42,8 @@ class ConformiteTraitementType extends AbstractType
         $conformiteTraitement = $options['data'];
         $builder
             ->add('reponses', CollectionType::class, [
-                    'entry_type' => ReponseType::class,
-                ]
-            )
+                'entry_type' => ReponseType::class,
+            ])
             ->add('traitement', TreatmentType::class, [
                 'data' => $conformiteTraitement->getTraitement(),
             ])
diff --git a/src/Domain/Registry/Form/Type/ConformiteTraitement/ReponseType.php b/src/Domain/Registry/Form/Type/ConformiteTraitement/ReponseType.php
index 57fa992e14c8401553683b5c96f62ab39a57b983..7323831fc8f166d96c1242751cb58ee27606c04e 100644
--- a/src/Domain/Registry/Form/Type/ConformiteTraitement/ReponseType.php
+++ b/src/Domain/Registry/Form/Type/ConformiteTraitement/ReponseType.php
@@ -72,38 +72,37 @@ class ReponseType extends AbstractType
             $parentForm   = $event->getForm()->getParent()->getParent();
             $collectivity = $parentForm->getData()->getTraitement()->getCollectivity();
             $event->getForm()->add('actionProtections', EntityType::class, [
-                    'required'      => false,
-                    'label'         => false,
-                    'class'         => Mesurement::class,
-                    'query_builder' => function (EntityRepository $er) use ($collectivity) {
-                        /** @var User $user */
-                        $user = $this->security->getUser();
+                'required'      => false,
+                'label'         => false,
+                'class'         => Mesurement::class,
+                'query_builder' => function (EntityRepository $er) use ($collectivity) {
+                    /** @var User $user */
+                    $user = $this->security->getUser();
 
-                        return $er->createQueryBuilder('m')
-                            ->andWhere('m.collectivity = :collectivity')
-                            ->setParameter('collectivity', $collectivity)
-                            ->andWhere('m.status = :nonApplied')
-                            ->setParameter('nonApplied', MesurementStatusDictionary::STATUS_NOT_APPLIED)
-                            ->orderBy('m.name', 'ASC');
-                    },
-                    'choice_label' => 'name',
-                    'expanded'     => false,
-                    'multiple'     => true,
-                    'attr'         => [
-                        'class'            => 'selectpicker',
-                        'title'            => 'global.placeholder.multiple_select',
-                        'data-live-search' => true,
-                    ],
-                    'choice_attr' => function (Mesurement $choice) {
-                        $name = $choice->getName();
-                        if (\mb_strlen($name) > 85) {
-                            $name = \mb_substr($name, 0, 85) . '...';
-                        }
+                    return $er->createQueryBuilder('m')
+                        ->andWhere('m.collectivity = :collectivity')
+                        ->setParameter('collectivity', $collectivity)
+                        ->andWhere('m.status = :nonApplied')
+                        ->setParameter('nonApplied', MesurementStatusDictionary::STATUS_NOT_APPLIED)
+                        ->orderBy('m.name', 'ASC');
+                },
+                'choice_label' => 'name',
+                'expanded'     => false,
+                'multiple'     => true,
+                'attr'         => [
+                    'class'            => 'selectpicker',
+                    'title'            => 'global.placeholder.multiple_select',
+                    'data-live-search' => true,
+                ],
+                'choice_attr' => function (Mesurement $choice) {
+                    $name = $choice->getName();
+                    if (\mb_strlen($name) > 85) {
+                        $name = \mb_substr($name, 0, 85) . '...';
+                    }
 
-                        return ['data-content' => $name];
-                    },
-                ]
-            );
+                    return ['data-content' => $name];
+                },
+            ]);
         });
     }
 
diff --git a/src/Domain/Registry/Form/Type/Embeddable/AddressType.php b/src/Domain/Registry/Form/Type/Embeddable/AddressType.php
index e1e12f2a29821056b5946c0fb1b92efd6b558cee..ea00bc9a08584e1e11f27322bf98d37c6cae9ae7 100644
--- a/src/Domain/Registry/Form/Type/Embeddable/AddressType.php
+++ b/src/Domain/Registry/Form/Type/Embeddable/AddressType.php
@@ -86,13 +86,13 @@ class AddressType extends AbstractType
                 'purify_html' => true,
             ])
             ->add('country', TextType::class, [
-            'label'    => 'global.label.address.country',
-            'required' => $required,
-            'attr'     => [
-                'maxlength' => 255,
-            ],
-            'purify_html' => true,
-        ]);
+                'label'    => 'global.label.address.country',
+                'required' => $required,
+                'attr'     => [
+                    'maxlength' => 255,
+                ],
+                'purify_html' => true,
+            ]);
     }
 
     /**
diff --git a/src/Domain/Registry/Form/Type/ProofType.php b/src/Domain/Registry/Form/Type/ProofType.php
index d30074535c378a433e4b9880329bf3861eb759b2..099a50a786e14029e1b255fe9e6bce0e123963e4 100644
--- a/src/Domain/Registry/Form/Type/ProofType.php
+++ b/src/Domain/Registry/Form/Type/ProofType.php
@@ -88,7 +88,7 @@ class ProofType extends AbstractType
             ])
             ->add('documentFile', FileType::class, [
                 'label'       => 'registry.proof.label.file',
-                'required'    => true,
+                'required'    => !$proof->getDocument(),
                 'constraints' => [
                     new File([
                         'maxSize'          => $this->maxSize,
diff --git a/src/Domain/Registry/Form/Type/ViolationType.php b/src/Domain/Registry/Form/Type/ViolationType.php
index f1cce533d9ce4a4ac398a10ee06fb4258ab1be36..72dd2a32ce8e68e8245689d2c9ddb6755e000f71 100644
--- a/src/Domain/Registry/Form/Type/ViolationType.php
+++ b/src/Domain/Registry/Form/Type/ViolationType.php
@@ -173,12 +173,14 @@ class ViolationType extends AbstractType
                 'label' => 'registry.violation.label.nb_affected_rows',
                 'attr'  => [
                     'min' => 0,
+                    'max' => 999999999,
                 ],
             ])
             ->add('nbAffectedPersons', IntegerType::class, [
                 'label' => 'registry.violation.label.nb_affected_persons',
                 'attr'  => [
                     'min' => 0,
+                    'max' => 999999999,
                 ],
             ])
             ->add('potentialImpactsNature', DictionaryType::class, [
diff --git a/src/Domain/Reporting/Generator/Word/ConformiteTraitementGenerator.php b/src/Domain/Reporting/Generator/Word/ConformiteTraitementGenerator.php
index 3700d34f13830c5899724697e6f0f64c52886c01..c1dc15e04fc04e1bdcb3ad03ead4c75026a64e24 100644
--- a/src/Domain/Reporting/Generator/Word/ConformiteTraitementGenerator.php
+++ b/src/Domain/Reporting/Generator/Word/ConformiteTraitementGenerator.php
@@ -527,16 +527,21 @@ class ConformiteTraitementGenerator extends AbstractGenerator implements Impress
         }
 
         $tableSyntheticAnnexeList->addRow(60, ['exactHeight' => true]);
-        $cell = $tableSyntheticAnnexeList->addCell(1000, ['borderLeftColor' => 'ffffff', 'borderLeftSize' => 2, 'borderRightColor' => 'ffffff', 'borderRightSize' => 2]);
+        $cell = $tableSyntheticAnnexeList->addCell(1000, ['borderTopColor' => 'ffffff', 'borderTopSize' => 2, 'borderBottomColor' => 'ffffff', 'borderBottomSize' => 2, 'borderLeftColor' => 'ffffff', 'borderLeftSize' => 2, 'borderRightColor' => 'ffffff', 'borderRightSize' => 2]);
         $cell->addText('');
 
         foreach ($listConformityName as $key => $datas) {
             $tableSyntheticAnnexeList->addRow(400, ['exactHeight' => true]);
             $cell = $tableSyntheticAnnexeList->addCell(1000, ['bgColor' => '3c8dbc']);
             $cell->addText($key, $this->textHeadStyle, ['alignment' => 'right']);
-            foreach ($datas as $item) {
+            foreach ($datas as $key1 => $item) {
                 $cell = $tableSyntheticAnnexeList->addCell(300, ['bgColor' => $this->BgColorSyntheticTreatment($key)]);
                 $cell->addText($item, ['bold' => true], ['alignment' => 'center']);
+
+                if (15 === $key1) {
+                    $cell = $tableSyntheticAnnexeList->addCell(100, ['borderTopColor' => 'ffffff', 'borderTopSize' => 2, 'borderRightColor' => 'ffffff', 'BorderRightSize' => 2, 'borderBottomColor' => 'ffffff', 'borderBottomSize' => 2]);
+                    $cell->addText('');
+                }
             }
         }
     }
diff --git a/src/Domain/Reporting/Generator/Word/ContractorGenerator.php b/src/Domain/Reporting/Generator/Word/ContractorGenerator.php
index 3245a6ee80d26f24b46ea3a49f5b0af62f5c15e7..92251f87e85ac185ec1edaa59b2ec84fc02de23e 100644
--- a/src/Domain/Reporting/Generator/Word/ContractorGenerator.php
+++ b/src/Domain/Reporting/Generator/Word/ContractorGenerator.php
@@ -39,15 +39,13 @@ class ContractorGenerator extends AbstractGenerator implements ImpressionGenerat
     {
         $collectivity = $this->userProvider->getAuthenticatedUser()->getCollectivity();
 
-        $overview = [
-            [
-                'Nom',
-                'Référent',
-                'Clauses contractuelles vérifiées',
-                'A adopté les éléments de sécurité nécessaires',
-                'Tient à jour un registre des traitements',
-                'Envoi des données hors UE',
-            ],
+        $overviews = [
+            'Nom',
+            'Référent',
+            'Clauses contractuelles vérifiées',
+            'A adopté les éléments de sécurité nécessaires',
+            'Tient à jour un registre des traitements',
+            'Envoi des données hors UE',
         ];
         $nbContractors                = \count($data);
         $nbVerifiedContractualClauses = 0;
@@ -55,17 +53,39 @@ class ContractorGenerator extends AbstractGenerator implements ImpressionGenerat
         $nbMaintainsTreatmentRegister = 0;
         $nbSendingDataOutsideEu       = 0;
 
+        $section->addTitle('Registre des sous-traitants', 2);
+
+        if (empty($data)) {
+            $section->addText('Il n’y a aucun sous-traitant identifié.');
+
+            return;
+        }
+
+        $section->addText("Un recensement des sous-traitants gérants des données à caractère personnel de '{$collectivity}' a été effectué.");
+        $section->addText("Il y a {$nbContractors} sous-traitants identifiés, les clauses contractuelles de {$nbVerifiedContractualClauses} d’entre eux ont été vérifiées. {$nbAdoptedSecurityFeatures} sous-traitants ont adopté les éléments de sécurité nécessaires. {$nbMaintainsTreatmentRegister} sous-traitants tiennent à jour un registre des traitements. {$nbSendingDataOutsideEu} sous-traitants envois des données hors UE.");
+
+        $ContractorsListTable = $section->addTable($this->tableStyle);
+        $ContractorsListTable->addRow(null, ['tblHeader' => true, 'cantsplit' => true]);
+        foreach ($overviews as $overviewRow) {
+            $cell = $ContractorsListTable->addCell(1500, $this->cellHeadStyle);
+            $cell->addText($overviewRow, $this->textHeadStyle);
+        }
+
         // Make a loop to get all data. Make all data processing in one loop to avoid several loops
         foreach ($data as $contractor) {
-            // Overview
-            $overview[] = [
-                $contractor->getName(),
-                $contractor->getReferent() ?? $this->parameterBag->get('APP_DEFAULT_REFERENT'),
-                $contractor->isContractualClausesVerified() ? 'Oui' : 'Non',
-                $contractor->isAdoptedSecurityFeatures() ? 'Oui' : 'Non',
-                $contractor->isMaintainsTreatmentRegister() ? 'Oui' : 'Non',
-                $contractor->isSendingDataOutsideEu() ? 'Oui' : 'Non',
-            ];
+            $ContractorsListTable->addRow(null, ['exactHeight' => true, 'cantsplit' => true]);
+            $cell = $ContractorsListTable->addCell(1500);
+            $cell->addText($contractor->getName());
+            $cell = $ContractorsListTable->addCell(1500);
+            $cell->addText($contractor->getReferent() ?? $this->parameterBag->get('APP_DEFAULT_REFERENT'));
+            $cell = $ContractorsListTable->addCell(1500);
+            $cell->addText($contractor->isContractualClausesVerified() ? 'Oui' : 'Non');
+            $cell = $ContractorsListTable->addCell(1500);
+            $cell->addText($contractor->isAdoptedSecurityFeatures() ? 'Oui' : 'Non');
+            $cell = $ContractorsListTable->addCell(1500);
+            $cell->addText($contractor->isMaintainsTreatmentRegister() ? 'Oui' : 'Non');
+            $cell = $ContractorsListTable->addCell(1500);
+            $cell->addText($contractor->isSendingDataOutsideEu() ? 'Oui' : 'Non');
 
             // Verified contractual clauses
             if ($contractor->isContractualClausesVerified()) {
@@ -84,18 +104,6 @@ class ContractorGenerator extends AbstractGenerator implements ImpressionGenerat
                 ++$nbSendingDataOutsideEu;
             }
         }
-
-        $section->addTitle('Registre des sous-traitants', 2);
-
-        if (empty($data)) {
-            $section->addText('Il n’y a aucun sous-traitant identifié.');
-
-            return;
-        }
-
-        $section->addText("Un recensement des sous-traitants gérants des données à caractère personnel de '{$collectivity}' a été effectué.");
-        $section->addText("Il y a {$nbContractors} sous-traitants identifiés, les clauses contractuelles de {$nbVerifiedContractualClauses} d’entre eux ont été vérifiées. {$nbAdoptedSecurityFeatures} sous-traitants ont adopté les éléments de sécurité nécessaires. {$nbMaintainsTreatmentRegister} sous-traitants tiennent à jour un registre des traitements. {$nbSendingDataOutsideEu} sous-traitants envois des données hors UE.");
-        $this->addTable($section, $overview, true, self::TABLE_ORIENTATION_HORIZONTAL);
     }
 
     public function addSyntheticView(Section $section, array $data): void
@@ -126,7 +134,7 @@ class ContractorGenerator extends AbstractGenerator implements ImpressionGenerat
             ];
         }
 
-        $this->addTable($section, $tableData, true, self::TABLE_ORIENTATION_HORIZONTAL);
+        $this->addTable($section, $tableData, true, self::TABLE_ORIENTATION_VERTICAL);
         $section->addPageBreak();
     }
 
diff --git a/src/Domain/Reporting/Generator/Word/TreatmentGenerator.php b/src/Domain/Reporting/Generator/Word/TreatmentGenerator.php
index 2f759b2f6053a86a8d3be8d6d7a1e443144e5d0a..30aba958853ed2397db4fe010f193ac598f7178a 100644
--- a/src/Domain/Reporting/Generator/Word/TreatmentGenerator.php
+++ b/src/Domain/Reporting/Generator/Word/TreatmentGenerator.php
@@ -31,6 +31,7 @@ use App\Domain\Registry\Dictionary\TreatmentUltimateFateDictionary;
 use App\Domain\Registry\Model\Treatment;
 use PhpOffice\PhpWord\Element\Section;
 use PhpOffice\PhpWord\Shared\Converter;
+use PhpOffice\PhpWord\Style\Cell;
 
 class TreatmentGenerator extends AbstractGenerator implements ImpressionGeneratorInterface
 {
@@ -255,7 +256,7 @@ class TreatmentGenerator extends AbstractGenerator implements ImpressionGenerato
                     $treatment->isPaperProcessing() ? 'Oui' : 'Non',
                 ],
                 3 => [
-                    'Délai de conservation',
+                    'Durée de conservation',
                     // Defined below
                 ],
                 4 => [
@@ -286,7 +287,7 @@ class TreatmentGenerator extends AbstractGenerator implements ImpressionGenerato
                 ],
             ];
 
-            // "Délai de conservation"
+            // "Durée de conservation"
             if (count($treatment->getShelfLifes()) > 0) {
                 foreach ($treatment->getShelfLifes() as $delay) {
                     $detailsData[3][1][] = $delay->name . ' - ' . $delay->duration . ' - ' . TreatmentUltimateFateDictionary::getUltimateFates()[$delay->ultimateFate] . "\n";
@@ -535,9 +536,9 @@ class TreatmentGenerator extends AbstractGenerator implements ImpressionGenerato
             'vAlign'  => 'bottom',
         ];
 
-        $cell = $RiskTreatmentAnnexListTable->addCell(3000, $CellsStyle);
+        $cell = $RiskTreatmentAnnexListTable->addCell(500, $CellsStyle);
         $cell->addText('Traitements', $this->textHeadStyle);
-        $cell = $RiskTreatmentAnnexListTable->addCell(2000, $CellsStyle);
+        $cell = $RiskTreatmentAnnexListTable->addCell(250, $CellsStyle);
         $cell->addText('Type de données', $this->textHeadStyle);
 
         $titles = ['Données sensibles',
@@ -555,15 +556,15 @@ class TreatmentGenerator extends AbstractGenerator implements ImpressionGenerato
 
         $verticalStyle = [
             'bgColor'       => '3c8dbc',
-            'textDirection' => \PhpOffice\PhpWord\Style\Cell::TEXT_DIR_BTLR,
-            'vAlign'        => 'center',
+            'textDirection' => Cell::TEXT_DIR_BTLR,
+            'valign'        => 'top',
         ];
         foreach ($titles as $title) {
             if ('' === $title) {
                 $cell = $RiskTreatmentAnnexListTable->addCell(10, ['borderTopColor' => 'ffffff', 'borderTopSize' => 2, 'borderBottomColor' => 'ffffff', 'borderBottomSize' => 2]);
                 $cell->addText($title);
             } else {
-                $cell = $RiskTreatmentAnnexListTable->addCell(50, $verticalStyle);
+                $cell = $RiskTreatmentAnnexListTable->addCell(70, $verticalStyle);
                 $cell->addText($title, $this->textHeadStyle);
             }
         }
diff --git a/src/Domain/Reporting/Metrics/UserMetric.php b/src/Domain/Reporting/Metrics/UserMetric.php
index ca7f148c44a319117d35bcf99836b7d781206edf..81ed47f298722e6495572d4e90210dc4213b86c1 100644
--- a/src/Domain/Reporting/Metrics/UserMetric.php
+++ b/src/Domain/Reporting/Metrics/UserMetric.php
@@ -28,6 +28,7 @@ use App\Domain\Maturity\Model\Referentiel;
 use App\Domain\Registry\Calculator\Completion\ConformiteTraitementCompletion;
 use App\Domain\Registry\Dictionary\ConformiteTraitementLevelDictionary;
 use App\Domain\Registry\Dictionary\MesurementStatusDictionary;
+use App\Domain\Registry\Dictionary\RequestStateDictionary;
 use App\Domain\Registry\Model;
 use App\Domain\Registry\Repository;
 use App\Domain\Registry\Service\ConformiteOrganisationService;
@@ -155,18 +156,19 @@ class UserMetric implements MetricInterface
                 'value' => [
                     'all'  => 0,
                     'type' => [
-                        'correct'         => 0,
-                        'delete'          => 0,
-                        'withdrawConsent' => 0,
-                        'access'          => 0,
-                        'dataPortability' => 0,
-                        'limitTreatment'  => 0,
-                        'other'           => 0,
+                        'correct'           => 0,
+                        'delete'            => 0,
+                        'withdrawConsent'   => 0,
+                        'access'            => 0,
+                        'dataPortability'   => 0,
+                        'limitTreatment'    => 0,
+                        'oppositeTreatment' => 0,
+                        'other'             => 0,
                     ],
                     'status' => [
-                        'toProcess'  => 0,
-                        'processed'  => 0,
-                        'incomplete' => 0,
+                        'toProcess' => 0,
+                        'processed' => 0,
+                        'denied'    => 0,
                     ],
                 ],
             ],
@@ -282,7 +284,9 @@ class UserMetric implements MetricInterface
                 $data['maturity']['new']['data'][$item->getDomain()->getPosition()]['name']  = $item->getDomain()->getName();
                 $data['maturity']['new']['data'][$item->getDomain()->getPosition()]['score'] = $item->getScore() / 10;
             }
-            \ksort($data['maturity']['new']['data']);
+            if (isset($data['maturity']['new']['data']) && is_array($data['maturity']['new']['data'])) {
+                \ksort($data['maturity']['new']['data']);
+            }
         }
         if (isset($maturity) && isset($maturity[1]) && null !== $maturity[0]->getReferentiel()) {
             $data['maturity']['old']['name'] = $maturity[1]->getCreatedAt()->format('d/m/Y');
@@ -290,7 +294,9 @@ class UserMetric implements MetricInterface
                 $data['maturity']['old']['data'][$item->getDomain()->getPosition()]['name']  = $item->getDomain()->getName();
                 $data['maturity']['old']['data'][$item->getDomain()->getPosition()]['score'] = $item->getScore() / 10;
             }
-            \ksort($data['maturity']['old']['data']);
+            if (isset($data['maturity']['old']['data']) && is_array($data['maturity']['old']['data'])) {
+                \ksort($data['maturity']['old']['data']);
+            }
         }
 
         // MESUREMENT
@@ -342,14 +348,12 @@ class UserMetric implements MetricInterface
             }
 
             // Status
-            if ($request->isComplete() && $request->isLegitimateApplicant() && $request->isLegitimateRequest()) {
-                if (\is_null($request->getAnswer()->getDate())) {
-                    ++$data['request']['value']['status']['toProcess'];
-                } else {
-                    ++$data['request']['value']['status']['processed'];
-                }
+            if (\is_null($request->getAnswer()->getDate()) && ('completed_closed' == $request->getState(RequestStateDictionary::STATE_COMPLETED_CLOSED))) {
+                ++$data['request']['value']['status']['processed'];
+            } elseif (\is_null($request->getAnswer()->getDate()) && ('denied' == $request->getState(RequestStateDictionary::STATE_DENIED))) {
+                ++$data['request']['value']['status']['denied'];
             } else {
-                ++$data['request']['value']['status']['incomplete'];
+                ++$data['request']['value']['status']['toProcess'];
             }
         }
 
@@ -390,7 +394,12 @@ class UserMetric implements MetricInterface
         }
 
         // VIOLATION
-        $data['violation']['value']['all'] = \count($violations);
+        foreach ($violations as $violation) {
+            // Only take under account active violations
+            if (\is_null($violation->getDeletedAt())) {
+                ++$data['violation']['value']['all'];
+            }
+        }
 
         // CONFORMITE TRAITEMENT
         if ($collectivity->isHasModuleConformiteTraitement()) {
diff --git a/src/Domain/User/Dictionary/CollectivityTypeDictionary.php b/src/Domain/User/Dictionary/CollectivityTypeDictionary.php
index 0dac79ed66767960b7fbb99f8a896c6b7a83fb35..98c865fb74ab637929f09c3d71171cf415786889 100644
--- a/src/Domain/User/Dictionary/CollectivityTypeDictionary.php
+++ b/src/Domain/User/Dictionary/CollectivityTypeDictionary.php
@@ -59,7 +59,7 @@ class CollectivityTypeDictionary extends SimpleDictionary
             self::TYPE_SYNDICAT             => 'Syndicat',
             self::TYPE_SANITARY_INSTITUTION => 'Établissement sanitaire',
             self::TYPE_MEDICAL_INSTITUTION  => 'Établissement social ou médico-social',
-            self::TYPE_ASSOCIATION          => 'Association',
+            self::TYPE_ASSOCIATION          => 'Association ou Groupement (GIP ou GIE)',
             self::TYPE_ENTERPRISE           => 'Entreprise',
             self::TYPE_OTHER                => 'Autre',
         ];
diff --git a/templates/Admin/Duplication/new.html.twig b/templates/Admin/Duplication/new.html.twig
index 6bdb9a04ab1f0fca4e1ca797724a72868ebf84d0..e03155cc0d6054ce2912acf026655a29a1ede95a 100644
--- a/templates/Admin/Duplication/new.html.twig
+++ b/templates/Admin/Duplication/new.html.twig
@@ -18,18 +18,16 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
+        <div class="col-xs-12 mb-1">
             {% for message in app.flashes('success') %}
                 <div class="alert alert-success">
                     {{ message }}
                 </div>
             {% endfor %}
-            <div class="mb-1">
-                <a href="{{ path('admin_duplication_revert') }}" class="btn btn-default">
-                    <i aria-hidden="true" class="fa fa-times-circle"></i>
-                    {{ 'admin.duplication.action.revert'|trans }}
-                </a>
-            </div>
+            <a href="{{ path('admin_duplication_revert') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-times-circle"></i>
+                {{ 'admin.duplication.action.revert'|trans }}
+            </a>
         </div>
     </div>
 
diff --git a/templates/Admin/Duplication/processing.html.twig b/templates/Admin/Duplication/processing.html.twig
index 81151d49cdd9b07b6c0e548386969defab82d076..1558d8a5475e4e7c9b045e64158edfe35b633ed4 100644
--- a/templates/Admin/Duplication/processing.html.twig
+++ b/templates/Admin/Duplication/processing.html.twig
@@ -69,6 +69,7 @@
             <div class="box-header with-border"><h3 class="box-title">{{ 'admin.duplication.tab.target'|trans }}</h3></div>
             <div class="box-body no-padding">
                 <table class="table table-striped">
+                    <caption class="sr-only">{{ 'admin.duplication.tab.target'|trans }}</caption>
                     <thead>
                         <tr>
                             <th scope="col">{{ 'global.label.organization'|trans }}</th>
@@ -78,7 +79,7 @@
                     <tbody>
                         {% for collectivity in duplication.targetCollectivities %}
                             <tr id="collectivity-{{ collectivity.id }}">
-                                <td>{{ collectivity }}</td>
+                                <th scope="row">{{ collectivity }}</th>
                                 <td class="duplication-status">{# Content will be added dynamically thanks to JS #}</td>
                             </tr>
                         {% endfor %}
diff --git a/templates/Aipd/Analyse_impact/_form_critere.html.twig b/templates/Aipd/Analyse_impact/_form_critere.html.twig
index b677a44ff14cd6de13834a5ceeabaedc6c1171d1..2c6b122afe8418a7778358b5e6288f7de49f5a08 100644
--- a/templates/Aipd/Analyse_impact/_form_critere.html.twig
+++ b/templates/Aipd/Analyse_impact/_form_critere.html.twig
@@ -1,7 +1,7 @@
 <tr>
-    <td>{{ form.vars.value.label }}</td>
+    <th scope="row">{{ form.vars.value.label }}</th>
     <td>
-        {% if(form.vars.value.canBeModified == 'non_renseigne') %}
+        {% if (form.vars.value.canBeModified == 'non_renseigne') %}
             {{ form_widget(form.reponse) }}
         {% else %}
             <span style="display: none">{{ form_widget(form.reponse) }}</span>
diff --git a/templates/Aipd/Analyse_impact/_form_step_1.html.twig b/templates/Aipd/Analyse_impact/_form_step_1.html.twig
index 6e458d015bb34c06fd9e226d1521d545173f1043..660bf9e5f755ae065304c87b49278e84dea173bc 100644
--- a/templates/Aipd/Analyse_impact/_form_step_1.html.twig
+++ b/templates/Aipd/Analyse_impact/_form_step_1.html.twig
@@ -1,4 +1,5 @@
 <table class="table table-bordered criteres-table">
+    <caption class="sr-only">Description</caption>
     <thead>
         <tr>
             <th scope="col">{{ 'aipd.analyse_impact.label.contexte'|trans }}</th>
diff --git a/templates/Aipd/Analyse_impact/_form_step_2.html.twig b/templates/Aipd/Analyse_impact/_form_step_2.html.twig
index db2944250b98626d2827bbada6a2034b0b7ab73b..79fc336a628a5d4d433ebeb8849999af0c057a1b 100644
--- a/templates/Aipd/Analyse_impact/_form_step_2.html.twig
+++ b/templates/Aipd/Analyse_impact/_form_step_2.html.twig
@@ -1,4 +1,5 @@
 <table class="table table-bordered">
+    <caption class="sr-only">Conformité du traitement</caption>
     <thead>
         <tr>
             <th scope="col">{{ 'registry.conformite_traitement.label.question'|trans }}</th>
@@ -10,7 +11,7 @@
     <tbody>
         {% for question in form.questionConformites|sort((a, b) => a.vars.value.position > b.vars.value.position) %}
             <tr>
-                <td>{{ question.vars.value.question }}</td>
+                <th scope="row">{{ question.vars.value.question }}</th>
                 <td>{{ (getConformiteLabel(question.vars.value))|raw }}</td>
                 <td>
                     {% if getFormattedActionProtectionsFromQuestion(question.vars.value)|length > 0 %}
diff --git a/templates/Aipd/Analyse_impact/_form_step_3.html.twig b/templates/Aipd/Analyse_impact/_form_step_3.html.twig
index 4b87d49d7d2db50a2080dd791bb6ce3dbbb7b97a..89c60a1efd384e9463a84622e12cf43fae7d4e7a 100644
--- a/templates/Aipd/Analyse_impact/_form_step_3.html.twig
+++ b/templates/Aipd/Analyse_impact/_form_step_3.html.twig
@@ -1,9 +1,10 @@
 <table class="table table-bordered" id="step3-table">
+    <caption class="sr-only">Gestion des risques</caption>
     <thead>
         <tr>
-            <th scope="col" title="{{ 'aipd.modele_analyse.label.title_disponibility'|trans }}" style="width: 3%">{{ 'aipd.modele_analyse.label.disponibility'|trans }}</th>
-            <th scope="col" title="{{ 'aipd.modele_analyse.label.title_integrity'|trans }}" style="width: 3%">{{ 'aipd.modele_analyse.label.integrity'|trans }}</th>
-            <th scope="col" title="{{ 'aipd.modele_analyse.label.title_confidentiality'|trans }}" style="width: 3%">{{ 'aipd.modele_analyse.label.confidentiality'|trans }}</th>
+            <th scope="col" aria-label="{{ 'aipd.modele_analyse.label.title_disponibility'|trans }}" title="{{ 'aipd.modele_analyse.label.title_disponibility'|trans }}" style="width: 3%">{{ 'aipd.modele_analyse.label.disponibility'|trans }}</th>
+            <th scope="col" aria-label="{{ 'aipd.modele_analyse.label.title_integrity'|trans }}" title="{{ 'aipd.modele_analyse.label.title_integrity'|trans }}" style="width: 3%">{{ 'aipd.modele_analyse.label.integrity'|trans }}</th>
+            <th scope="col" aria-label="{{ 'aipd.modele_analyse.label.title_confidentiality'|trans }}" title="{{ 'aipd.modele_analyse.label.title_confidentiality'|trans }}" style="width: 3%">{{ 'aipd.modele_analyse.label.confidentiality'|trans }}</th>
             <th scope="col" style="width: 35%">{{ 'aipd.modele_analyse.label.scenario'|trans }}</th>
             <th scope="col" style="width: 12%">{{ 'aipd.modele_analyse.label.vraisemblance'|trans }}</th>
             <th scope="col" style="width: 12%">{{ 'aipd.modele_analyse.label.gravite'|trans }}</th>
@@ -21,6 +22,7 @@
                     {% else %}
                         {% if scenario.vars.value.isDisponibilite %}
                             <i aria-hidden="true" class="fa fa-check"></i>
+                            <span class="sr-only">{{ 'global.label.yes'|trans }}</span>
                         {% endif %}
                     {% endif %}
                 </td>
@@ -30,6 +32,7 @@
                     {% else %}
                         {% if scenario.vars.value.isIntegrite %}
                             <i aria-hidden="true" class="fa fa-check"></i>
+                            <span class="sr-only">{{ 'global.label.yes'|trans }}</span>
                         {% endif %}
                     {% endif %}
                 </td>
@@ -39,11 +42,11 @@
                     {% else %}
                         {% if scenario.vars.value.isConfidentialite %}
                             <i aria-hidden="true" class="fa fa-check"></i>
+                            <span class="sr-only">{{ 'global.label.yes'|trans }}</span>
                         {% endif %}
                     {% endif %}
                 </td>
-                <td>
-                    {{ scenario.vars.value.nom }}</td>
+                <th scope="row">{{ scenario.vars.value.nom }}</th>
                 <td>
                     {% if scenario.vars.value.canVraisemblanceBeModified %}
                         {{ form_widget(scenario.vraisemblance) }}
diff --git a/templates/Aipd/Analyse_impact/_form_step_4.html.twig b/templates/Aipd/Analyse_impact/_form_step_4.html.twig
index 10d50c79fc024f6f8f6b9d70e10fd93f02d1ae6b..5ed5ddbd7435f970e4a085343c3d75f0d271b613 100644
--- a/templates/Aipd/Analyse_impact/_form_step_4.html.twig
+++ b/templates/Aipd/Analyse_impact/_form_step_4.html.twig
@@ -1,7 +1,8 @@
 <table class="table table-bordered">
+    <caption class="sr-only">Mesures</caption>
     <thead>
         <tr>
-            <th scope="col" style="width: 40%">{{ 'aipd.mesure_protection.label.name'|trans }}</th>
+            <th scope="col" style="width: 40%">{{ 'aipd.modele_analyse.label.linked_mesure'|trans }}</th>
             <th scope="col" class="required">{{ 'aipd.modele_analyse.label.answer'|trans }}</th>
             <th scope="col" class="required" style="width: 40%">{{ 'aipd.mesure_protection.label.detail'|trans }}</th>
         </tr>
@@ -9,15 +10,9 @@
     <tbody>
         {% for mesureProtection in form.mesureProtections|sort((a, b) => a.vars.value.nom > b.vars.value.nom) %}
             <tr>
-                <td>
-                    {{ mesureProtection.vars.value.nom }}
-                </td>
-                <td>
-                    {{ form_widget(mesureProtection.reponse) }}
-                </td>
-                <td>
-                    {{ form_widget(mesureProtection.detail) }}
-                </td>
+                <th scope="row">{{ mesureProtection.vars.value.nom }}</th>
+                <td>{{ form_widget(mesureProtection.reponse) }}</td>
+                <td>{{ form_widget(mesureProtection.detail) }}</td>
             </tr>
         {% endfor %}
         {% if form.mesureProtections is empty %}
diff --git a/templates/Aipd/Analyse_impact/evaluation.html.twig b/templates/Aipd/Analyse_impact/evaluation.html.twig
index 8a3e8c6c8c45609360a072fe64b0fd0694523c75..a80d3ae0443e9f37d12b33d0dc0d35b00133a724 100644
--- a/templates/Aipd/Analyse_impact/evaluation.html.twig
+++ b/templates/Aipd/Analyse_impact/evaluation.html.twig
@@ -46,28 +46,38 @@
                 <div class="box-header with-border"><h3 class="box-title">{{ 'aipd.analyse_impact.tab.description_conformite'|trans }}</h3></div>
                 <div class="box-body no-padding">
                     <table class="table mb-2">
-                        <tr>
-                            <th scope="col">{{ 'aipd.analyse_impact.label.contexte'|trans }}</th>
-                            <th scope="col" style="width: 25%;">{{ 'registry.conformite_traitement.label.conformite'|trans }}</th>
-                        </tr>
-                        {% for critere in analyseImpact.criterePrincipeFondamentaux %}
-                        <tr>
-                            <td>{{ critere.label }}</td>
-                            <td>{{ getCritereLabel(critere)|raw }}</td>
-                        </tr>
-                        {% endfor %}
+                        <caption class="sr-only">Description</caption>
+                        <thead>
+                            <tr>
+                                <th scope="col">{{ 'aipd.analyse_impact.label.contexte'|trans }}</th>
+                                <th scope="col" style="width: 25%;">{{ 'registry.conformite_traitement.label.conformite'|trans }}</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            {% for critere in analyseImpact.criterePrincipeFondamentaux %}
+                            <tr>
+                                <th scope="row">{{ critere.label }}</th>
+                                <td>{{ getCritereLabel(critere)|raw }}</td>
+                            </tr>
+                            {% endfor %}
+                        </tbody>
                     </table>
                     <table class="table">
-                        <tr>
-                            <th scope="col">{{ 'registry.conformite_traitement.label.question'|trans }}</th>
-                            <th scope="col" style="width: 25%">{{ 'registry.conformite_traitement.label.conformite'|trans }}</th>
-                        </tr>
-                        {% for question in analyseImpact.questionConformites|sort((a, b) => a.position >= b.position) %}
+                        <caption class="sr-only">Conformité du traitement</caption>
+                        <thead>
                             <tr>
-                                <td>{{ question.question }}</td>
-                                <td>{{ getConformiteLabel(question)|raw }}</td>
+                                <th scope="col">{{ 'registry.conformite_traitement.label.question'|trans }}</th>
+                                <th scope="col" style="width: 25%">{{ 'registry.conformite_traitement.label.conformite'|trans }}</th>
                             </tr>
-                        {% endfor %}
+                        </thead>
+                        <tbody>
+                            {% for question in analyseImpact.questionConformites|sort((a, b) => a.position >= b.position) %}
+                                <tr>
+                                    <th scope="row">{{ question.question }}</th>
+                                    <td>{{ getConformiteLabel(question)|raw }}</td>
+                                </tr>
+                            {% endfor %}
+                        </tbody>
                     </table>
                 </div>
             </div>
@@ -92,18 +102,23 @@
                 <div class="box-header with-border"><h3 class="box-title">{{ 'aipd.analyse_impact.tab.gestion_risques'|trans }}</h3></div>
                 <div class="box-body no-padding">
                     <table class="table">
-                        <tr>
-                            <th scope="col">{{ 'aipd.modele_analyse.label.scenario'|trans }}</th>
-                            <th scope="col" style="width: 20%;">{{ 'aipd.analyse_impact.label.impact_potentiel'|trans }}</th>
-                            <th scope="col" style="width: 20%;">{{ 'aipd.analyse_impact.label.impact_residuel'|trans }}</th>
-                        </tr>
-                        {% for scenario in analyseImpact.scenarioMenaces|sort((a, b) => a.nom > b.nom) %}
+                        <caption class="sr-only">{{ 'aipd.analyse_impact.tab.gestion_risques'|trans }}</caption>
+                        <thead>
                             <tr>
-                                <td>{{ scenario.nom }}</td>
-                                <td>{{ getScenarioMenaceImpactPotentielLabel(scenario)|raw }}</td>
-                                <td>{{ getScenarioMenaceImpactResiduelLabel(scenario)|raw }}</td>
+                                <th scope="col">{{ 'aipd.modele_analyse.label.scenario'|trans }}</th>
+                                <th scope="col" style="width: 20%;">{{ 'aipd.analyse_impact.label.impact_potentiel'|trans }}</th>
+                                <th scope="col" style="width: 20%;">{{ 'aipd.analyse_impact.label.impact_residuel'|trans }}</th>
                             </tr>
-                        {% endfor %}
+                        </thead>
+                        <tbody>
+                            {% for scenario in analyseImpact.scenarioMenaces|sort((a, b) => a.nom > b.nom) %}
+                                <tr>
+                                    <th scope="row">{{ scenario.nom }}</th>
+                                    <td>{{ getScenarioMenaceImpactPotentielLabel(scenario)|raw }}</td>
+                                    <td>{{ getScenarioMenaceImpactResiduelLabel(scenario)|raw }}</td>
+                                </tr>
+                            {% endfor %}
+                        </tbody>
                     </table>
                 </div>
             </div>
diff --git a/templates/Aipd/Analyse_impact/list.html.twig b/templates/Aipd/Analyse_impact/list.html.twig
index 0201ed30f5fc15159848ef619ac1a2b2c9dc7696..2f07c926508f6cc5a74b2f575f5122def633f189 100644
--- a/templates/Aipd/Analyse_impact/list.html.twig
+++ b/templates/Aipd/Analyse_impact/list.html.twig
@@ -23,16 +23,14 @@
 
 
 {% block body %}
-    <div class="row" style="margin-bottom: 1em">
-        <div class="col-xs-12">
-            <div class="mb-1" id="action-top-buttons">
-                {% if category and category.documents|length > 0 %}
-                    <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
-                        <i aria-hidden="true" class="fa fa-circle-info"></i>
-                        {{ 'global.action.documentation'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+    <div class="row">
+        <div class="col-xs-12 mb-1">
+            {% if category and category.documents|length > 0 %}
+                <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
+                    <i aria-hidden="true" class="fa fa-circle-info"></i>
+                    {{ 'global.action.documentation'|trans }}
+                </a>
+            {% endif %}
         </div>
     </div>
     <div class="row">
@@ -40,39 +38,44 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'aipd.analyse_impact.title.list'|trans }}</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_traitement" placeholder="{{ 'aipd.analyse_impact.list.traitement'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_date_de_creation" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_date_de_validation" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_modele" placeholder="{{ 'aipd.analyse_impact.list.modele'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col"></th>
-                            <th scope="col"></th>
-                            <th scope="col"></th>
-                            <th scope="col"></th>
-                        </tr>
-                        <tr>
-                            <th scope="col">{{ 'aipd.analyse_impact.list.traitement'|trans }}</th>
-                            <th scope="col">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col">{{ 'aipd.analyse_impact.list.date_validation'|trans }}</th>
-                            <th scope="col" style="width: 15%">{{ 'aipd.analyse_impact.list.modele'|trans }}</th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                                <th>{{ 'global.label.organization'|trans }}</th>
-                            {% endif %}
-                            <th scope="col">{{ 'aipd.analyse_impact.label.avis_referent'|trans }}</th>
-                            <th scope="col">{{ 'aipd.analyse_impact.label.avis_dpd'|trans }}</th>
-                            <th scope="col">{{ 'aipd.analyse_impact.label.avis_representant'|trans }}</th>
-                            <th scope="col">{{ 'aipd.analyse_impact.label.avis_responsable'|trans }}</th>
-                            <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                        </tr>
+                            <tr>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_traitement" placeholder="{{ 'aipd.analyse_impact.list.traitement'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_date_de_creation" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_date_de_validation" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_modele" placeholder="{{ 'aipd.analyse_impact.list.modele'|trans }}" style="width: 100%;">
+                                </th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col"></th> <!-- Structure -->
+                                {% endif %}
+                                <th scope="col"></th>
+                                <th scope="col"></th>
+                                <th scope="col"></th>
+                                <th scope="col"></th>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col">{{ 'aipd.analyse_impact.list.traitement'|trans }}</th>
+                                <th scope="col">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col">{{ 'aipd.analyse_impact.list.date_validation'|trans }}</th>
+                                <th scope="col" style="width: 15%">{{ 'aipd.analyse_impact.list.modele'|trans }}</th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th>{{ 'global.label.organization'|trans }}</th>
+                                {% endif %}
+                                <th scope="col">{{ 'aipd.analyse_impact.label.avis_referent'|trans }}</th>
+                                <th scope="col">{{ 'aipd.analyse_impact.label.avis_dpd'|trans }}</th>
+                                <th scope="col">{{ 'aipd.analyse_impact.label.avis_representant'|trans }}</th>
+                                <th scope="col">{{ 'aipd.analyse_impact.label.avis_responsable'|trans }}</th>
+                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                            </tr>
                         </thead>
                     </table>
                 </div>
diff --git a/templates/Aipd/Analyse_impact/pdf.html.twig b/templates/Aipd/Analyse_impact/pdf.html.twig
index db86e5c3c9a90b6765a5a5c54b899536863690cd..b03e4f5ca7282b56baa7435a9474d885579b84f3 100644
--- a/templates/Aipd/Analyse_impact/pdf.html.twig
+++ b/templates/Aipd/Analyse_impact/pdf.html.twig
@@ -8,7 +8,7 @@
 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css">
-    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.4.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
+    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.5.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.17/css/AdminLTE.min.css">
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.17/css/skins/_all-skins.min.css">
@@ -157,14 +157,14 @@
             <h2>1. Préambule</h2>
         </div>
         <div>Le présent document contient tous les éléments nécessaires pour le Responsable de Traitement (RT), le Référent RGPD (RR) et le Délégué à la Protection des Données (DPD) pour mener à bien une Analyse d'Impact relative à la Protection des Données (le sigle AIPD sera utilisé dans la suite de ce document) conforme aux attentes de la CNIL.</div>
-        <div>Il est possible de retrouver l'ensemble des éléments produits dans ce document dans le logiciel MADIS.</div>
+        <div>Il est possible de retrouver l'ensemble des éléments produits dans ce document dans le logiciel Madis.</div>
 
         <h3>1.1 Méthode d'une Analyse d'Impact relative à la Protection des Données</h3>
         <div>La démarche pour réaliser une analyse d'impact comprend quatre étapes :</div>
         <div style="margin-left:50px;">1- Délimiter et décrire le contexte du(des) traitement(s) considéré(s);</div>
         <div style="margin-left:50px;">2- Analyser les mesures garantissant le respect des principes fondamentaux : la proportionnalité et la nécessité du traitement, et la protection des droits des personnes concernées;</div>
         <div style="margin-left:50px;">3- Apprécier les risques sur la vie privée liés à la sécurité des données et vérifier qu’ils sont convenablement traités ;</div>
-        <div style="margin-left:50px;">4- Formaliser la validation du PIA au regard des éléments précédents ou bien décider de réviser les étapes précédentes.</div>
+        <div style="margin-left:50px;">4- Formaliser la validation de l’AIPD au regard des éléments précédents ou bien décider de réviser les étapes précédentes.</div>
 
         <div style="text-align: center"><img src="{{ base_dir ~ asset("images/cycleAIPD.jpg") }}" height="300" alt="CycleAIPD"></div>
 
@@ -176,9 +176,10 @@
         <div class="separator"></div>
         <div style="text-align: center"><img src="{{ base_dir ~ asset("images/ConformiteAIPD.png") }}" width="800" alt="ConformitéAIPD"></div>
 
-        <div  style="page-break-before: always;"></div>
+        <div style="page-break-before: always;"></div>
         <h2>2. Étude du contexte</h2>
         <div>Ce chapitre a pour objectif de fournir une vision claire de la structure et du traitement de données personnelles considéré</div>
+        <div class="separator"></div>
         <div class="col-md-6">
             <table class="table table-bordered">
                 <tr>
@@ -284,7 +285,7 @@
             <div class="separator"></div>
             <table class="table table-bordered">
                 <tr>
-                    <td class="table-bluecell">Délais de conservation</td>
+                    <td class="table-bluecell">Durée de conservation</td>
                     <td>
                         {% for duration in object.conformiteTraitement.traitement.shelfLifes %}
                             {{ duration.name }} - {{ duration.duration }} - {{ duration.ultimateFate }} <br/>
@@ -447,6 +448,7 @@
             </tbody>
         </table>
         <div>Le graphique ci-dessous indique les points d’amélioration nécessaires au respect des principes fondamentaux du règlement.</div>
+        <div class="separator"></div>
         <div class="reportGraph"><canvas id="grandsDomaines-chart"></canvas></div>
         <div  style="page-break-before: always;"></div>
         <h2>4. Études des risques liés à la sécurité des données</h2>
@@ -502,7 +504,8 @@
 
         <div  style="page-break-before: always;"></div>
         <h3>4.2 Évaluation de l'impact et matrice de décision</h3>
-        <div>Le tableau ci-dessous identifie des scénarios de menaces pour lesquels une évaluation est réalisée sur la vraisemblance (risques d’occurrence) et la gravité (conséquences en cas d’évènement). D, I et C représentent les critères de classification de l'information : <b>D</b>isponibilité, <b>I</b>ntégrité, <b>C</b>onfidentialité. </div>
+        <div>Le tableau ci-dessous identifie des scénarios de menaces pour lesquels une évaluation est réalisée sur la vraisemblance (risques d’occurrence) et la gravité (conséquences en cas d’évènement). D, I et C représentent les critères de classification de l'information : <b>D</b>isponibilité, <b>I</b>ntégrité, <b>C</b>onfidentialité.</div>
+        <div class="separator"></div>
         <table class="table table-bordered">
             <tr>
                 <th>D</th>
@@ -531,7 +534,9 @@
         <br/>
         <h3 style="page-break-before: always">4.3 Mesure(s) de réduction des risques mise(s) en place</h3>
         <div>Le radar ci-dessous présente les mesures déjà mises en place dans la structure pour réduire l’ensemble des risques identifiés.</div>
+        <div class="separator"></div>
         <div class="reportGraph"><canvas id="mesuresSecurite-chart"></canvas></div>
+        <div class="separator"></div>
         <div class="box box-solid box-primary">
             <div class="box-header with-border">Mesures de protection</div>
             <table class="table table-bordered">
@@ -604,7 +609,9 @@
         </div>
         <p>Le graphique ci dessous représente les risques résiduels sur la disponibilité, l'intégrité et la confidentialité des données à caractère personnel</p>
         <div class="reportGraph"><canvas id="dicResiduels-chart"></canvas></div>
+        <div class="separator"></div>
         <div>Le plan d’action ci-après présente les mesures de sécurité liées aux seuls scénarios de menaces dont l’impact est refusé.</div>
+        <div class="separator"></div>
         <div class="box box-solid box-primary">
             <div class="box-header with-border">Actions conseillées par le DPD à mettre en place</div>
             <div class="box-body">
@@ -1137,7 +1144,7 @@
                         <td><strong>{{ 'registry.treatment.label.collecting_method'|trans }}</strong></td>
                         <td>
                             <ul class="ps-1">
-                                {% for method in object.collectingMethod %}
+                                {% for method in traitement.collectingMethod %}
                                     <li>{{ method|dictionary('registry_treatment_collecting_method') }}</li>
                                 {% endfor %}
                             </ul>
@@ -1261,18 +1268,18 @@
 
         {# LINKED MODULES #}
         <div class="box box-solid box-warning">
-            <div class="box-header with-border"><h3 class="box-title">{{ 'global.tab.linked_modules'|trans }}</h3></div>
+            <div class="box-header with-border"><h3 class="box-title" style="color: white">{{ 'global.tab.linked_modules'|trans }}</h3></div>
             <div class="box-body no-padding">
                 <table class="table">
                     <tbody>
                         {# REQUESTS #}
-                        {% include '_Utils/_show_block_requests.html.twig' with { requests: object.requests } %}
+                        {% include '_Utils/_show_block_requests.html.twig' with { requests: traitement.requests } %}
                         {# VIOLATIONS #}
-                        {% include '_Utils/_show_block_violations.html.twig' with { violations: object.violations } %}
+                        {% include '_Utils/_show_block_violations.html.twig' with { violations: traitement.violations } %}
                         {# PROOFS #}
-                        {% include '_Utils/_show_block_proofs.html.twig' with { proofs: object.proofs } %}
+                        {% include '_Utils/_show_block_proofs.html.twig' with { proofs: traitement.proofs } %}
                         {# MESUREMENTS #}
-                        {% include '_Utils/_show_block_mesurements.html.twig' with { mesurements: object.mesurements } %}
+                        {% include '_Utils/_show_block_mesurements.html.twig' with { mesurements: traitement.mesurements } %}
                     </tbody>
                 </table>
             </div>
@@ -1284,84 +1291,111 @@
             <div class="box box-solid box-success">
                 <div class="box-header with-border"><h3 class="box-title" style="color: white">{{ 'registry.treatment.tab.conformite'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
-                        <tr>
-                            <td style="width: 35%">
-                                <strong>{{ 'registry.conformite_traitement.label.conformite_traitement'|trans }}</strong>
-                            </td>
-                            <td>
-                                {% if traitement.conformiteTraitement is not null %}
-                                    {{ getConformiteTraitementLabel(traitement.conformiteTraitement)|raw }}
-                                {% else %}
-                                    <span class="label label-default" style="display: inline-block;">Non-réalisée</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>
-                                <strong>{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</strong>
-                            </td>
-                            <td>
-                                {% if traitement.conformiteTraitement is not null %}
-                                    {% set nbTotal = traitement.conformiteTraitement.nbConformes + traitement.conformiteTraitement.nbNonConformesMineures + traitement.conformiteTraitement.nbNonConformesMajeures %}
-                                    {% set widthNbConforme = ((traitement.conformiteTraitement.nbConformes * 100) / nbTotal)|round %}
-                                    {% set widthnbNonConformesMineures = ((traitement.conformiteTraitement.nbNonConformesMineures * 100) / nbTotal)|round %}
-                                    {% set widthnbNonConformesMajeures = 100 - (widthNbConforme + widthnbNonConformesMineures) %}
-                                    <div class="stacked-bar-graph">
-                                        {% if widthNbConforme %}<span style="width:{{ widthNbConforme }}%" class="bar-conforme tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.conforme'|trans }} {{ traitement.conformiteTraitement.nbConformes }}</span></span>{% endif %}
-                                        {% if widthnbNonConformesMineures %}<span style="width:{{ widthnbNonConformesMineures }}%" class="bar-non-conforme-mineure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.minor_conforme'|trans }} {{ traitement.conformiteTraitement.nbNonConformesMineures }}</span></span>{% endif %}
-                                        {% if widthnbNonConformesMajeures %}<span style="width:{{ widthnbNonConformesMajeures }}%" class="bar-non-conforme-majeure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.major_conforme'|trans }} {{ traitement.conformiteTraitement.nbNonConformesMajeures }}</span></span>{% endif %}
-                                    </div>
-                                {% endif %}
-                            </td>
-                        </tr>
-                    </table>
-                </div>
-            </div>
-            {# AIPD #}
-            {% if traitement.conformiteTraitement is not null and traitement.conformiteTraitement.lastAnalyseImpact is not null %}
-                <div class="box box-solid box-primary">
-                    <div class="box-header with-border"><h3 class="box-title" style="color: white">{{ 'registry.treatment.tab.last_aipd'|trans }}</h3></div>
-                    <div class="box-body no-padding">
-                        <table class="table">
+                    <table role="presentation" class="table">
+                        <tbody>
                             <tr>
                                 <td style="width: 35%">
-                                    <strong>{{ 'aipd.treatment.label.avis_aipd'|trans }}</strong>
+                                    <strong>{{ 'registry.treatment.label.last_conformite_traitement'|trans }}</strong>
                                 </td>
                                 <td>
-                                    {% set analyseImpact = traitement.conformiteTraitement.lastAnalyseImpact %}
-
-                                    {% set labelAipdColor = "label-default" %}
-                                    {% if analyseImpact.statut == "defavorable" %}
-                                        {% set labelAipdColor = "label-danger" %}
-                                    {% elseif analyseImpact.statut == "favorable_avec_reserves" %}
-                                        {% set labelAipdColor = "label-warning" %}
-                                    {% elseif analyseImpact.statut == "favorable" %}
-                                        {% set labelAipdColor = "label-success" %}
+                                    {% if traitement.conformiteTraitement is not null %}
+                                        {{ traitement.conformiteTraitement.updatedAt|date('d/m/Y') }}
+                                    {% else %}
+                                        <i>{{ 'registry.treatment.label.no_conformite_traitement'|trans }}</i>
                                     {% endif %}
-                                    {% set statut = analyseImpact.statut %}
-                                    {% set labelStatut = "aipd.analyse_impact.values." ~ traitement.conformiteTraitement.lastAnalyseImpact.statut %}
-                                    <span class="label {{ labelAipdColor }}" style="display: inline-block;">
-                                {{ labelStatut|trans}}
-                            </span>
                                 </td>
                             </tr>
+                            {% if traitement.conformiteTraitement is not null %}
+                                <tr>
+                                    <td>
+                                        <strong>{{ 'registry.conformite_traitement.label.conformite_traitement'|trans }}</strong>
+                                    </td>
+                                    <td>
+                                        {{ getConformiteTraitementLabel(traitement.conformiteTraitement)|raw }}
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <td>
+                                        <strong>{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</strong>
+                                    </td>
+                                    <td>
+                                        {% set nbTotal = traitement.conformiteTraitement.nbConformes + traitement.conformiteTraitement.nbNonConformesMineures + traitement.conformiteTraitement.nbNonConformesMajeures %}
+                                        {% set widthNbConforme = ((traitement.conformiteTraitement.nbConformes * 100) / nbTotal)|round %}
+                                        {% set widthnbNonConformesMineures = ((traitement.conformiteTraitement.nbNonConformesMineures * 100) / nbTotal)|round %}
+                                        {% set widthnbNonConformesMajeures = 100 - (widthNbConforme + widthnbNonConformesMineures) %}
+                                        <div class="stacked-bar-graph">
+                                            {% if widthNbConforme %}<span style="width:{{ widthNbConforme }}%" class="bar-conforme tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.conforme'|trans }} {{ traitement.conformiteTraitement.nbConformes }}</span></span>{% endif %}
+                                            {% if widthnbNonConformesMineures %}<span style="width:{{ widthnbNonConformesMineures }}%" class="bar-non-conforme-mineure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.minor_conforme'|trans }} {{ traitement.conformiteTraitement.nbNonConformesMineures }}</span></span>{% endif %}
+                                            {% if widthnbNonConformesMajeures %}<span style="width:{{ widthnbNonConformesMajeures }}%" class="bar-non-conforme-majeure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.major_conforme'|trans }} {{ traitement.conformiteTraitement.nbNonConformesMajeures }}</span></span>{% endif %}
+                                        </div>
+                                    </td>
+                                </tr>
+                            {% endif %}
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            {# AIPD #}
+            {% if traitement.conformiteTraitement is not null %}
+                {% set analyseImpact = traitement.conformiteTraitement.lastAnalyseImpact %}
+            {% endif %}
+            <div class="box box-solid box-primary">
+                <div class="box-header with-border"><h3 class="box-title" style="color: white">{{ 'registry.treatment.tab.last_aipd'|trans }}</h3></div>
+                <div class="box-body no-padding">
+                    <table role="presentation" class="table">
+                        <tbody>
                             <tr>
-                                <td>
-                                    <strong>{{ 'aipd.analyse_impact.list.date_validation'|trans }}</strong>
+                                <td style="width: 35%">
+                                    <strong>{{ 'aipd.treatment.label.last_aipd'|trans }}</strong>
                                 </td>
                                 <td>
-                                    {% if analyseImpact.isValidated %}
-                                        {{ analyseImpact.dateValidation|date('d/m/Y') }}
+                                    {% if traitement.conformiteTraitement is null %}
+                                        <i>{{ 'aipd.treatment.label.no_conformite_traitement'|trans }}</i>
+                                    {% elseif traitement.conformiteTraitement is not null and analyseImpact is null %}
+                                        <i>{{ 'aipd.treatment.label.no_aipd'|trans }}</i>
                                     {% else %}
-                                        {{ 'aipd.treatment.label.validation_in_progress'|trans }}
+                                        {{ analyseImpact.createdAt|date('d/m/Y') }}
                                     {% endif %}
                                 </td>
                             </tr>
-                        </table>
-                    </div>
+                            {% if traitement.conformiteTraitement is not null and analyseImpact is not null %}
+                                <tr>
+                                    <td>
+                                        <strong>{{ 'aipd.treatment.label.avis_aipd'|trans }}</strong>
+                                    </td>
+                                    <td>
+                                        {% set labelAipdColor = "label-default" %}
+                                        {% if analyseImpact.statut == "defavorable" %}
+                                            {% set labelAipdColor = "label-danger" %}
+                                        {% elseif analyseImpact.statut == "favorable_reserve" %}
+                                            {% set labelAipdColor = "label-warning" %}
+                                        {% elseif analyseImpact.statut == "favorable" %}
+                                            {% set labelAipdColor = "label-success" %}
+                                        {% endif %}
+                                        {% set statut = analyseImpact.statut %}
+                                        {% set labelStatut = "aipd.analyse_impact.values." ~ traitement.conformiteTraitement.lastAnalyseImpact.statut %}
+                                        <span class="label {{ labelAipdColor }}" style="display: inline-block;">
+                                            {{ labelStatut|trans}}
+                                        </span>
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <td>
+                                        <strong>{{ 'aipd.analyse_impact.list.date_validation'|trans }}</strong>
+                                    </td>
+                                    <td>
+                                        {% if analyseImpact.isValidated %}
+                                            {{ analyseImpact.dateValidation|date('d/m/Y') }}
+                                        {% else %}
+                                            {{ 'aipd.treatment.label.validation_in_progress'|trans }}
+                                        {% endif %}
+                                    </td>
+                                </tr>
+                            {% endif %}
+                        </tbody>
+                    </table>
                 </div>
-            {% endif %}
+            </div>
         {% endif %}
 
         {# HISTORIC #}
@@ -1584,7 +1618,7 @@
     /* The format of the data used by the chart is [[],[]] but here we use only 1 set of data */
     domainesDatas = [domainesDatas];
 
-    var mesuresLabels = ['Disponibilité','Intégrité', 'Confidentialité'];
+    var mesuresLabels = [];
     var mesuresDatas = [];
     var risquesLabels = [];
     var risquesDataSet1 = [];
diff --git a/templates/Aipd/Analyse_impact/validation.html.twig b/templates/Aipd/Analyse_impact/validation.html.twig
index e0abdb54ea0be090a71d5e7d2c2f132a83146916..9966a84eeb52ccba730db36bc32c27cdea4055cf 100644
--- a/templates/Aipd/Analyse_impact/validation.html.twig
+++ b/templates/Aipd/Analyse_impact/validation.html.twig
@@ -1,12 +1,10 @@
 {% import _self as formMacros %}
 {% macro printFormAvisLine(formAvis, firstColumnText) %}
     <tr>
-
-        <td>{{ firstColumnText }}</td>
+        <th scope="row">{{ firstColumnText }}</th>
         <td>{{ form_widget(formAvis.date) }}</td>
         <td>{{ form_widget(formAvis.reponse) }}</td>
         <td>{{ form_widget(formAvis.detail) }}</td>
-
     </tr>
 {% endmacro %}
 
@@ -51,6 +49,7 @@
             <div class="box box-solid">
                 <div class="box-body">
                     <table class="table table-bordered">
+                        <caption class="sr-only">{{ 'aipd.analyse_impact.label.review_user'|trans }}</caption>
                         <thead>
                             <tr>
                                 <th scope="col">{{ 'aipd.analyse_impact.label.review_user'|trans }}</th>
diff --git a/templates/Aipd/Mesure_protection/list.html.twig b/templates/Aipd/Mesure_protection/list.html.twig
index 8522efcbd8e4d3ca67a313d4409cbb24bb7a45a7..f672b4fec3ff4303576a193f87fd5e5011c27c03 100644
--- a/templates/Aipd/Mesure_protection/list.html.twig
+++ b/templates/Aipd/Mesure_protection/list.html.twig
@@ -24,15 +24,11 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                {% if is_granted('ROLE_USER') %}
-                    <a href="{{ path('aipd_mesure_protection_create') }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-plus"></i>
-                        {{ 'aipd.mesure_protection.action.new'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+        <div class="col-xs-12 mb-1">
+            <a href="{{ path('aipd_mesure_protection_create') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-plus"></i>
+                {{ 'aipd.mesure_protection.action.new'|trans }}
+            </a>
         </div>
     </div>
     <div class="row">
@@ -40,40 +36,42 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'aipd.mesure_protection.title.list'|trans }}</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nom" placeholder="{{ 'aipd.mesure_protection.label.name'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nomCourt" placeholder="{{ 'aipd.mesure_protection.label.short_name'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_detail" placeholder="{{ 'aipd.mesure_protection.label.detail'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_poids_vraisemblance" placeholder="{{ 'aipd.mesure_protection.label.vraisemblance'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_poids_gravite" placeholder="{{ 'aipd.mesure_protection.label.gravite'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                        </tr>
-                        <tr>
-                            <th scope="col">{{ 'aipd.mesure_protection.label.name'|trans }}</th>
-                            <th scope="col">{{ 'aipd.mesure_protection.label.short_name'|trans }}</th>
-                            <th scope="col">{{ 'aipd.mesure_protection.label.detail'|trans }}</th>
-                            <th scope="col">{{ 'aipd.mesure_protection.label.vraisemblance'|trans }}</th>
-                            <th scope="col">{{ 'aipd.mesure_protection.label.gravite'|trans }}</th>
-                            <th scope="col">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                        </tr>
+                            <tr>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nom" placeholder="{{ 'aipd.mesure_protection.label.name'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nomCourt" placeholder="{{ 'aipd.mesure_protection.label.short_name'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_detail" placeholder="{{ 'aipd.mesure_protection.label.detail'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_poids_vraisemblance" placeholder="{{ 'aipd.mesure_protection.label.vraisemblance'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_poids_gravite" placeholder="{{ 'aipd.mesure_protection.label.gravite'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col">{{ 'aipd.mesure_protection.label.name'|trans }}</th>
+                                <th scope="col">{{ 'aipd.mesure_protection.label.short_name'|trans }}</th>
+                                <th scope="col">{{ 'aipd.mesure_protection.label.detail'|trans }}</th>
+                                <th scope="col">{{ 'aipd.mesure_protection.label.vraisemblance'|trans }}</th>
+                                <th scope="col">{{ 'aipd.mesure_protection.label.gravite'|trans }}</th>
+                                <th scope="col">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                            </tr>
                         </thead>
                     </table>
                 </div>
diff --git a/templates/Aipd/Modele_analyse/_form.html.twig b/templates/Aipd/Modele_analyse/_form.html.twig
index 208724d23406213451b0e6faf9327def12a4fbbc..3127ea6bfd5068a6608a2f04240d27b98694d282 100644
--- a/templates/Aipd/Modele_analyse/_form.html.twig
+++ b/templates/Aipd/Modele_analyse/_form.html.twig
@@ -78,6 +78,7 @@
                 <div class="box-header with-border"><h3 class="box-title">{{ 'aipd.modele_analyse.tab.contexte'|trans }}</h3></div>
                 <div class="box-body">
                     <table class="table">
+                        <caption class="sr-only">{{ 'aipd.modele_analyse.tab.contexte'|trans }}</caption>
                         <thead>
                             <tr>
                                 <th scope="col" class="required">{{ 'aipd.modele_analyse.label.contexte'|trans }}</th>
@@ -137,20 +138,21 @@
                             <i aria-hidden="true" class="fa fa-plus"></i> {{ 'aipd.modele_analyse.action.add_scenario'|trans }}
                         </button>
                         <table id="js-table-collection" class="table table-bordered">
-                          <thead>
-                              <tr>
-                                  <th scope="col" class="required">{{ 'aipd.modele_analyse.label.scenario'|trans }}</th>
-                                  <th scope="col">{{ 'aipd.modele_analyse.label.linked_mesure'|trans }}</th>
-                                  <th scope="col" style="max-width: 40px">{{ 'aipd.modele_analyse.label.show'|trans }}</th>
-                                  <th scope="col" title="{{ 'aipd.modele_analyse.label.title_disponibility'|trans }}" style="max-width: 30px">{{ 'aipd.modele_analyse.label.disponibility'|trans }}</th>
-                                  <th scope="col" title="{{ 'aipd.modele_analyse.label.title_integrity'|trans }}" style="max-width: 30px">{{ 'aipd.modele_analyse.label.integrity'|trans }}</th>
-                                  <th scope="col" title="{{ 'aipd.modele_analyse.label.title_confidentiality'|trans }}" style="max-width: 30px">{{ 'aipd.modele_analyse.label.confidentiality'|trans }}</th>
-                                  <th scope="col">{{ 'aipd.modele_analyse.label.vraisemblance'|trans }}</th>
-                                  <th scope="col">{{ 'aipd.modele_analyse.label.gravite'|trans }}</th>
-                                  <th scope="col">{{ 'aipd.modele_analyse.label.precision'|trans }}</th>
-                                  <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                              </tr>
-                          </thead>
+                            <caption class="sr-only">{{ 'aipd.modele_analyse.tab.risk'|trans }}</caption>
+                            <thead>
+                                <tr>
+                                    <th scope="col" class="required">{{ 'aipd.modele_analyse.label.scenario'|trans }}</th>
+                                    <th scope="col">{{ 'aipd.modele_analyse.label.linked_mesure'|trans }}</th>
+                                    <th scope="col" style="max-width: 40px">{{ 'aipd.modele_analyse.label.show'|trans }}</th>
+                                    <th scope="col" title="{{ 'aipd.modele_analyse.label.title_disponibility'|trans }}" style="max-width: 30px">{{ 'aipd.modele_analyse.label.disponibility'|trans }}</th>
+                                    <th scope="col" title="{{ 'aipd.modele_analyse.label.title_integrity'|trans }}" style="max-width: 30px">{{ 'aipd.modele_analyse.label.integrity'|trans }}</th>
+                                    <th scope="col" title="{{ 'aipd.modele_analyse.label.title_confidentiality'|trans }}" style="max-width: 30px">{{ 'aipd.modele_analyse.label.confidentiality'|trans }}</th>
+                                    <th scope="col">{{ 'aipd.modele_analyse.label.vraisemblance'|trans }}</th>
+                                    <th scope="col">{{ 'aipd.modele_analyse.label.gravite'|trans }}</th>
+                                    <th scope="col">{{ 'aipd.modele_analyse.label.precision'|trans }}</th>
+                                    <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                                </tr>
+                            </thead>
                             {% for scenarioMenace in form.scenarioMenaces %}
                                 {{ formMacros.printScenariosMenaces(scenarioMenace) }}
                             {% endfor %}
diff --git a/templates/Aipd/Modele_analyse/_form_question_conformite.html.twig b/templates/Aipd/Modele_analyse/_form_question_conformite.html.twig
index 89bda6bbfecb4641705029e5a95ecad7580f948f..400bc60bf80bdaaa6b43e87b01ae913b7eeb90a5 100644
--- a/templates/Aipd/Modele_analyse/_form_question_conformite.html.twig
+++ b/templates/Aipd/Modele_analyse/_form_question_conformite.html.twig
@@ -1,4 +1,5 @@
 <table class="table">
+    <caption class="sr-only">{{ 'registry.conformite_traitement.tab.evaluate'|trans }}</caption>
     <thead>
         <tr>
             <th scope="col">{{ 'registry.conformite_traitement.label.question'|trans }}</th>
@@ -11,7 +12,7 @@
     <tbody>
         {% for question in form.questionConformites|sort((a, b) => a.vars.value.position > b.vars.value.position) %}
             <tr>
-                <td>{{ question.vars.value.question }}</td>
+                <th scope="row">{{ question.vars.value.question }}</th>
                 <td>{{ form_widget(question.isJustificationObligatoire) }}</td>
                 <td>{{ form_widget(question.texteConformite) }}</td>
                 <td>{{ form_widget(question.texteNonConformiteMineure ) }}</td>
diff --git a/templates/Aipd/Modele_analyse/list.html.twig b/templates/Aipd/Modele_analyse/list.html.twig
index 9bb955e76ef6d0a55ab02e97761e163098fefa69..bea0749ea91ca8a6216919a29803898a0f7149b9 100644
--- a/templates/Aipd/Modele_analyse/list.html.twig
+++ b/templates/Aipd/Modele_analyse/list.html.twig
@@ -23,19 +23,15 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                {% if is_granted('ROLE_USER') %}
-                    <a href="{{ path('aipd_modele_analyse_create') }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-plus"></i>
-                        {{ 'aipd.modele_analyse.action.new'|trans }}
-                    </a>
-                    <a href="{{ path('aipd_modele_analyse_import') }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-file-import"></i>
-                        {{ 'aipd.modele_analyse.action.import'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+        <div class="col-xs-12 mb-1">
+            <a href="{{ path('aipd_modele_analyse_create') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-plus"></i>
+                {{ 'aipd.modele_analyse.action.new'|trans }}
+            </a>
+            <a href="{{ path('aipd_modele_analyse_import') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-file-import"></i>
+                {{ 'aipd.modele_analyse.action.import'|trans }}
+            </a>
         </div>
     </div>
 
@@ -44,6 +40,7 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'aipd.modele_analyse.title.list'|trans }}</caption>
                         <thead>
                             <tr>
                                 <th scope="col">
@@ -58,7 +55,7 @@
                                 <th scope="col" style="min-width:130px;position:relative;">
                                     <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
                                 </th>
-                                <th scope="col"></th>
+                                <th scope="col"></th> <!-- Actions -->
                             </tr>
                             <tr>
                                 <th scope="col">{{ 'aipd.modele_analyse.label.name'|trans }}</th>
diff --git a/templates/Documentation/Category/list.html.twig b/templates/Documentation/Category/list.html.twig
index f81f876f59b7496bf538784c5fb4a8f2be35c884..e37b166cee9442c05a764d2dcee0d0f2fc694717 100644
--- a/templates/Documentation/Category/list.html.twig
+++ b/templates/Documentation/Category/list.html.twig
@@ -25,9 +25,8 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                {% if is_granted('ROLE_ADMIN') %}
+        <div class="col-xs-12 mb-1">
+            <div>
                 <a href="{{ path('documentation_category_create') }}" class="btn btn-default">
                     <i aria-hidden="true" class="fa fa-plus"></i>
                     {{ 'documentation.category.action.new'|trans }}
@@ -36,7 +35,6 @@
                     <i aria-hidden="true" class="fa fa-file"></i>
                     {{ 'documentation.category.action.files'|trans }}
                 </a>
-                {% endif %}
             </div>
         </div>
     </div>
@@ -44,8 +42,8 @@
         <div class="col-xs-12">
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
-                {% if is_granted('ROLE_ADMIN') %}
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'documentation.category.title.subtitle'|trans }}</caption>
                         <thead>
                             <tr>
                                 <th scope="col">{{ 'documentation.category.label.name'|trans }}</th>
@@ -54,33 +52,32 @@
                             </tr>
                         </thead>
                         <tbody>
-                        {% for object in objects %}
-                        <tr>
-                            <td>
-                                {% if object.documents|length > 0 %}
-                                    <a href="{{ path('documentation_document_index') }}?category={{ object.id }}">{{ object.name }}</a>
-                                {% else %}
-                                    {{ object.name }}
-                                {% endif %}
-                            </td>
-                            <td>{{ object.documents|length }}</td>
-                            <td>
-                                {% if object.systeme == 0 %}
-                                    <a href="{{ path('documentation_category_edit', { 'id': object.id }) }}">
-                                        <i aria-hidden="true" class="fa fa-pencil"></i>
-                                        {{ 'global.action.edit'|trans }}
-                                    </a>
-                                    <a href="{{ path('documentation_category_delete', { 'id': object.id }) }}">
-                                        <i aria-hidden="true" class="fa fa-trash"></i>
-                                        {{ 'global.action.delete'|trans }}
-                                    </a>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        {% endfor %}
+                            {% for object in objects %}
+                                <tr>
+                                    <td>
+                                        {% if object.documents|length > 0 %}
+                                            <a href="{{ path('documentation_document_index') }}?category={{ object.id }}">{{ object.name }}</a>
+                                        {% else %}
+                                            {{ object.name }}
+                                        {% endif %}
+                                    </td>
+                                    <td>{{ object.documents|length }}</td>
+                                    <td>
+                                        {% if object.systeme == 0 %}
+                                            <a href="{{ path('documentation_category_edit', { 'id': object.id }) }}">
+                                                <i aria-hidden="true" class="fa fa-pencil"></i>
+                                                {{ 'global.action.edit'|trans }}
+                                            </a>
+                                            <a href="{{ path('documentation_category_delete', { 'id': object.id }) }}">
+                                                <i aria-hidden="true" class="fa fa-trash"></i>
+                                                {{ 'global.action.delete'|trans }}
+                                            </a>
+                                        {% endif %}
+                                    </td>
+                                </tr>
+                            {% endfor %}
                         </tbody>
                     </table>
-                {% endif %}
                 </div>
             </div>
         </div>
diff --git a/templates/Documentation/Document/_form.html.twig b/templates/Documentation/Document/_form.html.twig
index 77a81e948c43c424e42877ceebbef4764eb93084..1aa2fa976ef3ea5ee958ee52c4c3945c8000fb3d 100644
--- a/templates/Documentation/Document/_form.html.twig
+++ b/templates/Documentation/Document/_form.html.twig
@@ -30,17 +30,17 @@
                 </div>
                     {% endif %}
                 {{ form_row(form.uploadedFile) }}
-                <div class="callout callout-default text-muted">
+                <p aria-describedby="document_uploadedFile" class="callout callout-default text-muted">
                     {{ 'documentation.document.form.help.file' | trans({'max_size': app_max_upload_size}) }}
-                </div>
+                </p>
             {% endif %}
             {{ form_row(form.thumbUploadedFile) }}
-            <div class="callout callout-default text-muted">
+            <p aria-describedby="document_thumbUploadedFile" class="callout callout-default text-muted">
                 {{ 'documentation.document.form.help.thumbnail' | trans({'max_size': app_max_upload_size}) }}
-            </div>
+            </p>
             {% if object.thumbUrl %}
                 <div id="thumbnail-group">
-                    <img src="{{ object.thumbUrl }}" height="100"/>
+                    <img alt="" src="{{ object.thumbUrl }}" height="100"/>
                     <button id="remove-thumb" class="btn btn-link">
                         <i aria-hidden="true" class="fa fa-trash"></i>
                         {{ 'documentation.document.action.removeThumb'|trans }}
@@ -55,25 +55,23 @@
 
         <div class="box box-solid box-default">
             <div class="box-header with-border">
-                <h3 class="box-title">
-                    {{ 'global.tab.history'|trans }}
-                </h3>
+                <h3 class="box-title">{{ 'global.tab.history'|trans }}</h3>
             </div>
             <div class="box-body no-padding">
                 <table role="presentation" class="table">
                     <tbody>
-                    {% if form.vars.value.createdAt is defined and form.vars.value.createdAt %}
-                    <tr>
-                        <td><strong>{{ 'global.label.created_at'|trans }}</strong></td>
-                        <td>{{ form.vars.value.createdAt ? form.vars.value.createdAt.format('d/m/Y H:i') : '' }}</td>
-                    </tr>
-                    {% endif %}
-                    {% if form.vars.value.updatedAt is defined and form.vars.value.updatedAt %}
-                    <tr>
-                        <td><strong>{{ 'global.label.updated_at'|trans }}</strong></td>
-                        <td>{{ form.vars.value.updatedAt ? form.vars.value.updatedAt.format('d/m/Y H:i') : '' }}</td>
-                    </tr>
-                    {% endif %}
+                        {% if form.vars.value.createdAt is defined and form.vars.value.createdAt %}
+                            <tr>
+                                <td><strong>{{ 'global.label.created_at'|trans }}</strong></td>
+                                <td>{{ form.vars.value.createdAt ? form.vars.value.createdAt.format('d/m/Y H:i') : '' }}</td>
+                            </tr>
+                        {% endif %}
+                        {% if form.vars.value.updatedAt is defined and form.vars.value.updatedAt %}
+                            <tr>
+                                <td><strong>{{ 'global.label.updated_at'|trans }}</strong></td>
+                                <td>{{ form.vars.value.updatedAt ? form.vars.value.updatedAt.format('d/m/Y H:i') : '' }}</td>
+                            </tr>
+                        {% endif %}
                     </tbody>
                 </table>
             </div>
diff --git a/templates/Documentation/Document/grid.html.twig b/templates/Documentation/Document/grid.html.twig
index e7ebb95f8d6da3a20cb754b9ce7f8be868d77ebb..2b15f47558c8fb447aaff2969cb73622257aa88a 100644
--- a/templates/Documentation/Document/grid.html.twig
+++ b/templates/Documentation/Document/grid.html.twig
@@ -70,30 +70,25 @@
 
 {% block body %}
     <div class="row">
-            <div class="col-xs-12">
-                <div class="mb-1">
-                    {% if is_granted('ROLE_ADMIN') %}
-                        <div class="btn-group">
-                            <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
-                                <i aria-hidden="true" class="fa fa-plus"></i>
-                                {{ 'documentation.document.action.new'|trans }}
-                                <span class="caret"></span>
-                            </button>
-                            <ul class="dropdown-menu">
-                                <li><a href="{{ path('documentation_document_create') }}">{{ 'documentation.document.action.file'|trans }}</a></li>
-                                <li><a href="{{ path('documentation_document_create', {isLink: '1'}) }}">{{ 'documentation.document.action.url'|trans }}</a></li>
-                            </ul>
-                        </div>
-                    {% endif %}
-                    {# Uniquement pour les DPO #}
-                    {% if is_granted('ROLE_ADMIN') %}
-                        <a href="{{ path('documentation_category_list') }}" class="btn btn-default">
-                            <i aria-hidden="true" class="fas fa-tag"></i>
-                            {{ 'documentation.category.action.list'|trans }}
-                        </a>
-                    {% endif %}
+        <div class="col-xs-12 mb-1">
+            {% if is_granted('ROLE_ADMIN') %}
+                <div class="btn-group">
+                    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+                        <i aria-hidden="true" class="fa fa-plus"></i>
+                        {{ 'documentation.document.action.new'|trans }}
+                        <span class="caret"></span>
+                    </button>
+                    <ul class="dropdown-menu">
+                        <li><a href="{{ path('documentation_document_create') }}">{{ 'documentation.document.action.file'|trans }}</a></li>
+                        <li><a href="{{ path('documentation_document_create', {isLink: '1'}) }}">{{ 'documentation.document.action.url'|trans }}</a></li>
+                    </ul>
                 </div>
-            </div>
+                <a href="{{ path('documentation_category_list') }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fas fa-tag"></i>
+                    {{ 'documentation.category.action.list'|trans }}
+                </a>
+            {% endif %}
+        </div>
     </div>
 
     <div class="row">
@@ -302,9 +297,9 @@
                     </div>
                 </div>
                 <div class="box-body">
-                    <div class="callout callout-default text-muted">
+                    <p class="callout callout-default text-muted">
                         {{ 'documentation.document.list.help'|trans }}
-                    </div>
+                    </p>
                 </div>
                 <!-- box-footer -->
             </div>
@@ -369,25 +364,25 @@
             "pageLength": app_admin_datable_default_page_length,
             order: [[8,'desc'],[5,'desc']],
             language: {
-                sProcessing:     "Traitement en cours...",
+                sProcessing:     "<p class='no-margin'>Traitement en cours...</p>",
                 sSearch:         "Rechercher&nbsp;:",
-                sLengthMenu:     "Afficher _MENU_ &eacute;l&eacute;ments",
-                sInfo:           "Affichage de l'&eacute;l&eacute;ment _START_ &agrave; _END_ sur _TOTAL_ &eacute;l&eacute;ments",
-                sInfoEmpty:      "Affichage de l'&eacute;l&eacute;ment 0 &agrave; 0 sur 0 &eacute;l&eacute;ment",
-                sInfoFiltered:   "(filtr&eacute; de _MAX_ &eacute;l&eacute;ments au total)",
+                sLengthMenu:     "Afficher _MENU_ éléments",
+                sInfo:           "<p>Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments</p>",
+                sInfoEmpty:      "<p>Affichage de l'élément 0 à 0 sur 0 élément</p>",
+                sInfoFiltered:   "<p style='padding-left: 3px;'>(filtré de _MAX_ éléments au total)</p>",
                 sInfoPostFix:    "",
-                sLoadingRecords: "Chargement en cours...",
-                sZeroRecords:    "Aucun &eacute;l&eacute;ment &agrave; afficher",
-                sEmptyTable:     "Aucune donn&eacute;e disponible dans le tableau",
+                sLoadingRecords: "<p class='no-margin'>Chargement en cours...</p>",
+                sZeroRecords:    "Aucun élément à afficher",
+                sEmptyTable:     "Aucune donnée disponible dans le tableau",
                 oPaginate: {
                     sFirst:      "Premier",
-                    sPrevious:   "Pr&eacute;c&eacute;dent",
+                    sPrevious:   "Précédent",
                     sNext:       "Suivant",
                     sLast:       "Dernier"
                 },
                 oAria: {
-                    sSortAscending:  ": activer pour trier la colonne par ordre croissant",
-                    sSortDescending: ": activer pour trier la colonne par ordre d&eacute;croissant"
+                    sSortAscending:  " : activer pour trier la colonne par ordre croissant",
+                    sSortDescending: " : activer pour trier la colonne par ordre décroissant"
                 },
                 select: {
                     rows: {
@@ -452,7 +447,6 @@
 
             $('#search_type').off('change');
             $('#search_type').change(function(){
-                console.log($(this).val())
                 oTable.column('3').search($(this).val()).draw() ;
             });
 
@@ -498,7 +492,6 @@
 
             $('body').on('click', '.sharelink', function() {
                 var el = $(this)
-                console.log(el, el.data('id'))
                 setTimeout(() => { $('.linkDoc').val(el.data('id')); }, 200);
                 $('.copyLink').hide();
             })
diff --git a/templates/Documentation/Document/list.html.twig b/templates/Documentation/Document/list.html.twig
index dc6df930d0fc5bf905705cd8c8a11321621d36ec..c3d52ed22836931f002faeb8b9c8bc1cc23606b1 100644
--- a/templates/Documentation/Document/list.html.twig
+++ b/templates/Documentation/Document/list.html.twig
@@ -33,33 +33,24 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                {% if is_granted('ROLE_REFERENT') %}
-                    <div class="btn-group">
-                        {# Fix https://gitlab.adullact.net/soluris/madis/-/issues/535 #}
-                        {% if is_granted('ROLE_ADMIN') %}
-                        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
-                            <i aria-hidden="true" class="fa fa-plus"></i>
-                            {{ 'documentation.document.action.new'|trans }}
-                            <span class="caret"></span>
-                        </button>
-                        {% endif %}
-                        <div class="dt-button-background" style=""></div>
-                        <ul class="dropdown-menu">
-                            <li><a href="{{ path('documentation_document_create') }}">{{ 'documentation.document.action.file'|trans }}</a></li>
-                            <li><a href="{{ path('documentation_document_create', {isLink: '1'}) }}">{{ 'documentation.document.action.url'|trans }}</a></li>
-                        </ul>
-                    </div>
-                {% endif %}
-                {# Uniquement pour les DPO #}
-                {% if is_granted('ROLE_ADMIN') %}
-                    <a href="{{ path('documentation_category_list') }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fas fa-tag"></i>
-                        {{ 'documentation.category.action.list'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+        <div class="col-xs-12 mb-1">
+            {% if is_granted('ROLE_ADMIN') %}
+                <div class="btn-group">
+                    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+                        <i aria-hidden="true" class="fa fa-plus"></i>
+                        {{ 'documentation.document.action.new'|trans }}
+                        <span class="caret"></span>
+                    </button>
+                    <ul class="dropdown-menu">
+                        <li><a href="{{ path('documentation_document_create') }}">{{ 'documentation.document.action.file'|trans }}</a></li>
+                        <li><a href="{{ path('documentation_document_create', {isLink: '1'}) }}">{{ 'documentation.document.action.url'|trans }}</a></li>
+                    </ul>
+                </div>
+                <a href="{{ path('documentation_category_list') }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fas fa-tag"></i>
+                    {{ 'documentation.category.action.list'|trans }}
+                </a>
+            {% endif %}
         </div>
     </div>
 
@@ -77,6 +68,7 @@
                         {% endif %}
                     </div>
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">Liste des documents</caption>
                         <thead>
                             <tr>
                                 <th scope="col"></th>
@@ -118,7 +110,7 @@
                                 <th scope="col" style="min-width:130px;position:relative;">
                                     <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
                                 </th>
-                                <th scope="col"></th>
+                                <th scope="col"></th> <!-- Actions -->
                             </tr>
 
                             <tr>
@@ -135,73 +127,73 @@
 
                         </thead>
                         <tbody>
-                        {% for object in objects %}
-                        <tr>
-                            <td class="text-center">
-                                {%  if object.pinned == 1 %}
-                                    <span style="visibility: hidden">{{ object.pinned }}</span>
-                                    <i aria-hidden="true" class="fas fa-thumbtack"></i>
-                                {% endif %}
-                            </td>
-                            <td class="text-center favorite">
-                                <a href="{{ path('documentation_document_favorite', { 'id': object.id, 'back': app.request.uri }) }}" style="color:#f39c12;">
-                                    {% if object.favoritedUsers |filter(f => f.id == app.user.id)|length > 0 %}
-                                        1
-                                    {% else %}
-                                        0
-                                    {% endif %}
-                                </a>
-                            </td>
-                            <td>
-                                {% if object.typeName == "Vidéo" %}
-                                    <i aria-hidden="true" class="far fa-file-video"></i>
-                                {% elseif object.typeName == "PDF" %}
-                                    <i aria-hidden="true" class="far fa-file-pdf"></i>
-                                {% elseif object.typeName == "Document" %}
-                                    <i aria-hidden="true" class="far fa-file-word"></i>
-                                {% elseif object.typeName == "Lien" %}
-                                    <i aria-hidden="true" class="fas fa-link"></i>
-                                {% elseif object.typeName == "Image" %}
-                                    <i aria-hidden="true" class="fas fa-image"></i>
-                                {% elseif object.typeName == "PowerPoint" %}
-                                    <i aria-hidden="true" class="fas fa-file-powerpoint"></i>
-                                {% elseif object.typeName == "Excel" %}
-                                    <i aria-hidden="true" class="fas fa-file-excel"></i>
-                                {% elseif object.typeName == "Audio" %}
-                                    <i aria-hidden="true" class="fas fa-file-audio"></i>
-                                {% endif %}
-                                {{ object.typeName }}
-                            </td>
-                            <td>
-                                {{ object.size }}
-                            </td>
-                            <td><a href="{{ object.url }}" target="_blank">{{ object.name }}</a></td>
-                            <td>
-                                {{ object.categories|map(c => "#{c.name}") | join(', ') }}
-                            </td>
-                            <td>{{ object.createdAt|date('d/m/Y H:i') }}</td>
-                            <td>{{ object.updatedAt|date('d/m/Y H:i') }}</td>
-
-                            <td>
-                                {% if is_granted('ROLE_ADMIN') %}
-                                    <a href="{{ path('documentation_document_edit', { 'id': object.id }) }}">
-                                        <i aria-hidden="true" class="fa fa-pencil"></i>&nbsp;{{ 'global.action.edit'|trans }}
-                                    </a>
-                                    <a href="{{ path('documentation_document_delete', { 'id': object.id }) }}">
-                                        <i aria-hidden="true" class="fa fa-trash"></i>&nbsp;{{ 'global.action.delete'|trans }}
-                                    </a>
-                                    <a class="sharelink" href='#' data-id="{{ url('documentation_document_share', {id: object.id}) }}" data-toggle="modal" data-target="#shareModal">
-                                        <i aria-hidden="true" class="fa fa-share"></i>&nbsp;{{ 'global.action.share'|trans }}
-                                    </a>
-                                {% endif %}
-                                {% if is_granted('ROLE_REFERENT') and not is_granted('ROLE_ADMIN') %}
-                                    <a class="sharelink" href='#' data-id="{{ url('documentation_document_share', {id: object.id}) }}" data-toggle="modal" data-target="#shareModal">
-                                        <i aria-hidden="true" class="fa fa-share"></i>&nbsp;{{ 'global.action.share'|trans }}
-                                    </a>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        {% endfor %}
+                            {% for object in objects %}
+                                <tr>
+                                    <td class="text-center">
+                                        {%  if object.pinned == 1 %}
+                                            <span style="visibility: hidden">{{ object.pinned }}</span>
+                                            <i aria-hidden="true" class="fas fa-thumbtack"></i>
+                                        {% endif %}
+                                    </td>
+                                    <td class="text-center favorite">
+                                        <a href="{{ path('documentation_document_favorite', { 'id': object.id, 'back': app.request.uri }) }}" style="color:#f39c12;">
+                                            {% if object.favoritedUsers |filter(f => f.id == app.user.id)|length > 0 %}
+                                                1
+                                            {% else %}
+                                                0
+                                            {% endif %}
+                                        </a>
+                                    </td>
+                                    <td>
+                                        {% if object.typeName == "Vidéo" %}
+                                            <i aria-hidden="true" class="far fa-file-video"></i>
+                                        {% elseif object.typeName == "PDF" %}
+                                            <i aria-hidden="true" class="far fa-file-pdf"></i>
+                                        {% elseif object.typeName == "Document" %}
+                                            <i aria-hidden="true" class="far fa-file-word"></i>
+                                        {% elseif object.typeName == "Lien" %}
+                                            <i aria-hidden="true" class="fas fa-link"></i>
+                                        {% elseif object.typeName == "Image" %}
+                                            <i aria-hidden="true" class="fas fa-image"></i>
+                                        {% elseif object.typeName == "PowerPoint" %}
+                                            <i aria-hidden="true" class="fas fa-file-powerpoint"></i>
+                                        {% elseif object.typeName == "Excel" %}
+                                            <i aria-hidden="true" class="fas fa-file-excel"></i>
+                                        {% elseif object.typeName == "Audio" %}
+                                            <i aria-hidden="true" class="fas fa-file-audio"></i>
+                                        {% endif %}
+                                        {{ object.typeName }}
+                                    </td>
+                                    <td>
+                                        {{ object.size }}
+                                    </td>
+                                    <td><a href="{{ object.url }}" target="_blank">{{ object.name }}</a></td>
+                                    <td>
+                                        {{ object.categories|map(c => "#{c.name}") | join(', ') }}
+                                    </td>
+                                    <td>{{ object.createdAt|date('d/m/Y H:i') }}</td>
+                                    <td>{{ object.updatedAt|date('d/m/Y H:i') }}</td>
+
+                                    <td>
+                                        {% if is_granted('ROLE_ADMIN') %}
+                                            <a href="{{ path('documentation_document_edit', { 'id': object.id }) }}">
+                                                <i aria-hidden="true" class="fa fa-pencil"></i>&nbsp;{{ 'global.action.edit'|trans }}
+                                            </a>
+                                            <a href="{{ path('documentation_document_delete', { 'id': object.id }) }}">
+                                                <i aria-hidden="true" class="fa fa-trash"></i>&nbsp;{{ 'global.action.delete'|trans }}
+                                            </a>
+                                            <a class="sharelink" href='#' data-id="{{ url('documentation_document_share', {id: object.id}) }}" data-toggle="modal" data-target="#shareModal">
+                                                <i aria-hidden="true" class="fa fa-share"></i>&nbsp;{{ 'global.action.share'|trans }}
+                                            </a>
+                                        {% endif %}
+                                        {% if is_granted('ROLE_REFERENT') and not is_granted('ROLE_ADMIN') %}
+                                            <a class="sharelink" href='#' data-id="{{ url('documentation_document_share', {id: object.id}) }}" data-toggle="modal" data-target="#shareModal">
+                                                <i aria-hidden="true" class="fa fa-share"></i>&nbsp;{{ 'global.action.share'|trans }}
+                                            </a>
+                                        {% endif %}
+                                    </td>
+                                </tr>
+                            {% endfor %}
                         </tbody>
                     </table>
                 </div>
@@ -234,9 +226,9 @@
                     </div>
                 </div>
                 <div class="box-body">
-                    <div class="callout callout-default text-muted">
+                    <p class="callout callout-default text-muted">
                         {{ 'documentation.document.list.help'|trans }}
-                    </div>
+                    </p>
                 </div>
                 <!-- box-footer -->
             </div>
diff --git a/templates/Maturity/Referentiel/_form.html.twig b/templates/Maturity/Referentiel/_form.html.twig
index 2ea49de8c00a282c9bcdc4a76285cc7326d55fec..446f43659d69ae68acb414d096ebbf3339788c7b 100644
--- a/templates/Maturity/Referentiel/_form.html.twig
+++ b/templates/Maturity/Referentiel/_form.html.twig
@@ -25,10 +25,10 @@
             <div class="box-header" style="padding: 0 0 0 10px;display: flex;align-items: center;cursor: grab;">
                 {{ form_row(section.position) }}
                 {{ form_row(section.color) }}
-                <span style="flex-grow: 1;">
+                <h5 class="no-margin" style="flex-grow: 1;">
                     <i aria-hidden="true" class="fas fa-grip-vertical" style="padding-right: 2px"></i>
                     {{ index }}. {{ section.vars['value'] ? section.vars['value'].name : 'maturity.referentiel.title.new_section'|trans }}
-                </span>
+                </h5>
                 <div class="btn-group">
                     <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" style="border: none">
                         <i aria-hidden="true" class="fa fa-cog"></i> <span class="caret"></span>
diff --git a/templates/Maturity/Referentiel/_form_referentiel_question.html.twig b/templates/Maturity/Referentiel/_form_referentiel_question.html.twig
index 79918b3a6ee25e3f53e68d2c7756b61c57a7d52b..4767e9127c1a14a323a49e8c491b05901330507b 100644
--- a/templates/Maturity/Referentiel/_form_referentiel_question.html.twig
+++ b/templates/Maturity/Referentiel/_form_referentiel_question.html.twig
@@ -18,7 +18,7 @@
             {{ form_row(form.weight) }}
         </div>
         <a href="#" class="delete-question btn" aria-label="{{ 'global.action.delete'|trans }}"><i aria-hidden="true" class="fa fa-trash"></i></a>
-        <a href="#question_{{ form.parent.parent.position.vars['value'] }}_{{ question.position.vars['value'] }}" class="box-link btn" data-toggle="collapse"><i aria-hidden="true" class="fa fa-plus"></i></a>
+        <a aria-expanded="false" href="#question_{{ form.parent.parent.position.vars['value'] }}_{{ question.position.vars['value'] }}" class="box-link btn" data-toggle="collapse"><i aria-hidden="true" class="fa fa-plus"></i></a>
     </div>
 
     <div class="collapse box-body" id="question_{{ form.parent.parent.position.vars['value'] }}_{{ question.position.vars['value'] }}">
diff --git a/templates/Maturity/Referentiel/list.html.twig b/templates/Maturity/Referentiel/list.html.twig
index 95573eeedd3196079199b0e42c09c1f9c226422c..059f019da76ee90fbb079bdb215ca0d4cea12214 100644
--- a/templates/Maturity/Referentiel/list.html.twig
+++ b/templates/Maturity/Referentiel/list.html.twig
@@ -23,20 +23,16 @@
 
 {% block body %}
     <div class="row">
-            <div class="col-xs-12">
-                <div class="mb-1">
-                    {% if is_granted('ROLE_USER') %}
-                    <a href="{{ path('maturity_referentiel_create') }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-plus"></i>
-                        {{ 'maturity.referentiel.action.new'|trans }}
-                    </a>
-                    <a href="{{ path('maturity_referentiel_import') }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-file-import"></i>
-                        {{ 'maturity.referentiel.action.import'|trans }}
-                    </a>
-                    {% endif %}
-                </div>
-            </div>
+        <div class="col-xs-12 mb-1">
+            <a href="{{ path('maturity_referentiel_create') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-plus"></i>
+                {{ 'maturity.referentiel.action.new'|trans }}
+            </a>
+            <a href="{{ path('maturity_referentiel_import') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-file-import"></i>
+                {{ 'maturity.referentiel.action.import'|trans }}
+            </a>
+        </div>
     </div>
 
     <div class="row">
@@ -44,6 +40,7 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'maturity.referentiel.title.list'|trans }}</caption>
                         <thead>
                             <tr>
                                 <th scope="col">
@@ -58,6 +55,7 @@
                                 <th scope="col" style="min-width:130px;position:relative;">
                                     <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
                                 </th>
+                                <th scope="col"></th> <!-- Actions -->
                             </tr>
                             <tr>
                                 <th scope="col">{{ 'maturity.referentiel.list.name'|trans }}</th>
@@ -115,7 +113,6 @@
 
             $('#search_created_at').off('change');
             $('#search_created_at').change(function(){
-                console.log(oTable.column('2'));
                 oTable.column('2').search($(this).val()).draw();
             });
 
diff --git a/templates/Maturity/Survey/list.html.twig b/templates/Maturity/Survey/list.html.twig
index 6a594139e8be000f846b7438f02c48374791b59e..fd62cea1fff330a2ef1249ab9615ef24928b368e 100644
--- a/templates/Maturity/Survey/list.html.twig
+++ b/templates/Maturity/Survey/list.html.twig
@@ -23,21 +23,19 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                {% if is_granted('ROLE_USER') %}
+        <div class="col-xs-12 mb-1">
+            {% if is_granted('ROLE_USER') %}
                 <a href="{{ path('maturity_survey_start') }}" class="btn btn-default">
                     <i aria-hidden="true" class="fa fa-plus"></i>
                     {{ 'maturity.survey.action.new'|trans }}
                 </a>
-                {% endif %}
-                {% if category and category.documents|length > 0 %}
-                    <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
-                        <i aria-hidden="true" class="fa fa-circle-info"></i>
-                        {{ 'global.action.documentation'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+            {% endif %}
+            {% if category and category.documents|length > 0 %}
+                <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
+                    <i aria-hidden="true" class="fa fa-circle-info"></i>
+                    {{ 'global.action.documentation'|trans }}
+                </a>
+            {% endif %}
         </div>
     </div>
 
@@ -46,41 +44,43 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'maturity.survey.title.list'|trans }}</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">
-                                <select class="form-control" id="search_referentiel" style="width: 100%;">
-                                    <option value="">{{ 'maturity.survey.label.referentiel'|trans }}</option>
-                                    {% for referentiel in referentiels %}
-                                        <option value="{{ referentiel }}">{{ referentiel }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            {% if is_granted('ROLE_REFERENT') %}
+                            <tr>
                                 <th scope="col">
-                                    <input class="form-control" type="text" id="search_collectivity" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    <select class="form-control" id="search_referentiel" style="width: 100%;">
+                                        <option value="">{{ 'maturity.survey.label.referentiel'|trans }}</option>
+                                        {% for referentiel in referentiels %}
+                                            <option value="{{ referentiel }}">{{ referentiel }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">
+                                        <input class="form-control" type="text" id="search_collectivity" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    </th>
+                                {% endif %}
+                                <th scope="col">
+                                    <input class="form-control" type='number' id="search_score" style="width: 100%;" placeholder="{{ 'maturity.survey.label.score'|trans }}">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
                                 </th>
-                            {% endif %}
-                            <th scope="col">
-                                <input class="form-control" type='number' id="search_score" style="width: 100%;" placeholder="{{ 'maturity.survey.label.score'|trans }}">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                        </tr>
-                        <tr>
-                            <th scope="col">{{ 'maturity.survey.label.referentiel'|trans }}</th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                                <th scope="col">{{ 'global.label.organization'|trans }}</th>
-                            {% endif %}
-                            <th scope="col">{{ 'maturity.survey.label.score'|trans }}</th>
-                            <th scope="col">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                        </tr>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col">{{ 'maturity.survey.label.referentiel'|trans }}</th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">{{ 'global.label.organization'|trans }}</th>
+                                {% endif %}
+                                <th scope="col">{{ 'maturity.survey.label.score'|trans }}</th>
+                                <th scope="col">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                            </tr>
                         </thead>
                     </table>
                 </div>
diff --git a/templates/Maturity/Survey/start.html.twig b/templates/Maturity/Survey/start.html.twig
index 98b2aae31d429cdae6d62f7e9262a5070f6a5fc0..0a042cfb8c563f3b6d8f285b842a66f8bc550ac8 100644
--- a/templates/Maturity/Survey/start.html.twig
+++ b/templates/Maturity/Survey/start.html.twig
@@ -40,15 +40,16 @@
                 <div class="box box-solid">
                     <div class="box-body">
                         <table id="table" class="table table-bordered table-hover">
+                            <caption class="sr-only">{{ 'maturity.referentiel.title.list'|trans }}</caption>
                             <thead>
-                            <tr>
-                                <th scope="col"><input class="form-control" type="text" id="search_name" style="width: 100%;" placeholder="{{ 'maturity.survey.label.referentiel'|trans }}"></th>
-                                <th scope="col"><input class="form-control" type="text" id="search_description" style="width: 100%;" placeholder="{{ 'maturity.survey.label.description'|trans }}"></th>
-                            </tr>
-                            <tr>
-                                <th scope="col">{{ 'maturity.survey.label.referentiel'|trans }}</th>
-                                <th scope="col">{{ 'maturity.survey.label.description'|trans }}</th>
-                            </tr>
+                                <tr>
+                                    <th scope="col"><input class="form-control" type="text" id="search_name" style="width: 100%;" placeholder="{{ 'maturity.survey.label.referentiel'|trans }}"></th>
+                                    <th scope="col"><input class="form-control" type="text" id="search_description" style="width: 100%;" placeholder="{{ 'maturity.survey.label.description'|trans }}"></th>
+                                </tr>
+                                <tr>
+                                    <th scope="col">{{ 'maturity.survey.label.referentiel'|trans }}</th>
+                                    <th scope="col">{{ 'maturity.survey.label.description'|trans }}</th>
+                                </tr>
                             </thead>
                         </table>
                     </div>
diff --git a/templates/Notification/Notification/box.html.twig b/templates/Notification/Notification/box.html.twig
index 08b8d23ec6aee31ffec73e7182865a04f81a5449..b3211652437f01ed6da34d773319778dcb35f0d6 100644
--- a/templates/Notification/Notification/box.html.twig
+++ b/templates/Notification/Notification/box.html.twig
@@ -14,7 +14,7 @@
     {% for notif in notifs|slice(0, maxNotifs) %}
         <li class="box-header with-border single-notification" style="padding: 0.8em;">
             <div class="row">
-                <div class="col-md-8" href="#">
+                <div class="col-md-8 notification-link-underline">
                     {{ notif | sentence | raw }}
 
                     <div class="text-muted">
@@ -25,7 +25,7 @@
                     </div>
                 </div>
                 <div class="col-md-4 text-center">
-                    <a  href="{{ path('notification_notification_mark_as_read', { 'id': notif.id }) }}" class="btn btn-block text-info" style="border-color: #31708f;background-color:white;">
+                    <a href="{{ path('notification_notification_mark_as_read', { 'id': notif.id }) }}" class="btn btn-block text-info" style="border-color: #31708f;background-color:white;">
                         <i aria-hidden="true" class="fas fa-clipboard-check"></i> {{ 'notifications.action.mark_as_read'|trans }}
                     </a>
                 </div>
diff --git a/templates/Notification/Notification/list.html.twig b/templates/Notification/Notification/list.html.twig
index 877013ecee4865c61bafe4c464382f28977ffa65..b02696c9dfcdada0844b9bddc83d7dec7b1d26a0 100644
--- a/templates/Notification/Notification/list.html.twig
+++ b/templates/Notification/Notification/list.html.twig
@@ -30,6 +30,7 @@
                         <a style="float:right;" href="{{ path('notification_notification_mark_as_read_all') }}">{{ 'notifications.action.mark_as_read_all'|trans }}</a>
                     </div>
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">Liste des notifications</caption>
                         <thead>
                             <tr>
                                 <th scope="col">
@@ -92,6 +93,7 @@
                                 <th scope="col">
                                     <input class="form-control" type="text" id="search_read_by" placeholder="{{ 'notifications.list.name'|trans }}" style="width: 100%;">
                                 </th>
+                                <th scope="col"></th> <!-- Actions -->
                                 {% endif %}
                             </tr>
                             <tr>
diff --git a/templates/Notification/Notification/list_admin.html.twig b/templates/Notification/Notification/list_admin.html.twig
index fa01572453492573707ed7fdfebfe48bea831382..c16ef945289d7f80211f1d4c43bc7a60e7e5c098 100644
--- a/templates/Notification/Notification/list_admin.html.twig
+++ b/templates/Notification/Notification/list_admin.html.twig
@@ -49,6 +49,7 @@
                         <a id="read-all" style="float:right;" href="{{ path('notification_notification_mark_as_read_all') }}">{{ 'notifications.action.mark_as_read_all'|trans }}</a>
                     </div>
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">Liste des notifications</caption>
                         <thead>
                             <tr>
                                 {% if is_granted('ROLE_ADMIN') %}
@@ -109,6 +110,7 @@
                                     <input class="form-control" type="text" id="search_read_by" placeholder="{{ 'notifications.list.name'|trans }}" style="width: 100%;">
                                 </th>
                                 {% endif %}
+                                <th scope="col"></th> <!-- Actions -->
                             </tr>
                             <tr>
                                 {% if is_granted('ROLE_ADMIN') %}
diff --git a/templates/Notification/Notification/list_user.html.twig b/templates/Notification/Notification/list_user.html.twig
index 1b064ecfadc6ccc3a82f6208c2b738449f14f18d..a8fc19c9b238454b7929b22d7d6b0cc8ea546a02 100644
--- a/templates/Notification/Notification/list_user.html.twig
+++ b/templates/Notification/Notification/list_user.html.twig
@@ -48,6 +48,7 @@
                         <a id="read-all" style="float:right;" href="{{ path('notification_notification_mark_as_read_all') }}">{{ 'notifications.action.mark_as_read_all'|trans }}</a>
                     </div>
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">Liste des notifications</caption>
                         <thead>
                             <tr>
                                 <th>
@@ -88,6 +89,7 @@
                                 <th>
                                     <input class="form-control" type="text" id="search_user_name" placeholder="{{ 'notifications.list.user'|trans }}" style="width: 100%;">
                                 </th>
+                                <th scope="col"></th> <!-- Actions -->
                             </tr>
                             <tr>
                                 <th>{{ 'notifications.list.module'|trans }}</th>
diff --git a/templates/Page/declaration.html.twig b/templates/Page/declaration.html.twig
index e84ed60fc733f48f634a9f8e22272c95c6e038e0..6729d5c6b3bd0d6cad33c2e65a06da389dc1778e 100644
--- a/templates/Page/declaration.html.twig
+++ b/templates/Page/declaration.html.twig
@@ -35,49 +35,37 @@
             <h2>Résultat des tests</h2>
             <p>L’audit de conformité réalisé par <a target="_blank" rel="noreferrer noopener" href="https://www.soluris.fr" title="Soluris (Nouvelle fenêtre)" aria-label="Soluris (Nouvelle fenêtre)">Soluris</a> révèle que {{ 'page.declaration.rate'|trans }} % des critères sont respectés et le taux moyen de conformité du service en ligne s’élève à {{ 'page.declaration.average_rate'|trans }} %.</p>
             <h3>Non conformité</h3>
-            <p>Les contenus listés ci-dessous ne sont pas accessibles pour les raisons suivantes.</p>
+            <p>De premiers correctifs ont permis de rendre certains contenus accessibles, de passer le niveau de conformité de 24,62 % à {{ 'page.declaration.rate'|trans }} % et de passer le taux moyen de 37,82 % à {{ 'page.declaration.average_rate'|trans }} %.</p>
+            <p>Malgré nos efforts, certains contenus sont inaccessibles. Vous trouverez ci-dessous une liste des limitations connues :</p>
             <ul>
-                <li>La carte du territoire et les graphiques sur le tableau de bord ne sont pas accessibles. Il est possible d’extraire un CSV des données.</li>
+                <li>La carte du territoire et les différents graphiques utilisés dans Madis ne sont pas accessibles.</li>
                 <li>Des éléments donnent l’information que par la couleur ou n’ont pas de contraste suffisant.</li>
-                <li>Absence d’un élément nécessaire sur le tableau de mise en forme des participants d’une évaluation de la structure. Cette erreur sera corrigée dans la prochaine version majeure.</li>
-                <li>Les titres ne sont pas associés aux tableaux de données.</li>
-                <li>Des en-têtes de lignes des tableaux ne sont pas correctement déclarés et associés. Ils seront associés dans la prochaine version majeure.</li>
-                <li>De nombreux liens ne sont pas explicites.</li>
-                <li>L’intitulé des liens du menu réduit sont absents. Cette erreur sera corrigée dans la prochaine version majeure.</li>
-                <li>De nombreux scripts ne sont pas compatibles avec les technologies d’assistance ou ne sont pas contrôlables par le clavier ou tout autre dispositif.</li>
-                <li>Les messages d’alertes ne restituent pas correctement leur statut.</li>
+                <li>Quelques en-têtes de lignes des tableaux ne sont pas correctement déclarés et associés.</li>
+                <li>Des liens ne sont pas explicites.</li>
+                <li>Des scripts ne sont pas compatibles avec les technologies d’assistance ou ne sont pas contrôlables par le clavier ou tout autre dispositif.</li>
                 <li>Le code source de certaines pages possède quelques erreurs.</li>
-                <li>La langue par défaut n’est pas indiquée pour l’ensemble des pages. Cette erreur sera corrigée dans la prochaine version majeure.</li>
-                <li>Des éléments en anglais sont présents. Une partie sera corrigée dans la prochaine version majeure et le reste a été planifié.</li>
+                <li>Quelques éléments en anglais sont présents.</li>
                 <li>Quelques balises sont utilisées uniquement à des fins de présentation.</li>
                 <li>Certains titres ne sont pas utilisés de façon appropriée.</li>
-                <li>Des éléments de structuration du document et de listes ne sont pas accessibles. Cette erreur sera corrigée dans la prochaine version majeure.</li>
-                <li>Certaines informations n’utilisaient pas la feuille de style pour créer un effet de marge. Cette erreur sera corrigée dans la prochaine version majeure.</li>
                 <li>Des éléments porteurs d’informations ne restent pas présents lors de la désactivation des feuilles de styles.</li>
                 <li>Plusieurs éléments ne restent pas visibles lorsque la taille des caractères est augmentée jusqu’à 200 %.</li>
                 <li>Les liens au fil du texte ne sont pas distinguables par rapport au texte environnant.</li>
-                <li>Le focus est globalement dégradé ou supprimé. Cette erreur sera partiellement corrigée pour les éléments bloquants dans la prochaine version majeure.</li>
-                <li>Le bouton de fermeture des messages d’alertes n’a pas vocation à être ignoré par les technologies d’assistance. Cette erreur sera corrigée dans la prochaine version majeure.</li>
-                <li>Des informations sont données uniquement par la forme, notamment pour l’indication d’obligation des champs de formulaire. La correction de l’indication d’obligation a été planifiée.</li>
+                <li>Quelques éléments non bloquants ont encore leur focus dégradé.</li>
                 <li>Des éléments ne restent pas lisibles lors de l’espacement du texte redéfini par l’utilisateur.</li>
                 <li>Des éléments apparaissant au survol ou via des styles CSS uniquement ne sont pas contrôlables par l’utilisateur.</li>
-                <li>Des champs de formulaires n’ont pas d’étiquettes, et certains qui en ont ne sont pas pertinents.</li>
-                <li>L’ensemble des étiquettes des champs de formulaire ne sont pas toujours accolées correctement. La correction de cette erreur a été planifiée.</li>
+                <li>Quelques champs de formulaires n’ont pas d’étiquettes ou ne sont pas assez pertinents.</li>
                 <li>Plusieurs champs de même nature ne sont pas regroupés, notamment pour les boutons radios.</li>
                 <li>Certaines listes de choix n’ont pas leurs items de même nature regroupées de manière pertinente.</li>
-                <li>Des boutons n’ont pas un intitulé pertinent. Cette erreur sera corrigée dans la prochaine version majeure.</li>
-                <li>Le contrôle de saisie n’est pas pertinent. La correction d’une partie de cette erreur a été planifiée.</li>
-                <li>Certains champs n’ont pas d’attribut permettant le remplissage automatique. Cette erreur sera corrigée dans la prochaine version majeure.</li>
-                <li>En plus de la navigation principale, il est nécessaire d’avoir un autre moyen de navigation via un plan du site par exemple. Cette erreur sera corrigée dans la prochaine version majeure.</li>
-                <li>Il n’y a pas de lien d’évitement ni d’attribut permettant l’identification des différentes zones de contenu. Cette erreur sera corrigée dans la prochaine version majeure.</li>
+                <li>Un contrôle de saisie n’est pas pertinent.</li>
                 <li>L’ordre de tabulation pour accéder à la sélection d’une date n’est pas cohérent et il n’est pas atteignable au clavier.</li>
-                <li>Le bilan généré n’est pas accessible. Cette erreur sera partiellement corrigée dans la prochaine version majeure.</li>
-                <li>Certains contenus ne sont pas présents en format mobile alors qu’ils le sont en format tablette et au-dessus. Cette erreur sera corrigée dans la prochaine version majeure.</li>
+                <li>Quelques éléments du bilan généré ne sont pas accessibles.</li>
+                <li>Certains contenus ne sont pas adaptés en format mobile.</li>
             </ul>
+            <p>Les erreurs restantes seront priorisées pour qu'une partie puisse être corrigée dans une prochaine version majeure.</p>
             <h3>Dérogations pour charge disproportionnée</h3>
             <p>Néant.</p>
             <h3>Contenus non soumis à l’obligation d’accessibilité</h3>
-            <p>Néant.</p>
+            <p>Ne pouvant contrôler le niveau d'accessibilité des documents déposés par les utilisateurs, ceux-ci sont donc exemptés.</p>
             <h2>Établissement de cette déclaration d’accessibilité</h2>
             <p>Cette déclaration a été établie le <strong>{{ 'page.declaration.created_at'|trans }}</strong>. Elle a été mise à jour le <strong>{{ 'page.declaration.updated_at'|trans }}</strong>.</p>
             <h3>Technologies utilisées pour la réalisation de Madis</h3>
@@ -107,13 +95,14 @@
                 <li>Authentification</li>
                 <li>Tableau de bord (Administrateur)</li>
                 <li>Tableau de bord (Gestionnaire)</li>
+                <li>Déclaration d'accessibilité</li>
+                <li>Plan du site</li>
                 <li>Liste des traitements</li>
-                <li>Créer un traitement</li>
-                <li>Liste des sous-traitants</li>
-                <li>Créer une preuve</li>
-                <li>Créer une évaluation</li>
-                <li>Module de duplication</li>
-                <li>Liste des utilisateurs</li>
+                <li>Visualiser un traitement</li>
+                <li>Évaluer un traitement</li>
+                <li>Modifier une AIPD</li>
+                <li>Modifier un référentiel</li>
+                <li>Modifier un document de l'espace documentaire</li>
             </ul>
             <h2>Amélioration et contact</h2>
             <p>Si vous n’arrivez pas à accéder à un contenu ou à un service, vous pouvez contacter votre DPD pour être orienté vers une alternative accessible ou obtenir le contenu sous une autre forme, par l’un des moyens suivants :</p>
diff --git a/templates/Page/plan_annuel_2022.html.twig b/templates/Page/plan_annuel_2022.html.twig
index 5d52ffeaa177fdd7a4a426b9e7e6f767d2851fa6..5ad785f32515212fbbbd22e9e5f4bf8ebd64c705 100644
--- a/templates/Page/plan_annuel_2022.html.twig
+++ b/templates/Page/plan_annuel_2022.html.twig
@@ -35,7 +35,8 @@
             <h2>Détail du plan annuel</h2>
             <p>Ci-après, un tableau récapitulatif des actions qui ont été ou seront mises en œuvre en 2022, avec leur date d’échéance si elles sont connues, ainsi que leur état d’avancement et de réalisation.</p>
             <h3>Traitement des retours usagers</h3>
-            <table aria-label="Actions – Traitement des retours usagers" class="box table table-bordered table-responsive">
+            <table class="box table table-bordered table-responsive">
+                <caption class="sr-only">Actions – Traitement des retours usagers</caption>
                 <thead>
                     <tr>
                         <th scope="col">Action</th>
@@ -54,7 +55,8 @@
                 </tbody>
             </table>
             <h3>Audits et obligations légales</h3>
-            <table aria-label="Actions – Audits et obligations légales" class="box table table-bordered table-responsive">
+            <table class="box table table-bordered table-responsive">
+                <caption class="sr-only">Actions – Audits et obligations légales</caption>
                 <thead>
                     <tr>
                         <th scope="col">Action</th>
@@ -91,7 +93,8 @@
                 </tbody>
             </table>
             <h3>Développements, recettages et mise en conformité</h3>
-            <table aria-label="Actions – Développements, recettages et mise en conformité" class="box table table-bordered table-responsive">
+            <table class="box table table-bordered table-responsive">
+                <caption class="sr-only">Actions – Développements, recettages et mise en conformité</caption>
                 <thead>
                     <tr>
                         <th scope="col">Action</th>
@@ -101,12 +104,12 @@
                     </tr>
                 </thead>
                 <tbody>
-                <tr>
-                    <th scope="row">Chiffrage des développements</th>
-                    <td>Estimation du premier lot : 8 640€ TTC</td>
-                    <td>Août 2022</td>
-                    <td><span class="badge bg-green">Réalisé</span></td>
-                </tr>
+                    <tr>
+                        <th scope="row">Chiffrage des développements</th>
+                        <td>Estimation du premier lot : 8 640€ TTC</td>
+                        <td>Août 2022</td>
+                        <td><span class="badge bg-green">Réalisé</span></td>
+                    </tr>
                 </tbody>
             </table>
         </div>
diff --git a/templates/Page/plan_annuel_2023.html.twig b/templates/Page/plan_annuel_2023.html.twig
index 88477fd3313ab28e51da0cf30ed28f7b621779b2..4072bfc8140736572d7181c6c14aef94250e4215 100644
--- a/templates/Page/plan_annuel_2023.html.twig
+++ b/templates/Page/plan_annuel_2023.html.twig
@@ -35,7 +35,8 @@
             <h2>Détail du plan annuel</h2>
             <p>Ci-après, un tableau récapitulatif des actions qui ont été ou seront mises en œuvre en 2023, avec leur date d’échéance si elles sont connues, ainsi que leur état d’avancement et de réalisation.</p>
             <h3>Comité d’évolution</h3>
-            <table aria-label="Actions – Comité d’évolution" class="box table table-bordered table-responsive">
+            <table class="box table table-bordered table-responsive">
+                <caption class="sr-only">Actions – Comité d’évolution</caption>
                 <thead>
                     <tr>
                         <th scope="col">Action</th>
@@ -54,7 +55,8 @@
                 </tbody>
             </table>
             <h3>Élaboration et suivi du schéma pluriannuel d’accessibilité numérique</h3>
-            <table aria-label="Actions – Élaboration et suivi du schéma pluriannuel d’accessibilité numérique" class="box table table-bordered table-responsive">
+            <table class="box table table-bordered table-responsive">
+                <caption class="sr-only">Actions – Élaboration et suivi du schéma pluriannuel d’accessibilité numérique</caption>
                 <thead>
                     <tr>
                         <th scope="col">Action</th>
@@ -91,7 +93,8 @@
                 </tbody>
             </table>
             <h3>Audits et obligations légales</h3>
-            <table aria-label="Actions – Audits et obligations légales" class="box table table-bordered table-responsive">
+            <table class="box table table-bordered table-responsive">
+                <caption class="sr-only">Actions – Audits et obligations légales</caption>
                 <thead>
                     <tr>
                         <th scope="col">Action</th>
@@ -122,7 +125,8 @@
                 </tbody>
             </table>
             <h3>Développements, recettages et mise en conformité</h3>
-            <table aria-label="Actions – Développements, recettages et mise en conformité" class="box table table-bordered table-responsive">
+            <table class="box table table-bordered table-responsive">
+                <caption class="sr-only">Actions – Développements, recettages et mise en conformité</caption>
                 <thead>
                     <tr>
                         <th scope="col">Action</th>
@@ -156,7 +160,8 @@
             <!-- Restriction d'affichage des actions de formation/sensibilisation, car étant réalisées par et seulement pour Soluris -->
             {% if default_dpo_company == "Soluris" %}
                 <h3>Action de formation et de sensibilisation</h3>
-                <table aria-label="Actions – Action de formation et de sensibilisation" class="box table table-bordered table-responsive">
+                <table class="box table table-bordered table-responsive">
+                    <caption class="sr-only">Actions – Action de formation et de sensibilisation</caption>
                     <thead>
                         <tr>
                             <th scope="col">Action</th>
diff --git a/templates/Page/plan_annuel_2024.html.twig b/templates/Page/plan_annuel_2024.html.twig
index 7eecd90df4978ff3628a2dd16541c9726e938ec0..1dbc97256783f4060884d32ec2b1953e127a0eb2 100644
--- a/templates/Page/plan_annuel_2024.html.twig
+++ b/templates/Page/plan_annuel_2024.html.twig
@@ -35,7 +35,8 @@
             <h2>Détail du plan annuel</h2>
             <p>Ci-après, un tableau récapitulatif des actions qui ont été ou seront mises en œuvre en 2024, avec leur date d’échéance si elles sont connues, ainsi que leur état d’avancement et de réalisation.</p>
             <h3>Comité d’évolution</h3>
-            <table aria-label="Actions – Comité d’évolution" class="box table table-bordered table-responsive">
+            <table class="box table table-bordered table-responsive">
+                <caption class="sr-only">Actions – Comité d’évolution</caption>
                 <thead>
                     <tr>
                         <th scope="col">Action</th>
@@ -54,7 +55,8 @@
                 </tbody>
             </table>
             <h3>Élaboration et suivi du schéma pluriannuel d’accessibilité numérique</h3>
-            <table aria-label="Actions – Élaboration et suivi du schéma pluriannuel d’accessibilité numérique" class="box table table-bordered table-responsive">
+            <table class="box table table-bordered table-responsive">
+                <caption class="sr-only">Actions – Élaboration et suivi du schéma pluriannuel d’accessibilité numérique</caption>
                 <thead>
                     <tr>
                         <th scope="col">Action</th>
@@ -79,7 +81,8 @@
                 </tbody>
             </table>
             <h3>Audits et obligations légales</h3>
-            <table aria-label="Actions – Audits et obligations légales" class="box table table-bordered table-responsive">
+            <table class="box table table-bordered table-responsive">
+                <caption class="sr-only">Actions – Audits et obligations légales</caption>
                 <thead>
                     <tr>
                         <th scope="col">Action</th>
@@ -91,15 +94,15 @@
                 <tbody>
                     <tr>
                         <th scope="row">Audit de conformité RGAA</th>
-                        <td>Audit complet (RGAA 4.2) du site <a target="_blank" rel="noreferrer noopener" href="https://madis.soluris.fr" title="madis.soluris.fr (Nouvelle fenêtre)" aria-label="madis.soluris.fr (Nouvelle fenêtre)">madis.soluris.fr</a> pour faire un point d’avancement et préparer le troisième lot</td>
-                        <td>1<sup>er</sup> trimestre 2024</td>
-                        <td><span class="badge bg-blue">Programmé</span></td>
+                        <td>Audit complet (RGAA 4.2) du site <a target="_blank" rel="noreferrer noopener" href="https://madis.soluris.fr" title="madis.soluris.fr (Nouvelle fenêtre)" aria-label="madis.soluris.fr (Nouvelle fenêtre)">madis.soluris.fr</a> pour faire un point d’avancement et préparer le troisième lot. Taux de conformité : 51,43 %</td>
+                        <td>2<sup>ème</sup> trimestre 2024</td>
+                        <td><span class="badge bg-green">Réalisé</span></td>
                     </tr>
                     <tr>
                         <th scope="row">Déclaration d'accessibilité</th>
                         <td>Mise à jour de la déclaration d'accessibilité suite à l'audit complet.</td>
                         <td>1<sup>er</sup> trimestre 2024</td>
-                        <td><span class="badge bg-gray">À programmer</span></td>
+                        <td><span class="badge bg-green">Réalisé</span></td>
                     </tr>
                     <tr>
                         <th scope="row">Priorisation des non-conformités</th>
@@ -122,7 +125,8 @@
                 </tbody>
             </table>
             <h3>Développements, recettages et mise en conformité</h3>
-            <table aria-label="Actions – Développements, recettages et mise en conformité" class="box table table-bordered table-responsive">
+            <table class="box table table-bordered table-responsive">
+                <caption class="sr-only">Actions – Développements, recettages et mise en conformité</caption>
                 <thead>
                     <tr>
                         <th scope="col">Action</th>
diff --git a/templates/Page/sitemap.html.twig b/templates/Page/sitemap.html.twig
index 9ac975886a05c679dee48e1badf6f3ecbb2995e7..020d3fff9cbc23222c80ac56adfce8cf3f9e3ff0 100644
--- a/templates/Page/sitemap.html.twig
+++ b/templates/Page/sitemap.html.twig
@@ -149,7 +149,7 @@
                 {# CREDIT #}
                 <li><a href="{{ path('page_credit') }}">{{ 'page.credit.title'|trans }}</a></li>
                 {# SITEMAP #}
-                <li><a aria-current="true" href="{{ path('page_sitemap') }}">{{ 'page.sitemap.title'|trans }}</a></li>
+                <li><a aria-current="page" href="{{ path('page_sitemap') }}">{{ 'page.sitemap.title'|trans }}</a></li>
             </ul>
         </li>
     </ul>
diff --git a/templates/Registry/Conformite_organisation/list.html.twig b/templates/Registry/Conformite_organisation/list.html.twig
index 703aacca82a43ac2735e70de55eb14e833ed7567..f59ce2e2cfdf60b09beb13e6b0941d2587553371 100644
--- a/templates/Registry/Conformite_organisation/list.html.twig
+++ b/templates/Registry/Conformite_organisation/list.html.twig
@@ -23,48 +23,55 @@
 {% endblock %}
 
 {% block body %}
-    {% if form is not null  %}
-        {% set userRole = app.user.roles[0] %}
-        {% if userRole == 'ROLE_USER' %}
+    {% if form is not null and not is_granted('ROLE_REFERENT') %}
+        {% if is_granted('ROLE_USER') %}
             {{ form_start(form) }}
         {% endif %}
-        <div class="row">
-            <div class="col-xs-12">
-                <div class="mb-1">
-                    {% if evaluations is not empty and not is_granted('ROLE_ADMIN') %}
+            <div class="row">
+                <div class="col-xs-12 mb-1">
+                    {% if evaluations is not empty %}
                         <a href="{{ path('registry_conformite_organisation_report', {'id': evaluations[0].id, 'all_actions' : false}) }}" class="btn btn-default">
                             <i aria-hidden="true" class="fa fa-clipboard-list"></i>
                             {{ 'global.action.report'|trans }}
                         </a>
                     {% endif %}
-                    {% if userRole == 'ROLE_USER' %}
+                    {% if is_granted('ROLE_USER') %}
                         <input type="submit" class="btn btn-primary" value="{{ submitValue }}">
                     {% endif %}
+                    {% if category and category.documents|length > 0 %}
+                        <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
+                            <i aria-hidden="true" class="fa fa-circle-info"></i>
+                            {{ 'global.action.documentation'|trans }}
+                        </a>
+                    {% endif %}
                 </div>
             </div>
-        </div>
 
-        {% if not is_granted('ROLE_REFERENT') %}
             <div class="row">
                 <div class="col-xs-12">
                     <div class="box box-solid">
                         <div class="box-body overflow-x-auto">
                             <table class="table table-bordered table-hover">
+                                <caption class="sr-only">Liste des pilotes par processus</caption>
                                 <thead>
-                                <tr>
-                                    <th scope="col">{{ 'registry.conformite_organisation.list.pilote'|trans }}</th>
-                                    <th scope="col">{{ 'registry.conformite_organisation.list.processus'|trans }}</th>
-                                    <th scope="col">{{ 'registry.conformite_organisation.list.conformite'|trans }}</th>
-                                    <th scope="col">{{ 'global.label.linked_mesurement'|trans }}</th>
-                                </tr>
+                                    <tr>
+                                        <th scope="col">{{ 'registry.conformite_organisation.list.pilote'|trans }}</th>
+                                        <th scope="col">{{ 'registry.conformite_organisation.list.processus'|trans }}</th>
+                                        <th scope="col">{{ 'registry.conformite_organisation.list.conformite'|trans }}</th>
+                                        <th scope="col">{{ 'global.label.linked_mesurement'|trans }}</th>
+                                    </tr>
                                 </thead>
                                 <tbody>
-                                {% if evaluations is not empty %}
+                                    {% if evaluations is not empty %}
                                         {% for conformite in getConformitesWithProcessusAndQuestions(form.conformites) %}
                                             {% set conformite = conformite[0] %}
                                             <tr>
-                                                <td style="vertical-align: middle">{{ form_widget(conformite.pilote) }}</td>
-                                                <td style="vertical-align: middle">{{ conformite.vars.value.processus.nom }}</td>
+                                                {% if is_granted('ROLE_USER') %}
+                                                    <td style="vertical-align: middle">{{ form_widget(conformite.pilote) }}</td>
+                                                {% else %}
+                                                    <td style="vertical-align: middle">{{ conformite.vars.value.pilote }}</td>
+                                                {% endif %}
+                                                <th scope="row" style="vertical-align: middle">{{ conformite.vars.value.processus.nom }}</th>
                                                 <td style="vertical-align: middle">
                                                     {% if conformite.vars.value.conformite < 2.5 %}
                                                         {% set type = 'bg-red' %}
@@ -90,91 +97,87 @@
                                                 </td>
                                             </tr>
                                         {% endfor %}
-                                {% endif %}
+                                    {% endif %}
                                 </tbody>
                             </table>
                         </div>
                     </div>
                 </div>
             </div>
-        {% endif %}
-
-        {% if userRole == 'ROLE_USER' %}
+        {% if is_granted('ROLE_USER') %}
             {{ form_end(form) }}
         {% endif %}
     {% endif %}
 
-    {% if is_granted('ROLE_USER') %}
-        <div class="row">
-            <div class="col-xs-12">
-                <div class="mb-1">
-                    <a href="{{ path('registry_conformite_organisation_create') }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-plus"></i>
-                        {{ 'registry.conformite_organisation.action.create'|trans }}
-                    </a>
-
-                    {% if category and category.documents|length > 0 %}
-                        <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
-                            <i aria-hidden="true" class="fa fa-circle-info"></i>
-                            {{ 'global.action.documentation'|trans }}
-                        </a>
-                    {% endif %}
-                </div>
-            </div>
+    <div class="row">
+        <div class="col-xs-12 mb-1">
+            {% if is_granted('ROLE_USER') %}
+                <a href="{{ path('registry_conformite_organisation_create') }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-plus"></i>
+                    {{ 'registry.conformite_organisation.action.create'|trans }}
+                </a>
+            {% endif %}
+            {% if is_granted('ROLE_REFERENT') and category and category.documents|length > 0 %}
+                <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
+                    <i aria-hidden="true" class="fa fa-circle-info"></i>
+                    {{ 'global.action.documentation'|trans }}
+                </a>
+            {% endif %}
         </div>
-    {% endif %}
+    </div>
 
     <div class="row">
         <div class="col-xs-12">
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">Liste des évaluations de la structure</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">{{ 'registry.conformite_organisation.label.date'|trans }}</th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                                <th scope="col">{{ 'global.label.organization'|trans }}</th>
-                            {% endif %}
-                            <th scope="col">{{ 'registry.conformite_organisation.list.nb_participants'|trans }}</th>
-                            <th scope="col">{{ 'registry.conformite_organisation.list.draft'|trans }}</th>
-                            <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                        </tr>
-                        </thead>
-                        <tbody>
-                        {% for evaluation in evaluations %}
                             <tr>
-                                <td>{% if evaluation.date is not null %}{{ evaluation.date|date('d/m/Y') }}{% endif %}</td>
+                                <th scope="col">{{ 'registry.conformite_organisation.label.date'|trans }}</th>
                                 {% if is_granted('ROLE_REFERENT') %}
-                                    <td>{{ evaluation.collectivity.name }}</td>
+                                    <th scope="col">{{ 'global.label.organization'|trans }}</th>
                                 {% endif %}
-                                <td>{{ evaluation.participants|length }}</td>
-                                <td>
-                                    {% if evaluation.draft %}
-                                        <span class="badge">{{ 'global.label.yes'|trans }}</span>
-                                    {% else %}
-                                        <span class="badge bg-gray">{{ 'global.label.no'|trans }}</span>
+                                <th scope="col">{{ 'registry.conformite_organisation.list.nb_participants'|trans }}</th>
+                                <th scope="col">{{ 'registry.conformite_organisation.list.draft'|trans }}</th>
+                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            {% for evaluation in evaluations %}
+                                <tr>
+                                    <th scope="row">{% if evaluation.date is not null %}{{ evaluation.date|date('d/m/Y') }}{% endif %}</th>
+                                    {% if is_granted('ROLE_REFERENT') %}
+                                        <td>{{ evaluation.collectivity.name }}</td>
                                     {% endif %}
-                                </td>
-                                <td>
-                                    <a href="{{ path('registry_conformite_organisation_report', {'id': evaluation.id}) }}">
-                                        <i aria-hidden="true" class="fa fa-clipboard-list"></i>
-                                        {{ 'global.action.print'|trans }}
-                                    </a>
-                                    {% if is_granted('ROLE_USER') %}
-                                        {% if evaluation.isDraft %}
-                                            <a href="{{ path('registry_conformite_organisation_edit', {'id': evaluation.id}) }}">
-                                                <i aria-hidden="true" class="fa fa-pencil"></i>
-                                                {{ 'global.action.edit'|trans }}
-                                            </a>
+                                    <td>{{ evaluation.participants|length }}</td>
+                                    <td>
+                                        {% if evaluation.draft %}
+                                            <span class="badge">{{ 'global.label.yes'|trans }}</span>
+                                        {% else %}
+                                            <span class="badge bg-gray">{{ 'global.label.no'|trans }}</span>
                                         {% endif %}
-                                        <a href="{{ path('registry_conformite_organisation_delete', {'id': evaluation.id}) }}">
-                                            <i aria-hidden="true" class="fa fa-trash"></i>
-                                            {{ 'global.action.delete'|trans }}
+                                    </td>
+                                    <td>
+                                        <a href="{{ path('registry_conformite_organisation_report', {'id': evaluation.id}) }}">
+                                            <i aria-hidden="true" class="fa fa-clipboard-list"></i>
+                                            {{ 'global.action.print'|trans }}
                                         </a>
-                                    {% endif %}
-                                </td>
-                            </tr>
-                        {% endfor %}
+                                        {% if is_granted('ROLE_USER') %}
+                                            {% if evaluation.isDraft %}
+                                                <a href="{{ path('registry_conformite_organisation_edit', {'id': evaluation.id}) }}">
+                                                    <i aria-hidden="true" class="fa fa-pencil"></i>
+                                                    {{ 'global.action.edit'|trans }}
+                                                </a>
+                                            {% endif %}
+                                            <a href="{{ path('registry_conformite_organisation_delete', {'id': evaluation.id}) }}">
+                                                <i aria-hidden="true" class="fa fa-trash"></i>
+                                                {{ 'global.action.delete'|trans }}
+                                            </a>
+                                        {% endif %}
+                                    </td>
+                                </tr>
+                            {% endfor %}
                         </tbody>
                     </table>
                 </div>
diff --git a/templates/Registry/Conformite_traitement/_form_reponse.html.twig b/templates/Registry/Conformite_traitement/_form_reponse.html.twig
index 3a9486ad5d631852f1eafc51e4ac5c612af797af..2be7c3f17e0166b14d7446f9c88e2d5dbe822c99 100644
--- a/templates/Registry/Conformite_traitement/_form_reponse.html.twig
+++ b/templates/Registry/Conformite_traitement/_form_reponse.html.twig
@@ -2,9 +2,7 @@
     <div class="col-md-12">
         <div class="box">
             <div class="box-header with-border">
-                <span>
-                    <h3 class="box-title">{{ 'registry.conformite_traitement.tab.evaluate'|trans }}</h3>
-                </span>
+                <h3 class="box-title">{{ 'registry.conformite_traitement.tab.evaluate'|trans }}</h3>
                 <span style="padding-left: 30px;">
                     <a href="{{ path('registry_conformite_traitement_list') }}" class="btn btn-default">
                         {{ 'global.action.back_to_list'|trans }}
@@ -14,60 +12,60 @@
             </div>
             <div class="box-body">
                 <table id="table" class="table">
+                    <caption class="sr-only">{{ 'registry.conformite_traitement.tab.evaluate'|trans }}</caption>
                     <thead>
                         <tr>
                             <th scope="col" style="width: 3%;"></th>
                             <th scope="col" class="col-md-6">{{ 'registry.conformite_traitement.label.question'|trans }}</th>
                             <th scope="col" class="col-md-2">{{ 'registry.conformite_traitement.label.conformite'|trans }}</th>
-                            <th scope="col" class="col-md-4">{{ 'global.label.linked_mesurement'|trans }}</th>
-                            <th scope="col"></th>
+                            <th scope="col" colspan="2" class="col-md-4">{{ 'global.label.linked_mesurement'|trans }}</th>
                         </tr>
                     </thead>
                     <tbody>
-                    {% for reponse in orderReponseByQuestionPositionAsc(form) %}
-                        {% set actionProtectionsNonPlanifiees = [] %}
-                        {% for key, action in reponse.vars.value.actionProtections|filter((action, key) => action.planificationDate is null) -%}
-                            {% set actionProtectionsNonPlanifiees = actionProtectionsNonPlanifiees|merge([action]) %}
-                        {% endfor %}
-                        <tr>
-                            <td class="reponse-vertical-align">
-                                {% if reponse.vars.value.actionProtectionsPlanifiedNotSeens is not empty %}
-                                    <div class="mesurement-hide">
-                                        <i aria-hidden="true" class="primary-i fas fa-exclamation-circle"></i>
-                                        <div class="primary">
-                                            <span>{{ 'registry.conformite_traitement.label.tooltip.mesurements_done'|trans }}</span>
-                                            <ul>
-                                                {% for mesurement in reponse.vars.value.actionProtectionsPlanifiedNotSeens %}
-                                                    <li>{{ mesurement.name }}</li>
-                                                {% endfor %}
-                                            </ul>
+                        {% for reponse in orderReponseByQuestionPositionAsc(form) %}
+                            {% set actionProtectionsNonPlanifiees = [] %}
+                            {% for key, action in reponse.vars.value.actionProtections|filter((action, key) => action.planificationDate is null) -%}
+                                {% set actionProtectionsNonPlanifiees = actionProtectionsNonPlanifiees|merge([action]) %}
+                            {% endfor %}
+                            <tr>
+                                <td class="reponse-vertical-align">
+                                    {% if reponse.vars.value.actionProtectionsPlanifiedNotSeens is not empty %}
+                                        <div class="mesurement-hide">
+                                            <i aria-hidden="true" class="primary-i fas fa-exclamation-circle"></i>
+                                            <div class="primary">
+                                                <p>{{ 'registry.conformite_traitement.label.tooltip.mesurements_done'|trans }}</p>
+                                                <ul>
+                                                    {% for mesurement in reponse.vars.value.actionProtectionsPlanifiedNotSeens %}
+                                                        <li>{{ mesurement.name }}</li>
+                                                    {% endfor %}
+                                                </ul>
+                                            </div>
                                         </div>
-                                    </div>
-                                {% endif %}
-                                {% if actionProtectionsNonPlanifiees is not empty %}
-                                    <div class="mesurement-hide">
-                                        <i aria-hidden="true" class="warning-i fas fa-exclamation-circle"></i>
-                                        <div class="warning">
-                                            <span>{{ 'registry.conformite_traitement.label.tooltip.mesurements_not_planified'|trans }}</span>
-                                            <ul>
-                                                {% for mesurement in actionProtectionsNonPlanifiees %}
-                                                    <li>{{ mesurement.name }}</li>
-                                                {% endfor %}
-                                            </ul>
+                                    {% endif %}
+                                    {% if actionProtectionsNonPlanifiees is not empty %}
+                                        <div class="mesurement-hide">
+                                            <i aria-hidden="true" class="warning-i fas fa-exclamation-circle"></i>
+                                            <div class="warning">
+                                                <p>{{ 'registry.conformite_traitement.label.tooltip.mesurements_not_planified'|trans }}</p>
+                                                <ul>
+                                                    {% for mesurement in actionProtectionsNonPlanifiees %}
+                                                        <li>{{ mesurement.name }}</li>
+                                                    {% endfor %}
+                                                </ul>
+                                            </div>
                                         </div>
-                                    </div>
-                                {% endif %}
-                            </td>
-                            <td class="reponse-vertical-align" {% if reponse.vars.value.actionProtectionsPlanifiedNotSeens is not empty %}style="font-weight: bold;"{% endif %}>{{ reponse.vars.value.question.question }}</td>
-                            <td>{{ form_widget(reponse.conforme, { 'attr': {'data-select-id': reponse.actionProtections.vars.id} }) }}</td>
-                            <td>{{ form_widget(reponse.actionProtections) }}</td>
-                            <td>
-                                <button id="{{ reponse.actionProtections.vars.id }}_add_button" aria-label="{{ 'registry.mesurement.action.add_mesurement'|trans }}" type="button" class="btn reponse-modal-button" data-toggle="modal" data-target="#mesurement-modal" data-select-id="{{ reponse.actionProtections.vars.id }}">
-                                    <span class="fa fa-plus-circle"></span>
-                                </button>
-                            </td>
-                        </tr>
-                    {% endfor %}
+                                    {% endif %}
+                                </td>
+                                <th scope="row" class="reponse-vertical-align" {% if reponse.vars.value.actionProtectionsPlanifiedNotSeens is not empty %}style="font-weight: bold;"{% endif %}>{{ reponse.vars.value.question.question }}</th>
+                                <td>{{ form_widget(reponse.conforme, { 'attr': {'data-select-id': reponse.actionProtections.vars.id} }) }}</td>
+                                <td>{{ form_widget(reponse.actionProtections) }}</td>
+                                <td>
+                                    <button id="{{ reponse.actionProtections.vars.id }}_add_button" aria-label="{{ 'registry.mesurement.action.add_mesurement'|trans }}" type="button" class="btn reponse-modal-button" data-toggle="modal" data-target="#mesurement-modal" data-select-id="{{ reponse.actionProtections.vars.id }}">
+                                        <span class="fa fa-plus-circle"></span>
+                                    </button>
+                                </td>
+                            </tr>
+                        {% endfor %}
                     </tbody>
                 </table>
             </div>
diff --git a/templates/Registry/Conformite_traitement/list.html.twig b/templates/Registry/Conformite_traitement/list.html.twig
index ea8236f573a697bdba1be5352b96eca789b3dd1b..d5868c02da47c7ea00b69e09954284af7dafe705 100644
--- a/templates/Registry/Conformite_traitement/list.html.twig
+++ b/templates/Registry/Conformite_traitement/list.html.twig
@@ -23,19 +23,17 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                <a href="{{ path('registry_conformite_traitement_report') }}" class="btn btn-default">
-                    <i aria-hidden="true" class="fa fa-clipboard-list"></i>
-                    {{ 'global.action.report'|trans }}
+        <div class="col-xs-12 mb-1">
+            <a href="{{ path('registry_conformite_traitement_report') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-clipboard-list"></i>
+                {{ 'global.action.report'|trans }}
+            </a>
+            {% if category and category.documents|length > 0 %}
+                <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
+                    <i aria-hidden="true" class="fa fa-circle-info"></i>
+                    {{ 'global.action.documentation'|trans }}
                 </a>
-                {% if category and category.documents|length > 0 %}
-                    <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
-                        <i aria-hidden="true" class="fa fa-circle-info"></i>
-                        {{ 'global.action.documentation'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+            {% endif %}
         </div>
     </div>
 
@@ -44,162 +42,167 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">Liste des évaluations des traitements</caption>
                         <thead>
-                        <tr>
-                            <th scope="col"></th>
-                            <th scope="col">{{ 'registry.conformite_traitement.list.traitement'|trans }}</th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                                <th scope="col">{{ 'global.label.organization'|trans }}</th>
-                            {% endif %}
-                            <th scope="col">{{ 'registry.treatment.label.manager'|trans }}</th>
-                            <th scope="col">{{ 'registry.conformite_traitement.label.conformite_traitement'|trans }}</th>
-                            <th scope="col">{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</th>
-                            <th scope="col">{{ 'registry.conformite_traitement.list.date_conformite'|trans }}</th>
-                            <th scope="col">{{ 'aipd.treatment.label.avis_aipd'|trans }}</th>
-                            <th scope="col">{{ 'registry.conformite_traitement.list.date_aipd'|trans }}</th>
-                            {% if is_granted('ROLE_USER') %}
-                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                            {% endif %}
-                        </tr>
+                            <tr>
+                                <th scope="col"></th>
+                                <th scope="col">{{ 'registry.conformite_traitement.list.traitement'|trans }}</th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">{{ 'global.label.organization'|trans }}</th>
+                                {% endif %}
+                                <th scope="col">{{ 'registry.treatment.label.manager'|trans }}</th>
+                                <th scope="col">{{ 'registry.conformite_traitement.label.conformite_traitement'|trans }}</th>
+                                <th scope="col">{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</th>
+                                <th scope="col">{{ 'registry.conformite_traitement.list.date_conformite'|trans }}</th>
+                                <th scope="col">{{ 'aipd.treatment.label.avis_aipd'|trans }}</th>
+                                <th scope="col">{{ 'registry.conformite_traitement.list.date_aipd'|trans }}</th>
+                                {% if is_granted('ROLE_USER') %}
+                                    <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                                {% endif %}
+                            </tr>
                         </thead>
                         <tbody>
-                        {% for object in objects %}
-                            {% set conformiteTraitement = object.conformiteTraitement %}
-                            {% set planifiedMesurementToBeNotified = [] %}
-                            {% set analyseImpact = null %}
-                            {% if conformiteTraitement is not null %}
-                                {% set planifiedMesurementToBeNotified = getPlanifiedMesurements(conformiteTraitement) %}
-                                {% set nbTotal = conformiteTraitement.nbConformes + conformiteTraitement.nbNonConformesMineures + conformiteTraitement.nbNonConformesMajeures %}
-                                {% set widthNbConforme = nbTotal > 0 ? ((conformiteTraitement.nbConformes * 100) / nbTotal)|round : 0 %}
-                                {% set widthnbNonConformesMineures = nbTotal > 0 ? ((conformiteTraitement.nbNonConformesMineures * 100) / nbTotal)|round : 0 %}
-                                {% set widthnbNonConformesMajeures = 100 - (widthNbConforme + widthnbNonConformesMineures) %}
-                                {% set conformiteBackgroundColor = getConformiteLevelWeight(conformiteTraitement) %}
-                                {% if conformiteTraitement.analyseImpacts is not empty %}
-                                    {% set analyseImpact = getLastAnalyseImpact(conformiteTraitement) %}
-                                {% endif %}
-                            {% endif %}
-                            <tr>
-                                <td>
-                                    {% if planifiedMesurementToBeNotified is not empty %}
-                                        <div class="mesurement-hide">
-                                            <i aria-hidden="true" class="primary-i fas fa-exclamation-circle"></i>
-                                            <div class="primary">
-                                                <span>{{ 'registry.conformite_traitement.label.tooltip.mesurements_done'|trans }}</span>
-                                                <ul>
-                                                    {% for mesurement in planifiedMesurementToBeNotified %}
-                                                        <li>{{ mesurement.name }}</li>
-                                                    {% endfor %}
-                                                </ul>
-                                            </div>
-                                        </div>
-                                    {% endif %}
-                                    {% if conformiteTraitement and conformiteTraitement.needsAipd %}
-                                        {% if analyseImpact is null %}
-                                            <div>
-                                                <i class="fa fa-exclamation-triangle" aria-label="{{ 'registry.conformite_traitement.label.tooltip.aipd_to_do'|trans }}" title="{{ 'registry.conformite_traitement.label.tooltip.aipd_to_do'|trans }}" style="color:#dd4b39;"></i>
-                                            </div>
-                                        {% else %}
-                                            <div>
-                                                <i class="fa fa-exclamation-triangle" aria-label="{{ 'registry.conformite_traitement.label.tooltip.aipd_in_progress'|trans }}" title="{{ 'registry.conformite_traitement.label.tooltip.aipd_in_progress'|trans }}" style="color:#f39c12;"></i>
-                                            </div>
-                                        {% endif %}
+                            {% for object in objects %}
+                                {% set conformiteTraitement = object.conformiteTraitement %}
+                                {% set planifiedMesurementToBeNotified = [] %}
+                                {% set analyseImpact = null %}
+                                {% if conformiteTraitement is not null %}
+                                    {% set planifiedMesurementToBeNotified = getPlanifiedMesurements(conformiteTraitement) %}
+                                    {% set nbTotal = conformiteTraitement.nbConformes + conformiteTraitement.nbNonConformesMineures + conformiteTraitement.nbNonConformesMajeures %}
+                                    {% set widthNbConforme = nbTotal > 0 ? ((conformiteTraitement.nbConformes * 100) / nbTotal)|round : 0 %}
+                                    {% set widthnbNonConformesMineures = nbTotal > 0 ? ((conformiteTraitement.nbNonConformesMineures * 100) / nbTotal)|round : 0 %}
+                                    {% set widthnbNonConformesMajeures = 100 - (widthNbConforme + widthnbNonConformesMineures) %}
+                                    {% set conformiteBackgroundColor = getConformiteLevelWeight(conformiteTraitement) %}
+                                    {% if conformiteTraitement.analyseImpacts is not empty %}
+                                        {% set analyseImpact = getLastAnalyseImpact(conformiteTraitement) %}
                                     {% endif %}
-                                </td>
-                                <td>
-                                    <a href="{{ path('registry_treatment_show', { id: object.id }) }}">
-                                        {{ object.name }}
-                                    </a>
-                                </td>
-                                {% if is_granted('ROLE_REFERENT') %}
-                                    <td>{{ object.collectivity }}</td>
                                 {% endif %}
-                                <td>{{ object.manager }}</td>
-                                {% if conformiteTraitement is not null and conformiteBackgroundColor is defined %}
+                                <tr>
                                     <td>
-                                        <span style="display: none;">{{ conformiteBackgroundColor }}</span>
-                                        {% set labelConforme = 'Conforme' %}
-                                        {% set labelNonConformeMineure = 'Non-conforme mineure' %}
-                                        {% set labelNonConformeMajeure = 'Non-conforme majeure' %}
-
-                                        {% set labelConformiteColor = 'label-danger' %}
-                                        {% set labelConformite = labelNonConformeMajeure %}
-                                        {% if conformiteBackgroundColor == 1 %}
-                                            {% set labelConformiteColor = 'label-success' %}
-                                            {% set labelConformite = labelConforme %}
-                                        {% elseif conformiteBackgroundColor == 2 %}
-                                            {% set labelConformiteColor = 'label-warning' %}
-                                            {% set labelConformite = labelNonConformeMineure %}
+                                        {% if planifiedMesurementToBeNotified is not empty %}
+                                            <div class="mesurement-hide">
+                                                <i aria-hidden="true" class="primary-i fas fa-exclamation-circle"></i>
+                                                <div class="primary">
+                                                    <span>{{ 'registry.conformite_traitement.label.tooltip.mesurements_done'|trans }}</span>
+                                                    <ul>
+                                                        {% for mesurement in planifiedMesurementToBeNotified %}
+                                                            <li>{{ mesurement.name }}</li>
+                                                        {% endfor %}
+                                                    </ul>
+                                                </div>
+                                            </div>
                                         {% endif %}
-                                        <span class="label {{ labelConformiteColor }}" style="min-width: 100%; display: inline-block;">{{ labelConformite }}</span>
-                                    </td>
-                                {% else %}
-                                 <td></td>
-                                {% endif %}
-                                <td>
-                                    {% if conformiteTraitement is not null %}
-                                        <div class="stacked-bar-graph">
-                                            {% if widthNbConforme %}<span style="width:{{ widthNbConforme }}%" class="bar-conforme tooltipchart"><span class="tooltipcharttext">{{ labelConforme }} : {{ conformiteTraitement.nbConformes }}</span></span>{% endif %}
-                                            {% if widthnbNonConformesMineures %}<span style="width:{{ widthnbNonConformesMineures }}%" class="bar-non-conforme-mineure tooltipchart"><span class="tooltipcharttext">{{ labelNonConformeMineure }} : {{ conformiteTraitement.nbNonConformesMineures }}</span></span>{% endif %}
-                                            {% if widthnbNonConformesMajeures %}<span style="width:{{ widthnbNonConformesMajeures }}%" class="bar-non-conforme-majeure tooltipchart"><span class="tooltipcharttext">{{ labelNonConformeMajeure }} : {{ conformiteTraitement.nbNonConformesMajeures }}</span></span>{% endif %}
-                                        </div>
-                                    {% endif %}
-                                </td>
-                                <td>{% if conformiteTraitement is not null %}{{ conformiteTraitement.updatedAt|date('d/m/Y') }}{% else %}<span style="visibility: hidden">01/01/1970</span>{% endif %}</td>
-                                <td>
-                                    {% set statut = "non_realisee" %}
-                                    {% set labelAipdColor = "label-default" %}
-                                    {% if conformiteTraitement is not null and analyseImpact is not null %}
-                                        {% if analyseImpact.statut == "defavorable" %}
-
-                                            {% set labelAipdColor = "label-danger" %}
-                                        {% elseif analyseImpact.statut == "favorable_reserve" %}
-                                            {% set labelAipdColor = "label-warning" %}
-                                        {% elseif analyseImpact.statut == "favorable" %}
-                                            {% set labelAipdColor = "label-success" %}
+                                        {% if conformiteTraitement and conformiteTraitement.needsAipd %}
+                                            {% if analyseImpact is null %}
+                                                <div>
+                                                    <i class="fa fa-exclamation-triangle" aria-label="{{ 'registry.conformite_traitement.label.tooltip.aipd_to_do'|trans }}" title="{{ 'registry.conformite_traitement.label.tooltip.aipd_to_do'|trans }}" style="color:#dd4b39;"></i>
+                                                </div>
+                                            {% else %}
+                                                <div>
+                                                    <i class="fa fa-exclamation-triangle" aria-label="{{ 'registry.conformite_traitement.label.tooltip.aipd_in_progress'|trans }}" title="{{ 'registry.conformite_traitement.label.tooltip.aipd_in_progress'|trans }}" style="color:#f39c12;"></i>
+                                                </div>
+                                            {% endif %}
                                         {% endif %}
-                                        {% set statut = analyseImpact.statut %}
+                                    </td>
+                                    <th scope="row">
+                                        <a href="{{ path('registry_treatment_show', { id: object.id }) }}">
+                                            {{ object.name }}
+                                        </a>
+                                    </th>
+                                    {% if is_granted('ROLE_REFERENT') %}
+                                        <td>{{ object.collectivity }}</td>
                                     {% endif %}
+                                    <td>{{ object.manager }}</td>
+                                    {% if conformiteTraitement is not null and conformiteBackgroundColor is defined %}
+                                        <td>
+                                            <span style="display: none;">{{ conformiteBackgroundColor }}</span>
+                                            {% set labelConforme = 'Conforme' %}
+                                            {% set labelNonConformeMineure = 'Non-conforme mineure' %}
+                                            {% set labelNonConformeMajeure = 'Non-conforme majeure' %}
 
-                                    {% set labelStatut = "aipd.analyse_impact.values." ~ statut %}
-                                    <span class="label {{ labelAipdColor }}" style="min-width: 100%; display: inline-block;">
-                                            {{ labelStatut|trans}}
-                                        </span>
-                                </td>
-                                <td>
-                                    {% if conformiteTraitement is not null and analyseImpact is not null %}
-                                        {{ (conformiteTraitement.analyseImpacts|first).dateValidation|date('d/m/Y') }}
+                                            {% set labelConformiteColor = 'label-danger' %}
+                                            {% set labelConformite = labelNonConformeMajeure %}
+                                            {% if conformiteBackgroundColor == 1 %}
+                                                {% set labelConformiteColor = 'label-success' %}
+                                                {% set labelConformite = labelConforme %}
+                                            {% elseif conformiteBackgroundColor == 2 %}
+                                                {% set labelConformiteColor = 'label-warning' %}
+                                                {% set labelConformite = labelNonConformeMineure %}
+                                            {% endif %}
+                                            <span class="label {{ labelConformiteColor }}" style="min-width: 100%; display: inline-block;">{{ labelConformite }}</span>
+                                        </td>
                                     {% else %}
-                                        <span style="visibility: hidden">01/01/1970</span>
+                                     <td></td>
                                     {% endif %}
-                                </td>
-                                {% if is_granted('ROLE_USER') and ((services_user is empty) or ((object.service is defined) and (object.service in services_user)))%}
                                     <td>
-                                        <a href="{% if conformiteTraitement is null %}{{ path('registry_conformite_traitement_create', {'idTraitement': object.id}) }}{% else %}{{ path('registry_conformite_traitement_edit', {'id': conformiteTraitement.id}) }}{% endif %}">
-                                            <i aria-hidden="true" class="fa fa-pencil"></i>
-                                            {{ 'registry.conformite_traitement.action.show_conformite_traitement'|trans }}
-                                        </a>
                                         {% if conformiteTraitement is not null %}
-                                            {% if analyseImpact is not null %}
-                                                <a href="{{ path('aipd_analyse_impact_edit', {'id': analyseImpact.id}) }}">
-                                                    <i aria-hidden="true" class="fa fa-chalkboard-teacher"></i>
-                                                    {{ 'aipd.analyse_impact.action.edit'|trans }}
-                                                </a>
-                                            {% else %}
-                                                {% if analyseImpact is null %}
+                                            <div class="stacked-bar-graph">
+                                                {% if widthNbConforme %}<span style="width:{{ widthNbConforme }}%" class="bar-conforme tooltipchart"><span class="tooltipcharttext">{{ labelConforme }} : {{ conformiteTraitement.nbConformes }}</span></span>{% endif %}
+                                                {% if widthnbNonConformesMineures %}<span style="width:{{ widthnbNonConformesMineures }}%" class="bar-non-conforme-mineure tooltipchart"><span class="tooltipcharttext">{{ labelNonConformeMineure }} : {{ conformiteTraitement.nbNonConformesMineures }}</span></span>{% endif %}
+                                                {% if widthnbNonConformesMajeures %}<span style="width:{{ widthnbNonConformesMajeures }}%" class="bar-non-conforme-majeure tooltipchart"><span class="tooltipcharttext">{{ labelNonConformeMajeure }} : {{ conformiteTraitement.nbNonConformesMajeures }}</span></span>{% endif %}
+                                            </div>
+                                        {% endif %}
+                                    </td>
+                                    <td>{% if conformiteTraitement is not null %}{{ conformiteTraitement.updatedAt|date('d/m/Y') }}{% else %}<span style="visibility: hidden">01/01/1970</span>{% endif %}</td>
+                                    <td>
+                                        {% set statut = "non_realisee" %}
+                                        {% set labelAipdColor = "label-default" %}
+                                        {% if conformiteTraitement is not null and analyseImpact is not null %}
+                                            {% if analyseImpact.statut == "defavorable" %}
+
+                                                {% set labelAipdColor = "label-danger" %}
+                                            {% elseif analyseImpact.statut == "favorable_reserve" %}
+                                                {% set labelAipdColor = "label-warning" %}
+                                            {% elseif analyseImpact.statut == "favorable" %}
+                                                {% set labelAipdColor = "label-success" %}
+                                            {% endif %}
+                                            {% set statut = analyseImpact.statut %}
+                                        {% endif %}
+
+                                        {% set labelStatut = "aipd.analyse_impact.values." ~ statut %}
+                                        <span class="label {{ labelAipdColor }}" style="min-width: 100%; display: inline-block;">
+                                                {{ labelStatut|trans}}
+                                            </span>
+                                    </td>
+                                    <td>
+                                        {% if conformiteTraitement is not null and analyseImpact is not null %}
+                                            {{ (conformiteTraitement.analyseImpacts|first).dateValidation|date('d/m/Y') }}
+                                        {% else %}
+                                            <span style="visibility: hidden">01/01/1970</span>
+                                        {% endif %}
+                                    </td>
+                                    {% if is_granted('ROLE_USER') and ((services_user is empty) or ((object.service is defined) and (object.service in services_user))) %}
+                                        <td>
+                                            <a href="{% if conformiteTraitement is null %}{{ path('registry_conformite_traitement_create', {'idTraitement': object.id}) }}{% else %}{{ path('registry_conformite_traitement_edit', {'id': conformiteTraitement.id}) }}{% endif %}">
+                                                <i aria-hidden="true" class="fa fa-clipboard-check"></i>
+                                                {{ 'registry.conformite_traitement.action.show_conformite_traitement'|trans }}
+                                            </a>
+                                            {% if conformiteTraitement is not null %}
+                                                {% if analyseImpact is not null %}
+                                                    {% if analyseImpact.isValidated != 1 %}
+                                                        <a href="{{ path('aipd_analyse_impact_edit', {'id': analyseImpact.id}) }}">
+                                                            <i aria-hidden="true" class="fa fa-pencil"></i>
+                                                            {{ 'aipd.analyse_impact.action.edit'|trans }}
+                                                        </a>
+                                                    {% else %}
+                                                        <a href="{{ path('aipd_analyse_impact_print', {'id': analyseImpact.id}) }}">
+                                                            <i aria-hidden="true" class="fa fa-print"></i>
+                                                            {{ 'aipd.analyse_impact.action.print'|trans }}
+                                                        </a>
+                                                    {% endif %}
+                                                {% elseif analyseImpact is null %}
                                                     <a href="{{ path('registry_conformite_traitement_start_aipd', {'id': conformiteTraitement.id}) }}">
-                                                        <i aria-hidden="true" class="fa fa-chalkboard-teacher"></i>
+                                                        <i aria-hidden="true" class="fa fa-magnifying-glass-chart"></i>
                                                         {{ 'aipd.analyse_impact.action.create'|trans }}
                                                     </a>
                                                 {% endif %}
                                             {% endif %}
-                                        {% endif %}
-                                    </td>
-                                {% endif %}
-                            </tr>
-                        {% endfor %}
+                                        </td>
+                                    {% endif %}
+                                </tr>
+                            {% endfor %}
                         </tbody>
                     </table>
-
                 </div>
             </div>
         </div>
diff --git a/templates/Registry/Conformite_traitement/start.html.twig b/templates/Registry/Conformite_traitement/start.html.twig
index 31a78d02aae798cd4887b01126ed0a4922ad64ab..9a9a77f632a210c3b28158f0aeead96b20398b04 100644
--- a/templates/Registry/Conformite_traitement/start.html.twig
+++ b/templates/Registry/Conformite_traitement/start.html.twig
@@ -40,15 +40,16 @@
                 <div class="box box-solid">
                     <div class="box-body">
                         <table id="table" class="table table-bordered">
+                            <caption class="sr-only">{{ 'aipd.modele_analyse.title.list'|trans }}</caption>
                             <thead>
-                            <tr>
-                                <th scope="col"><input class="form-control" type="text" id="search_nom" style="width: 100%;" placeholder="{{ 'aipd.modele_analyse.label.name'|trans }}"></th>
-                                <th scope="col"><input class="form-control" type="text" id="search_description" style="width: 100%;" placeholder="{{ 'aipd.modele_analyse.label.description'|trans }}"></th>
-                            </tr>
-                            <tr>
-                                <th scope="col">{{ 'aipd.modele_analyse.label.name'|trans }}</th>
-                                <th scope="col">{{ 'aipd.modele_analyse.label.description'|trans }}</th>
-                            </tr>
+                                <tr>
+                                    <th scope="col"><input class="form-control" type="text" id="search_nom" style="width: 100%;" placeholder="{{ 'aipd.modele_analyse.label.name'|trans }}"></th>
+                                    <th scope="col"><input class="form-control" type="text" id="search_description" style="width: 100%;" placeholder="{{ 'aipd.modele_analyse.label.description'|trans }}"></th>
+                                </tr>
+                                <tr>
+                                    <th scope="col">{{ 'aipd.modele_analyse.label.name'|trans }}</th>
+                                    <th scope="col">{{ 'aipd.modele_analyse.label.description'|trans }}</th>
+                                </tr>
                             </thead>
                         </table>
                     </div>
diff --git a/templates/Registry/Contractor/list.html.twig b/templates/Registry/Contractor/list.html.twig
index e0d43b339b44eeb7267fcf8838d8bfa396420994..e19e81f0698e1b77ce990738b79fed79ee205113 100644
--- a/templates/Registry/Contractor/list.html.twig
+++ b/templates/Registry/Contractor/list.html.twig
@@ -23,27 +23,23 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                {% if is_granted('ROLE_USER') %}
+        <div class="col-xs-12 mb-1">
+            {% if is_granted('ROLE_USER') %}
                 <a href="{{ path('registry_contractor_create') }}" class="btn btn-default">
                     <i aria-hidden="true" class="fa fa-plus"></i>
                     {{ 'registry.contractor.action.new'|trans }}
                 </a>
-                {% endif %}
-                {% if app.user.roles[0] != 'ROLE_REFERENT' %}
-                <a href="{{ path('registry_contractor_report') }}" class="btn btn-default">
-                    <i aria-hidden="true" class="fa fa-clipboard-list"></i>
-                    {{ 'global.action.report'|trans }}
+            {% endif %}
+            <a href="{{ path('registry_contractor_report') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-clipboard-list"></i>
+                {{ 'global.action.report'|trans }}
+            </a>
+            {% if category and category.documents|length > 0%}
+                <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
+                    <i aria-hidden="true" class="fa fa-circle-info"></i>
+                    {{ 'global.action.documentation'|trans }}
                 </a>
-                {% endif %}
-                {% if category and category.documents|length > 0%}
-                    <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
-                        <i aria-hidden="true" class="fa fa-circle-info"></i>
-                        {{ 'global.action.documentation'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+            {% endif %}
         </div>
     </div>
 
@@ -52,74 +48,73 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <div id="custom-buttons" style="float:left">
-                        <a id="print-all"  href="{{ path('registry_contractor_print_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
+                        <a id="print-all" aria-controls="table" href="{{ path('registry_contractor_print_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
                             {{ 'global.action.print'|trans }}
                         </a>
-                        <a id="delete-all"  href="{{ path('registry_contractor_delete_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
-                            {{ 'global.action.delete'|trans }}
-                        </a>
                     </div>
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'registry.contractor.title.list'|trans }}</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.contractor.label.name'|trans }}" style="width: 100%;">
-                            </th>
-                            {% if is_granted('ROLE_REFERENT') %}
+                            <tr>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.contractor.label.name'|trans }}" style="width: 100%;">
+                                </th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">
+                                        <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    </th>
+                                {% endif %}
+                                <th scope="col">
+                                    <select class="form-control" id="search_clauses" style="width: 100%;">
+                                        <option value="">{{ 'registry.contractor.list.clauses'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
                                 <th scope="col">
-                                    <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    <select class="form-control" id="search_adoption" style="width: 100%;">
+                                        <option value="">{{ 'registry.contractor.list.security'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
                                 </th>
-                            {% endif %}
-                            <th scope="col">
-                                <select class="form-control" id="search_clauses" style="width: 100%;">
-                                    <option value="">{{ 'registry.contractor.list.clauses'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_adoption" style="width: 100%;">
-                                    <option value="">{{ 'registry.contractor.list.security'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_registre" style="width: 100%;">
-                                    <option value="">{{ 'registry.contractor.list.register'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_hors_eu" style="width: 100%;">
-                                    <option value="">{{ 'registry.contractor.list.sending_data_outside_eu'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                        </tr>
-                        <tr>
-                            <th scope="col">{{ 'registry.contractor.label.name'|trans }}</th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                                <th scope="col">{{ 'global.label.organization'|trans }}</th>
-                            {% endif %}
-                            <th scope="col">{{ 'registry.contractor.label.contractual_clauses_verified'|trans }}</th>
-                            <th scope="col">{{ 'registry.contractor.list.adopted_security_features'|trans }}</th>
-                            <th scope="col">{{ 'registry.contractor.list.maintains_treatment_register'|trans }}</th>
-                            <th scope="col">{{ 'registry.contractor.list.sending_data_outside_eu'|trans }}</th>
-                            <th scope="col" style="max-width: 60px;">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col" style="max-width: 60px;">{{ 'global.label.updated_at'|trans }}</th>
-                            {% if is_granted('ROLE_USER') %}
-                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                            {% endif %}
-                        </tr>
+                                <th scope="col">
+                                    <select class="form-control" id="search_registre" style="width: 100%;">
+                                        <option value="">{{ 'registry.contractor.list.register'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_hors_eu" style="width: 100%;">
+                                        <option value="">{{ 'registry.contractor.list.sending_data_outside_eu'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col">{{ 'registry.contractor.label.name'|trans }}</th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">{{ 'global.label.organization'|trans }}</th>
+                                {% endif %}
+                                <th scope="col">{{ 'registry.contractor.label.contractual_clauses_verified'|trans }}</th>
+                                <th scope="col">{{ 'registry.contractor.list.adopted_security_features'|trans }}</th>
+                                <th scope="col">{{ 'registry.contractor.list.maintains_treatment_register'|trans }}</th>
+                                <th scope="col">{{ 'registry.contractor.list.sending_data_outside_eu'|trans }}</th>
+                                <th scope="col" style="max-width: 60px;">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col" style="max-width: 60px;">{{ 'global.label.updated_at'|trans }}</th>
+                                {% if is_granted('ROLE_USER') %}
+                                    <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                                {% endif %}
+                            </tr>
                         </thead>
                     </table>
                 </div>
@@ -187,20 +182,14 @@
             {% endif %}
 
             oTable.on( 'draw', function () {
-                const deleteButton = $('#delete-all')
                 const printButton = $('#print-all')
-                let deleteLink = "{{ path('registry_contractor_delete_all', { }) }}";
                 let printLink = "{{ path('registry_contractor_print_all', { }) }}";
                 let count = oTable.data().rows().count();
 
                 if (count) {
-                    deleteButton.attr("href", deleteLink);
-                    deleteButton.removeClass("disabled");
                     printButton.attr("href", printLink);
                     printButton.removeClass("disabled");
                 } else {
-                    deleteButton.addClass("disabled");
-                    deleteButton.removeAttr("href");
                     printButton.addClass("disabled");
                     printButton.removeAttr("href");
                 }
@@ -209,11 +198,11 @@
             $('#search_created_at').show('slide',function(){
                 $('input#search_created_at').val('');
             });
+
             $('#search_updated_at').show('slide',function(){
                 $('input#search_updated_at').val('');
             });
 
-
             $('#search_nom').off('keyup');
             $('#search_nom').keyup($.debounce(250, function(){
                 oTable.column('0').search($(this).val()).draw() ;
@@ -263,11 +252,10 @@
             $( "#custom-buttons" ).prepend( columnButton.css("float", "left").css("margin-right", "0.5em"));
 
             let exportButton = $("button.dt-button > span:contains('Exporter')").parent();
-            $("#delete-all").before(exportButton.css("bottom", "17px") );
 
-        } );
+        });
         $('#table').on('column-visibility.dt', function() {
             setEvents();
-        } );
+        });
     </script>
 {% endblock %}
diff --git a/templates/Registry/Contractor/show.html.twig b/templates/Registry/Contractor/show.html.twig
index 769ad554269a43060a37a052696963de2efda2ae..d54fdd9b9b4cbe853a3bc00e29d9dfbe3bab221a 100644
--- a/templates/Registry/Contractor/show.html.twig
+++ b/templates/Registry/Contractor/show.html.twig
@@ -249,7 +249,7 @@
             <div class="box box-solid box-warning">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'global.tab.linked_modules'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {# TREATMENTS #}
                             {% include '_Utils/_show_block_treatments.html.twig' with { treatments: object.treatments } %}
diff --git a/templates/Registry/Mesurement/_modal_form.html.twig b/templates/Registry/Mesurement/_modal_form.html.twig
index cfa5a3f8c66801a293352df12260c1eae7335d69..b7d32cf86f59e1e550e69110b17f2abc3c0b60eb 100644
--- a/templates/Registry/Mesurement/_modal_form.html.twig
+++ b/templates/Registry/Mesurement/_modal_form.html.twig
@@ -1,5 +1,5 @@
-<div class="modal fade" id="mesurement-modal" tabindex="-1" role="dialog" aria-labelledby="mesurement-modal-label">
-    <div class="modal-dialog" role="document">
+<div class="modal fade" id="mesurement-modal" tabindex="-1" role="dialog" aria-modal="true" aria-labelledby="myModalLabel">
+    <div class="modal-dialog">
         <div class="modal-content">
             <div class="modal-header">
                 <button type="button" class="close" data-dismiss="modal" aria-label="{{ 'global.action.close'|trans }}"><span aria-hidden="true">&times;</span></button>
diff --git a/templates/Registry/Mesurement/action_plan.html.twig b/templates/Registry/Mesurement/action_plan.html.twig
index f1b3145ffff453e37c4750bd0fe1972f13539b16..3d48eeb3183354829b9be13e6a21f34846522925 100644
--- a/templates/Registry/Mesurement/action_plan.html.twig
+++ b/templates/Registry/Mesurement/action_plan.html.twig
@@ -22,9 +22,9 @@
 {% endblock %}
 
 {% block body %}
-    <div class="row" style="margin-bottom:1em">
-        <div class="col-xs-12">
-            <div class="mb-1">
+    <div class="row">
+        <div class="col-xs-12 mb-1">
+            <div>
                 {% if category and category.documents|length > 0 %}
                     <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
                         <i aria-hidden="true" class="fa fa-circle-info"></i>
@@ -39,57 +39,63 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'registry.mesurement.title.list'|trans }} planifiées</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.mesurement.label.name'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_date_planification" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_cout" placeholder="{{ 'registry.mesurement.label.cost'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_charge" placeholder="{{ 'registry.mesurement.label.charge'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_priorite" style="width: 100%;">
-                                    <option value="">{{ 'registry.mesurement.label.priority'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_mesurement_priority') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_responsable_action" placeholder="{{ 'registry.mesurement.label.manager'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col"></th>
-                            <th scope="col"></th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                        </tr>
-                        <tr>
-                            <th scope="col">{{ 'registry.mesurement.label.name'|trans }}</th>
-                            <th scope="col">{{ 'global.label.organization'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.planification_date'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.cost'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.charge'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.priority'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.manager'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.description'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.comment'|trans }}</th>
-                            <th scope="col">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                        </tr>
+                            <tr>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.mesurement.label.name'|trans }}" style="width: 100%;">
+                                </th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">
+                                        <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    </th>
+                                {% endif %}
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_date_planification" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_cout" placeholder="{{ 'registry.mesurement.label.cost'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_charge" placeholder="{{ 'registry.mesurement.label.charge'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_priorite" style="width: 100%;">
+                                        <option value="">{{ 'registry.mesurement.label.priority'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_mesurement_priority') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_responsable_action" placeholder="{{ 'registry.mesurement.label.manager'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col"></th>
+                                <th scope="col"></th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col">{{ 'registry.mesurement.label.name'|trans }}</th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">{{ 'global.label.organization'|trans }}</th>
+                                {% endif %}
+                                <th scope="col">{{ 'registry.mesurement.label.planification_date'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.cost'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.charge'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.priority'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.manager'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.description'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.comment'|trans }}</th>
+                                <th scope="col">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                            </tr>
                         </thead>
                     </table>
                 </div>
@@ -103,34 +109,60 @@
 
     {% set collectivityIsVisible = false %}
     {% set collectivityClassname = "noVis" %}
+    {% set actionIsVisible = false %}
     {% if is_granted('ROLE_REFERENT') %}
         {% set collectivityIsVisible = true %}
         {% set collectivityClassname = "" %}
     {% endif %}
 
-    {% set dataTableOptions = {
-        columns: [
+    {% if is_granted('ROLE_USER') %}
+        {% set actionIsVisible = true %}
+    {% endif %}
+
+    {% set cols = [
+        {"data": "nom", "className": "noVis"},
+        {"data": "date_planification"},
+        {"data": "cout", "visible": false},
+        {"data": "charge", "visible": false},
+        {"data": "priorite"},
+        {"data": "responsable_action"},
+        {"data": "description", "visible": false, "orderable": true},
+        {"data": "observation", "visible": false, "orderable": true},
+        {"data": "createdAt", "visible": false},
+        {"data": "updatedAt", "visible": false},
+        {"data": "actions", "orderable": false, "className": "noVis", "visible": actionIsVisible},
+    ] %}
+    {% set orders = [
+        [1, 'asc' ]
+    ] %}
+
+    {% if is_granted('ROLE_REFERENT') %}
+        {% set cols = [
             {"data": "nom", "className": "noVis"},
             {"data": "collectivite", "className": collectivityClassname, "visible": collectivityIsVisible},
             {"data": "date_planification"},
-            {"data": "cout"},
-            {"data": "charge"},
+            {"data": "cout", "visible": false},
+            {"data": "charge", "visible": false},
             {"data": "priorite"},
             {"data": "responsable_action"},
-            {"data": "description", "visible": false, "orderable": false},
-            {"data": "observation", "visible": false, "orderable": false},
+            {"data": "description", "visible": false, "orderable": true},
+            {"data": "observation", "visible": false, "orderable": true},
             {"data": "createdAt", "visible": false},
             {"data": "updatedAt", "visible": false},
-            {"data": "actions", "orderable": false, "className": "noVis"},
-        ],
-        order:  [
-            [5, 'desc' ]
-        ],
-        addSubstr : [7, 8],
+            {"data": "actions", "orderable": false, "className": "noVis", "visible": actionIsVisible},
+        ] %}
+        {% set orders = [
+            [2, 'asc' ]
+        ] %}
+    {% endif %}
+
+    {% set dataTableOptions = {
+        columns: cols,
+        order: orders,
     } %}
 
     <script>
-        function substrColRenderFunction (data, type, full, meta){
+        function substrColRenderFunction (data, type, full, meta) {
             let content = data && data.length > 105 ? `<span data-toggle="tooltip" data-placement="bottom" title="${data}">${data.substring(0, 105)}...</span>` : data
             return content;
         }
@@ -139,70 +171,84 @@
     {{ include('_Utils/_serverside_datatable.html.twig') }}
 
     <script>
-        function setEvents() {
+        $(document).ready(function() {
+            $('#table_filter').hide();
+
             var oTable = $('#table').DataTable();
 
-            $('#search_created_at').show('slide',function(){
-                $('input#search_created_at').val('');
-            });
-            $('#search_updated_at').show('slide',function(){
-                $('input#search_updated_at').val('');
-            });
-
-            $('#search_nom').off('keyup');
-            $('#search_nom').keyup($.debounce(250, function(){
-                oTable.column('0').search($(this).val()).draw() ;
-            }));
-
-            $('#search_collectivite').off('keyup');
-            $('#search_collectivite').keyup($.debounce(250, function(){
-                oTable.column('1').search($(this).val()).draw() ;
-            }));
-
-            $('#search_date_planification').off('change');
-            $('#search_date_planification').change(function(){
-                oTable.column('2').search($(this).val()).draw() ;
-            });
-
-            $('#search_cout').off('keyup');
-            $('#search_cout').keyup($.debounce(250, function(){
-                oTable.column('3').search($(this).val()).draw() ;
-            }));
-
-            $('#search_charge').off('keyup');
-            $('#search_charge').keyup($.debounce(250, function(){
-                oTable.column('4').search($(this).val()).draw() ;
-            }));
-
-            $('#search_priorite').off('change');
-            $('#search_priorite').change(function(){
-                oTable.column('5').search($(this).val()).draw() ;
-            });
-
-            $('#search_responsable_action').off('keyup');
-            $('#search_responsable_action').keyup($.debounce(250, function(){
-                oTable.column('6').search($(this).val()).draw() ;
-            }));
-
-            $('#search_created_at').off('change');
-            $('#search_created_at').change(function(){
-                console.log('test2')
-                oTable.column('9').search($(this).val()).draw() ;
-            });
-
-            $('#search_updated_at').off('change');
-            $('#search_updated_at').change(function(){
-                oTable.column('10').search($(this).val()).draw() ;
-            });
-        }
+            function setEvents() {
 
-        $(document).ready(function() {
-            $('#table_filter').hide();
-            setEvents();
-        } );
-        $('#table').on('column-visibility.dt', function() {
+                var col = 0;
+                {% if is_granted('ROLE_REFERENT') %}
+                    col = 1;
+                {% endif %}
+
+                $('#search_date_planification').show('slide', function () {
+                    $('input#search_date_planification').val('');
+                });
+
+                $('#search_created_at').show('slide', function () {
+                    $('input#search_created_at').val('');
+                });
+
+                $('#search_updated_at').show('slide', function () {
+                    $('input#search_updated_at').val('');
+                });
+
+                $('#search_nom').keyup($.debounce(250, function () {
+                    oTable.column('0').search($(this).val()).draw();
+                }));
+
+                {% if is_granted('ROLE_REFERENT') %}
+                    $('#search_collectivite').keyup($.debounce(250, function () {
+                        oTable.column('1').search($(this).val()).draw();
+                    }));
+                {% endif %}
+
+                $('#search_date_planification').off('change');
+                $('#search_date_planification').change(function () {
+                    oTable.column(col+1).search($(this).val()).draw();
+                });
+
+                $('#search_cout').keyup($.debounce(250, function () {
+                    oTable.column(col+2).search($(this).val()).draw();
+                }));
+
+                $('#search_charge').keyup($.debounce(250, function () {
+                    oTable.column(col+3).search($(this).val()).draw();
+                }));
+
+                $('#search_priorite').change(function () {
+                    oTable.column(col+4).search($(this).val()).draw();
+                });
+
+                $('#search_responsable_action').keyup($.debounce(250, function () {
+                    oTable.column(col+5).search($(this).val()).draw();
+                }));
+
+                $('#search_description').keyup($.debounce(250, function () {
+                    oTable.column(col+6).search($(this).val()).draw();
+                }));
+
+                $('#search_observation').keyup($.debounce(250, function () {
+                    oTable.column(col+7).search($(this).val()).draw();
+                }));
+
+                $('#search_created_at').off('change');
+                $('#search_created_at').change(function () {
+                    oTable.column(col+8).search($(this).val()).draw();
+                });
+
+                $('#search_updated_at').off('change');
+                $('#search_updated_at').change(function () {
+                    oTable.column(col+9).search($(this).val()).draw();
+                });
+            }
+
+            $('#table').on('column-visibility.dt', function() {
+                setEvents();
+            } );
             setEvents();
         } );
     </script>
-
 {% endblock %}
diff --git a/templates/Registry/Mesurement/list.html.twig b/templates/Registry/Mesurement/list.html.twig
index 322a20322f92e59cb64587b1e544ae9a3b39753e..991a33f226ce0fb73e45bde6f9aaf4ea684a5c8a 100644
--- a/templates/Registry/Mesurement/list.html.twig
+++ b/templates/Registry/Mesurement/list.html.twig
@@ -23,19 +23,19 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
+        <div class="col-xs-12 mb-1">
+            <div>
                 {% if is_granted('ROLE_USER') %}
-                <a href="{{ path('registry_mesurement_create') }}" class="btn btn-default">
-                    <i aria-hidden="true" class="fa fa-plus"></i>
-                    {{ 'registry.mesurement.action.new'|trans }}
-                </a>
+                    <a href="{{ path('registry_mesurement_create') }}" class="btn btn-default">
+                        <i aria-hidden="true" class="fa fa-plus"></i>
+                        {{ 'registry.mesurement.action.new'|trans }}
+                    </a>
                 {% endif %}
                 {% if app.user.roles[0] != 'ROLE_REFERENT' %}
-                <a href="{{ path('registry_mesurement_report') }}" class="btn btn-default">
-                    <i aria-hidden="true" class="fa fa-clipboard-list"></i>
-                    {{ 'global.action.report'|trans }}
-                </a>
+                    <a href="{{ path('registry_mesurement_report') }}" class="btn btn-default">
+                        <i aria-hidden="true" class="fa fa-clipboard-list"></i>
+                        {{ 'global.action.report'|trans }}
+                    </a>
                 {% endif %}
                 {% if category and category.documents|length > 0 %}
                     <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
@@ -52,83 +52,85 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <div id="custom-buttons" style="float:left">
-                        <a id="print-all" href="" class="dt-button buttons-collection buttons-colvis">
+                        <a id="print-all" aria-controls="table" href="" class="dt-button buttons-collection buttons-colvis">
                             {{ 'global.action.print'|trans }}
                         </a>
                         {% if app.user.roles[0] != 'ROLE_PREVIEW' %}
-                            <a id="delete-all"  href="" class="dt-button buttons-collection buttons-colvis">
+                            <a id="delete-all" aria-controls="table" href="" class="dt-button buttons-collection buttons-colvis">
                                 {{ 'global.action.delete'|trans }}
                             </a>
                         {% endif %}
                     </div>
 
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'registry.mesurement.title.list'|trans }}</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.mesurement.label.name'|trans }}" style="width: 100%;">
-                            </th>
-                            {% if is_granted('ROLE_REFERENT') %}
+                            <tr>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.mesurement.label.name'|trans }}" style="width: 100%;">
+                                </th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">
+                                        <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    </th>
+                                {% endif %}
+                                <th scope="col">
+                                    <select class="form-control" id="search_statut" style="width: 100%;">
+                                        <option value="">{{ 'registry.mesurement.label.status'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_mesurement_status') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_cout" placeholder="{{ 'registry.mesurement.label.cost'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_charge" placeholder="{{ 'registry.mesurement.label.charge'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_priorite" style="width: 100%;">
+                                        <option value="">{{ 'registry.mesurement.label.priority'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_mesurement_priority') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_responsable_action" placeholder="{{ 'registry.mesurement.label.manager'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_description" placeholder="{{ 'registry.mesurement.label.description'|trans }}" style="width: 100%;">
+                                </th>
                                 <th scope="col">
-                                    <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    <input class="form-control" type="text" id="search_observation" placeholder="{{ 'registry.mesurement.label.comment'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
                                 </th>
-                            {% endif %}
-                            <th scope="col">
-                                <select class="form-control" id="search_statut" style="width: 100%;">
-                                    <option value="">{{ 'registry.mesurement.label.status'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_mesurement_status') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_cout" placeholder="{{ 'registry.mesurement.label.cost'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_charge" placeholder="{{ 'registry.mesurement.label.charge'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_priorite" style="width: 100%;">
-                                    <option value="">{{ 'registry.mesurement.label.priority'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_mesurement_priority') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_responsable_action" placeholder="{{ 'registry.mesurement.label.manager'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_description" placeholder="{{ 'registry.mesurement.label.description'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_observation" placeholder="{{ 'registry.mesurement.label.comment'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                        </tr>
-                        <tr>
-                            <th scope="col">{{ 'registry.mesurement.label.name'|trans }}</th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                                <th scope="col">{{ 'global.label.organization'|trans }}</th>
-                            {% endif %}
-                            <th scope="col">{{ 'registry.mesurement.label.status'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.cost'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.charge'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.priority'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.manager'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.description'|trans }}</th>
-                            <th scope="col">{{ 'registry.mesurement.label.comment'|trans }}</th>
-                            <th scope="col">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
-                            {% if is_granted('ROLE_USER') %}
-                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                            {% endif %}
-                        </tr>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col">{{ 'registry.mesurement.label.name'|trans }}</th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">{{ 'global.label.organization'|trans }}</th>
+                                {% endif %}
+                                <th scope="col">{{ 'registry.mesurement.label.status'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.cost'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.charge'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.priority'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.manager'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.description'|trans }}</th>
+                                <th scope="col">{{ 'registry.mesurement.label.comment'|trans }}</th>
+                                <th scope="col">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
+                                {% if is_granted('ROLE_USER') %}
+                                    <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                                {% endif %}
+                            </tr>
                         </thead>
                     </table>
                 </div>
@@ -155,8 +157,8 @@
     {% set cols = [
         {"data": "nom", "className": "noVis"},
         {"data": "statut"},
-        {"data": "cout"},
-        {"data": "charge"},
+        {"data": "cout", "visible": false},
+        {"data": "charge", "visible": false},
         {"data": "priorite"},
         {"data": "responsable_action"},
         {"data": "description", "visible": false, "orderable": true},
@@ -171,8 +173,8 @@
             {"data": "nom", "className": "noVis"},
             {"data": "collectivite", "className": collectivityClassname, "visible": collectivityIsVisible},
             {"data": "statut"},
-            {"data": "cout"},
-            {"data": "charge"},
+            {"data": "cout", "visible": false},
+            {"data": "charge", "visible": false},
             {"data": "priorite"},
             {"data": "responsable_action"},
             {"data": "description", "visible": false, "orderable": true},
@@ -186,7 +188,7 @@
     {% set dataTableOptions = {
         columns: cols,
         order:  [
-            [5, 'desc' ]
+            [0, 'asc' ]
         ],
         addSubstr : [7, 8],
     } %}
@@ -231,51 +233,62 @@
                 let columnButton = $("button.dt-button > span:contains('Colonnes')").parent();
                 $("#custom-buttons").prepend(columnButton.css("float", "left").css("margin-right", "0.5em"));
 
-                let exportButton = $("button.dt-button > span:contains('Exporter')").parent();
-                $("#delete-all").before(exportButton.css("bottom", "17px"));
+                {% if app.user.roles[0] != 'ROLE_PREVIEW' %}
+                    let exportButton = $("button.dt-button > span:contains('Exporter')").parent();
+                    $("#delete-all").before(exportButton.css("bottom", "17px"));
+                {% endif %}
 
                 var col = 0;
                 {% if is_granted('ROLE_REFERENT') %}
-                col = 1;
+                    col = 1;
                 {% endif %}
 
                 $('#search_created_at').show('slide', function () {
                     $('input#search_created_at').val('');
                 });
+
                 $('#search_updated_at').show('slide', function () {
                     $('input#search_updated_at').val('');
-
                 });
 
                 $('#search_nom').keyup($.debounce(250, function () {
                     oTable.column('0').search($(this).val()).draw();
                 }));
+
                 {% if is_granted('ROLE_REFERENT') %}
-                $('#search_collectivite').keyup($.debounce(250, function () {
-                    oTable.column('1').search($(this).val()).draw();
-                }));
+                    $('#search_collectivite').keyup($.debounce(250, function () {
+                        oTable.column('1').search($(this).val()).draw();
+                    }));
                 {% endif %}
+
                 $('#search_statut').change(function () {
                     oTable.column(col+1).search($(this).val()).draw();
                 });
+
                 $('#search_cout').keyup($.debounce(250, function () {
                     oTable.column(col+2).search($(this).val()).draw();
                 }));
+
                 $('#search_charge').keyup($.debounce(250, function () {
                     oTable.column(col+3).search($(this).val()).draw();
                 }));
+
                 $('#search_priorite').change(function () {
                     oTable.column(col+4).search($(this).val()).draw();
                 });
+
                 $('#search_responsable_action').keyup($.debounce(250, function () {
                     oTable.column(col+5).search($(this).val()).draw();
                 }));
+
                 $('#search_description').keyup($.debounce(250, function () {
                     oTable.column(col+6).search($(this).val()).draw();
                 }));
+
                 $('#search_observation').keyup($.debounce(250, function () {
                     oTable.column(col+7).search($(this).val()).draw();
                 }));
+
                 $('#search_created_at').off('change');
                 $('#search_created_at').change(function () {
                     oTable.column(col+8).search($(this).val()).draw();
diff --git a/templates/Registry/Mesurement/show.html.twig b/templates/Registry/Mesurement/show.html.twig
index 2af9a9bf4b20b75a1e180b6084f6be7515147be9..f4c835e2026974a4a9a6004566bcd518872d20a9 100644
--- a/templates/Registry/Mesurement/show.html.twig
+++ b/templates/Registry/Mesurement/show.html.twig
@@ -156,7 +156,7 @@
             <div class="box box-solid box-warning">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'global.tab.linked_modules'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {# TREATMENTS #}
                             {% include '_Utils/_show_block_treatments.html.twig' with { treatments: object.treatments } %}
diff --git a/templates/Registry/Proof/_form.html.twig b/templates/Registry/Proof/_form.html.twig
index 2ee2d576726490c2a2e6c3cbb6d3777c04699642..9d06cfa64a377dc192540c0f6f9ad4fa88617d3a 100644
--- a/templates/Registry/Proof/_form.html.twig
+++ b/templates/Registry/Proof/_form.html.twig
@@ -24,9 +24,9 @@
             <div class="box-header with-border"><h3 class="box-title">{{ 'registry.proof.tab.upload'|trans }}</h3></div>
             <div class="box-body">
                 {{ form_row(form.documentFile) }}
-                <div class="callout callout-default text-muted">
+                <p aria-describedby="proof_documentFile" class="callout callout-default text-muted">
                     {{ 'registry.proof.label.help.file' | trans({'max_size': app_max_upload_size}) }}
-                </div>
+                </p>
             </div>
         </div>
     </div>
diff --git a/templates/Registry/Proof/list.html.twig b/templates/Registry/Proof/list.html.twig
index bf85daf24f34b888a492f4e1e592633f117a84c9..bd01ee11dd0eb7e141bea94c382972ec87d4b3ab 100644
--- a/templates/Registry/Proof/list.html.twig
+++ b/templates/Registry/Proof/list.html.twig
@@ -32,42 +32,36 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                {% if is_granted('ROLE_USER') %}
+        <div class="col-xs-12 mb-1">
+            {% if is_granted('ROLE_USER') %}
                 <a href="{{ path('registry_proof_create') }}" class="btn btn-default">
                     <i aria-hidden="true" class="fa fa-plus"></i>
                     {{ 'registry.proof.action.new'|trans }}
                 </a>
-                {% endif %}
-                {#<a href="{{ path('registry_proof_report') }}" class="btn btn-default">
-                    <i aria-hidden="true" class="fa fa-clipboard-list"></i>
-                    {{ 'registry.proof.action.report'|trans }}
-                </a>#}
-                {% if app.request.query.get('archive') == 'true' %}
-                    <a href="{{ path('registry_proof_list', {'archive' : 'false'}) }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-archive"></i>
-                        {{ 'registry.proof.action.not_archived'|trans }}
-                    </a>
-                {% else %}
-                    <a href="{{ path('registry_proof_list', {'archive' : 'true'}) }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-archive"></i>
-                        {{ 'registry.proof.action.archived'|trans }}
-                    </a>
-                {% endif %}
-                {% if category and category.documents|length > 0 %}
-                    <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
-                        <i aria-hidden="true" class="fa fa-circle-info"></i>
-                        {{ 'global.action.documentation'|trans }}
-                    </a>
-                {% endif %}
-                {% if app.request.query.get('archive') != 'true' %}
-                    <a href="{{ path('registry_proof_download_all') }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-download"></i>
-                        {{ 'registry.proof.action.download'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+            {% endif %}
+            {% if app.request.query.get('archive') != 'true' %}
+                <a href="{{ path('registry_proof_download_all') }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-download"></i>
+                    {{ 'registry.proof.action.download'|trans }}
+                </a>
+            {% endif %}
+            {% if app.request.query.get('archive') == 'true' %}
+                <a href="{{ path('registry_proof_list', {'archive' : 'false'}) }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-archive"></i>
+                    {{ 'registry.proof.action.not_archived'|trans }}
+                </a>
+            {% else %}
+                <a href="{{ path('registry_proof_list', {'archive' : 'true'}) }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-archive"></i>
+                    {{ 'registry.proof.action.archived'|trans }}
+                </a>
+            {% endif %}
+            {% if category and category.documents|length > 0 %}
+                <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
+                    <i aria-hidden="true" class="fa fa-circle-info"></i>
+                    {{ 'global.action.documentation'|trans }}
+                </a>
+            {% endif %}
         </div>
     </div>
 
@@ -76,46 +70,47 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'registry.proof.title.list'|trans }} {% if app.request.query.get('archive') == 'true' %}{{ 'registry.proof.title.list_archived'|trans }}{% else %}{{ 'registry.proof.title.list_not_archived'|trans }}{% endif %}</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.proof.label.name'|trans }}" style="width: 100%;">
-                            </th>
-                            {% if is_granted('ROLE_REFERENT') %}
+                            <tr>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.proof.label.name'|trans }}" style="width: 100%;">
+                                </th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">
+                                        <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    </th>
+                                {% endif %}
                                 <th scope="col">
-                                    <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    <select class="form-control" id="search_type" style="width: 100%;">
+                                        <option value="">{{ 'registry.proof.label.type'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_proof_type') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_commentaire" placeholder="{{ 'registry.proof.label.comment'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
                                 </th>
-                            {% endif %}
-                            <th scope="col">
-                                <select class="form-control" id="search_type" style="width: 100%;">
-                                    <option value="">{{ 'registry.proof.label.type'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_proof_type') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_commentaire" placeholder="{{ 'registry.proof.label.comment'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col"></th>
-                        </tr>
-                        <tr>
-                            <th scope="col">{{ 'registry.proof.label.name'|trans }}</th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                                <th scope="col">{{ 'global.label.organization'|trans }}</th>
-                            {% endif %}
-                            <th scope="col">{{ 'registry.proof.label.type'|trans }}</th>
-                            <th scope="col">{{ 'registry.proof.label.comment'|trans }}</th>
-                            <th scope="col">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                        </tr>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col">{{ 'registry.proof.label.name'|trans }}</th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">{{ 'global.label.organization'|trans }}</th>
+                                {% endif %}
+                                <th scope="col">{{ 'registry.proof.label.type'|trans }}</th>
+                                <th scope="col">{{ 'registry.proof.label.comment'|trans }}</th>
+                                <th scope="col">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                            </tr>
                         </thead>
                     </table>
                 </div>
diff --git a/templates/Registry/Request/_form.html.twig b/templates/Registry/Request/_form.html.twig
index 58a530de53ae32b8c749fdf6ffd5c68096ffbff1..1a71908fe2f7c424729a4b8e6b86a2b174d6aa62 100644
--- a/templates/Registry/Request/_form.html.twig
+++ b/templates/Registry/Request/_form.html.twig
@@ -69,9 +69,9 @@
         <div id="box-concerned-people" class="box box-solid box-success">
             <div class="box-header with-border"><h3 class="box-title">{{ 'registry.request.tab.concerned_people'|trans }}</h3></div>
             <div class="box-body">
-                <div class="callout callout-default text-muted">
+                <p class="callout callout-default text-muted">
                     {{ 'registry.request.label.help.concerned_people'|trans }}
-                </div>
+                </p>
                 {{ form_row(form.concernedPeople.civility, {'attr': {'autocomplete': 'honorific-prefix'}}) }}
                 {{ form_row(form.concernedPeople.firstName, {'attr': {'autocomplete': 'given-name'}}) }}
                 {{ form_row(form.concernedPeople.lastName, {'attr': {'autocomplete': 'family-name'}}) }}
diff --git a/templates/Registry/Request/list.html.twig b/templates/Registry/Request/list.html.twig
index 9ba6fae3eb6b90e15c63c30c55d99c0816384cd3..1a9f015ff9d5b3b1afc9a73613a1830aa57c10c4 100644
--- a/templates/Registry/Request/list.html.twig
+++ b/templates/Registry/Request/list.html.twig
@@ -33,38 +33,34 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                {% if is_granted('ROLE_USER') %}
+        <div class="col-xs-12 mb-1">
+            {% if is_granted('ROLE_USER') %}
                 <a href="{{ path('registry_request_create') }}" class="btn btn-default">
                     <i aria-hidden="true" class="fa fa-plus"></i>
                     {{ 'registry.request.action.new'|trans }}
                 </a>
-                {% endif %}
-                {% if app.user.roles[0] != 'ROLE_REFERENT' %}
-                <a href="{{ path('registry_request_report') }}" class="btn btn-default">
-                    <i aria-hidden="true" class="fa fa-clipboard-list"></i>
-                    {{ 'global.action.report'|trans }}
+            {% endif %}
+            <a href="{{ path('registry_request_report') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-clipboard-list"></i>
+                {{ 'global.action.report'|trans }}
+            </a>
+            {% if app.request.query.get('archive') == 'true' %}
+                <a href="{{ path('registry_request_list', {'archive' : 'false'}) }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-archive"></i>
+                    {{ 'registry.request.action.not_archived'|trans }}
+                </a>
+            {% else %}
+                <a href="{{ path('registry_request_list', {'archive' : 'true'}) }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-archive"></i>
+                    {{ 'registry.request.action.archived'|trans }}
                 </a>
-                {% endif %}
-                {% if app.request.query.get('archive') == 'true' %}
-                    <a href="{{ path('registry_request_list', {'archive' : 'false'}) }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-archive"></i>
-                        {{ 'registry.request.action.not_archived'|trans }}
-                    </a>
-                {% else %}
-                    <a href="{{ path('registry_request_list', {'archive' : 'true'}) }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-archive"></i>
-                        {{ 'registry.request.action.archived'|trans }}
-                    </a>
-                {% endif %}
-                {% if category and category.documents|length > 0 %}
-                    <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
-                        <i aria-hidden="true" class="fa fa-circle-info"></i>
-                        {{ 'global.action.documentation'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+            {% endif %}
+            {% if category and category.documents|length > 0 %}
+                <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
+                    <i aria-hidden="true" class="fa fa-circle-info"></i>
+                    {{ 'global.action.documentation'|trans }}
+                </a>
+            {% endif %}
         </div>
     </div>
 
@@ -76,88 +72,90 @@
                         {# <a id="delete-all"  href="{{ path('registry_request_delete_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
                             {{ 'global.action.archive'|trans }}
                         </a> #}
-                        <a id="print-all" href="{{ path('registry_request_print_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
+                        <a id="print-all" aria-controls="table" href="{{ path('registry_request_print_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
                             {{ 'global.action.print'|trans }}
                         </a>
                     </div>
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'registry.request.title.list'|trans }} {% if app.request.query.get('archive') == 'true' %}{{ 'registry.request.title.list_archived'|trans }}{% else %}{{ 'registry.request.title.list_not_archived'|trans }}{% endif %}</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_personne_concernee" placeholder="{{ 'registry.request.label.concerned_people'|trans }}" style="width: 100%;">
-                            </th>
-                            {% if is_granted('ROLE_REFERENT') %}
+                            <tr>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_personne_concernee" placeholder="{{ 'registry.request.label.concerned_people'|trans }}" style="width: 100%;">
+                                </th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">
+                                        <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    </th>
+                                {% endif %}
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_date_demande" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
                                 <th scope="col">
-                                    <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    <select class="form-control" id="search_objet" style="width: 100%;">
+                                        <option value="">{{ 'registry.request.label.object'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_request_object') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_complete" style="width: 100%;">
+                                        <option value="">{{ 'registry.request.label.complete'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_demandeur" style="width: 100%;">
+                                        <option value="">{{ 'registry.request.label.legitimate_applicant'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_legitime" style="width: 100%;">
+                                        <option value="">{{ 'registry.request.label.legitimate_request'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_date_traitement" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_etat" style="width: 100%;">
+                                        <option value="">{{ 'registry.request.label.state'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_request_state') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
                                 </th>
-                            {% endif %}
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_date_demande" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_objet" style="width: 100%;">
-                                    <option value="">{{ 'registry.request.label.object'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_request_object') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_complete" style="width: 100%;">
-                                    <option value="">{{ 'registry.request.label.complete'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_demandeur" style="width: 100%;">
-                                    <option value="">{{ 'registry.request.label.legitimate_applicant'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_legitime" style="width: 100%;">
-                                    <option value="">{{ 'registry.request.label.legitimate_request'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_date_traitement" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_etat" style="width: 100%;">
-                                    <option value="">{{ 'registry.request.label.state'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_request_state') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                        </tr>
-                        <tr>
-                            <th scope="col">{{ 'registry.request.label.concerned_people'|trans }}</th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                                <th scope="col">{{ 'global.label.organization'|trans }}</th>
-                            {% endif %}
-                            <th scope="col">{{ 'registry.request.label.date'|trans }}</th>
-                            <th scope="col">{{ 'registry.request.label.object'|trans }}</th>
-                            <th scope="col">{{ 'registry.request.label.complete'|trans }}</th>
-                            <th scope="col">{{ 'registry.request.label.legitimate_applicant'|trans }}</th>
-                            <th scope="col">{{ 'registry.request.label.legitimate_request'|trans }}</th>
-                            <th scope="col">{{ 'registry.request.label.answer_date'|trans }}</th>
-                            <th scope="col">{{ 'registry.request.label.state'|trans }}</th>
-                            <th scope="col" style="max-width: 60px;">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col" style="max-width: 60px;">{{ 'global.label.updated_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                        </tr>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col">{{ 'registry.request.label.concerned_people'|trans }}</th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">{{ 'global.label.organization'|trans }}</th>
+                                {% endif %}
+                                <th scope="col">{{ 'registry.request.label.date'|trans }}</th>
+                                <th scope="col">{{ 'registry.request.label.object'|trans }}</th>
+                                <th scope="col">{{ 'registry.request.label.complete'|trans }}</th>
+                                <th scope="col">{{ 'registry.request.label.legitimate_applicant'|trans }}</th>
+                                <th scope="col">{{ 'registry.request.label.legitimate_request'|trans }}</th>
+                                <th scope="col">{{ 'registry.request.label.answer_date'|trans }}</th>
+                                <th scope="col">{{ 'registry.request.label.state'|trans }}</th>
+                                <th scope="col" style="max-width: 60px;">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col" style="max-width: 60px;">{{ 'global.label.updated_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                            </tr>
                         </thead>
                     </table>
                 </div>
diff --git a/templates/Registry/Request/show.html.twig b/templates/Registry/Request/show.html.twig
index 256af012ddb93218cd41e32ab3475fafdabdc19b..68b578cd5aa848db67b3e8914e05a71b60d5385a 100644
--- a/templates/Registry/Request/show.html.twig
+++ b/templates/Registry/Request/show.html.twig
@@ -276,7 +276,7 @@
             <div class="box box-solid box-warning">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'global.tab.linked_modules'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {# TREATMENTS #}
                             {% include '_Utils/_show_block_treatments.html.twig' with { treatments: object.treatments } %}
diff --git a/templates/Registry/Tool/list.html.twig b/templates/Registry/Tool/list.html.twig
index 24a189235d1a94d3561da17130964a5171d41643..98ecab81894c352b0a558a01a7519f71a560a96e 100644
--- a/templates/Registry/Tool/list.html.twig
+++ b/templates/Registry/Tool/list.html.twig
@@ -23,28 +23,23 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                {% if is_granted('ROLE_USER') %}
+        <div class="col-xs-12 mb-1">
+            {% if is_granted('ROLE_USER') %}
                 <a href="{{ path('registry_tool_create') }}" class="btn btn-default">
                     <i aria-hidden="true" class="fa fa-plus"></i>
                     {{ 'registry.tool.action.new'|trans }}
                 </a>
-                {% endif %}
-                {% if app.user.roles[0] != 'ROLE_REFERENT' %}
-                    <a href="{{ path('registry_tool_report') }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-clipboard-list"></i>
-                        {{ 'global.action.report'|trans }}
-                    </a>
-                {% endif %}
-
-                {% if category is defined and category and category.documents|length > 0 %}
-                    <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
-                        <i aria-hidden="true" class="fa fa-circle-info"></i>
-                        {{ 'global.action.documentation'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+            {% endif %}
+            <a href="{{ path('registry_tool_report') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-clipboard-list"></i>
+                {{ 'global.action.report'|trans }}
+            </a>
+            {% if category is defined and category and category.documents|length > 0 %}
+                <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
+                    <i aria-hidden="true" class="fa fa-circle-info"></i>
+                    {{ 'global.action.documentation'|trans }}
+                </a>
+            {% endif %}
         </div>
     </div>
 
@@ -53,136 +48,135 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover" style="clear: both;">
+                        <caption class="sr-only">{{ 'registry.tool.title.list'|trans }}</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.tool.label.name'|trans }}" style="width: 100%;">
-                            </th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                                <th scope="col" >
-                                    <input class="form-control" type="text" id="search_collectivity" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                            <tr>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.tool.label.name'|trans }}" style="width: 100%;">
+                                </th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">
+                                        <input class="form-control" type="text" id="search_collectivity" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    </th>
+                                {% endif %}
+                                <th scope="col">
+                                    <select class="form-control" id="search_type" style="width: 100%;">
+                                        <option value="">{{ 'registry.tool.label.type'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_tool_type') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_editor" placeholder="{{ 'registry.tool.label.editor'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_archival" style="width: 100%;">
+                                        <option value="">{{ 'registry.tool.label.archival'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_encrypted" style="width: 100%;">
+                                        <option value="">{{ 'registry.tool.label.encrypted'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_access_control" style="width: 100%;">
+                                        <option value="">{{ 'registry.tool.label.access_control'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_update" style="width: 100%;">
+                                        <option value="">{{ 'registry.tool.label.update'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
                                 </th>
-                            {% endif %}
-                            <th scope="col" >
-                                <select class="form-control" id="search_type" style="width: 100%;">
-                                    <option value="">{{ 'registry.tool.label.type'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_tool_type') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col" >
-                                <input class="form-control" type="text" id="search_editor" placeholder="{{ 'registry.tool.label.editor'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col" >
-                                <select class="form-control" id="search_archival" style="width: 100%;">
-                                    <option value="">{{ 'registry.tool.label.archival'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col" >
-                                <select class="form-control" id="search_encrypted" style="width: 100%;">
-                                    <option value="">{{ 'registry.tool.label.encrypted'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col" >
-                                <select class="form-control" id="search_access_control" style="width: 100%;">
-                                    <option value="">{{ 'registry.tool.label.access_control'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col" >
-                                <select class="form-control" id="search_update" style="width: 100%;">
-                                    <option value="">{{ 'registry.tool.label.update'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col" >
-                                <select class="form-control" id="search_backup" style="width: 100%;">
-                                    <option value="">{{ 'registry.tool.label.backup'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col" >
-                                <select class="form-control" id="search_deletion" style="width: 100%;">
-                                    <option value="">{{ 'registry.tool.label.deletion'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col" >
-                                <select class="form-control" id="search_tracking" style="width: 100%;">
-                                    <option value="">{{ 'registry.tool.label.tracking'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col" >
-                                <select class="form-control" id="search_has_comment" style="width: 100%;">
-                                    <option value="">{{ 'registry.tool.label.has_comment'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col" >
-                                <select class="form-control" id="search_other" style="width: 100%;">
-                                    <option value="">{{ 'registry.tool.label.other'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col" >
-                                <input class="form-control" type="text" id="search_treatment" placeholder="{{ 'global.label.linked_treatment'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col" >
-                                <input class="form-control" type="text" id="search_contractor" placeholder="{{ 'global.label.linked_contractor'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col" >
-                                <input class="form-control" type="text" id="search_document" placeholder="{{ 'global.label.linked_proof'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col" >
-                                <input class="form-control" type="text" id="search_action" placeholder="{{ 'global.label.linked_mesurement'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" ></th>
-                        </tr>
-                        <tr>
-                            <th scope="col" >{{ 'registry.tool.label.name'|trans }}</th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                            <th scope="col" >{{ 'global.label.organization'|trans }}</th>
-                            {% endif %}
-                            <th scope="col" >{{ 'registry.tool.label.type'|trans }}</th>
-                            <th scope="col" >{{ 'registry.tool.label.editor'|trans }}</th>
-                            <th scope="col" >{{ 'registry.tool.label.archival'|trans }}</th>
-                            <th scope="col" >{{ 'registry.tool.label.encrypted'|trans }}</th>
-                            <th scope="col" >{{ 'registry.tool.label.access_control'|trans }}</th>
-                            <th scope="col" >{{ 'registry.tool.label.update'|trans }}</th>
-                            <th scope="col" >{{ 'registry.tool.label.backup'|trans }}</th>
-                            <th scope="col" >{{ 'registry.tool.label.deletion'|trans }}</th>
-                            <th scope="col" >{{ 'registry.tool.label.tracking'|trans }}</th>
-                            <th scope="col" >{{ 'registry.tool.label.has_comment'|trans }}</th>
-                            <th scope="col" >{{ 'registry.tool.label.other'|trans }}</th>
-                            <th scope="col" >{{ 'global.label.linked_treatment'|trans }}</th>
-                            <th scope="col" >{{ 'global.label.linked_contractor'|trans }}</th>
-                            <th scope="col" >{{ 'global.label.linked_proof'|trans }}</th>
-                            <th scope="col" >{{ 'global.label.linked_mesurement'|trans }}</th>
-                            <th scope="col" >{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col" >{{ 'global.label.updated_at'|trans }}</th>
-                            {% if is_granted('ROLE_USER') %}
+                                <th scope="col">
+                                    <select class="form-control" id="search_backup" style="width: 100%;">
+                                        <option value="">{{ 'registry.tool.label.backup'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_deletion" style="width: 100%;">
+                                        <option value="">{{ 'registry.tool.label.deletion'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_tracking" style="width: 100%;">
+                                        <option value="">{{ 'registry.tool.label.tracking'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_has_comment" style="width: 100%;">
+                                        <option value="">{{ 'registry.tool.label.has_comment'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_other" style="width: 100%;">
+                                        <option value="">{{ 'registry.tool.label.other'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_treatment" placeholder="{{ 'global.label.linked_treatment'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_contractor" placeholder="{{ 'global.label.linked_contractor'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_document" placeholder="{{ 'global.label.linked_proof'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_action" placeholder="{{ 'global.label.linked_mesurement'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col" >{{ 'registry.tool.label.name'|trans }}</th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                <th scope="col" >{{ 'global.label.organization'|trans }}</th>
+                                {% endif %}
+                                <th scope="col" >{{ 'registry.tool.label.type'|trans }}</th>
+                                <th scope="col" >{{ 'registry.tool.label.editor'|trans }}</th>
+                                <th scope="col" >{{ 'registry.tool.label.archival'|trans }}</th>
+                                <th scope="col" >{{ 'registry.tool.label.encrypted'|trans }}</th>
+                                <th scope="col" >{{ 'registry.tool.label.access_control'|trans }}</th>
+                                <th scope="col" >{{ 'registry.tool.label.update'|trans }}</th>
+                                <th scope="col" >{{ 'registry.tool.label.backup'|trans }}</th>
+                                <th scope="col" >{{ 'registry.tool.label.deletion'|trans }}</th>
+                                <th scope="col" >{{ 'registry.tool.label.tracking'|trans }}</th>
+                                <th scope="col" >{{ 'registry.tool.label.has_comment'|trans }}</th>
+                                <th scope="col" >{{ 'registry.tool.label.other'|trans }}</th>
+                                <th scope="col" >{{ 'global.label.linked_treatment'|trans }}</th>
+                                <th scope="col" >{{ 'global.label.linked_contractor'|trans }}</th>
+                                <th scope="col" >{{ 'global.label.linked_proof'|trans }}</th>
+                                <th scope="col" >{{ 'global.label.linked_mesurement'|trans }}</th>
+                                <th scope="col" >{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col" >{{ 'global.label.updated_at'|trans }}</th>
                                 <th scope="col" >{{ 'global.label.actions'|trans }}</th>
-                            {% endif %}
-                        </tr>
+                            </tr>
                         </thead>
                     </table>
                 </div>
@@ -205,61 +199,62 @@
     {% if is_granted('ROLE_USER') %}
         {% set actionIsVisible = true %}
     {% endif %}
+
     {% if is_granted('ROLE_REFERENT') %}
-    {% set dataTableOptions = {
-        columns: [
-            {"data": "name", "className": "noVis"},
-            {"data": "collectivity", "className": collectivityClassname, "visible": collectivityIsVisible},
-            {"data": "type"},
-            {"data": "editor", "visible": false},
-            {"data": "archival"},
-            {"data": "encrypted"},
-            {"data": "access_control", "visible": false},
-            {"data": "update"},
-            {"data": "backup"},
-            {"data": "deletion", "visible": false},
-            {"data": "tracking", "visible": false},
-            {"data": "has_comment", "visible": false},
-            {"data": "other"},
-            {"data": "treatments", "visible": false},
-            {"data": "contractors", "visible": false},
-            {"data": "proofs", "visible": false},
-            {"data": "mesurements", "visible": false},
-            {"data": "createdAt", "visible": false},
-            {"data": "updatedAt", "visible": false},
-            {"data": "actions", "orderable": false, "className": "noVis action", "visible": actionIsVisible},
-        ],
-        order:  [
-            [0, 'asc' ]
-        ],
-    } %}
+        {% set dataTableOptions = {
+            columns: [
+                {"data": "name", "className": "noVis"},
+                {"data": "collectivity", "className": collectivityClassname, "visible": collectivityIsVisible},
+                {"data": "type"},
+                {"data": "editor", "visible": false},
+                {"data": "archival"},
+                {"data": "encrypted"},
+                {"data": "access_control", "visible": false},
+                {"data": "update"},
+                {"data": "backup"},
+                {"data": "deletion", "visible": false},
+                {"data": "tracking", "visible": false},
+                {"data": "has_comment", "visible": false},
+                {"data": "other"},
+                {"data": "treatments", "visible": false},
+                {"data": "contractors", "visible": false},
+                {"data": "proofs", "visible": false},
+                {"data": "mesurements", "visible": false},
+                {"data": "createdAt", "visible": false},
+                {"data": "updatedAt", "visible": false},
+                {"data": "actions", "orderable": false, "className": "noVis action", "visible": actionIsVisible},
+            ],
+            order:  [
+                [0, 'asc' ]
+            ],
+        } %}
     {%  else %}
-    {% set dataTableOptions = {
-        columns: [
-            {"data": "name", "className": "noVis"},
-            {"data": "type"},
-            {"data": "editor", "visible": false},
-            {"data": "archival"},
-            {"data": "encrypted"},
-            {"data": "access_control", "visible": false},
-            {"data": "update"},
-            {"data": "backup"},
-            {"data": "deletion", "visible": false},
-            {"data": "tracking", "visible": false},
-            {"data": "has_comment", "visible": false},
-            {"data": "other"},
-            {"data": "treatments", "visible": false, "orderable": false},
-            {"data": "contractors", "visible": false, "orderable": false},
-            {"data": "proofs", "visible": false, "orderable": false},
-            {"data": "mesurements", "visible": false, "orderable": false},
-            {"data": "createdAt", "visible": false},
-            {"data": "updatedAt", "visible": false},
-            {"data": "actions", "orderable": false, "className": "noVis action", "visible": actionIsVisible},
-        ],
-        order:  [
-            [0, 'desc' ]
-        ],
-    } %}
+        {% set dataTableOptions = {
+            columns: [
+                {"data": "name", "className": "noVis"},
+                {"data": "type"},
+                {"data": "editor", "visible": false},
+                {"data": "archival"},
+                {"data": "encrypted"},
+                {"data": "access_control", "visible": false},
+                {"data": "update"},
+                {"data": "backup"},
+                {"data": "deletion", "visible": false},
+                {"data": "tracking", "visible": false},
+                {"data": "has_comment", "visible": false},
+                {"data": "other"},
+                {"data": "treatments", "visible": false, "orderable": false},
+                {"data": "contractors", "visible": false, "orderable": false},
+                {"data": "proofs", "visible": false, "orderable": false},
+                {"data": "mesurements", "visible": false, "orderable": false},
+                {"data": "createdAt", "visible": false},
+                {"data": "updatedAt", "visible": false},
+                {"data": "actions", "orderable": false, "className": "noVis action", "visible": actionIsVisible},
+            ],
+            order:  [
+                [0, 'desc' ]
+            ],
+        } %}
     {% endif %}
 
     {{ include('_Utils/_serverside_datatable.html.twig') }}
diff --git a/templates/Registry/Tool/show.html.twig b/templates/Registry/Tool/show.html.twig
index 6cb47a6e083d9d9cf41dc84433bbd884262b6dd0..212cbda4e5244dd476d13b356fb7f85cd2809a5a 100644
--- a/templates/Registry/Tool/show.html.twig
+++ b/templates/Registry/Tool/show.html.twig
@@ -50,7 +50,7 @@
             <div class="box box-solid box-info">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'global.tab.general'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                         <tr>
                             <td><strong>{{ 'registry.tool.label.name'|trans }}</strong></td>
@@ -121,7 +121,7 @@
             <div class="box box-solid box-default">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'global.tab.history'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                         {% if is_granted('ROLE_ADMIN') %}
                             <tr>
@@ -157,7 +157,7 @@
             <div class="box box-solid box-primary">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'registry.tool.tab.measures'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                         <tr>
                             <td><strong>{{ 'registry.tool.label.archival'|trans }}</strong></td>
@@ -268,7 +268,7 @@
             <div class="box box-solid box-warning">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'global.tab.linked_modules'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {# TREATMENTS #}
                             {% include '_Utils/_show_block_treatments.html.twig' with { treatments: object.treatments } %}
diff --git a/templates/Registry/Treatment/_form.html.twig b/templates/Registry/Treatment/_form.html.twig
index 5332978240e1a44874b5e04735d1e07f690883ad..0dbc51ef45c54f0ee50520dfc64e53a689421814 100644
--- a/templates/Registry/Treatment/_form.html.twig
+++ b/templates/Registry/Treatment/_form.html.twig
@@ -38,21 +38,21 @@
                 <div class="box box-solid">
                     <div class="box-header with-border"><h3 class="box-title">{{ 'registry.treatment.tab.statut_dpo'|trans }}</h3></div>
                     <div class="box-body no-padding">
-                        <table class="table">
+                        <table role="presentation" class="table">
                             <tbody>
-                            <tr>
-                                <td><strong>{{ 'registry.treatment.label.statut'|trans }}</strong></td>
-                                <td>
-                                    {{ object.statut ? object.statut|dictionary('treatment_statut') : '' }}
-                                    {{ form_row(form.statut) }}
-                                </td>
-                            </tr>
-                            {% if is_granted('ROLE_ADMIN') or (is_granted('ROLE_USER') and object.dpoMessage is not null) %}
                                 <tr>
-                                    <td><strong>{{ 'registry.treatment.label.dpoMessage'|trans }}</strong></td>
-                                    <td>{{ object.dpoMessage }}</td>
+                                    <td><strong>{{ 'registry.treatment.label.statut'|trans }}</strong></td>
+                                    <td>
+                                        {{ object.statut ? object.statut|dictionary('treatment_statut') : '' }}
+                                        {{ form_row(form.statut) }}
+                                    </td>
                                 </tr>
-                            {% endif %}
+                                {% if is_granted('ROLE_ADMIN') or (is_granted('ROLE_USER') and object.dpoMessage is not null) %}
+                                    <tr>
+                                        <td><strong>{{ 'registry.treatment.label.dpoMessage'|trans }}</strong></td>
+                                        <td>{{ object.dpoMessage }}</td>
+                                    </tr>
+                                {% endif %}
                             </tbody>
                         </table>
                     </div>
@@ -132,13 +132,7 @@
                 {% for error in form.vars.errors %}
                     {% if error.origin.name == 'concernedPeopleParticular' %}
                         {% set concernedPeopleErrorBlock %}
-                            <span class="help-block">
-                                <ul class="list-unstyled">
-                                    <li>
-                                        <i aria-hidden="true" class="fa-solid fa-circle-exclamation"></i> {{ error.message }}
-                                    </li>
-                                </ul>
-                            </span>
+                            <p role="alert" class="help-block"><i aria-hidden="true" class="fa-solid fa-circle-exclamation"></i> {{ error.message }}</p>
                         {% endset %}
                     {% endif %}
                 {% endfor %}
diff --git a/templates/Registry/Treatment/configuration.html.twig b/templates/Registry/Treatment/configuration.html.twig
index 1d72d8ec01a61444a6de8bdad52d820ee9664be8..74cc90e29dd280d83306f359d79369a230df38f0 100644
--- a/templates/Registry/Treatment/configuration.html.twig
+++ b/templates/Registry/Treatment/configuration.html.twig
@@ -18,7 +18,7 @@
 
 {% block breadcrumb %}
     {% set breadcrumb = [
-        { 'name': 'registry.treatment.title.configure'|trans }
+        { 'name': 'registry.treatment.breadcrumb.configure'|trans }
     ] %}
     {% include '_breadcrumb.html.twig' with {'breadcrumb': breadcrumb} %}
 {% endblock %}
@@ -129,13 +129,7 @@
                         {% for error in form.vars.errors %}
                             {% if error.origin.name == 'concernedPeopleParticular' %}
                                 {% set concernedPeopleErrorBlock %}
-                                <span class="help-block">
-                                    <ul class="list-unstyled">
-                                        <li>
-                                            <i aria-hidden="true" class="fa-solid fa-circle-exclamation"></i> {{ error.message }}
-                                        </li>
-                                    </ul>
-                                </span>
+                                    <p role="alert" class="help-block"><i aria-hidden="true" class="fa-solid fa-circle-exclamation"></i> {{ error.message }}</p>
                                 {% endset %}
                             {% endif %}
                         {% endfor %}
diff --git a/templates/Registry/Treatment/list.html.twig b/templates/Registry/Treatment/list.html.twig
index 9ca1fe21d76fd5ee72b7fd17e2c43f347030660d..201c4f929d5f8d36d90e203ebf0e8571747f8412 100644
--- a/templates/Registry/Treatment/list.html.twig
+++ b/templates/Registry/Treatment/list.html.twig
@@ -32,39 +32,35 @@
 
 {% block body %}
     <div class="row">
-            <div class="col-xs-12">
-                <div class="mb-1" id="action-top-buttons">
-                    {% if is_granted('ROLE_USER') %}
-                    <a href="{{ path('registry_treatment_create') }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-plus"></i>
-                        {{ 'registry.treatment.action.new'|trans }}
-                    </a>
-                    {% endif %}
-                    {% if app.user.roles[0] != 'ROLE_REFERENT' %}
-                    <a href="{{ path('registry_treatment_report') }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-clipboard-list"></i>
-                        {{ 'global.action.report'|trans }}
-                    </a>
-                    {% endif %}
-                    {% if app.request.query.get('active') == 'false' %}
-                        <a href="{{ path('registry_treatment_list', {'active' : 'true'}) }}" class="btn btn-default">
-                            <i aria-hidden="true" class="fa fa-list"></i>
-                            {{ 'registry.treatment.action.active'|trans }}
-                        </a>
-                    {% else %}
-                        <a href="{{ path('registry_treatment_list', {'active' : 'false'}) }}" class="btn btn-default">
-                            <i aria-hidden="true" class="fa fa-list"></i>
-                            {{ 'registry.treatment.action.inactive'|trans }}
-                        </a>
-                    {% endif %}
-                    {% if category and category.documents|length > 0 %}
-                    <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
-                        <i aria-hidden="true" class="fa fa-circle-info"></i>
-                        {{ 'global.action.documentation'|trans }}
-                    </a>
-                    {% endif %}
-                </div>
-            </div>
+        <div class="col-xs-12 mb-1" id="action-top-buttons">
+            {% if is_granted('ROLE_USER') %}
+                <a href="{{ path('registry_treatment_create') }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-plus"></i>
+                    {{ 'registry.treatment.action.new'|trans }}
+                </a>
+            {% endif %}
+            <a href="{{ path('registry_treatment_report') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-clipboard-list"></i>
+                {{ 'global.action.report'|trans }}
+            </a>
+            {% if app.request.query.get('active') == 'false' %}
+                <a href="{{ path('registry_treatment_list', {'active' : 'true'}) }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-list"></i>
+                    {{ 'registry.treatment.action.active'|trans }}
+                </a>
+            {% else %}
+                <a href="{{ path('registry_treatment_list', {'active' : 'false'}) }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-list"></i>
+                    {{ 'registry.treatment.action.inactive'|trans }}
+                </a>
+            {% endif %}
+            {% if category and category.documents|length > 0 %}
+                <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
+                    <i aria-hidden="true" class="fa fa-circle-info"></i>
+                    {{ 'global.action.documentation'|trans }}
+                </a>
+            {% endif %}
+        </div>
     </div>
 
     <div class="row">
@@ -73,182 +69,183 @@
                 <div class="box-body overflow-x-auto">
                     <div id="custom-buttons" style="float:left">
                         {% if app.request.query.get('active') != 'false' %}
-                        <a id="print-all"  href="{{ path('registry_treatment_print_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
-                            {{ 'global.action.print'|trans }}
-                        </a>
-                        <a id="archive-all"  href="{{ path('registry_treatment_archive_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
-                            {{ 'registry.treatment.action.deactivate'|trans }}
-                        </a>
+                            <a id="print-all" href="{{ path('registry_treatment_print_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
+                                {{ 'global.action.print'|trans }}
+                            </a>
+                            {% if app.user.roles[0] != 'ROLE_PREVIEW' %}
+                                <a id="archive-all" href="{{ path('registry_treatment_archive_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
+                                    {{ 'registry.treatment.action.deactivate'|trans }}
+                                </a>
+                            {% endif %}
+                        {% endif %}
+                        {% if app.user.roles[0] != 'ROLE_PREVIEW' %}
+                            <a id="delete-all" href="{{ path('registry_treatment_delete_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
+                                {{ 'global.action.delete'|trans }}
+                            </a>
                         {% endif %}
-                        <a id="delete-all"  href="{{ path('registry_treatment_delete_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
-                            {{ 'global.action.delete'|trans }}
-                        </a>
                     </div>
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'registry.treatment.title.list'|trans }} {% if app.request.query.get('active') == 'false' %}{{ 'registry.treatment.title.list_inactive'|trans }}{% else %}{{ 'registry.treatment.title.list_active'|trans }}{% endif %}</caption>
                         <thead>
-                        <tr>
-                            <th style="width:20px" scope="col"></th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.treatment.label.name'|trans }}" style="width: 100%;">
-                            </th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
-                            </th>
-                            {% endif %}
-                            <th scope="col">
-                                <select class="form-control" id="search_statut" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.label.statut'|trans }}</option>
-                                    <option value="draft">{{ 'registry.treatment.values.statut.draft'|trans }}</option>
-                                    <option value="finished">{{ 'registry.treatment.values.statut.done'|trans }}</option>
-                                    <option value="checked">{{ 'registry.treatment.values.statut.checked'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_base_legal" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.label.legal_basis'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_treatment_legal_basis') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_logiciel" placeholder="{% if app.user.collectivity.hasModuleTools %}{{ 'global.label.linked_tool'|trans }}{% else %}{{ 'registry.treatment.label.tools_if_inactif'|trans }}{% endif %}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_en_tant_que" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.label.author'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_treatment_author') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_gestionnaire" placeholder="{{ 'registry.treatment.label.manager'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_sous_traitants" placeholder="{{ 'global.label.linked_contractor'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_sensitive_data" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.list.sensitive_data'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_controle_acces" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.label.security_access_control'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_tracabilite" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.label.security_tracability'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_sauvegarde" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.label.security_saving'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_autres" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.label.security_other'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-
-                            <th scope="col">
-                                <select class="form-control" id="search_capacite" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.list.entitled_persons'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-
-                            <th scope="col">
-                                <select class="form-control" id="search_procedure" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.list.procedure'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-
-                            <th scope="col">
-                                <select class="form-control" id="search_specificites" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.list.specificities_delivered'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-
-                            <th scope="col">
-                                <select class="form-control" id="search_public" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.label.public_registry'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_update" style="width: 100%;">
-                                    <option value="">{{ 'registry.treatment.label.security_update'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_responsable_traitement" placeholder="{{ 'registry.treatment.list.responsable_traitement'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col"></th> <!-- Traitement spécifique -->
-                            <th scope="col"></th> <!-- Conformité Traitement -->
-                            <th scope="col"></th> <!--Avis AIPD -->
-                            <th scope="col"></th> <!--exempt AIPD -->
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                        </tr>
-                        <tr>
-                            <th scope="col" style="width:20px"><input type="checkbox" name="select_all" value="1" id="select-all-treatments"></th>
-                            <th scope="col">{{ 'registry.treatment.label.name'|trans }}</th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                            <th scope="col">{{ 'global.label.organization'|trans }}</th>
-                            {% endif %}
-                            <th scope="col" style="max-width: 60px;">{{ 'registry.treatment.label.statut'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.label.legal_basis'|trans }}</th>
-                            <th scope="col">{% if app.user.collectivity.hasModuleTools %}{{ 'global.label.linked_tool'|trans }}{% else %}{{ 'registry.treatment.label.tools_if_inactif'|trans }}{% endif %}</th>
-                            <th scope="col">{{ 'registry.treatment.label.author'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.label.manager'|trans }}</th>
-                            <th scope="col">{{ 'global.label.linked_contractor'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.list.sensitive_data'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.label.security_access_control'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.label.security_tracability'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.label.security_saving'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.label.security_other'|trans }}</th>
-                            <th scope="col" style="max-width: 60px;">{{ 'registry.treatment.list.entitled_persons'|trans }}</th>
-                            <th scope="col" style="max-width: 60px;">{{ 'registry.treatment.list.open_accounts'|trans }}</th>
-                            <th scope="col" style="max-width: 60px;">{{ 'registry.treatment.list.specificities_delivered'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.label.public_registry'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.label.security_update'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.list.responsable_traitement'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.list.specific_traitement'|trans }}</th>
-                            <th scope="col">{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</th>
-                            <th scope="col">{{ 'aipd.treatment.label.avis_aipd'|trans }}</th>
-                            <th scope="col">{{ 'registry.treatment.label.exempt_AIPD'|trans }}</th>
-                            <th scope="col" style="max-width: 60px;">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col" style="max-width: 60px;">{{ 'global.label.updated_at'|trans }}</th>
-
-                            <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                        </tr>
+                            <tr>
+                                <th style="width:20px" scope="col"></th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nom" placeholder="{{ 'registry.treatment.label.name'|trans }}" style="width: 100%;">
+                                </th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                </th>
+                                {% endif %}
+                                <th scope="col">
+                                    <select class="form-control" id="search_statut" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.label.statut'|trans }}</option>
+                                        <option value="draft">{{ 'registry.treatment.values.statut.draft'|trans }}</option>
+                                        <option value="finished">{{ 'registry.treatment.values.statut.done'|trans }}</option>
+                                        <option value="checked">{{ 'registry.treatment.values.statut.checked'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_base_legal" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.label.legal_basis'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_treatment_legal_basis') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_logiciel" placeholder="{% if app.user.collectivity.hasModuleTools %}{{ 'global.label.linked_tool'|trans }}{% else %}{{ 'registry.treatment.label.tools_if_inactif'|trans }}{% endif %}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_en_tant_que" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.label.author'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_treatment_author') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_gestionnaire" placeholder="{{ 'registry.treatment.label.manager'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_sous_traitants" placeholder="{{ 'global.label.linked_contractor'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_sensitive_data" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.list.sensitive_data'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_controle_acces" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.label.security_access_control'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_tracabilite" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.label.security_tracability'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_sauvegarde" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.label.security_saving'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_autres" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.label.security_other'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_capacite" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.list.entitled_persons'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_procedure" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.list.procedure'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_specificites" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.list.specificities_delivered'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_public" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.label.public_registry'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_update" style="width: 100%;">
+                                        <option value="">{{ 'registry.treatment.label.security_update'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_responsable_traitement" placeholder="{{ 'registry.treatment.list.responsable_traitement'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col"></th> <!-- Traitement spécifique -->
+                                <th scope="col"></th> <!-- Conformité Traitement -->
+                                <th scope="col"></th> <!-- Avis AIPD -->
+                                <th scope="col"></th> <!-- exempt AIPD -->
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col" style="width:20px"><input type="checkbox" name="select_all" value="1" id="select-all-treatments"></th>
+                                <th scope="col">{{ 'registry.treatment.label.name'|trans }}</th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                <th scope="col">{{ 'global.label.organization'|trans }}</th>
+                                {% endif %}
+                                <th scope="col" style="max-width: 60px;">{{ 'registry.treatment.label.statut'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.label.legal_basis'|trans }}</th>
+                                <th scope="col">{% if app.user.collectivity.hasModuleTools %}{{ 'global.label.linked_tool'|trans }}{% else %}{{ 'registry.treatment.label.tools_if_inactif'|trans }}{% endif %}</th>
+                                <th scope="col">{{ 'registry.treatment.label.author'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.label.manager'|trans }}</th>
+                                <th scope="col">{{ 'global.label.linked_contractor'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.list.sensitive_data'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.label.security_access_control'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.label.security_tracability'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.label.security_saving'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.label.security_other'|trans }}</th>
+                                <th scope="col" style="max-width: 60px;">{{ 'registry.treatment.list.entitled_persons'|trans }}</th>
+                                <th scope="col" style="max-width: 60px;">{{ 'registry.treatment.list.open_accounts'|trans }}</th>
+                                <th scope="col" style="max-width: 60px;">{{ 'registry.treatment.list.specificities_delivered'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.label.public_registry'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.label.security_update'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.list.responsable_traitement'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.list.specific_traitement'|trans }}</th>
+                                <th scope="col">{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</th>
+                                <th scope="col">{{ 'aipd.treatment.label.avis_aipd'|trans }}</th>
+                                <th scope="col">{{ 'registry.treatment.label.exempt_AIPD'|trans }}</th>
+                                <th scope="col" style="max-width: 60px;">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col" style="max-width: 60px;">{{ 'global.label.updated_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                            </tr>
                         </thead>
                     </table>
                 </div>
diff --git a/templates/Registry/Treatment/pdf.html.twig b/templates/Registry/Treatment/pdf.html.twig
index 98c97dab6320eb80468aeabc95b2e8eb6572554c..725ef4b8eb35cceeaae911531d2dc05725e7564a 100644
--- a/templates/Registry/Treatment/pdf.html.twig
+++ b/templates/Registry/Treatment/pdf.html.twig
@@ -601,89 +601,116 @@
     </div>
 
     {# TREATMENT CONFORMITY & AIPD #}
-    {% if object.collectivity.hasModuleConformiteTraitement and object.ExemptAIPD == false %}
+    {% if object.collectivity.hasModuleConformiteTraitement %}
         {# TREATMENT CONFORMITY #}
         <div class="box box-solid box-success">
             <div class="box-header with-border"><h3 class="box-title">{{ 'registry.treatment.tab.conformite'|trans }}</h3></div>
             <div class="box-body no-padding">
                 <table role="presentation" class="table">
-                    <tr>
-                        <td style="width: 35%">
-                            <strong>{{ 'registry.conformite_traitement.label.conformite_traitement'|trans }}</strong>
-                        </td>
-                        <td>
-                            {% if object.conformiteTraitement is not null %}
-                                {{ getConformiteTraitementLabel(object.conformiteTraitement)|raw }}
-                            {% else %}
-                                <span class="label label-default" style="display: inline-block;">{{ 'registry.conformite_traitement.label.not_done'|trans }}</span>
-                            {% endif %}
-                        </td>
-                    </tr>
-                    <tr>
-                        <td>
-                            <strong>{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</strong>
-                        </td>
-                        <td>
-                            {% if object.conformiteTraitement is not null %}
-                                {% set nbTotal = object.conformiteTraitement.nbConformes + object.conformiteTraitement.nbNonConformesMineures + object.conformiteTraitement.nbNonConformesMajeures %}
-                                {% set widthNbConforme = ((object.conformiteTraitement.nbConformes * 100) / nbTotal)|round %}
-                                {% set widthnbNonConformesMineures = ((object.conformiteTraitement.nbNonConformesMineures * 100) / nbTotal)|round %}
-                                {% set widthnbNonConformesMajeures = 100 - (widthNbConforme + widthnbNonConformesMineures) %}
-                                <div class="stacked-bar-graph">
-                                    {% if widthNbConforme %}<span style="width:{{ widthNbConforme }}%" class="bar-conforme tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.conforme'|trans }} {{ object.conformiteTraitement.nbConformes }}</span></span>{% endif %}
-                                    {% if widthnbNonConformesMineures %}<span style="width:{{ widthnbNonConformesMineures }}%" class="bar-non-conforme-mineure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.minor_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMineures }}</span></span>{% endif %}
-                                    {% if widthnbNonConformesMajeures %}<span style="width:{{ widthnbNonConformesMajeures }}%" class="bar-non-conforme-majeure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.major_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMajeures }}</span></span>{% endif %}
-                                </div>
-                            {% endif %}
-                        </td>
-                    </tr>
-                </table>
-            </div>
-        </div>
-        {# AIPD #}
-        {% if object.conformiteTraitement is not null and object.conformiteTraitement.lastAnalyseImpact is not null %}
-            <div class="box box-solid box-primary">
-                <div class="box-header with-border"><h3 class="box-title">{{ 'registry.treatment.tab.last_aipd'|trans }}</h3></div>
-                <div class="box-body no-padding">
-                    <table class="table" role="presentation">
+                    <tbody>
                         <tr>
                             <td style="width: 35%">
-                                <strong>{{ 'aipd.treatment.label.avis_aipd'|trans }}</strong>
+                                <strong>{{ 'registry.treatment.label.last_conformite_traitement'|trans }}</strong>
                             </td>
                             <td>
-                                {% set analyseImpact = object.conformiteTraitement.lastAnalyseImpact %}
-
-                                {% set labelAipdColor = "label-default" %}
-                                {% if analyseImpact.statut == "defavorable" %}
-                                    {% set labelAipdColor = "label-danger" %}
-                                {% elseif analyseImpact.statut == "favorable_reserve" %}
-                                    {% set labelAipdColor = "label-warning" %}
-                                {% elseif analyseImpact.statut == "favorable" %}
-                                    {% set labelAipdColor = "label-success" %}
+                                {% if object.conformiteTraitement is not null %}
+                                    {{ object.conformiteTraitement.updatedAt|date('d/m/Y') }}
+                                {% else %}
+                                    <i>{{ 'registry.treatment.label.no_conformite_traitement'|trans }}</i>
                                 {% endif %}
-                                {% set statut = analyseImpact.statut %}
-                                {% set labelStatut = "aipd.analyse_impact.values." ~ object.conformiteTraitement.lastAnalyseImpact.statut %}
-                                <span class="label {{ labelAipdColor }}" style="display: inline-block;">
-                                    {{ labelStatut|trans}}
-                                </span>
                             </td>
                         </tr>
+                        {% if object.conformiteTraitement is not null %}
+                            <tr>
+                                <td>
+                                    <strong>{{ 'registry.conformite_traitement.label.conformite_traitement'|trans }}</strong>
+                                </td>
+                                <td>
+                                    {{ getConformiteTraitementLabel(object.conformiteTraitement)|raw }}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>
+                                    <strong>{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</strong>
+                                </td>
+                                <td>
+                                    {% set nbTotal = object.conformiteTraitement.nbConformes + object.conformiteTraitement.nbNonConformesMineures + object.conformiteTraitement.nbNonConformesMajeures %}
+                                    {% set widthNbConforme = ((object.conformiteTraitement.nbConformes * 100) / nbTotal)|round %}
+                                    {% set widthnbNonConformesMineures = ((object.conformiteTraitement.nbNonConformesMineures * 100) / nbTotal)|round %}
+                                    {% set widthnbNonConformesMajeures = 100 - (widthNbConforme + widthnbNonConformesMineures) %}
+                                    <div class="stacked-bar-graph">
+                                        {% if widthNbConforme %}<span style="width:{{ widthNbConforme }}%" class="bar-conforme tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.conforme'|trans }} {{ object.conformiteTraitement.nbConformes }}</span></span>{% endif %}
+                                        {% if widthnbNonConformesMineures %}<span style="width:{{ widthnbNonConformesMineures }}%" class="bar-non-conforme-mineure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.minor_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMineures }}</span></span>{% endif %}
+                                        {% if widthnbNonConformesMajeures %}<span style="width:{{ widthnbNonConformesMajeures }}%" class="bar-non-conforme-majeure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.major_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMajeures }}</span></span>{% endif %}
+                                    </div>
+                                </td>
+                            </tr>
+                        {% endif %}
+                    </tbody>
+                </table>
+            </div>
+        </div>
+        {# AIPD #}
+        {% if object.conformiteTraitement is not null %}
+            {% set analyseImpact = object.conformiteTraitement.lastAnalyseImpact %}
+        {% endif %}
+        <div class="box box-solid box-primary">
+            <div class="box-header with-border"><h3 class="box-title">{{ 'registry.treatment.tab.last_aipd'|trans }}</h3></div>
+            <div class="box-body no-padding">
+                <table role="presentation" class="table">
+                    <tbody>
                         <tr>
-                            <td>
-                                <strong>{{ 'aipd.analyse_impact.list.date_validation'|trans }}</strong>
+                            <td style="width: 35%">
+                                <strong>{{ 'aipd.treatment.label.last_aipd'|trans }}</strong>
                             </td>
                             <td>
-                                {% if analyseImpact.isValidated %}
-                                    {{ analyseImpact.dateValidation|date('d/m/Y') }}
+                                {% if object.conformiteTraitement is null %}
+                                    <i>{{ 'aipd.treatment.label.no_conformite_traitement'|trans }}</i>
+                                {% elseif object.conformiteTraitement is not null and analyseImpact is null %}
+                                    <i>{{ 'aipd.treatment.label.no_aipd'|trans }}</i>
                                 {% else %}
-                                    {{ 'aipd.treatment.label.validation_in_progress'|trans }}
+                                    {{ analyseImpact.createdAt|date('d/m/Y') }}
                                 {% endif %}
                             </td>
                         </tr>
-                    </table>
-                </div>
+                        {% if object.conformiteTraitement is not null and analyseImpact is not null %}
+                            <tr>
+                                <td>
+                                    <strong>{{ 'aipd.treatment.label.avis_aipd'|trans }}</strong>
+                                </td>
+                                <td>
+                                    {% set labelAipdColor = "label-default" %}
+                                    {% if analyseImpact.statut == "defavorable" %}
+                                        {% set labelAipdColor = "label-danger" %}
+                                    {% elseif analyseImpact.statut == "favorable_reserve" %}
+                                        {% set labelAipdColor = "label-warning" %}
+                                    {% elseif analyseImpact.statut == "favorable" %}
+                                        {% set labelAipdColor = "label-success" %}
+                                    {% endif %}
+                                    {% set statut = analyseImpact.statut %}
+                                    {% set labelStatut = "aipd.analyse_impact.values." ~ object.conformiteTraitement.lastAnalyseImpact.statut %}
+                                    <span class="label {{ labelAipdColor }}" style="display: inline-block;">
+                                        {{ labelStatut|trans}}
+                                    </span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td>
+                                    <strong>{{ 'aipd.analyse_impact.list.date_validation'|trans }}</strong>
+                                </td>
+                                <td>
+                                    {% if analyseImpact.isValidated %}
+                                        {{ analyseImpact.dateValidation|date('d/m/Y') }}
+                                    {% else %}
+                                        {{ 'aipd.treatment.label.validation_in_progress'|trans }}
+                                    {% endif %}
+                                </td>
+                            </tr>
+                        {% endif %}
+                    </tbody>
+                </table>
             </div>
-        {% endif %}
+        </div>
     {% endif %}
 
     {# HISTORIC #}
diff --git a/templates/Registry/Treatment/pdf_all.html.twig b/templates/Registry/Treatment/pdf_all.html.twig
index 267005256ac0c8bd3a45c5120e3fff98ded66b7d..9526526851da32bad8e01504172d52cd88852e94 100644
--- a/templates/Registry/Treatment/pdf_all.html.twig
+++ b/templates/Registry/Treatment/pdf_all.html.twig
@@ -603,89 +603,116 @@
             </div>
 
             {# TREATMENT CONFORMITY & AIPD #}
-            {% if object.collectivity.hasModuleConformiteTraitement and object.ExemptAIPD == false %}
+            {% if object.collectivity.hasModuleConformiteTraitement %}
                 {# TREATMENT CONFORMITY #}
                 <div class="box box-solid box-success">
                     <div class="box-header with-border"><h3 class="box-title">{{ 'registry.treatment.tab.conformite'|trans }}</h3></div>
                     <div class="box-body no-padding">
                         <table role="presentation" class="table">
-                            <tr>
-                                <td style="width: 35%">
-                                    <strong>{{ 'registry.conformite_traitement.label.conformite_traitement'|trans }}</strong>
-                                </td>
-                                <td>
-                                    {% if object.conformiteTraitement is not null %}
-                                        {{ getConformiteTraitementLabel(object.conformiteTraitement)|raw }}
-                                    {% else %}
-                                        <span class="label label-default" style="display: inline-block;">{{ 'registry.conformite_traitement.label.not_done'|trans }}</span>
-                                    {% endif %}
-                                </td>
-                            </tr>
-                            <tr>
-                                <td>
-                                    <strong>{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</strong>
-                                </td>
-                                <td>
-                                    {% if object.conformiteTraitement is not null %}
-                                        {% set nbTotal = object.conformiteTraitement.nbConformes + object.conformiteTraitement.nbNonConformesMineures + object.conformiteTraitement.nbNonConformesMajeures %}
-                                        {% set widthNbConforme = ((object.conformiteTraitement.nbConformes * 100) / nbTotal)|round %}
-                                        {% set widthnbNonConformesMineures = ((object.conformiteTraitement.nbNonConformesMineures * 100) / nbTotal)|round %}
-                                        {% set widthnbNonConformesMajeures = 100 - (widthNbConforme + widthnbNonConformesMineures) %}
-                                        <div class="stacked-bar-graph">
-                                            {% if widthNbConforme %}<span style="width:{{ widthNbConforme }}%" class="bar-conforme tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.conforme'|trans }} {{ object.conformiteTraitement.nbConformes }}</span></span>{% endif %}
-                                            {% if widthnbNonConformesMineures %}<span style="width:{{ widthnbNonConformesMineures }}%" class="bar-non-conforme-mineure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.minor_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMineures }}</span></span>{% endif %}
-                                            {% if widthnbNonConformesMajeures %}<span style="width:{{ widthnbNonConformesMajeures }}%" class="bar-non-conforme-majeure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.major_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMajeures }}</span></span>{% endif %}
-                                        </div>
-                                    {% endif %}
-                                </td>
-                            </tr>
-                        </table>
-                    </div>
-                </div>
-                {# AIPD #}
-                {% if object.conformiteTraitement is not null and object.conformiteTraitement.lastAnalyseImpact is not null %}
-                    <div class="box box-solid box-primary">
-                        <div class="box-header with-border"><h3 class="box-title">{{ 'registry.treatment.tab.last_aipd'|trans }}</h3></div>
-                        <div class="box-body no-padding">
-                            <table class="table" role="presentation">
+                            <tbody>
                                 <tr>
                                     <td style="width: 35%">
-                                        <strong>{{ 'aipd.treatment.label.avis_aipd'|trans }}</strong>
+                                        <strong>{{ 'registry.treatment.label.last_conformite_traitement'|trans }}</strong>
                                     </td>
                                     <td>
-                                        {% set analyseImpact = object.conformiteTraitement.lastAnalyseImpact %}
-
-                                        {% set labelAipdColor = "label-default" %}
-                                        {% if analyseImpact.statut == "defavorable" %}
-                                            {% set labelAipdColor = "label-danger" %}
-                                        {% elseif analyseImpact.statut == "favorable_reserve" %}
-                                            {% set labelAipdColor = "label-warning" %}
-                                        {% elseif analyseImpact.statut == "favorable" %}
-                                            {% set labelAipdColor = "label-success" %}
+                                        {% if object.conformiteTraitement is not null %}
+                                            {{ object.conformiteTraitement.updatedAt|date('d/m/Y') }}
+                                        {% else %}
+                                            <i>{{ 'registry.treatment.label.no_conformite_traitement'|trans }}</i>
                                         {% endif %}
-                                        {% set statut = analyseImpact.statut %}
-                                        {% set labelStatut = "aipd.analyse_impact.values." ~ object.conformiteTraitement.lastAnalyseImpact.statut %}
-                                        <span class="label {{ labelAipdColor }}" style="display: inline-block;">
-                                            {{ labelStatut|trans}}
-                                        </span>
                                     </td>
                                 </tr>
+                                {% if object.conformiteTraitement is not null %}
+                                    <tr>
+                                        <td>
+                                            <strong>{{ 'registry.conformite_traitement.label.conformite_traitement'|trans }}</strong>
+                                        </td>
+                                        <td>
+                                            {{ getConformiteTraitementLabel(object.conformiteTraitement)|raw }}
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</strong>
+                                        </td>
+                                        <td>
+                                            {% set nbTotal = object.conformiteTraitement.nbConformes + object.conformiteTraitement.nbNonConformesMineures + object.conformiteTraitement.nbNonConformesMajeures %}
+                                            {% set widthNbConforme = ((object.conformiteTraitement.nbConformes * 100) / nbTotal)|round %}
+                                            {% set widthnbNonConformesMineures = ((object.conformiteTraitement.nbNonConformesMineures * 100) / nbTotal)|round %}
+                                            {% set widthnbNonConformesMajeures = 100 - (widthNbConforme + widthnbNonConformesMineures) %}
+                                            <div class="stacked-bar-graph">
+                                                {% if widthNbConforme %}<span style="width:{{ widthNbConforme }}%" class="bar-conforme tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.conforme'|trans }} {{ object.conformiteTraitement.nbConformes }}</span></span>{% endif %}
+                                                {% if widthnbNonConformesMineures %}<span style="width:{{ widthnbNonConformesMineures }}%" class="bar-non-conforme-mineure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.minor_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMineures }}</span></span>{% endif %}
+                                                {% if widthnbNonConformesMajeures %}<span style="width:{{ widthnbNonConformesMajeures }}%" class="bar-non-conforme-majeure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.major_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMajeures }}</span></span>{% endif %}
+                                            </div>
+                                        </td>
+                                    </tr>
+                                {% endif %}
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+                {# AIPD #}
+                {% if object.conformiteTraitement is not null %}
+                    {% set analyseImpact = object.conformiteTraitement.lastAnalyseImpact %}
+                {% endif %}
+                <div class="box box-solid box-primary">
+                    <div class="box-header with-border"><h3 class="box-title">{{ 'registry.treatment.tab.last_aipd'|trans }}</h3></div>
+                    <div class="box-body no-padding">
+                        <table role="presentation" class="table">
+                            <tbody>
                                 <tr>
-                                    <td>
-                                        <strong>{{ 'aipd.analyse_impact.list.date_validation'|trans }}</strong>
+                                    <td style="width: 35%">
+                                        <strong>{{ 'aipd.treatment.label.last_aipd'|trans }}</strong>
                                     </td>
                                     <td>
-                                        {% if analyseImpact.isValidated %}
-                                            {{ analyseImpact.dateValidation|date('d/m/Y') }}
+                                        {% if object.conformiteTraitement is null %}
+                                            <i>{{ 'aipd.treatment.label.no_conformite_traitement'|trans }}</i>
+                                        {% elseif object.conformiteTraitement is not null and analyseImpact is null %}
+                                            <i>{{ 'aipd.treatment.label.no_aipd'|trans }}</i>
                                         {% else %}
-                                            {{ 'aipd.treatment.label.validation_in_progress'|trans }}
+                                            {{ analyseImpact.createdAt|date('d/m/Y') }}
                                         {% endif %}
                                     </td>
                                 </tr>
-                            </table>
-                        </div>
+                                {% if object.conformiteTraitement is not null and analyseImpact is not null %}
+                                    <tr>
+                                        <td>
+                                            <strong>{{ 'aipd.treatment.label.avis_aipd'|trans }}</strong>
+                                        </td>
+                                        <td>
+                                            {% set labelAipdColor = "label-default" %}
+                                            {% if analyseImpact.statut == "defavorable" %}
+                                                {% set labelAipdColor = "label-danger" %}
+                                            {% elseif analyseImpact.statut == "favorable_reserve" %}
+                                                {% set labelAipdColor = "label-warning" %}
+                                            {% elseif analyseImpact.statut == "favorable" %}
+                                                {% set labelAipdColor = "label-success" %}
+                                            {% endif %}
+                                            {% set statut = analyseImpact.statut %}
+                                            {% set labelStatut = "aipd.analyse_impact.values." ~ object.conformiteTraitement.lastAnalyseImpact.statut %}
+                                            <span class="label {{ labelAipdColor }}" style="display: inline-block;">
+                                                {{ labelStatut|trans}}
+                                            </span>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>{{ 'aipd.analyse_impact.list.date_validation'|trans }}</strong>
+                                        </td>
+                                        <td>
+                                            {% if analyseImpact.isValidated %}
+                                                {{ analyseImpact.dateValidation|date('d/m/Y') }}
+                                            {% else %}
+                                                {{ 'aipd.treatment.label.validation_in_progress'|trans }}
+                                            {% endif %}
+                                        </td>
+                                    </tr>
+                                {% endif %}
+                            </tbody>
+                        </table>
                     </div>
-                {% endif %}
+                </div>
             {% endif %}
 
             {# HISTORIC #}
diff --git a/templates/Registry/Treatment/public_list.html.twig b/templates/Registry/Treatment/public_list.html.twig
index 66e683f0943051d489b8a04c3ba85834afc3b7e4..c153cde37aa77bdc31ef49e695797f9c0e621492 100644
--- a/templates/Registry/Treatment/public_list.html.twig
+++ b/templates/Registry/Treatment/public_list.html.twig
@@ -24,18 +24,17 @@
                 <div class="box-body">
                     {% if objects is not empty %}
                         <table id="table" class="table table-bordered table-hover">
+                            <caption class="sr-only">{{ 'registry.treatment.title.list'|trans }}</caption>
                             <thead>
-                            <tr>
-                                <th scope="col">{{ 'registry.treatment.label.name'|trans }}</th>
-                                <th scope="col">{{ 'registry.treatment.label.goal'|trans }}</th>
-                            </tr>
+                                <tr>
+                                    <th scope="col">{{ 'registry.treatment.label.name'|trans }}</th>
+                                    <th scope="col">{{ 'registry.treatment.label.goal'|trans }}</th>
+                                </tr>
                             </thead>
                             <tbody>
                                 {% for object in objects %}
                                     <tr>
-                                        <td><a href="{{ path('registry_public_treatment_show', {id: object.id}) }}">
-                                            {{ object.name }}
-                                        </a></td>
+                                        <th scope="row"><a href="{{ path('registry_public_treatment_show', {id: object.id}) }}">{{ object.name }}</a></th>
                                         <td>
                                             {{ object.goal|striptags|slice(0, 60) }}
                                             {% if (object.goal|length > 60 ) %}
diff --git a/templates/Registry/Treatment/public_show.html.twig b/templates/Registry/Treatment/public_show.html.twig
index 86fac94afca1dddf8606e9ff47e0e58485658fb3..f5f190ad9af68ff684f93ef3660d1eb99c7d766e 100644
--- a/templates/Registry/Treatment/public_show.html.twig
+++ b/templates/Registry/Treatment/public_show.html.twig
@@ -52,7 +52,7 @@
                     <h3 class="box-title">{{ 'global.tab.general'|trans }}</h3>
                 </div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {% if (object.name and config.name == true) %}
                                 <tr>
@@ -161,7 +161,7 @@
                     <h3 class="box-title">{{ 'registry.treatment.tab.data_category'|trans }}</h3>
                 </div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             <tr>
                                 {% if (object.dataCategories and config.dataCategories == true) %}
@@ -208,7 +208,7 @@
                     <h3 class="box-title">{{ 'registry.treatment.tab.recipients'|trans }}</h3>
                 </div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {% if (object.recipientCategory and config.recipientCategory == true) %}
                                 <tr>
@@ -254,7 +254,7 @@
                     <h3 class="box-title">{{ 'registry.treatment.tab.specific'|trans }}</h3>
                 </div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {% if (config.exempt_AIPD == true) %}
                                 <tr>
@@ -398,7 +398,7 @@
                     <h3 class="box-title">{{ 'global.tab.history'|trans }}</h3>
                 </div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {% if (object.creator and config.creator == true) %}
                                 <tr>
@@ -450,12 +450,13 @@
                     <h3 class="box-title">{{ 'registry.treatment.tab.details'|trans }}</h3>
                 </div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             <tr>
                                 <td>
                                     <strong>{{ 'registry.treatment.label.concerned_people'|trans }}</strong>
                                 </td>
+                                <td></td>
                             </tr>
                             {% if (object.concernedPeopleParticular and config.concernedPeopleParticular == true) %}
                                 <tr>
@@ -637,43 +638,43 @@
                                     </td>
                                 </tr>
                             {% endif %}
-                  {% if (object.shelfLifes and config.shelfLifes == true) %}
-                          </tbody>
-                      </table>
-                      <table style="border-top: #f4f4f4 1px solid">
-                          <tbody>
-                              <tr>
-                                  <td class="col-sm-2" style="vertical-align: top; padding-left: 10px; padding-top: 10px"><strong>{{ 'registry.treatment.label.shelflife'|trans }}</strong></td>
-                                  <td class="col-sm-10" style="padding-top: 10px">
-                                      {% for method in object.shelfLifes %}
-                                          <div class="box box-default">
-                                              <div class="box-body no-padding">
-                                                  <table class="table">
-                                                      <tbody>
-                                                      <tr>
-                                                          <th scope="row" class="text-bold" style="width: 40%">{{ 'registry.treatment.label.shelflife_name'|trans }}</th>
-                                                          <td>{{ method.name }}</td>
-                                                      </tr>
-                                                      <tr>
-                                                          <th scope="row" class="text-bold">{{ 'registry.treatment.label.shelflife_duration'|trans }}</th>
-                                                          <td>{{ method.duration }}</td>
-                                                      </tr>
-                                                      <tr>
-                                                          <th scope="row" class="text-bold">{{ 'registry.treatment.label.shelflife_ultimate_fate'|trans }}</th>
-                                                          <td>{{ method.ultimateFate|dictionary('registry_treatment_ultimate_fate') }}</td>
-                                                      </tr>
-                                                      </tbody>
-                                                  </table>
-                                              </div>
-                                          </div>
-                                      {% endfor %}
-                                  </td>
-                              </tr>
-                          </tbody>
-                      </table>
-                      <table class="table">
-                          <tbody>
-                  {% endif %}
+                {% if (object.shelfLifes and config.shelfLifes == true) %}
+                        </tbody>
+                    </table>
+                    <table role="presentation" style="border-top: #f4f4f4 1px solid">
+                        <tbody>
+                            <tr>
+                                <td class="col-sm-2" style="vertical-align: top; padding-left: 10px; padding-top: 10px"><strong>{{ 'registry.treatment.label.shelflife'|trans }}</strong></td>
+                                <td class="col-sm-10" style="padding-top: 10px">
+                                    {% for method in object.shelfLifes %}
+                                        <div class="box box-default">
+                                            <div class="box-body no-padding">
+                                                <table role="presentation" class="table">
+                                                    <tbody>
+                                                    <tr>
+                                                        <td style="width: 40%"><strong>{{ 'registry.treatment.label.shelflife_name'|trans }}</strong></td>
+                                                        <td>{{ method.name }}</td>
+                                                    </tr>
+                                                    <tr>
+                                                        <td><strong>{{ 'registry.treatment.label.shelflife_duration'|trans }}</strong></td>
+                                                        <td>{{ method.duration }}</td>
+                                                    </tr>
+                                                    <tr>
+                                                        <td><strong>{{ 'registry.treatment.label.shelflife_ultimate_fate'|trans }}</strong></td>
+                                                        <td>{{ method.ultimateFate|dictionary('registry_treatment_ultimate_fate') }}</td>
+                                                    </tr>
+                                                    </tbody>
+                                                </table>
+                                            </div>
+                                        </div>
+                                    {% endfor %}
+                                </td>
+                            </tr>
+                        </tbody>
+                    </table>
+                    <table role="presentation" class="table">
+                        <tbody>
+                {% endif %}
                             {% if (object.dataOrigin and config.dataOrigin == true) %}
                                 <tr>
                                     <td>
@@ -745,7 +746,7 @@
                     <h3 class="box-title">{{ 'registry.treatment.tab.security'|trans }}</h3>
                 </div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {% if (config.securityAccessControl == true) %}
                                 <tr>
@@ -885,7 +886,7 @@
             <div class="box box-solid box-warning">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'global.tab.linked_modules'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {# PUBLIC PROOFS #}
                             {% include '_Utils/_show_public_block_proofs.html.twig' with { proofs: object.proofs } %}
diff --git a/templates/Registry/Treatment/show.html.twig b/templates/Registry/Treatment/show.html.twig
index 079e34cc87f939a7bf2241b5a687ef7c09a490da..6b18d2771faaefa48c1ef89967814f7b3cbad8ff 100644
--- a/templates/Registry/Treatment/show.html.twig
+++ b/templates/Registry/Treatment/show.html.twig
@@ -58,7 +58,7 @@
                                 <td><strong>{{ 'registry.treatment.label.statut'|trans }}</strong></td>
                                 <td>
                                     {% if object.statut is defined and object.statut %}
-                                    {{ object.statut|dictionary('treatment_statut') }}
+                                        {{ object.statut|dictionary('treatment_statut') }}
                                     {% endif %}
                                 </td>
                             </tr>
@@ -79,66 +79,66 @@
                 <div class="box-body no-padding">
                     <table role="presentation" class="table">
                         <tbody>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.public_registry'|trans }}</strong></td>
-                            <td>
-                                {% if object.public == true %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.name'|trans }}</strong></td>
-                            <td>{{ object.name }}</td>
-                        </tr>
-                        {% if serviceEnabled %}
-                            <tr>
-                                <td><strong>{{ 'registry.label.service'|trans }}</strong></td>
-                                <td>{{ object.service }}</td>
-                            </tr>
-                        {% endif %}
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.goal'|trans }}</strong></td>
-                            <td>{{ object.goal|nl2br }}</td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.author'|trans }}</strong></td>
-                            <td>{% if object.author is not null %}{{ object.author|dictionary('registry_treatment_author') }}{% endif %}</td>
-                        </tr>
-                        {% if object.author != "processing_manager" %}
-                            <tr>
-                                <td><strong>{{ 'registry.treatment.label.coordonnees_responsable_traitement'|trans }}</strong></td>
-                                <td>{{ object.coordonneesResponsableTraitement|nl2br }}</td>
-                            </tr>
-                        {% endif %}
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.manager'|trans }}</strong></td>
-                            <td>{{ object.manager }}</td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.active'|trans }}</strong></td>
-                            <td>
-                                {% if object.active %}
-                                    <span class="badge bg-green">{{ 'global.label.active'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-red">{{ 'global.label.inactive'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.legal_basis'|trans }}</strong></td>
-                            <td>{{ object.legalBasis|dictionary('registry_treatment_legal_basis') }}</td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.legal_basis_justification'|trans }}</strong></td>
-                            <td>{{ object.legalBasisJustification|nl2br }}</td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.observation'|trans }}</strong></td>
-                            <td>{{ object.observation|nl2br }}</td>
-                        </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.public_registry'|trans }}</strong></td>
+                                <td>
+                                    {% if object.public == true %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.name'|trans }}</strong></td>
+                                <td>{{ object.name }}</td>
+                            </tr>
+                            {% if serviceEnabled %}
+                                <tr>
+                                    <td><strong>{{ 'registry.label.service'|trans }}</strong></td>
+                                    <td>{{ object.service }}</td>
+                                </tr>
+                            {% endif %}
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.goal'|trans }}</strong></td>
+                                <td>{{ object.goal|nl2br }}</td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.author'|trans }}</strong></td>
+                                <td>{% if object.author is not null %}{{ object.author|dictionary('registry_treatment_author') }}{% endif %}</td>
+                            </tr>
+                            {% if object.author != "processing_manager" %}
+                                <tr>
+                                    <td><strong>{{ 'registry.treatment.label.coordonnees_responsable_traitement'|trans }}</strong></td>
+                                    <td>{{ object.coordonneesResponsableTraitement|nl2br }}</td>
+                                </tr>
+                            {% endif %}
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.manager'|trans }}</strong></td>
+                                <td>{{ object.manager }}</td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.active'|trans }}</strong></td>
+                                <td>
+                                    {% if object.active %}
+                                        <span class="badge bg-green">{{ 'global.label.active'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-red">{{ 'global.label.inactive'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.legal_basis'|trans }}</strong></td>
+                                <td>{{ object.legalBasis|dictionary('registry_treatment_legal_basis') }}</td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.legal_basis_justification'|trans }}</strong></td>
+                                <td>{{ object.legalBasisJustification|nl2br }}</td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.observation'|trans }}</strong></td>
+                                <td>{{ object.observation|nl2br }}</td>
+                            </tr>
                         </tbody>
                     </table>
                 </div>
@@ -150,24 +150,24 @@
                 <div class="box-body no-padding">
                     <table role="presentation" class="table">
                         <tbody>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.data_category'|trans }}</strong></td>
-                            <td>
-                                <ul class="ps-1">
-                                {% for category in object.dataCategories %}
-                                    <li>
-                                        {% if category.sensible %}<strong>{% endif %}
-                                        {{ category.name }}
-                                        {% if category.sensible %}</strong>{% endif %}
-                                    </li>
-                                {% endfor %}
-                                </ul>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.data_category_other'|trans }}</strong></td>
-                            <td>{{ object.dataCategoryOther|nl2br }}</td>
-                        </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.data_category'|trans }}</strong></td>
+                                <td>
+                                    <ul class="ps-1">
+                                    {% for category in object.dataCategories %}
+                                        <li>
+                                            {% if category.sensible %}<strong>{% endif %}
+                                            {{ category.name }}
+                                            {% if category.sensible %}</strong>{% endif %}
+                                        </li>
+                                    {% endfor %}
+                                    </ul>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.data_category_other'|trans }}</strong></td>
+                                <td>{{ object.dataCategoryOther|nl2br }}</td>
+                            </tr>
                         </tbody>
                     </table>
                 </div>
@@ -179,20 +179,20 @@
                 <div class="box-body no-padding">
                     <table role="presentation" class="table">
                         <tbody>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.recipient_category'|trans }}</strong></td>
-                            <td>{{ object.recipientCategory|nl2br }}</td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'global.label.linked_contractor'|trans }}</strong></td>
-                            <td>
-                                <ul class="ps-1">
-                                    {% for contractor in object.contractors %}
-                                        <li><a href="{{ path('registry_contractor_show', {'id': contractor.id}) }}" >{{ contractor }}</a></li>
-                                    {% endfor %}
-                                </ul>
-                            </td>
-                        </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.recipient_category'|trans }}</strong></td>
+                                <td>{{ object.recipientCategory|nl2br }}</td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'global.label.linked_contractor'|trans }}</strong></td>
+                                <td>
+                                    <ul class="ps-1">
+                                        {% for contractor in object.contractors %}
+                                            <li><a href="{{ path('registry_contractor_show', {'id': contractor.id}) }}" >{{ contractor }}</a></li>
+                                        {% endfor %}
+                                    </ul>
+                                </td>
+                            </tr>
                         </tbody>
                     </table>
                 </div>
@@ -204,96 +204,97 @@
                 <div class="box-body no-padding">
                     <table role="presentation" class="table">
                         <tbody>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.exempt_AIPD'|trans }}</strong></td>
-                            <td>
-                                {% if object.ExemptAIPD %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.systematic_monitoring'|trans }}</strong></td>
-                            <td>
-                                {% if object.systematicMonitoring %}
-                                    <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.large_scale_collection'|trans }}</strong></td>
-                            <td>
-                                {% if object.largeScaleCollection %}
-                                    <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.vulnerable_people'|trans }}</strong></td>
-                            <td>
-                                {% if object.vulnerablePeople %}
-                                    <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.data_crossing'|trans }}</strong></td>
-                            <td>
-                                {% if object.dataCrossing %}
-                                    <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.evaluation_or_rating'|trans }}</strong></td>
-                            <td>
-                                {% if object.evaluationOrRating %}
-                                    <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.automated_decisions_with_legal_effect'|trans }}</strong></td>
-                            <td>
-                                {% if object.automatedDecisionsWithLegalEffect %}
-                                    <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.automatic_exclusion_service'|trans }}</strong></td>
-                            <td>
-                                {% if object.automaticExclusionService %}
-                                    <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.innovative_use'|trans }}</strong></td>
-                            <td>
-                                {% if object.innovativeUse %}
-                                    <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.exempt_AIPD'|trans }}</strong></td>
+                                <td>
+                                    {% if object.ExemptAIPD %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.systematic_monitoring'|trans }}</strong></td>
+                                <td>
+                                    {% if object.systematicMonitoring %}
+                                        <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.large_scale_collection'|trans }}</strong></td>
+                                <td>
+                                    {% if object.largeScaleCollection %}
+                                        <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.vulnerable_people'|trans }}</strong></td>
+                                <td>
+                                    {% if object.vulnerablePeople %}
+                                        <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.data_crossing'|trans }}</strong></td>
+                                <td>
+                                    {% if object.dataCrossing %}
+                                        <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.evaluation_or_rating'|trans }}</strong></td>
+                                <td>
+                                    {% if object.evaluationOrRating %}
+                                        <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.automated_decisions_with_legal_effect'|trans }}</strong></td>
+                                <td>
+                                    {% if object.automatedDecisionsWithLegalEffect %}
+                                        <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.automatic_exclusion_service'|trans }}</strong></td>
+                                <td>
+                                    {% if object.automaticExclusionService %}
+                                        <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.innovative_use'|trans }}</strong></td>
+                                <td>
+                                    {% if object.innovativeUse %}
+                                        <span class="badge bg-yellow">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-green">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                        </tbody>
                     </table>
                 </div>
             </div>
@@ -304,28 +305,28 @@
                 <div class="box-body no-padding">
                     <table role="presentation" class="table">
                         <tbody>
-                        {% if is_granted('ROLE_ADMIN') %}
-                            <tr>
-                                <td><strong>{{ 'global.tab.history'|trans }}</strong></td>
-                                <td>
-                                    <a href="{{ path('user_collectivity_show', {'id': object.collectivity.id }) }}">
-                                        {{ object.collectivity }}
-                                    </a>
-                                </td>
-                            </tr>
-                        {% endif %}
-                        <tr>
-                            <td><strong>{{ 'global.label.created_at'|trans }}</strong></td>
-                            <td>{{ object.createdAt|date('d/m/Y H:i') }}</td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'global.label.updated_at'|trans }}</strong></td>
-                            <td>{{ object.updatedAt|date('d/m/Y H:i') }}</td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'global.label.updated_by'|trans }}</strong></td>
-                            <td>{{ object.updatedBy }}</td>
-                        </tr>
+                            {% if is_granted('ROLE_ADMIN') %}
+                                <tr>
+                                    <td><strong>{{ 'global.tab.history'|trans }}</strong></td>
+                                    <td>
+                                        <a href="{{ path('user_collectivity_show', {'id': object.collectivity.id }) }}">
+                                            {{ object.collectivity }}
+                                        </a>
+                                    </td>
+                                </tr>
+                            {% endif %}
+                            <tr>
+                                <td><strong>{{ 'global.label.created_at'|trans }}</strong></td>
+                                <td>{{ object.createdAt|date('d/m/Y H:i') }}</td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'global.label.updated_at'|trans }}</strong></td>
+                                <td>{{ object.updatedAt|date('d/m/Y H:i') }}</td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'global.label.updated_by'|trans }}</strong></td>
+                                <td>{{ object.updatedBy }}</td>
+                            </tr>
                         </tbody>
                     </table>
                 </div>
@@ -340,228 +341,230 @@
                 <div class="box-body no-padding">
                     <table role="presentation" class="table">
                         <tbody>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.concerned_people'|trans }}</strong></td>
-                        </tr>
-                        <tr>
-                            <td class="concerned-people-type col-md-8"><strong>{{ 'registry.treatment.label.concerned_people_particular'|trans }}</strong></td>
-                            <td class="col-md-4">
-                                {% if object.concernedPeopleParticular.check %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                    {% if object.concernedPeopleParticular.comment is not empty %}
-                                        <p class="mt-2">{{ object.concernedPeopleParticular.comment }}</p>
-                                    {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_user'|trans }}</strong></td>
-                            <td>
-                                {% if object.concernedPeopleUser.check %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                    {% if object.concernedPeopleUser.comment is not empty %}
-                                        <p class="mt-2">{{ object.concernedPeopleUser.comment }}</p>
-                                    {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_agent'|trans }}</strong></td>
-                            <td>
-                                {% if object.concernedPeopleAgent.check %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                    {% if object.concernedPeopleAgent.comment is not empty %}
-                                        <p class="mt-2">{{ object.concernedPeopleAgent.comment }}</p>
-                                    {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_elected'|trans }}</strong></td>
-                            <td>
-                                {% if object.concernedPeopleElected.check %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                    {% if object.concernedPeopleElected.comment is not empty %}
-                                        <p class="mt-2">{{ object.concernedPeopleElected.comment }}</p>
-                                    {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_company'|trans }}</strong></td>
-                            <td>
-                                {% if object.concernedPeopleCompany.check %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                    {% if object.concernedPeopleCompany.comment is not empty %}
-                                        <p class="mt-2">{{ object.concernedPeopleCompany.comment }}</p>
-                                    {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_partner'|trans }}</strong></td>
-                            <td>
-                                {% if object.concernedPeoplePartner.check %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                    {% if object.concernedPeoplePartner.comment is not empty %}
-                                        <p class="mt-2">{{ object.concernedPeoplePartner.comment }}</p>
-                                    {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_usager'|trans }}</strong></td>
-                            <td>
-                                {% if object.concernedPeopleUsager.check %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                    {% if object.concernedPeopleUsager.comment is not empty %}
-                                        <p class="mt-2">{{ object.concernedPeopleUsager.comment }}</p>
-                                    {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_other'|trans }}</strong></td>
-                            <td>
-                                {% if object.concernedPeopleOther.check %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                    {% if object.concernedPeopleOther.comment is not empty %}
-                                        <p class="mt-2">{{ object.concernedPeopleOther.comment }}</p>
-                                    {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.estimated_concerned_people'|trans }}</strong></td>
-                            <td>{{ object.estimatedConcernedPeople }}</td>
-                        </tr>
-                        <tr>
-                            <td><strong>{% if object.collectivity.hasModuleTools %}
-                                    {{ 'registry.treatment.label.tools_if_inactif'|trans }}
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.concerned_people'|trans }}</strong></td>
+                                <td></td>
+                            </tr>
+                            <tr>
+                                <td class="concerned-people-type col-md-8"><strong>{{ 'registry.treatment.label.concerned_people_particular'|trans }}</strong></td>
+                                <td class="col-md-4">
+                                    {% if object.concernedPeopleParticular.check %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                        {% if object.concernedPeopleParticular.comment is not empty %}
+                                            <p class="mt-2">{{ object.concernedPeopleParticular.comment }}</p>
+                                        {% endif %}
                                     {% else %}
-                                        {{ 'global.label.linked_tool'|trans }}
-                                    {% endif %}</strong></td>
-                            <td>
-                                {% if object.collectivity.hasModuleTools %}
-                                    <ul class="ps-1">
-                                        {% for tool in object.tools %}
-                                            <li><a href="{{ url('registry_tool_show', {'id': tool.id}) }}">{{ tool.name }}</a></li>
-                                        {% endfor %}
-                                    </ul>
-                                {% else %}
-                                {{ object.software }}
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.paper_processing'|trans }}</strong></td>
-                            <td>
-                                {% if object.paperProcessing %}
-                                    <span class="badge bg-gray">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-gray">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_user'|trans }}</strong></td>
+                                <td>
+                                    {% if object.concernedPeopleUser.check %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                        {% if object.concernedPeopleUser.comment is not empty %}
+                                            <p class="mt-2">{{ object.concernedPeopleUser.comment }}</p>
+                                        {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_agent'|trans }}</strong></td>
+                                <td>
+                                    {% if object.concernedPeopleAgent.check %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                        {% if object.concernedPeopleAgent.comment is not empty %}
+                                            <p class="mt-2">{{ object.concernedPeopleAgent.comment }}</p>
+                                        {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_elected'|trans }}</strong></td>
+                                <td>
+                                    {% if object.concernedPeopleElected.check %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                        {% if object.concernedPeopleElected.comment is not empty %}
+                                            <p class="mt-2">{{ object.concernedPeopleElected.comment }}</p>
+                                        {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_company'|trans }}</strong></td>
+                                <td>
+                                    {% if object.concernedPeopleCompany.check %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                        {% if object.concernedPeopleCompany.comment is not empty %}
+                                            <p class="mt-2">{{ object.concernedPeopleCompany.comment }}</p>
+                                        {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_partner'|trans }}</strong></td>
+                                <td>
+                                    {% if object.concernedPeoplePartner.check %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                        {% if object.concernedPeoplePartner.comment is not empty %}
+                                            <p class="mt-2">{{ object.concernedPeoplePartner.comment }}</p>
+                                        {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_usager'|trans }}</strong></td>
+                                <td>
+                                    {% if object.concernedPeopleUsager.check %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                        {% if object.concernedPeopleUsager.comment is not empty %}
+                                            <p class="mt-2">{{ object.concernedPeopleUsager.comment }}</p>
+                                        {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td class="concerned-people-type"><strong>{{ 'registry.treatment.label.concerned_people_other'|trans }}</strong></td>
+                                <td>
+                                    {% if object.concernedPeopleOther.check %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                        {% if object.concernedPeopleOther.comment is not empty %}
+                                            <p class="mt-2">{{ object.concernedPeopleOther.comment }}</p>
+                                        {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.estimated_concerned_people'|trans }}</strong></td>
+                                <td>{{ object.estimatedConcernedPeople }}</td>
+                            </tr>
+                            <tr>
+                                <td><strong>{% if object.collectivity.hasModuleTools %}
+                                        {{ 'registry.treatment.label.tools_if_inactif'|trans }}
+                                        {% else %}
+                                            {{ 'global.label.linked_tool'|trans }}
+                                        {% endif %}</strong></td>
+                                <td>
+                                    {% if object.collectivity.hasModuleTools %}
+                                        <ul class="ps-1">
+                                            {% for tool in object.tools %}
+                                                <li><a href="{{ url('registry_tool_show', {'id': tool.id}) }}">{{ tool.name }}</a></li>
+                                            {% endfor %}
+                                        </ul>
+                                    {% else %}
+                                    {{ object.software }}
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.paper_processing'|trans }}</strong></td>
+                                <td>
+                                    {% if object.paperProcessing %}
+                                        <span class="badge bg-gray">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-gray">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
                         </tbody>
                     </table>
-                    <table style="border-top: #f4f4f4 1px solid">
+                    <table role="presentation" style="border-top: #f4f4f4 1px solid">
                         <tbody>
-                        <tr>
-                            <td class="col-sm-2" style="vertical-align: top; padding-left: 10px; padding-top: 10px"><strong>{{ 'registry.treatment.label.shelflife'|trans }}</strong></td>
-                            <td class="col-sm-10" style="padding-top: 10px">
-                                {% for method in object.shelfLifes %}
-                                    <div class="box box-default">
-                                        <div class="box-body no-padding">
-                                            <table class="table">
-                                                <tbody>
-                                                <tr>
-                                                    <th scope="row" class="text-bold" style="width: 40%">{{ 'registry.treatment.label.shelflife_name'|trans }}</th>
-                                                    <td>{{ method.name }}</td>
-                                                </tr>
-                                                <tr>
-                                                    <th scope="row" class="text-bold">{{ 'registry.treatment.label.shelflife_duration'|trans }}</th>
-                                                    <td>{{ method.duration }}</td>
-                                                </tr>
-                                                <tr>
-                                                    <th scope="row" class="text-bold">{{ 'registry.treatment.label.shelflife_ultimate_fate'|trans }}</th>
-                                                    <td>{{ method.ultimateFate|dictionary('registry_treatment_ultimate_fate') }}</td>
-                                                </tr>
-                                                </tbody>
-                                            </table>
+                            <tr>
+                                <td class="col-sm-2" style="vertical-align: top; padding-left: 10px; padding-top: 10px"><strong>{{ 'registry.treatment.label.shelflife'|trans }}</strong></td>
+                                <td class="col-sm-10" style="padding-top: 10px">
+                                    {% for method in object.shelfLifes %}
+                                        <div class="box box-default">
+                                            <div class="box-body no-padding">
+                                                <table role="presentation" class="table">
+                                                    <tbody>
+                                                        <tr>
+                                                            <td style="width: 40%"><strong>{{ 'registry.treatment.label.shelflife_name'|trans }}</strong></td>
+                                                            <td>{{ method.name }}</td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td><strong>{{ 'registry.treatment.label.shelflife_duration'|trans }}</strong></td>
+                                                            <td>{{ method.duration }}</td>
+                                                        </tr>
+                                                        <tr>
+                                                            <td><strong>{{ 'registry.treatment.label.shelflife_ultimate_fate'|trans }}</strong></td>
+                                                            <td>{{ method.ultimateFate|dictionary('registry_treatment_ultimate_fate') }}</td>
+                                                        </tr>
+                                                    </tbody>
+                                                </table>
+                                            </div>
                                         </div>
-                                    </div>
-                                {% endfor %}
-                            </td>
-                        </tr>
+                                    {% endfor %}
+                                </td>
+                            </tr>
                         </tbody>
                     </table>
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
-                        <tr>
-                            <td class="col-md-8"><strong>{{ 'registry.treatment.label.data_origin'|trans }}</strong></td>
-                            <td class="col-md-4">{{ object.dataOrigin }}</td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.collecting_method'|trans }}</strong></td>
-                            <td>
-                                <ul class="ps-1">
-                                    {% for method in object.collectingMethod %}
-                                        <li>{{ method|dictionary('registry_treatment_collecting_method') }}</li>
-                                    {% endfor %}
-                                </ul>
-                            </td>
-                        </tr>
-                        {% if  object.otherCollectingMethod is not null %}
-                            <tr>
-                                <td><strong>{{ 'registry.treatment.label.otherCollectingMethod'|trans }}</strong></td>
-                                <td>{{ object.otherCollectingMethod }}</td>
-                            </tr>
-                        {% endif %}
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.legal_mentions'|trans }}</strong></td>
-                            <td>
-                                {% if object.legalMentions %}
-                                    <span class="badge bg-gray">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-gray">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        {% if object.legalBasis == 'consent' %}
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.consent_request'|trans }}</strong></td>
-                            <td>
-                                {% if object.consentRequest %}
-                                    <span class="badge bg-gray">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-gray">{{ 'global.label.no'|trans }}</span>
+                            <tr>
+                                <td class="col-md-8"><strong>{{ 'registry.treatment.label.data_origin'|trans }}</strong></td>
+                                <td class="col-md-4">{{ object.dataOrigin }}</td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.collecting_method'|trans }}</strong></td>
+                                <td>
+                                    <ul class="ps-1">
+                                        {% for method in object.collectingMethod %}
+                                            <li>{{ method|dictionary('registry_treatment_collecting_method') }}</li>
+                                        {% endfor %}
+                                    </ul>
+                                </td>
+                            </tr>
+                            {% if  object.otherCollectingMethod is not null %}
+                                <tr>
+                                    <td><strong>{{ 'registry.treatment.label.otherCollectingMethod'|trans }}</strong></td>
+                                    <td>{{ object.otherCollectingMethod }}</td>
+                                </tr>
+                            {% endif %}
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.legal_mentions'|trans }}</strong></td>
+                                <td>
+                                    {% if object.legalMentions %}
+                                        <span class="badge bg-gray">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-gray">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            {% if object.legalBasis == 'consent' %}
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.consent_request'|trans }}</strong></td>
+                                <td>
+                                    {% if object.consentRequest %}
+                                        <span class="badge bg-gray">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-gray">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                                {% if  object.consentRequestFormat is not null %}
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.consent_request_format'|trans }}</strong></td>
+                                <td>{{ object.consentRequestFormat }}</td>
+                            </tr>
                                 {% endif %}
-                            </td>
-                        </tr>
-                            {% if  object.consentRequestFormat is not null %}
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.consent_request_format'|trans }}</strong></td>
-                            <td>{{ object.consentRequestFormat }}</td>
-                        </tr>
                             {% endif %}
-                        {% endif %}
+                        </tbody>
                     </table>
                 </div>
             </div>
@@ -572,102 +575,102 @@
                 <div class="box-body no-padding">
                     <table role="presentation" class="table">
                         <tbody>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.security_access_control'|trans }}</strong></td>
-                            <td>
-                                {% if object.securityAccessControl.check %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                    {% if object.securityAccessControl.comment is not empty %}
-                                        <p class="mt-2">{{ object.securityAccessControl.comment }}</p>
-                                    {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.security_tracability'|trans }}</strong></td>
-                            <td>
-                                {% if object.securitytracability.check %}
-                                   <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                   {% if object.securitytracability.comment is not empty %}
-                                       <p class="mt-2">{{ object.securitytracability.comment }}</p>
-                                   {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.security_saving'|trans }}</strong></td>
-                            <td>
-                                {% if object.securitySaving.check %}
-                                   <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                   {% if object.securitySaving.comment is not empty %}
-                                       <p class="mt-2">{{ object.securitySaving.comment }}</p>
-                                   {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.security_update'|trans }}</strong></td>
-                            <td>
-                                {% if object.securityUpdate.check %}
-                                   <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                   {% if object.securityUpdate.comment is not empty %}
-                                       <p class="mt-2">{{ object.securityUpdate.comment }}</p>
-                                   {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.security_other'|trans }}</strong></td>
-                            <td>
-                                {% if object.securityOther.check %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                    {% if object.securityOther.comment is not empty %}
-                                        <p class="mt-2">{{ object.securityOther.comment }}</p>
-                                    {% endif %}
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.security_entitled_persons'|trans }}</strong></td>
-                            <td>
-                                {% if object.securityEntitledPersons %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.security_open_accounts'|trans }}</strong></td>
-                            <td>
-                                {% if object.securityOpenAccounts %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td><strong>{{ 'registry.treatment.label.security_specificities_delivered'|trans }}</strong></td>
-                            <td>
-                                {% if object.securitySpecificitiesDelivered %}
-                                    <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
-                                {% else %}
-                                    <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
-                                {% endif %}
-                            </td>
-                        </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.security_access_control'|trans }}</strong></td>
+                                <td>
+                                    {% if object.securityAccessControl.check %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                        {% if object.securityAccessControl.comment is not empty %}
+                                            <p class="mt-2">{{ object.securityAccessControl.comment }}</p>
+                                        {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.security_tracability'|trans }}</strong></td>
+                                <td>
+                                    {% if object.securitytracability.check %}
+                                       <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                       {% if object.securitytracability.comment is not empty %}
+                                           <p class="mt-2">{{ object.securitytracability.comment }}</p>
+                                       {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.security_saving'|trans }}</strong></td>
+                                <td>
+                                    {% if object.securitySaving.check %}
+                                       <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                       {% if object.securitySaving.comment is not empty %}
+                                           <p class="mt-2">{{ object.securitySaving.comment }}</p>
+                                       {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.security_update'|trans }}</strong></td>
+                                <td>
+                                    {% if object.securityUpdate.check %}
+                                       <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                       {% if object.securityUpdate.comment is not empty %}
+                                           <p class="mt-2">{{ object.securityUpdate.comment }}</p>
+                                       {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.security_other'|trans }}</strong></td>
+                                <td>
+                                    {% if object.securityOther.check %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                        {% if object.securityOther.comment is not empty %}
+                                            <p class="mt-2">{{ object.securityOther.comment }}</p>
+                                        {% endif %}
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.security_entitled_persons'|trans }}</strong></td>
+                                <td>
+                                    {% if object.securityEntitledPersons %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.security_open_accounts'|trans }}</strong></td>
+                                <td>
+                                    {% if object.securityOpenAccounts %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
+                            <tr>
+                                <td><strong>{{ 'registry.treatment.label.security_specificities_delivered'|trans }}</strong></td>
+                                <td>
+                                    {% if object.securitySpecificitiesDelivered %}
+                                        <span class="badge bg-green">{{ 'global.label.yes'|trans }}</span>
+                                    {% else %}
+                                        <span class="badge bg-yellow">{{ 'global.label.no'|trans }}</span>
+                                    {% endif %}
+                                </td>
+                            </tr>
                         </tbody>
                     </table>
                 </div>
@@ -677,7 +680,7 @@
             <div class="box box-solid box-warning">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'global.tab.linked_modules'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {# REQUESTS #}
                             {% include '_Utils/_show_block_requests.html.twig' with { requests: object.requests } %}
@@ -693,118 +696,171 @@
             </div>
 
             {# TREATMENT CONFORMITY & AIPD #}
-            {% if object.collectivity.hasModuleConformiteTraitement and object.ExemptAIPD == false %}
+            {% if object.collectivity.hasModuleConformiteTraitement %}
                 {# TREATMENT CONFORMITY #}
                 <div class="box box-solid box-success">
                     <div class="box-header with-border"><h3 class="box-title">{{ 'registry.treatment.tab.conformite'|trans }}</h3></div>
                     <div class="box-body no-padding">
                         <table role="presentation" class="table">
-                            <tr>
-                                <td style="width: 35%">
-                                    <strong>{{ 'registry.conformite_traitement.label.conformite_traitement'|trans }}</strong>
-                                </td>
-                                <td>
-                                    {% if object.conformiteTraitement is not null %}
-                                        {{ getConformiteTraitementLabel(object.conformiteTraitement)|raw }}
-                                    {% else %}
-                                        <span class="label label-default" style="display: inline-block;">{{ 'registry.conformite_traitement.label.not_done'|trans }}</span>
-                                    {% endif %}
-                                </td>
-                            </tr>
-                            <tr>
-                                <td>
-                                    <strong>{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</strong>
-                                </td>
-                                <td>
-                                    {% if object.conformiteTraitement is not null %}
-                                        {% set nbTotal = object.conformiteTraitement.nbConformes + object.conformiteTraitement.nbNonConformesMineures + object.conformiteTraitement.nbNonConformesMajeures %}
-                                        {% set widthNbConforme = ((object.conformiteTraitement.nbConformes * 100) / nbTotal)|round %}
-                                        {% set widthnbNonConformesMineures = ((object.conformiteTraitement.nbNonConformesMineures * 100) / nbTotal)|round %}
-                                        {% set widthnbNonConformesMajeures = 100 - (widthNbConforme + widthnbNonConformesMineures) %}
-                                        <div class="stacked-bar-graph">
-                                            {% if widthNbConforme %}<span style="width:{{ widthNbConforme }}%" class="bar-conforme tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.conforme'|trans }} {{ object.conformiteTraitement.nbConformes }}</span></span>{% endif %}
-                                            {% if widthnbNonConformesMineures %}<span style="width:{{ widthnbNonConformesMineures }}%" class="bar-non-conforme-mineure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.minor_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMineures }}</span></span>{% endif %}
-                                            {% if widthnbNonConformesMajeures %}<span style="width:{{ widthnbNonConformesMajeures }}%" class="bar-non-conforme-majeure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.major_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMajeures }}</span></span>{% endif %}
-                                        </div>
-                                    {% endif %}
-                                </td>
-                            </tr>
-                            {% if is_granted('ROLE_USER') %}
+                            <tbody>
                                 <tr>
-                                    <td>
-                                        <strong>{{ 'global.label.actions'|trans }}</strong>
+                                    <td style="width: 35%">
+                                        <strong>{{ 'registry.treatment.label.last_conformite_traitement'|trans }}</strong>
                                     </td>
                                     <td>
-                                        <a href="
-                                            {% if object.conformiteTraitement is null %}
-                                                {{ path('registry_conformite_traitement_create', {'idTraitement': object.id}) }}
-                                            {% else %}
-                                                {{ path('registry_conformite_traitement_edit', {'id': object.conformiteTraitement.id}) }}
-                                            {% endif %}
-                                        "><i aria-hidden="true" class="fa fa-pencil"></i> {{ 'registry.conformite_traitement.action.show_conformite_traitement'|trans }}</a>
+                                        {% if object.conformiteTraitement is not null %}
+                                            {{ object.conformiteTraitement.updatedAt|date('d/m/Y') }}
+                                        {% else %}
+                                            <i>{{ 'registry.treatment.label.no_conformite_traitement'|trans }}</i>
+                                        {% endif %}
                                     </td>
                                 </tr>
-                            {% endif %}
+                                {% if object.conformiteTraitement is not null %}
+                                    <tr>
+                                        <td>
+                                            <strong>{{ 'registry.conformite_traitement.label.conformite_traitement'|trans }}</strong>
+                                        </td>
+                                        <td>
+                                            {{ getConformiteTraitementLabel(object.conformiteTraitement)|raw }}
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>{{ 'registry.conformite_traitement.label.conformite_reponse'|trans }}</strong>
+                                        </td>
+                                        <td>
+                                            {% set nbTotal = object.conformiteTraitement.nbConformes + object.conformiteTraitement.nbNonConformesMineures + object.conformiteTraitement.nbNonConformesMajeures %}
+                                            {% set widthNbConforme = ((object.conformiteTraitement.nbConformes * 100) / nbTotal)|round %}
+                                            {% set widthnbNonConformesMineures = ((object.conformiteTraitement.nbNonConformesMineures * 100) / nbTotal)|round %}
+                                            {% set widthnbNonConformesMajeures = 100 - (widthNbConforme + widthnbNonConformesMineures) %}
+                                            <div class="stacked-bar-graph">
+                                                {% if widthNbConforme %}<span style="width:{{ widthNbConforme }}%" class="bar-conforme tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.conforme'|trans }} {{ object.conformiteTraitement.nbConformes }}</span></span>{% endif %}
+                                                {% if widthnbNonConformesMineures %}<span style="width:{{ widthnbNonConformesMineures }}%" class="bar-non-conforme-mineure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.minor_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMineures }}</span></span>{% endif %}
+                                                {% if widthnbNonConformesMajeures %}<span style="width:{{ widthnbNonConformesMajeures }}%" class="bar-non-conforme-majeure tooltipchart"><span class="tooltipcharttext">{{ 'registry.conformite_traitement.label.tooltip.major_conforme'|trans }} {{ object.conformiteTraitement.nbNonConformesMajeures }}</span></span>{% endif %}
+                                            </div>
+                                        </td>
+                                    </tr>
+                                {% endif %}
+                                {% if is_granted('ROLE_USER') and (actionEnabled) %}
+                                    <tr>
+                                        <td>
+                                            <strong>{{ 'global.label.actions'|trans }}</strong>
+                                        </td>
+                                        <td>
+                                            <a href="
+                                                {% if object.conformiteTraitement is null %}
+                                                    {{ path('registry_conformite_traitement_create', {'idTraitement': object.id}) }}
+                                                {% else %}
+                                                    {{ path('registry_conformite_traitement_edit', {'id': object.conformiteTraitement.id}) }}
+                                                {% endif %}
+                                            "><i aria-hidden="true" class="fa fa-clipboard-check"></i> {{ 'registry.conformite_traitement.action.show_conformite_traitement'|trans }}</a>
+                                        </td>
+                                    </tr>
+                                {% endif %}
+                            </tbody>
                         </table>
                     </div>
                 </div>
                 {# AIPD #}
-                {% if object.conformiteTraitement is not null and object.conformiteTraitement.lastAnalyseImpact is not null %}
-                    <div class="box box-solid box-primary">
-                        <div class="box-header with-border"><h3 class="box-title">{{ 'registry.treatment.tab.last_aipd'|trans }}</h3></div>
-                        <div class="box-body no-padding">
-                            <table class="table" role="presentation">
+                {% if object.conformiteTraitement is not null %}
+                    {% set analyseImpact = object.conformiteTraitement.lastAnalyseImpact %}
+                {% endif %}
+                <div class="box box-solid box-primary">
+                    <div class="box-header with-border"><h3 class="box-title">{{ 'registry.treatment.tab.last_aipd'|trans }}</h3></div>
+                    <div class="box-body no-padding">
+                        <table role="presentation" class="table">
+                            <tbody>
                                 <tr>
                                     <td style="width: 35%">
-                                        <strong>{{ 'aipd.treatment.label.avis_aipd'|trans }}</strong>
+                                        <strong>{{ 'aipd.treatment.label.last_aipd'|trans }}</strong>
                                     </td>
                                     <td>
-                                        {% set analyseImpact = object.conformiteTraitement.lastAnalyseImpact %}
-
-                                        {% set labelAipdColor = "label-default" %}
-                                        {% if analyseImpact.statut == "defavorable" %}
-                                            {% set labelAipdColor = "label-danger" %}
-                                        {% elseif analyseImpact.statut == "favorable_reserve" %}
-                                            {% set labelAipdColor = "label-warning" %}
-                                        {% elseif analyseImpact.statut == "favorable" %}
-                                            {% set labelAipdColor = "label-success" %}
-                                        {% endif %}
-                                        {% set statut = analyseImpact.statut %}
-                                        {% set labelStatut = "aipd.analyse_impact.values." ~ object.conformiteTraitement.lastAnalyseImpact.statut %}
-                                        <span class="label {{ labelAipdColor }}" style="display: inline-block;">
-                                            {{ labelStatut|trans}}
-                                        </span>
-                                    </td>
-                                </tr>
-                                <tr>
-                                    <td>
-                                        <strong>{{ 'aipd.analyse_impact.list.date_validation'|trans }}</strong>
-                                    </td>
-                                    <td>
-                                        {% if analyseImpact.isValidated %}
-                                            {{ analyseImpact.dateValidation|date('d/m/Y') }}
+                                        {% if object.conformiteTraitement is null %}
+                                            <i>{{ 'aipd.treatment.label.no_conformite_traitement'|trans }}</i>
+                                        {% elseif object.conformiteTraitement is not null and analyseImpact is null %}
+                                            <i>{{ 'aipd.treatment.label.no_aipd'|trans }}</i>
                                         {% else %}
-                                            {{ 'aipd.treatment.label.validation_in_progress'|trans }}
+                                            {{ analyseImpact.createdAt|date('d/m/Y') }}
                                         {% endif %}
                                     </td>
                                 </tr>
-                                {% if is_granted('ROLE_USER') %}
+                                {% if object.conformiteTraitement is not null and analyseImpact is not null %}
                                     <tr>
                                         <td>
-                                            <strong>{{ 'global.label.actions'|trans }}</strong>
+                                            <strong>{{ 'aipd.treatment.label.avis_aipd'|trans }}</strong>
                                         </td>
                                         <td>
-                                            <a href="{{ path('aipd_analyse_impact_edit', {'id': analyseImpact.id}) }}">
-                                                <i aria-hidden="true" class="fa fa-chalkboard-teacher"></i>
-                                                {{ 'aipd.analyse_impact.action.edit'|trans }}
-                                            </a>
+                                            {% set labelAipdColor = "label-default" %}
+                                            {% if analyseImpact.statut == "defavorable" %}
+                                                {% set labelAipdColor = "label-danger" %}
+                                            {% elseif analyseImpact.statut == "favorable_reserve" %}
+                                                {% set labelAipdColor = "label-warning" %}
+                                            {% elseif analyseImpact.statut == "favorable" %}
+                                                {% set labelAipdColor = "label-success" %}
+                                            {% endif %}
+                                            {% set statut = analyseImpact.statut %}
+                                            {% set labelStatut = "aipd.analyse_impact.values." ~ object.conformiteTraitement.lastAnalyseImpact.statut %}
+                                            <span class="label {{ labelAipdColor }}" style="display: inline-block;">
+                                                {{ labelStatut|trans}}
+                                            </span>
+                                        </td>
+                                    </tr>
+                                    <tr>
+                                        <td>
+                                            <strong>{{ 'aipd.analyse_impact.list.date_validation'|trans }}</strong>
+                                        </td>
+                                        <td>
+                                            {% if analyseImpact.isValidated %}
+                                                {{ analyseImpact.dateValidation|date('d/m/Y') }}
+                                            {% else %}
+                                                {{ 'aipd.treatment.label.validation_in_progress'|trans }}
+                                            {% endif %}
                                         </td>
                                     </tr>
                                 {% endif %}
-                            </table>
-                        </div>
+                                {% if is_granted('ROLE_USER') and (actionEnabled) %}
+                                    {% if object.conformiteTraitement is not null %}
+                                        <tr>
+                                            <td>
+                                                <strong>{{ 'global.label.actions'|trans }}</strong>
+                                            </td>
+                                            <td>
+                                                {% if analyseImpact is not null %}
+                                                    {% if analyseImpact.isValidated != 1 %}
+                                                        <a href="{{ path('aipd_analyse_impact_edit', {'id': analyseImpact.id}) }}">
+                                                            <i aria-hidden="true" class="fa fa-pencil"></i>
+                                                            {{ 'aipd.analyse_impact.action.edit'|trans }}
+                                                        </a>
+                                                        {% if analyseImpact.isReadyForValidation %}
+                                                            <a href="{{ path('aipd_analyse_impact_validation', {'id': analyseImpact.id}) }}">
+                                                                <i aria-hidden="true" class="fa fa-check-square"></i>
+                                                                {{ 'global.action.validate'|trans }}
+                                                            </a>
+                                                        {% endif %}
+                                                    {% else %}
+                                                        <a href="{{ path('aipd_analyse_impact_print', {'id': analyseImpact.id}) }}">
+                                                            <i aria-hidden="true" class="fa fa-print"></i>
+                                                            {{ 'aipd.analyse_impact.action.print'|trans }}
+                                                        </a>
+                                                        <a href="{{ path('aipd_analyse_impact_delete', {'id': analyseImpact.id}) }}">
+                                                            <i aria-hidden="true" class="fa fa-trash"></i>
+                                                            {{ 'global.action.delete'|trans }}
+                                                        </a>
+                                                    {% endif %}
+                                                {% else %}
+                                                    <a href="{{ path('registry_conformite_traitement_start_aipd', {'id': object.conformiteTraitement.id}) }}">
+                                                        <i aria-hidden="true" class="fa fa-magnifying-glass-chart"></i>
+                                                        {{ 'aipd.analyse_impact.action.create'|trans }}
+                                                    </a>
+                                                {% endif %}
+                                            </td>
+                                        </tr>
+                                    {% endif %}
+                                {% endif %}
+                            </tbody>
+                        </table>
                     </div>
-                {% endif %}
+                </div>
             {% endif %}
         </div>
     </div>
diff --git a/templates/Registry/Violation/list.html.twig b/templates/Registry/Violation/list.html.twig
index b2950476fef0644b8fcbf3d3c048b98ca225f849..09a5b14d4b3e17499a9064895728c1574b15d8e9 100644
--- a/templates/Registry/Violation/list.html.twig
+++ b/templates/Registry/Violation/list.html.twig
@@ -33,38 +33,34 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                {% if is_granted('ROLE_USER') %}
+        <div class="col-xs-12 mb-1">
+            {% if is_granted('ROLE_USER') %}
                 <a href="{{ path('registry_violation_create') }}" class="btn btn-default">
                     <i aria-hidden="true" class="fa fa-plus"></i>
                     {{ 'registry.violation.action.new'|trans }}
                 </a>
-                {% endif %}
-                {% if app.user.roles[0] != 'ROLE_REFERENT' %}
-                <a href="{{ path('registry_violation_report') }}" class="btn btn-default">
-                    <i aria-hidden="true" class="fa fa-clipboard-list"></i>
-                    {{ 'global.action.report'|trans }}
+            {% endif %}
+            <a href="{{ path('registry_violation_report') }}" class="btn btn-default">
+                <i aria-hidden="true" class="fa fa-clipboard-list"></i>
+                {{ 'global.action.report'|trans }}
+            </a>
+            {% if app.request.query.get('archive') == 'true' %}
+                <a href="{{ path('registry_violation_list', {'archive' : 'false'}) }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-archive"></i>
+                    {{ 'registry.violation.action.not_archived'|trans }}
                 </a>
-                {% endif %}
-                {% if app.request.query.get('archive') == 'true' %}
-                    <a href="{{ path('registry_violation_list', {'archive' : 'false'}) }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-archive"></i>
-                        {{ 'registry.violation.action.not_archived'|trans }}
-                    </a>
-                {% else %}
-                    <a href="{{ path('registry_violation_list', {'archive' : 'true'}) }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-archive"></i>
-                        {{ 'registry.violation.action.archived'|trans }}
-                    </a>
-                {% endif %}
-                {% if category and category.documents|length > 0 %}
-                    <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
-                        <i aria-hidden="true" class="fa fa-circle-info"></i>
-                        {{ 'global.action.documentation'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+            {% else %}
+                <a href="{{ path('registry_violation_list', {'archive' : 'true'}) }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-archive"></i>
+                    {{ 'registry.violation.action.archived'|trans }}
+                </a>
+            {% endif %}
+            {% if category and category.documents|length > 0 %}
+                <a href="{{ path('documentation_document_index') }}?category={{ category.id }}" class="btn btn-default pull-right">
+                    <i aria-hidden="true" class="fa fa-circle-info"></i>
+                    {{ 'global.action.documentation'|trans }}
+                </a>
+            {% endif %}
         </div>
     </div>
 
@@ -73,82 +69,83 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <div id="custom-buttons" style="float:left">
-                        <a id="print-all" style="float:left" href="{{ path('registry_violation_print_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
+                        <a id="print-all" aria-controls="table" style="float:left" href="{{ path('registry_violation_print_all', { }) }}" class="dt-button buttons-collection buttons-colvis">
                             {{ 'global.action.print'|trans }}
                         </a>
                     </div>
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'registry.violation.title.list'|trans }} {% if app.request.query.get('archive') == 'true' %}{{ 'registry.violation.title.list_archived'|trans }}{% else %}{{ 'registry.violation.title.list_not_archived'|trans }}{% endif %}</caption>
                         <thead>
-                        <tr>
-                            <th scope="col" style="position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_date" placeholder="{{ 'global.placeholder.date'|trans }}" style="z-index:10;left: inherit!important;top: 0;font-size: 14px;max-width:90%;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            {% if is_granted('ROLE_REFERENT') %}
+                            <tr>
+                                <th scope="col" style="position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_date" placeholder="{{ 'global.placeholder.date'|trans }}" style="z-index:10;left: inherit!important;top: 0;font-size: 14px;max-width:90%;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">
+                                        <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    </th>
+                                {% endif %}
                                 <th scope="col">
-                                    <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                    <select class="form-control" id="search_nature" style="width: 100%;">
+                                        <option value="">{{ 'registry.violation.list.violation_nature'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_violation_nature') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_inProgress" style="width: 100%;">
+                                        <option value="">{{ 'global.label.in_progress'|trans }}</option>
+                                        <option value="1">{{ 'global.label.yes'|trans }}</option>
+                                        <option value="0">{{ 'global.label.no'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_cause" style="width: 100%;">
+                                        <option value="">{{ 'registry.violation.list.cause'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_violation_cause') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_gravity" style="width: 100%;">
+                                        <option value="">{{ 'registry.violation.list.gravity'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_violation_gravity') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_notification" style="width: 100%;">
+                                        <option value="">{{ 'registry.violation.label.notification'|trans }}</option>
+                                        {% for key, subject in dictionary('registry_violation_notification_list') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 100%;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 100%;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
                                 </th>
-                            {% endif %}
-                            <th scope="col">
-                                <select class="form-control" id="search_nature" style="width: 100%;">
-                                    <option value="">{{ 'registry.violation.list.violation_nature'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_violation_nature') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_inProgress" style="width: 100%;">
-                                    <option value="">{{ 'global.label.in_progress'|trans }}</option>
-                                    <option value="1">{{ 'global.label.yes'|trans }}</option>
-                                    <option value="0">{{ 'global.label.no'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_cause" style="width: 100%;">
-                                    <option value="">{{ 'registry.violation.list.cause'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_violation_cause') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_gravity" style="width: 100%;">
-                                    <option value="">{{ 'registry.violation.list.gravity'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_violation_gravity') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_notification" style="width: 100%;">
-                                    <option value="">{{ 'registry.violation.label.notification'|trans }}</option>
-                                    {% for key, subject in dictionary('registry_violation_notification_list') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 100%;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 100%;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col"></th>
-                        </tr>
-                        <tr>
-                            <th scope="col">{{ 'registry.violation.label.date'|trans }}</th>
-                            {% if is_granted('ROLE_REFERENT') %}
-                                <th scope="col">{{ 'global.label.organization'|trans }}</th>
-                            {%  endif %}
-                            <th scope="col">{{ 'registry.violation.list.violation_nature'|trans }}</th>
-                            <th scope="col">{{ 'registry.violation.list.in_progress'|trans }}</th>
-                            <th scope="col">{{ 'registry.violation.list.cause'|trans }}</th>
-                            <th scope="col">{{ 'registry.violation.label.gravity'|trans }}</th>
-                            <th scope="col">{{ 'registry.violation.label.notification'|trans }}</th>
-                            <th scope="col" style="max-width: 60px;">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col" style="max-width: 60px;">{{ 'global.label.updated_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                        </tr>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col">{{ 'registry.violation.label.date'|trans }}</th>
+                                {% if is_granted('ROLE_REFERENT') %}
+                                    <th scope="col">{{ 'global.label.organization'|trans }}</th>
+                                {%  endif %}
+                                <th scope="col">{{ 'registry.violation.list.violation_nature'|trans }}</th>
+                                <th scope="col">{{ 'registry.violation.list.in_progress'|trans }}</th>
+                                <th scope="col">{{ 'registry.violation.list.cause'|trans }}</th>
+                                <th scope="col">{{ 'registry.violation.label.gravity'|trans }}</th>
+                                <th scope="col">{{ 'registry.violation.label.notification'|trans }}</th>
+                                <th scope="col" style="max-width: 60px;">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col" style="max-width: 60px;">{{ 'global.label.updated_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                            </tr>
                         </thead>
                     </table>
                 </div>
diff --git a/templates/Registry/Violation/show.html.twig b/templates/Registry/Violation/show.html.twig
index 7e3315086bd0d5d47c839df7f3d867bf21a1f9bc..c9819c963b7d158dddc60393ba384cf1f2768493 100644
--- a/templates/Registry/Violation/show.html.twig
+++ b/templates/Registry/Violation/show.html.twig
@@ -50,7 +50,7 @@
             <div class="box box-solid box-primary">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'registry.violation.tab.information'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                         <tr>
                             <td><strong>{{ 'registry.violation.label.date'|trans }}</strong></td>
@@ -127,7 +127,7 @@
             <div class="box box-solid box-default">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'global.tab.history'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                         {% if is_granted('ROLE_ADMIN') %}
                             <tr>
@@ -163,7 +163,7 @@
             <div class="box box-solid box-success">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'registry.violation.tab.consequence'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                         <tr>
                             <td><strong>{{ 'registry.violation.label.potential_impacts_nature'|trans }}</strong></td>
@@ -216,7 +216,7 @@
             <div class="box box-solid box-warning">
                 <div class="box-header with-border"><h3 class="box-title">{{ 'global.tab.linked_modules'|trans }}</h3></div>
                 <div class="box-body no-padding">
-                    <table class="table">
+                    <table role="presentation" class="table">
                         <tbody>
                             {# TREATMENTS #}
                             {% include '_Utils/_show_block_treatments.html.twig' with { treatments: object.treatments } %}
diff --git a/templates/Reporting/Dashboard/index.html.twig b/templates/Reporting/Dashboard/index.html.twig
index 9fabe4e15272506ea47e790133ab9b4b3cb58fd3..3269c1377d0e89c93f61a326cb880dd80519d975 100644
--- a/templates/Reporting/Dashboard/index.html.twig
+++ b/templates/Reporting/Dashboard/index.html.twig
@@ -27,7 +27,7 @@
                             <div class="box-header with-border"><h3 class="box-title">{{ 'reporting.dashboard.tab.registry_contractors'|trans }}</h3></div>
                             <div class="box-body">
                                 {% if 0 == data.contractor.all %}
-                                    {{ 'global.label.no_data'|trans }}
+                                    <p class="no-margin">{{ 'global.label.no_data'|trans }}</p>
                                 {% else %}
                                     <div class="col-sm-6 col-sm-offset-0 col-xs-4 col-xs-offset-1 text-center">
                                         <canvas id="contractor-clauses" width="400" height="400"></canvas>
@@ -54,21 +54,20 @@
                         <div class="small-box bg-yellow">
                             <div class="inner">
                                 <h3>{{ data.request.value.status.toProcess }}</h3>
-
                                 <p>{{ 'reporting.dashboard.label.requests_to_do'|trans }}</p>
                             </div>
                             <div class="icon">
                                 <i aria-hidden="true" class="fa fa-users"></i>
                             </div>
-                            <a href="{{ path('registry_request_list') }}" class="small-box-footer">
-                                {{ 'global.action.read_more'|trans }} <i aria-hidden="true" class="fa fa-arrow-circle-right"></i>
+                            <a href="{{ path('registry_request_list') }}" class="small-box-footer" aria-label="{{ 'reporting.dashboard.action.read_more_requests'|trans }}">
+                                {{ 'reporting.dashboard.action.read_more'|trans }} <i aria-hidden="true" class="fa fa-arrow-circle-right"></i>
                             </a>
                         </div>
                         <div class="box box-solid">
-                            <div class="box-header with-border"><h3 class="box-title">Demandes</h3></div>
+                            <div class="box-header with-border"><h3 class="box-title">{{ 'reporting.dashboard.tab.registry_requests'|trans }}</h3></div>
                             <div class="box-body">
                                 {% if 0 == data.request.value.all %}
-                                    {{ 'global.label.no_data'|trans }}
+                                    <p class="no-margin">{{ 'global.label.no_data'|trans }}</p>
                                 {% else %}
                                     <div class="col-sm-6 col-sm-offset-0 col-xs-4 col-xs-offset-1 text-center" style="padding-left: 0; padding-right: 0;">
                                         <canvas id="request-type" width="500" height="500"></canvas>
@@ -90,7 +89,7 @@
                             <div class="box-header with-border"><h3 class="box-title">{{ 'reporting.dashboard.tab.maturity_survey'|trans }}</h3></div>
                             <div class="box-body select-width">
                                 {% if data.maturity is empty %}
-                                    {{ 'global.label.no_data'|trans }}
+                                    <p class="no-margin">{{ 'global.label.no_data'|trans }}</p>
                                 {% else %}
                                     <select class="selectpicker" id="referentiel-chooser">
                                         {% for ref in referentiels %}
@@ -113,7 +112,7 @@
                             <div class="box-header with-border"><h3 class="box-title">{{ 'reporting.dashboard.tab.security_measures'|trans }}</h3></div>
                             <div class="box-body">
                                 {% if 0 == data.treatment.value.numeric %}
-                                    {{ 'global.label.no_data'|trans }}
+                                    <p class="no-margin">{{ 'global.label.no_data'|trans }}</p>
                                 {% else %}
                                     <canvas id="treatment-bar"></canvas>
                                 {% endif %}
@@ -131,7 +130,7 @@
                                     <div class="box-header with-border"><h3 class="box-title">{{ 'reporting.dashboard.tab.conformite_traitements'|trans }}</h3></div>
                                     <div class="box-body">
                                         {% if data.conformiteTraitement.data is empty %}
-                                            {{ 'global.label.no_data'|trans }}
+                                            <p class="no-margin">{{ 'global.label.no_data'|trans }}</p>
                                         {% else %}
                                             <canvas id="conformiteTraitement-pie"></canvas>
                                         {% endif %}
@@ -157,8 +156,8 @@
                                 <div class="icon">
                                     <i aria-hidden="true" class="fa fa-magnifying-glass-chart"></i>
                                 </div>
-                                <a href="{{ path('registry_conformite_traitement_list') }}" class="small-box-footer">
-                                    {{ 'global.action.read_more'|trans }} <i aria-hidden="true" class="fa fa-arrow-circle-right"></i>
+                                <a href="{{ path('registry_conformite_traitement_list') }}" class="small-box-footer" aria-label="{{ 'reporting.dashboard.action.read_more_aipd'|trans }}">
+                                    {{ 'reporting.dashboard.action.read_more'|trans }} <i aria-hidden="true" class="fa fa-arrow-circle-right"></i>
                                 </a>
                             </div>
                         {% endif %}
@@ -174,8 +173,8 @@
                             <div class="icon">
                                 <i aria-hidden="true" class="fa fa-crosshairs"></i>
                             </div>
-                            <a href="{{ path('registry_mesurement_action_plan') }}" class="small-box-footer">
-                                {{ 'global.action.read_more'|trans }} <i aria-hidden="true" class="fa fa-arrow-circle-right"></i>
+                            <a href="{{ path('registry_mesurement_action_plan') }}" class="small-box-footer" aria-label="{{ 'reporting.dashboard.action.read_more_action_plan'|trans }}">
+                                {{ 'reporting.dashboard.action.read_more'|trans }} <i aria-hidden="true" class="fa fa-arrow-circle-right"></i>
                             </a>
                         </div>
                     </div>
@@ -191,8 +190,8 @@
                             <div class="icon">
                                 <i aria-hidden="true" class="fa fa-exclamation-circle"></i>
                             </div>
-                            <a href="{{ path('registry_violation_list') }}" class="small-box-footer">
-                                {{ 'global.action.read_more'|trans }} <i aria-hidden="true" class="fa fa-arrow-circle-right"></i>
+                            <a href="{{ path('registry_violation_list') }}" class="small-box-footer" aria-label="{{ 'reporting.dashboard.action.read_more_violation'|trans }}">
+                                {{ 'reporting.dashboard.action.read_more'|trans }} <i aria-hidden="true" class="fa fa-arrow-circle-right"></i>
                             </a>
                         </div>
                     </div>
@@ -207,8 +206,8 @@
                             <div class="icon">
                                 <i aria-hidden="true" class="fa fa-adjust"></i>
                             </div>
-                            <a href="{{ path('registry_mesurement_list') }}" class="small-box-footer">
-                                {{ 'global.action.read_more'|trans }} <i aria-hidden="true" class="fa fa-arrow-circle-right"></i>
+                            <a href="{{ path('registry_mesurement_list') }}" class="small-box-footer" aria-label="{{ 'reporting.dashboard.action.read_more_mesurements'|trans }}">
+                                {{ 'reporting.dashboard.action.read_more'|trans }} <i aria-hidden="true" class="fa fa-arrow-circle-right"></i>
                             </a>
                         </div>
                     </div>
@@ -219,41 +218,42 @@
                             <div class="box-header with-border"><h3 class="box-title">{{ 'reporting.dashboard.tab.registry_action_plan'|trans }} <small>{{ app_user_dashboard_action_plan_limit }} {{ 'reporting.dashboard.tab.registry_action_plan_subtitle'|trans }}</small></h3></div>
                             <div class="box-body">
                                 <table class="table table-striped table-bordered">
+                                    <caption class="sr-only">{{ 'reporting.dashboard.tab.registry_action_plan'|trans }} {{ app_user_dashboard_action_plan_limit }} {{ 'reporting.dashboard.tab.registry_action_plan_subtitle'|trans }}</caption>
                                     <thead>
-                                    <tr>
-                                        <th scope="col">{{ 'registry.mesurement.label.name'|trans }}</th>
-                                        <th scope="col">{{ 'registry.mesurement.label.planification_date'|trans }}</th>
-                                        <th scope="col">{{ 'registry.mesurement.label.priority'|trans }}</th>
-                                        <th scope="col">{{ 'registry.mesurement.label.manager'|trans }}</th>
-                                    </tr>
-                                    </thead>
-                                    <tbody>
-                                    {% if not actions|length %}
                                         <tr>
-                                            <td colspan="4" style="text-align: center">
-                                                {{ 'global.label.no_data'|trans }}
-                                            </td>
+                                            <th scope="col">{{ 'registry.mesurement.label.name'|trans }}</th>
+                                            <th scope="col">{{ 'registry.mesurement.label.planification_date'|trans }}</th>
+                                            <th scope="col">{{ 'registry.mesurement.label.priority'|trans }}</th>
+                                            <th scope="col">{{ 'registry.mesurement.label.manager'|trans }}</th>
                                         </tr>
-                                    {% endif %}
-                                    {% for action in actions %}
-                                        <tr>
-                                            <td><a href="/actions-de-protection/visualiser/{{ action.id }}" >{{ action.name }}</a></td>
-                                            <td>{{ action.planificationDate|date('d/m/Y') }}</td>
-                                            <td>
-                                                {% set key = action.priority %}
-                                                {% if key is not null %}
-                                                    {% if key is same as ('low') %}
-                                                        <span class="badge bg-blue">{{ dictionary('registry_mesurement_priority')[key] }}</span>
-                                                    {% elseif key is same as ('normal') %}
-                                                        <span class="badge bg-yellow">{{ dictionary('registry_mesurement_priority')[key] }}</span>
-                                                    {% elseif key is same as ('high') %}
-                                                        <span class="badge bg-red">{{ dictionary('registry_mesurement_priority')[key] }}</span>
+                                    </thead>
+                                    <tbody>
+                                        {% if not actions|length %}
+                                            <tr>
+                                                <td colspan="4" style="text-align: center">
+                                                    {{ 'global.label.no_data'|trans }}
+                                                </td>
+                                            </tr>
+                                        {% endif %}
+                                        {% for action in actions %}
+                                            <tr>
+                                                <th scope="row"><a href="/actions-de-protection/visualiser/{{ action.id }}" >{{ action.name }}</a></th>
+                                                <td>{{ action.planificationDate|date('d/m/Y') }}</td>
+                                                <td>
+                                                    {% set key = action.priority %}
+                                                    {% if key is not null %}
+                                                        {% if key is same as ('low') %}
+                                                            <span class="badge bg-blue">{{ dictionary('registry_mesurement_priority')[key] }}</span>
+                                                        {% elseif key is same as ('normal') %}
+                                                            <span class="badge bg-yellow">{{ dictionary('registry_mesurement_priority')[key] }}</span>
+                                                        {% elseif key is same as ('high') %}
+                                                            <span class="badge bg-red">{{ dictionary('registry_mesurement_priority')[key] }}</span>
+                                                        {% endif %}
                                                     {% endif %}
-                                                {% endif %}
-                                            </td>
-                                            <td>{{ action.manager }}</td>
-                                        </tr>
-                                    {% endfor %}
+                                                </td>
+                                                <td>{{ action.manager }}</td>
+                                            </tr>
+                                        {% endfor %}
                                     </tbody>
                                 </table>
                             </div>
@@ -268,41 +268,42 @@
                                 <div class="box-header with-border"><h3 class="box-title">{{ 'reporting.dashboard.tab.conformite_structure'|trans }}</h3></div>
                                 {% if data.conformiteOrganisation is empty %}
                                     <div class="box-body">
-                                        {{ 'global.label.no_data'|trans }}
+                                        <p class="no-margin">{{ 'global.label.no_data'|trans }}</p>
                                     </div>
                                 {% else %}
                                     <div class="box-body no-padding">
                                         <table class="table table-striped">
+                                            <caption class="sr-only">{{ 'reporting.dashboard.tab.conformite_structure'|trans }}</caption>
                                             <thead>
-                                            <tr>
-                                                <th scope="col">{{ 'registry.conformite_organisation.list.processus'|trans }}</th>
-                                                <th scope="col">{{ 'reporting.dashboard.label.progress'|trans }}</th>
-                                                <th style="width: 40px" scope="col">{{ 'registry.conformite_organisation.list.conformite'|trans }}</th>
-                                            </tr>
+                                                <tr>
+                                                    <th scope="col">{{ 'registry.conformite_organisation.list.processus'|trans }}</th>
+                                                    <th scope="col">{{ 'reporting.dashboard.label.progress'|trans }}</th>
+                                                    <th style="width: 40px" scope="col">{{ 'registry.conformite_organisation.list.conformite'|trans }}</th>
+                                                </tr>
                                             </thead>
                                             <tbody>
-                                            {% for conformite in data.conformiteOrganisation %}
-                                                {% set score = (conformite['conformite'] / 5 * 100) %}
-                                                {% if score < 50 %}
-                                                    {% set color = 'red' %}
+                                                {% for conformite in data.conformiteOrganisation %}
+                                                    {% set score = (conformite['conformite'] / 5 * 100) %}
+                                                    {% if score < 50 %}
+                                                        {% set color = 'red' %}
 
-                                                {% elseif score < 70 %}
-                                                    {% set color = 'yellow' %}
-                                                {% else %}
-                                                    {% set color = 'green' %}
-                                                {% endif %}
-                                                <tr>
-                                                    <td>{{ conformite['processus'] }}</td>
-                                                    <td>
-                                                        <div class="progress progress-xs">
-                                                            <div class="progress-bar progress-bar-{{ color }}" style="width: {{ score }}%"></div>
-                                                        </div>
-                                                    </td>
-                                                    <td>
-                                                        <span style="min-width: 100%" class="badge bg-{{ color }}">{{ score }}%</span>
-                                                    </td>
-                                                </tr>
-                                            {% endfor %}
+                                                    {% elseif score < 70 %}
+                                                        {% set color = 'yellow' %}
+                                                    {% else %}
+                                                        {% set color = 'green' %}
+                                                    {% endif %}
+                                                    <tr>
+                                                        <th scope="row">{{ conformite['processus'] }}</th>
+                                                        <td aria-label="{{ score }}%">
+                                                            <div class="progress progress-xs" aria-hidden="true">
+                                                                <div class="progress-bar progress-bar-{{ color }}" style="width: {{ score }}%"></div>
+                                                            </div>
+                                                        </td>
+                                                        <td>
+                                                            <span style="min-width: 100%" class="badge bg-{{ color }}">{{ score }}%</span>
+                                                        </td>
+                                                    </tr>
+                                                {% endfor %}
                                             </tbody>
                                         </table>
                                     </div>
@@ -323,36 +324,37 @@
                     </div>
                     <div class="box-body no-padding">
                         <table class="table">
+                            <caption class="sr-only">{{ 'reporting.dashboard.tab.reporting_journalisation'|trans }} {{ 'reporting.dashboard.tab.reporting_journalisation_subtitle'|trans }}</caption>
                             <thead>
-                            <tr>
-                                <th scope="col">{{ 'reporting.journalisation.list.user_name'|trans }}</th>
-                                <th scope="col">{{ 'reporting.journalisation.list.email'|trans }}</th>
-                                <th scope="col">{{ 'reporting.journalisation.list.date'|trans }}</th>
-                                <th scope="col">{{ 'reporting.journalisation.list.subject'|trans }}</th>
-                                <th scope="col">{{ 'reporting.journalisation.list.action'|trans }}</th>
-                                <th scope="col">{{ 'reporting.journalisation.list.action_name'|trans }}</th>
-                                <th scope="col">{{ 'reporting.journalisation.list.link'|trans }}</th>
-                            </tr>
-                            </thead>
-                            <tbody>
-                            {% for logJournal in data.logJournal %}
-                                {% set logJournalLink = getLogJournalLink(logJournal) %}
                                 <tr>
-                                    <td>{{ logJournal.userFullName }}</td>
-                                    <td>{{ logJournal.userEmail }}</td>
-                                    <td>{{ logJournal.date|date('d/m/Y') }}</td>
-                                    <td>{{ logJournal.subjectType ? logJournal.subjectType|dictionary('reporting_log_journal_subject') : '' }}</td>
-                                    <td>{{ logJournal.action ? logJournal.action|dictionary('reporting_log_journal_action') : '' }}</td>
-                                    <td>{{ logJournal.subjectName }}</td>
-                                    <td>
-                                        {% if logJournal.isDeleted %}
-                                            {{ logJournalLink }}
-                                        {% elseif logJournalLink is not null %}
-                                            <a href="{{ logJournalLink }}">{{ 'reporting.journalisation.list.link'|trans }}</a>
-                                        {% endif %}
-                                    </td>
+                                    <th scope="col">{{ 'reporting.journalisation.list.user_name'|trans }}</th>
+                                    <th scope="col">{{ 'reporting.journalisation.list.email'|trans }}</th>
+                                    <th scope="col">{{ 'reporting.journalisation.list.date'|trans }}</th>
+                                    <th scope="col">{{ 'reporting.journalisation.list.subject'|trans }}</th>
+                                    <th scope="col">{{ 'reporting.journalisation.list.action'|trans }}</th>
+                                    <th scope="col">{{ 'reporting.journalisation.list.action_name'|trans }}</th>
+                                    <th scope="col">{{ 'reporting.journalisation.list.link'|trans }}</th>
                                 </tr>
-                            {% endfor %}
+                            </thead>
+                            <tbody>
+                                {% for logJournal in data.logJournal %}
+                                    {% set logJournalLink = getLogJournalLink(logJournal) %}
+                                    <tr>
+                                        <td>{{ logJournal.userFullName }}</td>
+                                        <td>{{ logJournal.userEmail }}</td>
+                                        <td>{{ logJournal.date|date('d/m/Y') }}</td>
+                                        <td>{{ logJournal.subjectType ? logJournal.subjectType|dictionary('reporting_log_journal_subject') : '' }}</td>
+                                        <td>{{ logJournal.action ? logJournal.action|dictionary('reporting_log_journal_action') : '' }}</td>
+                                        <th scope="row">{{ logJournal.subjectName }}</th>
+                                        <td>
+                                            {% if logJournal.isDeleted %}
+                                                {{ logJournalLink }}
+                                            {% elseif logJournalLink is not null %}
+                                                <a href="{{ logJournalLink }}">{{ 'reporting.journalisation.list.link'|trans }}</a>
+                                            {% endif %}
+                                        </td>
+                                    </tr>
+                                {% endfor %}
                             </tbody>
                         </table>
                     </div>
@@ -426,39 +428,31 @@
             'Accéder à des données',
             'Portabilité des données',
             'Limiter le traitement',
+            'S\'opposer au traitement',
             'Autre',
         ];
 
-        let requestTypeData = [];
-        {% if data.request.value.type.correct %}
-            requestTypeData.push({{ data.request.value.type.correct }});
-        {% elseif data.request.value.type.delete %}
-            requestTypeData.push({{ data.request.value.type.delete }});
-        {% elseif data.request.value.type.withdrawConsent %}
-            requestTypeData.push({{ data.request.value.type.withdrawConsent }});
-        {% elseif data.request.value.type.access %}
-            requestTypeData.push({{ data.request.value.type.access }});
-        {% elseif data.request.value.type.dataPortability %}
-            requestTypeData.push({{ data.request.value.type.dataPortability }});
-        {% elseif data.request.value.type.limitTreatment %}
-            requestTypeData.push({{ data.request.value.type.limitTreatment }});
-        {% elseif data.request.value.type.other %}
-            requestTypeData.push({{ data.request.value.type.other }});
-        {% endif %}
+        let requestTypeData = [
+          {{ data.request.value.type.correct }},
+          {{ data.request.value.type.delete }},
+          {{ data.request.value.type.withdrawConsent }},
+          {{ data.request.value.type.access }},
+          {{ data.request.value.type.dataPortability }},
+          {{ data.request.value.type.limitTreatment }},
+          {{ data.request.value.type.oppositeTreatment }},
+          {{ data.request.value.type.other }},
+        ];
 
         let requestStatusLabel = [
-            'Traité',
+            'Traitée et clôturée',
             'À traiter',
-            'Non-recevable',
+            'Demande refusée',
+        ];
+        let requestStatusData = [
+          {{ data.request.value.status.processed }},
+          {{ data.request.value.status.toProcess }},
+          {{ data.request.value.status.denied }}
         ];
-        let requestStatusData = [];
-        {% if data.request.value.status.processed %}
-            requestStatusData.push({{ data.request.value.status.processed }});
-        {% elseif data.request.value.status.toProcess %}
-            requestStatusData.push({{ data.request.value.status.toProcess }});
-        {% elseif data.request.value.status.incomplete %}
-            requestStatusData.push({{ data.request.value.status.incomplete }});
-        {% endif %}
 
         // TREATMENT
         let treatmentLabels = [
diff --git a/templates/Reporting/Dashboard/index_admin.html.twig b/templates/Reporting/Dashboard/index_admin.html.twig
index 94f9654bcfb4a25a301070ff407fc437ca98e89a..b8b82705cc6f9aed73ee2423bb032d55341a1ad3 100644
--- a/templates/Reporting/Dashboard/index_admin.html.twig
+++ b/templates/Reporting/Dashboard/index_admin.html.twig
@@ -21,8 +21,10 @@
                 <span class="info-box-icon bg-aqua"><i aria-hidden="true" class="fa fa-crosshairs"></i></span>
 
                 <div class="info-box-content">
-                    <span>{{ 'reporting.dashboard.label.planified_action_average'|trans }}</span>
-                    <span class="info-box-number">{{ data.mesurementByCollectivity.average|number_format(2, ',')}}</span>
+                    <p class="no-margin">
+                        <span>{{ 'reporting.dashboard.label.planified_action_average'|trans }}</span>
+                        <span class="info-box-number">{{ data.mesurementByCollectivity.average|number_format(2, ',')}}</span>
+                    </p>
                 </div>
             </div>
         </div>
@@ -30,10 +32,11 @@
         <div class="col-md-3 col-sm-6 col-xs-12">
             <div class="info-box">
                 <span class="info-box-icon bg-red"><i aria-hidden="true" class="fa fa-file-shield"></i></span>
-
                 <div class="info-box-content">
-                    <span>{{ 'reporting.dashboard.label.proof_average'|trans }}</span>
-                    <span class="info-box-number">{{ data.proofByCollectivity.average|number_format(2, ',')}}</span>
+                    <p class="no-margin">
+                        <span>{{ 'reporting.dashboard.label.proof_average'|trans }}</span>
+                        <span class="info-box-number">{{ data.proofByCollectivity.average|number_format(2, ',')}}</span>
+                    </p>
                 </div>
             </div>
         </div>
@@ -43,10 +46,11 @@
         <div class="col-md-3 col-sm-6 col-xs-12">
             <div class="info-box">
                 <span class="info-box-icon bg-green"><i aria-hidden="true" class="fa fa-clipboard-list"></i></span>
-
                 <div class="info-box-content">
-                    <span style="white-space: normal;">{{ 'reporting.dashboard.label.reporting_review_average'|trans }}</span>
-                    <span class="info-box-number">{{ data.balanceSheetProofByCollectivity.average|number_format }}<small>%</small></span>
+                    <p class="no-margin">
+                        <span>{{ 'reporting.dashboard.label.reporting_review_average'|trans }}</span>
+                        <span class="info-box-number">{{ data.balanceSheetProofByCollectivity.average|number_format }}<small>%</small></span>
+                    </p>
                 </div>
             </div>
         </div>
@@ -54,10 +58,11 @@
         <div class="col-md-3 col-sm-6 col-xs-12">
             <div class="info-box">
                 <span class="info-box-icon bg-yellow"><i aria-hidden="true" class="fa fa-chart-line"></i></span>
-
                 <div class="info-box-content">
-                    <span style="white-space: normal;">{{ 'reporting.dashboard.label.maturity_survey_average'|trans }}</span>
-                    <span class="info-box-number">{{ data.surveyLastYear.average|number_format }}<small>%</small></span>
+                    <p class="no-margin">
+                        <span>{{ 'reporting.dashboard.label.maturity_survey_average'|trans }}</span>
+                        <span class="info-box-number">{{ data.surveyLastYear.average|number_format }}<small>%</small></span>
+                    </p>
                 </div>
             </div>
         </div>
@@ -119,7 +124,7 @@
                       {{ 'global.label.no_data'|trans }}
                   {% else %}
                       <div>
-                          <canvas id="collectivity-type" width="400" height="200"></canvas>
+                          <canvas id="collectivity-type" width="400" height="220"></canvas>
                       </div>
                   {% endif %}
               </div>
diff --git a/templates/Reporting/Journalisation/list.html.twig b/templates/Reporting/Journalisation/list.html.twig
index fb568cf86b8d81a8007b41e9d10d51313d439838..361e7ebe458089fffca5dd5ee145b8db33335542 100644
--- a/templates/Reporting/Journalisation/list.html.twig
+++ b/templates/Reporting/Journalisation/list.html.twig
@@ -29,6 +29,7 @@
             <div class="box">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">Liste des actions</caption>
                         <thead>
                             <tr>
                                 <th scope="col">
@@ -65,7 +66,7 @@
                                 <th scope="col">
                                     <input class="form-control" type="text" id="search_subject_name" placeholder="{{ 'reporting.journalisation.list.action_name'|trans }}" style="width: 100%;">
                                 </th>
-                                <th scope="col"></th>
+                                <th scope="col"></th> <!-- Actions -->
                             </tr>
                             <tr>
                                 <th scope="col">{{ 'reporting.journalisation.list.id'|trans }}</th>
diff --git a/templates/User/Collectivity/list.html.twig b/templates/User/Collectivity/list.html.twig
index e91c92485e50ad40e70d396dd605fd6cb341b737..4a9b9f6774c205e936d6a5be76ae57ad23e82e93 100644
--- a/templates/User/Collectivity/list.html.twig
+++ b/templates/User/Collectivity/list.html.twig
@@ -22,84 +22,84 @@
 {% endblock %}
 
 {% block body %}
-    {% if is_granted('ROLE_ADMIN') %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
+        <div class="col-xs-12 mb-1">
+            {% if is_granted('ROLE_ADMIN') %}
                 <a href="{{ path('user_collectivity_create') }}" class="btn btn-default">
                     <i aria-hidden="true" class="fa fa-plus"></i>
                     {{ 'user.organization.action.new'|trans }}
                 </a>
-            </div>
+            {% endif %}
         </div>
     </div>
-    {% endif %}
 
     <div class="row">
         <div class="col-xs-12">
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'user.organization.title.list'|trans }}</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nom" placeholder="{{ 'user.organization.label.name'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nom_court" placeholder="{{ 'user.organization.label.short_name'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_type" style="width: 100%;">
-                                    <option value="">{{ 'user.organization.label.type'|trans }}</option>
-                                    {% for key, subject in dictionary('user_collectivity_type') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_informations_complementaires" placeholder="{{ 'user.organization.label.other_information'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_siren" placeholder="{{ 'user.organization.label.siren'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_actif" style="width: 100%;">
-                                    <option value="">{{ 'user.organization.label.active'|trans }}</option>
-                                    <option value="1">{{ 'global.label.active'|trans }}</option>
-                                    <option value="0">{{ 'global.label.inactive'|trans }}</option>
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nbr_cnil" placeholder="{{ 'user.organization.list.nbr_cnil'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nbr_agents" placeholder="{{ 'user.organization.label.nbr_agents'|trans }}" style="width: 100%;">
-                            </th>
-                            <th>
-                                <input class="form-control" type="text" id="search_population" placeholder="{{ 'user.organization.label.population'|trans }}" style="width: 100%;">
-                            </th>
-
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                        </tr>
-                        <tr>
-                            <th scope="col">{{ 'user.organization.label.name'|trans }}</th>
-                            <th scope="col">{{ 'user.organization.label.short_name'|trans }}</th>
-                            <th scope="col">{{ 'user.organization.label.type'|trans }}</th>
-                            <th scope="col">{{ 'user.organization.label.other_information'|trans }}</th>
-                            <th scope="col">{{ 'user.organization.label.siren'|trans }}</th>
-                            <th scope="col">{{ 'user.organization.label.active'|trans }}</th>
-                            <th scope="col">{{ 'user.organization.label.nbr_cnil'|trans }}</th>
-                            <th scope="col">{{ 'user.organization.label.nbr_agents'|trans }}</th>
-                            <th scope="col">{{ 'user.organization.label.population'|trans }}</th>
-                            <th scope="col">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                        </tr>
+                            <tr>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nom" placeholder="{{ 'user.organization.label.name'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nom_court" placeholder="{{ 'user.organization.label.short_name'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_type" style="width: 100%;">
+                                        <option value="">{{ 'user.organization.label.type'|trans }}</option>
+                                        {% for key, subject in dictionary('user_collectivity_type') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_informations_complementaires" placeholder="{{ 'user.organization.label.other_information'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_siren" placeholder="{{ 'user.organization.label.siren'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_actif" style="width: 100%;">
+                                        <option value="">{{ 'user.organization.label.active'|trans }}</option>
+                                        <option value="1">{{ 'global.label.active'|trans }}</option>
+                                        <option value="0">{{ 'global.label.inactive'|trans }}</option>
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nbr_cnil" placeholder="{{ 'user.organization.list.nbr_cnil'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nbr_agents" placeholder="{{ 'user.organization.label.nbr_agents'|trans }}" style="width: 100%;">
+                                </th>
+                                <th>
+                                    <input class="form-control" type="text" id="search_population" placeholder="{{ 'user.organization.label.population'|trans }}" style="width: 100%;">
+                                </th>
+
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col">{{ 'user.organization.label.name'|trans }}</th>
+                                <th scope="col">{{ 'user.organization.label.short_name'|trans }}</th>
+                                <th scope="col">{{ 'user.organization.label.type'|trans }}</th>
+                                <th scope="col">{{ 'user.organization.label.other_information'|trans }}</th>
+                                <th scope="col">{{ 'user.organization.label.siren'|trans }}</th>
+                                <th scope="col">{{ 'user.organization.label.active'|trans }}</th>
+                                <th scope="col">{{ 'user.organization.label.nbr_cnil'|trans }}</th>
+                                <th scope="col">{{ 'user.organization.label.nbr_agents'|trans }}</th>
+                                <th scope="col">{{ 'user.organization.label.population'|trans }}</th>
+                                <th scope="col">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                            </tr>
                         </thead>
                     </table>
                 </div>
diff --git a/templates/User/Collectivity/show.html.twig b/templates/User/Collectivity/show.html.twig
index 41b4e9944702fc51de8063152fbcfbcfc2478fb6..0d18d3f1ccbb44c6e9918d892d07ded0e4fba039 100644
--- a/templates/User/Collectivity/show.html.twig
+++ b/templates/User/Collectivity/show.html.twig
@@ -321,7 +321,7 @@
                                         {% if object.differentDpo %}
                                             {{ object.dpo.civility|dictionary('user_contact_civility') }}
                                         {% else %}
-                                            {{ default_dpo_civility }}
+                                            {{ default_dpo_civility|dictionary('user_contact_civility') }}
                                         {% endif %}
                                     </td>
                                 </tr>
diff --git a/templates/User/Profile/collectivity_show.html.twig b/templates/User/Profile/collectivity_show.html.twig
index 07801e716867eb0c16dfdb441875f67b6fef3f59..b74516af7178894cc265c1f0de7b527eabbbdf7c 100644
--- a/templates/User/Profile/collectivity_show.html.twig
+++ b/templates/User/Profile/collectivity_show.html.twig
@@ -314,7 +314,7 @@
                                         {% if object.differentDpo %}
                                             {{ object.dpo.civility|dictionary('user_contact_civility') }}
                                         {% else %}
-                                            {{ default_dpo_civility }}
+                                            {{ default_dpo_civility|dictionary('user_contact_civility') }}
                                         {% endif %}
                                     </td>
                                 </tr>
diff --git a/templates/User/Profile/notifications.html.twig b/templates/User/Profile/notifications.html.twig
index 2bed1fe6ef13563f4c210d11d786f2e3cfb3ab84..e9762a0e251023138b0074d17ed5518a0b1dbcbd 100644
--- a/templates/User/Profile/notifications.html.twig
+++ b/templates/User/Profile/notifications.html.twig
@@ -13,98 +13,100 @@
         <div class="form-group">
             <label class="control-label required">{{ 'notifications.label.frequency.label'|trans }}</label>
             <table role="presentation" style="border: 0; vertical-align: top">
-                {% for f in form.emailNotificationPreference.frequency %}
-                    <tr>
-                        <td style="border: 0; vertical-align: top">
-                            {{ form_widget(f) }}
-                        </td>
-                        <td style="border: 0; vertical-align: top">
-                            <div>
-                                {% if f.vars.value == 'hour' or f.vars.value == 'day' %}
-                                    {% set h = form.emailNotificationPreference.hour %}
-                                    {% if h.vars.choices is defined %}
-                                        <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
-                                            {% for op in h.vars.choices %}
-                                                <option value="{{ op.value }}" {% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
-                                            {% endfor %}
-                                        </select>
-                                        <label style="display: inline-block"  for="{{ h.vars.id }}">
-                                            {{ h.vars.label }}
-                                        </label>
+                <tbody>
+                    {% for f in form.emailNotificationPreference.frequency %}
+                        <tr>
+                            <td style="border: 0; vertical-align: top">
+                                {{ form_widget(f) }}
+                            </td>
+                            <td style="border: 0; vertical-align: top">
+                                <div>
+                                    {% if f.vars.value == 'hour' or f.vars.value == 'day' %}
+                                        {% set h = form.emailNotificationPreference.hour %}
+                                        {% if h.vars.choices is defined %}
+                                            <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
+                                                {% for op in h.vars.choices %}
+                                                    <option value="{{ op.value }}" {% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
+                                                {% endfor %}
+                                            </select>
+                                            <label style="display: inline-block" for="{{ h.vars.id }}">
+                                                {{ h.vars.label }}
+                                            </label>
 
+                                        {% endif %}
                                     {% endif %}
-                                {% endif %}
-                                {% if f.vars.value == 'week' %}
-                                    {% set h = form.emailNotificationPreference.day %}
-                                    {% if h.vars.choices is defined %}
-                                        <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
-                                            {% for op in h.vars.choices %}
-                                                <option value="{{ op.value }}" {% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
-                                            {% endfor %}
-                                        </select>
-                                        <label style="display: inline-block"  for="{{ h.vars.id }}">
-                                            {{ h.vars.label }}
-                                        </label>
+                                    {% if f.vars.value == 'week' %}
+                                        {% set h = form.emailNotificationPreference.day %}
+                                        {% if h.vars.choices is defined %}
+                                            <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
+                                                {% for op in h.vars.choices %}
+                                                    <option value="{{ op.value }}" {% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
+                                                {% endfor %}
+                                            </select>
+                                            <label style="display: inline-block" for="{{ h.vars.id }}">
+                                                {{ h.vars.label }}
+                                            </label>
 
-                                    {% endif %}
-                                    {% set h = form.emailNotificationPreference.hour %}
-                                    {% if h.vars.choices is defined %}
-                                        <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
-                                            {% for op in h.vars.choices %}
-                                                <option value="{{ op.value }}" {% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
-                                            {% endfor %}
-                                        </select>
-                                        <label style="display: inline-block"  for="{{ h.vars.id }}">
-                                            {{ h.vars.label }}
-                                        </label>
+                                        {% endif %}
+                                        {% set h = form.emailNotificationPreference.hour %}
+                                        {% if h.vars.choices is defined %}
+                                            <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
+                                                {% for op in h.vars.choices %}
+                                                    <option value="{{ op.value }}" {% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
+                                                {% endfor %}
+                                            </select>
+                                            <label style="display: inline-block" for="{{ h.vars.id }}">
+                                                {{ h.vars.label }}
+                                            </label>
+
+                                        {% endif %}
 
                                     {% endif %}
 
-                                {% endif %}
+                                    {% if f.vars.value == 'month' %}
+                                        {% set h = form.emailNotificationPreference.week %}
+                                        {% if h.vars.choices is defined %}
+                                            <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
+                                                {% for op in h.vars.choices %}
+                                                    <option value="{{ op.value }}" {% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
+                                                {% endfor %}
+                                            </select>
+                                            <label style="display: inline-block" for="{{ h.vars.id }}">
+                                                {{ h.vars.label }}
+                                            </label>
 
-                                {% if f.vars.value == 'month' %}
-                                    {% set h = form.emailNotificationPreference.week %}
-                                    {% if h.vars.choices is defined %}
-                                        <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
-                                            {% for op in h.vars.choices %}
-                                                <option value="{{ op.value }}" {% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
-                                            {% endfor %}
-                                        </select>
-                                        <label style="display: inline-block"  for="{{ h.vars.id }}">
-                                            {{ h.vars.label }}
-                                        </label>
+                                        {% endif %}
+                                        {% set h = form.emailNotificationPreference.day %}
+                                        {% if h.vars.choices is defined %}
+                                            <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
+                                                {% for op in h.vars.choices %}
+                                                    <option value="{{ op.value }}" {% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
+                                                {% endfor %}
+                                            </select>
+                                            <label style="display: inline-block" for="{{ h.vars.id }}">
+                                                {{ h.vars.label }}
+                                            </label>
 
-                                    {% endif %}
-                                    {% set h = form.emailNotificationPreference.day %}
-                                    {% if h.vars.choices is defined %}
-                                        <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
-                                            {% for op in h.vars.choices %}
-                                                <option value="{{ op.value }}" {% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
-                                            {% endfor %}
-                                        </select>
-                                        <label style="display: inline-block"  for="{{ h.vars.id }}">
-                                            {{ h.vars.label }}
-                                        </label>
+                                        {% endif %}
+                                        {% set h = form.emailNotificationPreference.hour %}
+                                        {% if h.vars.choices is defined %}
+                                            <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
+                                                {% for op in h.vars.choices %}
+                                                    <option value="{{ op.value }}"{% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
+                                                {% endfor %}
+                                            </select>
+                                            <label style="display: inline-block" for="{{ h.vars.id }}">
+                                                {{ h.vars.label }}
+                                            </label>
 
-                                    {% endif %}
-                                    {% set h = form.emailNotificationPreference.hour %}
-                                    {% if h.vars.choices is defined %}
-                                        <select style="display: inline-block;width:auto" class="form-control" id="{{ h.vars.id }}" name="{{ h.vars.full_name }}">
-                                            {% for op in h.vars.choices %}
-                                                <option value="{{ op.value }}"{% if h.vars.value == op.value %} selected {% endif %}>{{ op.label }}</option>
-                                            {% endfor %}
-                                        </select>
-                                        <label style="display: inline-block"  for="{{ h.vars.id }}">
-                                            {{ h.vars.label }}
-                                        </label>
+                                        {% endif %}
 
                                     {% endif %}
-
-                                {% endif %}
-                            </div>
-                        </td>
-                    </tr>
-                {% endfor %}
+                                </div>
+                            </td>
+                        </tr>
+                    {% endfor %}
+                </tbody>
             </table>
         </div>
         {{ form_row(form.emailNotificationPreference.notificationMask) }}
diff --git a/templates/User/Profile/user_edit.html.twig b/templates/User/Profile/user_edit.html.twig
index c1c549f7bd5f9703a859de0e6346863d905b2a64..087d0421bd8003deca0cfa40944e0465ac07c2ec 100644
--- a/templates/User/Profile/user_edit.html.twig
+++ b/templates/User/Profile/user_edit.html.twig
@@ -100,9 +100,9 @@
                     <h3 class="box-title">{{ 'user.user.tab.optional'|trans }}</h3>
                 </div>
                 <div class="box-body">
-                    <div class="callout callout-default text-muted">
+                    <p class="callout callout-default text-muted">
                         {{ 'user.security.label.help.new_password'|trans }}
-                    </div>
+                    </p>
                     {{ form_row(form.plainPassword) }}
                 </div>
             </div>
diff --git a/templates/User/Security/base.html.twig b/templates/User/Security/base.html.twig
index c07711af83b386e98c611ba8c13c8d078a6ee791..ad5bcc7c58b35a4de45906a6f46e7237974664fe 100644
--- a/templates/User/Security/base.html.twig
+++ b/templates/User/Security/base.html.twig
@@ -10,7 +10,7 @@
     <link rel="icon" href="{{ asset('favicon.ico') }}" />
 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
-    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.4.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
+    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.5.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/4.1.2/css/ionicons.min.css">
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.3/css/AdminLTE.min.css">
     <link rel="stylesheet"
@@ -33,7 +33,7 @@
 </head>
 <body class="hold-transition login-page">
     <div class="wrapper">
-        <main class="login-box">
+        <main role="main" class="login-box">
             {% block body %}{% endblock %}
         </main>
     </div>
diff --git a/templates/User/Security/forget_password.html.twig b/templates/User/Security/forget_password.html.twig
index d2cb8e75b56bf04bc11008fc30ff30608d9f8141..a279994bb6dd91fc5f437cf7113437e75a5226e4 100644
--- a/templates/User/Security/forget_password.html.twig
+++ b/templates/User/Security/forget_password.html.twig
@@ -4,7 +4,7 @@
 
 {% block body %}
     <div class="login-logo">
-        <img class="fit-picture" src="{{ asset(app_image_logo_couleur) }}" width="80%" alt="Madis">
+        <img class="fit-picture" src="{{ asset(app_image_logo_couleur) }}" alt="Madis">
     </div>
     <div class="login-box-body">
         <p class="login-box-msg">{{ 'user.security.label.reset_password_message'|trans }}</p>
diff --git a/templates/User/Security/forget_password_confirm.html.twig b/templates/User/Security/forget_password_confirm.html.twig
index 48a9cb7796fd3b3e8c61c646ce17738d4d16af01..095aa0a946e70cdebd8104374cc5d2424089d8be 100644
--- a/templates/User/Security/forget_password_confirm.html.twig
+++ b/templates/User/Security/forget_password_confirm.html.twig
@@ -4,7 +4,7 @@
 
 {% block body %}
     <div class="login-logo">
-        <img class="fit-picture" src="{{ asset(app_image_logo_couleur) }}" width="80%" alt="Madis">
+        <img class="fit-picture" src="{{ asset(app_image_logo_couleur) }}" alt="Madis">
     </div>
     <div class="login-box-body">
         <p class="login-box-msg"><strong>{{ 'user.security.label.email_sent'|trans }}</strong></p>
diff --git a/templates/User/Security/locked.html.twig b/templates/User/Security/locked.html.twig
index 93476162c7a555c59908b7f06d96242fd217e7d5..9d7092b800dd1e499c51c12d25526cca1fed281f 100644
--- a/templates/User/Security/locked.html.twig
+++ b/templates/User/Security/locked.html.twig
@@ -4,7 +4,7 @@
 
 {% block body %}
     <div class="login-logo">
-        <img class="fit-picture" src="{{ asset(app_image_logo_couleur) }}" width="80%" alt="Madis">
+        <img class="fit-picture" src="{{ asset(app_image_logo_couleur) }}" alt="Madis">
     </div>
     <div class="login-box-body">
         <h3 class="login-box-title">
diff --git a/templates/User/Security/login.html.twig b/templates/User/Security/login.html.twig
index 5280738e53e0e9d6a22ee1612894d7086f9b9d57..726ec613134c32b86ea14fca87d590b6b27582ce 100644
--- a/templates/User/Security/login.html.twig
+++ b/templates/User/Security/login.html.twig
@@ -4,25 +4,25 @@
 
 {% block body %}
     <div class="login-logo">
-        <img class="fit-picture" src="{{ asset(app_image_logo_couleur) }}" width="80%" alt="Madis">
+        <img class="fit-picture" src="{{ asset(app_image_logo_couleur) }}" alt="Madis">
     </div>
     <div class="login-box-body">
         <p class="login-box-msg">{{ 'user.security.label.welcome_message'|trans }}</p>
         <form action="{{ path('login') }}" method="POST">
 
             {% if error %}
-                <div role="alert" class="alert alert-danger">
+                <p role="alert" class="alert alert-danger">
                     <i aria-hidden="true" class="icon fa fa-ban"></i>
                     {{ error.messageKey|trans(error.messageData, 'security') }}
-                </div>
+                </p>
             {% endif %}
             {{ include('_flashbag.html.twig') }}
 
             <div class="form-group">
-                <input type="email" autocomplete="username" id="username" name="_username" class="form-control" placeholder="{{ 'user.security.placeholder.username'|trans }}" value="{{ last_username }}" />
+                <input aria-label="{{ 'user.security.placeholder.username'|trans }}" required type="email" autocomplete="username" id="username" name="_username" class="form-control" placeholder="{{ 'user.security.placeholder.username'|trans }}" value="{{ last_username }}">
             </div>
             <div class="form-group has-feedback">
-                <input type="password" autocomplete="current-password" id="password" name="_password" class="form-control" placeholder="{{ 'user.security.placeholder.password'|trans }}" />
+                <input aria-label="{{ 'user.security.placeholder.password'|trans }}" required type="password" autocomplete="current-password" id="password" name="_password" class="form-control" placeholder="{{ 'user.security.placeholder.password'|trans }}">
                 <span class="fa fa-eye form-control-feedback"></span>
             </div>
 
diff --git a/templates/User/Security/reset_password.html.twig b/templates/User/Security/reset_password.html.twig
index b35d169a9b8cde4fdbe7352b86127c37e1e53841..fcee785f3614a381dab8b2fd9cea0a394c97485a 100644
--- a/templates/User/Security/reset_password.html.twig
+++ b/templates/User/Security/reset_password.html.twig
@@ -4,7 +4,7 @@
 
 {% block body %}
     <div class="login-logo">
-        <img class="fit-picture" src="{{ asset(app_image_logo_couleur) }}" width="80%" alt="Madis">
+        <img class="fit-picture" src="{{ asset(app_image_logo_couleur) }}" alt="Madis">
     </div>
     <div class="login-box-body">
         <p class="login-box-msg">{{ 'user.security.label.reset_password'|trans }}</p>
diff --git a/templates/User/User/_form.html.twig b/templates/User/User/_form.html.twig
index 864445af45f0528b2913b625c53617bb8faa19c7..90c4fd92bb35415b5ea6b2bb09510df00e86be57 100644
--- a/templates/User/User/_form.html.twig
+++ b/templates/User/User/_form.html.twig
@@ -62,13 +62,13 @@
                 <h3 class="box-title">{{ 'user.user.tab.optional'|trans }}</h3>
             </div>
             <div class="box-body">
-                <div class="callout callout-default text-muted">
+                <p class="callout callout-default text-muted">
                     {% if form.vars.value.updatedAt.timestamp is defined %}
                         {{ 'user.security.label.help.new_password'|trans }}
                     {% else %}
                         {{ 'user.security.label.help.password'|trans }}
                     {% endif %}
-                </div>
+                </p>
                 {{ form_row(form.plainPassword) }}
             </div>
         </div>
diff --git a/templates/User/User/list.html.twig b/templates/User/User/list.html.twig
index ab281a6ae6a2a992ce4812502431ea097ee13016..ce6aa0e28be2dc59948c8e2332bf6a421b72d42a 100644
--- a/templates/User/User/list.html.twig
+++ b/templates/User/User/list.html.twig
@@ -32,26 +32,24 @@
 
 {% block body %}
     <div class="row">
-        <div class="col-xs-12">
-            <div class="mb-1">
-                {% if is_granted('ROLE_ADMIN') %}
+        <div class="col-xs-12 mb-1">
+            {% if is_granted('ROLE_ADMIN') %}
                 <a href="{{ path('user_user_create') }}" class="btn btn-default">
                     <i aria-hidden="true" class="fa fa-plus"></i>
                     {{ 'user.user.action.new'|trans }}
                 </a>
-                {% endif %}
-                {% if app.request.query.get('archive') == 'true' %}
-                    <a href="{{ path('user_user_list', {'archive' : 'false'}) }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-archive"></i>
-                        {{ 'user.user.action.not_archived'|trans }}
-                    </a>
-                {% else %}
-                    <a href="{{ path('user_user_list', {'archive' : 'true'}) }}" class="btn btn-default">
-                        <i aria-hidden="true" class="fa fa-archive"></i>
-                        {{ 'user.user.action.archived'|trans }}
-                    </a>
-                {% endif %}
-            </div>
+            {% endif %}
+            {% if app.request.query.get('archive') == 'true' %}
+                <a href="{{ path('user_user_list', {'archive' : 'false'}) }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-archive"></i>
+                    {{ 'user.user.action.not_archived'|trans }}
+                </a>
+            {% else %}
+                <a href="{{ path('user_user_list', {'archive' : 'true'}) }}" class="btn btn-default">
+                    <i aria-hidden="true" class="fa fa-archive"></i>
+                    {{ 'user.user.action.archived'|trans }}
+                </a>
+            {% endif %}
         </div>
     </div>
 
@@ -60,66 +58,67 @@
             <div class="box box-solid">
                 <div class="box-body overflow-x-auto">
                     <table id="table" class="table table-bordered table-hover">
+                        <caption class="sr-only">{{ 'user.user.title.list'|trans }} {% if app.request.query.get('archive') == 'true' %}{{ 'user.user.title.list_archived'|trans }}{% else %}{{ 'user.user.title.list_not_archived'|trans }}{% endif %}</caption>
                         <thead>
-                        <tr>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_prenom" placeholder="{{ 'global.label.contact.first_name'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_nom" placeholder="{{ 'global.label.contact.last_name'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_email" placeholder="{{ 'global.label.contact.email'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_role" style="width: 100%;">
-
-                                    <option value="">{{ 'user.user.label.roles'|trans }}</option>
-                                    {% for key, subject in dictionary('user_user_role') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col">
-                                <select class="form-control" id="search_moreInfos" style="width: 100%;">
-                                    <option value="">{{ 'user.user.label.moreInfos'|trans }}</option>
-                                    {% for key, subject in dictionary('user_user_moreInfo') %}
-                                        <option value="{{ key }}">{{ subject }}</option>
-                                    {% endfor %}
-                                </select>
-                            </th>
-                            <th scope="col"></th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_last_login" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col">
-                                <input class="form-control" type="text" id="search_services" placeholder="{{ 'user.user.list.services'|trans }}" style="width: 100%;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col" style="min-width:130px;position:relative;">
-                                <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
-                            </th>
-                            <th scope="col"></th>
-                        </tr>
-                        <tr>
-                            <th scope="col">{{ 'global.label.contact.first_name'|trans }}</th>
-                            <th scope="col">{{ 'global.label.contact.last_name'|trans }}</th>
-                            <th scope="col">{{ 'global.label.contact.email'|trans }}</th>
-                            <th scope="col">{{ 'global.label.organization'|trans }}</th>
-                            <th scope="col">{{ 'user.user.label.roles'|trans }}</th>
-                            <th scope="col">{{ 'user.user.label.moreInfos'|trans }}</th>
-                            <th scope="col">{{ 'global.label.active'|trans }}</th>
-                            <th scope="col">{{ 'user.user.list.last_login'|trans }}</th>
-                            <th scope="col">{{ 'user.user.list.services'|trans }}</th>
-                            <th scope="col">{{ 'global.label.created_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
-                            <th scope="col">{{ 'global.label.actions'|trans }}</th>
-                        </tr>
+                            <tr>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_prenom" placeholder="{{ 'global.label.contact.first_name'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_nom" placeholder="{{ 'global.label.contact.last_name'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_email" placeholder="{{ 'global.label.contact.email'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_collectivite" placeholder="{{ 'global.label.organization'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_role" style="width: 100%;">
+
+                                        <option value="">{{ 'user.user.label.roles'|trans }}</option>
+                                        {% for key, subject in dictionary('user_user_role') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col">
+                                    <select class="form-control" id="search_moreInfos" style="width: 100%;">
+                                        <option value="">{{ 'user.user.label.moreInfos'|trans }}</option>
+                                        {% for key, subject in dictionary('user_user_moreInfo') %}
+                                            <option value="{{ key }}">{{ subject }}</option>
+                                        {% endfor %}
+                                    </select>
+                                </th>
+                                <th scope="col"></th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_last_login" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col">
+                                    <input class="form-control" type="text" id="search_services" placeholder="{{ 'user.user.list.services'|trans }}" style="width: 100%;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_created_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col" style="min-width:130px;position:relative;">
+                                    <input class="daterangepicker form-control" type="text" id="search_updated_at" placeholder="{{ 'global.placeholder.date'|trans }}" style="max-width: 130px;left: inherit!important;top: 0;font-size: 14px;border-radius: 0;padding: 0 5px;">
+                                </th>
+                                <th scope="col"></th> <!-- Actions -->
+                            </tr>
+                            <tr>
+                                <th scope="col">{{ 'global.label.contact.first_name'|trans }}</th>
+                                <th scope="col">{{ 'global.label.contact.last_name'|trans }}</th>
+                                <th scope="col">{{ 'global.label.contact.email'|trans }}</th>
+                                <th scope="col">{{ 'global.label.organization'|trans }}</th>
+                                <th scope="col">{{ 'user.user.label.roles'|trans }}</th>
+                                <th scope="col">{{ 'user.user.label.moreInfos'|trans }}</th>
+                                <th scope="col">{{ 'global.label.active'|trans }}</th>
+                                <th scope="col">{{ 'user.user.list.last_login'|trans }}</th>
+                                <th scope="col">{{ 'user.user.list.services'|trans }}</th>
+                                <th scope="col">{{ 'global.label.created_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.updated_at'|trans }}</th>
+                                <th scope="col">{{ 'global.label.actions'|trans }}</th>
+                            </tr>
                         </thead>
                     </table>
                 </div>
diff --git a/templates/_Utils/_datatable.html.twig b/templates/_Utils/_datatable.html.twig
index f789cb068656422c3db12cd3af9f825e55ecfe73..cdc6876a43db95d3bb3d516acd279a5a76e7dec0 100644
--- a/templates/_Utils/_datatable.html.twig
+++ b/templates/_Utils/_datatable.html.twig
@@ -52,25 +52,25 @@
 
     {% set dataTableOptions = dataTableOptions|merge({
         language: {
-            sProcessing:     "Traitement en cours...",
+            sProcessing:     "<p class='no-margin'>Traitement en cours...</p>",
             sSearch:         "Rechercher&nbsp;:",
-            sLengthMenu:     "Afficher _MENU_ &eacute;l&eacute;ments",
-            sInfo:           "Affichage de l'&eacute;l&eacute;ment _START_ &agrave; _END_ sur _TOTAL_ &eacute;l&eacute;ments",
-            sInfoEmpty:      "Affichage de l'&eacute;l&eacute;ment 0 &agrave; 0 sur 0 &eacute;l&eacute;ment",
-            sInfoFiltered:   "(filtr&eacute; de _MAX_ &eacute;l&eacute;ments au total)",
+            sLengthMenu:     "Afficher _MENU_ éléments",
+            sInfo:           "<p>Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments</p>",
+            sInfoEmpty:      "<p>Affichage de l'élément 0 à 0 sur 0 élément</p>",
+            sInfoFiltered:   "<p style='padding-left: 3px;'>(filtré de _MAX_ éléments au total)</p>",
             sInfoPostFix:    "",
-            sLoadingRecords: "Chargement en cours...",
-            sZeroRecords:    "Aucun &eacute;l&eacute;ment &agrave; afficher",
-            sEmptyTable:     "Aucune donn&eacute;e disponible dans le tableau",
+            sLoadingRecords: "<p class='no-margin'>Chargement en cours...</p>",
+            sZeroRecords:    "Aucun élément à afficher",
+            sEmptyTable:     "Aucune donnée disponible dans le tableau",
             oPaginate: {
                 sFirst:      "Premier",
-                sPrevious:   "Pr&eacute;c&eacute;dent",
+                sPrevious:   "Précédent",
                 sNext:       "Suivant",
                 sLast:       "Dernier"
             },
             oAria: {
-                sSortAscending:  ": activer pour trier la colonne par ordre croissant",
-                sSortDescending: ": activer pour trier la colonne par ordre d&eacute;croissant"
+                sSortAscending:  " : activer pour trier la colonne par ordre croissant",
+                sSortDescending: " : activer pour trier la colonne par ordre décroissant"
             },
             select: {
                 rows: {
diff --git a/templates/_Utils/_serverside_datatable_base.html.twig b/templates/_Utils/_serverside_datatable_base.html.twig
index 22008e59bf16fd98205e52b210aba13827d0005f..9a58d2bbf28abc6b8ba8fe68e36b413eaf56c652 100644
--- a/templates/_Utils/_serverside_datatable_base.html.twig
+++ b/templates/_Utils/_serverside_datatable_base.html.twig
@@ -30,25 +30,25 @@
                 buttons: {
                     colvis: "Colonnes"
                 },
-                sProcessing: "Traitement en cours...",
-                sSearch: "Rechercher&nbsp;:",
-                sLengthMenu: "Afficher _MENU_ &eacute;l&eacute;ments",
-                sInfo: "Affichage de l'&eacute;l&eacute;ment _START_ &agrave; _END_ sur _TOTAL_ &eacute;l&eacute;ments",
-                sInfoEmpty: "Affichage de l'&eacute;l&eacute;ment 0 &agrave; 0 sur 0 &eacute;l&eacute;ment",
-                sInfoFiltered: "(filtr&eacute; de _MAX_ &eacute;l&eacute;ments au total)",
-                sInfoPostFix: "",
-                sLoadingRecords: "Chargement en cours...",
-                sZeroRecords: "Aucun &eacute;l&eacute;ment &agrave; afficher",
-                sEmptyTable: "Aucune donn&eacute;e disponible dans le tableau",
+                sProcessing:     "<p class='no-margin'>Traitement en cours...</p>",
+                sSearch:         "Rechercher&nbsp;:",
+                sLengthMenu:     "Afficher _MENU_ éléments",
+                sInfo:           "<p>Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments</p>",
+                sInfoEmpty:      "<p>Affichage de l'élément 0 à 0 sur 0 élément</p>",
+                sInfoFiltered:   "<p style='padding-left: 3px;'>(filtré de _MAX_ éléments au total)</p>",
+                sInfoPostFix:    "",
+                sLoadingRecords: "<p class='no-margin'>Chargement en cours...</p>",
+                sZeroRecords:    "Aucun élément à afficher",
+                sEmptyTable:     "Aucune donnée disponible dans le tableau",
                 oPaginate: {
-                    sFirst: "Premier",
-                    sPrevious: "Pr&eacute;c&eacute;dent",
-                    sNext: "Suivant",
-                    sLast: "Dernier"
+                    sFirst:      "Premier",
+                    sPrevious:   "Précédent",
+                    sNext:       "Suivant",
+                    sLast:       "Dernier"
                 },
                 oAria: {
-                    sSortAscending: ": activer pour trier la colonne par ordre croissant",
-                    sSortDescending: ": activer pour trier la colonne par ordre d&eacute;croissant"
+                    sSortAscending: " : activer pour trier la colonne par ordre croissant",
+                    sSortDescending: " : activer pour trier la colonne par ordre décroissant"
                 },
                 select: {
                     rows: {
diff --git a/templates/_breadcrumb.html.twig b/templates/_breadcrumb.html.twig
index 3a9deaaa99756ad67f383ba3f46ad73d39eb9ef3..e4b87362e73dbafe1ae19b443a3a571316d128da 100644
--- a/templates/_breadcrumb.html.twig
+++ b/templates/_breadcrumb.html.twig
@@ -1,26 +1,27 @@
 <nav role="navigation" aria-label="{{ 'global.navigation.breadcrumb'|trans }}" class="breadcrumb">
-
-    <li {% if not breadcrumb|length > 0 %}class="active"{% endif %}>
-        {% if breadcrumb|length > 0 %}
-        <a href="{{ path('reporting_dashboard_index') }}">
-        {% endif %}
-            <i aria-hidden="true" class="fa fa-tachometer-alt"></i>
-            {{ 'reporting.dashboard.breadcrumb'|trans }}
-        {% if breadcrumb|length > 0 %}
-        </a>
-        {% endif %}
-    </li>
-    {% for item in breadcrumb %}
-        <li {% if loop.last %}class="active" aria-current="true"{% endif %}>
-            {% if item.link is defined %}
-            <a href="{{ item.link }}">
+    <ol class="list-unstyled list-inline">
+        <li {% if not breadcrumb|length > 0 %}class="active"{% endif %}>
+            {% if breadcrumb|length > 0 %}
+            <a href="{{ path('reporting_dashboard_index') }}">
             {% endif %}
-
-                {{ item.name }}
-
-            {% if item.link is defined %}
+                <i aria-hidden="true" class="fa fa-tachometer-alt"></i>
+                {{ 'reporting.dashboard.breadcrumb'|trans }}
+            {% if breadcrumb|length > 0 %}
             </a>
             {% endif %}
         </li>
-    {% endfor %}
+        {% for item in breadcrumb %}
+            <li {% if loop.last %}class="active" aria-current="page"{% endif %}>
+                {% if item.link is defined %}
+                <a href="{{ item.link }}">
+                {% endif %}
+
+                    {{ item.name }}
+
+                {% if item.link is defined %}
+                </a>
+                {% endif %}
+            </li>
+        {% endfor %}
+    </ol>
 </nav>
diff --git a/templates/_flashbag.html.twig b/templates/_flashbag.html.twig
index 79d13a9eda930640028478df33451f46f4b39fa2..a0d351af55993cdbdd196f332180cfa2e02cb886 100644
--- a/templates/_flashbag.html.twig
+++ b/templates/_flashbag.html.twig
@@ -1,48 +1,48 @@
 {% if app.session.flashbag.has('success') %}
-    <div role="status" class="alert alert-success alert-dismissible">
-        <button type="button" class="close" data-dismiss="alert">×</button>
+    <p role="status" class="alert alert-success alert-dismissible">
         <i aria-hidden="true" class="icon fa fa-check"></i>
         {% for flashMessage in app.session.flashbag.get('success') %}
             {{ flashMessage }}
         {% endfor %}
-    </div>
+        <button type="button" class="close" data-dismiss="alert" aria-label="{{ 'global.action.close'|trans }}"><span aria-hidden="true">×</span></button>
+    </p>
 {% endif %}
 
 {% if app.session.flashbag.has('info') %}
-    <div role="status" class="alert alert-info alert-dismissible">
-        <button type="button" class="close" data-dismiss="alert">×</button>
+    <p role="status" class="alert alert-info alert-dismissible">
         <i aria-hidden="true" class="icon fa fa-info"></i>
         {% for flashMessage in app.session.flashbag.get('info') %}
             {{ flashMessage }}
         {% endfor %}
-    </div>
+        <button type="button" class="close" data-dismiss="alert" aria-label="{{ 'global.action.close'|trans }}"><span aria-hidden="true">×</span></button>
+    </p>
 {% endif %}
 
 {% if app.session.flashbag.has('warning') %}
-    <div role="status" class="alert alert-warning alert-dismissible">
-        <button type="button" class="close" data-dismiss="alert">×</button>
+    <p role="status" class="alert alert-warning alert-dismissible">
         <i aria-hidden="true" class="icon fa fa-warning"></i>
         {% for flashMessage in app.session.flashbag.get('warning') %}
             {{ flashMessage }}
         {% endfor %}
-    </div>
+        <button type="button" class="close" data-dismiss="alert" aria-label="{{ 'global.action.close'|trans }}"><span aria-hidden="true">×</span></button>
+    </p>
 {% endif %}
 
 {% if app.session.flashbag.has('danger') %}
-    <div role="alert" class="alert alert-danger alert-dismissible">
-        <button type="button" class="close" data-dismiss="alert">×</button>
+    <p role="alert" class="alert alert-danger alert-dismissible">
         <i aria-hidden="true" class="icon fa fa-ban"></i>
         {% for flashMessage in app.session.flashbag.get('danger') %}
             {{ flashMessage }}
         {% endfor %}
-    </div>
+        <button type="button" class="close" data-dismiss="alert" aria-label="{{ 'global.action.close'|trans }}"><span aria-hidden="true">×</span></button>
+    </p>
 {% endif %}
 {% if app.session.flashbag.has('error') %}
-    <div role="alert" class="alert alert-danger alert-dismissible">
-        <button type="button" class="close" data-dismiss="alert">×</button>
+    <p role="alert" class="alert alert-danger alert-dismissible">
         <i aria-hidden="true" class="icon fa fa-ban"></i>
         {% for flashMessage in app.session.flashbag.get('error') %}
             {{ flashMessage }}
         {% endfor %}
-    </div>
+        <button type="button" class="close" data-dismiss="alert" aria-label="{{ 'global.action.close'|trans }}"><span aria-hidden="true">×</span></button>
+    </p>
 {% endif %}
diff --git a/templates/_footer.html.twig b/templates/_footer.html.twig
index 1e366419e3d6f9039c51ed0d67f6ee4ea4ed6beb..37bdaf54b4fbf9a064b13b99183780522526ffdc 100644
--- a/templates/_footer.html.twig
+++ b/templates/_footer.html.twig
@@ -7,11 +7,11 @@
     {% if app.user %}
         <ul class="list-unstyled list-inline">
             <li class="no-padding"><a href="{{ path('page_sitemap') }}" {% if menuItem == 'page_sitemap' %}aria-current="page"{% endif %}>{{ 'page.sitemap.title'|trans }}</a><span aria-hidden="true" style="padding: 0 5px;">|</span></li>
-            <li class="no-padding"><a href="{{ path('page_declaration') }}" {% if menuItem == 'page_declaration' %}aria-current="page"{% endif %}>Accessibilité<!-- : {{ 'page.declaration.result'|trans }}--></a><span aria-hidden="true" style="padding: 0 5px;">|</span></li>
+            <li class="no-padding"><a href="{{ path('page_declaration') }}" {% if menuItem == 'page_declaration' %}aria-current="page"{% endif %}>Accessibilité : {{ 'page.declaration.result'|trans }}</a><span aria-hidden="true" style="padding: 0 5px;">|</span></li>
             <li class="no-padding"><a href="{{ path('page_credit') }}" {% if menuItem == 'page_credit' %}aria-current="page"{% endif %}>{{ 'page.credit.title'|trans }}</a><span aria-hidden="true" style="padding: 0 5px;">|</span></li>
             <li class="no-padding">v{{ app_version }}</li>
         </ul>
     {% else %}
-        <p class="no-margin"><!-- Accessibilité : {{ 'page.declaration.result'|trans }}--></p>
+        <p class="no-margin">Accessibilité : {{ 'page.declaration.result'|trans }}</p>
     {% endif %}
 </footer>
diff --git a/templates/_header.html.twig b/templates/_header.html.twig
index 20eda18a138a33109160e69eb91e2498a2f0ea66..3eebf203781ea9e989ef107b7ff27c5c52199c6d 100644
--- a/templates/_header.html.twig
+++ b/templates/_header.html.twig
@@ -10,8 +10,8 @@
 <header class="main-header" role="banner">
     <!-- Logo -->
     <div class="logo">
-        <span class="logo-mini"><img src="{{ asset(app_image_sidebar_reduced_path) }}" alt="Madis"/></span>
-        <span class="logo-lg"><img class="fit-picture" src="{{ asset(app_image_logo_blanc) }}" width="65%" alt=""></span>
+        <span class="logo-mini"><img src="{{ asset(app_image_sidebar_reduced_path) }}" alt=""/></span>
+        <span class="logo-lg"><img class="fit-picture" src="{{ asset(app_image_logo_blanc) }}" alt="Madis"></span>
     </div>
 
     <!-- Header Navbar -->
diff --git a/templates/base.html.twig b/templates/base.html.twig
index 8c6a4b6238e190cf9a1a4a59cc32ef5723ccf15b..1442769fcac1029a39e14cc23e741beb09950933 100644
--- a/templates/base.html.twig
+++ b/templates/base.html.twig
@@ -8,11 +8,11 @@
 
     <title>{% block title %}Madis{% endblock %}</title>
 
-    <link rel="icon" href="{{ asset(app_image_favicon_path) }}" />
+    <link rel="icon" href="{{ asset(app_image_favicon_path) }}">
 
     <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css">
-    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.4.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
+    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.5.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.17/css/AdminLTE.min.css">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.17/css/skins/_all-skins.min.css">
@@ -47,12 +47,12 @@
     {# Impersonate banner #}
     {% if is_granted('ROLE_PREVIOUS_ADMIN') %}
     <div class="banner-impersonate bg-danger text-red">
-        <div>
+        <p class="no-margin">
             {{ 'global.label.impersonate_banner'|trans({ '%user%': app.user, '%organization%': app.user.collectivity, '%roles%': app.user.roles[0]|dictionary('user_user_role') }) }}
             <a href="{{ path('user_user_list', {'_switch_user': '_exit'}) }}" class="text-red">
                 {{ 'global.action.impersonate_end'|trans }}
             </a>
-        </div>
+        </p>
     </div>
     {% endif %}
 
diff --git a/templates/base_pdf.html.twig b/templates/base_pdf.html.twig
index a768d3d426cf4a47b5a622148a9e65ec014df42d..6f307f5fc77167afedc3dff68597a08627740d00 100644
--- a/templates/base_pdf.html.twig
+++ b/templates/base_pdf.html.twig
@@ -8,7 +8,7 @@
 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css">
-    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.4.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
+    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.5.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.17/css/AdminLTE.min.css">
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.17/css/skins/_all-skins.min.css">
diff --git a/templates/base_public.html.twig b/templates/base_public.html.twig
index deff5ed9a983aa71628fc401ae6c7415feaec6cb..01b62cd9e39b131a4d624eed4ffdd8be42d0753c 100644
--- a/templates/base_public.html.twig
+++ b/templates/base_public.html.twig
@@ -8,11 +8,11 @@
 
     <title>{% block title %}Madis{% endblock %}</title>
 
-    <link rel="icon" href="{{ asset(app_image_favicon_path) }}" />
+    <link rel="icon" href="{{ asset(app_image_favicon_path) }}">
 
     <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css">
-    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.4.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
+    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.5.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.17/css/AdminLTE.min.css">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.17/css/skins/_all-skins.min.css">
@@ -38,7 +38,7 @@
 <body class="hold-transition skin-blue sidebar-mini {{ bodyClass }}">
 
     <div class="wrapper">
-        <main class="content-wrapper public">
+        <main role="main" class="content-wrapper public">
             <section class="content-header">
                 {% block body_head %}{% endblock %}
                 {% block breadcrumb %}{% endblock %}
diff --git a/templates/base_publique.html.twig b/templates/base_publique.html.twig
index ec6eb57a13eb4d1a1c53fcf70d4fe87f3d2a1f4f..1221e31944e42db4149ec46a0f637296111e7549 100644
--- a/templates/base_publique.html.twig
+++ b/templates/base_publique.html.twig
@@ -8,11 +8,11 @@
 
     <title>{% block title %}Madis{% endblock %}</title>
 
-    <link rel="icon" href="{{ asset(app_image_favicon_path) }}" />
+    <link rel="icon" href="{{ asset(app_image_favicon_path) }}">
 
     <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css">
-    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.4.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
+    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.5.2/css/all.css" crossorigin="anonymous" referrerpolicy="no-referrer">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.17/css/AdminLTE.min.css">
     <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/admin-lte/2.4.17/css/skins/_all-skins.min.css">
@@ -39,7 +39,7 @@
 
     <div class="wrapper">
 
-        <main class="content-wrapper public">
+        <main role="main" class="content-wrapper public">
             <section class="content-header">
                 {% block body_head %}{% endblock %}
                 {% block breadcrumb %}{% endblock %}
diff --git a/tests/Domain/Registry/Dictionary/ViolationImpactDictionaryTest.php b/tests/Domain/Registry/Dictionary/ViolationImpactDictionaryTest.php
index 234416e2eafed4acc3600f4261918ae1075c6b78..e75386f84c4f9cdbae2b02ad99357e0549a49738 100644
--- a/tests/Domain/Registry/Dictionary/ViolationImpactDictionaryTest.php
+++ b/tests/Domain/Registry/Dictionary/ViolationImpactDictionaryTest.php
@@ -51,7 +51,7 @@ class ViolationImpactDictionaryTest extends TestCase
             ViolationImpactDictionary::IMPACT_DISCRIMINATION                    => 'Discrimination',
             ViolationImpactDictionary::IMPACT_IDENTITY_THEFT                    => 'Vol d\'identité',
             ViolationImpactDictionary::IMPACT_FRAUD                             => 'Fraude',
-            ViolationImpactDictionary::IMPACT_UNAUTHORIZED_PSEUDO_LIFTING       => 'Levée non autorisée de pseudonimisation',
+            ViolationImpactDictionary::IMPACT_UNAUTHORIZED_PSEUDO_LIFTING       => 'Levée non autorisée de pseudonymisation',
             ViolationImpactDictionary::IMPACT_FINANCIAL_LOSSES                  => 'Pertes financières',
             ViolationImpactDictionary::IMPACT_REPUTATION_DAMAGE                 => 'Atteinte à la réputation',
             ViolationImpactDictionary::IMPACT_LOSS_PROFESSIONAL_CONFIDENTIALITY => 'Perte de la confidentialité de données protégées par un secret professionnel',
diff --git a/tests/Domain/Registry/Form/Type/ConformiteOrganisation/EvaluationTypeTest.php b/tests/Domain/Registry/Form/Type/ConformiteOrganisation/EvaluationTypeTest.php
index e7834cd2b2c13f0212de8a7012b429bc032b40eb..c0bced3e275faebae5c89e9b26bfed8e495d2094 100644
--- a/tests/Domain/Registry/Form/Type/ConformiteOrganisation/EvaluationTypeTest.php
+++ b/tests/Domain/Registry/Form/Type/ConformiteOrganisation/EvaluationTypeTest.php
@@ -21,11 +21,11 @@ class EvaluationTypeTest extends FormTypeHelper
     public function testBuildForm(): void
     {
         $builder = [
-          'date'         => DateType::class,
-          'participants' => CollectionType::class,
-          'conformites'  => CollectionType::class,
-          'save'         => SubmitType::class,
-          'saveDraft'    => SubmitType::class,
+            'date'         => DateType::class,
+            'participants' => CollectionType::class,
+            'conformites'  => CollectionType::class,
+            'save'         => SubmitType::class,
+            'saveDraft'    => SubmitType::class,
         ];
 
         (new EvaluationType())->buildForm($this->prophesizeBuilder($builder), []);
diff --git a/tests/Domain/User/Dictionary/CollectivityTypeDictionaryTest.php b/tests/Domain/User/Dictionary/CollectivityTypeDictionaryTest.php
index 793e20512d55920080f02048aefd5b33eca8989c..90404edf0cc0cad36b7eef74861fe092211c9470 100644
--- a/tests/Domain/User/Dictionary/CollectivityTypeDictionaryTest.php
+++ b/tests/Domain/User/Dictionary/CollectivityTypeDictionaryTest.php
@@ -53,7 +53,7 @@ class CollectivityTypeDictionaryTest extends TestCase
             CollectivityTypeDictionary::TYPE_SYNDICAT             => 'Syndicat',
             CollectivityTypeDictionary::TYPE_SANITARY_INSTITUTION => 'Établissement sanitaire',
             CollectivityTypeDictionary::TYPE_MEDICAL_INSTITUTION  => 'Établissement social ou médico-social',
-            CollectivityTypeDictionary::TYPE_ASSOCIATION          => 'Association',
+            CollectivityTypeDictionary::TYPE_ASSOCIATION          => 'Association ou Groupement (GIP ou GIE)',
             CollectivityTypeDictionary::TYPE_ENTERPRISE           => 'Entreprise',
             CollectivityTypeDictionary::TYPE_OTHER                => 'Autre',
         ];
diff --git a/translations/messages.fr.yaml b/translations/messages.fr.yaml
index db81f4d791752af783216247b6229a5f7698ec7d..e4e44d9aff15f66c785ca1a5c8995a8c39619591 100644
--- a/translations/messages.fr.yaml
+++ b/translations/messages.fr.yaml
@@ -29,7 +29,6 @@ global:
         rights: Droits
         report: Générer une impression
         validate: Valider
-        read_more: Plus d'informations
 
     label:
         actions: Actions