diff --git a/documentation/release/3.1.6.md b/documentation/release/3.1.6.md
index 5330d47048cdcaac276c0e63466eb5b2ef4af9dd..2b162c48a666ccdbf4561e541307c6beace8abef 100644
--- a/documentation/release/3.1.6.md
+++ b/documentation/release/3.1.6.md
@@ -1,92 +1,220 @@
 ```sql
+-- ----------------------------------------------------------------------------
+-- NOUVEAUX PRIVILEGES (gestion des missions principales)
+-- ----------------------------------------------------------------------------
+
+INSERT INTO unicaen_privilege_categorie (code, libelle, ordre, namespace)
+VALUES ('missionprincipale', 'Gestion des missions principales', 800, 'FicheMetier\Provider\Privilege');
+INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE)
+WITH d(code, lib, ordre) AS (
+    SELECT 'missionprincipale_index', 'Accéder à l''index', 10 UNION
+    SELECT 'missionprincipale_afficher', 'Afficher', 20 UNION
+    SELECT 'missionprincipale_ajouter', 'Ajouter', 30 UNION
+    SELECT 'missionprincipale_modifier', 'Modifier', 40 UNION
+    SELECT 'missionprincipale_historiser', 'Historiser/Restaurer', 50 UNION
+    SELECT 'missionprincipale_supprimer', 'Supprimer', 60
+)
+SELECT cp.id, d.code, d.lib, d.ordre
+FROM d
+JOIN unicaen_privilege_categorie cp ON cp.CODE = 'missionprincipale';
+
+-- TODO -- Accorder les privilèges à qui de droit --
+
+-- ----------------------------------------------------------------------------
+-- NOUVELLE TABLES (MISSIONS PRINCIPALES)
+-- ----------------------------------------------------------------------------
+
 create table missionprincipale
 (
-    id                    serial                  not null
-        constraint missionprincipale_pk
-            primary key,
-    libelle               varchar(1024),
-    niveau_id             integer
+    id                      serial          
+        constraint missionprincipale_pk primary key,
+    libelle                 varchar(1024),
+    niveau_id               integer         
         constraint missionprincipale_carriere_niveau_enveloppe_id_fk
-            references carriere_niveau_enveloppe
-            on delete cascade,
-    histo_creation        timestamp default now() not null,
-    histo_createur_id     integer   default 0     not null
+        references carriere_niveau_enveloppe on delete cascade,
+    histo_creation          timestamp default now() not null,
+    histo_createur_id       integer   default 0     not null
         constraint missionprincipale_unicaen_utilisateur_user_id_fk3
-            references unicaen_utilisateur_user,
+        references unicaen_utilisateur_user,
+    histo_modification      timestamp,
+    histo_modificateur_id   integer
+        constraint missionprincipale_unicaen_utilisateur_user_id_fk
+        references unicaen_utilisateur_user,
+    histo_destruction       timestamp,
+    histo_destructeur_id    integer
+        constraint missionprincipale_unicaen_utilisateur_user_id_fk2
+        references unicaen_utilisateur_user
+);
+
+create table missionprincipale_activite
+(
+    id                      serial 
+        constraint missionprincipale_activite_pk primary key,
+    mission_id              integer not null,
+    libelle                 text not null,
+    ordre                   integer,
+    histo_creation          timestamp not null,
+    histo_createur_id       integer not null
+        constraint missionprincipale_activite_createur_fk
+        references unicaen_utilisateur_user,
+    histo_modification      timestamp,
+    histo_modificateur_id   integer
+        constraint missionprincipale_activite_modificateur_fk
+        references unicaen_utilisateur_user,
+    histo_destruction       timestamp,
+    histo_destructeur_id    integer
+        constraint missionprincipale_activite_user_id_fk
+        references unicaen_utilisateur_user
+);
+create unique index missionprincipale_activite_id_uindex on missionprincipale_activite (id);
+
+create table missionprincipale_application
+(
+    mission_id              integer not null
+        constraint missionprincipale_application_missionprincipale_id_fk
+        references missionprincipale on delete cascade,
+    application_element_id integer not null
+        constraint missionprincipale_application_application_element_id_fk
+        references element_application_element on delete cascade,
+    constraint missionprincipale_application_pk primary key (mission_id, application_element_id)
+);
+
+create table missionprincipale_competence
+(
+    mission_id              integer not null
+        constraint missionprincipale_competence_missionprincipale_id_fk
+        references missionprincipale on delete cascade,
+    competence_element_id integer not null
+        constraint missionprincipale_competence_competence_element_id_fk
+        references element_competence_element on delete cascade,
+    constraint missionprincipale_competence_pk primary key (mission_id, competence_element_id)
+);
+
+create table missionprincipale_domaine
+(
+    mission_id              integer not null
+        constraint missionprincipale_domaine_missionprincipale_id_fk
+        references missionprincipale on delete cascade,
+    domaine_id              integer not null
+        constraint activite_domaine_domaine_id_fk
+        references metier_domaine on delete cascade,
+    constraint missionprincipale_domaine_pk primary key (mission_id, domaine_id)
+);
+
+create table fichemetier_mission
+(
+    id                      serial
+        constraint fichemetier_mission_pkey primary key,
+    fichemetier_id          integer                                                         not null
+        constraint fichemetier_mission_fichemetier_id_fk
+        references fichemetier on delete cascade,
+    mission_id              integer                                                         not null
+        constraint fichemetier_mission_missionprincipale_id_fk
+        references missionprincipale on delete cascade,
+    ordre                   integer default 0                                               not null
+);
+create unique index fichemetier_mission_id_uindex on fichemetier_mission (id);
+
+create table ficheposte_missionsadditionnelles
+(
+    id                      serial
+        constraint ficheposte_missionsadditionnelles_pk primary key,
+    ficheposte_id           integer                                                                         not null
+        constraint ficheposte_missionsadditionnelles_ficheposte_id_fk
+        references ficheposte on delete cascade,
+    mission_id            integer                                                                         not null
+        constraint ficheposte_missionsadditionnelles_missionprincipale_id_fk
+        references missionprincipale on delete cascade,
+    retrait               varchar(1024),
+    description           text,
+    histo_creation        timestamp default now()                                                         not null,
+    histo_createur_id     integer   default 0                                                             not null
+        constraint ficheposte_missionsadditionnelles_createur_fk
+        references unicaen_utilisateur_user,
     histo_modification    timestamp,
     histo_modificateur_id integer
-        constraint missionprincipale_unicaen_utilisateur_user_id_fk
-            references unicaen_utilisateur_user,
+        constraint ficheposte_missionsadditionnelles_modificateur_fk
+        references unicaen_utilisateur_user,
     histo_destruction     timestamp,
     histo_destructeur_id  integer
-        constraint missionprincipale_unicaen_utilisateur_user_id_fk2
-            references unicaen_utilisateur_user
+        constraint ficheposte_missionsadditionnelles_destructeur_fk
+        references unicaen_utilisateur_user
 );
+create unique index ficheposte_missionsadditionnelles_id_uindex on ficheposte_missionsadditionnelles (id);
 
+-- ----------------------------------------------------------------------------
+-- TRANSFERT DES DONNEES EXISTANTES 
+-- ----------------------------------------------------------------------------
 
+-- MISSIONS PRINCIPALES
 insert into missionprincipale (id, libelle, niveau_id)
 select a.id, al.libelle, a.niveaux_id
 from activite a
-         join activite_libelle al on a.id = al.activite_id
-where a.histo_destruction IS NULL AND al.
-    histo_destruction IS NULL;
-
-drop table activite_libelle;
+join activite_libelle al on a.id = al.activite_id
+where a.histo_destruction IS NULL AND al.histo_destruction IS NULL;
 
+-- TODO -- REPOSITIONNER LA SEQUENCE  --
 select max(id) from missionprincipale;
-alter sequence missionprincipale_id_seq restart with 14; -- TODO changer avec valeur ci-dessus
-
-alter table activite_domaine rename to missionprincipale_domaine;
-alter table missionprincipale_domaine rename column activite_id to mission_id;
-alter table activite_description rename to missionprincipale_activite;
-alter table missionprincipale_activite rename column activite_id to mission_id;
-alter table activite_application rename to missionprincipale_application;
-alter table missionprincipale_application rename column activite_id to mission_id;
-alter table activite_competence rename to missionprincipale_competence;
-alter table missionprincipale_competence rename column activite_id to mission_id;
-drop table activite_formation;
-alter table fichemetier_activite rename column activite_id to mission_id;
-alter table fichemetier_activite drop constraint fichemetier_activite_activite_id_fk;
-alter table fichemetier_activite add constraint fichemetier_activite_missionprincipale_id_fk foreign key (mission_id) references missionprincipale on delete cascade;
-alter table fichemetier_activite rename to fichemetier_mission;
+alter sequence missionprincipale_id_seq restart with 1000;
+    
+-- LIEN MISSION <-> DOMAINE
+insert into missionprincipale_domaine (mission_id, domaine_id) 
+select a.activite_id, a.domaine_id
+from activite_domaine a;
 
-alter table fichemetier_mission rename column position to ordre;
-alter table fichemetier_mission rename column fiche_id to fichemetier_id;
+-- LIEN MISSION <-> APPLICATION
+insert into missionprincipale_application (mission_id, application_element_id)
+select a.activite_id, a.application_element_id
+from activite_application a;
 
+-- LIEN MISSION <-> COMPETENCE
+insert into missionprincipale_competence (mission_id, competence_element_id)
+select a.activite_id, a.competence_element_id
+from activite_competence a;
 
-INSERT INTO unicaen_privilege_categorie (code, libelle, ordre, namespace)
-VALUES ('missionprincipale', 'Gestion des missions principales', 800, 'FicheMetier\Provider\Privilege');
-INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE)
-WITH d(code, lib, ordre) AS (
-    SELECT 'missionprincipale_index', 'Accéder à l''index', 10 UNION
-    SELECT 'missionprincipale_afficher', 'Afficher', 20 UNION
-    SELECT 'missionprincipale_ajouter', 'Ajouter', 30 UNION
-    SELECT 'missionprincipale_modifier', 'Modifier', 40 UNION
-    SELECT 'missionprincipale_historiser', 'Historiser/Restaurer', 50 UNION
-    SELECT 'missionprincipale_supprimer', 'Supprimer', 60 
-)
-SELECT cp.id, d.code, d.lib, d.ordre
-FROM d
-JOIN unicaen_privilege_categorie cp ON cp.CODE = 'missionprincipale';
+-- LIEN MISSION <-> ACTIVITE
+-- TODO -- Verifier que l'utilisateur 0 represente bien l'application --
+alter table missionprincipale_activite alter column histo_createur_id set default 0;
+alter table missionprincipale_activite alter column histo_creation set default now();
+insert into missionprincipale_activite (id, mission_id, libelle, ordre) 
+select a.id, a.activite_id, a.description, a.ordre
+from activite_description a
+where a.histo_destruction is null;
+-- TODO -- REPOSITIONNER LA SEQUENCE --
+select max(id) from missionprincipale_activite;
+alter sequence missionprincipale_activite_id_seq restart with 10000;
 
-alter table ficheposte_activite_specifique drop constraint ficheposte_activite_specifique_activite_id_fk;
-alter table ficheposte_activite_specifique
-    add constraint ficheposte_activite_specifique_missionprincipale_id_fk
-        foreign key (activite_id) references missionprincipale
-            on delete cascade;
-alter table ficheposte_activite_specifique rename to ficheposte_missionsadditionnelles;
-create sequence ficheposte_missionsadditionnelles_id_seq;
-alter table ficheposte_missionsadditionnelles alter column id set default nextval('ficheposte_missionsadditionnelles_id_seq');
-alter sequence ficheposte_missionsadditionnelles_id_seq owned by ficheposte_missionsadditionnelles.id;
+-- LIEN FICHE_METIER <-> MISSION
+insert into fichemetier_mission (id, fichemetier_id, mission_id, ordre)
+select a.id, a.fiche_id as fichemetier_id, a.activite_id as mission_id, a.position as ordre
+from fichemetier_activite a;
+-- TODO -- REPOSITIONNER LA SEQUENCE --
+select max(id) from fichemetier_mission;
+alter sequence fichemetier_mission_id_seq restart with 1000;
+
+    -- LIEN FICHE_POSTE <-> MISSION
+insert into ficheposte_missionsadditionnelles (id, ficheposte_id, mission_id, retrait, description)
+select fas.id as id, fs.ficheposte_id as ficheposte_id, fas.activite_id as mission_id, fas.retrait, fas.description
+from ficheposte_activite_specifique fas
+join ficheposte_specificite fs on fs.id=fas.specificite_id;
+-- TODO -- REPOSITIONNER LA SEQUENCE --
+select max(id) from ficheposte_missionsadditionnelles;
 alter sequence ficheposte_missionsadditionnelles_id_seq restart with 1000;
 
+-- ----------------------------------------------------------------------------
+-- RETRAIT DES TABLES NON UTILISEES
+-- ----------------------------------------------------------------------------
+    
+drop table activite_libelle;
+drop table activite_description;
+drop table activite_domaine;
+drop table activite_application;
+drop table activite_competence;
+drop table activite_formation;
+drop table fichemetier_activite;
+drop table ficheposte_activite_specifique;
+drop table activite
 
-alter table ficheposte_missionsadditionnelles rename column specificite_id to ficheposte_id;
-alter table ficheposte_missionsadditionnelles alter column histo_creation set default now();
-alter table ficheposte_missionsadditionnelles alter column histo_createur_id set default 0;
-alter table ficheposte_missionsadditionnelles drop constraint specificite_activite_specificite_poste_id_fk;
-alter table ficheposte_missionsadditionnelles add constraint ficheposte_missionsadditionnelles_ficheposte_id_fk foreign key (ficheposte_id) references ficheposte on delete cascade;
-alter table ficheposte_missionsadditionnelles rename column activite_id to mission_id;
 
 
 ```
