diff --git a/code/GenDbStructure/DdlGen.php b/code/GenDbStructure/DdlGen.php
index d8eab90fc87117900636e38dd2ab26d2a27c0349..25aaf72b63557611473e2ea480aeceb16293d88e 100644
--- a/code/GenDbStructure/DdlGen.php
+++ b/code/GenDbStructure/DdlGen.php
@@ -109,20 +109,6 @@ class DdlGen
             }
         }
 
-        $this->ddl[self::VIEWS]['SRC_INTERVENANT'] = "CREATE OR REPLACE VIEW src_intervenant AS 
-SELECT
-  null source_code,
-  null nom_usuel,
-  null nom_patronymique,
-  null prenom,
-  null date_naissance,
-  null critere_recherche,
-  null structure_id,
-  null civilite_id,
-  null annee_id
-FROM
-  dual;";
-
         $this->ddl[self::JOBS] = [];
 
         $this->ddl[self::JOBS]['OSE_CHARGENS_CALCUL_EFFECTIFS'] = "BEGIN
diff --git a/config/application.local.php.dist b/config/application.local.php.dist
index dcb5552cbc9d0cfb3ba9530c8f28634bbd49343c..bcfef4211ab1a7c8227cf03b994c0f4864cecf64 100644
--- a/config/application.local.php.dist
+++ b/config/application.local.php.dist
@@ -3,6 +3,9 @@
 return [
     /* Paramètres généraux */
     'global' => [
+        /* Détermine si l'installation de OSE est faite ou non. Pour pouvoir lancer OSE, positionnez à false */
+        'modeInstallation' => false,
+
         /* Accès en mode HTTP ou HTTPS */
         'scheme'           => '',
 
diff --git "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf"
index 40ac3a536e95b6dd5a950f06fa99d4674e9c1631..37fcdaeb799fd84421bbe20d5616feab304ae86b 100644
Binary files "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" and "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" differ
diff --git "a/data/D\303\251ploiement/ose-ddl.sql" "b/data/D\303\251ploiement/ose-ddl.sql"
index 95b76999314fcf7af473fdb0b4cff217bcc6142b..8b74b0e6add13b325d2ac0e4058c9c8502cacdc0 100755
--- "a/data/D\303\251ploiement/ose-ddl.sql"
+++ "b/data/D\303\251ploiement/ose-ddl.sql"
@@ -8047,21 +8047,6 @@ FROM
 WHERE
   i.histo_destruction IS NULL;
 
--- SRC_INTERVENANT
-CREATE OR REPLACE VIEW src_intervenant AS 
-SELECT
-  null source_code,
-  null nom_usuel,
-  null nom_patronymique,
-  null prenom,
-  null date_naissance,
-  null critere_recherche,
-  null structure_id,
-  null civilite_id,
-  null annee_id
-FROM
-  dual;
-
 --------------------------------------------------
 -- Vues matérialisées
 --------------------------------------------------
@@ -19435,7 +19420,7 @@ INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (
 INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2016, q'[2016/2017]', to_date('2016-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2017-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 1, 41.41);
 INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2017, q'[2017/2018]', to_date('2017-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2018-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 1, 41.41);
 INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2018, q'[2018/2019]', to_date('2018-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2019-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 1, 41.41);
-INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2019, q'[2019/2020]', to_date('2019-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2020-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 0, 41.41);
+INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2019, q'[2019/2020]', to_date('2019-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2020-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 1, 41.41);
 INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2020, q'[2020/2021]', to_date('2020-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2021-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 0, 41.41);
 INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2021, q'[2021/2022]', to_date('2021-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2022-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 0, 41.41);
 INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2022, q'[2022/2023]', to_date('2022-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2023-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 0, 41.41);
@@ -19559,33 +19544,33 @@ INSERT INTO ETAT_VOLUME_HORAIRE(ID, CODE, LIBELLE, ORDRE) VALUES (ETAT_VOLUME_HO
 
 
 -- Table IMPORT_TABLES
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[INTERVENANT]', q'[WHERE (IMPORT_ACTION IN ('delete','update','undelete') OR STATUT_ID IN (SELECT si.id FROM statut_intervenant si JOIN type_intervenant ti ON ti.id = si.type_intervenant_id WHERE ti.code = 'P'))]', 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[AFFECTATION_RECHERCHE]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ADRESSE_INTERVENANT]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ELEMENT_TAUX_REGIMES]', q'[WHERE IMPORT_ACTION IN ('delete','insert','undelete')]', 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[VOLUME_HORAIRE_ENS]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_MODULATEUR_EP]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_INTERVENTION_EP]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_FORMATION]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[STRUCTURE]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[SCENARIO_LIEN]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[PAYS]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[NOEUD]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[LIEN]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[GROUPE_TYPE_FORMATION]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[GRADE]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ETAPE]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ETABLISSEMENT]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ELEMENT_PEDAGOGIQUE]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[EFFECTIFS]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[DOMAINE_FONCTIONNEL]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[DEPARTEMENT]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CORPS]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CHEMIN_PEDAGOGIQUE]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CENTRE_COUT_STRUCTURE]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CENTRE_COUT]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[AFFECTATION]', NULL, 0);
-INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ADRESSE_STRUCTURE]', NULL, 0);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[INTERVENANT]', q'[WHERE (IMPORT_ACTION IN ('delete','update','undelete') OR STATUT_ID IN (SELECT si.id FROM statut_intervenant si JOIN type_intervenant ti ON ti.id = si.type_intervenant_id WHERE ti.code = 'P'))]', 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[AFFECTATION_RECHERCHE]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ADRESSE_INTERVENANT]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ELEMENT_TAUX_REGIMES]', q'[WHERE IMPORT_ACTION IN ('delete','insert','undelete')]', 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[VOLUME_HORAIRE_ENS]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_MODULATEUR_EP]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_INTERVENTION_EP]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_FORMATION]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[STRUCTURE]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[SCENARIO_LIEN]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[PAYS]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[NOEUD]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[LIEN]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[GROUPE_TYPE_FORMATION]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[GRADE]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ETAPE]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ETABLISSEMENT]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ELEMENT_PEDAGOGIQUE]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[EFFECTIFS]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[DOMAINE_FONCTIONNEL]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[DEPARTEMENT]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CORPS]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CHEMIN_PEDAGOGIQUE]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CENTRE_COUT_STRUCTURE]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CENTRE_COUT]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[AFFECTATION]', NULL, 1);
+INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ADRESSE_STRUCTURE]', NULL, 1);
 
 
 -- Table INDICATEUR
