diff --git a/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php b/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php
index 1d673eb4dd60b4181f1843f5f143b5ec2af6c503..d2fe5efecff3e6bf9449996d503668880c6f0cbb 100644
--- a/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php
+++ b/src/UnicaenValidation/Service/ValidationInstance/ValidationInstanceService.php
@@ -2,14 +2,16 @@
 
 namespace UnicaenValidation\Service\ValidationInstance;
 
+use Doctrine\ORM\Exception\NotSupported;
+use Doctrine\ORM\Exception\ORMException;
 use Doctrine\ORM\NonUniqueResultException;
-use Doctrine\ORM\ORMException;
 use Doctrine\ORM\QueryBuilder;
 use Laminas\Mvc\Controller\AbstractActionController;
 use UnicaenApp\Exception\RuntimeException;
 use UnicaenApp\Service\EntityManagerAwareTrait;
 use UnicaenUtilisateur\Entity\Db\User;
 use UnicaenValidation\Entity\Db\ValidationInstance;
+use UnicaenValidation\Entity\HasValidationsInterface;
 use UnicaenValidation\Service\ValidationType\ValidationTypeServiceAwareTrait;
 
 class ValidationInstanceService {
@@ -105,11 +107,14 @@ class ValidationInstanceService {
      */
     public function createQueryBuilder() : QueryBuilder
     {
-        $qb = $this->getEntityManager()->getRepository(ValidationInstance::class)->createQueryBuilder('vinstance')
-            ->addSelect('createur')->join('vinstance.histoCreateur', 'createur')
-            ->addSelect('modificateur')->join('vinstance.histoModificateur', 'modificateur')
-            ->addSelect('vtype')->join('vinstance.type', 'vtype')
-        ;
+        try {
+            $qb = $this->getEntityManager()->getRepository(ValidationInstance::class)->createQueryBuilder('vinstance')
+                ->addSelect('createur')->join('vinstance.histoCreateur', 'createur')
+                ->addSelect('modificateur')->join('vinstance.histoModificateur', 'modificateur')
+                ->addSelect('vtype')->join('vinstance.type', 'vtype');
+        } catch (NotSupported $e) {
+            throw new RuntimeException("Un problème est survenu lors de la création du QueryBuilder [".ValidationInstance::class."]",0,$e);
+        }
         return $qb;
     }
 
@@ -142,7 +147,7 @@ class ValidationInstanceService {
         try {
             $result = $qb->getQuery()->getOneOrNullResult();
         } catch (NonUniqueResultException $e) {
-            throw new RuntimeException("Plusieurs ValidationInstance partagent le même id [".$id."]", 0, true);
+            throw new RuntimeException("Plusieurs ValidationInstance partagent le même id [".$id."]", 0, $e);
         }
         return $result;
     }
@@ -205,6 +210,7 @@ class ValidationInstanceService {
     /**
      * @param string $code
      * @param string|null $valeur
+     * @param string|null $justification
      * @return ValidationInstance
      */
     public function createWithCode(string $code, ?string $valeur = null, ?string $justification = null) : ValidationInstance
@@ -219,4 +225,25 @@ class ValidationInstanceService {
 
         return $instance;
     }
+
+    public function setValidationActive(HasValidationsInterface $element, string $code, ?string $value = null) : HasValidationsInterface
+    {
+        //historisation de l'état actif actuel (s'il existe)
+        $validationActive = $element->getValidationActiveByTypeCode($code);
+        if (isset($validationActive)) {
+            $this->historise($validationActive);
+        }
+
+        //creation de la nouvelle instance
+        $validation = $this->createWithCode($code, $value);
+
+        //ajout à l'element et persist
+        $element->addValidation($validation);
+        try {
+            $this->getEntityManager()->persist($element);
+        } catch (ORMException $e) {
+            throw new RuntimeException("Un problème est survenu lors de l'ajout de  actif de [".get_class($element)."]",0,$e);
+        }
+        return $element;
+    }
 }
\ No newline at end of file