\ No newline at end of file
diff --git a/module/Application/src/Application/Controller/IndexController.php b/module/Application/src/Application/Controller/IndexController.php
index 8213529587df64e9b3dd0a0bd2a206edf32bab2c..735da93571cd1fbf95b9bed001c067de87520b09 100755
--- a/module/Application/src/Application/Controller/IndexController.php
+++ b/module/Application/src/Application/Controller/IndexController.php
@@ -39,7 +39,7 @@ class IndexController extends AbstractActionController
     {
         /** @var User $connectedUser */
         $connectedUser = $this->getUserService()->getConnectedUser();
-        if ($connectedUser === null) return new ViewModel([]);
+        if ($connectedUser === null) return new ViewModel(['user' => null]);
 
         $agent = $this->getAgentService()->getAgentByUser($connectedUser);
         if ($agent !== null && $agent->getUtilisateur() === null) {
diff --git a/module/Formation/Module.php b/module/Formation/Module.php
index 14feee181c9189ae2184ee6a91df1f2f43d97b0e..66207af3aae033b780ecd64cf0e016d00d131498 100755
--- a/module/Formation/Module.php
+++ b/module/Formation/Module.php
@@ -2,14 +2,14 @@
 
 namespace Formation;
 
+use Laminas\Config\Factory as ConfigFactory;
 use Laminas\Loader\StandardAutoloader;
+use Laminas\Mvc\Console\Controller\AbstractConsoleController;
 use Laminas\Mvc\Controller\AbstractActionController;
 use Laminas\Mvc\ModuleRouteListener;
 use Laminas\Mvc\MvcEvent;
 use Laminas\Stdlib\ArrayUtils;
 use Laminas\Stdlib\Glob;
-use Laminas\Config\Factory as ConfigFactory;
-use UnicaenDbImport\Controller\ConsoleController;
 
 class Module
 {
@@ -24,7 +24,7 @@ class Module
         $sharedEvents->attach(AbstractActionController::class, 'dispatch', function($e) {
             /** @var $e MvcEvent */
             $controller = $e->getTarget();
-            $consoleType = ($controller instanceof ConsoleController);
+            $consoleType = ($controller instanceof AbstractConsoleController) ;
             if (!$consoleType) {
                 $hostname = $controller->getRequest()->getUri()->getHost();
                 if (preg_match('/mes-formations.*/', $hostname)) {
diff --git a/module/Referentiel/src/Referentiel/Controller/SynchronisationConsoleController.php b/module/Referentiel/src/Referentiel/Controller/SynchronisationConsoleController.php
index e63f466a38e626eb3a1041abddac7b3b6a16dfa1..577e7fa0bf68377973e7c481dfbd864acff3151a 100644
--- a/module/Referentiel/src/Referentiel/Controller/SynchronisationConsoleController.php
+++ b/module/Referentiel/src/Referentiel/Controller/SynchronisationConsoleController.php
@@ -2,11 +2,12 @@
 
 namespace Referentiel\Controller;
 
+use Laminas\Mvc\Console\Controller\AbstractConsoleController;
 use Laminas\Mvc\Controller\AbstractActionController;
 use Referentiel\Service\Synchronisation\SynchronisationServiceAwareTrait;
 use UnicaenDbImport\Controller\ConsoleController;
 
-class SynchronisationConsoleController extends ConsoleController {
+class SynchronisationConsoleController extends AbstractConsoleController {
     use SynchronisationServiceAwareTrait;
 
     private array $configs;