From 12b901ea1ce275a8169afe1d1c79ca44bdbb23d3 Mon Sep 17 00:00:00 2001
From: Jean-Philippe Metivier <jean-philippe.metivier@unicaen.fr>
Date: Tue, 21 Feb 2023 15:12:18 +0100
Subject: [PATCH] Debut

---
 config/application.config.php                 |   1 +
 .../config/merged/specificite.config.php      |   4 +-
 module/Application/config/module.config.php   |   6 +-
 .../Controller/AgentController.php            |   3 +-
 .../Controller/AgentControllerFactory.php     |   2 +-
 .../Controller/FicheProfilController.php      |   8 +-
 .../FicheProfilControllerFactory.php          |   2 +-
 .../Controller/IndexController.php            |   8 +-
 .../Controller/IndexControllerFactory.php     |   2 +-
 .../Controller/SpecificiteController.php      |   2 +-
 .../SpecificiteControllerFactory.php          |   3 +-
 .../src/Application/Entity/Db/Activite.php    |   3 +-
 .../src/Application/Entity/Db/Agent.php       |  17 +-
 .../src/Application/Entity/Db/Expertise.php   |  82 ----
 .../FicheposteActiviteDescriptionRetiree.php  |   1 +
 .../Db/FicheposteApplicationRetiree.php       |   1 +
 .../Entity/Db/FicheposteCompetenceRetiree.php |   1 +
 .../Db/MacroContent/FicheMetierMacroTrait.php |   2 +-
 .../Db/MacroContent/FichePosteMacroTrait.php  |   4 +-
 .../Application.Entity.Db.Agent.dcm.xml       |   2 +-
 .../Application.Entity.Db.FicheProfil.dcm.xml |   2 +-
 ...ication.Entity.Db.FicheTypeExterne.dcm.xml |   2 +-
 ...cheposteActiviteDescriptionRetiree.dcm.xml |   2 +-
 ...ty.Db.FicheposteApplicationRetiree.dcm.xml |   2 +-
 ...ity.Db.FicheposteCompetenceRetiree.dcm.xml |   2 +-
 ...ication.Entity.Db.SpecificitePoste.dcm.xml |   2 +-
 .../Form/AssocierPoste/AssocierPosteForm.php  |  89 ----
 .../AssocierPosteFormAwareTrait.php           |  29 --
 .../AssocierPosteFormFactory.php              |  35 --
 .../AssocierPoste/AssocierPosteHydrator.php   |  42 --
 .../AssocierPosteHydratorFactory.php          |  21 -
 .../AssocierTitre/AssocierTitreHydrator.php   |   2 +-
 .../Expertise/ExpertiseFormAwareTrait.php     |  27 --
 .../Form/FicheProfil/FicheProfilForm.php      |   6 +-
 .../FicheProfil/FicheProfilFormFactory.php    |   2 +-
 .../Form/FicheProfil/FicheProfilHydrator.php  |   4 +-
 .../FicheProfilHydratorFactory.php            |   2 +-
 .../Form/Poste/PosteFormAwareTrait.php        |  29 --
 .../Form/Rifseep/RifseepHydrator.php          |   2 +-
 .../ActivitesDescriptionsRetireesService.php  |   2 +-
 .../ApplicationsRetireesService.php           |   2 +-
 .../CompetencesRetireesService.php            |   2 +-
 .../Expertise/ExpertiseServiceAwareTrait.php  |  27 --
 .../Notification/NotificationService.php      |   2 +-
 .../ParcoursDeFormationService.php            |   2 +-
 .../View/Helper/FichePosteGraphViewHelper.php |   2 +-
 .../Helper/FichesPostesAsArrayViewHelper.php  |   2 +-
 .../Helper/ParcoursApplicationViewHelper.php  |   2 +-
 .../View/Helper/PosteViewHelper.php           |   2 +-
 .../View/Helper/RaisonsViewHelper.php         |   1 -
 .../Helper/SpecificitePosteViewHelper.php     |   2 +-
 .../View/Helper/partial/activite.phtml        |   8 +-
 .../Helper/partial/fiche-metier-externe.phtml |  10 +-
 .../Helper/partial/fiche-metier.old.phtml     |   2 +-
 .../Helper/partial/ficheposte-graphique.phtml |   2 +-
 .../partial/fiches-postes-as-table.phtml      |  16 +-
 .../View/Helper/partial/poste.phtml           |   4 +-
 .../Helper/partial/specificite-activite.phtml |   1 -
 .../View/Helper/partial/specificite.phtml     |   4 +-
 .../view/application/agent/afficher.phtml     |   2 +-
 .../agent/partial/fiche-poste.phtml           |   6 +-
 .../application/fiche-profil/modifier.phtml   |   2 +-
 .../application/index/index-autorite.phtml    |   2 +-
 .../application/index/index-superieur.phtml   |   5 +-
 .../view/application/index/index.phtml        |   7 +-
 .../application/index/partial/entretien.phtml |   1 -
 .../default/confirmation.phtml                |   0
 .../default/default-form.phtml                |   0
 .../{application => }/default/probleme.phtml  |   0
 .../{application => }/default/reponse.phtml   |   0
 .../EntretienProfessionnelController.php      |  14 +-
 ...ntretienProfessionnelControllerFactory.php |   2 +-
 .../entretien-professionnel/acceder.phtml     |   2 +-
 .../partial/formulaire.phtml                  |   2 +-
 .../partial/header.phtml                      |  14 +-
 .../partial/parcours.phtml                    |   2 +-
 module/FichePoste/Module.php                  |  44 ++
 module/FichePoste/config/example.php          |  36 ++
 .../config/merged/expertise.config.php        | 144 +++++++
 .../config/merged/fiche-poste.config.php      | 139 ++-----
 .../FichePoste/config/merged/poste.config.php |  79 ++++
 module/FichePoste/config/module.config.php    |  66 +++
 .../Assertion/FichePosteAssertion.php         |  10 +-
 .../Assertion/FichePosteAssertionFactory.php  |  10 +-
 .../Controller/ExpertiseController.php        | 119 ++++++
 .../Controller/ExpertiseControllerFactory.php |  37 ++
 .../Controller/FichePosteController.php       | 161 +-------
 .../FichePosteControllerFactory.php           |  16 +-
 .../FichePoste/Controller/PosteController.php |  53 +++
 .../Controller/PosteControllerFactory.php     |  38 ++
 .../src/FichePoste/Entity/Db/Expertise.php    |  51 +++
 .../src/FichePoste}/Entity/Db/FichePoste.php  | 380 +++++++-----------
 .../FichePoste.Entity.Db.Expertise.dcm.xml}   |   4 +-
 .../FichePoste.Entity.Db.FichePoste.dcm.xml}  |   6 +-
 .../FichePoste.Entity.Db.Poste.dcm.xml}       |   4 +-
 .../src/FichePoste}/Entity/Db/Poste.php       |   2 +-
 .../Form/Expertise/ExpertiseForm.php          |  19 +-
 .../Expertise/ExpertiseFormAwareTrait.php     |  18 +
 .../Form/Expertise/ExpertiseFormFactory.php   |   9 +-
 .../Form/Expertise/ExpertiseHydrator.php      |   6 +-
 .../Expertise/ExpertiseHydratorFactory.php    |   8 +-
 .../src/FichePoste}/Form/Poste/PosteForm.php  |   2 +-
 .../Form/Poste/PosteFormAwareTrait.php        |  18 +
 .../Form/Poste/PosteFormFactory.php           |   2 +-
 .../FichePoste}/Form/Poste/PosteHydrator.php  |   4 +-
 .../Form/Poste/PosteHydratorFactory.php       |   2 +-
 .../Privilege/FichePostePrivileges.php        |   2 +-
 .../Service/Expertise/ExpertiseService.php    |  42 +-
 .../Expertise/ExpertiseServiceAwareTrait.php  |  18 +
 .../Expertise/ExpertiseServiceFactory.php     |   7 +-
 .../Service/FichePoste/FichePosteService.php  |   6 +-
 .../FichePosteServiceAwareTrait.php           |   2 +-
 .../FichePoste/FichePosteServiceFactory.php   |  12 +-
 .../Service/Poste/PosteService.php            |   4 +-
 .../Service/Poste/PosteServiceAwareTrait.php  |   2 +-
 .../Service/Poste/PosteServiceFactory.php     |   2 +-
 .../fiche-poste}/fiche-poste/action.phtml     |   5 +-
 .../fiche-poste}/fiche-poste/afficher.phtml   |   8 +-
 .../fiche-poste/ajouter-fiche-metier.phtml    |   2 +-
 .../fiche-poste/associer-agent.phtml          |   4 +-
 .../fiche-poste}/fiche-poste/dupliquer.phtml  |   4 +-
 .../fiche-poste/editer-specificite.phtml      |   0
 .../fiche-poste}/fiche-poste/editer.phtml     |  95 +++--
 .../view/fiche-poste}/fiche-poste/index.phtml |   6 +-
 .../fiche-poste/modifier-repartition.phtml    |   7 +-
 .../fiche-poste/partial/applications.phtml    |   4 +-
 .../fiche-poste/partial/competences.phtml     |   4 +-
 .../partial/environnement-poste.phtml         |   4 +-
 .../fiche-poste/partial/expertise.phtml       |  26 +-
 .../fiche-poste/partial/formations.phtml      |   4 +-
 .../partial/informations-poste.phtml          |   7 +-
 .../fiche-poste/partial/intitule.phtml        |   2 +-
 .../partial/parcours-de-formation.phtml       |   2 +-
 .../partial/retour-structure.phtml            |   0
 .../fiche-poste/partial/rifseep.phtml         |   6 +-
 .../fiche-poste/partial/specificite.phtml     |   6 +-
 .../fiche-poste/partial/validations.phtml     |  14 +-
 .../fiche-poste/selectionner-activite.phtml   |   0
 .../selectionner-applications-retirees.phtml  |   4 +-
 .../selectionner-competences-retirees.phtml   |   4 +-
 .../selectionner-descriptions-retirees.phtml  |   4 +-
 .../selectionner-formations-retirees.phtml    |   4 +-
 .../Controller/StructureController.php        |   7 +-
 .../Controller/StructureControllerFactory.php |   2 +-
 .../Structure.Entity.Db.Structure.dcm.xml     |   4 +-
 .../src/Structure/Entity/Db/Structure.php     |   4 +-
 .../Service/Structure/StructureService.php    |   4 +-
 .../view/structure/structure/afficher.phtml   |   2 +-
 .../structure/dupliquer-fiche-poste.phtml     |   2 +-
 .../structure/partial/fiches-postes.phtml     |  17 +-
 .../structure/structure/partial/postes.phtml  |   4 +-
 .../structure/structure/partial/profil.phtml  |   2 +-
 152 files changed, 1231 insertions(+), 1239 deletions(-)
 delete mode 100644 module/Application/src/Application/Entity/Db/Expertise.php
 delete mode 100644 module/Application/src/Application/Form/AssocierPoste/AssocierPosteForm.php
 delete mode 100644 module/Application/src/Application/Form/AssocierPoste/AssocierPosteFormAwareTrait.php
 delete mode 100644 module/Application/src/Application/Form/AssocierPoste/AssocierPosteFormFactory.php
 delete mode 100644 module/Application/src/Application/Form/AssocierPoste/AssocierPosteHydrator.php
 delete mode 100644 module/Application/src/Application/Form/AssocierPoste/AssocierPosteHydratorFactory.php
 delete mode 100644 module/Application/src/Application/Form/Expertise/ExpertiseFormAwareTrait.php
 delete mode 100644 module/Application/src/Application/Form/Poste/PosteFormAwareTrait.php
 delete mode 100644 module/Application/src/Application/Service/Expertise/ExpertiseServiceAwareTrait.php
 rename module/Application/view/{application => }/default/confirmation.phtml (100%)
 rename module/Application/view/{application => }/default/default-form.phtml (100%)
 rename module/Application/view/{application => }/default/probleme.phtml (100%)
 rename module/Application/view/{application => }/default/reponse.phtml (100%)
 create mode 100755 module/FichePoste/Module.php
 create mode 100644 module/FichePoste/config/example.php
 create mode 100644 module/FichePoste/config/merged/expertise.config.php
 rename module/{Application => FichePoste}/config/merged/fiche-poste.config.php (83%)
 create mode 100644 module/FichePoste/config/merged/poste.config.php
 create mode 100755 module/FichePoste/config/module.config.php
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Assertion/FichePosteAssertion.php (97%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Assertion/FichePosteAssertionFactory.php (75%)
 create mode 100644 module/FichePoste/src/FichePoste/Controller/ExpertiseController.php
 create mode 100644 module/FichePoste/src/FichePoste/Controller/ExpertiseControllerFactory.php
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Controller/FichePosteController.php (87%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Controller/FichePosteControllerFactory.php (91%)
 create mode 100644 module/FichePoste/src/FichePoste/Controller/PosteController.php
 create mode 100644 module/FichePoste/src/FichePoste/Controller/PosteControllerFactory.php
 create mode 100644 module/FichePoste/src/FichePoste/Entity/Db/Expertise.php
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Entity/Db/FichePoste.php (55%)
 rename module/{Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Expertise.dcm.xml => FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.Expertise.dcm.xml} (91%)
 rename module/{Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FichePoste.dcm.xml => FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.FichePoste.dcm.xml} (92%)
 rename module/{Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Poste.dcm.xml => FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.Poste.dcm.xml} (91%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Entity/Db/Poste.php (97%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Form/Expertise/ExpertiseForm.php (66%)
 create mode 100644 module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseFormAwareTrait.php
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Form/Expertise/ExpertiseFormFactory.php (58%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Form/Expertise/ExpertiseHydrator.php (82%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Form/Expertise/ExpertiseHydratorFactory.php (53%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Form/Poste/PosteForm.php (98%)
 create mode 100644 module/FichePoste/src/FichePoste/Form/Poste/PosteFormAwareTrait.php
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Form/Poste/PosteFormFactory.php (95%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Form/Poste/PosteHydrator.php (94%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Form/Poste/PosteHydratorFactory.php (87%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Provider/Privilege/FichePostePrivileges.php (96%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Service/Expertise/ExpertiseService.php (80%)
 create mode 100644 module/FichePoste/src/FichePoste/Service/Expertise/ExpertiseServiceAwareTrait.php
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Service/Expertise/ExpertiseServiceFactory.php (72%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Service/FichePoste/FichePosteService.php (99%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Service/FichePoste/FichePosteServiceAwareTrait.php (92%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Service/FichePoste/FichePosteServiceFactory.php (83%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Service/Poste/PosteService.php (96%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Service/Poste/PosteServiceAwareTrait.php (89%)
 rename module/{Application/src/Application => FichePoste/src/FichePoste}/Service/Poste/PosteServiceFactory.php (94%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/action.phtml (92%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/afficher.phtml (97%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/ajouter-fiche-metier.phtml (95%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/associer-agent.phtml (91%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/dupliquer.phtml (94%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/editer-specificite.phtml (100%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/editer.phtml (69%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/index.phtml (94%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/modifier-repartition.phtml (92%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/applications.phtml (89%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/competences.phtml (89%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/environnement-poste.phtml (94%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/expertise.phtml (78%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/formations.phtml (92%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/informations-poste.phtml (92%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/intitule.phtml (93%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/parcours-de-formation.phtml (96%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/retour-structure.phtml (100%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/rifseep.phtml (88%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/specificite.phtml (86%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/partial/validations.phtml (88%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/selectionner-activite.phtml (100%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/selectionner-applications-retirees.phtml (87%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/selectionner-competences-retirees.phtml (90%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/selectionner-descriptions-retirees.phtml (92%)
 rename module/{Application/view/application => FichePoste/view/fiche-poste}/fiche-poste/selectionner-formations-retirees.phtml (86%)

diff --git a/config/application.config.php b/config/application.config.php
index 42e03dd2a..44852f4e6 100755
--- a/config/application.config.php
+++ b/config/application.config.php
@@ -51,6 +51,7 @@ $modules = [
     'Formation',
     'Fichier',
     'Element',
+    'FichePoste',
     'Application',
 
     'Laminas\DeveloperTools',
diff --git a/module/Application/config/merged/specificite.config.php b/module/Application/config/merged/specificite.config.php
index c432b0883..2c3ac9996 100644
--- a/module/Application/config/merged/specificite.config.php
+++ b/module/Application/config/merged/specificite.config.php
@@ -4,13 +4,13 @@ namespace Application;
 
 use Application\Controller\SpecificiteController;
 use Application\Controller\SpecificiteControllerFactory;
-use Application\Provider\Privilege\FichePostePrivileges;
 use Application\Service\SpecificiteActivite\SpecificiteActiviteService;
 use Application\Service\SpecificiteActivite\SpecificiteActiviteServiceFactory;
 use Application\View\Helper\SpecificiteActiviteViewHelper;
-use UnicaenPrivilege\Guard\PrivilegeController;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 use Laminas\Router\Http\Literal;
 use Laminas\Router\Http\Segment;
+use UnicaenPrivilege\Guard\PrivilegeController;
 
 return [
     'bjyauthorize' => [
diff --git a/module/Application/config/module.config.php b/module/Application/config/module.config.php
index 2ce2e1e96..23490f104 100755
--- a/module/Application/config/module.config.php
+++ b/module/Application/config/module.config.php
@@ -9,14 +9,11 @@ use Application\Form\ModifierLibelle\ModifierLibelleForm;
 use Application\Form\ModifierLibelle\ModifierLibelleFormFactory;
 use Application\Form\ModifierLibelle\ModifierLibelleHydrator;
 use Application\Provider\Privilege\ActivitePrivileges;
-use Application\Provider\Privilege\AdministrationPrivileges;
 use Application\Provider\Privilege\AgentPrivileges;
 use Application\Provider\Privilege\ConfigurationPrivileges;
 use Application\Provider\Privilege\FicheMetierPrivileges;
-use Application\Provider\Privilege\FichePostePrivileges;
 use Application\Provider\Privilege\MissionspecifiqueaffectationPrivileges;
 use Application\Provider\Privilege\MissionspecifiquePrivileges;
-use Application\Provider\Privilege\PostePrivileges;
 use Application\Provider\Privilege\SynchroPrivileges;
 use Application\Provider\Privilege\ValidationPrivileges;
 use Application\Provider\Role\RoleProvider;
@@ -34,7 +31,9 @@ use Carriere\Provider\Privilege\CorpsPrivileges;
 use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain;
 use Doctrine\ORM\Mapping\Driver\XmlDriver;
 use EntretienProfessionnel\Provider\Privilege\EntretienproPrivileges;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 use Formation\Provider\Privilege\FormationPrivileges;
+use Laminas\Router\Http\Literal;
 use Metier\Provider\Privilege\MetierPrivileges;
 use Structure\Provider\Privilege\StructurePrivileges;
 use UnicaenAutoform\Provider\Privilege\IndexPrivileges;
@@ -43,7 +42,6 @@ use UnicaenPrivilege\Provider\Privilege\PrivilegePrivileges;
 use UnicaenUtilisateur\Provider\Privilege\RolePrivileges;
 use UnicaenUtilisateur\Provider\Privilege\UtilisateurPrivileges;
 use UnicaenValidation\Provider\Privilege\ValidationtypePrivileges;
-use Laminas\Router\Http\Literal;
 
 return [
     'bjyauthorize' => [
diff --git a/module/Application/src/Application/Controller/AgentController.php b/module/Application/src/Application/Controller/AgentController.php
index 0c47e4288..d73aba715 100644
--- a/module/Application/src/Application/Controller/AgentController.php
+++ b/module/Application/src/Application/Controller/AgentController.php
@@ -13,9 +13,7 @@ use Application\Service\AgentQuotite\AgentQuotiteServiceAwareTrait;
 use Application\Service\AgentStageObservation\AgentStageObservationServiceAwareTrait;
 use Application\Service\AgentStatut\AgentStatutServiceAwareTrait;
 use Application\Service\AgentTutorat\AgentTutoratServiceAwareTrait;
-use Application\Service\FichePoste\FichePosteServiceAwareTrait;
 use Application\Service\ParcoursDeFormation\ParcoursDeFormationServiceAwareTrait;
-use Carriere\Provider\Parametre\CarriereParametres;
 use Carriere\Service\Categorie\CategorieServiceAwareTrait;
 use Doctrine\ORM\ORMException;
 use Element\Entity\Db\ApplicationElement;
@@ -28,6 +26,7 @@ use Element\Service\CompetenceElement\CompetenceElementServiceAwareTrait;
 use Element\Service\HasApplicationCollection\HasApplicationCollectionServiceAwareTrait;
 use Element\Service\HasCompetenceCollection\HasCompetenceCollectionServiceAwareTrait;
 use EntretienProfessionnel\Service\EntretienProfessionnel\EntretienProfessionnelServiceAwareTrait;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
 use Fichier\Entity\Db\Fichier;
 use Fichier\Form\Upload\UploadFormAwareTrait;
 use Fichier\Service\Fichier\FichierServiceAwareTrait;
diff --git a/module/Application/src/Application/Controller/AgentControllerFactory.php b/module/Application/src/Application/Controller/AgentControllerFactory.php
index 6331db2ec..a65ec1f63 100644
--- a/module/Application/src/Application/Controller/AgentControllerFactory.php
+++ b/module/Application/src/Application/Controller/AgentControllerFactory.php
@@ -12,7 +12,6 @@ use Application\Service\AgentQuotite\AgentQuotiteService;
 use Application\Service\AgentStageObservation\AgentStageObservationService;
 use Application\Service\AgentStatut\AgentStatutService;
 use Application\Service\AgentTutorat\AgentTutoratService;
-use Application\Service\FichePoste\FichePosteService;
 use Application\Service\ParcoursDeFormation\ParcoursDeFormationService;
 use Carriere\Service\Categorie\CategorieService;
 use Element\Form\ApplicationElement\ApplicationElementForm;
@@ -23,6 +22,7 @@ use Element\Service\CompetenceElement\CompetenceElementService;
 use Element\Service\HasApplicationCollection\HasApplicationCollectionService;
 use Element\Service\HasCompetenceCollection\HasCompetenceCollectionService;
 use EntretienProfessionnel\Service\EntretienProfessionnel\EntretienProfessionnelService;
+use FichePoste\Service\FichePoste\FichePosteService;
 use Fichier\Form\Upload\UploadForm;
 use Fichier\Service\Fichier\FichierService;
 use Fichier\Service\Nature\NatureService;
diff --git a/module/Application/src/Application/Controller/FicheProfilController.php b/module/Application/src/Application/Controller/FicheProfilController.php
index a891e7927..ff6c537f0 100644
--- a/module/Application/src/Application/Controller/FicheProfilController.php
+++ b/module/Application/src/Application/Controller/FicheProfilController.php
@@ -5,15 +5,15 @@ namespace Application\Controller;
 use Application\Entity\Db\FicheProfil;
 use Application\Form\FicheProfil\FicheProfilFormAwareTrait;
 use Application\Provider\Template\PdfTemplate;
-use Application\Service\FichePoste\FichePosteServiceAwareTrait;
 use Application\Service\FicheProfil\FicheProfilServiceAwareTrait;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
+use Laminas\Http\Request;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\View\Model\ViewModel;
 use Structure\Service\Structure\StructureServiceAwareTrait;
 use UnicaenParametre\Service\Parametre\ParametreServiceAwareTrait;
 use UnicaenPdf\Exporter\PdfExporter;
 use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait;
-use Laminas\Http\Request;
-use Laminas\Mvc\Controller\AbstractActionController;
-use Laminas\View\Model\ViewModel;
 
 class FicheProfilController extends AbstractActionController {
     use RenduServiceAwareTrait;
diff --git a/module/Application/src/Application/Controller/FicheProfilControllerFactory.php b/module/Application/src/Application/Controller/FicheProfilControllerFactory.php
index c35c2b0a5..14b690f1f 100644
--- a/module/Application/src/Application/Controller/FicheProfilControllerFactory.php
+++ b/module/Application/src/Application/Controller/FicheProfilControllerFactory.php
@@ -3,8 +3,8 @@
 namespace Application\Controller;
 
 use Application\Form\FicheProfil\FicheProfilForm;
-use Application\Service\FichePoste\FichePosteService;
 use Application\Service\FicheProfil\FicheProfilService;
+use FichePoste\Service\FichePoste\FichePosteService;
 use Interop\Container\ContainerInterface;
 use Structure\Service\Structure\StructureService;
 use UnicaenParametre\Service\Parametre\ParametreService;
diff --git a/module/Application/src/Application/Controller/IndexController.php b/module/Application/src/Application/Controller/IndexController.php
index 821352958..60edf2027 100755
--- a/module/Application/src/Application/Controller/IndexController.php
+++ b/module/Application/src/Application/Controller/IndexController.php
@@ -2,15 +2,17 @@
 
 namespace Application\Controller;
 
-use Application\Provider\Role\RoleProvider as AppRoleProvider;
 use Application\Entity\Db\Agent;
+use Application\Provider\Role\RoleProvider as AppRoleProvider;
 use Application\Service\Agent\AgentServiceAwareTrait;
-use Application\Service\FichePoste\FichePosteServiceAwareTrait;
 use EntretienProfessionnel\Provider\Role\EntretienProfessionnelRoles;
 use EntretienProfessionnel\Service\Campagne\CampagneServiceAwareTrait;
 use EntretienProfessionnel\Service\EntretienProfessionnel\EntretienProfessionnelServiceAwareTrait;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
 use Formation\Service\DemandeExterne\DemandeExterneServiceAwareTrait;
 use Formation\Service\FormationInstanceInscrit\FormationInstanceInscritServiceAwareTrait;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\View\Model\ViewModel;
 use Structure\Provider\Role\RoleProvider;
 use Structure\Service\Structure\StructureServiceAwareTrait;
 use UnicaenAuthentification\Service\Traits\UserContextServiceAwareTrait;
@@ -18,8 +20,6 @@ use UnicaenUtilisateur\Entity\Db\Role;
 use UnicaenUtilisateur\Entity\Db\User;
 use UnicaenUtilisateur\Service\Role\RoleServiceAwareTrait;
 use UnicaenUtilisateur\Service\User\UserServiceAwareTrait;
-use Laminas\Mvc\Controller\AbstractActionController;
-use Laminas\View\Model\ViewModel;
 
 class IndexController extends AbstractActionController
 {
diff --git a/module/Application/src/Application/Controller/IndexControllerFactory.php b/module/Application/src/Application/Controller/IndexControllerFactory.php
index 40765a7e9..6f9c4c780 100644
--- a/module/Application/src/Application/Controller/IndexControllerFactory.php
+++ b/module/Application/src/Application/Controller/IndexControllerFactory.php
@@ -3,9 +3,9 @@
 namespace Application\Controller;
 
 use Application\Service\Agent\AgentService;
-use Application\Service\FichePoste\FichePosteService;
 use EntretienProfessionnel\Service\Campagne\CampagneService;
 use EntretienProfessionnel\Service\EntretienProfessionnel\EntretienProfessionnelService;
+use FichePoste\Service\FichePoste\FichePosteService;
 use Formation\Service\DemandeExterne\DemandeExterneService;
 use Formation\Service\FormationInstanceInscrit\FormationInstanceInscritService;
 use Interop\Container\ContainerInterface;
diff --git a/module/Application/src/Application/Controller/SpecificiteController.php b/module/Application/src/Application/Controller/SpecificiteController.php
index 53526bad4..60992b75f 100644
--- a/module/Application/src/Application/Controller/SpecificiteController.php
+++ b/module/Application/src/Application/Controller/SpecificiteController.php
@@ -5,9 +5,9 @@ namespace Application\Controller;
 use Application\Entity\Db\SpecificiteActivite;
 use Application\Entity\Db\SpecificitePoste;
 use Application\Service\Activite\ActiviteServiceAwareTrait;
-use Application\Service\FichePoste\FichePosteServiceAwareTrait;
 use Application\Service\SpecificiteActivite\SpecificiteActiviteServiceAwareTrait;
 use Application\Service\SpecificitePoste\SpecificitePosteServiceAwareTrait;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
 use Laminas\Http\Response;
 use Laminas\Mvc\Controller\AbstractActionController;
 use Laminas\View\Model\ViewModel;
diff --git a/module/Application/src/Application/Controller/SpecificiteControllerFactory.php b/module/Application/src/Application/Controller/SpecificiteControllerFactory.php
index e8001d503..6b4d08e93 100644
--- a/module/Application/src/Application/Controller/SpecificiteControllerFactory.php
+++ b/module/Application/src/Application/Controller/SpecificiteControllerFactory.php
@@ -2,11 +2,10 @@
 
 namespace Application\Controller;
 
-use Application\Entity\Db\Activite;
 use Application\Service\Activite\ActiviteService;
-use Application\Service\FichePoste\FichePosteService;
 use Application\Service\SpecificiteActivite\SpecificiteActiviteService;
 use Application\Service\SpecificitePoste\SpecificitePosteService;
+use FichePoste\Service\FichePoste\FichePosteService;
 use Interop\Container\ContainerInterface;
 
 class SpecificiteControllerFactory {
diff --git a/module/Application/src/Application/Entity/Db/Activite.php b/module/Application/src/Application/Entity/Db/Activite.php
index cf519ee1e..7690d5c78 100644
--- a/module/Application/src/Application/Entity/Db/Activite.php
+++ b/module/Application/src/Application/Entity/Db/Activite.php
@@ -3,6 +3,7 @@
 namespace Application\Entity\Db;
 
 use Carriere\Entity\Db\NiveauEnveloppe;
+use DateTime;
 use Element\Entity\Db\Interfaces\HasApplicationCollectionInterface;
 use Element\Entity\Db\Interfaces\HasCompetenceCollectionInterface;
 use Element\Entity\Db\Traits\HasApplicationCollectionTrait;
@@ -101,7 +102,7 @@ class Activite implements HistoriqueAwareInterface,
     /**
      * @return ActiviteDescription[]
      */
-    public function getDescriptions() : array
+    public function getDescriptions(?DateTime $date = null) : array
     {
         $descriptions = [];
         /** @var ActiviteDescription $activiteDescription */
diff --git a/module/Application/src/Application/Entity/Db/Agent.php b/module/Application/src/Application/Entity/Db/Agent.php
index 2f2002f89..b6a88c50e 100644
--- a/module/Application/src/Application/Entity/Db/Agent.php
+++ b/module/Application/src/Application/Entity/Db/Agent.php
@@ -2,31 +2,32 @@
 
 namespace Application\Entity\Db;
 
-use Application\Provider\Etat\FichePosteEtats;
-use Carriere\Entity\Db\NiveauEnveloppe;
-use Doctrine\Common\Comparable;
-use Element\Entity\Db\Interfaces\HasApplicationCollectionInterface;
-use Element\Entity\Db\Interfaces\HasCompetenceCollectionInterface;
 use Application\Entity\Db\Interfaces\HasComplementsInterface;
 use Application\Entity\Db\MacroContent\AgentMacroTrait;
 use Application\Entity\Db\Traits\DbImportableAwareTrait;
-use Element\Entity\Db\Traits\HasApplicationCollectionTrait;
-use Element\Entity\Db\Traits\HasCompetenceCollectionTrait;
 use Application\Entity\Db\Traits\HasComplementsTrait;
+use Application\Provider\Etat\FichePosteEtats;
 use Application\Service\Agent\AgentServiceAwareTrait;
+use Carriere\Entity\Db\NiveauEnveloppe;
 use DateInterval;
 use DateTime;
 use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Comparable;
+use Element\Entity\Db\Interfaces\HasApplicationCollectionInterface;
+use Element\Entity\Db\Interfaces\HasCompetenceCollectionInterface;
+use Element\Entity\Db\Traits\HasApplicationCollectionTrait;
+use Element\Entity\Db\Traits\HasCompetenceCollectionTrait;
 use EntretienProfessionnel\Entity\Db\Campagne;
 use EntretienProfessionnel\Entity\Db\EntretienProfessionnel;
 use Exception;
+use FichePoste\Entity\Db\FichePoste;
 use Fichier\Entity\Db\Fichier;
 use Formation\Entity\Db\Interfaces\HasFormationCollectionInterface;
 use Formation\Entity\Db\Traits\HasFormationCollectionTrait;
+use Laminas\Permissions\Acl\Resource\ResourceInterface;
 use Structure\Entity\Db\Structure;
 use Structure\Entity\Db\StructureAgentForce;
 use UnicaenUtilisateur\Entity\Db\User;
-use Laminas\Permissions\Acl\Resource\ResourceInterface;
 
 class Agent implements
     ResourceInterface,
diff --git a/module/Application/src/Application/Entity/Db/Expertise.php b/module/Application/src/Application/Entity/Db/Expertise.php
deleted file mode 100644
index a58e7bfe8..000000000
--- a/module/Application/src/Application/Entity/Db/Expertise.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-namespace Application\Entity\Db;
-
-
-use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
-use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
-
-class Expertise implements HistoriqueAwareInterface {
-    use HistoriqueAwareTrait;
-
-    /** @var integer */
-    private $id;
-    /** @var FichePoste */
-    private $ficheposte;
-    /** @var string */
-    private $libelle;
-    /** @var string */
-    private $description;
-
-    /**
-     * @return int
-     */
-    public function getId()
-    {
-        return $this->id;
-    }
-
-    /**
-     * @return FichePoste
-     */
-    public function getFicheposte()
-    {
-        return $this->ficheposte;
-    }
-
-    /**
-     * @param FichePoste $ficheposte
-     * @return Expertise
-     */
-    public function setFicheposte($ficheposte)
-    {
-        $this->ficheposte = $ficheposte;
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getLibelle()
-    {
-        return $this->libelle;
-    }
-
-    /**
-     * @param string $libelle
-     * @return Expertise
-     */
-    public function setLibelle($libelle)
-    {
-        $this->libelle = $libelle;
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getDescription()
-    {
-        return $this->description;
-    }
-
-    /**
-     * @param string $description
-     * @return Expertise
-     */
-    public function setDescription($description)
-    {
-        $this->description = $description;
-        return $this;
-    }
-}
diff --git a/module/Application/src/Application/Entity/Db/FicheposteActiviteDescriptionRetiree.php b/module/Application/src/Application/Entity/Db/FicheposteActiviteDescriptionRetiree.php
index 55f183d95..96d46e788 100644
--- a/module/Application/src/Application/Entity/Db/FicheposteActiviteDescriptionRetiree.php
+++ b/module/Application/src/Application/Entity/Db/FicheposteActiviteDescriptionRetiree.php
@@ -2,6 +2,7 @@
 
 namespace Application\Entity\Db;
 
+use FichePoste\Entity\Db\FichePoste;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
 
diff --git a/module/Application/src/Application/Entity/Db/FicheposteApplicationRetiree.php b/module/Application/src/Application/Entity/Db/FicheposteApplicationRetiree.php
index 60eb61d86..57c1fe881 100644
--- a/module/Application/src/Application/Entity/Db/FicheposteApplicationRetiree.php
+++ b/module/Application/src/Application/Entity/Db/FicheposteApplicationRetiree.php
@@ -3,6 +3,7 @@
 namespace Application\Entity\Db;
 
 use Element\Entity\Db\Application;
+use FichePoste\Entity\Db\FichePoste;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
 
diff --git a/module/Application/src/Application/Entity/Db/FicheposteCompetenceRetiree.php b/module/Application/src/Application/Entity/Db/FicheposteCompetenceRetiree.php
index 1ae893e69..c0c77f773 100644
--- a/module/Application/src/Application/Entity/Db/FicheposteCompetenceRetiree.php
+++ b/module/Application/src/Application/Entity/Db/FicheposteCompetenceRetiree.php
@@ -2,6 +2,7 @@
 
 namespace Application\Entity\Db;
 
+use FichePoste\Entity\Db\FichePoste;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
 
diff --git a/module/Application/src/Application/Entity/Db/MacroContent/FicheMetierMacroTrait.php b/module/Application/src/Application/Entity/Db/MacroContent/FicheMetierMacroTrait.php
index ae78bdb88..54baa39c2 100644
--- a/module/Application/src/Application/Entity/Db/MacroContent/FicheMetierMacroTrait.php
+++ b/module/Application/src/Application/Entity/Db/MacroContent/FicheMetierMacroTrait.php
@@ -2,6 +2,6 @@
 
 namespace Application\Entity\Db\MacroContent;
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 trait FicheMetierMacroTrait {}
\ No newline at end of file
diff --git a/module/Application/src/Application/Entity/Db/MacroContent/FichePosteMacroTrait.php b/module/Application/src/Application/Entity/Db/MacroContent/FichePosteMacroTrait.php
index c7dfb6480..9a0ce3585 100644
--- a/module/Application/src/Application/Entity/Db/MacroContent/FichePosteMacroTrait.php
+++ b/module/Application/src/Application/Entity/Db/MacroContent/FichePosteMacroTrait.php
@@ -2,7 +2,7 @@
 
 namespace Application\Entity\Db\MacroContent;
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Entity\Db\ParcoursDeFormation;
 use Element\Entity\Db\CompetenceType;
 use Formation\Entity\Db\Formation;
@@ -280,7 +280,7 @@ trait FichePosteMacroTrait {
     {
         /** @var FichePoste $ficheposte */
         $ficheposte = $this;
-        $descriptionsRetirees = array_map(function ($a) { return $a->getDescription()->getId(); }, $ficheposte->getDescriptionsRetirees()->toArray());
+        $descriptionsRetirees = array_map(function ($a) { return $a->getDescription()->getId(); }, $ficheposte->getDescriptionsRetirees());
 
         $texte = "";
         foreach ($ficheposte->getFichesMetiers() as $ficheTypeExterne) {
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Agent.dcm.xml b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Agent.dcm.xml
index f31c3c06b..2610c3acb 100644
--- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Agent.dcm.xml
+++ b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Agent.dcm.xml
@@ -24,7 +24,7 @@
             <join-column name="utilisateur_id" referenced-column-name="ID" />
         </one-to-one>
 
-        <one-to-many target-entity="Application\Entity\Db\FichePoste" mapped-by="agent" field="fiches" />
+        <one-to-many target-entity="FichePoste\Entity\Db\FichePoste" mapped-by="agent" field="fiches" />
         <one-to-many target-entity="Application\Entity\Db\AgentMissionSpecifique" mapped-by="agent" field="missionsSpecifiques"/>
 
         <many-to-many field="applications" target-entity="Element\Entity\Db\ApplicationElement">
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheProfil.dcm.xml b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheProfil.dcm.xml
index 6ab4754d5..5a9f252a8 100644
--- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheProfil.dcm.xml
+++ b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheProfil.dcm.xml
@@ -8,7 +8,7 @@
 
         <field name="vancanceEmploi"        column="vacance_emploi"         type="boolean"                  nullable="false"/>
 
-        <many-to-one field="ficheposte" target-entity="Application\Entity\Db\FichePoste">
+        <many-to-one field="ficheposte" target-entity="FichePoste\Entity\Db\FichePoste">
             <join-column name="ficheposte_id" referenced-column-name="id" />
         </many-to-one>
         <many-to-one field="structure" target-entity="Structure\Entity\Db\Structure">
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheTypeExterne.dcm.xml b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheTypeExterne.dcm.xml
index 5ff9fe981..26cf354ee 100644
--- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheTypeExterne.dcm.xml
+++ b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheTypeExterne.dcm.xml
@@ -6,7 +6,7 @@
             <generator strategy="IDENTITY"/>
         </id>
 
-        <many-to-one target-entity="Application\Entity\Db\FichePoste"  field="fichePoste">
+        <many-to-one target-entity="FichePoste\Entity\Db\FichePoste"  field="fichePoste">
             <join-column name="fiche_poste" referenced-column-name="id"/>
         </many-to-one>
 
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteActiviteDescriptionRetiree.dcm.xml b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteActiviteDescriptionRetiree.dcm.xml
index 35116c5b0..0a3b64e9e 100644
--- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteActiviteDescriptionRetiree.dcm.xml
+++ b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteActiviteDescriptionRetiree.dcm.xml
@@ -6,7 +6,7 @@
             <generator strategy="IDENTITY"/>
         </id>
 
-        <many-to-one target-entity="Application\Entity\Db\FichePoste"  field="fichePoste">
+        <many-to-one target-entity="FichePoste\Entity\Db\FichePoste"  field="fichePoste">
             <join-column name="ficheposte_id" referenced-column-name="id"/>
         </many-to-one>
         <many-to-one target-entity="Application\Entity\Db\FicheMetier"  field="ficheMetier">
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteApplicationRetiree.dcm.xml b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteApplicationRetiree.dcm.xml
index ec3e002db..78d9a62b1 100644
--- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteApplicationRetiree.dcm.xml
+++ b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteApplicationRetiree.dcm.xml
@@ -6,7 +6,7 @@
             <generator strategy="IDENTITY"/>
         </id>
 
-        <many-to-one target-entity="Application\Entity\Db\FichePoste"  field="fichePoste">
+        <many-to-one target-entity="FichePoste\Entity\Db\FichePoste"  field="fichePoste">
             <join-column name="ficheposte_id" referenced-column-name="id"/>
         </many-to-one>
         <many-to-one target-entity="Element\Entity\Db\Application"  field="application">
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteCompetenceRetiree.dcm.xml b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteCompetenceRetiree.dcm.xml
index 7a7477181..d04d87aa7 100644
--- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteCompetenceRetiree.dcm.xml
+++ b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FicheposteCompetenceRetiree.dcm.xml
@@ -6,7 +6,7 @@
             <generator strategy="IDENTITY"/>
         </id>
 
-        <many-to-one target-entity="Application\Entity\Db\FichePoste"  field="fichePoste">
+        <many-to-one target-entity="FichePoste\Entity\Db\FichePoste"  field="fichePoste">
             <join-column name="ficheposte_id" referenced-column-name="id"/>
         </many-to-one>
         <many-to-one target-entity="Element\Entity\Db\Competence"  field="competence">
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.SpecificitePoste.dcm.xml b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.SpecificitePoste.dcm.xml
index 535277680..a9912d2e1 100644
--- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.SpecificitePoste.dcm.xml
+++ b/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.SpecificitePoste.dcm.xml
@@ -6,7 +6,7 @@
             <generator strategy="IDENTITY"/>
         </id>
 
-        <one-to-one field="fiche" target-entity="Application\Entity\Db\FichePoste">
+        <one-to-one field="fiche" target-entity="FichePoste\Entity\Db\FichePoste">
             <join-column name="ficheposte_id" referenced-column-name="id" />
         </one-to-one>
         <one-to-many field="activites" target-entity="Application\Entity\Db\SpecificiteActivite" mapped-by="specificite" />
diff --git a/module/Application/src/Application/Form/AssocierPoste/AssocierPosteForm.php b/module/Application/src/Application/Form/AssocierPoste/AssocierPosteForm.php
deleted file mode 100644
index b1d5d567b..000000000
--- a/module/Application/src/Application/Form/AssocierPoste/AssocierPosteForm.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-namespace Application\Form\AssocierPoste;
-
-use Application\Service\Poste\PosteServiceAwareTrait;
-use Structure\Entity\Db\Structure;
-use UnicaenApp\Service\EntityManagerAwareTrait;
-use Laminas\Form\Element\Button;
-use Laminas\Form\Element\Select;
-use Laminas\Form\Form;
-use Laminas\InputFilter\Factory;
-
-class AssocierPosteForm extends Form {
-    use EntityManagerAwareTrait;
-    use PosteServiceAwareTrait;
-
-    public function init()
-    {
-        //Selection obligatoire AFFECTATION
-        $this->add([
-            'type' => Select::class,
-            'name' => 'poste',
-            'options' => [
-                'label' => "Poste :",
-                'empty_option' => "Sélectionner un poste ...",
-                'value_options' => $this->generateSelectOptions(),
-            ],
-            'attributes' => [
-                'id' => 'poste',
-                'class'             => 'bootstrap-selectpicker show-tick',
-                'data-live-search'  => 'true',
-            ],
-        ]);
-
-//        submit
-        $this->add([
-            'type' => Button::class,
-            'name' => 'creer',
-            'options' => [
-                'label' => '<i class="fas fa-save"></i> Associer le poste',
-                'label_options' => [
-                    'disable_html_escape' => true,
-                ],
-            ],
-            'attributes' => [
-                'type' => 'submit',
-                'class' => 'btn btn-primary',
-            ],
-        ]);
-
-        $this->setInputFilter((new Factory())->createInputFilter([
-            'poste' => [
-                'name' => 'poste',
-                'required' => false,
-            ],
-        ]));
-    }
-
-    private function generateSelectOptions()
-    {
-        $postes = $this->getPosteService()->getPostes();
-        $options = [];
-        foreach ($postes as $poste) {
-            if ($poste->getFichePoste() === NULL) {
-                $options[$poste->getId()] = $poste->getNumeroPoste() . " - " . $poste->getDomaine()->getLibelle() . " - " . $poste->getStructure()->getLibelleCourt();
-            }
-        }
-        return $options;
-    }
-
-    /**
-     * @param Structure $structure
-     * @param boolean $sousstructure
-     * @return AssocierPosteForm
-     */
-    public function reinitWithStructure($structure, $sousstructure = false)
-    {
-        //agent
-        $postes = $this->getPosteService()->getPostesByStructure($structure, $sousstructure, true);
-        $posteOptions = [];
-        foreach ($postes as $poste) {
-            $posteOptions[$poste->getId()] = $poste->getNumeroPoste() . " - ". $poste->getDomaine()->getLibelle() . " - ".$poste->getStructure()->getLibelleCourt();
-        }
-        /** @var Select $this->get('agent') */
-        $this->get('poste')->setValueOptions($posteOptions);
-
-        return $this;
-    }
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Form/AssocierPoste/AssocierPosteFormAwareTrait.php b/module/Application/src/Application/Form/AssocierPoste/AssocierPosteFormAwareTrait.php
deleted file mode 100644
index 81919c92d..000000000
--- a/module/Application/src/Application/Form/AssocierPoste/AssocierPosteFormAwareTrait.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace Application\Form\AssocierPoste;
-
-trait AssocierPosteFormAwareTrait {
-
-    /**  @var AssocierPosteForm $associerPosteForm */
-    private $associerPosteForm;
-
-    /**
-     * @return AssocierPosteForm
-     */
-    public function getAssocierPosteForm()
-    {
-        return $this->associerPosteForm;
-    }
-
-    /**
-     * @param AssocierPosteForm $associerPosteForm
-     * @return AssocierPosteForm
-     */
-    public function setAssocierPosteForm($associerPosteForm)
-    {
-        $this->associerPosteForm = $associerPosteForm;
-        return $this->associerPosteForm;
-    }
-
-
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Form/AssocierPoste/AssocierPosteFormFactory.php b/module/Application/src/Application/Form/AssocierPoste/AssocierPosteFormFactory.php
deleted file mode 100644
index 4302888d3..000000000
--- a/module/Application/src/Application/Form/AssocierPoste/AssocierPosteFormFactory.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace Application\Form\AssocierPoste;
-
-use Application\Service\Poste\PosteService;
-use Doctrine\ORM\EntityManager;
-use Interop\Container\ContainerInterface;
-
-class AssocierPosteFormFactory {
-
-    public function __invoke(ContainerInterface $container)
-    {
-        /** @var AssocierPosteHydrator $hydrator */
-        $hydrator = $container->get('HydratorManager')->get(AssocierPosteHydrator::class);
-
-        /**
-         * @var EntityManager $entityManager
-         * @var PosteService $posteService
-         */
-        $entityManager = $container->get('doctrine.entitymanager.orm_default');
-        $posteService = $container->get(PosteService::class);
-
-        /** @var AssocierPosteForm $form */
-        $form = new AssocierPosteForm();
-        $form->setEntityManager($entityManager);
-        $form->setPosteService($posteService);
-
-        $form->setHydrator($hydrator);
-        $form->init();
-
-
-        return $form;
-    }
-
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Form/AssocierPoste/AssocierPosteHydrator.php b/module/Application/src/Application/Form/AssocierPoste/AssocierPosteHydrator.php
deleted file mode 100644
index 511598083..000000000
--- a/module/Application/src/Application/Form/AssocierPoste/AssocierPosteHydrator.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-namespace Application\Form\AssocierPoste;
-
-use Application\Entity\Db\FichePoste;
-use Application\Service\Poste\PosteServiceAwareTrait;
-use Laminas\Hydrator\HydratorInterface;
-
-;
-
-class AssocierPosteHydrator implements HydratorInterface {
-    use PosteServiceAwareTrait;
-
-    /**
-     * @param FichePoste $object
-     * @return array
-     */
-    public function extract($object): array
-    {
-        return [
-            'poste' => ($object->getPoste())?$object->getPoste()->getId():0,
-        ];
-    }
-
-    /**
-     * @param FichePoste $object
-     * @param array $data
-     * @return FichePoste
-     */
-    public function hydrate(array $data, $object)
-    {
-        $metierType = null;
-        if ($data['poste'] !== null AND $data['poste'] !== "") $metierType = $this->getPosteService()->getPoste($data['poste']);
-
-        if ($metierType) {
-            $object->setPoste($metierType);
-        } else {
-            $object->setPoste(null);
-        }
-        return $object;
-    }
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Form/AssocierPoste/AssocierPosteHydratorFactory.php b/module/Application/src/Application/Form/AssocierPoste/AssocierPosteHydratorFactory.php
deleted file mode 100644
index 09daf87bb..000000000
--- a/module/Application/src/Application/Form/AssocierPoste/AssocierPosteHydratorFactory.php
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-namespace Application\Form\AssocierPoste;
-
-use Application\Service\Poste\PosteService;
-use Interop\Container\ContainerInterface;
-
-class AssocierPosteHydratorFactory {
-
-    public function __invoke(ContainerInterface $container)
-    {
-        /** @var PosteService $posteService */
-        $posteService = $container->get(PosteService::class);
-
-        $hydrator = new AssocierPosteHydrator();
-        $hydrator->setPosteService($posteService);
-
-        return $hydrator;
-    }
-
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Form/AssocierTitre/AssocierTitreHydrator.php b/module/Application/src/Application/Form/AssocierTitre/AssocierTitreHydrator.php
index 640163f5d..1ee567e0e 100644
--- a/module/Application/src/Application/Form/AssocierTitre/AssocierTitreHydrator.php
+++ b/module/Application/src/Application/Form/AssocierTitre/AssocierTitreHydrator.php
@@ -2,7 +2,7 @@
 
 namespace Application\Form\AssocierTitre;
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Laminas\Hydrator\HydratorInterface;
 
 class AssocierTitreHydrator implements HydratorInterface {
diff --git a/module/Application/src/Application/Form/Expertise/ExpertiseFormAwareTrait.php b/module/Application/src/Application/Form/Expertise/ExpertiseFormAwareTrait.php
deleted file mode 100644
index 6d2307950..000000000
--- a/module/Application/src/Application/Form/Expertise/ExpertiseFormAwareTrait.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Application\Form\Expertise;
-
-trait ExpertiseFormAwareTrait {
-
-    /** @var ExpertiseForm */
-    private $expertiseForm;
-
-    /**
-     * @return ExpertiseForm
-     */
-    public function getExpertiseForm()
-    {
-        return $this->expertiseForm;
-    }
-
-    /**
-     * @param ExpertiseForm $expertiseForm
-     * @return ExpertiseForm
-     */
-    public function setExpertiseForm($expertiseForm)
-    {
-        $this->expertiseForm = $expertiseForm;
-        return $this->expertiseForm;
-    }
-}
diff --git a/module/Application/src/Application/Form/FicheProfil/FicheProfilForm.php b/module/Application/src/Application/Form/FicheProfil/FicheProfilForm.php
index 34dfb0a52..08b4421d5 100644
--- a/module/Application/src/Application/Form/FicheProfil/FicheProfilForm.php
+++ b/module/Application/src/Application/Form/FicheProfil/FicheProfilForm.php
@@ -2,10 +2,8 @@
 
 namespace Application\Form\FicheProfil;
 
-use Application\Service\FichePoste\FichePosteServiceAwareTrait;
 use DateTime;
-use Structure\Entity\Db\Structure;
-use Structure\Service\Structure\StructureServiceAwareTrait;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
 use Laminas\Form\Element\Button;
 use Laminas\Form\Element\Checkbox;
 use Laminas\Form\Element\Hidden;
@@ -14,6 +12,8 @@ use Laminas\Form\Element\Text;
 use Laminas\Form\Element\Textarea;
 use Laminas\Form\Form;
 use Laminas\InputFilter\Factory;
+use Structure\Entity\Db\Structure;
+use Structure\Service\Structure\StructureServiceAwareTrait;
 
 class FicheProfilForm extends Form {
     use FichePosteServiceAwareTrait;
diff --git a/module/Application/src/Application/Form/FicheProfil/FicheProfilFormFactory.php b/module/Application/src/Application/Form/FicheProfil/FicheProfilFormFactory.php
index 6d4b9ecd7..bac5b465a 100644
--- a/module/Application/src/Application/Form/FicheProfil/FicheProfilFormFactory.php
+++ b/module/Application/src/Application/Form/FicheProfil/FicheProfilFormFactory.php
@@ -2,7 +2,7 @@
 
 namespace Application\Form\FicheProfil;
 
-use Application\Service\FichePoste\FichePosteService;
+use FichePoste\Service\FichePoste\FichePosteService;
 use Interop\Container\ContainerInterface;
 use Structure\Service\Structure\StructureService;
 
diff --git a/module/Application/src/Application/Form/FicheProfil/FicheProfilHydrator.php b/module/Application/src/Application/Form/FicheProfil/FicheProfilHydrator.php
index eb9f57334..73a428aa3 100644
--- a/module/Application/src/Application/Form/FicheProfil/FicheProfilHydrator.php
+++ b/module/Application/src/Application/Form/FicheProfil/FicheProfilHydrator.php
@@ -3,10 +3,10 @@
 namespace Application\Form\FicheProfil;
 
 use Application\Entity\Db\FicheProfil;
-use Application\Service\FichePoste\FichePosteServiceAwareTrait;
 use DateTime;
-use Structure\Service\Structure\StructureServiceAwareTrait;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
 use Laminas\Hydrator\HydratorInterface;
+use Structure\Service\Structure\StructureServiceAwareTrait;
 
 class FicheProfilHydrator implements HydratorInterface {
     use FichePosteServiceAwareTrait;
diff --git a/module/Application/src/Application/Form/FicheProfil/FicheProfilHydratorFactory.php b/module/Application/src/Application/Form/FicheProfil/FicheProfilHydratorFactory.php
index d845adefc..0b679d6e2 100644
--- a/module/Application/src/Application/Form/FicheProfil/FicheProfilHydratorFactory.php
+++ b/module/Application/src/Application/Form/FicheProfil/FicheProfilHydratorFactory.php
@@ -2,7 +2,7 @@
 
 namespace Application\Form\FicheProfil;
 
-use Application\Service\FichePoste\FichePosteService;
+use FichePoste\Service\FichePoste\FichePosteService;
 use Interop\Container\ContainerInterface;
 use Structure\Service\Structure\StructureService;
 
diff --git a/module/Application/src/Application/Form/Poste/PosteFormAwareTrait.php b/module/Application/src/Application/Form/Poste/PosteFormAwareTrait.php
deleted file mode 100644
index 595dfed47..000000000
--- a/module/Application/src/Application/Form/Poste/PosteFormAwareTrait.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace Application\Form\Poste;
-
-trait PosteFormAwareTrait {
-
-    /** @var PosteForm $posteForm */
-    private $posteForm;
-
-    /**
-     * @return PosteForm
-     */
-    public function getPosteForm()
-    {
-        return $this->posteForm;
-    }
-
-    /**
-     * @param PosteForm $posteForm
-     * @return PosteForm
-     */
-    public function setPosteForm($posteForm)
-    {
-        $this->posteForm = $posteForm;
-        return $this->posteForm;
-    }
-
-
-}
diff --git a/module/Application/src/Application/Form/Rifseep/RifseepHydrator.php b/module/Application/src/Application/Form/Rifseep/RifseepHydrator.php
index b11902647..c0250e4c6 100644
--- a/module/Application/src/Application/Form/Rifseep/RifseepHydrator.php
+++ b/module/Application/src/Application/Form/Rifseep/RifseepHydrator.php
@@ -2,7 +2,7 @@
 
 namespace Application\Form\Rifseep;
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Laminas\Hydrator\HydratorInterface;
 
 class RifseepHydrator implements HydratorInterface {
diff --git a/module/Application/src/Application/Service/ActivitesDescriptionsRetirees/ActivitesDescriptionsRetireesService.php b/module/Application/src/Application/Service/ActivitesDescriptionsRetirees/ActivitesDescriptionsRetireesService.php
index 5e0582e48..a51b978a7 100644
--- a/module/Application/src/Application/Service/ActivitesDescriptionsRetirees/ActivitesDescriptionsRetireesService.php
+++ b/module/Application/src/Application/Service/ActivitesDescriptionsRetirees/ActivitesDescriptionsRetireesService.php
@@ -4,7 +4,7 @@ namespace Application\Service\ActivitesDescriptionsRetirees;
 
 use Application\Entity\Db\Activite;
 use Application\Entity\Db\FicheMetier;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Entity\Db\FicheposteActiviteDescriptionRetiree;
 use Doctrine\ORM\ORMException;
 use UnicaenApp\Exception\RuntimeException;
diff --git a/module/Application/src/Application/Service/ApplicationsRetirees/ApplicationsRetireesService.php b/module/Application/src/Application/Service/ApplicationsRetirees/ApplicationsRetireesService.php
index 70791b4e3..af1ac05b3 100644
--- a/module/Application/src/Application/Service/ApplicationsRetirees/ApplicationsRetireesService.php
+++ b/module/Application/src/Application/Service/ApplicationsRetirees/ApplicationsRetireesService.php
@@ -3,7 +3,7 @@
 namespace Application\Service\ApplicationsRetirees;
 
 use Element\Entity\Db\Application;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Entity\Db\FicheposteApplicationRetiree;
 use Doctrine\ORM\NonUniqueResultException;
 use Doctrine\ORM\ORMException;
diff --git a/module/Application/src/Application/Service/CompetencesRetirees/CompetencesRetireesService.php b/module/Application/src/Application/Service/CompetencesRetirees/CompetencesRetireesService.php
index f2a8981e7..6b77cdbae 100644
--- a/module/Application/src/Application/Service/CompetencesRetirees/CompetencesRetireesService.php
+++ b/module/Application/src/Application/Service/CompetencesRetirees/CompetencesRetireesService.php
@@ -2,7 +2,7 @@
 
 namespace Application\Service\CompetencesRetirees;
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Entity\Db\FicheposteCompetenceRetiree;
 use Doctrine\ORM\NonUniqueResultException;
 use Doctrine\ORM\ORMException;
diff --git a/module/Application/src/Application/Service/Expertise/ExpertiseServiceAwareTrait.php b/module/Application/src/Application/Service/Expertise/ExpertiseServiceAwareTrait.php
deleted file mode 100644
index fd93b9ddf..000000000
--- a/module/Application/src/Application/Service/Expertise/ExpertiseServiceAwareTrait.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Application\Service\Expertise;
-
-trait ExpertiseServiceAwareTrait {
-
-    /** @var ExpertiseService */
-    private $expertiseService;
-
-    /**
-     * @return ExpertiseService
-     */
-    public function getExpertiseService()
-    {
-        return $this->expertiseService;
-    }
-
-    /**
-     * @param ExpertiseService $expertiseService
-     * @return ExpertiseService
-     */
-    public function setExpertiseService($expertiseService)
-    {
-        $this->expertiseService = $expertiseService;
-        return $this->expertiseService;
-    }
-}
diff --git a/module/Application/src/Application/Service/Notification/NotificationService.php b/module/Application/src/Application/Service/Notification/NotificationService.php
index 708c3fa4a..5745b97fb 100644
--- a/module/Application/src/Application/Service/Notification/NotificationService.php
+++ b/module/Application/src/Application/Service/Notification/NotificationService.php
@@ -2,7 +2,7 @@
 
 namespace Application\Service\Notification;
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Provider\Template\MailTemplates;
 use Application\Service\Agent\AgentServiceAwareTrait;
 use Application\Service\Url\UrlServiceAwareTrait;
diff --git a/module/Application/src/Application/Service/ParcoursDeFormation/ParcoursDeFormationService.php b/module/Application/src/Application/Service/ParcoursDeFormation/ParcoursDeFormationService.php
index 4d34bf802..df93c466b 100644
--- a/module/Application/src/Application/Service/ParcoursDeFormation/ParcoursDeFormationService.php
+++ b/module/Application/src/Application/Service/ParcoursDeFormation/ParcoursDeFormationService.php
@@ -3,7 +3,7 @@
 namespace Application\Service\ParcoursDeFormation;
 
 use Application\Entity\Db\FicheMetier;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Entity\Db\ParcoursDeFormation;
 use Application\Entity\Db\ParcoursDeFormationFormation;
 use Carriere\Entity\Db\Categorie;
diff --git a/module/Application/src/Application/View/Helper/FichePosteGraphViewHelper.php b/module/Application/src/Application/View/Helper/FichePosteGraphViewHelper.php
index a169f8790..770b466de 100644
--- a/module/Application/src/Application/View/Helper/FichePosteGraphViewHelper.php
+++ b/module/Application/src/Application/View/Helper/FichePosteGraphViewHelper.php
@@ -2,7 +2,7 @@
 
 namespace Application\View\Helper;
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use DateTime;
 use Exception;
 use RuntimeException;
diff --git a/module/Application/src/Application/View/Helper/FichesPostesAsArrayViewHelper.php b/module/Application/src/Application/View/Helper/FichesPostesAsArrayViewHelper.php
index fbf98127e..318bc4193 100644
--- a/module/Application/src/Application/View/Helper/FichesPostesAsArrayViewHelper.php
+++ b/module/Application/src/Application/View/Helper/FichesPostesAsArrayViewHelper.php
@@ -3,7 +3,7 @@
 namespace Application\View\Helper;
 
 use Application\Provider\Role\RoleProvider as AppRoleProvider;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 use UnicaenUtilisateur\Service\User\UserServiceAwareTrait;
 use Laminas\View\Helper\AbstractHelper;
diff --git a/module/Application/src/Application/View/Helper/ParcoursApplicationViewHelper.php b/module/Application/src/Application/View/Helper/ParcoursApplicationViewHelper.php
index f77e6a7ff..4a0ec3a9a 100644
--- a/module/Application/src/Application/View/Helper/ParcoursApplicationViewHelper.php
+++ b/module/Application/src/Application/View/Helper/ParcoursApplicationViewHelper.php
@@ -4,7 +4,7 @@ namespace Application\View\Helper;
 
 use Application\Entity\Db\Agent;
 use Application\Entity\Db\FicheMetier;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Service\ParcoursDeFormation\ParcoursDeFormationServiceAwareTrait;
 use Application\View\Renderer\PhpRenderer;
 use Laminas\View\Helper\AbstractHelper;
diff --git a/module/Application/src/Application/View/Helper/PosteViewHelper.php b/module/Application/src/Application/View/Helper/PosteViewHelper.php
index d097a6008..7a0e86ec5 100644
--- a/module/Application/src/Application/View/Helper/PosteViewHelper.php
+++ b/module/Application/src/Application/View/Helper/PosteViewHelper.php
@@ -2,8 +2,8 @@
 
 namespace Application\View\Helper;
 
-use Application\Entity\Db\Poste;
 use Application\View\Renderer\PhpRenderer;
+use FichePoste\Entity\Db\Poste;
 use Laminas\View\Helper\AbstractHelper;
 use Laminas\View\Helper\Partial;
 use Laminas\View\Resolver\TemplatePathStack;
diff --git a/module/Application/src/Application/View/Helper/RaisonsViewHelper.php b/module/Application/src/Application/View/Helper/RaisonsViewHelper.php
index 7780cc135..01f46bea2 100644
--- a/module/Application/src/Application/View/Helper/RaisonsViewHelper.php
+++ b/module/Application/src/Application/View/Helper/RaisonsViewHelper.php
@@ -2,7 +2,6 @@
 
 namespace Application\View\Helper;
 
-use Application\Entity\Db\Poste;
 use Application\View\Renderer\PhpRenderer;
 use Laminas\View\Helper\AbstractHelper;
 use Laminas\View\Helper\Partial;
diff --git a/module/Application/src/Application/View/Helper/SpecificitePosteViewHelper.php b/module/Application/src/Application/View/Helper/SpecificitePosteViewHelper.php
index 102958d5f..7f446d39f 100644
--- a/module/Application/src/Application/View/Helper/SpecificitePosteViewHelper.php
+++ b/module/Application/src/Application/View/Helper/SpecificitePosteViewHelper.php
@@ -2,7 +2,7 @@
 
 namespace Application\View\Helper;
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Entity\Db\SpecificitePoste;
 use Application\View\Renderer\PhpRenderer;
 use Laminas\View\Helper\AbstractHelper;
diff --git a/module/Application/src/Application/View/Helper/partial/activite.phtml b/module/Application/src/Application/View/Helper/partial/activite.phtml
index 1beb96cc1..6f26d9176 100644
--- a/module/Application/src/Application/View/Helper/partial/activite.phtml
+++ b/module/Application/src/Application/View/Helper/partial/activite.phtml
@@ -4,11 +4,11 @@ use Application\Controller\ActiviteController;
 use Application\Controller\FicheMetierController;
 use Application\Entity\Db\Activite;
 use Application\Entity\Db\ActiviteDescription;
-use Element\Entity\Db\ApplicationElement;
-use Element\Entity\Db\CompetenceElement;
 use Application\Entity\Db\FicheMetier;
 use Application\Entity\Db\FicheMetierActivite;
-use Application\Entity\Db\FichePoste;
+use Element\Entity\Db\ApplicationElement;
+use Element\Entity\Db\CompetenceElement;
+use FichePoste\Entity\Db\FichePoste;
 use Formation\Entity\Db\FormationElement;
 
 /**
@@ -64,7 +64,7 @@ $nbObject      = $nbCompetence + $nbFormation + $nbApplication;
                     <h3> <?php echo $activite->getLibelle(); ?> </h3>
                 </div>
                 <div class="pull-right">
-                    <?php /** @see \Application\Controller\FichePosteController::selectionnerDescriptionsRetireesAction() */?>
+                    <?php /** @see \FichePoste\Controller\FichePosteController::selectionnerDescriptionsRetireesAction() */?>
                     <a href="<?php echo $this->url('fiche-poste/selectionner-descriptions-retirees', ['fiche-poste' => $ficheposte->getId(), 'fiche-metier' => $fichemetier->getId(), 'activite' => $activite->getId()], [], true); ?>"
                        class="btn btn-primary ajax-modal" data-event="modification">
                         Sélectionner des descriptions
diff --git a/module/Application/src/Application/View/Helper/partial/fiche-metier-externe.phtml b/module/Application/src/Application/View/Helper/partial/fiche-metier-externe.phtml
index c2d080a13..e15c5861d 100644
--- a/module/Application/src/Application/View/Helper/partial/fiche-metier-externe.phtml
+++ b/module/Application/src/Application/View/Helper/partial/fiche-metier-externe.phtml
@@ -6,7 +6,7 @@
  */
 
 use Application\Entity\Db\FicheTypeExterne;
-use Application\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 
 $fichemetier = $fiche->getFicheType();
 $ficheposte = $fiche->getFichePoste();
@@ -31,7 +31,7 @@ $activitesConservees = explode(FicheTypeExterne::ACTIVITE_SEPARATOR, $fiche->get
             <div class="col-md-7">
                 <div class="col-md-6">
                     <u>Répartition par domaine</u>
-                    <a  <?php /** @see \Application\Controller\FichePosteController::modifierRepartitionAction() */ ?>
+                    <a  <?php /** @see \FichePoste\Controller\FichePosteController::modifierRepartitionAction() */ ?>
                         href="<?php echo $this->url("fiche-poste/modifier-repartition", ['fiche-poste' => $fiche->getFichePoste()->getId(), 'fiche-type' => $fiche->getId()], [], true); ?>"
                         class="ajax-modal" data-event="modification"
                     >
@@ -61,13 +61,13 @@ $activitesConservees = explode(FicheTypeExterne::ACTIVITE_SEPARATOR, $fiche->get
                     <u> Répartition par métier</u>
                     <?php if (isset($options['mode']) AND $options['mode'] === 'edition-fiche-poste') : ?>
                         <a
-                            <?php /** @see \Application\Controller\FichePosteController::modifierFicheMetierAction() */ ?>
+                            <?php /** @see \FichePoste\Controller\FichePosteController::modifierFicheMetierAction() */ ?>
                                 href="<?php echo $this->url('fiche-poste/modifier-fiche-metier', ['fiche-poste' => $fiche->getFichePoste()->getId(), 'fiche-type-externe' => $fiche->getId()], [], true); ?>"
                                 class="ajax-modal" data-event="modification"
                         >
                             <span class="icon icon-editer" title="Modifier la fiche métier"></span></a>
                         <a
-                            <?php /** @see \Application\Controller\FichePosteController::retirerFicheMetierAction() */ ?>
+                            <?php /** @see \FichePoste\Controller\FichePosteController::retirerFicheMetierAction() */ ?>
                                 href="<?php echo $this->url('fiche-poste/retirer-fiche-metier', ['fiche-poste' => $fiche->getFichePoste()->getId(), 'fiche-type-externe' => $fiche->getId()], [], true); ?>"
                         >
                             <span class="icon icon-retirer" title="Retirer la fiche métier"></span></a>
@@ -91,7 +91,7 @@ $activitesConservees = explode(FicheTypeExterne::ACTIVITE_SEPARATOR, $fiche->get
     </div>
     <div class="card-body">
         <?php if (isset($options['mode']) AND $options['mode'] === 'edition-fiche-poste') : ?>
-            <?php /** @see \Application\Controller\FichePosteController::selectionnerActiviteAction() */ ?>
+            <?php /** @see \FichePoste\Controller\FichePosteController::selectionnerActiviteAction() */ ?>
             <a href="<?php echo $this->url("fiche-poste/selectionner-activite", ["fiche-poste" => $ficheposte->getId(), "fiche-type-externe" => $fiche->getId()], [], true); ?>"
                class="ajax-modal btn btn-primary" data-event="modification"
             >
diff --git a/module/Application/src/Application/View/Helper/partial/fiche-metier.old.phtml b/module/Application/src/Application/View/Helper/partial/fiche-metier.old.phtml
index a87a04566..bc4faa0c8 100644
--- a/module/Application/src/Application/View/Helper/partial/fiche-metier.old.phtml
+++ b/module/Application/src/Application/View/Helper/partial/fiche-metier.old.phtml
@@ -1,7 +1,7 @@
 <?php
 
 use Application\Entity\Db\FicheMetier;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Entity\Db\FicheTypeExterne;
 
 /**
diff --git a/module/Application/src/Application/View/Helper/partial/ficheposte-graphique.phtml b/module/Application/src/Application/View/Helper/partial/ficheposte-graphique.phtml
index 4671c851f..e02339c22 100644
--- a/module/Application/src/Application/View/Helper/partial/ficheposte-graphique.phtml
+++ b/module/Application/src/Application/View/Helper/partial/ficheposte-graphique.phtml
@@ -7,7 +7,7 @@
  * @var array $options
  */
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 $id = uniqid();
 $headers = [];
diff --git a/module/Application/src/Application/View/Helper/partial/fiches-postes-as-table.phtml b/module/Application/src/Application/View/Helper/partial/fiches-postes-as-table.phtml
index 1afe86067..fb62735c6 100644
--- a/module/Application/src/Application/View/Helper/partial/fiches-postes-as-table.phtml
+++ b/module/Application/src/Application/View/Helper/partial/fiches-postes-as-table.phtml
@@ -1,8 +1,8 @@
 <?php
 
-use Application\Entity\Db\FichePoste;
 use Application\Provider\Etat\FichePosteEtats;
-use Application\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 use Structure\Entity\Db\Structure;
 
 /**
@@ -199,7 +199,7 @@ if ($retour)    $query['retour'] = $retour;
                     <td>
                         <!--  AFFICHAGE ------------------------------------------------------------------------------->
                         <?php if ($canAfficher) : ?>
-                            <?php /** @see \Application\Controller\FichePosteController::afficherAction() */ ?>
+                            <?php /** @see \FichePoste\Controller\FichePosteController::afficherAction() */ ?>
                             <a href="<?php echo $this->url('fiche-poste/afficher', ['fiche-poste' => $id], [], true); ?>"
                                     target="_blank"
                             ><span class="icon icon-voir"
@@ -211,7 +211,7 @@ if ($retour)    $query['retour'] = $retour;
 
                         <!--  EXPORTATION ----------------------------------------------------------------------------->
                         <?php if ($canExporter) : ?>
-                            <?php /** @see \Application\Controller\FichePosteController::exporterAction() */ ?>
+                            <?php /** @see \FichePoste\Controller\FichePosteController::exporterAction() */ ?>
                             <a href="<?php echo $this->url('fiche-poste/exporter', ['fiche-poste' =>  $id], [], true); ?>"
                                target="_blank"
                             ><span
@@ -224,7 +224,7 @@ if ($retour)    $query['retour'] = $retour;
 
                         <!-- MODIFICATION ----------------------------------------------------------------------------->
                         <?php if ($canModifier) : ?>
-                            <?php /** @see \Application\Controller\FichePosteController::editerAction() */ ?>
+                            <?php /** @see \FichePoste\Controller\FichePosteController::editerAction() */ ?>
                             <a href="<?php echo $this->url('fiche-poste/editer', ['fiche-poste' =>  $id], ['query' => ['structure' =>  $structureId??null]], true); ?>"
                                     target="_blank"
                             ><span class="icon icon-editer"
@@ -237,13 +237,13 @@ if ($retour)    $query['retour'] = $retour;
                         <!-- HISTORISER ------------------------------------------------------------------------------->
                         <?php if ($canHistoriser) : ?>
                             <?php if ($destruction === null) : ?>
-                                <?php /** @see \Application\Controller\FichePosteController::historiserAction() */ ?>
+                                <?php /** @see \FichePoste\Controller\FichePosteController::historiserAction() */ ?>
                                 <a href="<?php echo $this->url('fiche-poste/historiser', ['fiche-poste' =>  $id], ["query" => $query], true); ?>">
                                     <span class="icon icon-historiser"
                                        data-bs-toggle="tooltip" data-bs-html="true"
                                        title="Historiser la fiche de poste"></span></a>
                             <?php else : ?>
-                                <?php /** @see \Application\Controller\FichePosteController::restaurerAction() */ ?>
+                                <?php /** @see \FichePoste\Controller\FichePosteController::restaurerAction() */ ?>
                                 <a href="<?php echo $this->url('fiche-poste/restaurer', ['fiche-poste' =>  $id], ["query" => $query], true); ?>">
                                             <span class="icon icon-restaurer"
                                                   data-bs-toggle="tooltip" data-bs-html="true"
@@ -259,7 +259,7 @@ if ($retour)    $query['retour'] = $retour;
 
                         <!-- DETRUIRE ------------------------------------------------------------------------------->
                         <?php if ($canDetruire) : ?>
-                            <?php /** @see \Application\Controller\FichePosteController::detruireAction() */ ?>
+                            <?php /** @see \FichePoste\Controller\FichePosteController::detruireAction() */ ?>
                             <a href="<?php echo $this->url('fiche-poste/detruire', ['fiche-poste' =>  $id], [], true); ?>"
                                class="ajax-modal" data-event="modification"
                         ><span class="icon icon-retirer"
diff --git a/module/Application/src/Application/View/Helper/partial/poste.phtml b/module/Application/src/Application/View/Helper/partial/poste.phtml
index 08bfc4b7e..0d3f344fd 100644
--- a/module/Application/src/Application/View/Helper/partial/poste.phtml
+++ b/module/Application/src/Application/View/Helper/partial/poste.phtml
@@ -1,10 +1,10 @@
 <?php
 
 /**
- * @var Poste $poste
+ * @var \FichePoste\Entity\Db\Poste $poste
  */
 
-use Application\Entity\Db\Poste;
+use FichePoste\Entity\Db\Poste;
 
 ?>
 
diff --git a/module/Application/src/Application/View/Helper/partial/specificite-activite.phtml b/module/Application/src/Application/View/Helper/partial/specificite-activite.phtml
index 7bae33c25..59af46516 100644
--- a/module/Application/src/Application/View/Helper/partial/specificite-activite.phtml
+++ b/module/Application/src/Application/View/Helper/partial/specificite-activite.phtml
@@ -2,7 +2,6 @@
 
 use Application\Entity\Db\ActiviteDescription;
 use Application\Entity\Db\SpecificiteActivite;
-use Application\Provider\Privilege\FichePostePrivileges;
 use Metier\Entity\Db\Domaine;
 
 /**
diff --git a/module/Application/src/Application/View/Helper/partial/specificite.phtml b/module/Application/src/Application/View/Helper/partial/specificite.phtml
index efffa740d..9f4abcb3f 100644
--- a/module/Application/src/Application/View/Helper/partial/specificite.phtml
+++ b/module/Application/src/Application/View/Helper/partial/specificite.phtml
@@ -7,10 +7,10 @@
  * @var array $options
  */
 
-use Application\Entity\Db\FichePoste;
 use Application\Entity\Db\SpecificiteActivite;
 use Application\Entity\Db\SpecificitePoste;
-use Application\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 
 $mode = "affichage";
 if (isset($options["mode"])) $mode = $options["mode"];
diff --git a/module/Application/view/application/agent/afficher.phtml b/module/Application/view/application/agent/afficher.phtml
index ca968c1ae..7f8ff6ae4 100644
--- a/module/Application/view/application/agent/afficher.phtml
+++ b/module/Application/view/application/agent/afficher.phtml
@@ -11,7 +11,7 @@ use Application\Entity\Db\AgentQuotite;
 use Application\Entity\Db\AgentStageObservation;
 use Application\Entity\Db\AgentStatut;
 use Application\Entity\Db\AgentTutorat;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Provider\Privilege\AgentPrivileges;
 use EntretienProfessionnel\Entity\Db\EntretienProfessionnel;
 
diff --git a/module/Application/view/application/agent/partial/fiche-poste.phtml b/module/Application/view/application/agent/partial/fiche-poste.phtml
index f2b1a228f..4302683a5 100644
--- a/module/Application/view/application/agent/partial/fiche-poste.phtml
+++ b/module/Application/view/application/agent/partial/fiche-poste.phtml
@@ -7,8 +7,8 @@
  */
 
 use Application\Entity\Db\Agent;
-use Application\Entity\Db\FichePoste;
 use Application\Provider\Privilege\AgentPrivileges;
+use FichePoste\Entity\Db\FichePoste;
 
 $canDetruireFichier     = $this->isAllowed($agent, AgentPrivileges::AGENT_ELEMENT_HISTORISER);
 $canVoirFichier         = $this->isAllowed($agent, AgentPrivileges::AGENT_AFFICHER);
@@ -33,13 +33,13 @@ $structure = ($affectation)?$affectation->getStructure():null;
     <div class="pull-right">
         <br/>
         <?php if ($canAjouterFichePoste) : ?>
-            <?php /** @see \Application\Controller\FichePosteController::ajouterAction() */ ?>
+            <?php /** @see \FichePoste\Controller\FichePosteController::ajouterAction() */ ?>
             <a href="<?php echo $this->url('fiche-poste/ajouter', ['agent' => $agent->getId()], [], true); ?>" class="btn btn-primary action">
                 <span class="icon icon-ajouter"></span>
                 Ajouter une fiche de poste
             </a>
             <?php if ($structure ) : ?>
-            <?php /** @see \Application\Controller\FichePosteController::dupliquerAction() */ ?>
+            <?php /** @see \FichePoste\Controller\FichePosteController::dupliquerAction() */ ?>
             <a href="<?php echo $this->url('fiche-poste/dupliquer', ['structure' => $structure->getId(), 'agent' => $agent->getId()], [], true); ?>" class="btn btn-primary action">
                 <span class="icon icon-cloner"></span>
                 Cloner une fiche de poste
diff --git a/module/Application/view/application/fiche-profil/modifier.phtml b/module/Application/view/application/fiche-profil/modifier.phtml
index cb8a1ab6d..b62748562 100644
--- a/module/Application/view/application/fiche-profil/modifier.phtml
+++ b/module/Application/view/application/fiche-profil/modifier.phtml
@@ -9,7 +9,7 @@
  * @var FicheProfilForm $form
  */
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Form\FicheProfil\FicheProfilForm;
 use Structure\Entity\Db\Structure;
 
diff --git a/module/Application/view/application/index/index-autorite.phtml b/module/Application/view/application/index/index-autorite.phtml
index cca89d01f..19297db4d 100644
--- a/module/Application/view/application/index/index-autorite.phtml
+++ b/module/Application/view/application/index/index-autorite.phtml
@@ -7,9 +7,9 @@
  * @var Campagne $campagnePrevious
  * @var Campagne $campagnesCurrents
  */
+
 use Application\Entity\Db\Agent;
 use Application\Provider\Privilege\AgentPrivileges;
-use Application\Provider\Privilege\FichePostePrivileges;
 use EntretienProfessionnel\Entity\Db\Campagne;
 
 $canVoirAgent = $this->isAllowed(AgentPrivileges::getResourceId(AgentPrivileges::AGENT_AFFICHER));
diff --git a/module/Application/view/application/index/index-superieur.phtml b/module/Application/view/application/index/index-superieur.phtml
index 415f6c44b..4a11c4113 100644
--- a/module/Application/view/application/index/index-superieur.phtml
+++ b/module/Application/view/application/index/index-superieur.phtml
@@ -11,12 +11,11 @@
  * @var FormationInstanceInscrit[] $demandesInternes
  * @var DemandeExterne[] $demandesExternes
  */
+
 use Application\Entity\Db\Agent;
-use Application\Entity\Db\FichePoste;
 use Application\Provider\Privilege\AgentPrivileges;
-use Application\Provider\Privilege\FichePostePrivileges;
-use EntretienProfessionnel\Entity\Db\Campagne;
 use EntretienProfessionnel\Entity\Db\EntretienProfessionnel;
+use FichePoste\Entity\Db\FichePoste;
 use Formation\Entity\Db\DemandeExterne;
 use Formation\Entity\Db\FormationInstanceInscrit;
 
diff --git a/module/Application/view/application/index/index.phtml b/module/Application/view/application/index/index.phtml
index 8714e2437..dc16a10a7 100755
--- a/module/Application/view/application/index/index.phtml
+++ b/module/Application/view/application/index/index.phtml
@@ -46,9 +46,14 @@ use UnicaenUtilisateur\Entity\Db\User;
 
     <?php else: ?>
 
-        <a class="btn btn-success btn-large" href="<?php echo $this->url('zfcuser/login') ?>">
+        <?php
+        $appConnection = $this->appConnection();
+        $link = $appConnection->getView()->plugin('userConnection')->computeConnectionLink();
+        ?>
+        <a class="btn btn-success btn-large" href="<?php echo $link; ?>">
             <span class="icon icon-user"></span>
             <?php echo $this->translate('Se connecter') ?>
+
         </a>
 
     <br/>
diff --git a/module/Application/view/application/index/partial/entretien.phtml b/module/Application/view/application/index/partial/entretien.phtml
index 3fcb21ecf..637f39027 100644
--- a/module/Application/view/application/index/partial/entretien.phtml
+++ b/module/Application/view/application/index/partial/entretien.phtml
@@ -2,7 +2,6 @@
 
 use Application\Entity\Db\Agent;
 use Application\Provider\Privilege\AgentPrivileges;
-use Application\Provider\Privilege\FichePostePrivileges;
 use EntretienProfessionnel\Entity\Db\Campagne;
 
 /**
diff --git a/module/Application/view/application/default/confirmation.phtml b/module/Application/view/default/confirmation.phtml
similarity index 100%
rename from module/Application/view/application/default/confirmation.phtml
rename to module/Application/view/default/confirmation.phtml
diff --git a/module/Application/view/application/default/default-form.phtml b/module/Application/view/default/default-form.phtml
similarity index 100%
rename from module/Application/view/application/default/default-form.phtml
rename to module/Application/view/default/default-form.phtml
diff --git a/module/Application/view/application/default/probleme.phtml b/module/Application/view/default/probleme.phtml
similarity index 100%
rename from module/Application/view/application/default/probleme.phtml
rename to module/Application/view/default/probleme.phtml
diff --git a/module/Application/view/application/default/reponse.phtml b/module/Application/view/default/reponse.phtml
similarity index 100%
rename from module/Application/view/application/default/reponse.phtml
rename to module/Application/view/default/reponse.phtml
diff --git a/module/EntretienProfessionnel/src/EntretienProfessionnel/Controller/EntretienProfessionnelController.php b/module/EntretienProfessionnel/src/EntretienProfessionnel/Controller/EntretienProfessionnelController.php
index 5a0948571..6de10874c 100644
--- a/module/EntretienProfessionnel/src/EntretienProfessionnel/Controller/EntretienProfessionnelController.php
+++ b/module/EntretienProfessionnel/src/EntretienProfessionnel/Controller/EntretienProfessionnelController.php
@@ -3,7 +3,6 @@
 namespace EntretienProfessionnel\Controller;
 
 use Application\Service\Agent\AgentServiceAwareTrait;
-use Application\Service\FichePoste\FichePosteServiceAwareTrait;
 use DateInterval;
 use DateTime;
 use Doctrine\ORM\ORMException;
@@ -18,6 +17,13 @@ use EntretienProfessionnel\Service\Evenement\RappelEntretienProfessionnelService
 use EntretienProfessionnel\Service\Evenement\RappelPasObservationServiceAwareTrait;
 use EntretienProfessionnel\Service\Notification\NotificationServiceAwareTrait;
 use Exception;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
+use Laminas\Http\Request;
+use Laminas\Http\Response;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
+use Laminas\View\Model\JsonModel;
+use Laminas\View\Model\ViewModel;
 use Mpdf\MpdfException;
 use Structure\Service\Structure\StructureServiceAwareTrait;
 use UnicaenApp\Exception\RuntimeException;
@@ -29,12 +35,6 @@ use UnicaenPdf\Exporter\PdfExporter;
 use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait;
 use UnicaenUtilisateur\Service\User\UserServiceAwareTrait;
 use UnicaenValidation\Service\ValidationInstance\ValidationInstanceServiceAwareTrait;
-use Laminas\Http\Request;
-use Laminas\Http\Response;
-use Laminas\Mvc\Controller\AbstractActionController;
-use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
-use Laminas\View\Model\JsonModel;
-use Laminas\View\Model\ViewModel;
 
 /** @method FlashMessenger flashMessenger() */
 
diff --git a/module/EntretienProfessionnel/src/EntretienProfessionnel/Controller/EntretienProfessionnelControllerFactory.php b/module/EntretienProfessionnel/src/EntretienProfessionnel/Controller/EntretienProfessionnelControllerFactory.php
index f95565a06..ec8a537ad 100644
--- a/module/EntretienProfessionnel/src/EntretienProfessionnel/Controller/EntretienProfessionnelControllerFactory.php
+++ b/module/EntretienProfessionnel/src/EntretienProfessionnel/Controller/EntretienProfessionnelControllerFactory.php
@@ -3,13 +3,13 @@
 namespace EntretienProfessionnel\Controller;
 
 use Application\Service\Agent\AgentService;
-use Application\Service\FichePoste\FichePosteService;
 use EntretienProfessionnel\Form\EntretienProfessionnel\EntretienProfessionnelForm;
 use EntretienProfessionnel\Service\Campagne\CampagneService;
 use EntretienProfessionnel\Service\EntretienProfessionnel\EntretienProfessionnelService;
 use EntretienProfessionnel\Service\Evenement\RappelEntretienProfessionnelService;
 use EntretienProfessionnel\Service\Evenement\RappelPasObservationService;
 use EntretienProfessionnel\Service\Notification\NotificationService;
+use FichePoste\Service\FichePoste\FichePosteService;
 use Interop\Container\ContainerInterface;
 use Structure\Service\Structure\StructureService;
 use UnicaenEtat\Service\Etat\EtatService;
diff --git a/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/acceder.phtml b/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/acceder.phtml
index 9e25d227d..492755bec 100644
--- a/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/acceder.phtml
+++ b/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/acceder.phtml
@@ -17,7 +17,7 @@
 
 use Application\Entity\Db\Agent;
 use Application\Entity\Db\FicheMetier;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Entity\Db\ParcoursDeFormation;
 use Application\Provider\Privilege\AgentPrivileges;
 use EntretienProfessionnel\Entity\Db\EntretienProfessionnel;
diff --git a/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/formulaire.phtml b/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/formulaire.phtml
index 06862ea57..3b1a3b328 100644
--- a/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/formulaire.phtml
+++ b/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/formulaire.phtml
@@ -7,11 +7,11 @@
  * @var string $source
  */
 
-use Application\Entity\Db\FichePoste;
 use EntretienProfessionnel\Entity\Db\EntretienProfessionnel;
 use EntretienProfessionnel\Provider\Etat\EntretienProfessionnelEtats;
 use EntretienProfessionnel\Provider\Privilege\EntretienproPrivileges;
 use EntretienProfessionnel\Provider\Validation\EntretienProfessionnelValidations;
+use FichePoste\Entity\Db\FichePoste;
 use UnicaenUtilisateur\Entity\Db\User;
 
 $isAgent                = $entretien->getAgent()->getUtilisateur() === $connectedUser;
diff --git a/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/header.phtml b/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/header.phtml
index 88cb5d0bd..53d844361 100644
--- a/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/header.phtml
+++ b/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/header.phtml
@@ -8,14 +8,14 @@
  * @var string[] $documents
  */
 
-use Application\Entity\Db\Agent;
-use Application\Entity\Db\FicheMetier;
-use Application\Entity\Db\FichePoste;
-use EntretienProfessionnel\Entity\Db\EntretienProfessionnel;
-use EntretienProfessionnel\Provider\Privilege\EntretienproPrivileges;
+    use Application\Entity\Db\Agent;
+    use Application\Entity\Db\FicheMetier;
+    use EntretienProfessionnel\Entity\Db\EntretienProfessionnel;
+    use EntretienProfessionnel\Provider\Privilege\EntretienproPrivileges;
     use EntretienProfessionnel\Provider\Validation\EntretienProfessionnelValidations;
+    use FichePoste\Entity\Db\FichePoste;
     use Structure\Entity\Db\Structure;
-use Structure\Provider\Privilege\StructurePrivileges;
+    use Structure\Provider\Privilege\StructurePrivileges;
 
     $sursis = $entretien->getSursisActif();
 
@@ -52,7 +52,7 @@ $canAfficherInformationMetier = (
                         <dd class="col-md-8">
                             <?php if ($ficheposte !== null) : ?>
                                 <a
-                                    <?php /** @see \Application\Controller\FichePosteController::afficherAction() */ ?>
+                                    <?php /** @see \FichePoste\Controller\FichePosteController::afficherAction() */ ?>
                                     href="<?php echo $this->url('fiche-poste/afficher', ['fiche-poste' => $ficheposte->getId()], [], true); ?>"
                                     target="_blank"
                                 >
diff --git a/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/parcours.phtml b/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/parcours.phtml
index ce3c2be18..4e52c2132 100644
--- a/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/parcours.phtml
+++ b/module/EntretienProfessionnel/view/entretien-professionnel/entretien-professionnel/partial/parcours.phtml
@@ -9,7 +9,7 @@
  */
 
 use Application\Entity\Db\Agent;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Entity\Db\ParcoursDeFormation;
 use EntretienProfessionnel\Entity\Db\EntretienProfessionnel;
 
diff --git a/module/FichePoste/Module.php b/module/FichePoste/Module.php
new file mode 100755
index 000000000..922777716
--- /dev/null
+++ b/module/FichePoste/Module.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace FichePoste;
+
+use Laminas\Config\Factory as ConfigFactory;
+use Laminas\Mvc\ModuleRouteListener;
+use Laminas\Mvc\MvcEvent;
+use Laminas\Stdlib\ArrayUtils;
+use Laminas\Stdlib\Glob;
+
+class Module
+{
+    public function onBootstrap(MvcEvent $e)
+    {
+        $eventManager        = $e->getApplication()->getEventManager();
+        $moduleRouteListener = new ModuleRouteListener();
+        $moduleRouteListener->attach($eventManager);
+
+    }
+
+    public function getConfig()
+    {
+        $configInit = [
+            __DIR__ . '/config/module.config.php'
+        ];
+        $configFiles = ArrayUtils::merge(
+            $configInit,
+            Glob::glob(__DIR__ . '/config/merged/{,*.}{config}.php', Glob::GLOB_BRACE)
+        );
+
+        return ConfigFactory::fromFiles($configFiles);
+    }
+
+    public function getAutoloaderConfig()
+    {
+        return array(
+            'Laminas\Loader\StandardAutoloader' => array(
+                'namespaces' => array(
+                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
+                ),
+            ),
+        );
+    }
+}
diff --git a/module/FichePoste/config/example.php b/module/FichePoste/config/example.php
new file mode 100644
index 000000000..e2e8412f5
--- /dev/null
+++ b/module/FichePoste/config/example.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace Element;
+
+use UnicaenPrivilege\Guard\PrivilegeController;
+use Laminas\Router\Http\Literal;
+use Laminas\Router\Http\Segment;
+
+return [
+    'bjyauthorize' => [
+        'guards' => [
+            PrivilegeController::class => [
+
+            ],
+        ],
+    ],
+
+    'router'          => [
+        'routes' => [
+        ],
+    ],
+
+    'service_manager' => [
+        'factories' => [],
+    ],
+    'controllers'     => [
+        'factories' => [],
+    ],
+    'form_elements' => [
+        'factories' => [],
+    ],
+    'hydrators' => [
+        'factories' => [],
+    ]
+
+];
\ No newline at end of file
diff --git a/module/FichePoste/config/merged/expertise.config.php b/module/FichePoste/config/merged/expertise.config.php
new file mode 100644
index 000000000..bf2600ae7
--- /dev/null
+++ b/module/FichePoste/config/merged/expertise.config.php
@@ -0,0 +1,144 @@
+<?php
+
+namespace Element;
+
+use FichePoste\Assertion\FichePosteAssertion;
+use FichePoste\Controller\ExpertiseController;
+use FichePoste\Controller\ExpertiseControllerFactory;
+use FichePoste\Form\Expertise\ExpertiseForm;
+use FichePoste\Form\Expertise\ExpertiseFormFactory;
+use FichePoste\Form\Expertise\ExpertiseHydrator;
+use FichePoste\Form\Expertise\ExpertiseHydratorFactory;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Service\Expertise\ExpertiseService;
+use FichePoste\Service\Expertise\ExpertiseServiceFactory;
+use Laminas\Router\Http\Literal;
+use UnicaenPrivilege\Guard\PrivilegeController;
+use Laminas\Router\Http\Segment;
+
+return [
+    'bjyauthorize' => [
+        'guards' => [
+            PrivilegeController::class => [
+                [
+                    'controller' => ExpertiseController::class,
+                    'action' => [
+                        'ajouter',
+                        'modifier',
+                        'historiser',
+                        'restaurer',
+                        'supprimer',
+                    ],
+                    'privileges' => FichePostePrivileges::FICHEPOSTE_MODIFIER,
+//                    'assertion'  => FichePosteAssertion::class,
+                ],
+            ],
+        ],
+    ],
+
+    'router'          => [
+        'routes' => [
+            'fiche-poste' => [
+                'options' => [
+                    'route'    => '/fiche-poste',
+                ],
+                'may_terminate' => true,
+                'child_routes' => [
+                    'expertise' => [
+                        'type'  => Literal::class,
+                        'options' => [
+                            'route'    => '/expertise',
+                            'defaults' => [
+                                'controller' => ExpertiseController::class,
+                            ],
+                        ],
+                        'may_terminate' => false,
+                        'child_routes' => [
+                            'ajouter' => [
+                                'type'  => Segment::class,
+                                'options' => [
+                                    'route'    => '/ajouter/:fiche-poste',
+                                    'defaults' => [
+                                        /** @see ExpertiseController::ajouterAction() */
+                                        'controller' => ExpertiseController::class,
+                                        'action'     => 'ajouter',
+                                    ],
+                                ],
+                            ],
+                            'modifier' => [
+                                'type'  => Segment::class,
+                                'may_terminate' => true,
+                                'options' => [
+                                    'route'    => '/modifier/:expertise',
+                                    'defaults' => [
+                                        /** @see ExpertiseController::modifierAction() */
+                                        'controller' => ExpertiseController::class,
+                                        'action'     => 'modifier',
+                                    ],
+                                ],
+                            ],
+                            'historiser' => [
+                                'type'  => Segment::class,
+                                'may_terminate' => true,
+                                'options' => [
+                                    'route'    => '/historiser/:expertise',
+                                    'defaults' => [
+                                        /** @see ExpertiseController::historiserAction() */
+                                        'controller' => ExpertiseController::class,
+                                        'action'     => 'historiser',
+                                    ],
+                                ],
+                            ],
+                            'restaurer' => [
+                                'type'  => Segment::class,
+                                'may_terminate' => true,
+                                'options' => [
+                                    'route'    => '/restaurer/:expertise',
+                                    'defaults' => [
+                                        /** @see ExpertiseController::restaurerAction() */
+                                        'controller' => ExpertiseController::class,
+                                        'action'     => 'restaurer',
+                                    ],
+                                ],
+                            ],
+                            'supprimer' => [
+                                'type'  => Segment::class,
+                                'may_terminate' => true,
+                                'options' => [
+                                    'route'    => '/supprimer/:expertise',
+                                    'defaults' => [
+                                        /** @see ExpertiseController::supprimerAction() */
+                                        'controller' => ExpertiseController::class,
+                                        'action'     => 'supprimer',
+                                    ],
+                                ],
+                            ],
+                        ],
+                    ],
+                ],
+            ],
+        ],
+    ],
+
+    'service_manager' => [
+        'factories' => [
+            ExpertiseService::class => ExpertiseServiceFactory::class,
+        ],
+    ],
+    'controllers'     => [
+        'factories' => [
+            ExpertiseController::class => ExpertiseControllerFactory::class,
+        ],
+    ],
+    'form_elements' => [
+        'factories' => [
+            ExpertiseForm::class => ExpertiseFormFactory::class,
+        ],
+    ],
+    'hydrators' => [
+        'factories' => [
+            ExpertiseHydrator::class => ExpertiseHydratorFactory::class,
+        ],
+    ]
+
+];
\ No newline at end of file
diff --git a/module/Application/config/merged/fiche-poste.config.php b/module/FichePoste/config/merged/fiche-poste.config.php
similarity index 83%
rename from module/Application/config/merged/fiche-poste.config.php
rename to module/FichePoste/config/merged/fiche-poste.config.php
index fa2b872b8..55c43ef41 100644
--- a/module/Application/config/merged/fiche-poste.config.php
+++ b/module/FichePoste/config/merged/fiche-poste.config.php
@@ -2,30 +2,14 @@
 
 namespace Application;
 
-use Application\Assertion\FichePosteAssertion;
-use Application\Assertion\FichePosteAssertionFactory;
-use Application\Controller\FichePosteController;
-use Application\Controller\FichePosteControllerFactory;
 use Application\Form\AjouterFicheMetier\AjouterFicheMetierForm;
 use Application\Form\AjouterFicheMetier\AjouterFicheMetierFormFactory;
 use Application\Form\AjouterFicheMetier\AjouterFicheMetierHydrator;
 use Application\Form\AjouterFicheMetier\AjouterFicheMetierHydratorFactory;
-use Application\Form\AssocierPoste\AssocierPosteForm;
-use Application\Form\AssocierPoste\AssocierPosteFormFactory;
-use Application\Form\AssocierPoste\AssocierPosteHydrator;
-use Application\Form\AssocierPoste\AssocierPosteHydratorFactory;
 use Application\Form\AssocierTitre\AssocierTitreForm;
 use Application\Form\AssocierTitre\AssocierTitreFormFactory;
 use Application\Form\AssocierTitre\AssocierTitreHydrator;
 use Application\Form\AssocierTitre\AssocierTitreHydratorFactory;
-use Application\Form\Expertise\ExpertiseForm;
-use Application\Form\Expertise\ExpertiseFormFactory;
-use Application\Form\Expertise\ExpertiseHydrator;
-use Application\Form\Expertise\ExpertiseHydratorFactory;
-use Application\Form\Poste\PosteForm;
-use Application\Form\Poste\PosteFormFactory;
-use Application\Form\Poste\PosteHydrator;
-use Application\Form\Poste\PosteHydratorFactory;
 use Application\Form\Rifseep\RifseepForm;
 use Application\Form\Rifseep\RifseepFormFactory;
 use Application\Form\Rifseep\RifseepHydrator;
@@ -33,27 +17,29 @@ use Application\Form\Rifseep\RifseepHydratorFactory;
 use Application\Form\SpecificitePoste\SpecificitePosteForm;
 use Application\Form\SpecificitePoste\SpecificitePosteFormFactory;
 use Application\Form\SpecificitePoste\SpecificitePosteHydrator;
-use Application\Provider\Privilege\FichePostePrivileges;
 use Application\Service\ActivitesDescriptionsRetirees\ActivitesDescriptionsRetireesService;
 use Application\Service\ActivitesDescriptionsRetirees\ActivitesDescriptionsRetireesServiceFactory;
 use Application\Service\ApplicationsRetirees\ApplicationsRetireesService;
 use Application\Service\ApplicationsRetirees\ApplicationsRetireesServiceFactory;
 use Application\Service\CompetencesRetirees\CompetencesRetireesService;
 use Application\Service\CompetencesRetirees\CompetencesRetireesServiceFactory;
-use Application\Service\Expertise\ExpertiseService;
-use Application\Service\Expertise\ExpertiseServiceFactory;
-use Application\Service\FichePoste\FichePosteService;
-use Application\Service\FichePoste\FichePosteServiceFactory;
-use Application\Service\Poste\PosteService;
-use Application\Service\Poste\PosteServiceFactory;
 use Application\Service\SpecificitePoste\SpecificitePosteService;
 use Application\Service\SpecificitePoste\SpecificitePosteServiceFactory;
 use Application\View\Helper\FichePosteGraphViewHelper;
 use Application\View\Helper\FichesPostesAsArrayViewHelperFactory;
-use UnicaenPrivilege\Guard\PrivilegeController;
-use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider;
+use FichePoste\Assertion\FichePosteAssertion;
+use FichePoste\Assertion\FichePosteAssertionFactory;
+use FichePoste\Controller\FichePosteController;
+use FichePoste\Controller\FichePosteControllerFactory;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Service\Expertise\ExpertiseService;
+use FichePoste\Service\Expertise\ExpertiseServiceFactory;
+use FichePoste\Service\FichePoste\FichePosteService;
+use FichePoste\Service\FichePoste\FichePosteServiceFactory;
 use Laminas\Router\Http\Literal;
 use Laminas\Router\Http\Segment;
+use UnicaenPrivilege\Guard\PrivilegeController;
+use UnicaenPrivilege\Provider\Rule\PrivilegeRuleProvider;
 
 return [
     'bjyauthorize' => [
@@ -119,13 +105,6 @@ return [
                     'privileges' => FichePostePrivileges::FICHEPOSTE_AJOUTER,
                     'assertion'  => FichePosteAssertion::class,
                 ],
-                [
-                    'controller' => FichePosteController::class,
-                    'action' => [
-                        'modifier-information-poste',
-                    ],
-                    'privileges' => FichePostePrivileges::FICHEPOSTE_MODIFIER_POSTE,
-                ],
                 [
                     'controller' => FichePosteController::class,
                     'action' => [
@@ -146,11 +125,7 @@ return [
                         'selectionner-formations-retirees',
                         'selectionner-descriptions-retirees',
 
-                        'ajouter-expertise',
-                        'modifier-expertise',
-                        'historiser-expertise',
-                        'restaurer-expertise',
-                        'supprimer-expertise',
+
                     ],
                     'privileges' => FichePostePrivileges::FICHEPOSTE_MODIFIER,
                     'assertion'  => FichePosteAssertion::class,
@@ -229,6 +204,18 @@ return [
                     ],
                 ],
                 'child_routes' => [
+                    /** @see FichePosteController::modifierInformationPosteAction() */
+                    'modifier-information-poste' => [
+                        'type'  => Segment::class,
+                        'may_terminate' => true,
+                        'options' => [
+                            'route'    => '/modifier-information-poste/:fiche-poste',
+                            'defaults' => [
+                                'controller' => FichePosteController::class,
+                                'action'     => 'modifier-information-poste',
+                            ],
+                        ],
+                    ],
                     'ajouter' => [
                         'type'  => Segment::class,
                         'may_terminate' => true,
@@ -394,18 +381,7 @@ return [
                             ],
                         ],
                     ],
-                    /** @see FichePosteController::modifierInformationPosteAction() */
-                    'modifier-information-poste' => [
-                        'type'  => Segment::class,
-                        'may_terminate' => true,
-                        'options' => [
-                            'route'    => '/modifier-information-poste/:fiche-poste',
-                            'defaults' => [
-                                'controller' => FichePosteController::class,
-                                'action'     => 'modifier-information-poste',
-                            ],
-                        ],
-                    ],
+
                     'ajouter-fiche-metier' => [
                         'type'  => Segment::class,
                         'may_terminate' => true,
@@ -527,61 +503,6 @@ return [
                             ],
                         ],
                     ],
-                    'ajouter-expertise' => [
-                        'type'  => Segment::class,
-                        'may_terminate' => true,
-                        'options' => [
-                            'route'    => '/ajouter-expertise/:fiche-poste',
-                            'defaults' => [
-                                'controller' => FichePosteController::class,
-                                'action'     => 'ajouter-expertise',
-                            ],
-                        ],
-                    ],
-                    'modifier-expertise' => [
-                        'type'  => Segment::class,
-                        'may_terminate' => true,
-                        'options' => [
-                            'route'    => '/modifier-expertise/:expertise',
-                            'defaults' => [
-                                'controller' => FichePosteController::class,
-                                'action'     => 'modifier-expertise',
-                            ],
-                        ],
-                    ],
-                    'historiser-expertise' => [
-                        'type'  => Segment::class,
-                        'may_terminate' => true,
-                        'options' => [
-                            'route'    => '/historiser-expertise/:expertise',
-                            'defaults' => [
-                                'controller' => FichePosteController::class,
-                                'action'     => 'historiser-expertise',
-                            ],
-                        ],
-                    ],
-                    'restaurer-expertise' => [
-                        'type'  => Segment::class,
-                        'may_terminate' => true,
-                        'options' => [
-                            'route'    => '/restaurer-expertise/:expertise',
-                            'defaults' => [
-                                'controller' => FichePosteController::class,
-                                'action'     => 'restaurer-expertise',
-                            ],
-                        ],
-                    ],
-                    'supprimer-expertise' => [
-                        'type'  => Segment::class,
-                        'may_terminate' => true,
-                        'options' => [
-                            'route'    => '/supprimer-expertise/:expertise',
-                            'defaults' => [
-                                'controller' => FichePosteController::class,
-                                'action'     => 'supprimer-expertise',
-                            ],
-                        ],
-                    ],
                 ],
             ],
         ],
@@ -596,7 +517,6 @@ return [
             CompetencesRetireesService::class => CompetencesRetireesServiceFactory::class,
             ExpertiseService::class => ExpertiseServiceFactory::class,
             FichePosteService::class => FichePosteServiceFactory::class,
-            PosteService::class => PosteServiceFactory::class,
             SpecificitePosteService::class => SpecificitePosteServiceFactory::class,
         ],
     ],
@@ -608,10 +528,7 @@ return [
     'form_elements' => [
         'factories' => [
             AjouterFicheMetierForm::class => AjouterFicheMetierFormFactory::class,
-            AssocierPosteForm::class => AssocierPosteFormFactory::class,
             AssocierTitreForm::class => AssocierTitreFormFactory::class,
-            ExpertiseForm::class => ExpertiseFormFactory::class,
-            PosteForm::class => PosteFormFactory::class,
             SpecificitePosteForm::class => SpecificitePosteFormFactory::class,
             RifseepForm::class => RifseepFormFactory::class,
         ],
@@ -622,10 +539,7 @@ return [
         ],
         'factories' => [
             AjouterFicheMetierHydrator::class => AjouterFicheMetierHydratorFactory::class,
-            AssocierPosteHydrator::class => AssocierPosteHydratorFactory::class,
             AssocierTitreHydrator::class => AssocierTitreHydratorFactory::class,
-            ExpertiseHydrator::class => ExpertiseHydratorFactory::class,
-            PosteHydrator::class => PosteHydratorFactory::class,
             RifseepHydrator::class => RifseepHydratorFactory::class,
         ],
     ],
@@ -635,7 +549,6 @@ return [
         ],
         'factories' => [
             'fichesPostesAsArray' => FichesPostesAsArrayViewHelperFactory::class,
-        ]
+        ],
     ],
-
 ];
\ No newline at end of file
diff --git a/module/FichePoste/config/merged/poste.config.php b/module/FichePoste/config/merged/poste.config.php
new file mode 100644
index 000000000..69ce81da9
--- /dev/null
+++ b/module/FichePoste/config/merged/poste.config.php
@@ -0,0 +1,79 @@
+<?php
+
+namespace FichePoste;
+
+use FichePoste\Controller\PosteController;
+use FichePoste\Controller\PosteControllerFactory;
+use FichePoste\Form\Poste\PosteForm;
+use FichePoste\Form\Poste\PosteFormFactory;
+use FichePoste\Form\Poste\PosteHydrator;
+use FichePoste\Form\Poste\PosteHydratorFactory;
+use FichePoste\Service\Poste\PosteService;
+use FichePoste\Service\Poste\PosteServiceFactory;
+use UnicaenPrivilege\Guard\PrivilegeController;
+use Laminas\Router\Http\Literal;
+use Laminas\Router\Http\Segment;
+
+return [
+    'bjyauthorize' => [
+        'guards' => [
+            PrivilegeController::class => [
+                [
+                    'controller' => PosteController::class,
+                    'action' => [
+                        'modifier-information-poste',
+                    ],
+                    'privileges' => [],
+                ],
+            ],
+        ],
+    ],
+
+    'router' => [
+        'routes' => [
+            'fiche-poste' => [
+                'type'  => Literal::class,
+                'may_terminate' => true,
+                'options' => [
+                    'route'    => '/fiche-poste',
+                ],
+                'child_routes' => [
+                    /** @see PosteController::modifierInformationPosteAction() */
+                    'modifier-information-poste' => [
+                        'type'  => Segment::class,
+                        'may_terminate' => true,
+                        'options' => [
+                            'route'    => '/modifier-information-poste/:fiche-poste',
+                            'defaults' => [
+                                'controller' => PosteController::class,
+                                'action'     => 'modifier-information-poste',
+                            ],
+                        ],
+                    ],
+                ],
+            ],
+        ],
+    ],
+
+    'service_manager' => [
+        'factories' => [
+            PosteService::class => PosteServiceFactory::class,
+        ],
+    ],
+    'controllers'     => [
+        'factories' => [
+            PosteController::class => PosteControllerFactory::class,
+        ],
+    ],
+    'form_elements' => [
+        'factories' => [
+            PosteForm::class => PosteFormFactory::class,
+        ],
+    ],
+    'hydrators' => [
+        'factories' => [
+            PosteHydrator::class => PosteHydratorFactory::class,
+        ],
+    ]
+
+];
\ No newline at end of file
diff --git a/module/FichePoste/config/module.config.php b/module/FichePoste/config/module.config.php
new file mode 100755
index 000000000..b2c385d25
--- /dev/null
+++ b/module/FichePoste/config/module.config.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace FichePoste;
+
+use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain;
+use Doctrine\ORM\Mapping\Driver\XmlDriver;
+use UnicaenPrivilege\Guard\PrivilegeController;
+
+return [
+    'bjyauthorize' => [
+        'guards' => [
+            PrivilegeController::class => [
+            ],
+        ],
+    ],
+
+    'doctrine' => [
+        'driver' => [
+            'orm_default' => [
+                'class' => MappingDriverChain::class,
+                'drivers' => [
+                    'FichePoste\Entity\Db' => 'orm_default_xml_driver',
+                ],
+            ],
+            'orm_default_xml_driver' => [
+                'class' => XmlDriver::class,
+                'cache' => 'apc',
+                'paths' => [
+                    __DIR__ . '/../src/FichePoste/Entity/Db/Mapping',
+                ],
+            ],
+        ],
+        'cache' => [
+            'apc' => [
+                'namespace' => 'PREECOG__FichePoste__' . __NAMESPACE__,
+            ],
+        ],
+    ],
+
+    'service_manager' => [
+        'factories' => [
+        ],
+    ],
+    'controllers'     => [
+        'factories' => [
+        ]
+    ],
+    'form_elements' => [
+        'factories' => [
+        ],
+    ],
+    'hydrators' => [
+        'factories' => [
+        ],
+    ],
+    'view_helpers' => [
+        'invokables' => [
+        ],
+    ],
+    'view_manager' => [
+        'template_path_stack' => [
+            __DIR__ . '/../view',
+        ],
+    ],
+
+];
diff --git a/module/Application/src/Application/Assertion/FichePosteAssertion.php b/module/FichePoste/src/FichePoste/Assertion/FichePosteAssertion.php
similarity index 97%
rename from module/Application/src/Application/Assertion/FichePosteAssertion.php
rename to module/FichePoste/src/FichePoste/Assertion/FichePosteAssertion.php
index 0d2e4c7b1..60934abed 100644
--- a/module/Application/src/Application/Assertion/FichePosteAssertion.php
+++ b/module/FichePoste/src/FichePoste/Assertion/FichePosteAssertion.php
@@ -1,18 +1,18 @@
 <?php
 
-namespace Application\Assertion;
+namespace FichePoste\Assertion;
 
 use Application\Entity\Db\Agent;
-use Application\Entity\Db\FichePoste;
 use Application\Provider\Etat\FichePosteEtats;
-use Application\Provider\Privilege\FichePostePrivileges;
 use Application\Provider\Role\RoleProvider as AppRoleProvider;
 use Application\Service\Agent\AgentServiceAwareTrait;
-use Application\Service\FichePoste\FichePosteServiceAwareTrait;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
+use Laminas\Permissions\Acl\Resource\ResourceInterface;
 use Structure\Provider\Role\RoleProvider;
 use UnicaenPrivilege\Assertion\AbstractAssertion;
 use UnicaenUtilisateur\Service\User\UserServiceAwareTrait;
-use Laminas\Permissions\Acl\Resource\ResourceInterface;
 
 class FichePosteAssertion extends AbstractAssertion {
     use AgentServiceAwareTrait;
diff --git a/module/Application/src/Application/Assertion/FichePosteAssertionFactory.php b/module/FichePoste/src/FichePoste/Assertion/FichePosteAssertionFactory.php
similarity index 75%
rename from module/Application/src/Application/Assertion/FichePosteAssertionFactory.php
rename to module/FichePoste/src/FichePoste/Assertion/FichePosteAssertionFactory.php
index 9e6c02e73..3dd42079d 100644
--- a/module/Application/src/Application/Assertion/FichePosteAssertionFactory.php
+++ b/module/FichePoste/src/FichePoste/Assertion/FichePosteAssertionFactory.php
@@ -1,10 +1,12 @@
 <?php
 
-namespace Application\Assertion;
+namespace FichePoste\Assertion;
 
 use Application\Service\Agent\AgentService;
-use Application\Service\FichePoste\FichePosteService;
+use FichePoste\Service\FichePoste\FichePosteService;
 use Interop\Container\ContainerInterface;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
 use Structure\Service\Structure\StructureService;
 use UnicaenUtilisateur\Service\User\UserService;
 
@@ -13,8 +15,10 @@ class FichePosteAssertionFactory
     /**
      * @param ContainerInterface $container
      * @return FichePosteAssertion
+     * @throws ContainerExceptionInterface
+     * @throws NotFoundExceptionInterface
      */
-    public function __invoke(ContainerInterface $container)
+    public function __invoke(ContainerInterface $container) : FichePosteAssertion
     {
         /**
          * @var AgentService $agentService
diff --git a/module/FichePoste/src/FichePoste/Controller/ExpertiseController.php b/module/FichePoste/src/FichePoste/Controller/ExpertiseController.php
new file mode 100644
index 000000000..f8ce415da
--- /dev/null
+++ b/module/FichePoste/src/FichePoste/Controller/ExpertiseController.php
@@ -0,0 +1,119 @@
+<?php
+
+namespace FichePoste\Controller;
+
+use FichePoste\Entity\Db\Expertise;
+use FichePoste\Form\Expertise\ExpertiseFormAwareTrait;
+use FichePoste\Service\Expertise\ExpertiseServiceAwareTrait;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
+use Laminas\Http\Request;
+use Laminas\Http\Response;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\View\Model\ViewModel;
+
+class ExpertiseController extends AbstractActionController {
+    use ExpertiseServiceAwareTrait;
+    use FichePosteServiceAwareTrait;
+    use ExpertiseFormAwareTrait;
+
+
+    public function ajouterAction() : ViewModel
+    {
+        $ficheposte = $this->getFichePosteService()->getRequestedFichePoste($this);
+        $expertise = new Expertise();
+        $expertise->setFicheposte($ficheposte);
+
+        $form = $this->getExpertiseForm();
+        $form->setAttribute('action', $this->url()->fromRoute('fiche-poste/expertise/ajouter', ['fiche-poste' => $ficheposte->getId()], [], true));
+        $form->bind($expertise);
+
+        /** @var Request $request */
+        $request = $this->getRequest();
+        if ($request->isPost()) {
+            $data = $request->getPost();
+            $form->setData($data);
+            if ($form->isValid()) {
+                $this->getExpertiseService()->create($expertise);
+            }
+        }
+
+        $vm = new ViewModel();
+        $vm->setTemplate('default/default-form');
+        $vm->setVariables([
+            'title' => "Ajout d'une expertise",
+            'form' => $form,
+        ]);
+        return $vm;
+    }
+
+    public function modifierAction() : ViewModel
+    {
+        $expertise = $this->getExpertiseService()->getRequestedExpertise($this);
+
+        $form = $this->getExpertiseForm();
+        $form->setAttribute('action', $this->url()->fromRoute('fiche-poste/expertise/modifier', ['expertise' => $expertise->getId()], [], true));
+        $form->bind($expertise);
+
+        /** @var Request $request */
+        $request = $this->getRequest();
+        if ($request->isPost()) {
+            $data = $request->getPost();
+            $form->setData($data);
+            if ($form->isValid()) {
+                $this->getExpertiseService()->update($expertise);
+            }
+        }
+
+        $vm = new ViewModel();
+        $vm->setTemplate('default/default-form');
+        $vm->setVariables([
+            'title' => "Modification d'une expertise",
+            'form' => $form,
+        ]);
+        return $vm;
+    }
+
+    public function historiserAction() : Response
+    {
+        $expertise = $this->getExpertiseService()->getRequestedExpertise($this);
+        $this->getExpertiseService()->historise($expertise);
+
+        $retour = $this->params()->fromRoute('retour');
+        if ($retour) return $this->redirect()->toUrl($retour);
+        return $this->redirect()->toRoute('fiche-poste/editer', ['fiche-poste' => $expertise->getFicheposte()->getId()], [], true);
+    }
+
+    public function restaurerAction() : Response
+    {
+        $expertise = $this->getExpertiseService()->getRequestedExpertise($this);
+        $this->getExpertiseService()->restore($expertise);
+
+        $retour = $this->params()->fromRoute('retour');
+        if ($retour) return $this->redirect()->toUrl($retour);
+        return $this->redirect()->toRoute('fiche-poste/editer', ['fiche-poste' => $expertise->getFicheposte()->getId()], [], true);
+    }
+
+    public function supprimerAction() : ViewModel
+    {
+        $expertise = $this->getExpertiseService()->getRequestedExpertise($this);
+
+        /** @var Request $request */
+        $request = $this->getRequest();
+        if ($request->isPost()) {
+            $data = $request->getPost();
+            if ($data["reponse"] === "oui") $this->getExpertiseService()->delete($expertise);
+            exit();
+        }
+
+        $vm = new ViewModel();
+        if ($expertise !== null) {
+            $vm->setTemplate('default/confirmation');
+            $vm->setVariables([
+                'title' => "Suppression de l'expertise " . $expertise->getLibelle(),
+                'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
+                'action' => $this->url()->fromRoute('fiche-poste/expertise/supprimer', ["expertise" => $expertise->getId()], [], true),
+            ]);
+        }
+        return $vm;
+    }
+}
\ No newline at end of file
diff --git a/module/FichePoste/src/FichePoste/Controller/ExpertiseControllerFactory.php b/module/FichePoste/src/FichePoste/Controller/ExpertiseControllerFactory.php
new file mode 100644
index 000000000..dd313c3eb
--- /dev/null
+++ b/module/FichePoste/src/FichePoste/Controller/ExpertiseControllerFactory.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace FichePoste\Controller;
+
+use FichePoste\Form\Expertise\ExpertiseForm;
+use FichePoste\Service\Expertise\ExpertiseService;
+use FichePoste\Service\FichePoste\FichePosteService;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\ContainerInterface;
+use Psr\Container\NotFoundExceptionInterface;
+
+class ExpertiseControllerFactory {
+
+    /**
+     * @param ContainerInterface $container
+     * @return ExpertiseController
+     * @throws ContainerExceptionInterface
+     * @throws NotFoundExceptionInterface
+     */
+    public function __invoke(ContainerInterface $container) : ExpertiseController
+    {
+        /**
+         * @var ExpertiseService $expertiseService
+         * @var FichePosteService $fichePosteService
+         * @var ExpertiseForm $expertiseForm
+         */
+        $expertiseService = $container->get(ExpertiseService::class);
+        $fichePosteService = $container->get(FichePosteService::class);
+        $expertiseForm = $container->get('FormElementManager')->get(ExpertiseService::class);
+
+        $controller = new ExpertiseController();
+        $controller->setExpertiseService($expertiseService);
+        $controller->setFichePosteService($fichePosteService);
+        $controller->setExpertiseForm($expertiseForm);
+        return $controller;
+    }
+}
\ No newline at end of file
diff --git a/module/Application/src/Application/Controller/FichePosteController.php b/module/FichePoste/src/FichePoste/Controller/FichePosteController.php
similarity index 87%
rename from module/Application/src/Application/Controller/FichePosteController.php
rename to module/FichePoste/src/FichePoste/Controller/FichePosteController.php
index 29d395126..7df08ed3b 100644
--- a/module/Application/src/Application/Controller/FichePosteController.php
+++ b/module/FichePoste/src/FichePoste/Controller/FichePosteController.php
@@ -1,21 +1,17 @@
 <?php
 
-namespace Application\Controller;
+namespace FichePoste\Controller;
 
+use Application\Controller\FichePoste;
 use Application\Entity\Db\ActiviteDescription;
 use Application\Entity\Db\Agent;
-use Application\Entity\Db\Expertise;
 use Application\Entity\Db\FicheMetier;
-use Application\Entity\Db\FichePoste;
 use Application\Entity\Db\FicheposteActiviteDescriptionRetiree;
 use Application\Entity\Db\FicheTypeExterne;
-use Application\Entity\Db\Poste;
 use Application\Entity\Db\SpecificitePoste;
 use Application\Form\AjouterFicheMetier\AjouterFicheMetierFormAwareTrait;
 use Application\Form\AssocierTitre\AssocierTitreForm;
 use Application\Form\AssocierTitre\AssocierTitreFormAwareTrait;
-use Application\Form\Expertise\ExpertiseFormAwareTrait;
-use Application\Form\Poste\PosteFormAwareTrait;
 use Application\Form\Rifseep\RifseepFormAwareTrait;
 use Application\Form\SpecificitePoste\SpecificitePosteForm;
 use Application\Form\SpecificitePoste\SpecificitePosteFormAwareTrait;
@@ -27,14 +23,19 @@ use Application\Service\ActivitesDescriptionsRetirees\ActivitesDescriptionsRetir
 use Application\Service\Agent\AgentServiceAwareTrait;
 use Application\Service\ApplicationsRetirees\ApplicationsRetireesServiceAwareTrait;
 use Application\Service\CompetencesRetirees\CompetencesRetireesServiceAwareTrait;
-use Application\Service\Expertise\ExpertiseServiceAwareTrait;
 use Application\Service\FicheMetier\FicheMetierServiceAwareTrait;
-use Application\Service\FichePoste\FichePosteServiceAwareTrait;
 use Application\Service\Notification\NotificationServiceAwareTrait;
 use Application\Service\ParcoursDeFormation\ParcoursDeFormationServiceAwareTrait;
-use Application\Service\Poste\PosteServiceAwareTrait;
 use Application\Service\SpecificitePoste\SpecificitePosteServiceAwareTrait;
 use DateTime;
+use FichePoste\Form\Expertise\ExpertiseFormAwareTrait;
+use FichePoste\Service\Expertise\ExpertiseServiceAwareTrait;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
+use Laminas\Http\Request;
+use Laminas\Http\Response;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
+use Laminas\View\Model\ViewModel;
 use Mpdf\MpdfException;
 use Structure\Service\Structure\StructureServiceAwareTrait;
 use UnicaenApp\Exception\RuntimeException;
@@ -43,11 +44,6 @@ use UnicaenEtat\Service\Etat\EtatServiceAwareTrait;
 use UnicaenPdf\Exporter\PdfExporter;
 use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait;
 use UnicaenValidation\Service\ValidationInstance\ValidationInstanceServiceAwareTrait;
-use Laminas\Http\Request;
-use Laminas\Http\Response;
-use Laminas\Mvc\Controller\AbstractActionController;
-use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
-use Laminas\View\Model\ViewModel;
 
 /** @method FlashMessenger flashMessenger() */
 
@@ -66,7 +62,6 @@ class FichePosteController extends AbstractActionController {
     use FichePosteServiceAwareTrait;
     use NotificationServiceAwareTrait;
     use ParcoursDeFormationServiceAwareTrait;
-    use PosteServiceAwareTrait;
     use RenduServiceAwareTrait;
     use StructureServiceAwareTrait;
     use SpecificitePosteServiceAwareTrait;
@@ -76,7 +71,6 @@ class FichePosteController extends AbstractActionController {
     use AjouterFicheMetierFormAwareTrait;
     use AssocierTitreFormAwareTrait;
     use ExpertiseFormAwareTrait;
-    use PosteFormAwareTrait;
     use RifseepFormAwareTrait;
     use SelectionEtatFormAwareTrait;
     use SpecificitePosteFormAwareTrait;
@@ -304,10 +298,12 @@ class FichePosteController extends AbstractActionController {
         $ficheposte->addDictionnaire('formations', $this->getFichePosteService()->getFormationsDictionnaires($ficheposte));
         $ficheposte->addDictionnaire('parcours', $this->getParcoursDeFormationService()->generateParcoursArrayFromFichePoste($ficheposte));
 
+        $structure = null;
+        if ($agent AND $agent->getAffectationPrincipale()) $structure = $agent->getAffectationPrincipale()->getStructure();
         $vars = [
             'ficheposte' => $ficheposte,
             'agent' => $agent,
-            'structure' => ($agent)?$agent->getAffectationPrincipale()->getStructure():null,
+            'structure' => $structure,
         ];
         $rendu = $this->getRenduService()->generateRenduByTemplateCode(PdfTemplate::FICHE_POSTE, $vars);
 
@@ -323,42 +319,6 @@ class FichePosteController extends AbstractActionController {
         }
     }
 
-    /** GESTION DES INFORMATIONS DE POSTE *****************************************************************************/
-
-    public function modifierInformationPosteAction() : ViewModel
-    {
-        $ficheposte = $this->getFichePosteService()->getRequestedFichePoste($this);
-
-        $create = false;
-        /** @var ?Poste $poste */
-        $poste = $ficheposte->getPoste();
-        if ($ficheposte->getPoste() === null)  {
-            $create = true;
-            $poste = new Poste();
-            $poste->setFicheposte($ficheposte);
-        }
-
-        $form = $this->getPosteForm();
-        $form->setAttribute('action', $this->url()->fromRoute('fiche-poste/modifier-information-poste', ['fiche-poste' => $ficheposte->getId()], [], true));
-        $form->bind($poste);
-
-        $request = $this->getRequest();
-        if ($request->isPost()) {
-            $data = $request->getPost();
-            $form->setData($data);
-            if ($form->isValid()) {
-                if ($create) $this->getPosteService()->create($poste);
-                else $this->getPosteService()->update($poste);
-            }
-        }
-
-        $vm = new ViewModel([
-            'title' => "Modifier les informations sur le poste",
-            'form' => $form,
-        ]);
-        $vm->setTemplate('application/default/default-form');
-        return $vm;
-    }
 
     /** GESTION DES ETATS DES FICHES POSTES ***************************************************************************/
 
@@ -745,102 +705,7 @@ class FichePosteController extends AbstractActionController {
         ]);
     }
 
-    /** EXPERTISE *****************************************************************************************************/
-
-    public function ajouterExpertiseAction() : ViewModel
-    {
-        $ficheposte = $this->getFichePosteService()->getRequestedFichePoste($this);
-        $expertise = new Expertise();
-        $expertise->setFicheposte($ficheposte);
-
-        $form = $this->getExpertiseForm();
-        $form->setAttribute('action', $this->url()->fromRoute('fiche-poste/ajouter-expertise', ['fiche-poste' => $ficheposte->getId()], [], true));
-        $form->bind($expertise);
-
-        /** @var Request $request */
-        $request = $this->getRequest();
-        if ($request->isPost()) {
-            $data = $request->getPost();
-            $form->setData($data);
-            if ($form->isValid()) {
-                $this->getExpertiseService()->create($expertise);
-            }
-        }
 
-        $vm = new ViewModel();
-        $vm->setTemplate('application/default/default-form');
-        $vm->setVariables([
-            'title' => "Ajout d'une expertise",
-            'form' => $form,
-        ]);
-        return $vm;
-    }
-
-    public function modifierExpertiseAction() : ViewModel
-    {
-        $expertise = $this->getExpertiseService()->getRequestedExpertise($this);
-
-        $form = $this->getExpertiseForm();
-        $form->setAttribute('action', $this->url()->fromRoute('fiche-poste/modifier-expertise', ['expertise' => $expertise->getId()], [], true));
-        $form->bind($expertise);
-
-        /** @var Request $request */
-        $request = $this->getRequest();
-        if ($request->isPost()) {
-            $data = $request->getPost();
-            $form->setData($data);
-            if ($form->isValid()) {
-                $this->getExpertiseService()->update($expertise);
-            }
-        }
-
-        $vm = new ViewModel();
-        $vm->setTemplate('application/default/default-form');
-        $vm->setVariables([
-            'title' => "Modification d'une expertise",
-            'form' => $form,
-        ]);
-        return $vm;
-    }
-
-    public function historiserExpertiseAction() : Response
-    {
-        $expertise = $this->getExpertiseService()->getRequestedExpertise($this);
-        $this->getExpertiseService()->historise($expertise);
-        return $this->redirect()->toRoute('fiche-poste/editer', ['fiche-poste' => $expertise->getFicheposte()->getId()], [], true);
-    }
-
-    public function restaurerExpertiseAction() : Response
-    {
-        $expertise = $this->getExpertiseService()->getRequestedExpertise($this);
-        $this->getExpertiseService()->restore($expertise);
-        return $this->redirect()->toRoute('fiche-poste/editer', ['fiche-poste' => $expertise->getFicheposte()->getId()], [], true);
-    }
-
-    public function supprimerExpertiseAction() : ViewModel
-    {
-        $expertise = $this->getExpertiseService()->getRequestedExpertise($this);
-
-        /** @var Request $request */
-        $request = $this->getRequest();
-        if ($request->isPost()) {
-            $data = $request->getPost();
-            if ($data["reponse"] === "oui") $this->getExpertiseService()->delete($expertise);
-            //return $this->redirect()->toRoute('role', [], [], true);
-            exit();
-        }
-
-        $vm = new ViewModel();
-        if ($expertise !== null) {
-            $vm->setTemplate('application/default/confirmation');
-            $vm->setVariables([
-                'title' => "Suppression de l'expertise " . $expertise->getLibelle(),
-                'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
-                'action' => $this->url()->fromRoute('fiche-poste/supprimer-expertise', ["expertise" => $expertise->getId()], [], true),
-            ]);
-        }
-        return $vm;
-    }
 
     /** RIFSEEP ET NBI  ***********************************************************************************************/
 
diff --git a/module/Application/src/Application/Controller/FichePosteControllerFactory.php b/module/FichePoste/src/FichePoste/Controller/FichePosteControllerFactory.php
similarity index 91%
rename from module/Application/src/Application/Controller/FichePosteControllerFactory.php
rename to module/FichePoste/src/FichePoste/Controller/FichePosteControllerFactory.php
index 50fe96310..56a5e35b7 100644
--- a/module/Application/src/Application/Controller/FichePosteControllerFactory.php
+++ b/module/FichePoste/src/FichePoste/Controller/FichePosteControllerFactory.php
@@ -1,11 +1,9 @@
 <?php
 
-namespace Application\Controller;
+namespace FichePoste\Controller;
 
 use Application\Form\AjouterFicheMetier\AjouterFicheMetierForm;
 use Application\Form\AssocierTitre\AssocierTitreForm;
-use Application\Form\Expertise\ExpertiseForm;
-use Application\Form\Poste\PosteForm;
 use Application\Form\Rifseep\RifseepForm;
 use Application\Form\SpecificitePoste\SpecificitePosteForm;
 use Application\Service\Activite\ActiviteService;
@@ -13,13 +11,13 @@ use Application\Service\ActivitesDescriptionsRetirees\ActivitesDescriptionsRetir
 use Application\Service\Agent\AgentService;
 use Application\Service\ApplicationsRetirees\ApplicationsRetireesService;
 use Application\Service\CompetencesRetirees\CompetencesRetireesService;
-use Application\Service\Expertise\ExpertiseService;
 use Application\Service\FicheMetier\FicheMetierService;
-use Application\Service\FichePoste\FichePosteService;
 use Application\Service\Notification\NotificationService;
 use Application\Service\ParcoursDeFormation\ParcoursDeFormationService;
-use Application\Service\Poste\PosteService;
 use Application\Service\SpecificitePoste\SpecificitePosteService;
+use FichePoste\Form\Expertise\ExpertiseForm;
+use FichePoste\Service\Expertise\ExpertiseService;
+use FichePoste\Service\FichePoste\FichePosteService;
 use Interop\Container\ContainerInterface;
 use Psr\Container\ContainerExceptionInterface;
 use Psr\Container\NotFoundExceptionInterface;
@@ -52,7 +50,6 @@ class FichePosteControllerFactory {
          * @var ExpertiseService $expertiseService
          * @var NotificationService $notificationService
          * @var ParcoursDeFormationService $parcoursService
-         * @var PosteService $posteService
          * @var SpecificitePosteService $specificitePosteService
          * @var ValidationInstanceService $validationInstanceService
          */
@@ -68,7 +65,6 @@ class FichePosteControllerFactory {
         $etatService = $container->get(EtatService::class);
         $expertiseService = $container->get(ExpertiseService::class);
         $notificationService = $container->get(NotificationService::class);
-        $posteService = $container->get(PosteService::class);
         $specificitePosteService = $container->get(SpecificitePosteService::class);
         $parcoursService = $container->get(ParcoursDeFormationService::class);
         $validationInstanceService = $container->get(ValidationInstanceService::class);
@@ -77,7 +73,6 @@ class FichePosteControllerFactory {
          * @var AjouterFicheMetierForm $ajouterFicheMetierForm
          * @var AssocierTitreForm $associerTitreForm
          * @var ExpertiseForm $expertiseForm
-         * @var PosteForm $posteForm
          * @var RifseepForm $rifseepForm
          * @var SelectionEtatForm $selectionEtatForm
          * @var SpecificitePosteForm $specificiftePosteForm
@@ -85,7 +80,6 @@ class FichePosteControllerFactory {
         $ajouterFicheMetierForm = $container->get('FormElementManager')->get(AjouterFicheMetierForm::class);
         $associerTitreForm = $container->get('FormElementManager')->get(AssocierTitreForm::class);
         $expertiseForm = $container->get('FormElementManager')->get(ExpertiseForm::class);
-        $posteForm = $container->get('FormElementManager')->get(PosteForm::class);
         $rifseepForm = $container->get('FormElementManager')->get(RifseepForm::class);
         $selectionEtatForm = $container->get('FormElementManager')->get(SelectionEtatForm::class);
         $specificiftePosteForm = $container->get('FormElementManager')->get(SpecificitePosteForm::class);
@@ -107,7 +101,6 @@ class FichePosteControllerFactory {
         $controller->setEtatService($etatService);
         $controller->setExpertiseService($expertiseService);
         $controller->setNotificationService($notificationService);
-        $controller->setPosteService($posteService);
         $controller->setSpecificitePosteService($specificitePosteService);
         $controller->setParcoursDeFormationService($parcoursService);
         $controller->setValidationInstanceService($validationInstanceService);
@@ -115,7 +108,6 @@ class FichePosteControllerFactory {
         $controller->setAjouterFicheTypeForm($ajouterFicheMetierForm);
         $controller->setAssocierTitreForm($associerTitreForm);
         $controller->setExpertiseForm($expertiseForm);
-        $controller->setPosteForm($posteForm);
         $controller->setRifseepForm($rifseepForm);
         $controller->setSelectionEtatForm($selectionEtatForm);
         $controller->setSpecificitePosteForm($specificiftePosteForm);
diff --git a/module/FichePoste/src/FichePoste/Controller/PosteController.php b/module/FichePoste/src/FichePoste/Controller/PosteController.php
new file mode 100644
index 000000000..254c1363c
--- /dev/null
+++ b/module/FichePoste/src/FichePoste/Controller/PosteController.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace FichePoste\Controller;
+
+use FichePoste\Entity\Db\Poste;
+use FichePoste\Form\Poste\PosteFormAwareTrait;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
+use FichePoste\Service\Poste\PosteServiceAwareTrait;
+use Laminas\Mvc\Controller\AbstractActionController;
+use Laminas\View\Model\ViewModel;
+
+class PosteController extends AbstractActionController {
+    use FichePosteServiceAwareTrait;
+    use PosteServiceAwareTrait;
+    use PosteFormAwareTrait;
+
+    /** GESTION DES INFORMATIONS DE POSTE *****************************************************************************/
+
+    public function modifierInformationPosteAction() : ViewModel
+    {
+        $ficheposte = $this->getFichePosteService()->getRequestedFichePoste($this);
+
+        $create = false;
+        /** @var ?Poste $poste */
+        $poste = $ficheposte->getPoste();
+        if ($ficheposte->getPoste() === null)  {
+            $create = true;
+            $poste = new Poste();
+            $poste->setFicheposte($ficheposte);
+        }
+
+        $form = $this->getPosteForm();
+        $form->setAttribute('action', $this->url()->fromRoute('fiche-poste/modifier-information-poste', ['fiche-poste' => $ficheposte->getId()], [], true));
+        $form->bind($poste);
+
+        $request = $this->getRequest();
+        if ($request->isPost()) {
+            $data = $request->getPost();
+            $form->setData($data);
+            if ($form->isValid()) {
+                if ($create) $this->getPosteService()->create($poste);
+                else $this->getPosteService()->update($poste);
+            }
+        }
+
+        $vm = new ViewModel([
+            'title' => "Modifier les informations sur le poste",
+            'form' => $form,
+        ]);
+        $vm->setTemplate('application/default/default-form');
+        return $vm;
+    }
+}
\ No newline at end of file
diff --git a/module/FichePoste/src/FichePoste/Controller/PosteControllerFactory.php b/module/FichePoste/src/FichePoste/Controller/PosteControllerFactory.php
new file mode 100644
index 000000000..759241ab6
--- /dev/null
+++ b/module/FichePoste/src/FichePoste/Controller/PosteControllerFactory.php
@@ -0,0 +1,38 @@
+<?php
+
+namespace FichePoste\Controller;
+
+use FichePoste\Form\Poste\PosteForm;
+use FichePoste\Service\FichePoste\FichePosteService;
+use FichePoste\Service\Poste\PosteService;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\ContainerInterface;
+use Psr\Container\NotFoundExceptionInterface;
+
+class PosteControllerFactory {
+
+    /**
+     * @param ContainerInterface $container
+     * @return PosteController
+     * @throws ContainerExceptionInterface
+     * @throws NotFoundExceptionInterface
+     */
+    public function __invoke(ContainerInterface $container) : PosteController
+    {
+        /**
+         * @var FichePosteService $fichePosteService
+         * @var PosteService $posteService
+         * @var PosteForm $posteForm
+         */
+        $fichePosteService = $container->get(FichePosteService::class);
+        $posteService = $container->get(PosteService::class);
+        $posteForm = $container->get('FormElementManager')->get(PosteForm::class);
+
+        $controller = new PosteController();
+        $controller->setFichePosteService($fichePosteService);
+        $controller->setPosteService($posteService);
+        $controller->setPosteForm($posteForm);
+
+        return $controller;
+    }
+}
\ No newline at end of file
diff --git a/module/FichePoste/src/FichePoste/Entity/Db/Expertise.php b/module/FichePoste/src/FichePoste/Entity/Db/Expertise.php
new file mode 100644
index 000000000..c7500918c
--- /dev/null
+++ b/module/FichePoste/src/FichePoste/Entity/Db/Expertise.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace FichePoste\Entity\Db;
+
+
+use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
+use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
+
+class Expertise implements HistoriqueAwareInterface {
+    use HistoriqueAwareTrait;
+
+    private ?int $id = null;
+    private ?FichePoste $ficheposte = null;
+    private ?string $libelle = null;
+    private ?string $description = null;
+
+    public function getId() : ?int
+    {
+        return $this->id;
+    }
+
+    public function getFicheposte() : ?FichePoste
+    {
+        return $this->ficheposte;
+    }
+
+    public function setFicheposte(FichePoste $ficheposte) : void
+    {
+        $this->ficheposte = $ficheposte;
+    }
+
+    public function getLibelle() : ?string
+    {
+        return $this->libelle;
+    }
+
+    public function setLibelle(?string $libelle) : void
+    {
+        $this->libelle = $libelle;
+    }
+
+    public function getDescription() : ?string
+    {
+        return $this->description;
+    }
+
+    public function setDescription(?string $description) : void
+    {
+        $this->description = $description;
+    }
+}
diff --git a/module/Application/src/Application/Entity/Db/FichePoste.php b/module/FichePoste/src/FichePoste/Entity/Db/FichePoste.php
similarity index 55%
rename from module/Application/src/Application/Entity/Db/FichePoste.php
rename to module/FichePoste/src/FichePoste/Entity/Db/FichePoste.php
index 708a4c847..25f567e87 100644
--- a/module/Application/src/Application/Entity/Db/FichePoste.php
+++ b/module/FichePoste/src/FichePoste/Entity/Db/FichePoste.php
@@ -1,18 +1,29 @@
 <?php
 
-namespace Application\Entity\Db;
-
+namespace FichePoste\Entity\Db;
+
+use Application\Entity\Db\Activite;
+use Application\Entity\Db\ActiviteDescription;
+use Application\Entity\Db\Agent;
+use Application\Entity\Db\FicheMetier;
+use Application\Entity\Db\FicheMetierActivite;
+use Application\Entity\Db\FicheposteActiviteDescriptionRetiree;
+use Application\Entity\Db\FicheposteApplicationRetiree;
+use Application\Entity\Db\FicheposteCompetenceRetiree;
+use Application\Entity\Db\FicheTypeExterne;
 use Application\Entity\Db\MacroContent\FichePosteMacroTrait;
+use Application\Entity\Db\SpecificitePoste;
 use Application\Entity\HasAgentInterface;
 use DateTime;
 use Doctrine\Common\Collections\ArrayCollection;
-use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
-use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
+use Doctrine\Common\Collections\Collection;
+use Laminas\Permissions\Acl\Resource\ResourceInterface;
 use UnicaenApp\Exception\RuntimeException;
 use UnicaenEtat\Entity\Db\HasEtatInterface;
 use UnicaenEtat\Entity\Db\HasEtatTrait;
+use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
+use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
 use UnicaenValidation\Entity\HasValidationsTrait;
-use Laminas\Permissions\Acl\Resource\ResourceInterface;
 
 class FichePoste implements ResourceInterface, HistoriqueAwareInterface, HasAgentInterface, HasEtatInterface {
     use FichePosteMacroTrait;
@@ -24,113 +35,92 @@ class FichePoste implements ResourceInterface, HistoriqueAwareInterface, HasAgen
     const TYPE_INCLUSIF = 'INCLUSIF';
     const TYPE_GENRE    = 'GENRE';
 
-    public function getResourceId()
+    public function getResourceId() : string
     {
         return 'FichePoste';
     }
 
-    /** @var int */
-    private $id;
-    /** @var string */
-    private $libelle;
-    /** @var Agent */
-    private $agent;
-
-    /** @var SpecificitePoste */
-    private $specificite;
-    /** @var ArrayCollection (Expertise) */
-    private $expertises;
-
-    /** @var int */
-    private $rifseep;
-    /** @var int */
-    private $nbi;
-
-    /** @var DateTime|null  */
-    private $finValidite;
-
-    /** @var ArrayCollection (FicheTypeExterne)*/
-    private $fichesMetiers;
-    /** @var ArrayCollection (FicheposteActiviteDescriptionRetiree) */
-    private $descriptionsRetirees;
-    /** @var ArrayCollection (FicheposteApplicationRetiree) */
-    private $applicationsRetirees;
-    /** @var ArrayCollection (FicheposteCompetenceRetiree) */
-    private $competencesRetirees;
-
-    /** @var array */
-    private $dictionnaires;
+    private ?int $id = null;
+    private ?string $libelle = null;
+    private ?Agent $agent = null;
+    private ?SpecificitePoste $specificite = null;
+    private ?DateTime $finValidite = null;
 
     private ?Poste $poste = null;
+    private Collection $expertises;
+    private ?int $rifseep = null;
+    private ?int $nbi = null;
 
+    private Collection $fichesMetiers;
+    private Collection $descriptionsRetirees;
+    private Collection $applicationsRetirees;
+    private Collection $competencesRetirees;
+    private array $dictionnaires = [];
 
     public function __invoke()
     {
+        $this->expertises = new ArrayCollection();
         $this->fichesMetiers = new ArrayCollection();
         $this->descriptionsRetirees = new ArrayCollection();
         $this->applicationsRetirees = new ArrayCollection();
         $this->competencesRetirees = new ArrayCollection();
     }
 
+    /** DESCRIPTION FICHE  *************************************************************************************/
+
     public function getId() : int
     {
         return $this->id;
     }
 
-    /**
-     * @return string|null
-     */
     public function getLibelle() : ?string
     {
         return $this->libelle;
     }
 
-    /**
-     * @param string|null $libelle
-     * @return FichePoste
-     */
-    public function setLibelle(?string $libelle) : FichePoste
+    public function setLibelle(?string $libelle) : void
     {
         $this->libelle = $libelle;
-        return $this;
     }
 
-    /**
-     * @return Agent|null
-     */
     public function getAgent() : ?Agent
     {
         return $this->agent;
     }
 
-    /**
-     * @param Agent|null $agent
-     * @return FichePoste
-     */
-    public function setAgent(?Agent $agent) : FichePoste
+    public function setAgent(?Agent $agent) : void
     {
         $this->agent = $agent;
-        return $this;
     }
 
-    /**
-     * @return SpecificitePoste|null
-     */
     public function getSpecificite() : ?SpecificitePoste
     {
         return $this->specificite;
     }
 
-    /**
-     * @param SpecificitePoste|null $specificite
-     * @return FichePoste
-     */
-    public function setSpecificite(?SpecificitePoste $specificite) : FichePoste
+    public function setSpecificite(?SpecificitePoste $specificite) : void
     {
         $this->specificite = $specificite;
-        return $this;
     }
 
+    public function getFinValidite(): ?DateTime
+    {
+        return $this->finValidite;
+    }
+
+    public function setFinValidite(?DateTime $finValidite): void
+    {
+        $this->finValidite = $finValidite;
+    }
+
+    public function isEnCours(?DateTime $date = null) : bool
+    {
+        if ($date === null) $date = new DateTime();
+        return ($this->finValidite === null OR $date < $this->getFinValidite());
+    }
+
+    /** POSTE *************************************************************************************************/
+
     public function getPoste() : ?Poste
     {
         return $this->poste;
@@ -141,102 +131,77 @@ class FichePoste implements ResourceInterface, HistoriqueAwareInterface, HasAgen
         $this->poste = $poste;
     }
 
-    /**
-     * @return int
-     */
-    public function getRifseep(): ?int
+    /** @return Expertise[] */
+    public function getExpertises() : array
     {
-        return $this->rifseep;
+        return $this->expertises->toArray();
     }
 
-    /**
-     * @param int|null $rifseep
-     * @return FichePoste
-     */
-    public function setRifseep(?int $rifseep): FichePoste
+    public function getCurrentExpertises(?DateTime $date = null) : array
     {
-        $this->rifseep = $rifseep;
-        return $this;
+        if ($date === null) $date = (new DateTime());
+
+        $expertises = [];
+        foreach ($this->expertises as $expertise) {
+            if ($expertise->estNonHistorise($date)) {
+                $expertises[] = $expertise;
+            }
+        }
+        return $expertises;
     }
 
-    /**
-     * @return int
-     */
-    public function getNbi(): ?int
+    public function hasExpertise() : bool
     {
-        return $this->nbi;
+        foreach ($this->fichesMetiers as $fichesMetier) {
+            if ($fichesMetier->getFicheType()->hasExpertise()) return true;
+        }
+        return false;
     }
 
-    /**
-     * @param int|null $nbi
-     * @return FichePoste
-     */
-    public function setNbi(?int $nbi): FichePoste
+    public function getRifseep(): ?int
     {
-        $this->nbi = $nbi;
-        return $this;
+        return $this->rifseep;
     }
 
-    /**
-     * @return DateTime|null
-     */
-    public function getFinValidite(): ?DateTime
+    public function setRifseep(?int $rifseep): void
     {
-        return $this->finValidite;
+        $this->rifseep = $rifseep;
     }
 
-    /**
-     * @param DateTime|null $finValidite
-     * @return FichePoste
-     */
-    public function setFinValidite(?DateTime $finValidite): FichePoste
+    public function getNbi(): ?int
     {
-        $this->finValidite = $finValidite;
-        return $this;
+        return $this->nbi;
     }
 
-    /**
-     * @param DateTime|null $date
-     * @return bool
-     */
-    public function isEnCours(?DateTime $date = null) : bool
+    public function setNbi(?int $nbi): void
     {
-        if ($date === null) $date = new DateTime();
-        return ($this->finValidite === null OR $date < $this->getFinValidite());
+        $this->nbi = $nbi;
     }
 
+    /** COMPOSITION ********************************************************************************************/
+
+    // FICHES METIERS --------------------------------------------------------
+
     /**
      * @return FicheTypeExterne[]
      */
-    public function getFichesMetiers()
+    public function getFichesMetiers() : array
     {
         return $this->fichesMetiers->toArray();
     }
 
-    /**
-     * @var FicheTypeExterne $type
-     * @return FichePoste
-     */
-    public function addFicheTypeExterne($type)
+    public function addFicheTypeExterne(FicheTypeExterne $type) : void
     {
         $this->fichesMetiers->add($type);
-        return $this;
     }
 
-    /**
-     * @var FicheTypeExterne $type
-     * @return FichePoste
-     */
-    public function removeFicheTypeExterne($type)
+    public function removeFicheTypeExterne(FicheTypeExterne $type) : void
     {
         $this->fichesMetiers->removeElement($type);
-        return $this;
     }
 
-    /**
-     * @return FicheTypeExterne
-     */
-    public function getFicheTypeExternePrincipale() {
+    public function getFicheTypeExternePrincipale() : ?FicheTypeExterne
+    {
         $res = [];
         /** @var FicheTypeExterne $ficheMetier */
         foreach ($this->fichesMetiers as $ficheMetier) {
@@ -253,7 +218,7 @@ class FichePoste implements ResourceInterface, HistoriqueAwareInterface, HasAgen
         return null;
     }
 
-    public function getQuotiteTravaillee()
+    public function getQuotiteTravaillee() : int
     {
         $somme = 0;
         /** @var FicheTypeExterne $ficheMetier */
@@ -263,21 +228,18 @@ class FichePoste implements ResourceInterface, HistoriqueAwareInterface, HasAgen
         return $somme;
     }
 
-    /** Descriptions Retirées ******************************************************************************************/
+    // DESCRIPTIONS RETIREES ---------------------------------------------
 
-    /** @return ArrayCollection */
-    public function getDescriptionsRetirees() {
-        return $this->descriptionsRetirees;
+    /** @return FicheposteActiviteDescriptionRetiree[] */
+    public function getDescriptionsRetirees() : array
+    {
+        return $this->descriptionsRetirees->toArray();
     }
 
-    /**
-     * @param FicheMetier $fichemetier
-     * @param Activite $activite
-     * @return array
-     */
-    public function getDescriptionsRetireesByFicheMetierAndActivite(FicheMetier $fichemetier, Activite $activite) : array{
+    /** @return FicheposteActiviteDescriptionRetiree[] */
+    public function getDescriptionsRetireesByFicheMetierAndActivite(FicheMetier $fichemetier, Activite $activite) : array
+    {
         $result = [];
-        /** @var FicheposteActiviteDescriptionRetiree $descriptionsRetiree */
         foreach ($this->getDescriptionsRetirees() as $descriptionsRetiree) {
             if ($descriptionsRetiree->getFicheMetier() === $fichemetier AND $descriptionsRetiree->getActivite() === $activite) {
                 $result[] = $descriptionsRetiree;
@@ -286,111 +248,80 @@ class FichePoste implements ResourceInterface, HistoriqueAwareInterface, HasAgen
         return $result;
     }
 
-    /** @param FicheposteActiviteDescriptionRetiree $description */
-    public function addDescriptionRetiree(FicheposteActiviteDescriptionRetiree $description) {
+    public function addDescriptionRetiree(FicheposteActiviteDescriptionRetiree $description) : void
+    {
         $this->descriptionsRetirees->add($description);
     }
 
-    /** @param FicheposteActiviteDescriptionRetiree $description */
-    public function removeDescriptionRetiree(FicheposteActiviteDescriptionRetiree $description) {
+    public function removeDescriptionRetiree(FicheposteActiviteDescriptionRetiree $description) : void
+    {
         $this->descriptionsRetirees->removeElement($description);
     }
 
-    public function clearDescriptionsRetirees() {
+    public function clearDescriptionsRetirees() : void
+    {
         $this->descriptionsRetirees->clear();
     }
 
-    /** Competences Retirées ******************************************************************************************/
+    // COMPETENCES RETIREES --------------------------------------------------
 
-    /** @return ArrayCollection */
-    public function getCompetencesRetirees() {
-        return $this->competencesRetirees;
+    /** @return FicheposteCompetenceRetiree[] */
+    public function getCompetencesRetirees() : array
+    {
+        return $this->competencesRetirees->toArray();
     }
 
-    /** @param FicheposteCompetenceRetiree $competence */
-    public function addCompetenceRetiree(FicheposteCompetenceRetiree $competence) {
+    public function addCompetenceRetiree(FicheposteCompetenceRetiree $competence) : void
+    {
         $this->competencesRetirees->add($competence);
     }
 
-    /** @param FicheposteCompetenceRetiree $competence */
-    public function removeCompetenceRetiree(FicheposteCompetenceRetiree $competence) {
+    public function removeCompetenceRetiree(FicheposteCompetenceRetiree $competence) : void
+    {
         $this->competencesRetirees->removeElement($competence);
     }
 
-    public function clearCompetencesRetirees() {
+    public function clearCompetencesRetirees() : void
+    {
         $this->competencesRetirees->clear();
     }
 
-    /** Applications Retirées *****************************************************************************************/
+    // APPLICATIONS RETIREES --------------------------------------------------
 
-    /** @return ArrayCollection */
-    public function getApplicationsRetirees() {
-        return $this->applicationsRetirees;
+    /** @return FicheposteApplicationRetiree[] */
+    public function getApplicationsRetirees() : array
+    {
+        return $this->applicationsRetirees->toArray();
     }
 
-    /** @param FicheposteApplicationRetiree $application */
-    public function addApplicationRetiree(FicheposteApplicationRetiree $application) {
+    public function addApplicationRetiree(FicheposteApplicationRetiree $application) : void
+    {
         $this->applicationsRetirees->add($application);
     }
 
-    /** @param FicheposteApplicationRetiree $application */
-    public function removeApplicationRetiree(FicheposteApplicationRetiree $application) {
-        $this->applicationsRetirees->removeElement($application);
-    }
-
-    public function clearApplicationsRetirees() {
-        $this->applicationsRetirees->clear();
-    }
-
-    /** EXPERTISE *****************************************************************************************************/
-
-    /**
-     * @return ArrayCollection
-     */
-    public function getExpertises()
+    public function removeApplicationRetiree(FicheposteApplicationRetiree $application) : void
     {
-        return $this->expertises;
+        $this->applicationsRetirees->removeElement($application);
     }
 
-    /**
-     * @param DateTime $date
-     * @return Expertise[]
-     */
-    public function getCurrentExpertises($date = null)
+    public function clearApplicationsRetirees() : void
     {
-        if ($date === null) $date = (new DateTime());
-
-        $expertises = [];
-        /** @var Expertise $expertise */
-        foreach ($this->expertises as $expertise) {
-            if ($expertise->estNonHistorise($date)) {
-                $expertises[] = $expertise;
-            }
-        }
-        return $expertises;
+        $this->applicationsRetirees->clear();
     }
 
-    /** Fonctions pour simplifier  */
+    /** Fonctions pour simplifier  *************************************************/
 
-    /**
-     * @param FicheMetierActivite $activite
-     * @param DateTime $date
-     * @return ActiviteDescription[]
-     */
+    /** @return ActiviteDescription[] */
     public function getDescriptions(FicheMetierActivite $activite, DateTime $date) : array
     {
         $dictionnaire = $activite->getActivite()->getDescriptions($date);
         return $dictionnaire;
     }
 
-    /**
-     * @param FicheMetierActivite $FTActivite
-     * @param DateTime $date
-     * @return ActiviteDescription[]
-     */
+    /** @return ActiviteDescription[] */
     public function getDescriptionsConservees(FicheMetierActivite $FTActivite, DateTime $date) : array
     {
-        /** @var ActiviteDescription[] $descriptions */
+        /** @var ActiviteDescription $descriptions */
         $descriptions = $FTActivite->getActivite()->getDescriptions($date);
         $dictionnaire = [];
         foreach ($descriptions as $description) {
@@ -423,13 +354,7 @@ class FichePoste implements ResourceInterface, HistoriqueAwareInterface, HasAgen
         return true;
     }
 
-    public function hasExpertise() {
-        /** @var FicheTypeExterne $fichesMetier */
-        foreach ($this->fichesMetiers as $fichesMetier) {
-            if ($fichesMetier->getFicheType()->hasExpertise()) return true;
-        }
-        return false;
-    }
+
 
     /** Fonction pour les affichages dans les documents ***************************************************************/
 
@@ -443,62 +368,27 @@ class FichePoste implements ResourceInterface, HistoriqueAwareInterface, HasAgen
         return $this->dictionnaires[$clef];
     }
 
-    /**
-     * @param string $type
-     * @return string|null
-     */
-    public function getLibelleMetierPrincipal($type = FichePoste::TYPE_INCLUSIF) : ?string
+    public function getLibelleMetierPrincipal(string $type = FichePoste::TYPE_INCLUSIF) : ?string
     {
         if ($this->getFicheTypeExternePrincipale() === null) return null;
         $metier = $this->getFicheTypeExternePrincipale()->getFicheType()->getMetier();
 
         switch ($type) {
-            case FichePoste::TYPE_INCLUSIF : return $metier->getLibelle(true);
+            case FichePoste::TYPE_INCLUSIF : return $metier->getLibelle();
             case FichePoste::TYPE_GENRE :
-                if ($this->agent === null) return $metier->getLibelle(true);
+                if ($this->agent === null) return $metier->getLibelle();
                 if ($this->agent->isHomme() AND $metier->getLibelleMasculin()) return $metier->getLibelleMasculin();
                 if ($this->agent->isFemme() AND $metier->getLibelleFeminin()) return $metier->getLibelleFeminin();
-                return $metier->getLibelle(true);
+                return $metier->getLibelle();
             case FichePoste::TYPE_DEFAULT : return $metier->getLibelle(false);
         }
 
         return $metier->getLibelle();
     }
 
-    /**
-     * @return string
-     */
     public function generateTag() : string
     {
         return 'FICHEPOSTE_' . $this->getId();
     }
 
-    /** INTERFACE POUR LES COLLECTIONS DE COMPETENCES */
-//    public function getCompetenceCollection() {
-//        $collection = new ArrayCollection();
-//        /** @var FicheTypeExterne $ficheType */
-//        foreach ($this->fichesMetiers as $ficheType) {
-//            $ficheMetier = $ficheType->getFicheType();
-//            foreach ($ficheMetier->getCompetenceCollection() as $competence) $collection->add($competence);
-//        }
-//        return $collection;
-//    }
-//
-//    public function getCompetenceListe(bool $avecHisto = false)
-//    {
-//        $dictionnaire = [];
-//        foreach ($this->getCompetenceCollection() as $competenceElement) {
-//            $element = [];
-//            $element['entite'] = $competenceElement;
-//            $element['raison'] = null;
-//            $element['conserve'] = true;
-//            $dictionnaire[] = $element;
-//        }
-//        return $dictionnaire;
-//    }
-//
-//    public function hasCompetence(Competence $competence) : bool
-//    {
-//        return false;
-//    }
 }
\ No newline at end of file
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Expertise.dcm.xml b/module/FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.Expertise.dcm.xml
similarity index 91%
rename from module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Expertise.dcm.xml
rename to module/FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.Expertise.dcm.xml
index 1a7e49eef..d81dca5cd 100644
--- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Expertise.dcm.xml
+++ b/module/FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.Expertise.dcm.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
-    <entity name="Application\Entity\Db\Expertise" table="ficheposte_expertise">
+    <entity name="FichePoste\Entity\Db\Expertise" table="ficheposte_expertise">
 
         <id name="id" type="integer" column="id">
             <generator strategy="IDENTITY"/>
         </id>
 
-        <many-to-one target-entity="Application\Entity\Db\FichePoste"  field="ficheposte">
+        <many-to-one target-entity="FichePoste\Entity\Db\FichePoste"  field="ficheposte">
             <join-column name="ficheposte_id" referenced-column-name="id"/>
         </many-to-one>
         <field name="libelle"           type="string" length="255"      column="libelle"                nullable="false"/>
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FichePoste.dcm.xml b/module/FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.FichePoste.dcm.xml
similarity index 92%
rename from module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FichePoste.dcm.xml
rename to module/FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.FichePoste.dcm.xml
index d4b90cece..dd744e313 100644
--- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.FichePoste.dcm.xml
+++ b/module/FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.FichePoste.dcm.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
-    <entity name="Application\Entity\Db\FichePoste" table="ficheposte">
+    <entity name="FichePoste\Entity\Db\FichePoste" table="ficheposte">
 
         <id name="id" type="integer" column="id">
             <generator strategy="IDENTITY"/>
@@ -14,7 +14,7 @@
 
         <one-to-one field="specificite" target-entity="Application\Entity\Db\SpecificitePoste" mapped-by="fiche"/>
 
-        <one-to-many target-entity="Application\Entity\Db\Expertise"                mapped-by="ficheposte" field="expertises"/>
+        <one-to-many target-entity="FichePoste\Entity\Db\Expertise"                mapped-by="ficheposte" field="expertises"/>
 
         <one-to-many target-entity="Application\Entity\Db\FicheTypeExterne" mapped-by="fichePoste" field="fichesMetiers"/>
         <one-to-many target-entity="Application\Entity\Db\FicheposteApplicationRetiree" mapped-by="fichePoste" field="applicationsRetirees"/>
@@ -39,7 +39,7 @@
         </many-to-many>
 
         <field name="finValidite"     type="datetime"                 column="fin_validite"     nullable="false"/>
-        <one-to-one field="poste" target-entity="Application\Entity\Db\Poste" mapped-by="ficheposte"/>
+        <one-to-one field="poste" target-entity="FichePoste\Entity\Db\Poste" mapped-by="ficheposte"/>
         <!-- DONNEE POUR L'HISTORISATION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <field name="histoCreation"     type="datetime"                 column="histo_creation"     nullable="false"/>
         <field name="histoModification" type="datetime"                 column="histo_modification" nullable="false"/>
diff --git a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Poste.dcm.xml b/module/FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.Poste.dcm.xml
similarity index 91%
rename from module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Poste.dcm.xml
rename to module/FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.Poste.dcm.xml
index bad7d5e35..674423ab9 100644
--- a/module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Poste.dcm.xml
+++ b/module/FichePoste/src/FichePoste/Entity/Db/Mapping/FichePoste.Entity.Db.Poste.dcm.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
-    <entity name="Application\Entity\Db\Poste" table="ficheposte_poste">
+    <entity name="FichePoste\Entity\Db\Poste" table="ficheposte_poste">
 
         <id name="id" type="integer" column="id">
             <generator strategy="IDENTITY"/>
         </id>
 
         <!-- DATA -->
-        <one-to-one target-entity="Application\Entity\Db\FichePoste" field="ficheposte"  inversed-by="poste">
+        <one-to-one target-entity="FichePoste\Entity\Db\FichePoste" field="ficheposte"  inversed-by="poste">
             <join-column name="ficheposte_id" referenced-column-name="id" />
         </one-to-one>
         <field name="referentiel"  column="referentiel"      type="string"       length="1024"   />
diff --git a/module/Application/src/Application/Entity/Db/Poste.php b/module/FichePoste/src/FichePoste/Entity/Db/Poste.php
similarity index 97%
rename from module/Application/src/Application/Entity/Db/Poste.php
rename to module/FichePoste/src/FichePoste/Entity/Db/Poste.php
index f908132e9..2171db025 100644
--- a/module/Application/src/Application/Entity/Db/Poste.php
+++ b/module/FichePoste/src/FichePoste/Entity/Db/Poste.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Application\Entity\Db;
+namespace FichePoste\Entity\Db;
 
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
diff --git a/module/Application/src/Application/Form/Expertise/ExpertiseForm.php b/module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseForm.php
similarity index 66%
rename from module/Application/src/Application/Form/Expertise/ExpertiseForm.php
rename to module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseForm.php
index 870d5fde2..07bf64931 100644
--- a/module/Application/src/Application/Form/Expertise/ExpertiseForm.php
+++ b/module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseForm.php
@@ -1,9 +1,10 @@
 <?php
 
-namespace Application\Form\Expertise;
+namespace FichePoste\Form\Expertise;
 
 use Laminas\Form\Element\Button;
 use Laminas\Form\Element\Text;
+use Laminas\Form\Element\Textarea;
 use Laminas\Form\Form;
 use Laminas\InputFilter\Factory;
 
@@ -16,7 +17,8 @@ class ExpertiseForm extends Form {
             'type' => Text::class,
             'name' => 'libelle',
             'options' => [
-                'label' => "Libelle* :",
+                'label' => "Libellé <span class='icon icon-obligatoire' title='champ obligatoire'></span> :",
+                'label_options' => [ 'disable_html_escape' => true, ],
             ],
             'attributes' => [
                 'id' => 'libelle',
@@ -24,13 +26,12 @@ class ExpertiseForm extends Form {
         ]);
         // description
         $this->add([
+            'type' => Textarea::class,
             'name' => 'description',
-            'type' => 'textarea',
             'options' => [
-                'label' => 'Description : ',
-                'label_attributes' => [
-                    'class' => 'control-label',
-                ],
+                'label' => "Description <span class='icon icon-obligatoire' title='champ obligatoire'></span> :",
+                'label_options'     => [ 'disable_html_escape' => true, ],
+                'label_attributes'  => [ 'class' => 'control-label', ],
             ],
             'attributes' => [
                 'class' => 'type2 form-control',
@@ -42,9 +43,7 @@ class ExpertiseForm extends Form {
             'name' => 'creer',
             'options' => [
                 'label' => '<i class="fas fa-save"></i> Enregistrer' ,
-                'label_options' => [
-                    'disable_html_escape' => true,
-                ],
+                'label_options' => [ 'disable_html_escape' => true, ],
             ],
             'attributes' => [
                 'type' => 'submit',
diff --git a/module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseFormAwareTrait.php b/module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseFormAwareTrait.php
new file mode 100644
index 000000000..e03042305
--- /dev/null
+++ b/module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseFormAwareTrait.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace FichePoste\Form\Expertise;
+
+trait ExpertiseFormAwareTrait {
+
+    private ExpertiseForm $expertiseForm;
+
+    public function getExpertiseForm() : ExpertiseForm
+    {
+        return $this->expertiseForm;
+    }
+
+    public function setExpertiseForm(ExpertiseForm $expertiseForm) : void
+    {
+        $this->expertiseForm = $expertiseForm;
+    }
+}
diff --git a/module/Application/src/Application/Form/Expertise/ExpertiseFormFactory.php b/module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseFormFactory.php
similarity index 58%
rename from module/Application/src/Application/Form/Expertise/ExpertiseFormFactory.php
rename to module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseFormFactory.php
index 450a34cee..1d459ab80 100644
--- a/module/Application/src/Application/Form/Expertise/ExpertiseFormFactory.php
+++ b/module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseFormFactory.php
@@ -1,21 +1,24 @@
 <?php
 
-namespace Application\Form\Expertise;
+namespace FichePoste\Form\Expertise;
 
 use Interop\Container\ContainerInterface;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
 
 class ExpertiseFormFactory {
 
     /**
      * @param ContainerInterface $container
      * @return ExpertiseForm
+     * @throws ContainerExceptionInterface
+     * @throws NotFoundExceptionInterface
      */
-    public function __invoke(ContainerInterface $container)
+    public function __invoke(ContainerInterface $container) : ExpertiseForm
     {
         /** @var ExpertiseHydrator $hydrator */
         $hydrator = $container->get('HydratorManager')->get(ExpertiseHydrator::class);
 
-        /** @var ExpertiseForm $form */
         $form = new ExpertiseForm();
         $form->setHydrator($hydrator);
         return $form;
diff --git a/module/Application/src/Application/Form/Expertise/ExpertiseHydrator.php b/module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseHydrator.php
similarity index 82%
rename from module/Application/src/Application/Form/Expertise/ExpertiseHydrator.php
rename to module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseHydrator.php
index 561b1a42e..e9e0c2875 100644
--- a/module/Application/src/Application/Form/Expertise/ExpertiseHydrator.php
+++ b/module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseHydrator.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Application\Form\Expertise;
+namespace FichePoste\Form\Expertise;
 
-use Application\Entity\Db\Expertise;
+use FichePoste\Entity\Db\Expertise;
 use Laminas\Hydrator\HydratorInterface;
 
 class ExpertiseHydrator implements HydratorInterface {
@@ -26,7 +26,7 @@ class ExpertiseHydrator implements HydratorInterface {
      * @param Expertise $object
      * @return Expertise
      */
-    public function hydrate(array $data, $object)
+    public function hydrate(array $data, $object) : object
     {
         $object->setLibelle($data['libelle']);
         $object->setDescription($data['description']);
diff --git a/module/Application/src/Application/Form/Expertise/ExpertiseHydratorFactory.php b/module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseHydratorFactory.php
similarity index 53%
rename from module/Application/src/Application/Form/Expertise/ExpertiseHydratorFactory.php
rename to module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseHydratorFactory.php
index 2091965a3..a779dbbb8 100644
--- a/module/Application/src/Application/Form/Expertise/ExpertiseHydratorFactory.php
+++ b/module/FichePoste/src/FichePoste/Form/Expertise/ExpertiseHydratorFactory.php
@@ -1,16 +1,12 @@
 <?php
 
-namespace Application\Form\Expertise;
+namespace FichePoste\Form\Expertise;
 
 use Interop\Container\ContainerInterface;
 
 class ExpertiseHydratorFactory {
 
-    /**
-     * @param ContainerInterface $container
-     * @return ExpertiseHydrator
-     */
-    public function __invoke(ContainerInterface $container)
+    public function __invoke(ContainerInterface $container) : ExpertiseHydrator
     {
         /** @var  ExpertiseHydrator $hydrator*/
         $hydrator = new ExpertiseHydrator();
diff --git a/module/Application/src/Application/Form/Poste/PosteForm.php b/module/FichePoste/src/FichePoste/Form/Poste/PosteForm.php
similarity index 98%
rename from module/Application/src/Application/Form/Poste/PosteForm.php
rename to module/FichePoste/src/FichePoste/Form/Poste/PosteForm.php
index 1f6fec147..492ca8b66 100644
--- a/module/Application/src/Application/Form/Poste/PosteForm.php
+++ b/module/FichePoste/src/FichePoste/Form/Poste/PosteForm.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Application\Form\Poste;
+namespace FichePoste\Form\Poste;
 
 use Laminas\Form\Element\Button;
 use Laminas\Form\Element\Text;
diff --git a/module/FichePoste/src/FichePoste/Form/Poste/PosteFormAwareTrait.php b/module/FichePoste/src/FichePoste/Form/Poste/PosteFormAwareTrait.php
new file mode 100644
index 000000000..49a0263d1
--- /dev/null
+++ b/module/FichePoste/src/FichePoste/Form/Poste/PosteFormAwareTrait.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace FichePoste\Form\Poste;
+
+trait PosteFormAwareTrait {
+
+    private PosteForm $posteForm;
+
+    public function getPosteForm() : PosteForm
+    {
+        return $this->posteForm;
+    }
+
+    public function setPosteForm(PosteForm $posteForm) : void
+    {
+        $this->posteForm = $posteForm;
+    }
+}
diff --git a/module/Application/src/Application/Form/Poste/PosteFormFactory.php b/module/FichePoste/src/FichePoste/Form/Poste/PosteFormFactory.php
similarity index 95%
rename from module/Application/src/Application/Form/Poste/PosteFormFactory.php
rename to module/FichePoste/src/FichePoste/Form/Poste/PosteFormFactory.php
index 52eaa5192..6bd3d6f93 100644
--- a/module/Application/src/Application/Form/Poste/PosteFormFactory.php
+++ b/module/FichePoste/src/FichePoste/Form/Poste/PosteFormFactory.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Application\Form\Poste;
+namespace FichePoste\Form\Poste;
 
 use Interop\Container\ContainerInterface;
 use Psr\Container\ContainerExceptionInterface;
diff --git a/module/Application/src/Application/Form/Poste/PosteHydrator.php b/module/FichePoste/src/FichePoste/Form/Poste/PosteHydrator.php
similarity index 94%
rename from module/Application/src/Application/Form/Poste/PosteHydrator.php
rename to module/FichePoste/src/FichePoste/Form/Poste/PosteHydrator.php
index 4df2ab46c..f870ed09c 100644
--- a/module/Application/src/Application/Form/Poste/PosteHydrator.php
+++ b/module/FichePoste/src/FichePoste/Form/Poste/PosteHydrator.php
@@ -1,8 +1,8 @@
 <?php
 
-namespace Application\Form\Poste;
+namespace FichePoste\Form\Poste;
 
-use Application\Entity\Db\Poste;
+use FichePoste\Entity\Db\Poste;
 use Laminas\Hydrator\HydratorInterface;
 
 class PosteHydrator implements HydratorInterface {
diff --git a/module/Application/src/Application/Form/Poste/PosteHydratorFactory.php b/module/FichePoste/src/FichePoste/Form/Poste/PosteHydratorFactory.php
similarity index 87%
rename from module/Application/src/Application/Form/Poste/PosteHydratorFactory.php
rename to module/FichePoste/src/FichePoste/Form/Poste/PosteHydratorFactory.php
index ab8317822..e1d4595de 100644
--- a/module/Application/src/Application/Form/Poste/PosteHydratorFactory.php
+++ b/module/FichePoste/src/FichePoste/Form/Poste/PosteHydratorFactory.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Application\Form\Poste;
+namespace FichePoste\Form\Poste;
 
 use Interop\Container\ContainerInterface;
 
diff --git a/module/Application/src/Application/Provider/Privilege/FichePostePrivileges.php b/module/FichePoste/src/FichePoste/Provider/Privilege/FichePostePrivileges.php
similarity index 96%
rename from module/Application/src/Application/Provider/Privilege/FichePostePrivileges.php
rename to module/FichePoste/src/FichePoste/Provider/Privilege/FichePostePrivileges.php
index 3c953b57b..b8f42c160 100644
--- a/module/Application/src/Application/Provider/Privilege/FichePostePrivileges.php
+++ b/module/FichePoste/src/FichePoste/Provider/Privilege/FichePostePrivileges.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Application\Provider\Privilege;
+namespace FichePoste\Provider\Privilege;
 
 use UnicaenPrivilege\Provider\Privilege\Privileges;
 
diff --git a/module/Application/src/Application/Service/Expertise/ExpertiseService.php b/module/FichePoste/src/FichePoste/Service/Expertise/ExpertiseService.php
similarity index 80%
rename from module/Application/src/Application/Service/Expertise/ExpertiseService.php
rename to module/FichePoste/src/FichePoste/Service/Expertise/ExpertiseService.php
index 04b57f706..1f90e176a 100644
--- a/module/Application/src/Application/Service/Expertise/ExpertiseService.php
+++ b/module/FichePoste/src/FichePoste/Service/Expertise/ExpertiseService.php
@@ -1,24 +1,20 @@
 <?php
 
-namespace Application\Service\Expertise;
+namespace FichePoste\Service\Expertise;
 
-use Application\Entity\Db\Expertise;
 use Doctrine\ORM\NonUniqueResultException;
 use Doctrine\ORM\ORMException;
 use Doctrine\ORM\QueryBuilder;
+use FichePoste\Entity\Db\Expertise;
+use Laminas\Mvc\Controller\AbstractActionController;
 use UnicaenApp\Exception\RuntimeException;
 use UnicaenApp\Service\EntityManagerAwareTrait;
-use Laminas\Mvc\Controller\AbstractActionController;
 
 class ExpertiseService {
     use EntityManagerAwareTrait;
 
     /** GESTION DES ENTITES *******************************************************************************************/
 
-    /**
-     * @param Expertise $expertise
-     * @return Expertise
-     */
     public function create(Expertise $expertise) : Expertise
     {
         try {
@@ -30,10 +26,6 @@ class ExpertiseService {
         return $expertise;
     }
 
-    /**
-     * @param Expertise $expertise
-     * @return Expertise
-     */
     public function update(Expertise $expertise) : Expertise
     {
         try {
@@ -44,10 +36,6 @@ class ExpertiseService {
         return $expertise;
     }
 
-    /**
-     * @param Expertise $expertise
-     * @return Expertise
-     */
     public function historise(Expertise $expertise) : Expertise
     {
         try {
@@ -59,10 +47,6 @@ class ExpertiseService {
         return $expertise;
     }
 
-    /**
-     * @param Expertise $expertise
-     * @return Expertise
-     */
     public function restore(Expertise $expertise) : Expertise
     {
         try {
@@ -74,10 +58,6 @@ class ExpertiseService {
         return $expertise;
     }
 
-    /**
-     * @param Expertise $expertise
-     * @return Expertise
-     */
     public function delete(Expertise $expertise) : Expertise
     {
         try {
@@ -91,9 +71,6 @@ class ExpertiseService {
 
     /** REQUETAGE *****************************************************************************************************/
 
-    /**
-     * @return QueryBuilder
-     */
     public function createQueryBuilder() : QueryBuilder
     {
         $qb = $this->getEntityManager()->getRepository(Expertise::class)->createQueryBuilder('expertise')
@@ -105,11 +82,7 @@ class ExpertiseService {
         return $qb;
     }
 
-    /**
-     * @param $id
-     * @return Expertise
-     */
-    public function getExpertise($id) : ?Expertise
+    public function getExpertise(?int $id) : ?Expertise
     {
         $qb = $this->createQueryBuilder()
             ->andWhere('expertise.id = :id')
@@ -124,12 +97,7 @@ class ExpertiseService {
         return $result;
     }
 
-    /**
-     * @param AbstractActionController $controller
-     * @param string $param
-     * @return Expertise
-     */
-    public function getRequestedExpertise($controller, $param = 'expertise') : ?Expertise
+    public function getRequestedExpertise(AbstractActionController $controller, string $param = 'expertise') : ?Expertise
     {
         $id = $controller->params()->fromRoute($param);
         $result = $this->getExpertise($id);
diff --git a/module/FichePoste/src/FichePoste/Service/Expertise/ExpertiseServiceAwareTrait.php b/module/FichePoste/src/FichePoste/Service/Expertise/ExpertiseServiceAwareTrait.php
new file mode 100644
index 000000000..c5e39a1b4
--- /dev/null
+++ b/module/FichePoste/src/FichePoste/Service/Expertise/ExpertiseServiceAwareTrait.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace FichePoste\Service\Expertise;
+
+trait ExpertiseServiceAwareTrait {
+
+    private ExpertiseService $expertiseService;
+
+    public function getExpertiseService() : ExpertiseService
+    {
+        return $this->expertiseService;
+    }
+
+    public function setExpertiseService(ExpertiseService $expertiseService) : void
+    {
+        $this->expertiseService = $expertiseService;
+    }
+}
diff --git a/module/Application/src/Application/Service/Expertise/ExpertiseServiceFactory.php b/module/FichePoste/src/FichePoste/Service/Expertise/ExpertiseServiceFactory.php
similarity index 72%
rename from module/Application/src/Application/Service/Expertise/ExpertiseServiceFactory.php
rename to module/FichePoste/src/FichePoste/Service/Expertise/ExpertiseServiceFactory.php
index f5bf14b4e..29f85151b 100644
--- a/module/Application/src/Application/Service/Expertise/ExpertiseServiceFactory.php
+++ b/module/FichePoste/src/FichePoste/Service/Expertise/ExpertiseServiceFactory.php
@@ -1,15 +1,19 @@
 <?php
 
-namespace Application\Service\Expertise;
+namespace FichePoste\Service\Expertise;
 
 use Doctrine\ORM\EntityManager;
 use Interop\Container\ContainerInterface;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
 
 class ExpertiseServiceFactory {
 
     /**
      * @param ContainerInterface $container
      * @return ExpertiseService
+     * @throws ContainerExceptionInterface
+     * @throws NotFoundExceptionInterface
      */
     public function __invoke(ContainerInterface $container) : ExpertiseService
     {
@@ -18,7 +22,6 @@ class ExpertiseServiceFactory {
          */
         $entityManager = $container->get('doctrine.entitymanager.orm_default');
 
-        /** @var ExpertiseService $service */
         $service = new ExpertiseService();
         $service->setEntityManager($entityManager);
         return $service;
diff --git a/module/Application/src/Application/Service/FichePoste/FichePosteService.php b/module/FichePoste/src/FichePoste/Service/FichePoste/FichePosteService.php
similarity index 99%
rename from module/Application/src/Application/Service/FichePoste/FichePosteService.php
rename to module/FichePoste/src/FichePoste/Service/FichePoste/FichePosteService.php
index cb2857571..b9ab9b0e5 100644
--- a/module/Application/src/Application/Service/FichePoste/FichePosteService.php
+++ b/module/FichePoste/src/FichePoste/Service/FichePoste/FichePosteService.php
@@ -1,12 +1,11 @@
 <?php
 
-namespace Application\Service\FichePoste;
+namespace FichePoste\Service\FichePoste;
 
 use Application\Entity\Db\Activite;
 use Application\Entity\Db\Agent;
 use Application\Entity\Db\DomaineRepartition;
 use Application\Entity\Db\FicheMetier;
-use Application\Entity\Db\FichePoste;
 use Application\Entity\Db\FicheposteApplicationRetiree;
 use Application\Entity\Db\FicheTypeExterne;
 use Application\Provider\Etat\FichePosteEtats;
@@ -20,6 +19,8 @@ use Doctrine\DBAL\Exception as DBA_Exception;
 use Doctrine\ORM\NonUniqueResultException;
 use Doctrine\ORM\ORMException;
 use Doctrine\ORM\QueryBuilder;
+use FichePoste\Entity\Db\FichePoste;
+use Laminas\Mvc\Controller\AbstractActionController;
 use Metier\Entity\Db\Domaine;
 use Structure\Entity\Db\Structure;
 use Structure\Service\Structure\StructureServiceAwareTrait;
@@ -30,7 +31,6 @@ use UnicaenUtilisateur\Entity\Db\User;
 use UnicaenValidation\Entity\Db\ValidationInstance;
 use UnicaenValidation\Service\ValidationInstance\ValidationInstanceServiceAwareTrait;
 use UnicaenValidation\Service\ValidationType\ValidationTypeServiceAwareTrait;
-use Laminas\Mvc\Controller\AbstractActionController;
 
 class FichePosteService {
     use EntityManagerAwareTrait;
diff --git a/module/Application/src/Application/Service/FichePoste/FichePosteServiceAwareTrait.php b/module/FichePoste/src/FichePoste/Service/FichePoste/FichePosteServiceAwareTrait.php
similarity index 92%
rename from module/Application/src/Application/Service/FichePoste/FichePosteServiceAwareTrait.php
rename to module/FichePoste/src/FichePoste/Service/FichePoste/FichePosteServiceAwareTrait.php
index 3a0569775..ec98030bd 100644
--- a/module/Application/src/Application/Service/FichePoste/FichePosteServiceAwareTrait.php
+++ b/module/FichePoste/src/FichePoste/Service/FichePoste/FichePosteServiceAwareTrait.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Application\Service\FichePoste;
+namespace FichePoste\Service\FichePoste;
 
 Trait FichePosteServiceAwareTrait {
 
diff --git a/module/Application/src/Application/Service/FichePoste/FichePosteServiceFactory.php b/module/FichePoste/src/FichePoste/Service/FichePoste/FichePosteServiceFactory.php
similarity index 83%
rename from module/Application/src/Application/Service/FichePoste/FichePosteServiceFactory.php
rename to module/FichePoste/src/FichePoste/Service/FichePoste/FichePosteServiceFactory.php
index f1816e816..8601c14eb 100644
--- a/module/Application/src/Application/Service/FichePoste/FichePosteServiceFactory.php
+++ b/module/FichePoste/src/FichePoste/Service/FichePoste/FichePosteServiceFactory.php
@@ -1,11 +1,13 @@
 <?php
 
-namespace Application\Service\FichePoste;
+namespace FichePoste\Service\FichePoste;
 
 use Application\Service\Agent\AgentService;
 use Application\Service\SpecificitePoste\SpecificitePosteService;
 use Doctrine\ORM\EntityManager;
 use Interop\Container\ContainerInterface;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
 use Structure\Service\Structure\StructureService;
 use UnicaenEtat\Service\Etat\EtatService;
 use UnicaenValidation\Service\ValidationInstance\ValidationInstanceService;
@@ -13,7 +15,13 @@ use UnicaenValidation\Service\ValidationType\ValidationTypeService;
 
 class FichePosteServiceFactory {
 
-    public function __invoke(ContainerInterface $container)
+    /**
+     * @param ContainerInterface $container
+     * @return FichePosteService
+     * @throws ContainerExceptionInterface
+     * @throws NotFoundExceptionInterface
+     */
+    public function __invoke(ContainerInterface $container) : FichePosteService
     {
         /**
          * @var EntityManager $entityManager
diff --git a/module/Application/src/Application/Service/Poste/PosteService.php b/module/FichePoste/src/FichePoste/Service/Poste/PosteService.php
similarity index 96%
rename from module/Application/src/Application/Service/Poste/PosteService.php
rename to module/FichePoste/src/FichePoste/Service/Poste/PosteService.php
index 0c2d574e1..8fbbeff24 100644
--- a/module/Application/src/Application/Service/Poste/PosteService.php
+++ b/module/FichePoste/src/FichePoste/Service/Poste/PosteService.php
@@ -1,9 +1,9 @@
 <?php
 
-namespace Application\Service\Poste;
+namespace FichePoste\Service\Poste;
 
-use Application\Entity\Db\Poste;
 use Doctrine\ORM\ORMException;
+use FichePoste\Entity\Db\Poste;
 use RuntimeException;
 use UnicaenApp\Service\EntityManagerAwareTrait;
 
diff --git a/module/Application/src/Application/Service/Poste/PosteServiceAwareTrait.php b/module/FichePoste/src/FichePoste/Service/Poste/PosteServiceAwareTrait.php
similarity index 89%
rename from module/Application/src/Application/Service/Poste/PosteServiceAwareTrait.php
rename to module/FichePoste/src/FichePoste/Service/Poste/PosteServiceAwareTrait.php
index 4e9785f18..004ee3450 100644
--- a/module/Application/src/Application/Service/Poste/PosteServiceAwareTrait.php
+++ b/module/FichePoste/src/FichePoste/Service/Poste/PosteServiceAwareTrait.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Application\Service\Poste;
+namespace FichePoste\Service\Poste;
 
 trait PosteServiceAwareTrait {
 
diff --git a/module/Application/src/Application/Service/Poste/PosteServiceFactory.php b/module/FichePoste/src/FichePoste/Service/Poste/PosteServiceFactory.php
similarity index 94%
rename from module/Application/src/Application/Service/Poste/PosteServiceFactory.php
rename to module/FichePoste/src/FichePoste/Service/Poste/PosteServiceFactory.php
index 6cd9d8dbe..e4e527d6e 100644
--- a/module/Application/src/Application/Service/Poste/PosteServiceFactory.php
+++ b/module/FichePoste/src/FichePoste/Service/Poste/PosteServiceFactory.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Application\Service\Poste;
+namespace FichePoste\Service\Poste;
 
 use Psr\Container\ContainerExceptionInterface;
 use Psr\Container\ContainerInterface;
diff --git a/module/Application/view/application/fiche-poste/action.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/action.phtml
similarity index 92%
rename from module/Application/view/application/fiche-poste/action.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/action.phtml
index eb637aad8..6dbdd1be7 100644
--- a/module/Application/view/application/fiche-poste/action.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/action.phtml
@@ -1,12 +1,11 @@
 <?php
 
 /**
- * @see \Application\Controller\FichePosteController::actionAction()
+ * @see \FichePoste\Controller\FichePosteController::actionAction()
  * @var FichePoste $ficheposte
  */
 
-use Application\Entity\Db\FichePoste;
-use Application\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Entity\Db\FichePoste;
 
 $canAfficher = $this->isAllowed($ficheposte, FichePostePrivileges::FICHEPOSTE_AFFICHER);
 $canExporter = $this->isAllowed($ficheposte, FichePostePrivileges::FICHEPOSTE_AFFICHER);
diff --git a/module/Application/view/application/fiche-poste/afficher.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/afficher.phtml
similarity index 97%
rename from module/Application/view/application/fiche-poste/afficher.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/afficher.phtml
index 78dd3309e..288ad9731 100644
--- a/module/Application/view/application/fiche-poste/afficher.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/afficher.phtml
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @see \Application\Controller\FichePosteController::afficherAction()
+ * @see \FichePoste\Controller\FichePosteController::afficherAction()
  * @var FichePoste $fiche
  * @var array $parcours
  * @var Competence[] $competences
@@ -9,11 +9,11 @@
  * @var Structure $structure
  */
 
-use Element\Entity\Db\Application;
-use Application\Entity\Db\FichePoste;
 use Application\Entity\Db\FicheTypeExterne;
-use Application\Provider\Privilege\FichePostePrivileges;
+use Element\Entity\Db\Application;
 use Element\Entity\Db\Competence;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 use Structure\Entity\Db\Structure;
 
 $date = new DateTime();
diff --git a/module/Application/view/application/fiche-poste/ajouter-fiche-metier.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/ajouter-fiche-metier.phtml
similarity index 95%
rename from module/Application/view/application/fiche-poste/ajouter-fiche-metier.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/ajouter-fiche-metier.phtml
index d12713fd9..8dcc63b9a 100644
--- a/module/Application/view/application/fiche-poste/ajouter-fiche-metier.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/ajouter-fiche-metier.phtml
@@ -2,7 +2,7 @@
 
 
 /**
- * @see \Application\Controller\FichePosteController::ajouterFicheMetierAction()
+ * @see \FichePoste\Controller\FichePosteController::ajouterFicheMetierAction()
  *
  * @var AjouterFicheMetierForm $form
  */
diff --git a/module/Application/view/application/fiche-poste/associer-agent.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/associer-agent.phtml
similarity index 91%
rename from module/Application/view/application/fiche-poste/associer-agent.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/associer-agent.phtml
index 57714a532..74909fd23 100644
--- a/module/Application/view/application/fiche-poste/associer-agent.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/associer-agent.phtml
@@ -1,11 +1,11 @@
 <?php
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Structure\Entity\Db\Structure;
 use UnicaenApp\Form\Element\SearchAndSelect;
 
 /**
- * @see \Application\Controller\FichePosteController::associerAgentAction()
+ * @see \FichePoste\Controller\FichePosteController::associerAgentAction()
  * @var FichePoste $ficheposte
  * @var Structure $structure
  */
diff --git a/module/Application/view/application/fiche-poste/dupliquer.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/dupliquer.phtml
similarity index 94%
rename from module/Application/view/application/fiche-poste/dupliquer.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/dupliquer.phtml
index eef749eca..248f336c2 100644
--- a/module/Application/view/application/fiche-poste/dupliquer.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/dupliquer.phtml
@@ -1,15 +1,15 @@
 <?php
 
 /**
- * @see \Application\Controller\FichePosteController::dupliquerAction()
+ * @see \FichePoste\Controller\FichePosteController::dupliquerAction()
  * @var FichePoste[] $fiches
  * @var Structure $structure
  * @var Agent $agent
  */
 
 use Application\Entity\Db\Agent;
-use Application\Entity\Db\FichePoste;
 use Application\Provider\Etat\FichePosteEtats;
+use FichePoste\Entity\Db\FichePoste;
 use Structure\Entity\Db\Structure;
 
 ?>
diff --git a/module/Application/view/application/fiche-poste/editer-specificite.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/editer-specificite.phtml
similarity index 100%
rename from module/Application/view/application/fiche-poste/editer-specificite.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/editer-specificite.phtml
diff --git a/module/Application/view/application/fiche-poste/editer.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/editer.phtml
similarity index 69%
rename from module/Application/view/application/fiche-poste/editer.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/editer.phtml
index 4e4406f8c..cdd12b7b6 100644
--- a/module/Application/view/application/fiche-poste/editer.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/editer.phtml
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @see \Application\Controller\FichePosteController::editerAction()
+ * @see \FichePoste\Controller\FichePosteController::editerAction()
  * @var Agent $agent
  * @var int $ficheId
  * @var FichePoste $fiche
@@ -16,9 +16,9 @@
 $sousstructure = true;
 
 use Application\Entity\Db\Agent;
-use Application\Entity\Db\FichePoste;
 use Application\Entity\Db\FicheTypeExterne;
-use Application\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 use Structure\Entity\Db\Structure;
 
 
@@ -35,10 +35,10 @@ $date = new DateTime();
 $canModifier = $this->isAllowed($fiche, FichePostePrivileges::FICHEPOSTE_MODIFIER);
 
 
-$this->headTitle("Modification de la fiche de poste #".$ficheId);
+$this->headTitle("Modification de la fiche de poste #" . $ficheId);
 ?>
 
-<?php if (! $canModifier ) : ?>
+<?php if (!$canModifier) : ?>
 
     <div class="alert alert-danger col-md-8">
         <p class="lead">
@@ -51,7 +51,9 @@ $this->headTitle("Modification de la fiche de poste #".$ficheId);
 <?php else : ?>
 
     <style>
-        a.action {width: 18em;}
+        a.action {
+            width: 18em;
+        }
     </style>
 
     <?php echo $this->messenger()->addMessagesFromFlashMessenger(); ?>
@@ -65,10 +67,10 @@ $this->headTitle("Modification de la fiche de poste #".$ficheId);
         </div>
         <div class="pull-right">
             <a
-                <?php /** @see \Application\Controller\FichePosteController::associerTitreAction() */ ?>
-                href="<?php echo $this->url('fiche-poste/associer-titre', ['fiche-poste' => $fiche->getId()], [], true); ?>"
-                class="btn btn-primary action ajax-modal"
-                data-event="modification"
+                <?php /** @see \FichePoste\Controller\FichePosteController::associerTitreAction() */ ?>
+                    href="<?php echo $this->url('fiche-poste/associer-titre', ['fiche-poste' => $fiche->getId()], [], true); ?>"
+                    class="btn btn-primary action ajax-modal"
+                    data-event="modification"
             >
                 <span class="icon icon-editer"></span>
                 Modifier le titre
@@ -83,7 +85,6 @@ $this->headTitle("Modification de la fiche de poste #".$ficheId);
     <?php echo $this->partial("partial/validations.phtml"); ?>
 
 
-
     <div class="card panel-info">
         <div class="card-header">
             <div class="row">
@@ -91,9 +92,9 @@ $this->headTitle("Modification de la fiche de poste #".$ficheId);
                     <h2> Agent occupant le poste </h2>
                 </div>
                 <div class="col-md-6">
-                    <?php if($canAssocierAgent) : ?>
-                        <?php /** @see \Application\Controller\FichePosteController::associerAgentAction() */ ?>
-                        <a href="<?php echo $this->url('fiche-poste/associer-agent',['fiche-poste' => $fiche->getId()], ["query" => ["structure" => ($structure)?$structure->getId():null, "sous-structure" => $sousstructure]], true); ?>"
+                    <?php if ($canAssocierAgent) : ?>
+                        <?php /** @see \FichePoste\Controller\FichePosteController::associerAgentAction() */ ?>
+                        <a href="<?php echo $this->url('fiche-poste/associer-agent', ['fiche-poste' => $fiche->getId()], ["query" => ["structure" => ($structure) ? $structure->getId() : null, "sous-structure" => $sousstructure]], true); ?>"
                            class="btn btn-primary action ajax-modal pull-right"
                            data-event="modification"
                         >
@@ -105,15 +106,15 @@ $this->headTitle("Modification de la fiche de poste #".$ficheId);
             </div>
         </div>
         <div class="card-body">
-            <?php if($agent === null) : ?>
+            <?php if ($agent === null) : ?>
                 <div class="alert alert-warning">
                     <i class="fas fa-exclamation-triangle"></i>
                     Aucun agent d'associé à ce poste
                 </div>
             <?php else : ?>
                 <?php
-                    $retour = $this->url('fiche-poste/editer', ['fiche-poste' => $fiche->getId()], [], true);
-                    echo $this->agent($agent, 'edition', ["retour" => $retour]);
+                $retour = $this->url('fiche-poste/editer', ['fiche-poste' => $fiche->getId()], [], true);
+                echo $this->agent($agent, 'edition', ["retour" => $retour]);
                 ?>
             <?php endif; ?>
         </div>
@@ -127,43 +128,51 @@ $this->headTitle("Modification de la fiche de poste #".$ficheId);
     <?php
     $principal = $fiche->getFicheTypeExternePrincipale();
     $fichesMetiers = $fiche->getFichesMetiers();
-    $fichesMetiers = array_filter($fichesMetiers, function (FicheTypeExterne $a) { return !$a->getPrincipale(); });
-    usort($fichesMetiers, function (FicheTypeExterne $a, FicheTypeExterne $b) { return ($a->getQuotite() > $b->getQuotite()); });
+    $fichesMetiers = array_filter($fichesMetiers, function (FicheTypeExterne $a) {
+        return !$a->getPrincipale();
+    });
+    usort($fichesMetiers, function (FicheTypeExterne $a, FicheTypeExterne $b) {
+        return ($a->getQuotite() > $b->getQuotite());
+    });
     ?>
 
 
-    <?php /** @var FicheTypeExterne $ficheType **/ ?>
+    <?php /** @var FicheTypeExterne $ficheType * */ ?>
     <div class="card panel-default">
         <div class="card-header">
             <div class="row">
                 <div class="col-md-8">
-                <h2>Fiche de poste composée de <?php echo count($fiche->getFichesMetiers()); ?> fiche(s) métier(s).</h2>
-                <ul>
-                    <?php if ($principal) : ?>
-                        <li> <strong> <?php echo $principal->getFicheType()->getMetier()->getLibelleGenre($agent) ?> à <?php echo $principal->getQuotite(); ?>%</strong></li>
-                    <?php endif; ?>
-                    <?php foreach ($fichesMetiers as $ficheType) : ?>
-                        <li> <?php echo $ficheType->getFicheType()->getMetier()->getLibelleGenre($agent); ?> à <?php echo $ficheType->getQuotite(); ?>% </li>
-                    <?php endforeach; ?>
-                </ul>
+                    <h2>Fiche de poste composée de <?php echo count($fiche->getFichesMetiers()); ?> fiche(s)
+                        métier(s).</h2>
+                    <ul>
+                        <?php if ($principal) : ?>
+                            <li><strong> <?php echo $principal->getFicheType()->getMetier()->getLibelleGenre($agent) ?>
+                                    à <?php echo $principal->getQuotite(); ?>%</strong></li>
+                        <?php endif; ?>
+                        <?php foreach ($fichesMetiers as $ficheType) : ?>
+                            <li> <?php echo $ficheType->getFicheType()->getMetier()->getLibelleGenre($agent); ?>
+                                à <?php echo $ficheType->getQuotite(); ?>%
+                            </li>
+                        <?php endforeach; ?>
+                    </ul>
                 </div>
                 <div class="col-md-4">
-                    <?php /**  @see \Application\Controller\FichePosteController::ajouterFicheMetierAction() */ ?>
+                    <?php /**  @see \FichePoste\Controller\FichePosteController::ajouterFicheMetierAction() */ ?>
                     <a href="<?php echo $this->url('fiche-poste/ajouter-fiche-metier', ['fiche-poste' => $fiche->getId()], [], true); ?>"
                        class="btn btn-primary action ajax-modal pull-right"
                        data-event="modification"
                     >
                         <span class="icon icon-ajouter"></span>
                         Ajouter une fiche métier
-                        </a>
+                    </a>
                 </div>
             </div>
         </div>
     </div>
 
-    <?php if ($principal) echo $this->ficheMetierExterne($principal, ['mode' => 'edition-fiche-poste']);  ?>
+    <?php if ($principal) echo $this->ficheMetierExterne($principal, ['mode' => 'edition-fiche-poste']); ?>
     <?php foreach ($fichesMetiers as $ficheType) : ?>
-        <?php echo $this->ficheMetierExterne($ficheType, ['mode' => 'edition-fiche-poste']);  ?>
+        <?php echo $this->ficheMetierExterne($ficheType, ['mode' => 'edition-fiche-poste']); ?>
     <?php endforeach; ?>
 
     <!-- REGROUPE DES COMPETENCES, APPLICATIONS ET DES FORMATIONS ----------------------------------------------------->
@@ -173,7 +182,7 @@ $this->headTitle("Modification de la fiche de poste #".$ficheId);
         </div>
         <div class="card-body">
             <?php //echo $this->competenceBloc($competences, $fiche->getAgent()); ?>
-            <?php echo $this->partial('partial/competences',  ['fiche' => $fiche, 'competences' => $competences,   'mode' => 'edition'], [], true); ?>
+            <?php echo $this->partial('partial/competences', ['fiche' => $fiche, 'competences' => $competences, 'mode' => 'edition'], [], true); ?>
             <?php echo $this->partial('partial/applications', ['fiche' => $fiche, 'applications' => $applications, 'mode' => 'edition'], [], true); ?>
             <?php //echo $this->partial('partial/parcours-de-formation',  ['parcours' => $parcours, 'agent' => $agent, 'fiche' => $fiche, 'mode' => 'affichage'], [], true); ?>
         </div>
@@ -181,18 +190,18 @@ $this->headTitle("Modification de la fiche de poste #".$ficheId);
 
     <!-- GRAPH -------------------------------------------------------------------------------------------------------->
 
-<!--    <div class="row">-->
-<!--        <div class="col-md-6">-->
-<!--            --><?php //echo $this->fichePosteGraph($fiche,
+    <!--    <div class="row">-->
+    <!--        <div class="col-md-6">-->
+    <!--            --><?php //echo $this->fichePosteGraph($fiche,
 //                ["applications" => $applications, "competences" => $competences, "formations" => $formations, "activites" => $activites],
 //                'radar', $date); ?>
-<!--        </div>-->
-<!--        <div class="col-md-6">-->
-<!--            --><?php //echo $this->fichePosteGraph($fiche,
+    <!--        </div>-->
+    <!--        <div class="col-md-6">-->
+    <!--            --><?php //echo $this->fichePosteGraph($fiche,
 //                ["applications" => $applications, "competences" => $competences, "formations" => $formations, "activites" => $activites],
 //                'bar', $date); ?>
-<!--        </div>-->
-<!--    </div>-->
+    <!--        </div>-->
+    <!--    </div>-->
 
     <!-- EXPERTISES LIEES A LA FICHE DE POSTE ----------------------------------------------------------------------------->
     <?php echo $this->partial('partial/expertise', ['fiche' => $fiche, 'mode' => 'edition'], [], true); ?>
@@ -210,7 +219,7 @@ $this->headTitle("Modification de la fiche de poste #".$ficheId);
 </div>
 </div>
 <script>
-    $(function() {
+    $(function () {
         $("body").on("modification", function (event) {
             event.div.modal('hide');
             window.location.reload();
diff --git a/module/Application/view/application/fiche-poste/index.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/index.phtml
similarity index 94%
rename from module/Application/view/application/fiche-poste/index.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/index.phtml
index fefab250f..db8bee0a9 100644
--- a/module/Application/view/application/fiche-poste/index.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/index.phtml
@@ -1,8 +1,8 @@
 <?php
 
-use Application\Controller\FichePosteController;
-use Application\Entity\Db\FichePoste;
-use Application\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Controller\FichePosteController;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 
 /**
  * @see FichePosteController::indexAction()
diff --git a/module/Application/view/application/fiche-poste/modifier-repartition.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/modifier-repartition.phtml
similarity index 92%
rename from module/Application/view/application/fiche-poste/modifier-repartition.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/modifier-repartition.phtml
index 2fd23e986..15c3b9dc2 100644
--- a/module/Application/view/application/fiche-poste/modifier-repartition.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/modifier-repartition.phtml
@@ -1,15 +1,16 @@
 <?php
 
 /**
- * @see \Application\Controller\FichePosteController::modifierRepartitionAction()
+ * @see \FichePoste\Controller\FichePosteController::modifierRepartitionAction()
  * @var FichePoste $ficheposte
  * @var FicheTypeExterne $fichetype
  * @var Domaine[] $domaines
  * @var array $repartitions
 */
-use Metier\Entity\Db\Domaine;
-use Application\Entity\Db\FichePoste;
+
 use Application\Entity\Db\FicheTypeExterne;
+use FichePoste\Entity\Db\FichePoste;
+use Metier\Entity\Db\Domaine;
 
 ?>
 
diff --git a/module/Application/view/application/fiche-poste/partial/applications.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/applications.phtml
similarity index 89%
rename from module/Application/view/application/fiche-poste/partial/applications.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/applications.phtml
index 03abd3193..c793242c7 100644
--- a/module/Application/view/application/fiche-poste/partial/applications.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/partial/applications.phtml
@@ -1,6 +1,6 @@
 <?php
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 /**
  * @var FichePoste $fiche
@@ -29,7 +29,7 @@ foreach ($applications as $item) {
     <div class="col-md-1" style="background-color:#d9edf7;">
         <h3>
         <?php if ($mode === 'edition') : ?>
-            <a <?php /** @see \Application\Controller\FichePosteController::selectionnerApplicationsRetireesAction() */ ?>
+            <a <?php /** @see \FichePoste\Controller\FichePosteController::selectionnerApplicationsRetireesAction() */ ?>
                     href="<?php echo $this->url('fiche-poste/selectionner-applications-retirees', ['fiche-poste' => $fiche->getId()], [], true); ?>"
                     class="ajax-modal" data-event="modification">
                 <span class="icon icon-listing" title="Sélection des applications liées à la fiche de poste"></span></a>
diff --git a/module/Application/view/application/fiche-poste/partial/competences.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/competences.phtml
similarity index 89%
rename from module/Application/view/application/fiche-poste/partial/competences.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/competences.phtml
index cc9f6bef1..862823020 100644
--- a/module/Application/view/application/fiche-poste/partial/competences.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/partial/competences.phtml
@@ -1,6 +1,6 @@
 <?php
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 /**
  * @var FichePoste $fiche
@@ -29,7 +29,7 @@ foreach ($competences as $item) {
     <div class="col-md-1" style="background-color:#d9edf7;">
         <h3>
             <?php if ($mode === 'edition') : ?>
-                <a <?php /** @see \Application\Controller\FichePosteController::selectionnerCompetencesRetireesAction() */ ?>
+                <a <?php /** @see \FichePoste\Controller\FichePosteController::selectionnerCompetencesRetireesAction() */ ?>
                         href="<?php echo $this->url('fiche-poste/selectionner-competences-retirees', ['fiche-poste' => $fiche->getId()], [], true); ?>"
                         class="ajax-modal" data-event="modification">
                     <span class="icon icon-listing" title="Sélection des compétences liées à la fiche de poste"></span></a>
diff --git a/module/Application/view/application/fiche-poste/partial/environnement-poste.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/environnement-poste.phtml
similarity index 94%
rename from module/Application/view/application/fiche-poste/partial/environnement-poste.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/environnement-poste.phtml
index 11ad60f8c..2f830bfee 100644
--- a/module/Application/view/application/fiche-poste/partial/environnement-poste.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/partial/environnement-poste.phtml
@@ -1,8 +1,8 @@
 <?php
 
 use Application\Entity\Db\Agent;
-use Application\Entity\Db\FichePoste;
-use Application\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 use Structure\Entity\Db\Structure;
 
 /**
diff --git a/module/Application/view/application/fiche-poste/partial/expertise.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/expertise.phtml
similarity index 78%
rename from module/Application/view/application/fiche-poste/partial/expertise.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/expertise.phtml
index 50e45d466..ab6085456 100644
--- a/module/Application/view/application/fiche-poste/partial/expertise.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/partial/expertise.phtml
@@ -1,11 +1,11 @@
 <?php
 
-use Application\Entity\Db\FichePoste;
-use Application\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 
 /**
  * @var FichePoste $fiche
- * @var string mode
+ * @var string $mode
  */
 
 $canEditerExpertise = $this->isAllowed($fiche, FichePostePrivileges::FICHEPOSTE_MODIFIER);
@@ -13,7 +13,7 @@ $date = new DateTime();
 
 ?>
 
-<?php if( $fiche->hasExpertise()) : ?>
+<?php if( true || $fiche->hasExpertise()) : ?>
     <?php $expertises = $fiche->getCurrentExpertises($date); ?>
 
     <?php if ($mode === 'edition' OR !empty($expertises)) : ?>
@@ -25,8 +25,8 @@ $date = new DateTime();
                     </div>
                     <div class="col-md-6">
                         <?php if($mode === 'edition' AND $canEditerExpertise) : ?>
-                            <a <?php /** @see \Application\Controller\FichePosteController::ajouterExpertiseAction() */?>
-                                href="<?php echo $this->url('fiche-poste/ajouter-expertise',['fiche-poste' => $fiche->getId()], [], true); ?>"
+                            <a <?php /** @see \FichePoste\Controller\ExpertiseController::ajouterAction() */?>
+                                href="<?php echo $this->url('fiche-poste/expertise/ajouter',['fiche-poste' => $fiche->getId()], [], true); ?>"
                                 class="btn btn-primary action ajax-modal pull-right"
                                 data-event="modification"
                             >
@@ -43,8 +43,8 @@ $date = new DateTime();
                         <li>
                             <strong><?php echo $expertise->getLibelle(); ?></strong>
                             <?php if($mode === 'edition' AND $canEditerExpertise) : ?>
-                                <a <?php /** @see \Application\Controller\FichePosteController::modifierExpertiseAction() */?>
-                                    href="<?php echo $this->url('fiche-poste/modifier-expertise',['expertise' => $expertise->getId()], [], true); ?>"
+                                <a <?php /** @see \FichePoste\Controller\ExpertiseController::modifierAction() */?>
+                                    href="<?php echo $this->url('fiche-poste/expertise/modifier',['expertise' => $expertise->getId()], [], true); ?>"
                                     class="ajax-modal"
                                     data-event="modification"
                                     title="Modifier l'expertise"
@@ -53,7 +53,7 @@ $date = new DateTime();
                             <?php endif; ?>
                             <?php if ($expertise->estNonHistorise()) : ?>
                                 <?php if($mode === 'edition' AND $canEditerExpertise) : ?>
-                                    <a <?php /** @see \Application\Controller\FichePosteController::historiserExpertiseAction() */?>
+                                    <a <?php /** @see \FichePoste\Controller\ExpertiseController::historiserAction() */?>
                                         href="<?php echo $this->url('fiche-poste/historiser-expertise',['expertise' => $expertise->getId()], [], true); ?>"
                                         title="Historiser l'expertise"
                                     >
@@ -61,16 +61,16 @@ $date = new DateTime();
                                 <?php endif; ?>
                             <?php else : ?>
                                 <?php if($mode === 'edition' AND $canEditerExpertise) : ?>
-                                    <a <?php /** @see \Application\Controller\FichePosteController::restaurerExpertiseAction() */?>
-                                        href="<?php echo $this->url('fiche-poste/restaurer-expertise',['expertise' => $expertise->getId()], [], true); ?>"
+                                    <a <?php /** @see \FichePoste\Controller\ExpertiseController::restaurerAction() */?>
+                                        href="<?php echo $this->url('fiche-poste/expertise/restaurer',['expertise' => $expertise->getId()], [], true); ?>"
                                         title="Restaurer l'expertise"
                                     >
                                         <span class="icon icon-restaurer"></span></a>
                                 <?php endif; ?>
                             <?php endif; ?>
                             <?php if($mode === 'edition' AND $canEditerExpertise) : ?>
-                                <a <?php /** @see \Application\Controller\FichePosteController::supprimerExpertiseAction() */?>
-                                    href="<?php echo $this->url('fiche-poste/supprimer-expertise',['expertise' => $expertise->getId()], [], true); ?>"
+                                <a <?php /** @see \FichePoste\Controller\ExpertiseController::supprimerAction() */?>
+                                    href="<?php echo $this->url('fiche-poste/expertise/supprimer',['expertise' => $expertise->getId()], [], true); ?>"
                                     title="Supprimer l'expertise"
                                     class="ajax-modal" data-event="modification"
                                 >
diff --git a/module/Application/view/application/fiche-poste/partial/formations.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/formations.phtml
similarity index 92%
rename from module/Application/view/application/fiche-poste/partial/formations.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/formations.phtml
index 9ceb8b3c3..55c8d8d91 100644
--- a/module/Application/view/application/fiche-poste/partial/formations.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/partial/formations.phtml
@@ -2,7 +2,7 @@
 
 use Application\Entity\Db\Activite;
 use Application\Entity\Db\FicheMetier;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 /**
 * @var FichePoste $fiche
@@ -31,7 +31,7 @@ foreach ($formations as $item) {
             </div>
             <div class="col-md-1">
                 <?php if ($mode === 'edition') : ?>
-                    <a <?php /** @see \Application\Controller\FichePosteController::selectionnerFormationsRetireesAction() */ ?>
+                    <a <?php /** @see \FichePoste\Controller\FichePosteController::selectionnerFormationsRetireesAction() */ ?>
                             href="<?php echo $this->url('fiche-poste/selectionner-formations-retirees', ['fiche-poste' => $fiche->getId()], [], true); ?>"
                             class="ajax-modal" data-event="modification">
                         <span class="icon icon-listing" title="Sélection des formations liées à la fiche de poste"></span></a>
diff --git a/module/Application/view/application/fiche-poste/partial/informations-poste.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/informations-poste.phtml
similarity index 92%
rename from module/Application/view/application/fiche-poste/partial/informations-poste.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/informations-poste.phtml
index 8366b2ab7..8fe56a7b6 100644
--- a/module/Application/view/application/fiche-poste/partial/informations-poste.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/partial/informations-poste.phtml
@@ -6,11 +6,12 @@
  * @var string $mode
  */
 
-use Application\Entity\Db\FichePoste;
-use Application\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 
 $canAfficher = $this->isAllowed(FichePostePrivileges::getResourceId(FichePostePrivileges::FICHEPOSTE_AFFICHER_POSTE));
 $canModifier = $this->isAllowed(FichePostePrivileges::getResourceId(FichePostePrivileges::FICHEPOSTE_MODIFIER_POSTE));
+
 ?>
 
 <?php if ($canAfficher) : ?>
@@ -22,7 +23,7 @@ $canModifier = $this->isAllowed(FichePostePrivileges::getResourceId(FichePostePr
                 </div>
                 <div class="col-md-3">
                     <?php if ($mode === 'edition' AND $canModifier) : ?>
-                        <?php /** @see \Application\Controller\FichePosteController::modifierInformationPosteAction() */ ?>
+                        <?php /** @see \FichePoste\Controller\FichePosteController::modifierInformationPosteAction() */ ?>
                         <a  href="<?php echo $this->url('fiche-poste/modifier-information-poste', ['fiche-poste' => $fiche->getId()], [], true); ?>"
                             class="btn btn-primary ajax-modal" data-event="modification">
                             <span class="icon icon-editer"></span>
diff --git a/module/Application/view/application/fiche-poste/partial/intitule.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/intitule.phtml
similarity index 93%
rename from module/Application/view/application/fiche-poste/partial/intitule.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/intitule.phtml
index cba3b979a..ba5e150a7 100644
--- a/module/Application/view/application/fiche-poste/partial/intitule.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/partial/intitule.phtml
@@ -1,6 +1,6 @@
 <?php
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 /**
  * @var FichePoste $ficheposte
diff --git a/module/Application/view/application/fiche-poste/partial/parcours-de-formation.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/parcours-de-formation.phtml
similarity index 96%
rename from module/Application/view/application/fiche-poste/partial/parcours-de-formation.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/parcours-de-formation.phtml
index 623d6a117..3af7728f1 100644
--- a/module/Application/view/application/fiche-poste/partial/parcours-de-formation.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/partial/parcours-de-formation.phtml
@@ -10,7 +10,7 @@
  */
 
 use Application\Entity\Db\Agent;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 
 $canValidate = false;
diff --git a/module/Application/view/application/fiche-poste/partial/retour-structure.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/retour-structure.phtml
similarity index 100%
rename from module/Application/view/application/fiche-poste/partial/retour-structure.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/retour-structure.phtml
diff --git a/module/Application/view/application/fiche-poste/partial/rifseep.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/rifseep.phtml
similarity index 88%
rename from module/Application/view/application/fiche-poste/partial/rifseep.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/rifseep.phtml
index 5dea25801..e305b345e 100644
--- a/module/Application/view/application/fiche-poste/partial/rifseep.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/partial/rifseep.phtml
@@ -1,7 +1,7 @@
 <?php
 
-use Application\Entity\Db\FichePoste;
-use Application\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 
 /**
  * @var FichePoste $fiche
@@ -22,7 +22,7 @@ $date = new DateTime();
             <div class="col-md-6">
                 <?php if($canEditerSpecificte AND  $mode === 'edition') : ?>
                     <a
-                        <?php /** @see \Application\Controller\FichePosteController::editerRifseepAction(); */ ?>
+                        <?php /** @see \FichePoste\Controller\FichePosteController::editerRifseepAction(); */ ?>
                             href="<?php echo $this->url('fiche-poste/editer-rifseep',['fiche-poste' => $fiche->getId()], [], true); ?>"
                             class="btn btn-primary action ajax-modal pull-right"
                             data-event="modification"
diff --git a/module/Application/view/application/fiche-poste/partial/specificite.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/specificite.phtml
similarity index 86%
rename from module/Application/view/application/fiche-poste/partial/specificite.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/specificite.phtml
index 2b2e47135..fb4e5b21b 100644
--- a/module/Application/view/application/fiche-poste/partial/specificite.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/partial/specificite.phtml
@@ -1,7 +1,7 @@
 <?php
 
-use Application\Entity\Db\FichePoste;
-use Application\Provider\Privilege\FichePostePrivileges;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 
 /**
  * @var FichePoste $fiche
@@ -23,7 +23,7 @@ $date = new DateTime();
                 <div class="col-md-6">
                     <?php if($canEditerSpecificte AND  $mode === 'edition') : ?>
                         <a
-                            <?php /** @see \Application\Controller\FichePosteController::editerSpecificiteAction(); */ ?>
+                            <?php /** @see \FichePoste\Controller\FichePosteController::editerSpecificiteAction(); */ ?>
                             href="<?php echo $this->url('fiche-poste/editer-specificite',['fiche-poste' => $fiche->getId()], [], true); ?>"
                             class="btn btn-primary action ajax-modal pull-right"
                             data-event="modification"
diff --git a/module/Application/view/application/fiche-poste/partial/validations.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/partial/validations.phtml
similarity index 88%
rename from module/Application/view/application/fiche-poste/partial/validations.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/partial/validations.phtml
index 99e686d9e..a7510fe13 100644
--- a/module/Application/view/application/fiche-poste/partial/validations.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/partial/validations.phtml
@@ -1,8 +1,8 @@
 <?php
 
-use Application\Entity\Db\FichePoste;
-use Application\Provider\Privilege\FichePostePrivileges;
 use Application\Provider\Validation\FichePosteValidations;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Provider\Privilege\FichePostePrivileges;
 
 /**
  * @var FichePoste $fiche
@@ -46,14 +46,14 @@ $canFichePosteValiderAgent          = $this->isAllowed($fiche, FichePostePrivile
 
             <?php if ($canFichePosteValiderResponsable AND $validationAgent === null) :?>
                 <?php if ($validationResponsable === null) : ?>
-                    <?php  /** @see \Application\Controller\FichePosteController::validerAction() */ ?>
+                    <?php  /** @see \FichePoste\Controller\FichePosteController::validerAction() */ ?>
                     <a href="<?php echo $this->url('fiche-poste/valider', ['fiche-poste' => $fiche->getId(), 'type' => FichePosteValidations::VALIDATION_RESPONSABLE], [], true); ?>"
                        class="btn btn-success action ajax-modal" data-event="modification">
                         <span class="icon icon-checked"></span>
                         Valider la fiche de poste (responsable)
                     </a>
                 <?php else : ?>
-                    <?php  /** @see \Application\Controller\FichePosteController::revoquerAction() */ ?>
+                    <?php  /** @see \FichePoste\Controller\FichePosteController::revoquerAction() */ ?>
                     <a href="<?php echo $this->url('fiche-poste/revoquer', ['fiche-poste' => $fiche->getId(), 'validation' => $validationResponsable->getId()], [], true); ?>"
                        class="btn btn-danger action">
                         <span class="icon icon-retirer"></span>
@@ -63,14 +63,14 @@ $canFichePosteValiderAgent          = $this->isAllowed($fiche, FichePostePrivile
             <?php endif ;?>
             <?php if ($canFichePosteValiderAgent AND $validationResponsable !== null) :?>
                 <?php if ($validationAgent === null) : ?>
-                    <?php  /** @see \Application\Controller\FichePosteController::validerAction() */ ?>
+                    <?php  /** @see \FichePoste\Controller\FichePosteController::validerAction() */ ?>
                     <a href="<?php echo $this->url('fiche-poste/valider', ['fiche-poste' => $fiche->getId(), 'type' => FichePosteValidations::VALIDATION_AGENT], [], true); ?>"
                        class="btn btn-success action ajax-modal" data-event="modification">
                         <span class="icon icon-checked"></span>
                         Valider la fiche de poste (agent)
                     </a>
                 <?php else : ?>
-                    <?php  /** @see \Application\Controller\FichePosteController::revoquerAction() */ ?>
+                    <?php  /** @see \FichePoste\Controller\FichePosteController::revoquerAction() */ ?>
                     <a href="<?php echo $this->url('fiche-poste/revoquer', ['fiche-poste' => $fiche->getId(), 'validation' => $validationAgent->getId()], [], true); ?>"
                        class="btn btn-danger action">
                         <span class="icon icon-retirer"></span>
@@ -89,7 +89,7 @@ $canFichePosteValiderAgent          = $this->isAllowed($fiche, FichePostePrivile
             <br/>
             <?php if ($canFichePosteModifierEtat) : ?>
                 <a
-                    <?php /** @see \Application\Controller\FichePosteController::changerEtatAction() */ ?>
+                    <?php /** @see \FichePoste\Controller\FichePosteController::changerEtatAction() */ ?>
                     href="<?php echo $this->url('fiche-poste/changer-etat', ['fiche-poste' => $fiche->getId()], [], true); ?>"
                     class="btn btn-primary action ajax-modal"
                     data-event="modification"
diff --git a/module/Application/view/application/fiche-poste/selectionner-activite.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/selectionner-activite.phtml
similarity index 100%
rename from module/Application/view/application/fiche-poste/selectionner-activite.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/selectionner-activite.phtml
diff --git a/module/Application/view/application/fiche-poste/selectionner-applications-retirees.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/selectionner-applications-retirees.phtml
similarity index 87%
rename from module/Application/view/application/fiche-poste/selectionner-applications-retirees.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/selectionner-applications-retirees.phtml
index e59bf35d9..b81b05d99 100644
--- a/module/Application/view/application/fiche-poste/selectionner-applications-retirees.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/selectionner-applications-retirees.phtml
@@ -1,13 +1,13 @@
 <?php
 
 /**
- * @see \Application\Controller\FichePosteController::selectionnerApplicationsRetireesAction()
+ * @see \FichePoste\Controller\FichePosteController::selectionnerApplicationsRetireesAction()
  *
  * @var FichePoste $ficheposte
  * @var array $applications
  */
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 usort($applications, function($a, $b) { return $a['entite']->getLibelle() > $b['entite']->getLibelle();});
 ?>
diff --git a/module/Application/view/application/fiche-poste/selectionner-competences-retirees.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/selectionner-competences-retirees.phtml
similarity index 90%
rename from module/Application/view/application/fiche-poste/selectionner-competences-retirees.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/selectionner-competences-retirees.phtml
index e2773d910..c4fe422f7 100644
--- a/module/Application/view/application/fiche-poste/selectionner-competences-retirees.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/selectionner-competences-retirees.phtml
@@ -1,13 +1,13 @@
 <?php
 
 /**
- * @see \Application\Controller\FichePosteController::selectionnerCompetencesRetireesAction()
+ * @see \FichePoste\Controller\FichePosteController::selectionnerCompetencesRetireesAction()
  *
  * @var FichePoste $ficheposte
  * @var array $competences
  */
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 $listings = [];
 $listings["Connaissances"] = [];
diff --git a/module/Application/view/application/fiche-poste/selectionner-descriptions-retirees.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/selectionner-descriptions-retirees.phtml
similarity index 92%
rename from module/Application/view/application/fiche-poste/selectionner-descriptions-retirees.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/selectionner-descriptions-retirees.phtml
index beaf37ce0..f3f09bcff 100644
--- a/module/Application/view/application/fiche-poste/selectionner-descriptions-retirees.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/selectionner-descriptions-retirees.phtml
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * @see \Application\Controller\FichePosteController::selectionnerApplicationsRetireesAction()
+ * @see \FichePoste\Controller\FichePosteController::selectionnerApplicationsRetireesAction()
  *
  * @var FichePoste $ficheposte
  * @var FicheMetier $fichemetier
@@ -13,8 +13,8 @@
 use Application\Entity\Db\Activite;
 use Application\Entity\Db\ActiviteDescription;
 use Application\Entity\Db\FicheMetier;
-use Application\Entity\Db\FichePoste;
 use Application\Entity\Db\FicheposteActiviteDescriptionRetiree;
+use FichePoste\Entity\Db\FichePoste;
 
 /**
  * @param FicheposteActiviteDescriptionRetiree[] $retirees
diff --git a/module/Application/view/application/fiche-poste/selectionner-formations-retirees.phtml b/module/FichePoste/view/fiche-poste/fiche-poste/selectionner-formations-retirees.phtml
similarity index 86%
rename from module/Application/view/application/fiche-poste/selectionner-formations-retirees.phtml
rename to module/FichePoste/view/fiche-poste/fiche-poste/selectionner-formations-retirees.phtml
index bc6254e8a..50a49c154 100644
--- a/module/Application/view/application/fiche-poste/selectionner-formations-retirees.phtml
+++ b/module/FichePoste/view/fiche-poste/fiche-poste/selectionner-formations-retirees.phtml
@@ -1,13 +1,13 @@
 <?php
 
 /**
- * @see \Application\Controller\FichePosteController::selectionnerFormationsRetireesAction()
+ * @see \FichePoste\Controller\FichePosteController::selectionnerFormationsRetireesAction()
  *
  * @var FichePoste $ficheposte
  * @var array $formations
  */
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 ?>
 
diff --git a/module/Structure/src/Structure/Controller/StructureController.php b/module/Structure/src/Structure/Controller/StructureController.php
index ba9cd9217..aac4be01e 100644
--- a/module/Structure/src/Structure/Controller/StructureController.php
+++ b/module/Structure/src/Structure/Controller/StructureController.php
@@ -3,21 +3,21 @@
 namespace Structure\Controller;
 
 use Application\Entity\Db\Agent;
-use Application\Entity\Db\FichePoste;
-use Application\Entity\Db\Interfaces\HasSourceInterface;
 use Application\Form\AgentMissionSpecifique\AgentMissionSpecifiqueFormAwareTrait;
 use Application\Form\HasDescription\HasDescriptionFormAwareTrait;
 use Application\Form\SelectionAgent\SelectionAgentFormAwareTrait;
 use Application\Provider\Etat\FichePosteEtats;
 use Application\Service\Agent\AgentServiceAwareTrait;
 use Application\Service\AgentMissionSpecifique\AgentMissionSpecifiqueServiceAwareTrait;
-use Application\Service\FichePoste\FichePosteServiceAwareTrait;
 use Application\Service\FicheProfil\FicheProfilServiceAwareTrait;
 use Application\Service\SpecificitePoste\SpecificitePosteServiceAwareTrait;
 use DateTime;
 use EntretienProfessionnel\Service\Campagne\CampagneServiceAwareTrait;
 use EntretienProfessionnel\Service\Delegue\DelegueServiceAwareTrait;
 use EntretienProfessionnel\Service\EntretienProfessionnel\EntretienProfessionnelServiceAwareTrait;
+use FichePoste\Controller\FichePosteController;
+use FichePoste\Entity\Db\FichePoste;
+use FichePoste\Service\FichePoste\FichePosteServiceAwareTrait;
 use Laminas\Http\Request;
 use Laminas\Http\Response;
 use Laminas\Mvc\Controller\AbstractActionController;
@@ -28,7 +28,6 @@ use Structure\Service\Structure\StructureServiceAwareTrait;
 use Structure\Service\StructureAgentForce\StructureAgentForceServiceAwareTrait;
 use UnicaenApp\View\Model\CsvModel;
 use UnicaenDbImport\Entity\Db\Service\Source\SourceServiceAwareTrait;
-use UnicaenDbImport\Entity\Db\Source;
 use UnicaenEtat\Service\Etat\EtatServiceAwareTrait;
 use UnicaenPdf\Exporter\PdfExporter;
 use UnicaenUtilisateur\Service\User\UserServiceAwareTrait;
diff --git a/module/Structure/src/Structure/Controller/StructureControllerFactory.php b/module/Structure/src/Structure/Controller/StructureControllerFactory.php
index 6f05dc9f3..7102f2105 100644
--- a/module/Structure/src/Structure/Controller/StructureControllerFactory.php
+++ b/module/Structure/src/Structure/Controller/StructureControllerFactory.php
@@ -8,12 +8,12 @@ use Application\Form\HasDescription\HasDescriptionFormAwareTrait;
 use Application\Form\SelectionAgent\SelectionAgentForm;
 use Application\Service\Agent\AgentService;
 use Application\Service\AgentMissionSpecifique\AgentMissionSpecifiqueService;
-use Application\Service\FichePoste\FichePosteService;
 use Application\Service\FicheProfil\FicheProfilService;
 use Application\Service\SpecificitePoste\SpecificitePosteService;
 use EntretienProfessionnel\Service\Campagne\CampagneService;
 use EntretienProfessionnel\Service\Delegue\DelegueService;
 use EntretienProfessionnel\Service\EntretienProfessionnel\EntretienProfessionnelService;
+use FichePoste\Service\FichePoste\FichePosteService;
 use Interop\Container\ContainerInterface;
 use Psr\Container\ContainerExceptionInterface;
 use Psr\Container\NotFoundExceptionInterface;
diff --git a/module/Structure/src/Structure/Entity/Db/Mapping/Structure.Entity.Db.Structure.dcm.xml b/module/Structure/src/Structure/Entity/Db/Mapping/Structure.Entity.Db.Structure.dcm.xml
index 2be9cdfdf..17c7283e3 100644
--- a/module/Structure/src/Structure/Entity/Db/Mapping/Structure.Entity.Db.Structure.dcm.xml
+++ b/module/Structure/src/Structure/Entity/Db/Mapping/Structure.Entity.Db.Structure.dcm.xml
@@ -26,7 +26,7 @@
         <one-to-many field="gestionnaires"  target-entity="Structure\Entity\Db\StructureGestionnaire" mapped-by="structure"/>
         <one-to-many field="responsables"  target-entity="Structure\Entity\Db\StructureResponsable" mapped-by="structure"/>
 
-        <many-to-many field="fichesPostesRecrutements" target-entity="Application\Entity\Db\FichePoste" inversed-by="structure" fetch="LAZY">
+        <many-to-many field="fichesPostesRecrutements" target-entity="FichePoste\Entity\Db\FichePoste" inversed-by="structure" fetch="LAZY">
             <join-table name="structure_ficheposte">
                 <join-columns>
                     <join-column name="structure_id" referenced-column-name="id"/>
@@ -36,7 +36,7 @@
                 </inverse-join-columns>
             </join-table>
         </many-to-many>
-        <one-to-many target-entity="Application\Entity\Db\Poste" mapped-by="structure" field="postes"/>
+        <one-to-many target-entity="FichePoste\Entity\Db\Poste" mapped-by="structure" field="postes"/>
         <one-to-many target-entity="Application\Entity\Db\AgentMissionSpecifique" mapped-by="structure" field="missions"/>
 
         <many-to-one target-entity="Structure\Entity\Db\Structure" field="parent">
diff --git a/module/Structure/src/Structure/Entity/Db/Structure.php b/module/Structure/src/Structure/Entity/Db/Structure.php
index 4d1d9264a..1a472be6f 100644
--- a/module/Structure/src/Structure/Entity/Db/Structure.php
+++ b/module/Structure/src/Structure/Entity/Db/Structure.php
@@ -3,13 +3,13 @@
 namespace Structure\Entity\Db;
 
 use Application\Entity\Db\AgentMissionSpecifique;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Entity\Db\Interfaces\HasDescriptionInterface;
-use Application\Entity\Db\Poste;
 use Application\Entity\Db\Traits\DbImportableAwareTrait;
 use Application\Entity\Db\Traits\HasDescriptionTrait;
 use DateTime;
 use Doctrine\Common\Collections\Collection;
+use FichePoste\Entity\Db\Poste;
 use Laminas\Permissions\Acl\Resource\ResourceInterface;
 
 class Structure implements ResourceInterface, HasDescriptionInterface {
diff --git a/module/Structure/src/Structure/Service/Structure/StructureService.php b/module/Structure/src/Structure/Service/Structure/StructureService.php
index 22a07449c..8544e5ba5 100644
--- a/module/Structure/src/Structure/Service/Structure/StructureService.php
+++ b/module/Structure/src/Structure/Service/Structure/StructureService.php
@@ -4,13 +4,14 @@ namespace Structure\Service\Structure;
 
 use Application\Entity\Db\Agent;
 use Application\Entity\Db\AgentAffectation;
-use Application\Entity\Db\FichePoste;
 use DateTime;
 use Doctrine\DBAL\Driver\Exception as DRV_Exception;
 use Doctrine\DBAL\Exception as DBA_Exception;
 use Doctrine\ORM\NonUniqueResultException;
 use Doctrine\ORM\ORMException;
 use Doctrine\ORM\QueryBuilder;
+use FichePoste\Entity\Db\FichePoste;
+use Laminas\Mvc\Controller\AbstractActionController;
 use Structure\Entity\Db\Structure;
 use Structure\Entity\Db\StructureAgentForce;
 use Structure\Entity\Db\StructureGestionnaire;
@@ -21,7 +22,6 @@ use UnicaenApp\Service\EntityManagerAwareTrait;
 use UnicaenUtilisateur\Entity\Db\Role;
 use UnicaenUtilisateur\Entity\Db\User;
 use UnicaenUtilisateur\Service\User\UserServiceAwareTrait;
-use Laminas\Mvc\Controller\AbstractActionController;
 
 class StructureService
 {
diff --git a/module/Structure/view/structure/structure/afficher.phtml b/module/Structure/view/structure/structure/afficher.phtml
index 35f8c5582..11ead494f 100644
--- a/module/Structure/view/structure/structure/afficher.phtml
+++ b/module/Structure/view/structure/structure/afficher.phtml
@@ -33,7 +33,7 @@
 
 use Application\Entity\Db\Agent;
 use Application\Entity\Db\AgentMissionSpecifique;
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use EntretienProfessionnel\Entity\Db\Campagne;
 use EntretienProfessionnel\Entity\Db\Delegue;
 use EntretienProfessionnel\Entity\Db\EntretienProfessionnel;
diff --git a/module/Structure/view/structure/structure/dupliquer-fiche-poste.phtml b/module/Structure/view/structure/structure/dupliquer-fiche-poste.phtml
index a268087a9..1d2e98a35 100644
--- a/module/Structure/view/structure/structure/dupliquer-fiche-poste.phtml
+++ b/module/Structure/view/structure/structure/dupliquer-fiche-poste.phtml
@@ -5,7 +5,7 @@
  * @var string $url
  */
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 
 ?>
 
diff --git a/module/Structure/view/structure/structure/partial/fiches-postes.phtml b/module/Structure/view/structure/structure/partial/fiches-postes.phtml
index 434ae21c3..4d7121e68 100644
--- a/module/Structure/view/structure/structure/partial/fiches-postes.phtml
+++ b/module/Structure/view/structure/structure/partial/fiches-postes.phtml
@@ -11,7 +11,6 @@
 use Application\Entity\Db\Agent;
 use Application\Provider\Etat\FichePosteEtats;
 use Application\Provider\Privilege\AgentPrivileges;
-use Application\Provider\Privilege\FichePostePrivileges;
 use Fichier\Entity\Db\Fichier;
 use Structure\Entity\Db\Structure;
 use UnicaenEtat\Entity\Db\EtatType;
@@ -54,7 +53,7 @@ $date = new DateTime();
                 <?php endif; ?>
 
                 <?php if ($canAjouterFichePoste) : ?>
-                    <?php /** @see \Application\Controller\FichePosteController::ajouterAction() */ ?>
+                    <?php /** @see \FichePoste\Controller\FichePosteController::ajouterAction() */ ?>
                     <a href="<?php echo $this->url('fiche-poste/ajouter', ['agent' => $agent->getId()], [], true); ?>"
                        target="_blank">
                         <span class="icon icon-ajouter" data-bs-toggle="tooltip" data-bs-html="true" title="Ajouter la fiche de poste"></span></a>
@@ -63,7 +62,7 @@ $date = new DateTime();
                 <?php endif; ?>
 
                 <?php if ($structure AND $canAjouterFichePoste) : ?>
-                    <?php /** @see \Application\Controller\FichePosteController::dupliquerAction() */ ?>
+                    <?php /** @see \FichePoste\Controller\FichePosteController::dupliquerAction() */ ?>
                     <a href="<?php echo $this->url('fiche-poste/dupliquer', ['structure' => $structure->getId(), 'agent' => $agent->getId()], [], true); ?>"
                        class="ajax-modal" data-event="duplication" >
                         <span class="icon icon-cloner" data-bs-toggle="tooltip" data-bs-html="true" title="Dupliquer une fiche existante"></span></a>
@@ -150,7 +149,7 @@ $date = new DateTime();
                                 </td>
                                 <td class="action">
                                     <?php if ($canVoirFichePoste) : ?>
-                                        <?php /** @see \Application\Controller\FichePosteController::afficherAction() */ ?>
+                                        <?php /** @see \FichePoste\Controller\FichePosteController::afficherAction() */ ?>
                                         <a href="<?php echo $this->url('fiche-poste/afficher', ['fiche-poste' => $ficheposte['id']], [], true); ?>"
                                            target="_blank">
                                             <span class="icon icon-voir" data-bs-toggle="tooltip" data-bs-html="true" title="Afficher la fiche de poste"></span></a>
@@ -158,7 +157,7 @@ $date = new DateTime();
                                         <span class="icon icon-voir nope" ></span>
                                     <?php endif; ?>
                                     <?php if ($canExporterFichePoste) : ?>
-                                        <?php /** @see \Application\Controller\FichePosteController::exporterAction() */ ?>
+                                        <?php /** @see \FichePoste\Controller\FichePosteController::exporterAction() */ ?>
                                         <a href="<?php echo $this->url('fiche-poste/exporter', ['fiche-poste' => $ficheposte['id']], [], true); ?>"
                                            target="_blank">
                                             <span class="icon icon-pdf" data-bs-toggle="tooltip" data-bs-html="true" title="Exporter la fiche de poste"></span></a>
@@ -166,7 +165,7 @@ $date = new DateTime();
                                         <span class="icon icon-pdf nope" ></span>
                                     <?php endif; ?>
                                     <?php if ($canModifierFichePoste AND $ficheposte['etat_code'] !== FichePosteEtats::ETAT_CODE_SIGNEE) : ?>
-                                        <?php /** @see \Application\Controller\FichePosteController::editerAction() */ ?>
+                                        <?php /** @see \FichePoste\Controller\FichePosteController::editerAction() */ ?>
                                         <a href="<?php echo $this->url('fiche-poste/editer', ['fiche-poste' =>  $ficheposte['id']], [], true); ?>"
                                            target="_blank">
                                             <span class="icon icon-editer" data-bs-toggle="tooltip" data-bs-html="true" title="Modifier la fiche de poste"></span></a>
@@ -175,11 +174,11 @@ $date = new DateTime();
                                     <?php endif; ?>
                                     <?php if ($canHistoriserFichePoste AND $ficheposte['etat_code'] !== FichePosteEtats::ETAT_CODE_SIGNEE) : ?>
                                         <?php if ($ficheposte['histo_destruction']) : ?>
-                                            <?php /** @see \Application\Controller\FichePosteController::restaurerAction() */ ?>
+                                            <?php /** @see \FichePoste\Controller\FichePosteController::restaurerAction() */ ?>
                                             <a href="<?php echo $this->url('fiche-poste/restaurer', ['fiche-poste' =>  $ficheposte['id']], ['query' => ['retour' => $this->url('structure/afficher', ['structure' => $structure->getId()], ['fragment' => 'informations'], true)]], true); ?>" >
                                                 <span class="icon icon-restaurer" data-bs-toggle="tooltip" data-bs-html="true" title="Restaurer la fiche de poste"></span></a>
                                         <?php else : ?>
-                                            <?php /** @see \Application\Controller\FichePosteController::historiserAction() */ ?>
+                                            <?php /** @see \FichePoste\Controller\FichePosteController::historiserAction() */ ?>
                                             <a href="<?php echo $this->url('fiche-poste/historiser', ['fiche-poste' =>  $ficheposte['id']], ['query' => ['retour' => $this->url('structure/afficher', ['structure' => $structure->getId()], ['fragment' => 'informations'], true)]], true); ?>" >
                                                 <span class="icon icon-historiser" data-bs-toggle="tooltip" data-bs-html="true" title="Historiser la fiche de poste"></span></a>
                                         <?php endif; ?>
@@ -187,7 +186,7 @@ $date = new DateTime();
                                         <span class="icon icon-historiser nope"></span>
                                     <?php endif; ?>
                                     <?php if ($canDetruireFichePoste) : ?>
-                                        <?php /** @see \Application\Controller\FichePosteController::detruireAction() */ ?>
+                                        <?php /** @see \FichePoste\Controller\FichePosteController::detruireAction() */ ?>
                                         <a href="<?php echo $this->url('fiche-poste/detruire', ['fiche-poste' =>  $ficheposte['id']], [], true); ?>"
                                            class="ajax-modal" data-event="modification">
                                             <span class="icon icon-retirer"></span></a>
diff --git a/module/Structure/view/structure/structure/partial/postes.phtml b/module/Structure/view/structure/structure/partial/postes.phtml
index 88e7cb92b..7018cc6dc 100644
--- a/module/Structure/view/structure/structure/partial/postes.phtml
+++ b/module/Structure/view/structure/structure/partial/postes.phtml
@@ -1,10 +1,10 @@
 <?php
 
 /**
- * @var Poste[] $postes
+ * @var \FichePoste\Entity\Db\Poste[] $postes
  */
 
-use Application\Entity\Db\Poste;
+use FichePoste\Entity\Db\Poste;
 
 ?>
 
diff --git a/module/Structure/view/structure/structure/partial/profil.phtml b/module/Structure/view/structure/structure/partial/profil.phtml
index 39612889a..e7cb44de2 100644
--- a/module/Structure/view/structure/structure/partial/profil.phtml
+++ b/module/Structure/view/structure/structure/partial/profil.phtml
@@ -6,7 +6,7 @@
  * @var FichePoste[] $fichesRecrutements
  */
 
-use Application\Entity\Db\FichePoste;
+use FichePoste\Entity\Db\FichePoste;
 use Application\Entity\Db\FicheProfil;
 use Application\Provider\Privilege\FicheprofilPrivileges;
 use Structure\Entity\Db\Structure;
-- 
GitLab