diff --git a/module/Application/config/others/utilisateur.config.php b/module/Application/config/others/utilisateur.config.php
index ee2a72a98ebbde843248ead914a675da5745e85a..30766de517c79ae25adc54cc5dd540ef3971a7b5 100755
--- a/module/Application/config/others/utilisateur.config.php
+++ b/module/Application/config/others/utilisateur.config.php
@@ -1,6 +1,7 @@
 <?php
 
 use Application\Controller\Factory\UtilisateurControllerFactory;
+use Application\Controller\UtilisateurController;
 use Application\Form\CreationUtilisateurForm;
 use Application\Form\CreationUtilisateurFromIndividuForm;
 use Application\Form\Factory\CreationUtilisateurFormFactory;
@@ -101,15 +102,6 @@ return [
                             ],
                         ],
                     ],
-                    'ajouter-pour-individu' => [
-                        'type'          => Segment::class,
-                        'options'       => [
-                            'route'       => '/ajouter-pour-individu/:individu',
-                            'defaults'    => [
-                                'action' => 'ajouterFromIndividu',
-                            ],
-                        ],
-                    ],
                     'creer-compte-local-individu' => [
                         'type'          => Segment::class,
                         'options'       => [
diff --git a/module/Application/src/Application/Controller/TheseController.php b/module/Application/src/Application/Controller/TheseController.php
index 9a9d2d8f16e6287cec9cc9dd6e979887e2cda209..c1ecd4350bb585b19ceff228298b9d5933e2d85f 100755
--- a/module/Application/src/Application/Controller/TheseController.php
+++ b/module/Application/src/Application/Controller/TheseController.php
@@ -255,8 +255,8 @@ class TheseController extends AbstractController
 
         $utilisateurs = [];
         foreach ($these->getActeurs() as $acteur) {
-            $utilisateur = $this->utilisateurService->getRepository()->findByIndividu($acteur->getIndividu());
-            $utilisateurs[$acteur->getId()] = $utilisateur;
+            $utilisateursTrouves = $this->utilisateurService->getRepository()->findByIndividu($acteur->getIndividu()); // ok
+            $utilisateurs[$acteur->getId()] = $utilisateursTrouves;
         }
 
         //TODO JP remplacer dans modifierPersopassUrl();
diff --git a/module/Application/src/Application/Controller/UtilisateurController.php b/module/Application/src/Application/Controller/UtilisateurController.php
index ff4f7164e3bcada3ae8b21e89a595de39019b9ac..20d91255817d4e605713ad0fa710f9b6de3e02d0 100644
--- a/module/Application/src/Application/Controller/UtilisateurController.php
+++ b/module/Application/src/Application/Controller/UtilisateurController.php
@@ -156,49 +156,6 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
         ]);
     }
 
