diff --git a/module/Application/config/merged/fiche-metier.config.php b/module/Application/config/merged/fiche-metier.config.php
index 31e78fe361b5fd30ac0fddb199eecb8fe1c91310..316b804dadb0df7be57365852297883c523828be 100644
--- a/module/Application/config/merged/fiche-metier.config.php
+++ b/module/Application/config/merged/fiche-metier.config.php
@@ -4,10 +4,6 @@ namespace Application;
 
 use Application\Controller\FicheMetierController;
 use Application\Controller\FicheMetierControllerFactory;
-use Application\Form\FicheMetier\LibelleForm;
-use Application\Form\FicheMetier\LibelleFormFactory;
-use Application\Form\FicheMetier\LibelleHydrator;
-use Application\Form\FicheMetier\LibelleHydratorFactory;
 use Application\Form\FicheMetierImportation\FicheMetierImportationForm;
 use Application\Form\FicheMetierImportation\FicheMetierImportationFormFactory;
 use Application\Form\FicheMetierImportation\FichierMetierImportationHydrator;
@@ -24,9 +20,9 @@ use Application\Service\FicheMetier\FicheMetierServiceFactory;
 use Application\View\Helper\FicheMetierExterneViewHelper;
 use Application\View\Helper\RaisonsViewHelper;
 use Application\View\Helper\SpecificitePosteViewHelper;
-use UnicaenPrivilege\Guard\PrivilegeController;
 use Laminas\Router\Http\Literal;
 use Laminas\Router\Http\Segment;
