diff --git a/documentation/release/4.0.0.md b/documentation/release/4.0.0.md
new file mode 100644
index 0000000000000000000000000000000000000000..69e8e9b116d1e1666ae2e00a403ebdef191e71d4
--- /dev/null
+++ b/documentation/release/4.0.0.md
@@ -0,0 +1,33 @@
+Version 4.0.0 (XX/XX/2023)
+====
+
+Évolution
+---
+- Interface pour déclarer les référentiel de compétences.
+- Changement des formulaires de saisie des compétences : Référentiel et Identifiant source.
+- Interface d'import des compétences depuis le CSV d'un référentiel de compétence
+
+Modification en BD
+---
+
+```postgresql
+```
+
+Evolution des librairies
+---
+
+
+
+```bash
+```
+
+Ou réinstalle des libraires
+```bash
+rm -fr vendor
+rm -fr composer.lock
+composer install
+```
+
+Evolution des macros et templates
+---
+
diff --git a/module/Element/src/Element/Form/Competence/CompetenceForm.php b/module/Element/src/Element/Form/Competence/CompetenceForm.php
index a8c73f0e3f48f395057f8e6447437a139beeeedb..4f65ddd058383bba0fdce3be07ea9368969f7193 100644
--- a/module/Element/src/Element/Form/Competence/CompetenceForm.php
+++ b/module/Element/src/Element/Form/Competence/CompetenceForm.php
@@ -91,6 +91,18 @@ class CompetenceForm extends Form {
                 'data-live-search'  => 'true',
             ],
         ]);
+        //identifiant dans referentiel
+        $this->add([
+            'type' => Text::class,
+            'name' => 'identifiant',
+            'options' => [
+                'label' => "Identifiant dans le référentiel source:",
+                'label_options' => [ 'disable_html_escape' => true, ],
+            ],
+            'attributes' => [
+                'id' => 'identifiant',
+            ],
+        ]);
 
         //submit
         $this->add([
@@ -114,6 +126,7 @@ class CompetenceForm extends Form {
             'type'    => [ 'required' => true, ],
             'theme'   => [ 'required' => false, ],
             'referentiel'   => [ 'required' => false, ],
+            'identifiant'   => [ 'required' => false, ],
         ]));
     }
 }
\ No newline at end of file
diff --git a/module/Element/src/Element/Form/Competence/CompetenceHydrator.php b/module/Element/src/Element/Form/Competence/CompetenceHydrator.php
index ea1952198e3df24fb7cf727a7c2155258d019fb9..2562f458e4486b3913f922762ef9c8fcecfaeea5 100644
--- a/module/Element/src/Element/Form/Competence/CompetenceHydrator.php
+++ b/module/Element/src/Element/Form/Competence/CompetenceHydrator.php
@@ -24,6 +24,7 @@ class CompetenceHydrator implements HydratorInterface {
         $data['type'] = ($object->getType())?$object->getType()->getId():null;
         $data['theme'] = ($object->getTheme())?$object->getTheme()->getId():null;
         $data['referentiel'] = ($object->getReferentiel())?$object->getReferentiel()->getId():null;
+        $data['identifiant'] = ($object->getIdSource())??null;
         return $data;
     }
 
@@ -36,11 +37,12 @@ class CompetenceHydrator implements HydratorInterface {
     {
         $object->setLibelle($data['libelle']);
         $object->setDescription($data['description']);
+        $object->setIdSource($data['identifiant']??null);
 
-        $type  = null; $theme = null;
-        if (isset($data['type']) AND $data['type'] != '') $type = $this->getCompetenceTypeService()->getCompetenceType($data['type']);
-        if (isset($data['theme']) AND $data['theme'] != '') $theme = $this->getCompetenceThemeService()->getCompetenceTheme($data['theme']);
+        $referentiel = null; $theme = null; $type  = null;
         if (isset($data['referentiel']) AND $data['referentiel'] != '') $referentiel = $this->getCompetenceReferentielService()->getCompetenceReferentiel($data['referentiel']);
+        if (isset($data['theme']) AND $data['theme'] != '') $theme = $this->getCompetenceThemeService()->getCompetenceTheme($data['theme']);
+        if (isset($data['type']) AND $data['type'] != '') $type = $this->getCompetenceTypeService()->getCompetenceType($data['type']);
 
         $object->setReferentiel($referentiel);
         $object->setTheme($theme);