-    /**
-     * @return ViewModel
-     */
-    public function ajouterFromIndividuAction()
-    {
-        /** @var Individu $individu */
-        $individuId = $this->params('individu');
-        $individu = $this->individuService->getRepository()->findOneBy(["id"=>$individuId]);
-        if ($individu === null) {
-            throw new RuntimeException("Individu introuvable avec cet id");
-        }
-
-        $utilisateur = $this->utilisateurService->getRepository()->findByIndividu($individu);
-        if ($utilisateur !== null) {
-            throw new RuntimeException("Il existe déjà un utilisateur lié à l'individu $individu.");
-        }
-
-        /** @var CreationUtilisateurFromIndividuForm $form */
-        $form = $this->getServiceLocator()->get('FormElementManager')->get(CreationUtilisateurFromIndividuForm::class);
-        $form->setIndividu($individu);
-
-        /** @var Request $request */
-        $request = $this->getRequest();
-        if ($request->isPost()) {
-            $data = $request->getPost();
-            $form->setData($data);
-            if ($form->isValid()) {
-                if (!empty($data['email'])) {
-                    $individu->setEmail($data['email']);
-                }
-                $utilisateur = $this->utilisateurService->createFromIndividuAndFormData($individu, $data->toArray());
-                $this->flashMessenger()->addSuccessMessage(
-                    "Utilisateur <strong>{$utilisateur->getUsername()}</strong> créé avec succès à partir de l'individu $individu.");
-                $this->redirect()->toRoute('utilisateur');
-            }
-        }
-
-        return new ViewModel([
-            'form' => $form,
-            'individu' => $individu,
-        ]);
-    }
-
     /**
      * Usurpe l'identité d'un autre utilisateur.
      *
@@ -414,9 +371,12 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
     {
         $individu = $this->getIndividuService()->getRequestedIndividu($this);
         $acteurs = $this->acteurService->getRepository()->findActeursByIndividu($individu);
-        $utilisateur = $this->utilisateurService->getRepository()->findByIndividu($individu);
-        if ($utilisateur === null AND $individu->getEmail() !== null) $utilisateur = $this->utilisateurService->getRepository()->findByUsername($individu->getEmail());
-
+        $utilisateurs = $this->utilisateurService->getRepository()->findByIndividu($individu, $isLocal = true); // done
+        // NB: findByIndividu() avec $isLocal = true renverra 1 utilisateur au maximum
+        $utilisateur = $utilisateurs ? current($utilisateurs) : null;
+        if ($utilisateur === null AND $individu->getEmail() !== null) {
+            $utilisateur = $this->utilisateurService->getRepository()->findByUsername($individu->getEmail());
+        }
 
         return new ViewModel([
             'individu' => $individu,
@@ -428,9 +388,9 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
     public function creerCompteLocalIndividuAction()
     {
         $individu = $this->getIndividuService()->getRequestedIndividu($this);
-        $utilisateur = $this->utilisateurService->getRepository()->findByIndividu($individu);
+        $utilisateurs = $this->utilisateurService->getRepository()->findByIndividu($individu); // done
 
-        if ($utilisateur === null) {
+        if (empty($utilisateurs)) {
             $user = $this->utilisateurService->createFromIndividu($individu, $individu->getEmail(), 'none');
             $this->userService->updateUserPasswordResetToken($user);
             $url = $this->url()->fromRoute('utilisateur/init-compte', ['token' => $user->getPasswordResetToken()], ['force_canonical' => true], true);
@@ -442,9 +402,12 @@ class UtilisateurController extends \UnicaenAuth\Controller\UtilisateurControlle
         return $this->redirect()->toRoute('utilisateur/gerer-utilisateur', ['individu' => $individu->getId()], [], true);
     }
 
-    public function resetPasswordAction() {
+    public function resetPasswordAction()
+    {
         $individu = $this->getIndividuService()->getRequestedIndividu($this);
-        $utilisateur = $this->utilisateurService->getRepository()->findByIndividu($individu);
+        $utilisateurs = $this->utilisateurService->getRepository()->findByIndividu($individu, $isLocal = true); // done
+        // NB: findByIndividu() avec $isLocal = true renverra 1 utilisateur au maximum
+        $utilisateur = $utilisateurs ? current($utilisateurs) : null;
 
         if ($utilisateur !== null) {
             $this->userService->updateUserPasswordResetToken($utilisateur);
diff --git a/module/Application/src/Application/Controller/ValidationController.php b/module/Application/src/Application/Controller/ValidationController.php
index b2e61652344f05afca75117979fdb69adb15587a..562453e9ac3ac96844b27ca4327f51c301bdbf24 100755
--- a/module/Application/src/Application/Controller/ValidationController.php
+++ b/module/Application/src/Application/Controller/ValidationController.php
@@ -163,7 +163,7 @@ class ValidationController extends AbstractController
         /** @var Acteur $acteur */
         foreach ($these->getActeurs() as $acteur) {
             $individu = $acteur->getIndividu();
-            $utilisateurs[$individu->getId()] = $this->utilisateurService->getRepository()->findByIndividu($individu);
+            $utilisateurs[$individu->getId()] = $this->utilisateurService->getRepository()->findByIndividu($individu); // ok
         }
 
         $view = new ViewModel([
diff --git a/module/Application/src/Application/Entity/Db/Repository/UtilisateurRepository.php b/module/Application/src/Application/Entity/Db/Repository/UtilisateurRepository.php
index 559d5b8fe9f586cea3b9a71e3f52232e9cefa8ad..c1c0d8a76d0c32301f964b7387fd562011893bcd 100644
--- a/module/Application/src/Application/Entity/Db/Repository/UtilisateurRepository.php
+++ b/module/Application/src/Application/Entity/Db/Repository/UtilisateurRepository.php
@@ -12,24 +12,35 @@ class UtilisateurRepository extends DefaultEntityRepository
     /**
      * Recherche les utilisateurs lié à un individu.
      *
-     * @param Individu $individu
-     * @return Utilisateur
+     * @param Individu  $individu
+     * @param bool|null $isLocal
+     * @return Utilisateur[]
      */
-    public function findByIndividu(Individu $individu)
+    public function findByIndividu(Individu $individu, $isLocal = null)
     {
         $qb = $this->createQueryBuilder('u')
             ->join('u.individu', 'i')
             ->where('i = :individu')
             ->setParameter('individu', $individu);
 
-        try {
-            $utilisateur = $qb->getQuery()->getOneOrNullResult();
-        } catch (NonUniqueResultException $e) {
-            $utilisateurs = $qb->getQuery()->getResult();
-            throw new RuntimeException("Plusieurs (".count($utilisateurs).") Utilisateur partagent le même individu [".$individu->getId()."]", 0, $e);
+        if ($isLocal !== null) {
+            if ($isLocal) {
+                $qb->andWhere($qb->expr()->notIn('u.password', ['shib', 'ldap']));
+            } else {
+                $qb->andWhere($qb->expr()->in('u.password', ['shib', 'ldap']));
+            }
         }
 
-        return $utilisateur;
+        $utilisateurs = $qb->getQuery()->getResult();
+
+        if ($isLocal && count($utilisateurs) > 1) {
+            throw new RuntimeException(
+                "Plusieurs Utilisateur partagent le même individu " . $individu->getId() . " : " .
+                implode(', ', array_map(function (Utilisateur $u) { return $u->getId(); }, $utilisateurs))
+            );
+        }
+
+        return $utilisateurs;
     }
 
     /**
diff --git a/module/Application/view/application/these/identite.phtml b/module/Application/view/application/these/identite.phtml
index 56ca16c029a8fc96446b655b5f5fdda088db3193..c35ed6290483cfcb1b79f6ea45ba30699770d830 100644
--- a/module/Application/view/application/these/identite.phtml
+++ b/module/Application/view/application/these/identite.phtml
@@ -138,6 +138,7 @@ $financementFormatter->setDisplayAs(FinancementFormatter::DISPLAY_AS_LINE);
             $results = $acteursFormatter->doFormat($acteurs->toArray());
             $previous = "";
             foreach ($results as $result) {
+                $aucunSupannIdDansIndividu = isset($result['alerte-supann-id']);
                 /** @var Acteur $acteur */
                 $acteur = $result["acteur"];
                 if ($previous != $result["role"]) {
@@ -159,8 +160,8 @@ $financementFormatter->setDisplayAs(FinancementFormatter::DISPLAY_AS_LINE);
                 if (isset($result["etablissement"]) && trim($result["etablissement"]) != "") {
                     $ligne[] = $result["etablissement"];
                 }
-                if ($acteur->estDirecteur() && isset($result['alerte-supann-id'])) {
-                    if ($utilisateurs[$acteur->getId()] === null) {
+                if ($acteur->estDirecteur() && $aucunSupannIdDansIndividu) {
+                    if (empty($utilisateurs[$acteur->getId()])) {
                         $ligne[] = sprintf('<span class="glyphicon glyphicon-warning-sign text-danger" title="%s"></span>',
                             $result['alerte-supann-id']);
                     } else {
diff --git a/module/Application/view/application/utilisateur/ajouter-from-individu.phtml b/module/Application/view/application/utilisateur/ajouter-from-individu.phtml
deleted file mode 100644
index 21f08179fc57a463ca023240f70ad23041fdf131..0000000000000000000000000000000000000000
--- a/module/Application/view/application/utilisateur/ajouter-from-individu.phtml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-use Application\Controller\UtilisateurController;
-use Application\Entity\Db\Individu;
-use Zend\Form\Form;
-use Application\View\Renderer\PhpRenderer;
-
-/**
- * @var Form        $form
- * @var Individu    $individu
- * @var PhpRenderer $this
- *
- * @see UtilisateurController::ajouterFromIndividuAction()
- */
-?>
-
-<?php $this->headTitle($this->translate("Création d'utilisateur par individu")) ?>
-
-<h1 class="page-header"><?php echo $this->translate("Création d'utilisateur à partir d'un individu existant"); ?> </h1>
-
-<p class="lead">
-    Cette page permet de créer un utilisateur <em>manuellement</em> à partir de
-    <strong><?php echo $individu ?> (<?php echo $individu->getId() ?>)</strong>, individu existant en base de données.
-</p>
-<p class="lead">
-    <strong>NB:</strong> l'adresse électronique sera l'identifiant de connexion de l'utilisateur,
-    elle doit donc être unique.
-</p>
-
-<div class="col-md-4">
-    <?php echo $this->form()->render($form->prepare()) ?>
-</div>
\ No newline at end of file
diff --git a/module/Application/view/application/validation/these-corrigee/validation-correction.phtml b/module/Application/view/application/validation/these-corrigee/validation-correction.phtml
index a7c3e3a90d6568ad1ff4c9759cbf2c53f40d9b45..b90e5f34865ca10580f117ab3d442258f8ee9f47 100644
--- a/module/Application/view/application/validation/these-corrigee/validation-correction.phtml
+++ b/module/Application/view/application/validation/these-corrigee/validation-correction.phtml
@@ -49,7 +49,7 @@ $canUnvalidate = $this->isAllowed($these, ValidationPrivileges::VALIDATION_CORRE
                 <li>
                     <?php echo $i = $validation->getIndividu() ?> n'a pas encore validé.
                     <?php if (! $i->getSupannId()): ?>
-                        <?php if ($utilisateurs[$i->getId()] === null) : ?>
+                        <?php if (empty($utilisateurs[$i->getId()])) : ?>
                             <?php
                             $message = sprintf(
                                 "Cette personne ne pourra pas utiliser l'application car il manque des informations la concernant dans %s (source code '%s').",