diff --git a/data/Sql/privileges.sql b/data/Sql/privileges.sql
index 392faa3b9419fe7301cb47a4337990d26e0a2069..dabe29acf509ac3a9d48c90f6049519ca5b530ee 100644
--- a/data/Sql/privileges.sql
+++ b/data/Sql/privileges.sql
@@ -39,10 +39,18 @@ order by
 
 -- EXPORT
 
-categorie_privilege
-privilege
-
-role
-
 role_privilege
-statut_privilege
\ No newline at end of file
+statut_privilege
+
+;
+
+SELECT 'INSERT INTO PERIMETRE (
+    ID,
+    CODE,
+    LIBELLE
+  ) VALUES (
+    PERIMETRE_ID_SEQ.NEXTVAL,
+    ''' || code || ''',
+    q''$' || libelle || '$''
+  );'
+FROM perimetre;
\ No newline at end of file
diff --git a/data/Sql/v_1.5.sql b/data/Sql/v_1.5.sql
index 52847016fac3c1665277e2e115136e88e5037175..44a44eb4a3e27c06126db2dbb58bee608628b5b1 100644
--- a/data/Sql/v_1.5.sql
+++ b/data/Sql/v_1.5.sql
@@ -11010,5 +11010,86 @@ update effectifs set annee_id = to_number( substr( source_code, 1, 4) ), source_
 /
 BEGIN DBMS_SCHEDULER.enable(name=>'"OSE"."OSE_SRC_SYNC"'); END;
 /
+
+DROP SEQUENCE RESSOURCE_ID_SEQ;
+DROP SEQUENCE ROLE_UTILISATEUR_ID_SEQ;
+DROP SEQUENCE ROLE_UTILISATEUR_LINKER_ID_SEQ;
+DROP SEQUENCE TYPE_ROLE_ID_SEQ;
+DROP SEQUENCE TYPE_ROLE_PRIVILEGE_ID_SEQ;
+DROP SEQUENCE TYPE_ROLE_STRUCTURE_ID_SEQ;
+DROP SEQUENCE UNICAEN_EFFECTIFS_POUR__ID_SEQ;
+DROP SEQUENCE WF_ETAPE_TO_ETAPE_ID_SEQ;
+
+DROP INDEX ROLE_UTILISATEUR_ID_UN;
+DROP INDEX MV_DISCIPLINE_PK;
+DROP INDEX MV_INTERVENANT_EXTERIEUR_PK;
+DROP INDEX TYPE_ROLE_STRUCTURE_PK;
+DROP INDEX MV_VOLUME_HORAIRE_ENS_PK;
+DROP INDEX MV_INTERVENANT_PERMANENT_PK;
+DROP INDEX WF_ETAPE_TO_ETAPE_PK;
+DROP INDEX MV_HARP_IND_DER_STRUCT_PK;
+DROP INDEX MV_HARP_INDIVIDU_STATUT_PK;
+DROP INDEX MV_ELEMENT_DISCIPLINE_PK;
+DROP INDEX TYPE_ROLE_CODE_UN;
+DROP INDEX VHE_SOURCE_UN;
+DROP INDEX DROIT_PK;
+DROP INDEX FORMULE_RESULTAT_MAJ_PK;
+DROP INDEX ROLE_UTILISATEUR_PK;
+DROP INDEX MV_ROLE_PK;
+DROP INDEX MV_ELEMENT_PORTEUR_PORTE_PK;
+DROP INDEX TYPE_ROLE_PK;
+DROP INDEX RESSOURCE__UN;
+DROP INDEX ROLE_UTILISATEUR_LINKER_PK;
+DROP INDEX RESSOURCE_PK;
+DROP INDEX MV_HARP_INDIVIDU_BANQUE_PK;
+
+DROP table ressource;
+DROP table ROLE_UTILISATEUR;
+DROP table ROLE_UTILISATEUR_LINKER;
+DROP table TYPE_ROLE;
+DROP table TYPE_ROLE_PRIVILEGE;
+DROP table TYPE_ROLE_STRUCTURE;
+DROP table WF_ETAPE_TO_ETAPE;
+
+DROP VIEW SRC_DISCIPLINE;
+DROP VIEW SRC_ELEMENT_DISCIPLINE;
+DROP VIEW SRC_ELEMENT_PORTEUR_PORTE;
+DROP VIEW SRC_ROLE;
+DROP VIEW SRC_VOLUME_HORAIRE_ENS;
+DROP VIEW V_BERTRAND;
+DROP VIEW V_DIFF_DISCIPLINE;
+DROP VIEW V_DIFF_ELEMENT_DISCIPLINE;
+DROP VIEW V_DIFF_ROLE;
+DROP VIEW V_DIFF_VOLUME_HORAIRE_ENS;
+DROP VIEW V_TMP_WF;
+
+DROP MATERIALIZED VIEW MV_DISCIPLINE;
+DROP MATERIALIZED VIEW MV_ELEMENT_DISCIPLINE;
+DROP MATERIALIZED VIEW MV_ELEMENT_PORTEUR_PORTE;
+DROP MATERIALIZED VIEW MV_ELEMENT_TAUX_REGIMES_X;
+DROP MATERIALIZED VIEW MV_HARP_IND_DER_STRUCT;
+DROP MATERIALIZED VIEW MV_HARP_INDIVIDU_BANQUE;
+DROP MATERIALIZED VIEW MV_HARP_INDIVIDU_STATUT;
+DROP MATERIALIZED VIEW MV_INTERVENANT_EXTERIEUR;
+DROP MATERIALIZED VIEW MV_INTERVENANT_PERMANENT;
+DROP MATERIALIZED VIEW MV_ROLE;
+DROP MATERIALIZED VIEW MV_VOLUME_HORAIRE_ENS;
+
+DROP TRIGGER F_RESULTAT_R;
+DROP TRIGGER F_RESULTAT_SERVICE_R;
+DROP TRIGGER F_RESULTAT_SERVICE_REF_R;
+DROP TRIGGER F_RESULTAT_VH_R;
+DROP TRIGGER F_RESULTAT_VH_REF_R;
+DROP TRIGGER WF_TRG_INTERV_DOSSIER;
+DROP TRIGGER WF_TRG_INTERV_DOSSIER_S;
+
+
+DROP procedure PURGER_INTERVENANT;
+
+
+
+
+
+
 BEGIN OSE_FORMULE.CALCULER_TOUT; END;
 /