@@ -19652,6 +19637,9 @@ INSERT INTO PLAFOND(ID, CODE, LIBELLE) VALUES (PLAFOND_ID_SEQ.NEXTVAL, q'[hc-hor
 
 
 -- Table PLAFOND_ETAT
+INSERT INTO PLAFOND_ETAT(ID, CODE, LIBELLE) VALUES (PLAFOND_ETAT_ID_SEQ.NEXTVAL, q'[desactive]', q'[Désactivé]');
+INSERT INTO PLAFOND_ETAT(ID, CODE, LIBELLE) VALUES (PLAFOND_ETAT_ID_SEQ.NEXTVAL, q'[informatif]', q'[Informatif]');
+INSERT INTO PLAFOND_ETAT(ID, CODE, LIBELLE) VALUES (PLAFOND_ETAT_ID_SEQ.NEXTVAL, q'[bloquant]', q'[Bloquant]');
 
 
 -- Table PRIVILEGE
@@ -28773,7 +28761,7 @@ INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOU
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université de Limerick]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1098]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[ Animal Health Trust]', q'[AHT]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1099]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université Fédérale de Campina Grande  (UFCG)]', q'[UFCG]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1101]', SYSDATE, 1, SYSDATE, 1);
-INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université Paris-Saclay]', q'[Comue]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0912230N]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université Paris-Saclay]', q'[Saclay]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0912230N]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université de Dschang]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1108]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[SUPINFO Valenciennes  Ecole Superieur d'informatique Nord Pas-de-Calais]', q'[SUPINFO VA]', q'[059]', (SELECT id FROM source WHERE code = 'OSE'), q'[0754939L]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[l'Ecole nationale d'ingénieurs de Tunis]', q'[ENIT]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1111]', SYSDATE, 1, SYSDATE, 1);
@@ -29859,6 +29847,8 @@ INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOU
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université Fédérale de Santa Catarina]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1167]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[ANSES Laboratoire de Pathologie équine de Dozulé]', q'[ANSES DOZ]', q'[014]', (SELECT id FROM source WHERE code = 'OSE'), q'[ANSESDOZ]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[ANSES Laboratoire de Ploufragan-Plouzané]', q'[ANSESPLO]', q'[022]', (SELECT id FROM source WHERE code = 'OSE'), q'[ANSESPLO]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[CFA bureautique et métiers tertiaires]', q'[CFA LYON]', q'[069]', (SELECT id FROM source WHERE code = 'OSE'), q'[0693306U]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Institut royal de technologie de Melbourne]', q'[Univ. RMIT]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1168]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université CADI AYYAD]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1162]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université de Koudougou]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1163]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université de Newcastle]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ERT1168]', SYSDATE, 1, SYSDATE, 1);
@@ -30486,7 +30476,7 @@ INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATE
 INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[contrat_etablissement_represente]', q'[représentée par son Président, Pierre DENISE]', q'[Contrat : représentant]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[contrat_civilite_president]', q'[le Président]', q'[Contrat : civilité du président (avec article)]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[contrat_lieu_signature]', q'[Caen]', q'[LContrat : lieu de signature]', SYSDATE, 1, SYSDATE, 1);
-INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[directeur_ressources_humaines_id]', q'[4603]', q'[Directeur des Ressources humaines]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[directeur_ressources_humaines_id]', q'[labeyrie]', q'[Directeur des Ressources humaines]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[domaine_fonctionnel_ens_ext]', q'[14]', q'[Domaine fonctionnel à privilégier pour les enseignements pris à l'extérieur]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[export_pdf_services_signataire_2]', q'[Pour le Président et par délégation,
 le Directeur de la composante ou de service :]', q'[Signataire 2]', SYSDATE, 1, SYSDATE, 1);
@@ -30494,7 +30484,7 @@ INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATE
 le Directeur administratif de la composante ou le Responsable administratif du service :]', q'[Signataire 1]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[export_pdf_services_signature_1]', q'[Attestation de l'exactitude réglementaire des services mentionnés sur le présent document]', q'[Signature 1]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[export_pdf_services_signature_2]', q'[Le conseil de la composante et les directeurs des unités de recherche consultés]', q'[Signature 2]', SYSDATE, 1, SYSDATE, 1);
-INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[scenario_charges_services]', NULL, q'[Scénario utilisé pour confronter les charges d'enseignement au services des intervenants]', SYSDATE, 1, SYSDATE, 1);
+INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[scenario_charges_services]', q'[1]', q'[Scénario utilisé pour confronter les charges d'enseignement au services des intervenants]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[annee]', q'[2017]', q'[Année universitaire en cours pour la saisie des services]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[etablissement]', q'[1104]', q'[Identifiant de l'établissement courant]', SYSDATE, 1, SYSDATE, 1);
 INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[oseuser]', q'[1]', q'[Utilisateur OSE]', SYSDATE, 1, SYSDATE, 1);