+use UnicaenPrivilege\Guard\PrivilegeController;
 
 return [
     'bjyauthorize' => [
@@ -538,7 +534,6 @@ return [
     ],
     'form_elements' => [
         'factories' => [
-            LibelleForm::class => LibelleFormFactory::class,
             SelectionFicheMetierForm::class => SelectionFicheMetierFormFactory::class,
             FicheMetierImportationForm::class => FicheMetierImportationFormFactory::class,
             RaisonForm::class => RaisonFormFactory::class,
@@ -546,7 +541,6 @@ return [
     ],
     'hydrators' => [
         'factories' => [
-            LibelleHydrator::class => LibelleHydratorFactory::class,
             FichierMetierImportationHydrator::class => FichierMetierImportationHydratorFactory::class,
             RaisonHydrator::class => RaisonHydratorFactory::class,
         ],
diff --git a/module/Application/src/Application/Controller/FicheMetierController.php b/module/Application/src/Application/Controller/FicheMetierController.php
index 07189943b7301e205947b5ab96f15f64c9a7aee2..43d346a6425a7dbbc6656f2146bc82c3d3e01dd0 100644
--- a/module/Application/src/Application/Controller/FicheMetierController.php
+++ b/module/Application/src/Application/Controller/FicheMetierController.php
@@ -7,8 +7,6 @@ use Application\Entity\Db\FicheMetier;
 use Application\Entity\Db\ParcoursDeFormation;
 use Application\Form\Activite\ActiviteForm;
 use Application\Form\Activite\ActiviteFormAwareTrait;
-use Application\Form\FicheMetier\LibelleForm;
-use Application\Form\FicheMetier\LibelleFormAwareTrait;
 use Application\Form\FicheMetierImportation\FicheMetierImportationFormAwareTrait;
 use Application\Form\Raison\RaisonFormAwareTrait;
 use Application\Form\SelectionFicheMetier\SelectionFicheMetierFormAwareTrait;
@@ -35,6 +33,7 @@ use Laminas\Http\Response;
 use Laminas\Mvc\Controller\AbstractActionController;
 use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
 use Laminas\View\Model\ViewModel;
+use Metier\Form\SelectionnerMetier\SelectionnerMetierFormAwareTrait;
 use Metier\Service\Domaine\DomaineServiceAwareTrait;
 use Metier\Service\Metier\MetierServiceAwareTrait;
 use Mpdf\MpdfException;
@@ -66,7 +65,6 @@ class FicheMetierController extends AbstractActionController
 
     /** Traits associƩs aux formulaires */
     use ActiviteFormAwareTrait;
-    use LibelleFormAwareTrait;
     use FicheMetierImportationFormAwareTrait;
     use RaisonFormAwareTrait;
     use SelectionApplicationFormAwareTrait;
@@ -74,6 +72,7 @@ class FicheMetierController extends AbstractActionController
     use SelectionEtatFormAwareTrait;
     use SelectionFicheMetierFormAwareTrait;
     use SelectionFormationFormAwareTrait;
+    use SelectionnerMetierFormAwareTrait;
 
 
     const REFERENS_SEP = "|";
@@ -125,8 +124,7 @@ class FicheMetierController extends AbstractActionController
         $fiche = new FicheMetier();
         $fiche->setEtat($this->getEtatService()->getEtatByCode(FicheMetierEtats::ETAT_REDACTION));
 
-        /** @var LibelleForm $form */
-        $form = $this->getLibelleForm();
+        $form = $this->getSelectionnerMetierForm();
         $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/ajouter', [], [], true));
         $form->bind($fiche);
 
@@ -150,7 +148,7 @@ class FicheMetierController extends AbstractActionController
         $vm = new ViewModel();
         $vm->setTemplate('application/default/default-form');
         $vm->setVariables([
-            'title' => 'Ajout d\'une fiche metier',
+            'title' => "Ajout d'une fiche metier",
             'form' => $form,
         ]);
         return $vm;
@@ -281,8 +279,7 @@ class FicheMetierController extends AbstractActionController
     {
         $fiche = $this->getFicheMetierService()->getRequestedFicheMetier($this, 'id', true);
 
-        /** @var LibelleForm $form */
-        $form = $this->getLibelleForm();
+        $form = $this->getSelectionnerMetierForm();
         $form->setAttribute('action', $this->url()->fromRoute('fiche-metier-type/editer-libelle', ['id' => $fiche->getId()], [], true));
         $form->bind($fiche);
 
diff --git a/module/Application/src/Application/Controller/FicheMetierControllerFactory.php b/module/Application/src/Application/Controller/FicheMetierControllerFactory.php
index bdeddeb0c5a38521f7f65c0072dcff27bde87482..b621b60b3638a4e686f4ec62dfd3858b753d6fe8 100644
--- a/module/Application/src/Application/Controller/FicheMetierControllerFactory.php
+++ b/module/Application/src/Application/Controller/FicheMetierControllerFactory.php
@@ -3,22 +3,22 @@
 namespace Application\Controller;
 
 use Application\Form\Activite\ActiviteForm;
-use Application\Form\FicheMetier\LibelleForm;
 use Application\Form\FicheMetierImportation\FicheMetierImportationForm;
 use Application\Form\Raison\RaisonForm;
-use Application\Service\ActiviteDescription\ActiviteDescriptionService;
-use Element\Form\SelectionApplication\SelectionApplicationForm;
-use Element\Form\SelectionCompetence\SelectionCompetenceForm;
 use Application\Form\SelectionFicheMetier\SelectionFicheMetierForm;
 use Application\Service\Activite\ActiviteService;
+use Application\Service\ActiviteDescription\ActiviteDescriptionService;
 use Application\Service\Agent\AgentService;
 use Application\Service\Configuration\ConfigurationService;
 use Application\Service\FicheMetier\FicheMetierService;
+use Application\Service\ParcoursDeFormation\ParcoursDeFormationService;
+use Element\Form\SelectionApplication\SelectionApplicationForm;
+use Element\Form\SelectionCompetence\SelectionCompetenceForm;
 use Element\Service\HasApplicationCollection\HasApplicationCollectionService;
 use Element\Service\HasCompetenceCollection\HasCompetenceCollectionService;
-use Application\Service\ParcoursDeFormation\ParcoursDeFormationService;
 use Formation\Form\SelectionFormation\SelectionFormationForm;
 use Interop\Container\ContainerInterface;
+use Metier\Form\SelectionnerMetier\SelectionnerMetierForm;
 use Metier\Service\Domaine\DomaineService;
 use Metier\Service\Metier\MetierService;
 use Psr\Container\ContainerExceptionInterface;
@@ -69,7 +69,6 @@ class FicheMetierControllerFactory
         $parcoursService = $container->get(ParcoursDeFormationService::class);
 
         /**
-         * @var LibelleForm $libelleForm
          * @var FicheMetierImportationForm $ficheMetierImportationForm
          * @var ActiviteForm $activiteForm
          * @var RaisonForm $raisonForm
@@ -78,8 +77,8 @@ class FicheMetierControllerFactory
          * @var SelectionFormationForm $selectionFormationForm
          * @var SelectionEtatForm $selectionEtatForm
          * @var SelectionFicheMetierForm $selectionFicheMetierForm
+         * @var SelectionnerMetierForm $selectionnerMetierForm
          */
-        $libelleForm = $container->get('FormElementManager')->get(LibelleForm::class);
         $activiteForm = $container->get('FormElementManager')->get(ActiviteForm::class);
         $raisonForm = $container->get('FormElementManager')->get(RaisonForm::class);
         $selectionApplicationForm = $container->get('FormElementManager')->get(SelectionApplicationForm::class);
@@ -88,6 +87,7 @@ class FicheMetierControllerFactory
         $selectionEtatForm = $container->get('FormElementManager')->get(SelectionEtatForm::class);
         $selectionFicheMetierForm = $container->get('FormElementManager')->get(SelectionFicheMetierForm::class);
         $ficheMetierImportationForm = $container->get('FormElementManager')->get(FicheMetierImportationForm::class);
+        $selectionnerMetierForm = $container->get('FormElementManager')->get(SelectionnerMetierForm::class);
 
         /** @var FicheMetierController $controller */
         $controller = new FicheMetierController();
@@ -106,7 +106,6 @@ class FicheMetierControllerFactory
         $controller->setMetierService($metierService);
         $controller->setParcoursDeFormationService($parcoursService);
 
-        $controller->setLibelleForm($libelleForm);
         $controller->setActiviteForm($activiteForm);
         $controller->setRaisonForm($raisonForm);
         $controller->setSelectionApplicationForm($selectionApplicationForm);
@@ -115,6 +114,7 @@ class FicheMetierControllerFactory
         $controller->setSelectionEtatForm($selectionEtatForm);
         $controller->setSelectionFicheMetierForm($selectionFicheMetierForm);
         $controller->setFicheMetierImportationForm($ficheMetierImportationForm);
+        $controller->setSelectionnerMetierForm($selectionnerMetierForm);
 
         return $controller;
     }
diff --git a/module/Application/src/Application/Entity/Db/AgentStageObservation.php b/module/Application/src/Application/Entity/Db/AgentStageObservation.php
index d36723d19fe59215aa1a22a445f3c764d450a8db..d7d83bd79d0549faebb85f3be7ecf40d8bac640b 100644
--- a/module/Application/src/Application/Entity/Db/AgentStageObservation.php
+++ b/module/Application/src/Application/Entity/Db/AgentStageObservation.php
@@ -4,13 +4,15 @@ namespace Application\Entity\Db;
 
 use Application\Entity\Db\Interfaces\HasPeriodeInterface;
 use Application\Entity\Db\Traits\HasPeriodeTrait;
-use Metier\Entity\Db\Metier;
+use Metier\Entity\HasMetierInterface;
+use Metier\Entity\HasMetierTrait;
 use Structure\Entity\Db\Structure;
 use UnicaenEtat\Entity\Db\Etat;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
 
-class AgentStageObservation implements HistoriqueAwareInterface, HasPeriodeInterface {
+class AgentStageObservation implements HistoriqueAwareInterface, HasMetierInterface, HasPeriodeInterface {
+    use HasMetierTrait;
     use HasPeriodeTrait;
     use HistoriqueAwareTrait;
 
@@ -20,8 +22,6 @@ class AgentStageObservation implements HistoriqueAwareInterface, HasPeriodeInter
     private $agent;
     /** @var Structure|null */
     private $structure;
-    /** @var Metier|null */
-    private $metier;
     /** @var string|null */
     private $complement;
     /** @var Etat|null */
@@ -71,24 +71,6 @@ class AgentStageObservation implements HistoriqueAwareInterface, HasPeriodeInter
         return $this;
     }
 
-    /**
-     * @return Metier|null
-     */
-    public function getMetier(): ?Metier
-    {
-        return $this->metier;
-    }
-
-    /**
-     * @param Metier|null $metier
-     * @return AgentStageObservation
-     */
-    public function setMetier(?Metier $metier): AgentStageObservation
-    {
-        $this->metier = $metier;
-        return $this;
-    }
-
     /**
      * @return string|null
      */
diff --git a/module/Application/src/Application/Entity/Db/AgentTutorat.php b/module/Application/src/Application/Entity/Db/AgentTutorat.php
index d6386dd671966a41f0b9084fbbd462aebdf9b601..035505c3fe15a7870d7443d199f20b51702c19e4 100644
--- a/module/Application/src/Application/Entity/Db/AgentTutorat.php
+++ b/module/Application/src/Application/Entity/Db/AgentTutorat.php
@@ -5,11 +5,14 @@ namespace Application\Entity\Db;
 use Application\Entity\Db\Interfaces\HasPeriodeInterface;
 use Application\Entity\Db\Traits\HasPeriodeTrait;
 use Metier\Entity\Db\Metier;
+use Metier\Entity\HasMetierInterface;
+use Metier\Entity\HasMetierTrait;
 use UnicaenEtat\Entity\Db\Etat;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
 
-class AgentTutorat implements HistoriqueAwareInterface, HasPeriodeInterface {
+class AgentTutorat implements HistoriqueAwareInterface, HasMetierInterface, HasPeriodeInterface {
+    use HasMetierTrait;
     use HasPeriodeTrait;
     use HistoriqueAwareTrait;
 
@@ -19,8 +22,6 @@ class AgentTutorat implements HistoriqueAwareInterface, HasPeriodeInterface {
     private $agent;
     /** @var Agent|null  */
     private $cible;
-    /** @var Metier|null */
-    private $metier;
     /** @var string|null */
     private $complement;
     /** @var bool|null */
@@ -72,24 +73,6 @@ class AgentTutorat implements HistoriqueAwareInterface, HasPeriodeInterface {
         return $this;
     }
 
-    /**
-     * @return Metier|null
-     */
-    public function getMetier(): ?Metier
-    {
-        return $this->metier;
-    }
-
-    /**
-     * @param Metier|null $metier
-     * @return AgentTutorat
-     */
-    public function setMetier(?Metier $metier): AgentTutorat
-    {
-        $this->metier = $metier;
-        return $this;
-    }
-
     /**
      * @return string|null
      */
diff --git a/module/Application/src/Application/Entity/Db/FicheMetier.php b/module/Application/src/Application/Entity/Db/FicheMetier.php
index f8299e0f489c085f1b240adb9f70979226a9453f..0a1920d87ee9775952a8d2d5e7ed760c8672a497 100644
--- a/module/Application/src/Application/Entity/Db/FicheMetier.php
+++ b/module/Application/src/Application/Entity/Db/FicheMetier.php
@@ -13,20 +13,22 @@ use Element\Entity\Db\Traits\HasApplicationCollectionTrait;
 use Element\Entity\Db\Traits\HasCompetenceCollectionTrait;
 use Doctrine\Common\Collections\ArrayCollection;
 use Metier\Entity\Db\Metier;
+use Metier\Entity\HasMetierInterface;
+use Metier\Entity\HasMetierTrait;
 use UnicaenEtat\Entity\Db\HasEtatInterface;
 use UnicaenEtat\Entity\Db\HasEtatTrait;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
 
-class FicheMetier implements HistoriqueAwareInterface, HasEtatInterface,
+class FicheMetier implements HistoriqueAwareInterface, HasEtatInterface, HasMetierInterface,
     HasApplicationCollectionInterface, HasCompetenceCollectionInterface {
     use HistoriqueAwareTrait;
+    use HasMetierTrait;
     use HasEtatTrait;
     use HasApplicationCollectionTrait;
     use HasCompetenceCollectionTrait;
 
     private ?int $id = -1;
-    private ?Metier $metier = null;
     private ?bool $hasExpertise = false;
     private ?string $raison = null;
 
@@ -47,24 +49,6 @@ class FicheMetier implements HistoriqueAwareInterface, HasEtatInterface,
         return $this->id;
     }
 
-    /**
-     * @return Metier|null
-     */
-    public function getMetier() : ?Metier
-    {
-        return $this->metier;
-    }
-
-    /**
-     * @param Metier|null $metier
-     * @return FicheMetier
-     */
-    public function setMetier(?Metier $metier) : FicheMetier
-    {
-        $this->metier = $metier;
-        return $this;
-    }
-
     /**
      * @return bool|null
      */
diff --git a/module/Application/src/Application/Form/FicheMetier/LibelleFormAwareTrait.php b/module/Application/src/Application/Form/FicheMetier/LibelleFormAwareTrait.php
deleted file mode 100644
index e67c851107acfa0ed5f22be9cb338d0cf882d728..0000000000000000000000000000000000000000
--- a/module/Application/src/Application/Form/FicheMetier/LibelleFormAwareTrait.php
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php
-
-namespace Application\Form\FicheMetier;
-
-trait LibelleFormAwareTrait {
-
-    /** @var LibelleForm $libelleForm */
-    private $libelleForm;
-
-    /**
-     * @return LibelleForm
-     */
-    public function getLibelleForm()
-    {
-        return $this->libelleForm;
-    }
-
-    /**
-     * @param LibelleForm $libelleForm
-     * @return LibelleForm
-     */
-    public function setLibelleForm($libelleForm)
-    {
-        $this->libelleForm = $libelleForm;
-        return $this->libelleForm;
-    }
-
-
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Form/FicheMetier/LibelleFormFactory.php b/module/Application/src/Application/Form/FicheMetier/LibelleFormFactory.php
deleted file mode 100644
index e83444a6ad10b5c39946d8c28fd860213e8c04ee..0000000000000000000000000000000000000000
--- a/module/Application/src/Application/Form/FicheMetier/LibelleFormFactory.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-
-namespace Application\Form\FicheMetier;
-
-use Metier\Service\Metier\MetierService;
-use Interop\Container\ContainerInterface;
-
-class LibelleFormFactory {
-
-    public function __invoke(ContainerInterface $container)
-    {
-        /** @var LibelleHydrator $hydrator */
-        $hydrator = $container->get('HydratorManager')->get(LibelleHydrator::class);
-
-        /**
-         * @var MetierService $metierService
-         */
-        $metierService = $container->get(MetierService::class);
-
-        $form = new LibelleForm();
-        $form->setMetierService($metierService);
-        $form->init();
-        $form->setHydrator($hydrator);
-
-        return $form;
-    }
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Form/FicheMetier/LibelleHydratorFactory.php b/module/Application/src/Application/Form/FicheMetier/LibelleHydratorFactory.php
deleted file mode 100644
index 3ea968f22f75a32f4c307e67aec8c3f24a00d2f9..0000000000000000000000000000000000000000
--- a/module/Application/src/Application/Form/FicheMetier/LibelleHydratorFactory.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace Application\Form\FicheMetier;
-
-use Metier\Service\Metier\MetierService;
-use Interop\Container\ContainerInterface;
-
-class LibelleHydratorFactory {
-
-    public function __invoke(ContainerInterface $container)
-    {
-        /** @var MetierService $metierService */
-        $metierService = $container->get(MetierService::class);
-
-        $hydrator = new LibelleHydrator();
-        $hydrator->setMetierService($metierService);
-
-        return $hydrator;
-    }
-}
\ No newline at end of file
diff --git a/module/FicheMetier/Module.php b/module/FicheMetier/Module.php
new file mode 100644
index 0000000000000000000000000000000000000000..c7d5b9a68c716f3dd528122dd0362e0d75791c91
--- /dev/null
+++ b/module/FicheMetier/Module.php
@@ -0,0 +1,42 @@
+<?php
+namespace FicheMetier;
+
+use Laminas\Mvc\ModuleRouteListener;
+use Laminas\Mvc\MvcEvent;
+use Laminas\Config\Factory as ConfigFactory;
+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/FicheMetier/config/example.php b/module/FicheMetier/config/example.php
new file mode 100644
index 0000000000000000000000000000000000000000..7797c9e02dd04ac4f05696744bbc6e30a2c72495
--- /dev/null
+++ b/module/FicheMetier/config/example.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace FichePoste;
+
+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/FicheMetier/config/module.config.php b/module/FicheMetier/config/module.config.php
new file mode 100755
index 0000000000000000000000000000000000000000..fd0d379cfe5e821b7a951848c241b15e70754f6d
--- /dev/null
+++ b/module/FicheMetier/config/module.config.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace FicheMetier;
+
+Use Doctrine\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' => [
+                    'FicheMetier\Entity\Db' => 'orm_default_xml_driver',
+                ],
+            ],
+            'orm_default_xml_driver' => [
+                'class' => XmlDriver::class,
+                'cache' => 'apc',
+                'paths' => [
+                    __DIR__ . '/../src/FicheMetier/Entity/Db/Mapping',
+                ],
+            ],
+        ],
+        'cache' => [
+            'apc' => [
+                'namespace' => 'PREECOG__FicheMetier__' . __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/FichePoste/Module.php b/module/FichePoste/Module.php
new file mode 100644
index 0000000000000000000000000000000000000000..09a285e304065af383ba69232f2054f1efc559c5
--- /dev/null
+++ b/module/FichePoste/Module.php
@@ -0,0 +1,42 @@
+<?php
+namespace FichePoste;
+
+use Laminas\Mvc\ModuleRouteListener;
+use Laminas\Mvc\MvcEvent;
+use Laminas\Config\Factory as ConfigFactory;
+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..7797c9e02dd04ac4f05696744bbc6e30a2c72495
--- /dev/null
+++ b/module/FichePoste/config/example.php
@@ -0,0 +1,36 @@
+<?php
+
+namespace FichePoste;
+
+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/module.config.php b/module/FichePoste/config/module.config.php
new file mode 100755
index 0000000000000000000000000000000000000000..739cf5d4fd364996fcf40ee3c078bf2380889dbb
--- /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' => [
+                    'Metier\Entity\Db' => 'orm_default_xml_driver',
+                ],
+            ],
+            'orm_default_xml_driver' => [
+                'class' => XmlDriver::class,
+                'cache' => 'apc',
+                'paths' => [
+                    __DIR__ . '/../src/Metier/Entity/Db/Mapping',
+                ],
+            ],
+        ],
+        'cache' => [
+            'apc' => [
+                'namespace' => 'PREECOG__Metier__' . __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/Metier/config/merged/metier.config.php b/module/Metier/config/merged/metier.config.php
index 76e23ae909c03deb1842b575905bff8814037de3..136829dfc083b00b890d7ed7f5d27a9e17e944c5 100644
--- a/module/Metier/config/merged/metier.config.php
+++ b/module/Metier/config/merged/metier.config.php
@@ -13,6 +13,10 @@ use Metier\Form\Metier\MetierForm;
 use Metier\Form\Metier\MetierFormFactory;
 use Metier\Form\Metier\MetierHydrator;
 use Metier\Form\Metier\MetierHydratorFactory;
+use Metier\Form\SelectionnerMetier\SelectionnerMetierForm;
+use Metier\Form\SelectionnerMetier\SelectionnerMetierFormFactory;
+use Metier\Form\SelectionnerMetier\SelectionnerMetierHydrator;
+use Metier\Form\SelectionnerMetier\SelectionnerMetierHydratorFactory;
 use Metier\Provider\Privilege\MetierPrivileges;
 use Metier\Service\Metier\MetierService;
 use Metier\Service\Metier\MetierServiceFactory;
@@ -276,11 +280,13 @@ return [
     'form_elements' => [
         'factories' => [
             MetierForm::class => MetierFormFactory::class,
+            SelectionnerMetierForm::class => SelectionnerMetierFormFactory::class,
         ],
     ],
     'hydrators' => [
         'factories' => [
             MetierHydrator::class => MetierHydratorFactory::class,
+            SelectionnerMetierHydrator::class => SelectionnerMetierHydratorFactory::class,
         ],
     ],
     'view_helpers' => [
diff --git a/module/Metier/src/Metier/Entity/Db/Reference.php b/module/Metier/src/Metier/Entity/Db/Reference.php
index 5f767303fb8deb2c2fe19a3fc7c5e91b689a6985..1559df42955aed5f9e85e6154cc4a6b679b38653 100644
--- a/module/Metier/src/Metier/Entity/Db/Reference.php
+++ b/module/Metier/src/Metier/Entity/Db/Reference.php
@@ -2,16 +2,17 @@
 
 namespace Metier\Entity\Db;
 
+use Metier\Entity\HasMetierInterface;
+use Metier\Entity\HasMetierTrait;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface;
 use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait;
 
-class Reference implements HistoriqueAwareInterface {
+class Reference implements HistoriqueAwareInterface, HasMetierInterface {
     use HistoriqueAwareTrait;
+    use HasMetierTrait;
 
     /** @var integer */
     private $id;
-    /** @var Metier */
-    private $metier;
     /** @var Referentiel */
     private $referentiel;
     /** @var string */
@@ -29,24 +30,6 @@ class Reference implements HistoriqueAwareInterface {
         return $this->id;
     }
 
-    /**
-     * @return Metier
-     */
-    public function getMetier()
-    {
-        return $this->metier;
-    }
-
-    /**
-     * @param Metier $metier
-     * @return Reference
-     */
-    public function setMetier(Metier $metier)
-    {
-        $this->metier = $metier;
-        return $this;
-    }
-
     /**
      * @return Referentiel
      */
diff --git a/module/Metier/src/Metier/Entity/HasMetierInterface.php b/module/Metier/src/Metier/Entity/HasMetierInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..d64c7fdc6c4ed960df9f78912f64e85e0b6771f0
--- /dev/null
+++ b/module/Metier/src/Metier/Entity/HasMetierInterface.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Metier\Entity;
+
+use Metier\Entity\Db\Metier;
+
+interface HasMetierInterface
+{
+    public function getMetier() : ?Metier;
+    public function setMetier(?Metier $metier) : void;
+}
\ No newline at end of file
diff --git a/module/Metier/src/Metier/Entity/HasMetierTrait.php b/module/Metier/src/Metier/Entity/HasMetierTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..6c27f68b4142a66865a55215990cbcbf38a97b1b
--- /dev/null
+++ b/module/Metier/src/Metier/Entity/HasMetierTrait.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Metier\Entity;
+
+use Metier\Entity\Db\Metier;
+
+trait HasMetierTrait
+{
+    private ?Metier $metier = null;
+
+    public function getMetier() : ?Metier
+    {
+        return $this->metier;
+    }
+
+    public function setMetier(?Metier $metier) : void
+    {
+        $this->metier = $metier;
+    }
+}
\ No newline at end of file
diff --git a/module/Application/src/Application/Form/FicheMetier/LibelleForm.php b/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierForm.php
similarity index 93%
rename from module/Application/src/Application/Form/FicheMetier/LibelleForm.php
rename to module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierForm.php
index 8cf8e65e470932fc924c815bb0ec8c480349fc79..4ed9a6c221a020f18ca80d5d1df1721c6c53be77 100644
--- a/module/Application/src/Application/Form/FicheMetier/LibelleForm.php
+++ b/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierForm.php
@@ -1,13 +1,13 @@
 <?php
 
-namespace Application\Form\FicheMetier;
+namespace Metier\Form\SelectionnerMetier;
 
 use Metier\Service\Metier\MetierServiceAwareTrait;
 use Laminas\Form\Element\Button;
 use Laminas\Form\Element\Select;
 use Laminas\Form\Form;
 
-class LibelleForm extends Form
+class SelectionnerMetierForm extends Form
 {
     use MetierServiceAwareTrait;
 
diff --git a/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierFormAwareTrait.php b/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierFormAwareTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..129506f60b7ed9957214e698ecf9c6d9bed690fb
--- /dev/null
+++ b/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierFormAwareTrait.php
@@ -0,0 +1,19 @@
+<?php
+
+namespace Metier\Form\SelectionnerMetier;
+
+trait SelectionnerMetierFormAwareTrait {
+
+    private SelectionnerMetierForm $selectionnerMetierForm;
+
+    public function getSelectionnerMetierForm() : SelectionnerMetierForm
+    {
+        return $this->selectionnerMetierForm;
+    }
+
+    public function setSelectionnerMetierForm(SelectionnerMetierForm $selectionnerMetierForm) : void
+    {
+        $this->selectionnerMetierForm = $selectionnerMetierForm;
+    }
+
+}
\ No newline at end of file
diff --git a/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierFormFactory.php b/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierFormFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..e874abc64690076f63b5e7a3725dfcf4eaafcbb0
--- /dev/null
+++ b/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierFormFactory.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Metier\Form\SelectionnerMetier;
+
+use Metier\Service\Metier\MetierService;
+use Interop\Container\ContainerInterface;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
+
+class SelectionnerMetierFormFactory {
+
+    /**
+     * @param ContainerInterface $container
+     * @return SelectionnerMetierForm
+     * @throws ContainerExceptionInterface
+     * @throws NotFoundExceptionInterface
+     */
+    public function __invoke(ContainerInterface $container) : SelectionnerMetierForm
+    {
+        /** @var SelectionnerMetierHydrator $hydrator */
+        $hydrator = $container->get('HydratorManager')->get(SelectionnerMetierHydrator::class);
+
+        /**
+         * @var MetierService $metierService
+         */
+        $metierService = $container->get(MetierService::class);
+
+        $form = new SelectionnerMetierForm();
+        $form->setMetierService($metierService);
+        $form->init();
+        $form->setHydrator($hydrator);
+
+        return $form;
+    }
+}
\ No newline at end of file
diff --git a/module/Application/src/Application/Form/FicheMetier/LibelleHydrator.php b/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierHydrator.php
similarity index 63%
rename from module/Application/src/Application/Form/FicheMetier/LibelleHydrator.php
rename to module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierHydrator.php
index 782c3568ca46aa7d1deb42b20777ca300bc146dc..55ce1f03443f1a7ce7eb78000a5fb787150c74e1 100644
--- a/module/Application/src/Application/Form/FicheMetier/LibelleHydrator.php
+++ b/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierHydrator.php
@@ -1,16 +1,16 @@
 <?php
 
-namespace Application\Form\FicheMetier;
+namespace Metier\Form\SelectionnerMetier;
 
-use Application\Entity\Db\FicheMetier;
+use Metier\Entity\HasMetierInterface;
 use Metier\Service\Metier\MetierServiceAwareTrait;
 use Laminas\Hydrator\HydratorInterface;
 
-class LibelleHydrator implements HydratorInterface {
+class SelectionnerMetierHydrator implements HydratorInterface {
     use MetierServiceAwareTrait;
 
     /**
-     * @param FicheMetier $object
+     * @param HasMetierInterface $object
      * @return array
      */
     public function extract($object): array
@@ -23,10 +23,10 @@ class LibelleHydrator implements HydratorInterface {
 
     /**
      * @param array $data
-     * @param FicheMetier $object
-     * @return FicheMetier
+     * @param HasMetierInterface $object
+     * @return HasMetierInterface
      */
-    public function hydrate(array $data, $object)
+    public function hydrate(array $data, $object) : object
     {
         $metier = $this->getMetierService()->getMetier($data['metier']);
         $object->setMetier($metier);
diff --git a/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierHydratorFactory.php b/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierHydratorFactory.php
new file mode 100644
index 0000000000000000000000000000000000000000..34137273b985420c49dbf980d490c2fb379f4a09
--- /dev/null
+++ b/module/Metier/src/Metier/Form/SelectionnerMetier/SelectionnerMetierHydratorFactory.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Metier\Form\SelectionnerMetier;
+
+use Metier\Service\Metier\MetierService;
+use Interop\Container\ContainerInterface;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
+
+class SelectionnerMetierHydratorFactory {
+
+    /**
+     * @param ContainerInterface $container
+     * @return SelectionnerMetierHydrator
+     * @throws ContainerExceptionInterface
+     * @throws NotFoundExceptionInterface
+     */
+    public function __invoke(ContainerInterface $container) : SelectionnerMetierHydrator
+    {
+        /** @var MetierService $metierService */
+        $metierService = $container->get(MetierService::class);
+
+        $hydrator = new SelectionnerMetierHydrator();
+        $hydrator->setMetierService($metierService);
+
+        return $hydrator;
+    }
+}
\ No newline at end of file