diff --git a/config/application.config.php b/config/application.config.php
index 42e03dd2ae5fb3c87c754a93b26f5b227548046f..44852f4e6886420eff49fd811c82de339924eb3a 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 c432b08830446aca58f070047df5beadc85b396f..2c3ac9996622465d34e945798ca3f60b15276413 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 2ce2e1e9686bb314837f0a0f438c966899b5a663..23490f10496190c67f8be5a5fa33b8f8678435e0 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 0c47e4288a7b53f6e1dcb18365bbe3da916da729..d73aba7151971f3c85872ae8e213f0bf04e4da43 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 6331db2ecae5aed2f2dbd2e946608148cd1382b5..a65ec1f638ce695deab30df872d573e7c02c3558 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 a891e79279a355f60226f2e02463cc45f18e62a5..ff6c537f05905c03083c970a6b3db0de1db00366 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 c35c2b0a5963838834332800526a1ba7ae409038..14b690f1faea3b685a0ca45def25861373b45f46 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 8213529587df64e9b3dd0a0bd2a206edf32bab2c..60edf20271c6e657cee6bbf7bb97d3b48ec03609 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 40765a7e904b2086ac6f1814dbf979d58462a82a..6f9c4c780e3b6045e5d82c752e46ee2a643ce084 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 53526bad41af975ce149156883bc08391d4fb3b0..60992b75fe9708be31463339b283bb8213222f23 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 e8001d5035d166e6de2e63ccc7923111143923dd..6b4d08e93df4bbc5c6e617b26549a6ee6b93bd5e 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 cf519ee1e1376faae7ff839632c96664af913ca0..7690d5c78633e0db1bc1104e165d8b061d688370 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 2f2002f89f8c2af9eebbbb7c1163f3689b5f43ed..b6a88c50ec206e2574715eb538cd1d4a4712f2c6 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 a58e7bfe80d9ad67aef2f410224d5dba51c4d785..0000000000000000000000000000000000000000
--- 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 55f183d95bffa80730ec449c119c204d7150034a..96d46e7887d5cc1b6fa27693f6111b0eab793d41 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 60eb61d86cd6f1bf8d3e515986702adc879b95e6..57c1fe881bd5f2bd03d60b470059daf31188a6b9 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 1ae893e69a361786cee8d13363c581daf662042d..c0c77f7731c6609c00f02c2e4cf3a87870a28324 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 ae78bdb883e488eca372cc1b6d364c675ea6a6f0..54baa39c21f0822d2a984d88638532e2f13d5245 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 c7dfb6480a0c9d27f249d4b160ffdbeeb5e01172..9a0ce358540e22d6c405c66c7dbe344249e9c5c2 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 f31c3c06b368059175160051dc46d3c1b2d0db00..2610c3acb03b9bc73bcbc1d26be687df08e0fbaf 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 6ab4754d565b10db20fc7ac15ce286e35151e61d..5a9f252a890161ab9966d063b6e5f58b17e336fb 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 5ff9fe9815c24022f64e43f864fafae2702f4019..26cf354ee155ca665484c4e8d9b456566a01ca23 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 35116c5b0a0a67f8ac4240d11c15c403b4279d3c..0a3b64e9e11e6a209a5e774e2014eef92b332c05 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 ec3e002db70f6caa5924a5a0164fe58f78bb45df..78d9a62b132ce05366c43d3278d06077f9b8dd97 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 7a7477181fec3837d3c03a65e449d4864b038680..d04d87aa7128070640f821d55277152696b454fc 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 535277680c830a2ce1f5e499b9b4c21dd5afc2fd..a9912d2e1410e2d94aa9aa3f4ef72a2d427f511e 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 b1d5d567b911ce5d0213c762dc032ab68a9bef61..0000000000000000000000000000000000000000
--- 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 81919c92df0a8a3b14acbf7f59f4214fed2ddee2..0000000000000000000000000000000000000000
--- 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 4302888d36f08fcaa2e2eb0c14935b9e5ec613c1..0000000000000000000000000000000000000000
--- 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 511598083f6fefa822c62df509033659c58349f3..0000000000000000000000000000000000000000
--- 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 09daf87bb73b71587faf24c4cfef05ec5e4067c5..0000000000000000000000000000000000000000
--- 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 640163f5d2ffab28fbb4d59477f9d6d5723f2ed2..1ee567e0ec5df254391590fe0725a8b812f69cc7 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 6d2307950ae634ed0945a64e90b02c8f54a1c466..0000000000000000000000000000000000000000
--- 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 34dfb0a52a06ee675ff05b3977b3510429548c68..08b4421d543052333de542d20d7a688a24110af9 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 6d4b9ecd7ca9d2fed54dc3dc937677433a9845bd..bac5b465a1c3051c3e616ac810ed0d3f309d0a17 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 eb9f57334eb5584a682cd84e585ecccdbd4026dc..73a428aa392db96ad517eb1dac3b42932314094b 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 d845adefcc25dbc4c5c76443ca59aaf766c0557b..0b679d6e20cd33c6750069a60c8285f7345fc6cf 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 595dfed4753aba37239d555197bc4e1e9c75a972..0000000000000000000000000000000000000000
--- 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 b119026473e6bb5aa1075b478bcfcc2b306a6072..c0250e4c60b1c9a8281da85365722f36ed00e08a 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 5e0582e48b2c9f2c2662fbd9650533b0b182d27b..a51b978a7f0bbee252da2da6204749e34db6be24 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 70791b4e30b91d8cb7098bb419f7ac7ff8c7214c..af1ac05b38d9b64cdc7de0070320cc66c3207664 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 f2a8981e7a6356683dcd8d2ddaf17ceba5002a03..6b77cdbae8c751509f248227d9e4d68504aedd42 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 fd93b9ddf4e7134e7446a7b075af9a34b1ebc8c0..0000000000000000000000000000000000000000
--- 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 708c3fa4a5291aa36a023779925c8076c11846e7..5745b97fb8b6b35effd9ef89bf4aaf46c64b3bbb 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 4d34bf802ba491c60418b5b0adc927fcb34731af..df93c466b611234e8c79c02ddc595ebfe22e115a 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 a169f8790b7f551d22d67b6f36bad90b8a17cb56..770b466debb9793ca184102a7ee41d07681a4b3b 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 fbf98127e8f27890a1d6cd8ee986e35ebf3a9716..318bc419335320008b91bd6b7249ae5352c6b276 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 f77e6a7ff5ee1c8a509d6e6adcdcdd9213fef152..4a0ec3a9ac33349a6710dd91e4e2328bfb0b29b1 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 d097a60086294c157f6c8fd86146ac9c7e48bb14..7a0e86ec518e0a5f70f0d6940e18cf4ba361911c 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 7780cc13533f6238fa77e12b82d85d67fe001c2a..01f46bea2f6132e1249f035c4e1bb70793233300 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 102958d5f366d1c67ebd82a62a47696f6d6a3af7..7f446d39f0d6c4d30da6355c414a2b9d9169fe37 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 1beb96cc18aec01b6f221cf6f10b42b977e5f37d..6f26d917601cf1129e93e96b1e403d56f0e0e9ae 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 c2d080a13f82cc3d734ce487b8eba0edcc5abf3b..e15c5861d79ff953d723ab0ea8b5f610e89a8d76 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 a87a045666046605a85a6a68bbebbfda88b6525b..bc4faa0c8e535b229f9d6407e24f3176ffb60421 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 4671c851f684b995b82a647a53f063c8ddab1c1b..e02339c2266ab51e3ffa5cb5cfe44d0b33e631d6 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 1afe860677c4512c9642c562e8791f5dc9ef5aa0..fb62735c65f0a84f4a57b430805dd545f3db0b48 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 08bfc4b7ecfbdc3c7ad227c96471b1b02a65910c..0d3f344fdb1ea82a83ca5de701daad0844758d85 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 7bae33c2591cead03f1084ce7eb56e9e8e5d40be..59af4651638e182ca1539cb142c3323683459098 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 efffa740dfff27e48778ebdfa466bf92efde155b..9f4abcb3f29745b40c4d4e1b1aeef39f901d7204 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 ca968c1aedf4e088824208a85702741b078d9b2c..7f8ff6ae465a36c4dc138d7c4f405eadd5e38fff 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 f2b1a228fee0df93973cd585e8738851c16bd25c..4302683a5a9bf7d53e1cc8b9d5d8df860bfdf50a 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 cb8a1ab6d8eaa02311a99d0a504d5a065acaeee9..b62748562c8eb38bf4a8a21254432ca62e1c9395 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 cca89d01f698359a7b16311d66941dd9592e2cec..19297db4dfc0787a931fc894eb1eb349de989ed1 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 415f6c44b01efa63d91cf66c827ac1eb64db5cbf..4a11c41131434e3a2c27e1aa7d5185cc15841394 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 8714e243725a5dd6539aef473048ca723b7de15c..dc16a10a7c1578292158abbbcc5d0f125a50b352 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 3fcb21ecfc0943a8349d4b571fba808cbd07296c..637f3902718d4385c7eb37ab30669e49e3de242c 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 5a0948571d373577c7d166703a8174845d6ab8f5..6de10874ce8c86ac0fc92816cb7c4f22b97ed51c 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 f95565a068f7ac8aa27c9b8fb34d5340dfd23674..ec8a537adc225b9756f00cc5d7ab911f852d4353 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 9e25d227d647cc71930a3ca93b0a26252ae6d458..492755becd228d5ed84c444e6b0e361d6dc8f556 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 06862ea57b1866bc35df1bce7eb3f0cd905429da..3b1a3b3285807c034695ac584e1aef26f6f54f64 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 88cb5d0bdbf8df839f5acb3d25e9f5993f6f996d..53d844361abae6e02093f6545a437c606c67d062 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 ce3c2be180c627bc771352df61803aaa28ff8ad9..4e52c2132c1790f6e3f463771da4a0d10d073edd 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 0000000000000000000000000000000000000000..92277771625967027ed0f7f76052d28a9da9cf7a
--- /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 0000000000000000000000000000000000000000..e2e8412f5da3b69c3866f8878b00e5932f68c5cf
--- /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 0000000000000000000000000000000000000000..bf2600ae7a4eccff361edbf91b827457e7fb4042
--- /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 fa2b872b831d1d21a3f9254375d7c2e98af8fdb7..55c43ef41e8ef35032f95b61827588bd6a412e53 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 0000000000000000000000000000000000000000..69ce81da94678ce136c1e37ced5c49ecec4b22d7
--- /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 0000000000000000000000000000000000000000..b2c385d25a8706d91e5da61c07c1e1d9cc447750
--- /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 0d2e4c7b128bf4d984711876b2b1238e222dd428..60934abed0113d9bfb2de5f29c10184e72fbf1ac 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 9e6c02e73eef05282ef9b0fff796443ddc5042d3..3dd42079d45ae0f762eebd9e052dcca66dee785a 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 0000000000000000000000000000000000000000..f8ce415da02b8d3acc7a7b3b245f031fea55b769
--- /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 0000000000000000000000000000000000000000..dd313c3ebe796264d3f451e137ffbb52f675da02
--- /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 29d3951263ab1dcd772ca0ba13f1e2bbcb8f99ad..7df08ed3b222a2e7c9b6db0291e409755f300529 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 50fe96310dc6e1cf3a11597f0772fe050fefc2ec..56a5e35b793e2a27344dab6cd26b1611ecdd2dcc 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 0000000000000000000000000000000000000000..254c1363cc2c40836da110132906e62ffe59eec6
--- /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 0000000000000000000000000000000000000000..759241ab60d1d785d747833f684567319f422ae5
--- /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 0000000000000000000000000000000000000000..c7500918c41a20441cd0a8423160077f202c7104
--- /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 708a4c8470e5a869be6dac16e8b1bea4bc69a6f2..25f567e8753b17bd206af81241d7503d90389cb9 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 1a7e49eef061d3e13c4f51278849a7c05ef95744..d81dca5cd5ef1b27742cc61d29efe8d87a1ad68e 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 d4b90cececb5fd39767f614ecd474e09da3c4b6b..dd744e313074a5f688724876cb988b5fd3f832db 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 bad7d5e3574ff208b6fdb9a06dc04967e08a9c90..674423ab9e314caf598da4024b71340bef7bbb59 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 f908132e9fe1b1410e2dc50cd8c4dab2077829d0..2171db025c5b845db90e723444c2aab394485bab 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 870d5fde2200d43da3400b7b92acef820d9aac5c..07bf649319fa9bf8d2a6d8637c0223ef03151236 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 0000000000000000000000000000000000000000..e030423053941113acd3172d249a3f5025f731cb
--- /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 450a34cee6df0646926281dfa7b364eda538a99e..1d459ab80f115fbbd6ad01fbe7374b3905d52a8c 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 561b1a42e2cd1d9f309c48f663c763fcb2f5a3ef..e9e0c2875e43a90e556c65b8a357579112c2f531 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 2091965a3b66bef88df730898ad66e7333afbc21..a779dbbb81c0bee384114f9d7ef7b2ac21ad56a6 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 1f6fec1475b89c5b2c4d55f67e5fe15824655396..492ca8b66f1be698171db1f2d1abcab29ae228c2 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 0000000000000000000000000000000000000000..49a0263d1c1e37744b753acd530816ab71f03de8
--- /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 52eaa51925a272c422b97492de26669805c52d9b..6bd3d6f936e84add339daccd084d66b9949c0ce0 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 4df2ab46c73849c2537665a9938da754b8bbbbee..f870ed09c6234ad4d2f0df0fd90848512e2a0455 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 ab831782246a38930bd89c1bfc553c2c5d89255e..e1d4595de78e5e6a25cca0f3e8fd63848d5318e4 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 3c953b57b63b3ed46e4b167482f04af2a3b8ba75..b8f42c160da0fd36aa9b4f705463d9332c68cdcc 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 04b57f706443f28800c477d855c3b9dde41e9b58..1f90e176ac03e766d4481b200c7901557680991e 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 0000000000000000000000000000000000000000..c5e39a1b4b896ba15269781561f9dff15b123f3d
--- /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 f5bf14b4e4055a93b67c41376b75bb04ad77b384..29f85151b518a97a8470f4f94d6679c2639d0dc9 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 cb28575714640597c5c27d9699db65c101ef6f32..b9ab9b0e5823778bf626f59e3da5a8a6804b6486 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 3a056977566b36b18cc356d05d4588755b0f6db3..ec98030bd84881c6710898145f3989326aa3f55d 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 f1816e81625787e9576ca611646f8a2dd8d1ace7..8601c14eb0a429f98672341c23b1dff7cf79759f 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 0c2d574e176f735f268647ea20c612ab1aba6d8d..8fbbeff2420aa45db19e5fd6c625a7154f94615c 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 4e9785f18040bbd9e2b4eb1dd99d74553cecadd4..004ee3450d5538e8a9aaa694ec295266a0584dac 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 6cd9d8dbe6b26097db8b89ff8b7ca099851850f1..e4e527d6ef6d558ec7e480910b66106befbd8bd3 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 eb637aad887f2170b2e7cfb2a85df0cc54665f8e..6dbdd1be7a1fd27ab4b143ef20f774aa3ec8953f 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 78dd3309eaff4a95d165a4c37ee342e940d47dfc..288ad97312b57c780a4a9ce21530696df3714728 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 d12713fd940dc54b58ae2547d8a3b6a254f37371..8dcc63b9af658e746e6a7078fc965278d3c735a6 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 57714a532518666a31e0cf8628b8f54706f9051a..74909fd2326bb94c326fb7f5c2bd6b1a6ed3a51f 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 eef749eca3db04b049a1fcf4c2e08deade8bf582..248f336c2ad90fd19222c0e204fddaca8d21a2f8 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 4e4406f8cb613dde5e9dc744cf0874f6816298b1..cdd12b7b65841f8a4d65e44124bec599062a86d3 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 fefab250fde8672e5cfce229c614eaceed3890f2..db8bee0a931eae33c9d9b9de5f11a153a4947682 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 2fd23e986284c24cc9d2ce0568b4c92d27f95836..15c3b9dc2bf6e55fbcfa8301ee9f1dc110c5d7cf 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 03abd31933fd3975be1715084f4c7fe5cf414b9a..c793242c79c442b9f8087307b23fc7c2c2076e72 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 cc9f6bef152f21cd4f8727fe492158117de8d5d9..862823020acd397012badc359024fa5100873e78 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 11ad60f8c5961285bbeb51b7d5aed0029fa5f686..2f830bfeedbb027338d41b5607afe62ff5a75815 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 50e45d46678d05a449424c55f91b3084c8b7be60..ab608545613f02c33b9bf95f35ef7d1483a80dfd 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 9ceb8b3c37cedfcaa6c5784e882e65e011d5e691..55c8d8d91eb12ef4bd621b79873d8393c2a04a6e 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 8366b2ab775a69949da59f841b0d65c041404d84..8fe56a7b6f33a0d417c7e1114f3790a25fd90f96 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 cba3b979a9b8de1ec05e06821d31448c0a9a95e8..ba5e150a73875fb7048f93db2867e78f4027be20 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 623d6a11735a61b84816d62363d40639d9bd2daa..3af7728f1313532594d16fa19e3d959b028d8fab 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 5dea25801efe44b9c80753967a954d08f63be792..e305b345e1348f796561ce38533beac12deda704 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 2b2e47135a76a3a22da8af3c33863bc66de3aa7a..fb4e5b21b148141fb230c7db3f8a0250a01ba98f 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 99e686d9e0d9263ee7ed39bd86f092b5bd9dcf73..a7510fe13df313bfd633c1c278c3860309e21803 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 e59bf35d9754f1dfb38911f1bcbec429ec3fa244..b81b05d997521a972ef18b2a044e849c76ab56ba 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 e2773d91028cc09351a353b3f8c136bcee8a7fa9..c4fe422f7d3b8bd8e297fd782011f266bf227236 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 beaf37ce0ff4192c2906911ee9aeb762ffa2850c..f3f09bcff7dd97a237c544e45644676c70fcdfc7 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 bc6254e8af56e65945dab0f926e577d4f452610e..50a49c15404e13b2c5f19f762b086dd6b20169d8 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 ba9cd9217c49fd2fd8da5a5d56cc214c803fb6d7..aac4be01ea116772ffefcdbeb0659043cf7e00e0 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 6f05dc9f3f71ebdfd7f805ad4a52e134d6db1fbf..7102f2105a64b3bf9512aab0dc5e8722d4780159 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 2be9cdfdf8ce38c8f19b62b58956fdd9da212225..17c7283e3bce873ee544b600a4290445704bec2d 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 4d1d9264aa728addab9b98a604e8e7fcd68c0d82..1a472be6f393267b53c0cbb4ccb972d6b26e56d6 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 22a07449cf8a09b398ad5a8dcbc5106bc0cf41f2..8544e5ba5e35d048c169a9b595c3eb622f4610ac 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 35f8c55826bcf294ad838d679daba52369a1ee08..11ead494f18fc6c14327d723aa6da8cfe4ab7030 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 a268087a98200868d859baa0e2cbda6873422e85..1d2e98a35d7a540620cb220d88869ebbe461a14a 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 434ae21c336ef046c68187719b21cb2de23553aa..4d7121e68a4568a072f76721b373104bab4e1dee 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 88e7cb92bf37c1903017d3c4d6eb1e2a5725edbe..7018cc6dcd9f7897ae1f4882e6cef476e9f2072f 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 39612889aaa2a88a6a082388889c48cbe508bde1..e7cb44de274967addbac749924adeef69879338e 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;