From 3ddac34b016eabb0214e13293b84b4f26ab01b1d Mon Sep 17 00:00:00 2001
From: Bertrand Gauthier <bertrand.gauthier@unicaen.fr>
Date: Thu, 13 Sep 2018 15:00:18 +0200
Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20des=20docs=20et=20script?=
 =?UTF-8?q?s=20SQL.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 INSTALL.md                    |  75 +++++++++
 README.md                     |  75 +--------
 data/sql/vues-apogee-ucn.sql  |  11 +-
 data/sql/vues-apogee-ulhn.sql |  19 +--
 data/sql/vues-apogee-urn.sql  |  19 +--
 data/sql/vues-apogee.sql      | 278 ++++++++++++++++++++++------------
 data/sql/vues-physalis.sql    |  81 ++++++----
 doc/release-notes/v1.1.0.md   |  22 +++
 doc/vues-sources.md           |  22 +--
 9 files changed, 360 insertions(+), 242 deletions(-)
 create mode 100644 INSTALL.md
 create mode 100644 doc/release-notes/v1.1.0.md

diff --git a/INSTALL.md b/INSTALL.md
new file mode 100644
index 0000000..606a14c
--- /dev/null
+++ b/INSTALL.md
@@ -0,0 +1,75 @@
+# Installation
+
+## Obtention des sources
+
+S'il s'agit de la première installation du ws, vous devez lancer la commande suivante pour obtenir les sources :
+
+```bash
+git clone git@git.unicaen.fr:dsi/sygal-import-ws.git
+cd sygal-import-ws
+```
+
+## Installation d'une version précise
+
+Lancer la commande suivante pour obtenir la liste des versions disponibles du ws.
+```bash
+git fetch && git fetch --tags && git tag
+```
+
+Et si la version la plus récente est par exemple la `1.1.0`, utilisez la commande suivante pour "installer" sur cette version :
+```bash
+git checkout 1.1.0
+```
+
+## Installation des dépendances
+
+Installez les packages requis par le ws via [Composer](https://getcomposer.org/) comme ceci :
+```bash
+composer install --no-suggest --optimize-autoloader
+```
+
+## Fichier "users.htpasswd"
+
+Ce fichier contient les utilisateurs/mot de passe autorisés à appeler le ws.
+
+S'il s'agit d'une mise à jour du ws, vous avez déjà fait la manip, inutile de lire ce paragraphe.
+
+S'il s'agit de la première installation du ws, placez-vous dans le répertoire [`config`](config) des sources et lancer la 
+commande suivante pour créer le fichier "users.htpasswd" contenant un utilisateur `sygal-app` dont le mot de passe 
+va vous être demandé :
+```bash
+htpasswd -c users.htpasswd sygal-app
+```
+
+Si vous manquez d'idée pour le mot de passe, utilsez la commande suivante :
+```bash
+pwgen 16 1 --symbols --secure
+```
+
+## Fichiers de config
+
+S'il s'agit d'une mise à jour du ws, vous avez déjà fait la manip, inutile de lire ce paragraphe.
+Reportez-vous au "release notes" de la version choisie (ex: [1.1.0](https://git.unicaen.fr/dsi/sygal-import-ws/tags/1.1.0)).
+
+S'il s'agit de la première installation du ws, 2 fichiers situés dans le répertoire `config/autoload` ont besoin d'être 
+complétés puis renommés :
+
+  - **local.php.dist** : qui est notamment utilisé pour l'authentification.
+    - clé `htpasswd` qui désigne le chemin du fichier "users.htpasswd" évoqué plus haut
+  - **database.local.php.dist** : qui est utilisé pour la connection à la BDD.
+    - clés `host`, `dbname`, `port`, `user`, `password` : les infos d'accès à la BDD.
+ 
+Une fois ces fichiers complétés, changer leur extension `.php.dist` en `.php`.
+
+## Interface d'admin Apigility
+
+Cette interface de modification du WS est réservée aux développeurs et est **INTERDITE EN PRODUCTION**.
+Assurez-vous de bien désactiver le mode développement :
+```bash
+composer development-disable
+```
+
+Pour passer en mode développement et ouvrir l'accès à cette interface de modification du WS :
+```bash
+composer development-enable
+``` 
diff --git a/README.md b/README.md
index 8703ec6..473da7e 100644
--- a/README.md
+++ b/README.md
@@ -16,80 +16,7 @@ et les met à disposition pour leur lecture via des requêtes GET.
 
 ## Installation
 
-### Obtention des sources
-
-S'il s'agit de la première installation du ws, vous devez lancer la commande suivante pour obtenir les sources :
-
-```bash
-git clone git@git.unicaen.fr:dsi/sygal-import-ws.git
-cd sygal-import-ws
-```
-
-### Installation d'une version précise
-
-Lancer la commande suivante pour obtenir la liste des versions disponibles du ws.
-```bash
-git fetch && git fetch --tags && git tag
-```
-
-Et si la version la plus récente est par exemple la `1.0.0`, utilisez la commande suivante pour "installer" sur cette version :
-```bash
-git checkout 1.0.0
-```
-
-### Installation des dépendances
-
-Installez les packages requis par le ws via [Composer](https://getcomposer.org/) comme ceci :
-```bash
-composer install --no-suggest --optimize-autoloader
-```
-
-### Fichier "users.htpasswd"
-
-Ce fichier contient les utilisateurs/mot de passe autorisés à appeler le ws.
-
-S'il s'agit d'une mise à jour du ws, vous avez déjà fait la manip, inutile de lire ce paragraphe.
-
-S'il s'agit de la première installation du ws, placez-vous dans le répertoire [`config`](config) des sources et lancer la 
-commande suivante pour créer le fichier "users.htpasswd" contenant un utilisateur `sygal-app` dont le mot de passe 
-va vous être demandé :
-```bash
-htpasswd -c users.htpasswd sygal-app
-```
-
-Si vous manquez d'idée pour le mot de passe, utilsez la commande suivante :
-```bash
-pwgen 16 1 --symbols --secure
-```
-
-### Fichiers de config
-
-S'il s'agit d'une mise à jour du ws, vous avez déjà fait la manip, inutile de lire ce paragraphe.
-Reportez-vous au "release notes" de la version choisie (ex: [1.0.0](https://git.unicaen.fr/dsi/sygal-import-ws/tags/1.0.0)).
-
-S'il s'agit de la première installation du ws, 2 fichiers situés dans le répertoire `config/autoload` ont besoin d'être 
-complétés puis renommés :
-
-  - **local.php.dist** : qui est notamment utilisé pour l'authentification.
-    - clé `htpasswd` qui désigne le chemin du fichier "users.htpasswd" évoqué plus haut
-  - **database.local.php.dist** : qui est utilisé pour la connection à la BDD.
-    - clés `host`, `dbname`, `port`, `user`, `password` : les infos d'accès à la BDD.
- 
-Une fois ces fichiers complétés, changer leur extension `.php.dist` en `.php`.
-
-### Interface d'admin Apigility
-
-Passez en mode développement pour ouvrir l'accès à l'interface Apigility de modification du WS :
-```bash
-composer development-enable
-``` 
-
-Cette fonctionnalité est réservée aux développeurs du WS et est **INTERDIT EN PRODUCTION**.
-Assurez-vous de bien désactiver le mode développement :
-```bash
-composer development-disable
-``` 
-
+Cf. [`INSTALL.md`](INSTALL.md).
 
 
 ## Lancement du web service *pour le dévelopement*
diff --git a/data/sql/vues-apogee-ucn.sql b/data/sql/vues-apogee-ucn.sql
index b192e92..91740a5 100644
--- a/data/sql/vues-apogee-ucn.sql
+++ b/data/sql/vues-apogee-ucn.sql
@@ -6,15 +6,10 @@
 -- Web Service d'import de données
 -- -------------------------------
 --
--- Vues APOGEE : Caen
+-- Vues APOGEE spécifiques à Caen.
 --
 
-
------------------------------ VARIABLES ------------------------------
-
--- VARIABLES définies manuellement :
-
-create view APOGEE.SYGAL_VARIABLE_MANU AS
+create or replace view SYGAL_VARIABLE_MANU as
   select
     'apogee' as source_id,
     'EMAIL_ASSISTANCE' as id,
@@ -44,4 +39,4 @@ create view APOGEE.SYGAL_VARIABLE_MANU AS
     to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE,
     to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE
   from dual
-;
+/
diff --git a/data/sql/vues-apogee-ulhn.sql b/data/sql/vues-apogee-ulhn.sql
index 1a5bf6e..4df2597 100644
--- a/data/sql/vues-apogee-ulhn.sql
+++ b/data/sql/vues-apogee-ulhn.sql
@@ -6,21 +6,17 @@
 -- Web Service d'import de données
 -- -------------------------------
 --
--- Vues APOGEE : Le Havre
+-- Vues APOGEE spécifiques à Le Havre.
 --
 
-
------------------------------ VARIABLES ------------------------------
-
--- VARIABLES définies manuellement :
-
-create view APOGEE.SYGAL_VARIABLE_MANU AS
+/*
+create or replace view SYGAL_VARIABLE_MANU as
   select
     'apogee' as source_id,
     'EMAIL_ASSISTANCE' as id,
     'EMAIL_ASSISTANCE' as cod_vap,
     'Adresse mail de l''assistance utilisateur' as lib_vap,
-    'assistance-sygal@univ-lehavre.fr' as par_vap,
+    'assistance-sygal@unicaen.fr' as par_vap,
     to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE,
     to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE
   from dual
@@ -30,7 +26,7 @@ create view APOGEE.SYGAL_VARIABLE_MANU AS
     'EMAIL_BU' as id,
     'EMAIL_BU' as cod_vap,
     'Adresse mail de contact de la BU' as lib_vap,
-    'scd.theses@univ-lehavre.fr' as par_vap,
+    'scd.theses@unicaen.fr' as par_vap,
     to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE,
     to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE
   from dual
@@ -40,8 +36,9 @@ create view APOGEE.SYGAL_VARIABLE_MANU AS
     'EMAIL_BDD' as id,
     'EMAIL_BDD' as cod_vap,
     'Adresse mail de contact du bureau des doctorats' as lib_vap,
-    'recherche.doctorat@univ-lehavre.fr' as par_vap,
+    'recherche.doctorat@unicaen.fr' as par_vap,
     to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE,
     to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE
   from dual
-;
+/
+*/
\ No newline at end of file
diff --git a/data/sql/vues-apogee-urn.sql b/data/sql/vues-apogee-urn.sql
index 184e04a..c069466 100644
--- a/data/sql/vues-apogee-urn.sql
+++ b/data/sql/vues-apogee-urn.sql
@@ -6,21 +6,17 @@
 -- Web Service d'import de données
 -- -------------------------------
 --
--- Vues APOGEE : Rouen
+-- Vues APOGEE spécifiques à Rouen.
 --
 
-
------------------------------ VARIABLES ------------------------------
-
--- VARIABLES définies manuellement :
-
-create view APOGEE.SYGAL_VARIABLE_MANU AS
+/*
+create or replace view SYGAL_VARIABLE_MANU as
   select
     'apogee' as source_id,
     'EMAIL_ASSISTANCE' as id,
     'EMAIL_ASSISTANCE' as cod_vap,
     'Adresse mail de l''assistance utilisateur' as lib_vap,
-    'assistance-sygal@univ-rouen.fr' as par_vap,
+    'assistance-sygal@unicaen.fr' as par_vap,
     to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE,
     to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE
   from dual
@@ -30,7 +26,7 @@ create view APOGEE.SYGAL_VARIABLE_MANU AS
     'EMAIL_BU' as id,
     'EMAIL_BU' as cod_vap,
     'Adresse mail de contact de la BU' as lib_vap,
-    'scd.theses@univ-rouen.fr' as par_vap,
+    'scd.theses@unicaen.fr' as par_vap,
     to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE,
     to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE
   from dual
@@ -40,8 +36,9 @@ create view APOGEE.SYGAL_VARIABLE_MANU AS
     'EMAIL_BDD' as id,
     'EMAIL_BDD' as cod_vap,
     'Adresse mail de contact du bureau des doctorats' as lib_vap,
-    'recherche.doctorat@univ-rouen.fr' as par_vap,
+    'recherche.doctorat@unicaen.fr' as par_vap,
     to_date('2017-01-01', 'YYYY-MM-DD') as DATE_DEB_VALIDITE,
     to_date('9999-12-31', 'YYYY-MM-DD') as DATE_FIN_VALIDITE
   from dual
-;
+/
+*/
\ No newline at end of file
diff --git a/data/sql/vues-apogee.sql b/data/sql/vues-apogee.sql
index 61e4b21..8d83460 100644
--- a/data/sql/vues-apogee.sql
+++ b/data/sql/vues-apogee.sql
@@ -6,29 +6,10 @@
 -- Web Service d'import de données
 -- -------------------------------
 --
--- Vues APOGEE.
+-- Vues
 --
 
-
------------------------------ SOURCE ------------------------------
-
-create view APOGEE.SYGAL_SOURCE as
-  select
-    'apogee' as id,
-    'apogee' as code,
-    'Apogée' as libelle,
-    1        as importable
-  from dual
-;
-
-
------------------------------ VARIABLES ------------------------------
-
--- VARIABLES définies manuellement : cf. script "vues-apogee-{etab}.sql".
-
--- VARIABLES isssues d'Apogée :
-
-create view APOGEE.SYGAL_VARIABLE AS
+create or replace view SYGAL_VARIABLE as
   select
     'apogee'            as source_id,       -- Id de la source
     cod_vap             as id,
@@ -55,14 +36,19 @@ create view APOGEE.SYGAL_VARIABLE AS
     DATE_DEB_VALIDITE,
     DATE_FIN_VALIDITE
   from
-    APOGEE.SYGAL_VARIABLE_MANU
-;
+    SYGAL_VARIABLE_MANU
+/
 
+create or replace view SYGAL_SOURCE as
+  select
+    'apogee' as id,
+    'apogee' as code,
+    'Apogée' as libelle,
+    1        as importable
+  from dual
+/
 
------------------------------ INDIVIDU ------------------------------
-
-create view APOGEE.SYGAL_INDIVIDU as
-  -- doctorants
+create or replace view SYGAL_INDIVIDU as
   select distinct
     'apogee'                                            as source_id,       -- Id de la source
     'doctorant'                                         as type,
@@ -169,23 +155,18 @@ create view APOGEE.SYGAL_INDIVIDU as
     --left join etablissement   etb on etb.cod_etb = nvl ( act.cod_etb, per.cod_etb )
     --left join role_jury       rjc on rjc.cod_roj = act.cod_roj_compl
   )
-;
-
-
------------------------------ ROLE ------------------------------
+/
 
-create view APOGEE.SYGAL_ROLE as
+create or replace view SYGAL_ROLE as
   select
     'apogee' as source_id, -- Id de la source
     COD_ROJ as id,
     LIB_ROJ,
     LIC_ROJ
-  from role_jury;
-
-
------------------------------ DOCTORANT ------------------------------
+  from role_jury
+/
 
-create view APOGEE.SYGAL_DOCTORANT as
+create or replace view SYGAL_DOCTORANT as
   select distinct
     'apogee' as source_id, -- Id de la source
     ind.cod_etu                                         as id,            -- Identifiant du doctorant
@@ -209,13 +190,10 @@ create view APOGEE.SYGAL_DOCTORANT as
         and dip.cod_tpd_etb     in ( '39', '40' )
         and tpd.eta_ths_hdr_drt =  'T'  -- Inscription en these
         and tpd.tem_sante       =  'N'  -- Exclusion des theses d exercice
-        and cod_etu is not null         -- oui, oui, ça arrive
-;
+        and cod_etu is not null
+/
 
-
------------------------------ THESE ------------------------------
-
-create view APOGEE.SYGAL_THESE as
+create or replace view SYGAL_THESE as
   with inscription_administrative as (
       select
         iae.cod_ind,
@@ -377,12 +355,9 @@ create view APOGEE.SYGAL_THESE as
     left join langue                lng on lng.cod_lng = ths.cod_lng
   where ths.cod_ths_trv = '1'     --  Exclusion des travaux
         and anc.cod_dip_anc is null
-;
-
-
------------------------------ ACTEUR ------------------------------
+/
 
-create view APOGEE.SYGAL_ACTEUR as
+create or replace view SYGAL_ACTEUR as
   with acteur as (
     select
       ths.cod_ths,
@@ -439,20 +414,20 @@ create view APOGEE.SYGAL_ACTEUR as
   )
   select distinct
     rownum                                                                        as id,
-    'apogee'                                                                      as source_id,     -- Id de la source
-    act.cod_ths                                                                   as these_id,      -- Identifiant de la these
-    roj.cod_roj                                                                   as role_id,       -- Identifiant du rôle
-    cast(act.cod_roj_compl as varchar2(1 char))                                   as cod_roj_compl, -- Code du complement sur le role dans le jury
-    rjc.lib_roj                                                                   as lib_roj_compl, -- Libelle du complement sur le role dans le jury
+    'apogee'                                                                      as source_id,        -- Id de la source
+    act.cod_ths                                                                   as these_id,         -- Identifiant de la these
+    roj.cod_roj                                                                   as role_id,          -- Identifiant du rôle
+    cast(act.cod_roj_compl as varchar2(1 char))                                   as cod_roj_compl,    -- Code du complement sur le role dans le jury
+    rjc.lib_roj                                                                   as lib_roj_compl,    -- Libelle du complement sur le role dans le jury
     coalesce(regexp_replace(per.num_dos_har_per,'[^0-9]',''), 'COD_PER_'||act.cod_per) as individu_id, -- Code Harpege ou Apogee de l acteur
-    act.cod_etb,                                                                                    -- Code etablissement
-    etb.lib_etb,                                                                                    -- Libelle etablissement
-    case when etb.cod_dep = '099' then etb.cod_pay_adr_etb else null end          as cod_pay_etb,   -- Code pays etablissement
-    case when etb.cod_dep = '099' then pay.lib_pay         else null end          as lib_pay_etb,   -- Libelle pays etablissement
-    cps.cod_cps,                                                                                    -- Code du corps d'appartenance
-    cps.lib_cps,                                                                                    -- Libelle du corps d'appartenance
-    per.tem_hab_rch_per,                                                                            -- HDR (O/N)
-    act.tem_rap_recu                                                                                -- Rapport recu (O/N)
+    nvl ( act.cod_etb, per.cod_etb ),                                                                  -- Code etablissement
+    etb.lib_etb,                                                                                       -- Libelle etablissement
+    case when etb.cod_dep = '099' then etb.cod_pay_adr_etb else null end          as cod_pay_etb,      -- Code pays etablissement
+    case when etb.cod_dep = '099' then pay.lib_pay         else null end          as lib_pay_etb,      -- Libelle pays etablissement
+    cps.cod_cps,                                                                                       -- Code du corps d'appartenance
+    cps.lib_cps,                                                                                       -- Libelle du corps d'appartenance
+    per.tem_hab_rch_per,                                                                               -- HDR (O/N)
+    act.tem_rap_recu                                                                                   -- Rapport recu (O/N)
   from acteur               act
     join role_jury            roj on roj.cod_roj = act.cod_roj
     join personnel            per on per.cod_per = act.cod_per
@@ -460,12 +435,9 @@ create view APOGEE.SYGAL_ACTEUR as
     left join etablissement   etb on etb.cod_etb = nvl ( act.cod_etb, per.cod_etb )
     left join pays            pay on pay.cod_pay = etb.cod_pay_adr_etb
     left join role_jury       rjc on rjc.cod_roj = act.cod_roj_compl
-;
+/
 
-
------------------------------ STRUCTURE ------------------------------
-
-create view APOGEE.SYGAL_STRUCTURE as
+create or replace view SYGAL_STRUCTURE as
   select
     'apogee' as source_id,                  -- Id de la source
     'ecole-doctorale' as TYPE_STRUCTURE_ID, -- Type de structure
@@ -487,7 +459,7 @@ create view APOGEE.SYGAL_STRUCTURE as
     null as libelle_pays                         --
   from equipe_rch  eqr
   union
-  -- Etablissements
+  -- Etablissements de cotutelle
   select
     'apogee' as source_id,                -- Id de la source
     'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
@@ -500,34 +472,101 @@ create view APOGEE.SYGAL_STRUCTURE as
     join these_hdr_sout ths on ths.cod_etb = etb.cod_etb and -- établissements de cotutelle
                                ths.cod_ths_trv = '1' -- travaux exclus
     left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
-;
-
-
------------------------------ ECOLE_DOCT ------------------------------
+  union
+  -- Etablissements des directeurs de theses
+  select
+    'apogee' as source_id,                -- Id de la source
+    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
+    etb.cod_etb as id,                    -- Id unique
+    null as sigle,                        --
+    etb.lib_etb as libelle,               -- Libelle
+    pay.cod_pay as code_pays,             -- Code pays
+    pay.lib_pay as libelle_pays           -- Libelle pays
+  from etablissement etb
+    join these_hdr_sout ths on ths.cod_etb_dir = etb.cod_etb and -- établissements des directeurs de theses
+                               ths.cod_ths_trv = '1' -- travaux exclus
+    left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
+  union
+  -- Etablissements des co-directeurs de theses
+  select
+    'apogee' as source_id,                -- Id de la source
+    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
+    etb.cod_etb as id,                    -- Id unique
+    null as sigle,                        --
+    etb.lib_etb as libelle,               -- Libelle
+    pay.cod_pay as code_pays,             -- Code pays
+    pay.lib_pay as libelle_pays           -- Libelle pays
+  from etablissement etb
+    join these_hdr_sout ths on ths.cod_etb_cdr = etb.cod_etb and -- établissements des co-directeurs de theses
+                               ths.cod_ths_trv = '1' -- travaux exclus
+    left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
+  union
+  -- Etablissements des seconds co-directeurs de theses
+  select
+    'apogee' as source_id,                -- Id de la source
+    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
+    etb.cod_etb as id,                    -- Id unique
+    null as sigle,                        --
+    etb.lib_etb as libelle,               -- Libelle
+    pay.cod_pay as code_pays,             -- Code pays
+    pay.lib_pay as libelle_pays           -- Libelle pays
+  from etablissement etb
+    join these_hdr_sout ths on ths.cod_etb_cdr2 = etb.cod_etb and -- établissements des seconds co-directeurs de theses
+                               ths.cod_ths_trv = '1' -- travaux exclus
+    left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
+  union
+  -- Etablissements des rapporteurs
+  select
+    'apogee' as source_id,                -- Id de la source
+    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
+    etb.cod_etb as id,                    -- Id unique
+    null as sigle,                        --
+    etb.lib_etb as libelle,               -- Libelle
+    pay.cod_pay as code_pays,             -- Code pays
+    pay.lib_pay as libelle_pays           -- Libelle pays
+  from etablissement etb
+    join personnel   per on per.cod_etb = etb.cod_etb -- établissements des rapporteurs
+    join ths_rap_sou trs on trs.cod_per = per.cod_per
+    join these_hdr_sout ths on ths.cod_ths = trs.cod_ths and
+                               ths.cod_ths_trv = '1' -- travaux exclus
+    left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
+  where per.tem_ext_int_per = 'X' -- personnels exterieurs uniquement
+  union
+  -- Etablissements des membres du jury
+  select
+    'apogee' as source_id,                -- Id de la source
+    'etablissement' as TYPE_STRUCTURE_ID, -- Type de structure
+    etb.cod_etb as id,                    -- Id unique
+    null as sigle,                        --
+    etb.lib_etb as libelle,               -- Libelle
+    pay.cod_pay as code_pays,             -- Code pays
+    pay.lib_pay as libelle_pays           -- Libelle pays
+  from etablissement etb
+    join personnel   per on per.cod_etb = etb.cod_etb -- établissements des membres du jury
+    join ths_jur_per tjp on tjp.cod_per = per.cod_per
+    join these_hdr_sout ths on ths.cod_ths = tjp.cod_ths and
+                               ths.cod_ths_trv = '1' -- travaux exclus
+    left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
+  where per.tem_ext_int_per = 'X'
+/
 
-create view APOGEE.SYGAL_ECOLE_DOCT as
+create or replace view SYGAL_ECOLE_DOCT as
   select distinct
     'apogee' as source_id,            -- Id de la source
     edo.cod_nat_edo as structure_id,  -- Id de la structure
     edo.cod_nat_edo as id             -- Id ecole doctorale
   from ecole_doctorale edo
-;
-
-
------------------------------ UNITE_RECH ------------------------------
+/
 
-create view APOGEE.SYGAL_UNITE_RECH as
+create or replace view SYGAL_UNITE_RECH as
   select distinct
     'apogee' as source_id,        -- Id de la source
     eqr.cod_eqr as structure_id,  -- Id de la structure
     eqr.cod_eqr as id             -- Id unite de recherche
   from equipe_rch eqr
-;
-
-
------------------------------ ETABLISSEMENT ------------------------------
+/
 
-create view APOGEE.SYGAL_ETABLISSEMENT as
+create or replace view SYGAL_ETABLISSEMENT as
   select distinct
     'apogee' as source_id,        -- Id de la source
     etb.cod_etb as structure_id,  -- Id de la structure
@@ -537,16 +576,65 @@ create view APOGEE.SYGAL_ETABLISSEMENT as
     join these_hdr_sout ths on ths.cod_etb = etb.cod_etb and -- établissements de cotutelle
                                ths.cod_ths_trv = '1' -- travaux exclus
     left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
-;
-
-
-
----- Supression des vues mal nommées !
-
-drop view APOGEE.OBJECTH_SOURCE    ;
-drop view APOGEE.OBJECTH_VARIABLE  ;
-drop view APOGEE.OBJECTH_INDIVIDU  ;
-drop view APOGEE.OBJECTH_ROLE      ;
-drop view APOGEE.OBJECTH_DOCTORANT ;
-drop view APOGEE.OBJECTH_THESE     ;
-drop view APOGEE.OBJECTH_ACTEUR    ;
+  union
+  -- Etablissements des directeurs de theses
+  select
+    'apogee' as source_id,        -- Id de la source
+    etb.cod_etb as structure_id,  -- Id de la structure
+    etb.cod_etb as id,            -- Identifiant unique établissement
+    etb.cod_etb as code           -- Code unique établissement
+  from etablissement etb
+    join these_hdr_sout ths on ths.cod_etb_dir = etb.cod_etb and -- établissements des directeurs de theses
+                               ths.cod_ths_trv = '1' -- travaux exclus
+    left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
+  union
+  -- Etablissements des co-directeurs de theses
+  select
+    'apogee' as source_id,        -- Id de la source
+    etb.cod_etb as structure_id,  -- Id de la structure
+    etb.cod_etb as id,            -- Identifiant unique établissement
+    etb.cod_etb as code           -- Code unique établissement
+  from etablissement etb
+    join these_hdr_sout ths on ths.cod_etb_cdr = etb.cod_etb and -- établissements des co-directeurs de theses
+                               ths.cod_ths_trv = '1' -- travaux exclus
+    left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
+  union
+  -- Etablissements des seconds co-directeurs de theses
+  select
+    'apogee' as source_id,        -- Id de la source
+    etb.cod_etb as structure_id,  -- Id de la structure
+    etb.cod_etb as id,            -- Identifiant unique établissement
+    etb.cod_etb as code           -- Code unique établissement
+  from etablissement etb
+    join these_hdr_sout ths on ths.cod_etb_cdr2 = etb.cod_etb and -- établissements des seconds co-directeurs de theses
+                               ths.cod_ths_trv = '1' -- travaux exclus
+    left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
+  union
+  -- Etablissements des rapporteurs
+  select
+    'apogee' as source_id,        -- Id de la source
+    etb.cod_etb as structure_id,  -- Id de la structure
+    etb.cod_etb as id,            -- Identifiant unique établissement
+    etb.cod_etb as code           -- Code unique établissement
+  from etablissement etb
+    join personnel   per on per.cod_etb = etb.cod_etb -- établissements des rapporteurs
+    join ths_rap_sou trs on trs.cod_per = per.cod_per
+    join these_hdr_sout ths on ths.cod_ths = trs.cod_ths and
+                               ths.cod_ths_trv = '1' -- travaux exclus
+    left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
+  where per.tem_ext_int_per = 'X' -- personnels exterieurs uniquement
+  union
+  -- Etablissements des membres du jury
+  select
+    'apogee' as source_id,        -- Id de la source
+    etb.cod_etb as structure_id,  -- Id de la structure
+    etb.cod_etb as id,            -- Identifiant unique établissement
+    etb.cod_etb as code           -- Code unique établissement
+  from etablissement etb
+    join personnel   per on per.cod_etb = etb.cod_etb -- établissements des membres du jury
+    join ths_jur_per tjp on tjp.cod_per = per.cod_per
+    join these_hdr_sout ths on ths.cod_ths = tjp.cod_ths and
+                               ths.cod_ths_trv = '1' -- travaux exclus
+    left join pays pay on pay.cod_pay = etb.cod_pay_adr_etb
+  where per.tem_ext_int_per = 'X'
+/
diff --git a/data/sql/vues-physalis.sql b/data/sql/vues-physalis.sql
index 7ee851d..d9645b2 100644
--- a/data/sql/vues-physalis.sql
+++ b/data/sql/vues-physalis.sql
@@ -6,38 +6,55 @@
 -- Web Service d'import de données
 -- -------------------------------
 --
--- Vues PHYSALIS : INSA Rouen
+-- Vues APOGEE spécifiques à INSA Rouen.
 --
 
-
--- Changement de préfixe des vues existantes :
-
-rename OBJECTH_SOURCE     to SYGAL_SOURCE    ;
-rename OBJECTH_VARIABLE   to SYGAL_VARIABLE  ;
-rename OBJECTH_INDIVIDU   to SYGAL_INDIVIDU  ;
-rename OBJECTH_ROLE       to SYGAL_ROLE      ;
-rename OBJECTH_DOCTORANT  to SYGAL_DOCTORANT ;
-rename OBJECTH_THESE      to SYGAL_THESE     ;
-rename OBJECTH_ACTEUR     to SYGAL_ACTEUR    ;
-
-
-
--- 4 nouvelles vues à écrire :
-
 /*
-create view SYGAL_STRUCTURE as
-...
-;
-
-create view SYGAL_ECOLE_DOCT as
-...
-;
-
-create view SYGAL_UNITE_RECH as
-...
-;
-
-create view SYGAL_ETABLISSEMENT as
-...
-;
-*/
+create or replace view SYGAL_VARIABLE_MANU as
+  select ...
+/
+
+create or replace view SYGAL_VARIABLE as
+  select ...
+/
+
+create or replace view SYGAL_SOURCE as
+  select ...
+/
+
+create or replace view SYGAL_INDIVIDU as
+  select ...
+/
+
+create or replace view SYGAL_ROLE as
+  select ...
+/
+
+create or replace view SYGAL_DOCTORANT as
+  select ...
+/
+
+create or replace view SYGAL_THESE as
+  select ...
+/
+
+create or replace view SYGAL_ACTEUR as
+  select ...
+/
+
+create or replace view SYGAL_STRUCTURE as
+  select ...
+/
+
+create or replace view SYGAL_ECOLE_DOCT as
+  select ...
+/
+
+create or replace view SYGAL_UNITE_RECH as
+  select ...
+/
+
+create or replace view SYGAL_ETABLISSEMENT as
+  select ...
+/
+*/
\ No newline at end of file
diff --git a/doc/release-notes/v1.1.0.md b/doc/release-notes/v1.1.0.md
new file mode 100644
index 0000000..8939104
--- /dev/null
+++ b/doc/release-notes/v1.1.0.md
@@ -0,0 +1,22 @@
+# v1.1.0
+
+## Mise à jour des vues sources
+
+### Pour ceux qui ont Apogée
+
+1. Récupérez le script `data/sql/vues-apogee-{etab}.sql` où `{etab}` correspond à votre établissement, 
+personnalisez la requête pour votre établissement puis exécutez le script.
+
+2. Exécutez ensuite le script [`data/sql/vues-apogee.sql`](data/sql/vues-apogee.sql).
+
+**Important!** Pour mettre à jour sur le dépôt git le script `data/sql/vues-apogee-{etab}.sql` de votre établissement,
+merci de faire un "merge request" comme suit :
+- Ouvrez dans gitlab le script `data/sql/vues-apogee-{etab}.sql` correspond à votre établissement, 
+- Cliquez sur le bouton `Edit` puis sur `Fork`.
+- Editez le script.
+- Cliquez sur `Commit changes` puis sur `Submit merge request`.
+
+### Pour ceux qui ont Physalis
+
+Les scripts des vues ne sont pas encore écrites. 
+:-(
diff --git a/doc/vues-sources.md b/doc/vues-sources.md
index 9c97a15..928399b 100644
--- a/doc/vues-sources.md
+++ b/doc/vues-sources.md
@@ -9,17 +9,17 @@ Elle interroge soit la base de données Apogée (Caen, Le Havre, Rouen), soit Ph
 
 Il existe une vue par "service" :
 
-    Service "acteur"     : vue SYGAL_ACTEUR
-    Service "doctorant"  : vue SYGAL_DOCTORANT
-    Service "ecole_doct" : vue SYGAL_ECOLE_DOCT
-    Service "etab"       : vue SYGAL_ETAB
-    Service "individu"   : vue SYGAL_INDIVIDU
-    Service "role"       : vue SYGAL_ROLE
-    Service "source"     : vue SYGAL_SOURCE
-    Service "structure"  : vue SYGAL_STRUCTURE
-    Service "these"      : vue SYGAL_THESE
-    Service "unite_rech" : vue SYGAL_UNITE_RECH
-    Service "variable"   : vue SYGAL_VARIABLE
+    Service "acteur"            : vue SYGAL_ACTEUR
+    Service "doctorant"         : vue SYGAL_DOCTORANT
+    Service "ecole-doctorale"   : vue SYGAL_ECOLE_DOCT
+    Service "etablissement"     : vue SYGAL_ETAB
+    Service "individu"          : vue SYGAL_INDIVIDU
+    Service "role"              : vue SYGAL_ROLE
+    Service "source"            : vue SYGAL_SOURCE
+    Service "structure"         : vue SYGAL_STRUCTURE
+    Service "these"             : vue SYGAL_THESE
+    Service "unite-recherche"   : vue SYGAL_UNITE_RECH
+    Service "variable"          : vue SYGAL_VARIABLE
   
 ## Colonnes
 
-- 
GitLab