diff --git a/module/Application/config/agrement.config.php b/module/Application/config/agrement.config.php
index c7c882a005f3a29903b26a316c1e65d3accca6cb..c30f86f1c60e4a3e96a432e273269e6e54a7b5cb 100644
--- a/module/Application/config/agrement.config.php
+++ b/module/Application/config/agrement.config.php
@@ -2,24 +2,9 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
 use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 use Application\Controller\AgrementController;
 
 return [
diff --git a/module/Application/config/contrat.config.php b/module/Application/config/contrat.config.php
index 2abb80e1ec56cbe49ab213de6fc5ac7cedaf8f40..b579fede91f03bc538bfc01768dd387f319a6d30 100644
--- a/module/Application/config/contrat.config.php
+++ b/module/Application/config/contrat.config.php
@@ -2,24 +2,9 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
-use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
 use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 use Application\Assertion\ContratAssertion;
 
 return [
diff --git a/module/Application/config/etablissement.config.php b/module/Application/config/etablissement.config.php
index a703cf58ec23ddbf4fd4a3c1db0c7c8a56eb1463..bd2c6d9105812b76992e65a1274d4c9956871b68 100644
--- a/module/Application/config/etablissement.config.php
+++ b/module/Application/config/etablissement.config.php
@@ -2,25 +2,6 @@
 
 namespace Application;
 
-use Application\Acl\Role;
-use Application\Acl\AdministrateurRole;
-use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
-use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
-
 return [
     'router' => [
         'routes' => [
diff --git a/module/Application/config/indicateur.config.php b/module/Application/config/indicateur.config.php
index 73ca7c05c70731ddd045f69e10e6f5433144a6fc..4160cf31dbb99b00719ca49d63b61ac685bb3d8a 100644
--- a/module/Application/config/indicateur.config.php
+++ b/module/Application/config/indicateur.config.php
@@ -2,24 +2,9 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
 use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
-use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 
 return [
     'router' => [
diff --git a/module/Application/config/module.config.php b/module/Application/config/module.config.php
index bebe4445c083543fd4a38973fd51834e8c1a7045..aab83a8293c303846df809332d73abfb39b9469d 100755
--- a/module/Application/config/module.config.php
+++ b/module/Application/config/module.config.php
@@ -2,37 +2,19 @@
 
 namespace Application;
 
-const R_USER                        = 'user';
-
 const R_ROLE                        = Acl\Role::ROLE_ID;
-
 const R_ADMINISTRATEUR              = Acl\AdministrateurRole::ROLE_ID;
-
 const R_COMPOSANTE                  = Acl\ComposanteRole::ROLE_ID;
-const R_DIRECTEUR_COMPOSANTE        = Acl\DirecteurComposanteRole::ROLE_ID;
-const R_GESTIONNAIRE_COMPOSANTE     = Acl\GestionnaireComposanteRole::ROLE_ID;
-const R_RESPONSABLE_COMPOSANTE      = Acl\ResponsableComposanteRole::ROLE_ID;
-const R_SUPERVISEUR_COMPOSANTE      = Acl\SuperviseurComposanteRole::ROLE_ID;
-
-const R_RESPONSABLE_RECHERCHE_LABO  = Acl\ResponsableRechercheLaboRole::ROLE_ID;
-
 const R_DRH                         = Acl\DrhRole::ROLE_ID;
-const R_GESTIONNAIRE_DRH            = Acl\GestionnaireDrhRole::ROLE_ID;
-const R_RESPONSABLE_DRH             = Acl\ResponsableDrhRole::ROLE_ID;
-
 const R_ETABLISSEMENT               = Acl\EtablissementRole::ROLE_ID;
-const R_SUPERVISEUR_ETABLISSEMENT   = Acl\SuperviseurEtablissementRole::ROLE_ID;
-
 const R_INTERVENANT                 = Acl\IntervenantRole::ROLE_ID;
 const R_INTERVENANT_PERMANENT       = Acl\IntervenantPermanentRole::ROLE_ID;
 const R_INTERVENANT_EXTERIEUR       = Acl\IntervenantExterieurRole::ROLE_ID;
 
-const R_FOAD                        = Acl\FoadRole::ROLE_ID;
-const R_RESPONSABLE_FOAD            = Acl\ResponsableFoadRole::ROLE_ID;
 
-$R_ALL = [R_ADMINISTRATEUR, R_COMPOSANTE, R_RESPONSABLE_RECHERCHE_LABO, R_DRH, R_ETABLISSEMENT, R_INTERVENANT, R_FOAD];
-$R_NOT_INTERVENANT = [R_ADMINISTRATEUR, R_COMPOSANTE, R_RESPONSABLE_RECHERCHE_LABO, R_DRH, R_ETABLISSEMENT, R_FOAD];
-$R_COMMUN = [R_ADMINISTRATEUR, R_DRH, R_ETABLISSEMENT, R_FOAD];
+$R_ALL = [R_ADMINISTRATEUR, R_COMPOSANTE, R_DRH, R_ETABLISSEMENT, R_INTERVENANT];
+$R_NOT_INTERVENANT = [R_ADMINISTRATEUR, R_COMPOSANTE, R_DRH, R_ETABLISSEMENT];
+$R_COMMUN = [R_ADMINISTRATEUR, R_DRH, R_ETABLISSEMENT];
 
 $main =  [
     'doctrine' => [
@@ -158,22 +140,9 @@ $main =  [
                 'Application\\Acl\\AdministrateurRole',
 
                 'Application\\Acl\\ComposanteRole',
-                    'Application\\Acl\\DirecteurComposanteRole',
-                    'Application\\Acl\\GestionnaireComposanteRole',
-                    'Application\\Acl\\ResponsableComposanteRole',
-                    'Application\\Acl\\SuperviseurComposanteRole',
-                    'Application\\Acl\\ResponsableRechercheLaboRole',
 
                 'Application\\Acl\\DrhRole',
-                    'Application\\Acl\\GestionnaireDrhRole',
-                    'Application\\Acl\\ResponsableDrhRole',
-
                 'Application\\Acl\\EtablissementRole',
-                    'Application\\Acl\\SuperviseurEtablissementRole',
-
-                'Application\\Acl\\FoadRole',
-                    'Application\\Acl\\ResponsableFoadRole',
-
                 'Application\\Acl\\IntervenantRole',
                     'Application\\Acl\\IntervenantExterieurRole',
                     'Application\\Acl\\IntervenantPermanentRole',
diff --git a/module/Application/config/notification.config.php b/module/Application/config/notification.config.php
index ad0b0239a95d5f823546137c4d5cef3e98fc07fb..ed18947dd51f7d5a1b850ad49ecf680b826f0beb 100644
--- a/module/Application/config/notification.config.php
+++ b/module/Application/config/notification.config.php
@@ -2,24 +2,8 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
-use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 
 return [
     'router' => [
diff --git a/module/Application/config/offre-formation.config.php b/module/Application/config/offre-formation.config.php
index 358359837c1284f5885919251b028abe725fd70b..b3d9c7b4cce3ca290bad30c8767743a3c73f15a2 100644
--- a/module/Application/config/offre-formation.config.php
+++ b/module/Application/config/offre-formation.config.php
@@ -2,24 +2,9 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
 use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 
 return [
     'router' => [
diff --git a/module/Application/config/service.config.php b/module/Application/config/service.config.php
index c592da77dfeeb5876f63d7276b714f90315eb2d6..2daa07b949956adb0d5c48a42c3a680209eac748 100644
--- a/module/Application/config/service.config.php
+++ b/module/Application/config/service.config.php
@@ -231,7 +231,7 @@ return [
                 ], [
                     'controller' => 'Application\Controller\Service',
                     'action' => ['resume','resume-refresh','recherche'],
-                    'roles' => [R_ADMINISTRATEUR, R_COMPOSANTE, R_RESPONSABLE_RECHERCHE_LABO, R_DRH, R_ETABLISSEMENT, R_FOAD]
+                    'roles' => [R_ADMINISTRATEUR, R_COMPOSANTE, R_DRH, R_ETABLISSEMENT]
                 ], [
                     'controller' => 'Application\Controller\ServiceReferentiel',
                     'action' => ['index', 'saisie', 'suppression', 'rafraichir-ligne', 'constatation'],
diff --git a/module/Application/config/structure.config.php b/module/Application/config/structure.config.php
index e7aaa6a11926f03da45ba376373eece26ce6cb24..dba2b51255f36a4255c69b742b1c224c8af3e5b9 100644
--- a/module/Application/config/structure.config.php
+++ b/module/Application/config/structure.config.php
@@ -2,24 +2,9 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
 use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
 
 return [
     'router' => [
diff --git a/module/Application/config/validation.config.php b/module/Application/config/validation.config.php
index d1da127cb7296c82b9491c2d9820cdb3b85e084f..ffcefa4fbc245cf627d4d610017900164c5ac907 100644
--- a/module/Application/config/validation.config.php
+++ b/module/Application/config/validation.config.php
@@ -2,24 +2,11 @@
 
 namespace Application;
 
-use Application\Acl\Role;
 use Application\Acl\AdministrateurRole;
 use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
 use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
 use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
+
 
 use Application\Assertion\AbstractAssertion;
 
diff --git a/module/Application/config/workflow.config.php b/module/Application/config/workflow.config.php
index f1d41cedcb80fd5a905d330157c85d197fbab7c3..ffa6fe9062222ff396c16a2bae365bd837b5de60 100644
--- a/module/Application/config/workflow.config.php
+++ b/module/Application/config/workflow.config.php
@@ -2,25 +2,6 @@
 
 namespace Application;
 
-use Application\Acl\Role;
-use Application\Acl\AdministrateurRole;
-use Application\Acl\ComposanteRole;
-use Application\Acl\DirecteurComposanteRole;
-use Application\Acl\GestionnaireComposanteRole;
-use Application\Acl\ResponsableComposanteRole;
-use Application\Acl\SuperviseurComposanteRole;
-use Application\Acl\ResponsableRechercheLaboRole;
-use Application\Acl\DrhRole;
-use Application\Acl\GestionnaireDrhRole;
-use Application\Acl\ResponsableDrhRole;
-use Application\Acl\EtablissementRole;
-use Application\Acl\SuperviseurEtablissementRole;
-use Application\Acl\IntervenantRole;
-use Application\Acl\IntervenantPermanentRole;
-use Application\Acl\IntervenantExterieurRole;
-use Application\Acl\FoadRole;
-use Application\Acl\ResponsableFoadRole;
-
 return [
     'router' => [
         'routes' => [
diff --git a/module/Application/src/Application/Acl/ComposanteRole.php b/module/Application/src/Application/Acl/ComposanteRole.php
index 89fe4d94b90416774d3af00d11531ad7ad9186f8..434a2653ad17e3868d48553a2909975273157bd1 100644
--- a/module/Application/src/Application/Acl/ComposanteRole.php
+++ b/module/Application/src/Application/Acl/ComposanteRole.php
@@ -2,7 +2,6 @@
 
 namespace Application\Acl;
 
-use UnicaenAuth\Acl\NamedRole;
 use Application\Interfaces\StructureAwareInterface;
 use Application\Traits\StructureAwareTrait;
 use Application\Interfaces\PersonnelAwareInterface;
@@ -79,23 +78,3 @@ class ResponsableComposanteRole extends ComposanteRole
         parent::__construct($id, $parent, $name, $description, $selectable);
     }
 }
-
-class SuperviseurComposanteRole extends ComposanteRole
-{
-    const ROLE_ID = 'superviseur-composante';
-
-    public function __construct($id = self::ROLE_ID, $parent = ComposanteRole::ROLE_ID, $name = 'Superviseur de composante', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
-
-class ResponsableRechercheLaboRole extends ComposanteRole
-{
-    const ROLE_ID = 'responsable-recherche-labo';
-
-    public function __construct($id = self::ROLE_ID, $parent = ComposanteRole::ROLE_ID, $name = 'Responsable d\'équipe de recherche', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Acl/DrhRole.php b/module/Application/src/Application/Acl/DrhRole.php
index 628d8dbe0f8befb634ff0140e1ec2269d00977dd..92f011184832eb92d31e066819c6cda350ac57bd 100644
--- a/module/Application/src/Application/Acl/DrhRole.php
+++ b/module/Application/src/Application/Acl/DrhRole.php
@@ -22,23 +22,3 @@ class DrhRole extends Role implements PersonnelAwareInterface
         parent::__construct($id, $parent, $name, $description, $selectable);
     }
 }
-
-class GestionnaireDrhRole extends DrhRole
-{
-    const ROLE_ID = 'gestionnaire-drh';
-
-    public function __construct($id = self::ROLE_ID, $parent = DrhRole::ROLE_ID, $name = 'Gestionnaire DRH', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
-
-class ResponsableDrhRole extends DrhRole
-{
-    const ROLE_ID = 'responsable-drh';
-
-    public function __construct($id = self::ROLE_ID, $parent = DrhRole::ROLE_ID, $name = 'Responsable DRH', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Acl/EtablissementRole.php b/module/Application/src/Application/Acl/EtablissementRole.php
index 2471d35ea86a658ba9e3742a081747b46e40dac9..6ca99cd5c447498b61dbefa15c5c3891520ddf77 100644
--- a/module/Application/src/Application/Acl/EtablissementRole.php
+++ b/module/Application/src/Application/Acl/EtablissementRole.php
@@ -23,13 +23,3 @@ class EtablissementRole extends Role implements PersonnelAwareInterface
     }
 
 }
-
-class SuperviseurEtablissementRole extends EtablissementRole
-{
-    const ROLE_ID = 'superviseur-etablissement';
-
-    public function __construct($id = self::ROLE_ID, $parent = EtablissementRole::ROLE_ID, $name = 'Superviseur établissement', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Acl/FoadRole.php b/module/Application/src/Application/Acl/FoadRole.php
deleted file mode 100644
index f96b472a89857ef08b779d02a1fd398ce0efa7ba..0000000000000000000000000000000000000000
--- a/module/Application/src/Application/Acl/FoadRole.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-namespace Application\Acl;
-
-use UnicaenAuth\Acl\NamedRole;
-use Application\Interfaces\PersonnelAwareInterface;
-use Application\Traits\PersonnelAwareTrait;
-
-/**
- * Rôle père de tous les rôles "foad".
- *
- * @author Laurent LÉCLUSE <laurent.lecluse at unicaen.fr>
- */
-class FoadRole extends Role implements PersonnelAwareInterface
-{
-    use PersonnelAwareTrait;
-
-    const ROLE_ID = 'foad';
-
-    public function __construct($id = self::ROLE_ID, $parent = Role::ROLE_ID, $name = 'Foad', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-
-}
-
-class ResponsableFoadRole extends FoadRole
-{
-    const ROLE_ID = 'responsable-foad';
-
-    public function __construct($id = self::ROLE_ID, $parent = FoadRole::ROLE_ID, $name = 'Responsable FOAD', $description = null, $selectable = true)
-    {
-        parent::__construct($id, $parent, $name, $description, $selectable);
-    }
-}
\ No newline at end of file
diff --git a/module/Application/src/Application/Provider/Role/RoleProvider.php b/module/Application/src/Application/Provider/Role/RoleProvider.php
index fa05bb9c9cfd3f38042c6099115b858145d0d60f..7f3a892366def58ce7249d3a0abedca235546b66 100644
--- a/module/Application/src/Application/Provider/Role/RoleProvider.php
+++ b/module/Application/src/Application/Provider/Role/RoleProvider.php
@@ -68,23 +68,18 @@ class RoleProvider implements ProviderInterface, EntityManagerAwareInterface
     protected function makeRoles()
     {
         $roles = [];
-$roles['test'] = new Role( 'test', 'user', 'Rôle de test');
-        /* deprecated */
-        foreach( $this->config as $classname ){
-            if (class_exists( $classname )){
-                $role = new $classname; /* @var $role RoleInterface */
-                $roles[$role->getRoleId()] = $role;
-            }else{
-                throw new LogicException('La classe "'.$classname.'" déclarée dans la configuration du fournisseur de rôles n\'a pas été trouvée.');
-            }
-        }
-        /* fin de deprecated */
+        $r = new Role();                                        $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\ComposanteRole();             $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\DrhRole();                    $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\EtablissementRole();          $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\IntervenantRole();            $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\IntervenantExterieurRole();   $roles[$r->getRoleId()] = $r;
+        $r = new \Application\Acl\IntervenantPermanentRole();   $roles[$r->getRoleId()] = $r;
         
         $serviceAuthUserContext = $this->getServiceLocator()->get('AuthUserContext');
         /* @var $serviceAuthUserContext \UnicaenAuth\Service\UserContext */
         $utilisateur = $serviceAuthUserContext->getDbUser();
 
-
         /* Cas spécifique du rôle intervenant */
         if ($utilisateur && $utilisateur->getIntervenant()){
             $role = new IntervenantRole;
@@ -93,66 +88,57 @@ $roles['test'] = new Role( 'test', 'user', 'Rôle de test');
         }
 
         /* Rôles du personnel */
-        if ($utilisateur && ($personnel = $utilisateur->getPersonnel())){
-            // chargement des rôles métiers
-            $qb = $this->getEntityManager()->createQueryBuilder()
-                ->from("Application\Entity\Db\Affectation", "a")
-                ->select("a, r, s")
-                ->distinct()
-                ->join("a.role", "r")
-                ->leftJoin("a.structure", "s")
-                ->andWhere('1=compriseEntre(a.histoCreation,a.histoDestruction)')
-                ->andWhere('1=compriseEntre(r.histoCreation,r.histoDestruction)')
-                ->andWhere("a.personnel = :personnel")->setParameter(':personnel', $personnel);
-            foreach ($qb->getQuery()->getResult() as $affectation) { /* @var $affectation Affectation */
-                 $dbRole = $affectation->getRole();
-
-                $roleId = $dbRole->getCode();
-                $roleLibelle = $dbRole->getLibelle();
+        $personnel = null;
+        if ($utilisateur) $personnel = $utilisateur->getPersonnel();
+
+        // chargement des rôles métiers
+        $qb = $this->getEntityManager()->createQueryBuilder()
+            ->from("Application\Entity\Db\Role", "r")
+            ->select("r, a, s")
+            ->distinct()
+            ->leftJoin("r.affectation", "a", \Doctrine\ORM\Query\Expr\Join::WITH, '1=compriseEntre(a.histoCreation,a.histoDestruction) AND a.personnel = :personnel')
+            ->leftJoin("a.structure", "s")
+            ->andWhere('1=compriseEntre(r.histoCreation,r.histoDestruction)')
+            ->setParameter(':personnel', $personnel);
+
+        foreach ($qb->getQuery()->getResult() as $dbRole) { /* @var $dbRole \Application\Entity\Db\Role */
+            $roleId = $dbRole->getCode();
+
+            $roleClass = 'Application\Acl\Role';
+            $parent = 'user';
+            /** @deprecated */
+            if ($roleId == 'gestionnaire-composante')   { $roleClass = 'Application\Acl\GestionnaireComposanteRole'; $parent='composante';}
+            if ($roleId == 'directeur-composante')      { $roleClass = 'Application\Acl\DirecteurComposanteRole';    $parent='composante';}
+            if ($roleId == 'administrateur')            { $roleClass = 'Application\Acl\AdministrateurRole';}
+            if ($roleId == 'responsable-composante')    { $roleClass = 'Application\Acl\ResponsableComposanteRole';  $parent='composante';}
+            if ($roleId == 'superviseur-etablissement') { $roleClass = 'Application\Acl\EtablissementRole'; }
+            if ($roleId == 'gestionnaire-drh')          { $roleClass = 'Application\Acl\DrhRole'; }
+            /* FIN de deprecated */
+
+            $role = new $roleClass( $roleId, $parent, $dbRole->getLibelle() );
+            $role->setDbRole($dbRole);
+            $role->setPersonnel($personnel);
+
+            $roles[$roleId] = $role;
+
+            $affectations = $dbRole->getAffectation();
+            foreach( $affectations as $affectation ){ /* @var $affectation Affectation */
                 if ($structure = $affectation->getStructure()){
-                    $roleId .= '-'.$structure->getSourceCode();
-                    $roleLibelle .= ' ('.$structure->getLibelleCourt().')';
-                }
-
-                /** @deprecated */
-                $parents = [
-                    'gestionnaire-composante',
-                    'responsable-recherche-labo',
-                    'directeur-composante',
-                    'administrateur',
-                    'responsable-composante',
-                    'superviseur-etablissement',
-                ];
-                if (in_array($dbRole->getCode(), $parents)){
-                    $parent = $dbRole->getCode();
-                }else{
-                    $parent = 'user';
-                }
-
-                if (isset($roles[$roleId])){
-                    $role = $roles[$roleId];
-                }else{
-                    $role = new Role( $roleId, $parent, $roleLibelle);
+                    $affRoleId = $roleId.'-'.$structure->getSourceCode();
+                    if (! isset($roles[$affRoleId])){
+                        $affRoleLibelle = $dbRole->getLibelle().' ('.$structure->getLibelleCourt().')';
+                        $affRole = new $roleClass( $affRoleId, $roleId, $affRoleLibelle );
+                        $affRole->setDbRole( $dbRole );
+                        $affRole->setPersonnel( $personnel );
+                        $affRole->setStructure( $structure );
+                        $roles[$affRoleId] = $affRole;
+                    }
                 }
-
-                /* fin de deprecated */
-
-                //$role = new Role( $roleId, 'user', $roleLibelle);
-                $role->setDbRole( $dbRole );
-                $role->setPersonnel( $personnel );
-
-                if ($this->structureSelectionnee){
-                    $role->setStructure( $this->structureSelectionnee );
-                }else{
-                    $role->setStructure( $affectation->getStructure() );
-                }
-
-                $roles[$roleId] = $role;
             }
         }
         return $roles;
     }
-    
+
     public function setStructureSelectionnee(StructureEntity $structureSelectionnee = null)
     {
         $this->structureSelectionnee = $structureSelectionnee;