\ No newline at end of file
diff --git a/module/Application/src/Application/Provider/Identity/IdentityProvider.php b/module/Application/src/Application/Provider/Identity/IdentityProvider.php
index ce25efedd84190a157ba42090ecbae8501a59084..fe48fa15986218c3bb0b25c2d186592c394c412a 100644
--- a/module/Application/src/Application/Provider/Identity/IdentityProvider.php
+++ b/module/Application/src/Application/Provider/Identity/IdentityProvider.php
@@ -74,9 +74,12 @@ class IdentityProvider implements ServiceLocatorAwareInterface, ChainableProvide
             /**
              * Rôle correspondant au type d'intervenant auquel appartient l'utilisateur
              */
-            $intervenant = $utilisateur->getIntervenant();
-            if ($intervenant){
-                $this->roles[] = Acl\IntervenantRole::ROLE_ID;
+            if ($intervenant = $utilisateur->getIntervenant()){
+                if ($intervenant->estPermanent()){
+                    $this->roles[] = Acl\IntervenantPermanentRole::ROLE_ID;
+                }else{
+                    $this->roles[] = Acl\IntervenantExterieurRole::ROLE_ID;
+                }
             }
         }
         return $this->roles;
diff --git a/module/Application/src/Application/Provider/Role/RoleProvider.php b/module/Application/src/Application/Provider/Role/RoleProvider.php
index f39cac2950ff24a8e04d2b77ea260ec48faf922b..632dfed9e39ccb8d16898b902d59c2cbc3bd8163 100644
--- a/module/Application/src/Application/Provider/Role/RoleProvider.php
+++ b/module/Application/src/Application/Provider/Role/RoleProvider.php
@@ -81,10 +81,14 @@ class RoleProvider implements ProviderInterface, EntityManagerAwareInterface
         $utilisateur = $serviceAuthUserContext->getDbUser();
 
         /* Cas spécifique du rôle intervenant */
-        if ($utilisateur && $utilisateur->getIntervenant()){
-            $role = new IntervenantRole;
+        if ($utilisateur && $intervenant = $utilisateur->getIntervenant()){
+            /* @var $intervenant \Application\Entity\Db\Intervenant */
+            if ($intervenant->estPermanent()){
+                $role = $roles[\Application\Acl\IntervenantPermanentRole::ROLE_ID];
+            }else{
+                $role = $roles[\Application\Acl\IntervenantExterieurRole::ROLE_ID];
+            }
             $role->setIntervenant( $utilisateur->getIntervenant() );
-            $roles[$role->getRoleId()] = $role;
         }
 
         /* Rôles du personnel */