diff --git a/data/Sql/Versions/v6.2.sql b/data/Sql/Versions/v6.2.sql
index ec04fe595a839fae99a275cf5217ee8076dbc573..6a47fa4830a3f352289c83a1d704a2f3d97b2af6 100644
--- a/data/Sql/Versions/v6.2.sql
+++ b/data/Sql/Versions/v6.2.sql
@@ -9812,6 +9812,12 @@ Insert into IMPORT_TABLES (TABLE_NAME,SYNC_FILTRE,SYNC_ENABLED) values ('CENTRE_
 Insert into IMPORT_TABLES (TABLE_NAME,SYNC_FILTRE,SYNC_ENABLED) values ('AFFECTATION',null,'0');
 Insert into IMPORT_TABLES (TABLE_NAME,SYNC_FILTRE,SYNC_ENABLED) values ('ADRESSE_STRUCTURE',null,'0');
 
+Insert into PLAFOND_ETAT (ID,CODE,LIBELLE) values (plafond_etat_id_seq.nextval,'desactive','Désactivé');
+Insert into PLAFOND_ETAT (ID,CODE,LIBELLE) values (plafond_etat_id_seq.nextval,'informatif','Informatif');
+Insert into PLAFOND_ETAT (ID,CODE,LIBELLE) values (plafond_etat_id_seq.nextval,'bloquant','Bloquant');
+
+-- revoir les paramètres (interface de gestion des paramètres)
+
 update intervenant set utilisateur_code = lpad(code, 8, '0');
 
 
diff --git a/module/Application/config/aaa_module.config.php b/module/Application/config/aaa_module.config.php
index f4f9b1b2e1167ca7a9f00e04b7ffd364dbe2004b..a9d9bf313a719c144552aeed2d6b508d80f411df 100755
--- a/module/Application/config/aaa_module.config.php
+++ b/module/Application/config/aaa_module.config.php
@@ -208,8 +208,8 @@ return [
         ],
         'inline_scripts' => [
             '010_bootstrap'   => 'vendor/bootstrap-3.3.5/js/bootstrap.min.js',
-            '030_util'        => 'vendor/unicaen-app/js/util.js',
-            '040_unicaen'     => 'vendor/unicaen-app/js/unicaen.js',
+            '030_util'        => 'vendor/unicaen/app/js/util.js',
+            '040_unicaen'     => 'vendor/unicaen/app/js/unicaen.js',
             '050_jquery_form' => 'vendor/jquery.form-3.51.js', // pour l'uploader Unicaen uniquement!!,
 
             '001_' => 'js/datepicker-fr.js',
@@ -223,7 +223,7 @@ return [
             '030_jquery-ui-theme'     => 'vendor/jquery-ui-1.11.4/jquery-ui.theme.min.css',
             '040_bootstrap'           => 'vendor/bootstrap-3.3.5/css/bootstrap.min.css',
             '050_bootstrap-theme'     => 'vendor/bootstrap-3.3.5/css/bootstrap-theme.min.css',
-            '060_unicaen'             => 'vendor/unicaen-app/css/unicaen.css',
+            '060_unicaen'             => 'vendor/unicaen/app/css/unicaen.css',
 
 
             '111_' => 'css/cartridge.css',
diff --git a/module/Application/src/Application/Processus/IntervenantProcessus.php b/module/Application/src/Application/Processus/IntervenantProcessus.php
index e9dd5793c9cf3bf426c1bd32890c40ff4b37f69d..23ead56b8cabc5042ab9207e14dd48c37d5ada3f 100755
--- a/module/Application/src/Application/Processus/IntervenantProcessus.php
+++ b/module/Application/src/Application/Processus/IntervenantProcessus.php
@@ -61,18 +61,22 @@ class IntervenantProcessus extends AbstractProcessus
         $orc = implode(' OR ', $orc);
         $sql .= ' AND (' . $orc . ') ORDER BY nom_usuel, prenom';
 
-        $stmt = $this->getEntityManager()->getConnection()->executeQuery($sql);
-
         $intervenants = [];
-        while ($r = $stmt->fetch()) {
-            $intervenants[$r['SOURCE_CODE']] = [
-                'civilite'         => $r['CIVILITE'],
-                'nom'              => $r['NOM_USUEL'],
-                'prenom'           => $r['PRENOM'],
-                'date-naissance'   => new \DateTime($r['DATE_NAISSANCE']),
-                'structure'        => $r['STRUCTURE'],
-                'numero-personnel' => $r['SOURCE_CODE'],
-            ];
+
+        try {
+            $stmt = $this->getEntityManager()->getConnection()->executeQuery($sql);
+            while ($r = $stmt->fetch()) {
+                $intervenants[$r['SOURCE_CODE']] = [
+                    'civilite'         => $r['CIVILITE'],
+                    'nom'              => $r['NOM_USUEL'],
+                    'prenom'           => $r['PRENOM'],
+                    'date-naissance'   => new \DateTime($r['DATE_NAISSANCE']),
+                    'structure'        => $r['STRUCTURE'],
+                    'numero-personnel' => $r['SOURCE_CODE'],
+                ];
+            }
+        }catch(\Exception $e){
+            // à traiter si la vue source intervenant n'existe pas!!
         }
 
         return $intervenants;
diff --git a/module/Application/view/application/parametre/annees.phtml b/module/Application/view/application/parametre/annees.phtml
index 4b77961204217f90534b3c07affdf22e17e55c72..f3b38ec0512ff6d1079340e54fa8ac74c5c324e9 100644
--- a/module/Application/view/application/parametre/annees.phtml
+++ b/module/Application/view/application/parametre/annees.phtml
@@ -11,7 +11,7 @@ $annees = array_chunk($annees, 10);
 ?>
 <h1 class="page-header">Gestion des années</h1>
 
-<?php foreach ($annees as $al): ?>
+<?php foreach ($annees as $al): if ($al->getId() > 2013): ?>
     <div style="float:left;margin:2em">
         <?php foreach ($al as $annee): ?>
 
@@ -21,7 +21,7 @@ $annees = array_chunk($annees, 10);
 
         <?php endforeach; ?>
     </div>
-<?php endforeach; ?>
+<?php endif; endforeach; ?>
 <script>
 
     $('.btn-annee').click(function(){
diff --git a/public/install.php b/public/install.php
index ff67242bce4611ee09ee75c3cf848d354d6d866d..77fbe035ab2310624c488b60aa9c837f199f16e3 100644
--- a/public/install.php
+++ b/public/install.php
@@ -66,7 +66,8 @@
     <div id="contenu">
         <h1>Installation OK!</h1>
         <p class="lead">
-            Pour sortir du mode installation, veuillez passer à <i>false</i> la valeur <i>global/modeInstallation</i> de votre fichier de configuration
+            Pour sortir du mode installation, veuillez passer à <i>false</i> la valeur <i>global/modeInstallation</i> de votre
+            fichier de configuration
             <i><?= AppConfig::LOCAL_APPLICATION_CONFIG_FILE ?></i>.
         </p>
     </div>
@@ -143,6 +144,10 @@
         background-color: lightgreen;
     }
 
+    table.test tr.warning td.res {
+        background-color: papayawhip;
+    }
+
     table.test tr.error td.res {
         background-color: lightpink;
     }
@@ -170,8 +175,8 @@
 
     b.username {
         background-color: yellow;
-        padding-left:1em;
-        padding-right:1em;
+        padding-left: 1em;
+        padding-right: 1em;
         border: 1px darkgoldenrod solid;
         font-family: "Courier New", Courier, monospace;
     }
@@ -183,7 +188,10 @@
 </style>
 </body>
 </html>
-<?php die();
+<?php
+
+
+die();
 
 
 
@@ -203,9 +211,30 @@ class Installateur
     private function makeTests()
     {
         return [
+            'Environnement'           => [
+                'Lecture de la configuration globale'         => function () {
+                    if (!class_exists('AppConfig')){
+                        throw new \Exception('AppConfig non trouvé.');
+                    }else{
+                        return true;
+                    }
+                },
+                'Droit d\'écriture sur le dossier data/cache' => function () {
+                    $cacheDir = __DIR__ . '/../data/cache';
+
+                    return is_writable($cacheDir) ? true : 'Répertoire data/cache non accessible en écriture';
+                },
+                'Présence d\'UnoConv'                         => function () {
+                    return substr(shell_exec('unoconv --version'), 0, 7) == 'unoconv' ? true : 'Commande "unoconv" introuvable';
+                },
+            ],
             'Configuration d\'Apache' => [
                 'Réécriture d\'URL activée' => function () {
-                    return in_array('mod_rewrite', apache_get_modules()) ? true : 'Non activée';
+                    if (function_exists('apache_get_modules')) {
+                        return in_array('mod_rewrite', apache_get_modules()) ? true : 'Non activée';
+                    } else {
+                        return '!Test non réalisable. PHP n\'est probablement pas lancé en tant que module Apache';
+                    }
                 },
             ],
             'Modules PHP nécessaires' => [
@@ -240,68 +269,59 @@ class Installateur
                     return in_array('oci8', get_loaded_extensions()) ? true : 'Non installé';
                 },
             ],
-            'Environnement'           => [
-                'Droit d\'écriture sur le dossier data/cache' => function () {
-                    $cacheDir = __DIR__ . '/../data/cache';
-
-                    return is_writable($cacheDir) ? true : 'Répertoire data/cache non accessible en écriture';
-                },
-                'Présence d\'UnoConv'                         => function () {
-                    return substr(shell_exec('unoconv --version'), 0, 7) == 'unoconv' ? true : 'Commande "unoconv" introuvable';
-                },
-            ],
             'Configuration'           => [
-                'Fichier de configuration local'  => function () {
+                'Fichier de configuration local'              => function () {
                     if (!AppConfig::get()) {
                         $this->stop = true;
 
-                        return '<abbr title="Renommez '.AppConfig::LOCAL_APPLICATION_CONFIG_FILE.'.dist en '.AppConfig::LOCAL_APPLICATION_CONFIG_FILE.'">Fichier introuvable</abbr>';
+                        return '<abbr title="Renommez ' . AppConfig::LOCAL_APPLICATION_CONFIG_FILE . '.dist en ' . AppConfig::LOCAL_APPLICATION_CONFIG_FILE . '">Fichier introuvable</abbr>';
                     }
 
                     return true;
                 },
-                'Scheme' => function () {
-                    $value = $_SERVER['REQUEST_SCHEME'];
+                'Scheme'                                      => function () {
+                    $value = isset($_SERVER['REQUEST_SCHEME']) ? $_SERVER['REQUEST_SCHEME'] : 'http</span> ou <span class="val">https';
 
-                    if (!AppConfig::get('global','scheme', null)){
-                        return 'La variable globale "scheme" n\'est pas configurée. Y placer la valeur <span class="val">'.$value.'</span>';
+                    if (!AppConfig::get('global', 'scheme', null)) {
+                        return 'La variable globale "scheme" n\'est pas configurée. Y placer la valeur <span class="val">' . $value . '</span>';
                     }
 
                     return true;
                 },
-                'Domain' => function () {
-                    $value = $_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'],0, -10);
+                'Domain'                                      => function () {
+                    $value = (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '')
+                            . substr(isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : '', 0, -10);
 
-                    if (!AppConfig::get('global','domain', null)){
-                        return 'La variable globale "domain" n\'est pas configurée. Y placer la valeur <span class="val">'.$value.'</span>';
+                    if (!AppConfig::get('global', 'domain', null)) {
+                        return 'La variable globale "domain" n\'est pas configurée. Y placer la valeur <span class="val">' . $value . '</span>';
                     }
 
                     return true;
                 },
-                'Accès à la base de données'      => function () {
+                'Accès à la base de données'                  => function () {
                     $this->getEntityManager()->beginTransaction();
                     $this->getEntityManager()->rollback();
 
                     return true;
                 },
-                'Test d\'existance des structures de données' => function(){
-                    $sql = 'SELECT table_name FROM USER_TABLES where table_name IN (\'INTERVENANT\',\'UTILISATEUR\',\'CIVILITE\',\'ELEMENT_PEDAGOGIQUE\',\'SERVICE\') ORDER BY table_name';
+                'Test d\'existance des structures de données' => function () {
+                    $sql    = 'SELECT table_name FROM USER_TABLES where table_name IN (\'INTERVENANT\',\'UTILISATEUR\',\'CIVILITE\',\'ELEMENT_PEDAGOGIQUE\',\'SERVICE\') ORDER BY table_name';
                     $tables = '-';
-                    $res = Application::$container->get(Constants::BDD)->getConnection()->fetchAll($sql);
+                    $res    = Application::$container->get(Constants::BDD)->getConnection()->fetchAll($sql);
 
-                    foreach( $res as $r ){
-                        $tables .= $r['TABLE_NAME'].'-';
+                    foreach ($res as $r) {
+                        $tables .= $r['TABLE_NAME'] . '-';
                     }
 
-                    if ($tables != '-CIVILITE-ELEMENT_PEDAGOGIQUE-INTERVENANT-SERVICE-UTILISATEUR-'){
+                    if ($tables != '-CIVILITE-ELEMENT_PEDAGOGIQUE-INTERVENANT-SERVICE-UTILISATEUR-') {
                         $this->mustInitBdd = true;
                         throw new \Exception('Base de données non initialisée. '
-                            .'Merci de lancer le script de création des structures de données présent dans <i>data/Déploiement/ose-ddl.sql</i>');
+                            . 'Merci de lancer le script de création des structures de données présent dans <i>data/Déploiement/ose-ddl.sql</i>');
                     }
 
                     return true;
                 },
-                'Recherche de l\'utilisateur OSE' => function () {
+                'Recherche de l\'utilisateur OSE'             => function () {
                     /** @var UtilisateurService $serviceUtilisateur */
                     $serviceUtilisateur = Application::$container->get(UtilisateurService::class);
 
@@ -311,7 +331,7 @@ class Installateur
                         throw new \Exception('Utilisateur OSE introuvable');
                     }
                 },
-                'Accès au serveur LDAP'           => function () {
+                'Accès au serveur LDAP'                       => function () {
                     /** @var LdapConnecteur $ldap */
                     $ldap = Application::$container->get(LdapConnecteur::class);
                     @$ldap->rechercheUtilisateurs('utilisateur_introuvable');
@@ -326,6 +346,11 @@ class Installateur
 
     public function affTests()
     {
+        /* Au besoin, on supprime le cache de onfiguration */
+        if (file_exists('data/cache/module-config-cache.php')){
+            unlink('data/cache/module-config-cache.php');
+        }
+
         $tests = $this->makeTests();
         foreach ($tests as $cat => $ts) {
             echo '<h2>' . $cat . '</h2>';
@@ -342,7 +367,18 @@ class Installateur
                     }
                 }
 
-                echo '<tr class="' . ($r === true ? 'passed' : 'error') . '"><td class="test">' . $test . '</td><td class="res">' . ($r === true ? 'OK' : $r) . '</td></tr>';
+                $class = 'passed';
+                if ($r !== true){
+
+                    if ($r !== true && 0 ===strpos($r, '!')){
+                        $r = substr( $r, 1);
+                        $class = 'warning';
+                    }else{
+                        $class='error';
+                    }
+                }
+
+                echo '<tr class="' . $class . '"><td class="test">' . $test . '</td><td class="res">' . ($r === true ? 'OK' : $r) . '</td></tr>';
             }
             echo '</table>';
         }
@@ -374,7 +410,9 @@ class Installateur
             if ($error) {
                 echo '<p class="mdp-error">' . $error . '</p>';
             } else {
-                echo '<p class="mdp-success">Le mot de passe de l\'utilisateur OSE a été réinitialisé avec succès.<br />Pour rappel, le login de l\'utilisateur OSE est <b class="username">'.$oseUser->getUsername().'</b></p>';
+                echo '<p class="mdp-success">Le mot de passe de l\'utilisateur OSE a été réinitialisé avec succès.<br />Pour rappel, le login de l\'utilisateur OSE est <b class="username">' . $oseUser->getUsername() . '</b>
+Une fois que vous vous serez connecté, je vous invite à nommer un ou plusieurs administrateurs de l\'application.
+(page Administration / Droits d\'accès / Affectations).</p>';
             }
         }
     }