diff --git "a/data/D\303\251ploiement/Connecteurs/Apogee-OSE-calculCharges.xls" "b/data/D\303\251ploiement/Connecteurs/Apogee-OSE-calculCharges.xls"
new file mode 100644
index 0000000000000000000000000000000000000000..0c7b85a978d59549b88da907a4777091faaac0f3
Binary files /dev/null and "b/data/D\303\251ploiement/Connecteurs/Apogee-OSE-calculCharges.xls" differ
diff --git "a/data/D\303\251ploiement/Connecteurs/Apogee-OSE-createTables.sql" "b/data/D\303\251ploiement/Connecteurs/Apogee-OSE-createTables.sql"
new file mode 100644
index 0000000000000000000000000000000000000000..a01ae5d9d1ea2a199d15ece6c813cff0bce1e707
--- /dev/null
+++ "b/data/D\303\251ploiement/Connecteurs/Apogee-OSE-createTables.sql"
@@ -0,0 +1,261 @@
+--
+-- CREATION ET INITIALISATION DES TABLES POUR IMPORTATION DANS OSE
+-- Auteur : Bruno Bernard bruno.bernard@unicaen.fr
+--
+--
+-- Groupes de types de formations a distinguer dans OSE
+-- Ce sont ces regroupements de types de formations qui serviront de filtres dans les interfaces utilisateurs
+--
+create table ose_groupe_type_formation (
+  libelle_long                   varchar2(60)            not null,
+  libelle_court                  varchar2(20)            not null,
+  ordre                          number(2)    default 99 not null, -- Ordre de classement des groupes de types de formation dans les interfaces utilisateurs
+  pertinence_niveau              number(1)    default  0 not null, -- Est-il pertinent de suffixer le libelle court par le niveau relatif de la VET dans le diplome?
+  source_code                    varchar2(20)            not null,
+  check (pertinence_niveau in (0, 1)),
+  primary key (source_code)
+  )
+;
+grant select on ose_groupe_type_formation to ose
+;
+create public synonym ose_groupe_type_formation for apogee.ose_groupe_type_formation
+;
+--
+-- Types de formations
+-- Table de correspondance entre les types de formations Apogee et les groupes de types de formations dans OSE
+--
+create table ose_type_formation (
+  libelle_long                   varchar2(40)            not null,
+  libelle_court                  varchar2(20)            not null,
+  z_groupe_id                    varchar2(20)            not null,
+  source_code                    varchar2(2)             not null,
+  primary key (source_code),
+  constraint ose_tyf_fk_groupe_type_form foreign key (z_groupe_id) references ose_groupe_type_formation (source_code),
+  constraint ose_tyf_fk_typ_diplome foreign key (source_code) references typ_diplome (cod_tpd_etb)
+  )
+;
+grant select on ose_type_formation to ose
+;
+create public synonym ose_type_formation for apogee.ose_type_formation
+;
+--
+-- Etapes
+-- Une etape OSE est assimilable a une VET Apogee
+--
+create table ose_etape (
+  annee_id                       varchar2(4)             not null,
+  libelle                        varchar2(120)           not null,
+  libelle_court                  varchar2(25)            not null,
+  z_type_formation_id            varchar2(20)            not null,
+  niveau                         number(2),
+  z_structure_id                 varchar2(20)            not null,
+  source_code                    varchar2(20)            not null,
+  specifique_echanges            number(1)    default  0 not null, -- Cette etape est-elle dediee aux echanges?
+  domaine_fonctionnel            varchar2(20)            not null,
+  FI                             number(1)    default  1 not null,
+  FA                             number(1)    default  0 not null,
+  FC                             number(1)    default  0 not null,
+  cod_etp                        varchar2(6)             not null,
+  cod_vrs_vet                    number(3)               not null,
+  id                             varchar2(20)            not null,
+  check (specifique_echanges in (0, 1)),
+  check (FI + FA + FC > 0),
+  primary key (id),
+  constraint ose_etp_fk_annee foreign key (annee_id) references annee_uni (cod_anu),
+  constraint ose_etp_fk_type_formation foreign key (z_type_formation_id) references ose_type_formation (source_code)
+  )
+;
+grant select on ose_etape to ose
+;
+create public synonym ose_etape for apogee.ose_etape
+;
+--
+-- Chemins pedagogiques
+-- Relations entre les etapes et les elements pedagogiques les plus fins
+--
+create table ose_chemin_pedagogique (
+  annee_id                       varchar2(4)             not null,
+  z_element_pedagogique_id       varchar2(20)            not null,
+  z_etape_id                     varchar2(20)            not null,
+  source_code                    varchar2(40)            not null,
+  z_periode_id                   varchar2(20),
+  taux_foad                      number(1)    default  0 not null,
+  id                             varchar2(40)            not null,
+  check (z_periode_id in ('S1', 'S2')),
+  check (taux_foad in (0, 1)),
+  primary key (id),
+  constraint ose_chp_fk_annee foreign key (annee_id) references annee_uni (cod_anu)
+  )
+;
+grant select on ose_chemin_pedagogique to ose
+;
+create public synonym ose_chemin_pedagogique for apogee.ose_chemin_pedagogique
+;
+--
+-- Elements pedagogiques
+-- Un element pedagogique OSE est assimilable a un element pedagogique feuille d une structure d enseignements Apogee
+--
+create table ose_element_pedagogique (
+  annee_id                       varchar2(4)             not null,
+  libelle                        varchar2(60)            not null,
+  z_etape_id                     varchar2(20)            not null,
+  z_structure_id                 varchar2(20)            not null,
+  z_periode_id                   varchar2(20),
+  taux_foad                      number(1)    default  0 not null,
+  source_code                    varchar2(20)            not null,
+  z_discipline_id                varchar2(4),
+  FI                             number(1)    default  0 not null,
+  FA                             number(1)    default  0 not null,
+  FC                             number(1)    default  0 not null,
+  id                             varchar2(20)            not null,
+  check (z_periode_id in ('S1', 'S2')),
+  check (taux_foad in (0, 1)),
+  check (FI in (0, 1)),
+  check (FA in (0, 1)),
+  check (FC in (0, 1)),
+  primary key (id),
+  constraint ose_elp_fk_annee foreign key (annee_id) references annee_uni (cod_anu)
+  )
+;
+grant select on ose_element_pedagogique to ose
+;
+create public synonym ose_element_pedagogique for apogee.ose_element_pedagogique
+;
+--
+-- Effectifs par annee par element pedagogique et par regime d inscription
+--
+create table ose_element_effectifs (
+  z_element_pedagogique_id       varchar2(20)            not null,
+  annee_id                       varchar2(4)             not null,
+  effectif_FI                    number(5)    default  0 not null,
+  effectif_FA                    number(5)    default  0 not null,
+  effectif_FC                    number(5)    default  0 not null,
+  primary key (z_element_pedagogique_id, annee_id),
+  constraint ose_eff_fk_annee foreign key (annee_id) references annee_uni (cod_anu)
+  )
+;
+grant select on ose_element_effectifs to ose
+;
+create public synonym ose_element_effectifs for apogee.ose_element_effectifs
+;
+--
+-- Table recursive de l offre de formation
+--
+create table ose_offre_de_formation (
+  annee_id                       varchar2(4)             not null,
+  noeud_sup_id                   varchar2(20),
+  structure_sup_id               varchar2(20),
+  choix_minimum                  number(2),
+  choix_maximum                  number(2),
+  liste_id                       varchar2(20),
+  libelle_liste                  varchar2(120),
+  libelle_court_liste            varchar2(25),
+  noeud_inf_id                   varchar2(20)            not null,
+  structure_inf_id               varchar2(20),
+  libelle                        varchar2(120)           not null,
+  libelle_court                  varchar2(25)            not null,
+  nature                         varchar2(20)            not null,
+  periode                        varchar2(20),
+  taux_foad                      number(1)     default 0 not null,
+  check (periode   in ('S1', 'S2')),
+  check (taux_foad in (0, 1)),
+  constraint ose_odf_uk       unique      (annee_id, noeud_inf_id, liste_id, noeud_sup_id),
+  constraint ose_odf_fk_annee foreign key (annee_id) references annee_uni (cod_anu)
+  )
+;
+grant select on ose_offre_de_formation to ose
+;
+create public synonym ose_offre_de_formation for apogee.ose_offre_de_formation
+;
+--
+-- Noeuds de l arbre offre de formation
+--
+create view ose_noeud as
+select
+  annee_id,
+  libelle,
+  libelle_court,
+  noeud_inf_id                                                       as code,
+  0                                                                  as liste,
+  case when nature = 'etape' then noeud_inf_id else null         end as z_etape_id,
+  case when nature = 'etape' then null         else noeud_inf_id end as z_element_pedagogique_id,
+  annee_id || '_' || noeud_inf_id                                    as z_source_code,
+  structure_inf_id                                                   as z_structure_id
+from ose_offre_de_formation
+union
+select
+  annee_id,
+  libelle_liste                                                      as libelle,
+  libelle_court_liste                                                as libelle_court,
+  liste_id                                                           as code,
+  1                                                                  as liste,
+  null                                                               as z_etape_id,
+  null                                                               as z_element_pedagogique_id,
+  annee_id || '_' || liste_id                                        as z_source_code,
+  min ( structure_sup_id )                                           as z_structure_id
+from ose_offre_de_formation
+where liste_id is not null
+group by
+  annee_id,
+  libelle_liste,
+  libelle_court_liste,
+  liste_id
+;
+grant select on ose_noeud to ose
+;
+create public synonym ose_noeud for apogee.ose_noeud
+;
+--
+-- Liens entre les noeuds de l arbre offre de formation
+--
+create view ose_lien as
+select
+  annee_id,
+  annee_id || '_' || noeud_sup_id                                    as noeud_sup_id,
+  annee_id || '_' || liste_id                                        as noeud_inf_id,
+  choix_minimum,
+  choix_maximum,
+  annee_id || '_' || noeud_sup_id || '_' || liste_id                 as z_source_code,
+  structure_sup_id                                                   as z_structure_id
+from ose_offre_de_formation
+where liste_id is not null
+union
+select
+  annee_id,
+  annee_id || '_' || liste_id                                        as noeud_sup_id,
+  annee_id || '_' || noeud_inf_id                                    as noeud_inf_id,
+  null                                                               as choix_minimum,
+  null                                                               as choix_maximum,
+  annee_id || '_' || liste_id || '_' || noeud_inf_id                 as z_source_code,
+  min ( structure_sup_id )                                           as z_structure_id
+from ose_offre_de_formation
+where liste_id is not null
+group by
+  annee_id,
+  liste_id,
+  noeud_inf_id
+;
+grant select on ose_lien to ose
+;
+create public synonym ose_lien for apogee.ose_lien
+;
+--
+-- Volumes horaires et nombre de groupes ouverts pour enseignement, par type de groupe
+--
+create table ose_volume_horaire_ens (
+  annee_id                       varchar2(4)             not null,
+  z_element_pedagogique_id       varchar2(20)            not null,
+  z_type_intervention_id         varchar2(20)            not null,
+  heures                         number(6,2),
+  source_code                    varchar2(20)            not null,
+  id                             varchar2(20)            not null,
+  groupes                        number(6),
+  primary key (id),
+  constraint ose_ovh_fk_annee foreign key (annee_id) references annee_uni (cod_anu)
+  )
+;
+grant select on ose_volume_horaire_ens to ose
+;
+create public synonym ose_volume_horaire_ens for apogee.ose_volume_horaire_ens
+;
+
diff --git "a/data/D\303\251ploiement/Connecteurs/Apogee-OSE-export.sql" "b/data/D\303\251ploiement/Connecteurs/Apogee-OSE-export.sql"
new file mode 100644
index 0000000000000000000000000000000000000000..284375e472d4b10ca8d080e8a56d14455fdacb68
--- /dev/null
+++ "b/data/D\303\251ploiement/Connecteurs/Apogee-OSE-export.sql"
@@ -0,0 +1,583 @@
+--
+-- ALIMENTATION DES TABLES EXPLOITEES PAR LA SYNCHRONISATION APOGEE -> OSE
+-- Auteur : Bruno Bernard bruno.bernard@unicaen.fr
+--
+-- Reinitialisation des tables
+--
+delete from ose_volume_horaire_ens
+;
+delete from ose_element_pedagogique
+;
+delete from ose_chemin_pedagogique
+;
+delete from ose_offre_de_formation
+;
+delete from ose_etape
+;
+delete from ose_type_formation
+;
+delete from ose_groupe_type_formation
+;
+--
+-- Groupes de types de formations a distinguer dans OSE
+-- Ce sont ces regroupements de types de formations qui serviront de filtres dans les interfaces utilisateurs
+--
+-- A : Libelle long
+-- B : Le libelle court, eventuellement suffixe par le niveau relatif de la VET, servira a filtrer les formations (exemples L1 L2 L3 LPro ...)
+-- C : Ordre de classement des groupes de types de formation dans les interfaces utilisateurs
+-- D : Est-il pertinent de suffixer le libelle court par le niveau relatif de la VET dans le diplome? (0/1)
+-- E : Identifiant du groupe de types de formations
+--                                             A                                      B             C  D  E
+insert into ose_groupe_type_formation values ('Dipl�me Universitaire de Technologie','DUT'         ,10,1,'DUT'       );
+insert into ose_groupe_type_formation values ('PACES'                               ,'PACES'       ,21,0,'PACES'     );
+insert into ose_groupe_type_formation values ('Etudes de Sant�'                     ,'Sant�'       ,22,1,'SANTE'     );
+insert into ose_groupe_type_formation values ('DES'                                 ,'DES'         ,25,0,'DES'       );
+insert into ose_groupe_type_formation values ('DESC'                                ,'DESC'        ,26,0,'DESC'      );
+insert into ose_groupe_type_formation values ('Licence'                             ,'L'           ,30,1,'L'         );
+insert into ose_groupe_type_formation values ('Licence professionnelle'             ,'LPro'        ,35,0,'LP'        );
+insert into ose_groupe_type_formation values ('Master'                              ,'M'           ,40,1,'M'         );
+insert into ose_groupe_type_formation values ('Dipl�me d''ing�nieur'                ,'Ing�nieur'   ,45,1,'ING'       );
+insert into ose_groupe_type_formation values ('Dipl�me d''universit�'               ,'DU'          ,60,0,'DU'        );
+insert into ose_groupe_type_formation values ('Capacit�'                            ,'Capacit�'    ,70,0,'CAPA'      );
+insert into ose_groupe_type_formation values ('Orthophonie'                         ,'Orthophonie' ,71,0,'ORTHO'     );
+insert into ose_groupe_type_formation values ('Ma�eutique'                          ,'Ma�eutique'  ,72,0,'MAIEUTIQUE');
+insert into ose_groupe_type_formation values ('Autre formation'                     ,'Autre'       ,99,0,'AUTRE'     );
+--
+-- Types de formations
+-- Table de correspondance entre les types de formations Apogee et les groupes de types de formations dans OSE
+--
+insert into ose_type_formation
+with tpd as (
+  select
+    lib_tpd                                    as libelle_long,  -- Libelle long Apogee
+    lic_tpd                                    as libelle_court, -- Libelle court Apogee
+    case cod_tpd_etb
+      when '15' then 'DUT'
+      when '16' then 'DUT'
+      when 'M1' then 'PACES'
+      when 'M2' then 'SANTE'
+      when '87' then 'SANTE'
+      when '88' then 'SANTE'
+      when '43' then 'SANTE'
+      when '57' then 'DES'
+      when '55' then 'DES'
+      when '65' then 'DESC'
+      when '23' then 'L'
+      when 'AL' then 'L'
+      when 'DL' then 'L'
+      when 'CP' then 'L'
+      when '22' then 'LP'
+      when '37' then 'M'
+      when '94' then 'M'
+      when 'MA' then 'M'
+      when 'DM' then 'M'
+      when '33' then 'ING'
+      when '68' then 'CAPA'
+      when '93' then 'ORTHO'
+      when '92' then 'MAIEUTIQUE'
+      else case when cod_tpd_sis between 'UA' and 'UF' then 'DU'
+        else 'AUTRE'
+        end
+      end                                      as z_groupe_id,   -- Id du groupe de types de formations
+    cod_tpd_etb                                as source_code    -- Code type de diplome Apogee
+  from typ_diplome
+  where tem_en_sve_tpd = 'O'
+  and eta_ths_hdr_drt is null                  -- Exclusion des theses et HDR (formations sans enseignement)
+  and cod_tpd_etb not in ('03')                -- Exclusion des auditeurs libres
+  )
+select tpd.*
+from tpd
+join ose_groupe_type_formation gtf on gtf.source_code = tpd.z_groupe_id
+;
+--
+-- Etapes
+-- Une etape OSE est assimilable a une VET Apogee
+--
+insert into ose_etape
+with
+  tmp as (
+    select
+      anu.cod_anu                              as annee_id,
+      nvl ( vet.lib_web_vet, etp.lib_etp )     as libelle,
+      etp.lic_etp                              as libelle_court,
+      min ( dip.cod_tpd_etb ) keep ( dense_rank first order by anu.cod_anu, vde.cod_etp, vde.cod_vrs_vet ) as z_type_formation_id,
+      -- Determiner si la notion de niveau a du sens pour le type de formation
+      min (
+        case gtf.pertinence_niveau
+          when 0 then null 
+          else vde.cod_sis_daa_min
+          end
+                            ) keep ( dense_rank first order by anu.cod_anu, vde.cod_etp, vde.cod_vrs_vet ) as niveau,
+      -- Identifiant de la structure dans le referentiel de l etablissement
+      str.cod_str                              as z_structure_id,
+      -- Reperer les formations dediees aux echanges
+      min (
+        case when dip.cod_tpd_etb in ( 'AL', 'DL', 'DM', 'MA', '83' ) then 1 else 0 end
+                            ) keep ( dense_rank first order by anu.cod_anu, vde.cod_etp, vde.cod_vrs_vet ) as specifique_echanges,
+      -- Determiner le domaine fonctionnel en fonction du type de diplome ou du niveau de la formation
+      min (
+        case
+          when tpd.cod_tpd_sis in ( 'CY', 'CZ' ) then 'D101'
+          when tpd.cod_tpd_sis in ( 'IC', 'FK' ) then 'D102'
+          when tpd.cod_nif     in ( 0, 7, 8, 9 ) then 'D101'
+          when tpd.cod_nif     in ( 6 )          then 'D103'
+          else case tpd.cod_nif - nvl ( vdi.dur_ann_vdi, least ( vde.cod_sis_daa_min, tpd.cod_nif ) ) + least ( vde.cod_sis_daa_min, tpd.cod_nif )
+            when 1                               then 'D101'
+            when 2                               then 'D101'
+            when 3                               then 'D101'
+            when 4                               then 'D102'
+            when 5                               then 'D102'
+            else                                      'D101'
+            end
+          end
+                            ) keep ( dense_rank first order by anu.cod_anu, vde.cod_etp, vde.cod_vrs_vet ) as domaine_fonctionnel,
+      vde.cod_etp,
+      vde.cod_vrs_vet
+    from annee_uni                 anu
+    join vdi_fractionner_vet       vde on anu.cod_anu between vde.daa_deb_rct_vet and vde.daa_fin_rct_vet
+    join etape                     etp on etp.cod_etp = vde.cod_etp
+    join diplome                   dip on dip.cod_dip = vde.cod_dip
+    join typ_diplome               tpd on tpd.cod_tpd_etb = dip.cod_tpd_etb
+    join version_diplome           vdi on vdi.cod_dip = vde.cod_dip and vdi.cod_vrs_vdi = vde.cod_vrs_vdi
+    join version_etape             vet on vet.cod_etp = vde.cod_etp and vet.cod_vrs_vet = vde.cod_vrs_vet
+    join composante                cmp on cmp.cod_cmp = vet.cod_cmp
+    join ucbn_composante_ldap      str on str.cod_cmp = cmp.cod_cmp         -- Recherche du code structure dans le referentiel des structures de l etablissement
+    join ose_type_formation        tyf on tyf.source_code = dip.cod_tpd_etb
+    join ose_groupe_type_formation gtf on gtf.source_code = tyf.z_groupe_id
+    where anu.cod_anu >= to_char ( add_months ( sysdate, -6 ), 'YYYY' )     -- Par convention l annee debute le 1er juillet
+    and cmp.cod_tpc! = 'EXT'                                                -- Exclusion des structures exterieures (IFSI, etc.)
+    group by
+      anu.cod_anu,
+      nvl ( vet.lib_web_vet, etp.lib_etp ),
+      etp.lic_etp,
+      str.cod_str,
+      vde.cod_etp,
+      vde.cod_vrs_vet
+  )
+select
+  tmp.annee_id,
+  tmp.libelle,
+  tmp.libelle_court,
+  tmp.z_type_formation_id,
+  tmp.niveau,
+  tmp.z_structure_id,
+  tmp.cod_etp || '_' || tmp.cod_vrs_vet                                as source_code,
+  least ( tmp.specifique_echanges, 1 )                                 as specifique_echanges,
+  min ( tmp.domaine_fonctionnel )                                      as domaine_fonctionnel,
+  -- Determiner en fonction des regimes d inscription si la VET est ouverte en FI, en FC et/ou en apprentissage
+  max ( case when rve.cod_rgi in ( '1', '3' )      then 1 else 0 end ) as FI,
+  max ( case when rve.cod_rgi in ( '4' )           then 1 else 0 end ) as FA,
+  max ( case when rve.cod_rgi in ( '2', '5', '6' ) then 1 else 0 end ) as FC,
+  tmp.cod_etp,
+  tmp.cod_vrs_vet,
+  tmp.annee_id || '_' || tmp.cod_etp || '_' || tmp.cod_vrs_vet         as id
+from                   tmp
+join rgi_autoriser_vet rve on rve.cod_etp = tmp.cod_etp and rve.cod_vrs_vet = tmp.cod_vrs_vet
+where rve.tem_en_sve_rve='O'
+group by
+  tmp.annee_id,
+  tmp.libelle,
+  tmp.libelle_court,
+  tmp.z_type_formation_id,
+  tmp.niveau,
+  tmp.z_structure_id,
+  tmp.cod_etp,
+  tmp.cod_vrs_vet,
+  tmp.specifique_echanges
+;
+--
+-- Table recursive de l offre de formation
+-- L offre de formation est reconstituee sous forme d arbre :
+--   en ignorant les elements feuilles de nature technique (elements miroirs, elements utiles uniquement pour le calcul de notes...)
+--   en remplacant les elements portes par les elements porteurs
+--   en recherchant dans la branche la periode ou le temoin A DISTANCE s il n est pas renseigne au niveau de l element pedagogique le plus fin
+--
+insert into ose_offre_de_formation
+with
+  annee as (
+    select distinct
+      etp.annee_id
+    from ose_etape etp
+  ),
+  -- Les elements portes sont ignores au benefice des elements porteurs
+  elements_portes as (
+    select
+      anu.annee_id,
+      epo.cod_elp_porte,
+      epo.cod_elp_porteur
+    from annee             anu
+    join elp_porteur_porte epo on epo.cod_anu = anu.annee_id
+  ),
+  relations as (
+    select
+      etp.annee_id,
+      null                                     as noeud_sup_id,
+      null                                     as structure_sup_id,
+      null                                     as choix_minimum,
+      null                                     as choix_maximum,
+      null                                     as liste_id,
+      null                                     as type_choix,
+      null                                     as libelle_liste,
+      null                                     as libelle_court_liste,
+      etp.cod_etp || '_' || etp.cod_vrs_vet    as noeud_inf_id,
+      etp.z_structure_id                       as structure_inf_id,
+      etp.libelle,
+      etp.libelle_court,
+      'etape'                                  as nature,
+      null                                     as cod_pel,
+      null                                     as tem_a_dis_elp
+    from ose_etape              etp
+    union select
+      etp.annee_id,
+      etp.cod_etp || '_' || etp.cod_vrs_vet    as noeud_sup_id,
+      etp.z_structure_id                       as structure_sup_id,
+      vrl.nbr_min_elp_obl_chx_vet              as choix_minimum,
+      vrl.nbr_max_elp_obl_chx_vet              as choix_maximum,
+      '{}' || vrl.cod_lse                      as liste_id,
+      lse.cod_typ_lse                          as type_choix,
+      lse.lib_lse                              as libelle_liste,
+      lse.lic_lse                              as libelle_court_liste,
+      elp.cod_elp                              as noeud_inf_id,
+      str.cod_str                              as structure_inf_id,
+      elp.lib_elp                              as libelle,
+      elp.lic_elp                              as libelle_court,
+      elp.cod_nel                              as nature,
+      -- Determiner les periodes qui relevent du semestre 1, du semestre 2, ou qui sont annuelles
+      case
+        when elp.cod_pel in ( 'S1', 'S3', 'S5', 'S7', 'S9' ) then 'S1'
+        when elp.cod_pel in ( 'S2', 'S4', 'S6', 'S8', '10' ) then 'S2'
+        else                                                      null
+        end                                    as cod_pel,
+      case
+        when elp.tem_a_dis_elp = 'O' then '1'
+        else                              null
+        end                                    as tem_a_dis_elp
+    from ose_etape              etp
+    join vet_regroupe_lse       vrl on vrl.cod_etp = etp.cod_etp and vrl.cod_vrs_vet = etp.cod_vrs_vet
+    join liste_elp              lse on lse.cod_lse = vrl.cod_lse
+    join lse_regroupe_elp       lre on lre.cod_lse = lse.cod_lse
+    left join elements_portes   epo on epo.annee_id = etp.annee_id and epo.cod_elp_porte = lre.cod_elp
+    join element_pedagogi       elp on elp.cod_elp = nvl ( epo.cod_elp_porteur, lre.cod_elp )
+    join composante             cmp on cmp.cod_cmp = elp.cod_cmp
+    join ucbn_composante_ldap   str on str.cod_cmp = cmp.cod_cmp -- Recherche du code structure dans le referentiel des structures de l etablissement
+    where sysdate between nvl ( vrl.dat_cre_rel_lse_vet, sysdate - 1 ) and nvl ( vrl.dat_frm_rel_lse_vet, sysdate + 1 )
+      and lse.eta_lse = 'O'
+      and elp.eta_elp = 'O'
+      and elp.tem_sus_elp = 'N'
+    union select
+      anu.annee_id,
+      erl.cod_elp                              as noeud_sup_id,
+      st1.cod_str                              as structure_sup_id,
+      erl.nbr_min_elp_obl_chx                  as choix_minimum,
+      erl.nbr_max_elp_obl_chx                  as choix_maximum,
+      '{}' || erl.cod_lse                      as liste_id,
+      lse.cod_typ_lse                          as type_choix,
+      lse.lib_lse                              as libelle_liste,
+      lse.lic_lse                              as libelle_court_liste,
+      elp.cod_elp                              as noeud_inf_id,
+      str.cod_str                              as structure_inf_id,
+      elp.lib_elp                              as libelle,
+      elp.lic_elp                              as libelle_court,
+      elp.cod_nel                              as nature,
+      case
+        when elp.cod_pel in ( 'S1', 'S3', 'S5', 'S7', 'S9' ) then 'S1'
+        when elp.cod_pel in ( 'S2', 'S4', 'S6', 'S8', '10' ) then 'S2'
+        else                                                      null
+        end                                    as cod_pel,
+      case
+        when elp.tem_a_dis_elp = 'O' then '1'
+        else                              null
+        end                                    as tem_a_dis_elp
+    from annee                  anu
+    cross join elp_regroupe_lse erl
+    join element_pedagogi       el1 on el1.cod_elp = erl.cod_elp
+    join composante             cm1 on cm1.cod_cmp = el1.cod_cmp
+    join ucbn_composante_ldap   st1 on st1.cod_cmp = cm1.cod_cmp
+    join liste_elp              lse on lse.cod_lse = erl.cod_lse
+    join lse_regroupe_elp       lre on lre.cod_lse = lse.cod_lse
+    left join elements_portes   epo on epo.annee_id = anu.annee_id and epo.cod_elp_porte = lre.cod_elp
+    join element_pedagogi       elp on elp.cod_elp = nvl ( epo.cod_elp_porteur, lre.cod_elp )
+    join composante             cmp on cmp.cod_cmp = elp.cod_cmp
+    join ucbn_composante_ldap   str on str.cod_cmp = cmp.cod_cmp
+    where sysdate between nvl ( erl.dat_cre_rel_lse_elp, sysdate - 1 ) and nvl ( erl.dat_frm_rel_lse_elp, sysdate + 1 )
+      and lse.eta_lse = 'O'
+      and elp.eta_elp = 'O'
+      and elp.tem_sus_elp = 'N'
+  ),
+  arbre_offre_de_formation as (
+    select
+      connect_by_root rel.annee_id             as annee_id,
+      rel.noeud_sup_id,
+      rel.structure_sup_id,
+      rel.choix_minimum,
+      rel.choix_maximum,
+      rel.liste_id,
+      rel.type_choix,
+      rel.libelle_liste,
+      rel.libelle_court_liste,
+      rel.noeud_inf_id,
+      rel.structure_inf_id,
+      rel.libelle,
+      rel.libelle_court,
+      rel.nature,
+      rtrim ( sys_connect_by_path ( case when rel.nature in ( 'CAL', 'MIR' ) then null else rel.noeud_inf_id end,  '>' ), '>' ) as chemin_noeud_inf_id,
+      rtrim ( sys_connect_by_path ( rel.cod_pel,       '>' ), '>' ) as chemin_periode,
+      rtrim ( sys_connect_by_path ( rel.tem_a_dis_elp, '>' ), '>' ) as chemin_taux_foad,
+      connect_by_isleaf                        as isleaf
+    from relations rel
+      start with rel.noeud_sup_id is null
+      connect by prior rel.annee_id = rel.annee_id and prior rel.noeud_inf_id = rel.noeud_sup_id
+  ),
+  branches_inutiles as (
+    select distinct
+      arb.annee_id,
+      arb.noeud_inf_id
+    from arbre_offre_de_formation arb
+    join arbre_offre_de_formation inu on inu.annee_id = arb.annee_id and inu.chemin_noeud_inf_id = arb.chemin_noeud_inf_id
+    where arb.nature in ( 'MIR', 'CAL' ) -- Exclusion des elements techniques (elements miroirs, elements utiles uniquement pour le calcul de notes...)
+      and arb.isleaf = 1
+      and inu.nature in ( 'MIR', 'CAL' )
+  ),
+  arbre_elague as (
+    select
+      arb.annee_id,
+      arb.noeud_sup_id,
+      arb.structure_sup_id,
+      arb.choix_minimum,
+      arb.choix_maximum,
+      arb.liste_id,
+      arb.type_choix,
+      arb.libelle_liste,
+      arb.libelle_court_liste,
+      arb.noeud_inf_id,
+      arb.structure_inf_id,
+      arb.libelle,
+      arb.libelle_court,
+      arb.nature,
+      substr ( arb.chemin_periode,   instr ( arb.chemin_periode,   '>', -1 ) + 1 ) as periode,
+      substr ( arb.chemin_taux_foad, instr ( arb.chemin_taux_foad, '>', -1 ) + 1 ) as taux_foad
+    from      arbre_offre_de_formation arb
+    left join branches_inutiles        inu on inu.annee_id = arb.annee_id and inu.noeud_inf_id = arb.noeud_inf_id
+    where inu.noeud_inf_id is null
+  ),
+  noeud_unique as (
+    select
+      arb.annee_id,
+      arb.noeud_inf_id,
+      arb.nature,
+      min ( arb.periode )                             as periode_min,
+      max ( arb.periode )                             as periode_max,
+      max ( to_number ( nvl ( arb.taux_foad, '0') ) ) as taux_foad
+    from arbre_elague arb
+    group by
+      arb.annee_id,
+      arb.noeud_inf_id,
+      arb.nature
+  )
+select distinct
+  arb.annee_id,
+  arb.noeud_sup_id,
+  arb.structure_sup_id,
+  case arb.type_choix
+    when 'O' then null
+    when 'F' then 0
+    when 'X' then arb.choix_minimum
+    end                                        as choix_minimum,
+  case arb.type_choix
+    when 'O' then null
+    when 'F' then arb.choix_maximum
+    when 'X' then arb.choix_maximum
+    end                                        as choix_maximum,
+  arb.liste_id,
+  arb.libelle_liste,
+  arb.libelle_court_liste,
+  arb.noeud_inf_id,
+  arb.structure_inf_id,
+  arb.libelle,
+  arb.libelle_court,
+  arb.nature,
+  case when uno.periode_min = uno.periode_max
+    then uno.periode_min
+    else null
+    end                                        as periode,
+  uno.taux_foad
+from arbre_elague arb
+join noeud_unique uno on uno.annee_id = arb.annee_id and uno.noeud_inf_id = arb.noeud_inf_id
+order by 1, 2, 6, 9
+;
+--
+-- Chemins pedagogiques
+-- Relations entre les etapes (racines) et les elements pedagogiques les plus fins (feuilles)
+--
+insert into ose_chemin_pedagogique
+with etape_enseignement as (
+  select distinct
+    connect_by_root annee_id                   as annee_id,
+    connect_by_root odf.noeud_sup_id           as noeud_sup_id,
+    odf.noeud_inf_id,
+    odf.periode,
+    odf.taux_foad
+  from ose_offre_de_formation odf
+  where connect_by_isleaf = 1
+    start with ( odf.annee_id, odf.noeud_sup_id ) in ( select annee_id, source_code from ose_etape )
+    connect by prior odf.annee_id = odf.annee_id and prior odf.noeud_inf_id = odf.noeud_sup_id
+  )
+select
+  annee_id,
+  noeud_inf_id                                 as z_element_pedagogique_id,
+  noeud_sup_id                                 as z_etape_id,
+  noeud_sup_id || '_' || noeud_inf_id          as source_code,
+  periode                                      as z_periode_id,
+  max ( taux_foad )                            as taux_foad,
+  annee_id || '_' || noeud_sup_id || '_' || noeud_inf_id as id
+from etape_enseignement
+group by
+  annee_id,
+  noeud_sup_id,
+  noeud_inf_id,
+  periode
+;
+--
+-- Elements pedagogiques
+-- Un element pedagogique OSE est assimilable a un element pedagogique feuille d une structure d enseignements Apogee
+-- Si un element est commun a plusieurs etapes il sera ici associe a une etape de reference
+--
+insert into ose_element_pedagogique
+select
+  odf.annee_id,
+  odf.libelle,
+-- Si un element est commun a plusieurs etapes il sera ici associe a une etape de reference en fonction des criteres suivants
+--    critere 1 : prise en compte de la VET porteuse definie dans Apogee
+--    critere 2 : les etapes dediees aux echanges sont non prioritaires
+--    critere 3 : ordre alphabetique du code etape
+  min ( chp.z_etape_id ) keep ( dense_rank first order by
+    case when chp.z_etape_id = ece.cod_etp_porteuse || '_' || ece.cod_vrs_vet_porteuse then 0 else 1 end,
+    etp.specifique_echanges,
+    chp.z_etape_id
+    )                                          as z_etape_id,
+  odf.structure_inf_id                         as z_structure_id,
+  chp.z_periode_id,
+  chp.taux_foad,
+  chp.z_element_pedagogique_id                 as source_code,
+  ece.cod_scc                                  as z_discipline_id,
+  max ( etp.FI )                               as FI,
+  max ( etp.FA )                               as FA,
+  max ( etp.FC )                               as FC,
+  odf.annee_id || '_' || chp.z_element_pedagogique_id as id
+from ose_offre_de_formation    odf
+join ose_chemin_pedagogique    chp on chp.annee_id = odf.annee_id and chp.z_element_pedagogique_id = odf.noeud_inf_id
+join ose_etape                 etp on etp.annee_id = chp.annee_id and etp.source_code = chp.z_etape_id
+left outer join elp_charge_ens ece on ece.cod_anu = odf.annee_id  and ece.cod_elp = odf.noeud_inf_id
+group by
+  odf.annee_id,
+  odf.libelle,
+  odf.structure_inf_id,
+  chp.z_periode_id,
+  chp.taux_foad,
+  chp.z_element_pedagogique_id,
+  ece.cod_scc
+;
+--
+-- Constatation des effectifs par annee par element pedagogique et par regime d inscription
+--
+merge into ose_element_effectifs eff
+  using (
+    select source_code as z_element_pedagogique_id,
+      cod_anu          as annee_id,
+      sum(effectif_FI) as effectif_FI,
+      sum(effectif_FA) as effectif_FA,
+      sum(effectif_FC) as effectif_FC
+    from (
+      select elp.source_code,
+        ice.cod_anu,
+        case when iae.cod_rge in ('1', '3')      then 1 else 0 end as effectif_FI,
+        case when iae.cod_rge in ('4')           then 1 else 0 end as effectif_FA,
+        case when iae.cod_rge in ('2', '5', '6') then 1 else 0 end as effectif_FC
+      from ose_element_pedagogique elp
+      join ind_contrat_elp ice   on  ice.cod_elp = elp.source_code
+                                 and ice.cod_anu = elp.annee_id
+      join ins_adm_etp iae       on  iae.cod_ind = ice.cod_ind
+                                 and iae.cod_anu = ice.cod_anu
+                                 and iae.cod_etp = ice.cod_etp
+                                 and iae.cod_vrs_vet = ice.cod_vrs_vet
+      where elp.annee_id in ( to_char(add_months(sysdate, -28), 'YYYY') , to_char(add_months(sysdate, -16), 'YYYY') , to_char(add_months(sysdate,  -4), 'YYYY') )
+        and ice.tem_prc_ice = 'N'
+        and iae.eta_iae = 'E'
+        and iae.eta_pmt_iae = 'P'
+-- Ajout des effectifs des elements portes
+      union all
+      select elp.source_code,
+        ice.cod_anu,
+        case when iae.cod_rge in ('1', '3')      then 1 else 0 end as effectif_FI,
+        case when iae.cod_rge in ('4')           then 1 else 0 end as effectif_FA,
+        case when iae.cod_rge in ('2', '5', '6') then 1 else 0 end as effectif_FC
+      from ose_element_pedagogique elp
+      join elp_porteur_porte epo on  epo.cod_elp_porteur = elp.source_code
+                                 and epo.cod_anu = elp.annee_id
+      join ind_contrat_elp ice   on  ice.cod_elp = epo.cod_elp_porte
+                                 and ice.cod_anu = epo.cod_anu
+      join ins_adm_etp iae       on  iae.cod_ind = ice.cod_ind
+                                 and iae.cod_anu = ice.cod_anu
+                                 and iae.cod_etp = ice.cod_etp
+                                 and iae.cod_vrs_vet = ice.cod_vrs_vet
+      where elp.annee_id in ( to_char(add_months(sysdate, -28), 'YYYY') , to_char(add_months(sysdate, -16), 'YYYY') , to_char(add_months(sysdate,  -4), 'YYYY') )
+        and ice.tem_prc_ice = 'N'
+        and iae.eta_iae = 'E'
+        and iae.eta_pmt_iae = 'P'
+      )
+    group by source_code,
+      cod_anu
+    ) tmp
+  on (eff.z_element_pedagogique_id = tmp.z_element_pedagogique_id and eff.annee_id = tmp.annee_id)
+  when matched then
+    update set
+      eff.effectif_FI = tmp.effectif_FI,
+      eff.effectif_FA = tmp.effectif_FA,
+      eff.effectif_FC = tmp.effectif_FC
+  when not matched then
+    insert (z_element_pedagogique_id, annee_id, effectif_FI, effectif_FA, effectif_FC)
+    values (tmp.z_element_pedagogique_id, tmp.annee_id, tmp.effectif_FI, tmp.effectif_FA, tmp.effectif_FC)
+;
+--
+-- Volumes horaires et nombre de groupes ouverts pour chaque enseignement, par type de groupe
+-- Le rapprochement, entre les volumes horaires definis dans le module Charges et les groupes ouverts, se fait sur le code type d heures = le code type de groupe
+-- Si aucun groupe n est modelise pour un element pedagogique alors on considere qu il existe un groupe unique d etudiants pour cet element
+-- Cas particulier des enseignements de type M�moire, Projet, Stage : si aucun groupe n est modelise alors on considere qu il existe autant de groupes que d etudiants inscrits a l element
+--
+insert into ose_volume_horaire_ens
+with elp_groupes as (
+  select
+    elp.annee_id,
+    elp.source_code,
+    gpe.cod_tgr,
+    count ( distinct iag.cod_gpe ) as groupes
+  from ose_element_pedagogique elp
+  join gpe_obj                 gpo on gpo.typ_obj_gpo = 'ELP' and gpo.cod_elp = elp.source_code
+  join groupe                  gpe on gpe.cod_gpe = gpo.cod_gpe
+  join ind_affecte_gpe         iag on iag.cod_gpe = gpo.cod_gpe and iag.cod_anu = elp.annee_id
+  where elp.annee_id between nvl ( gpe.daa_deb_val_gpe, '0000' ) and nvl ( gpe.daa_fin_val_gpe, '9999' )
+  group by
+    elp.annee_id,
+    elp.source_code,
+    gpe.cod_tgr
+  )
+select
+  elp.annee_id,
+  elp.source_code                              as z_element_pedagogique_id,
+  ect.cod_typ_heu                              as z_type_intervention_id,
+  ect.nbr_heu_elp                              as heures,
+  elp.source_code || '_' || ect.cod_typ_heu    as source_code,
+  elp.annee_id || '_' || elp.source_code || '_' || ect.cod_typ_heu as id,
+  case when nvl ( eff.effectif_FI, 0 ) + nvl (eff.effectif_FA, 0 ) + nvl (eff.effectif_FC, 0 ) > 0
+    then case when ect.cod_typ_heu in ( 'MEMOIR', 'PROJET', 'STAGE' )
+      then nvl ( elg.groupes, nvl ( eff.effectif_FI, 0 ) + nvl (eff.effectif_FA, 0 ) + nvl (eff.effectif_FC, 0 ) )
+      else nvl ( elg.groupes, 1 )
+      end
+    else 0
+    end                                        as groupes
+from            ose_element_pedagogique elp
+join            elp_chg_typ_heu         ect on ect.cod_anu = elp.annee_id and ect.cod_elp = elp.source_code
+left outer join ose_element_effectifs   eff on eff.annee_id = elp.annee_id and eff.z_element_pedagogique_id = elp.source_code
+left outer join elp_groupes             elg on elg.annee_id = ect.cod_anu and elg.source_code = ect.cod_elp and elg.cod_tgr = ect.cod_typ_heu
+where nvl ( ect.nbr_heu_elp, 0 ) > 0
+;
diff --git "a/data/D\303\251ploiement/Connecteurs/Apogee-OSE-lisezMoi.txt" "b/data/D\303\251ploiement/Connecteurs/Apogee-OSE-lisezMoi.txt"
new file mode 100644
index 0000000000000000000000000000000000000000..d887803ce35c40263b91de7e574354fbed26dc03
--- /dev/null
+++ "b/data/D\303\251ploiement/Connecteurs/Apogee-OSE-lisezMoi.txt"
@@ -0,0 +1,62 @@
+INTERFACAGE ENTRE APOGEE ET OSE
+Auteur : Bruno Bernard bruno.bernard@unicaen.fr
+-------------------------------
+
+L'importation de données d'Apogée vers OSE s'effectue via un dblink entre les deux bases Oracle.
+OSE va lire des tables et vues créées dans la base Apogée.
+Ces tables dans la base Apogée sont rafraîchies régulièrement, par exemple midi et soir pour permettre que les modifications effectuées dans Apogée soient répercutées la demi-journée suivante dans OSE.
+
+Le script Apogee-OSE-createTables.sql crée les 7 tables et les 3 vues OSE_****** dans la base Apogée :
+create table ose_groupe_type_formation : Regroupements des types de formations
+create table ose_type_formation        : Correspondance entre les types de formations Apogee et les groupes de types de formations
+create table ose_etape                 : Une etape OSE est assimilable a une VET Apogee
+create table ose_offre_de_formation    : L'offre de formation est reconstituee sous forme d'arbre
+create view ose_noeud                  : Noeuds de l'arbre offre de formation = VET, listes et éléments pédagogiques
+create view ose_lien                   : Liens entre les noeuds de l'arbre offre de formation
+create table ose_chemin_pedagogique    : Relations entre les etapes (racines) et les elements pedagogiques les plus fins (feuilles)
+create table ose_element_pedagogique   : Les feuilles de l'arbre sont les elements pedagogiques les plus fins (feuilles)
+create table ose_element_effectifs     : Effectifs par annee par element pedagogique et par regime d'inscription
+create table ose_volume_horaire_ens    : Volumes horaires et nombre de groupes ouverts pour enseignement, par type de groupe
+
+Le script Apogee-OSE-export.sql alimente les tables OSE_****** dans la base Apogée.
+Il doit être adapté à chaque établissement.
+
+La table ose_groupe_type_formation permet :
+- de regrouper les types de formation pour rendre cette liste plus synthétique et plus lisible (A ADAPTER)
+- d'ordonner cette liste (A ADAPTER)
+- de préciser si le niveau de la VET dans le diplôme doit apparaître dans le filtre "Niveau" (exemples L1 L2 L3 LPro ...) (A ADAPTER)
+
+La table ose_type_formation permet :
+- d'associer les types de formation Apogée aux groupes de types de formations OSE (A ADAPTER)
+- d'exclure certains types ou natures de formations sur lesquels des services d'enseignement ne devront pas pouvoir être saisis (exemples : auditeurs libres, thèses...) (A ADAPTER)
+
+La table ose_etape permet :
+- de définir les étapes visibles dans OSE et celles à exclure éventuellement (A ADAPTER)
+- d'associer chaque étape à un code structure du référentiel des structures de l'établissement (A ADAPTER)
+- de repérer si une étape est dédiée aux échanges (A ADAPTER)
+- de déterminer le domaine fonctionnel qui sera associé aux enseignements de l'étape (A ADAPTER)
+- de spécifier si l'étape est ouverte en FI, en FC et/ou en apprentissage (A ADAPTER)
+
+La table récursive ose_offre_de_formation permet :
+- de reconstituer l'offre de formation d'une année sous forme d'arbre
+- d'ignorer les elements feuilles de nature technique (elements miroirs, elements utiles uniquement pour le calcul de notes...) (A ADAPTER)
+- de substituer les éléments porteurs aux éventuels éléments portés
+- d'associer une période (S1, S2, ou Année) à chaque élément en recherchant l'information dans la branche (A ADAPTER)
+- de déterminer si un enseignement est proposé à distance en recherchant l'information dans la branche
+- d'associer chaque élément à un code structure du référentiel des structures de l'établissement (A ADAPTER)
+
+La table ose_chemin_pedagogique permet :
+- de mettre en relation les etapes (racines) et les elements pedagogiques les plus fins (feuilles) de l'arbre offre de formation
+
+La table ose_element_pedagogique permet :
+- d'associer à chaque élément pédagogique l'étape la plus pertinente dans laquelle il est présent (par exemple en écartant a priori les étapes dédiées aux échanges internationaux) (A ADAPTER)
+
+La table ose_element_effectifs permet :
+- de définir quels régimes d'inscription correspondent à la FI, à la FC, ou à l'apprentissage (FA) (A ADAPTER)
+- de calculer les effectifs par année, par élément pédagogique et par régime d'inscription
+
+La table ose_volume_horaire_ens permet :
+- d'associer à chaque enseignement ses volumes horaires par type d'intervention enregistrés dans le module Charges, la saisie de services dans OSE n'étant possible que si une charge existe pour l'enseignement
+- si l'année est en cours ou terminée, d'observer la charge réelle en dénombrant le nombre de groupes ouverts dans lesquels des étudiants sont inscrits, le type de groupe étant assimilé au type d'heure défini dans le module Charges ; en l'absence de groupes modélisés, un groupe unique sera pris en compte pour l'enseignement.
+Cf tableau Apogee-OSE-calculCharges.xls
+
diff --git "a/data/D\303\251ploiement/Connecteurs OSE.sql" "b/data/D\303\251ploiement/Connecteurs/Connecteurs OSE.sql"
similarity index 100%
rename from "data/D\303\251ploiement/Connecteurs OSE.sql"
rename to "data/D\303\251ploiement/Connecteurs/Connecteurs OSE.sql"
diff --git "a/data/D\303\251ploiement/Connecteurs/FCAManager-OSE-controles.sql" "b/data/D\303\251ploiement/Connecteurs/FCAManager-OSE-controles.sql"
new file mode 100644
index 0000000000000000000000000000000000000000..21ac53e5f16b30e739533e4db61eb72218051367
--- /dev/null
+++ "b/data/D\303\251ploiement/Connecteurs/FCAManager-OSE-controles.sql"
@@ -0,0 +1,10 @@
+-- Quelques requêtes por faire quelques légers contrôles sur les vues fournies pour OSE
+
+-- Trouver les élements qui font référence à des étapes inconnues dans ose_etape (= formations diplômantes émanents de FCA Manager)
+select * from OSE_ELEMENT_PEDAGOGIQUE WHERE Z_ETAPE_ID not in (select SOURCE_CODE from OSE_ETAPE);
+
+-- Trouver les volumes horaires reliés à un élément inexistant
+select * from OSE_VOLUME_HORAIRE_ENS WHERE Z_ELEMENT_PEDAGOGIQUE_ID NOT IN (select SOURCE_CODE FROM OSE_ELEMENT_PEDAGOGIQUE);
+
+-- Trouver les éléments pédagogiques dans le chemin pédagogique qui sont absent de la vue étape fournie (= formations diplômantes émanents de FCA Manager)
+select * from OSE_CHEMIN_PEDAGOGIQUE WHERE Z_ETAPE_ID NOT IN (select SOURCE_CODE FROM OSE_ETAPE);
diff --git "a/data/D\303\251ploiement/Connecteurs/FCAManager-OSE-export.sql" "b/data/D\303\251ploiement/Connecteurs/FCAManager-OSE-export.sql"
new file mode 100644
index 0000000000000000000000000000000000000000..2ccc2af4e828d9cd564f8a0575fcf8992c03ebbb
--- /dev/null
+++ "b/data/D\303\251ploiement/Connecteurs/FCAManager-OSE-export.sql"
@@ -0,0 +1,259 @@
+-- Requêtes de déversmeent des informations de FCA Manager dans OSE
+
+-- Auteur : Jérôme Gallot (jerome.gallot@unicaen.fr)
+
+-- Pour les DBLINK, penser à modifier l'utilisateur qui peut lire les vues (ucbn_ose pour l'UNICAEN)
+
+-- ##################################
+-- Vue ETAPE
+-- ##################################
+-- MAJ 20/11/2017 : Utilisation de l'année universitaire de FCA Manager
+-- MAJ 22/11/2017 : Commentaires pour mise à disposition
+-- MAJ 24/11/2017 : Déversement de toutes les formations valides des années > 2017
+-- MAJ 29/11/2017 : Correction domaine fonctionnel (manque un 'D' dans le code)
+--                : Changement type formation -> forcer à null avant refonte tyoe_formation
+-- ##################################
+-- TODO : utiliser le domaine fonctionnel SIFAC indiqué sur une action au lieu d'un switch dans la requête SQL
+--        Améliorer la remontée des niveaux/type formation
+-- ##################################
+DROP VIEW OSE_ETAPE;
+
+CREATE VIEW OSE_ETAPE AS
+(
+SELECT
+  -- Libellé de l'action
+  acn.LIB_ACN AS Libelle,
+  -- Le type de formation est par défaut à 82 = formation non diplômante
+  '82' AS Z_TYPE_FORMATION_ID,
+  -- Code Harpege de la structure
+  ucl.COD_STR AS Z_STRUCTURE_ID,
+ 
+  -- Niveau : correspond au type de formation/groupe_type_formation dans OSE
+  -- Le type de formation est défini dans le champ 'Validé par' dans FCA
+  CASE
+    -- WHEN acv.COD_NIF_SOR_ACV=7 THEN 1 -- Niveau 1 = BAC+5
+    -- WHEN acv.COD_NIF_SOR_ACV=8 THEN 2 -- Niveau 2 = BAC+3
+    -- WHEN acv.COD_NIF_SOR_ACV=9 THEN 3 -- Niveau 3 = Bac+2
+    -- Licence Pro
+    WHEN 1=1 THEN NULL
+    -- NULL permet d'afficher 'Autres'
+    ELSE NULL
+  END AS NIVEAU,
+  -- Domaine fonctionnel
+  CASE 
+    WHEN acv.COD_NIF_SOR_ACV=7 THEN 'D101' -- Form init et cont licence
+    WHEN acv.COD_NIF_SOR_ACV=8 THEN 'D102' -- Form init et cont master
+    WHEN acv.COD_NIF_SOR_ACV=9 THEN 'D103' -- Form init et cont doct
+    ELSE 'D1132'
+  END AS Z_DOMAINE_FONCTIONNEL_ID,
+  -- Code source de l'action (ne doit pas changer)
+  'FCA-ACN-' ||ACN.ID AS SOURCE_CODE,
+  -- Anné Universitaire de l'action
+  auv.COD_ANU AS ANNEE_ID,
+  -- Référence de l'action dans FCA Manager
+  acn.COD_REF_COM_ACN AS CODE
+  
+  FROM ACTION acn
+  LEFT JOIN ACTIVITE acv ON (acv.ID=acn.COD_ACV)
+  LEFT JOIN ucbn_composante_ldap@apoprod ucl ON (ucl.COD_CMP=acv.COD_CGE)
+  LEFT JOIN ANNEE_UNI auv on (acn.COD_ANU_ACN = auv.COD_ANU)
+  WHERE
+    -- Les formations ne sont prise en compte qu'à partir de l'année universitaire 2017
+    auv.COD_ANU >= 2017
+    -- La source doit être FCA MANAGER
+    AND acn.COD_LOG_SRC = 4
+    -- Le format du nom de la formation doit être correct
+    AND acn.COD_REF_COM_ACN like 'FCA-%'||auv.COD_ANU||'%' 
+    -- L'action est en service dans FCA Manager;
+    AND acn.TEM_EN_SVE_ACN = 1
+);
+grant select on OSE_ETAPE to ucbn_ose;
+
+
+-- ##################################
+-- Vue Element_pedagogique
+-- ##################################
+-- MAJ 20/11/2017 : Utilisation de l'année universitaire de FCA Manager
+-- MAJ 22/11/2017 : Commentaires pour mise à disposition
+-- MAJ 24/11/2017 : Déversement de toutes les formations valides des années > 2017
+-- ##################################
+DROP VIEW OSE_ELEMENT_PEDAGOGIQUE;
+
+CREATE VIEW OSE_ELEMENT_PEDAGOGIQUE AS
+(
+  SELECT ens.LIB_ENS AS LIBELLE,
+  
+  CASE
+    -- Si le code de l'élement commence par APO et finie par une année ---> suppression pour retrouver l'étape et la VET d'origine
+    WHEN acn.COD_LOG_SRC=2 THEN REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(acn.COD_REF_COM_ACN,'^APO-',''),'-'||acn.COD_ANU_ACN||'$',''),'-','_')
+    WHEN acn.COD_LOG_SRC=4 THEN 'FCA-ACN-'||ACN.ID
+  END AS Z_ETAPE_ID,
+  -- Code Harpege de la structure
+  ucl.COD_STR AS Z_STRUCTURE_ID,
+  -- Pour l'instant on ne renvoie pas de période (semestre 1, semestre 2)
+  NULL AS Z_PERIODE_ID,
+  -- Le taux FOAD est défini  par le mode d'action 
+  CASE 
+    WHEN (acn.COD_MOD_ACN=3 OR acn.COD_MOD_ACN=4) THEN 1
+    ELSE 0
+  END AS TAUX_FOAD,
+  -- Enseignement sans FI par défaut
+  0 AS FI,
+  -- Enseignement en FC par défaut
+  1 AS FC,
+  -- Pas d'apprentissage géré par FCA
+  0 AS FA,
+  -- Le code source contient l'identifiant unique de l'enseignement
+  'FCA-ENS-'||ens.COD_ENS AS SOURCE_CODE,
+  -- 0% d'apprentissage
+  0 AS TAUX_FA,
+  -- 100% en formation continue
+  1 AS TAUX_FC,
+  -- 0% en formation initiale
+  0 AS TAUX_FI,
+  -- Année universitaire de l'action
+  auv.COD_ANU  AS ANNEE_ID,
+  -- Pas de correspondance de discipline entre FCA et OSE par défaut
+  '' AS Z_DISCPLINE_ID,
+  
+  ens.COD_REF_COM_ENS AS CODE
+
+FROM ENSEIGNEMENT ens
+LEFT JOIN ACTION acn ON acn.ID=ens.COD_ACN_REF
+LEFT JOIN ACTIVITE acv ON (acv.ID=acn.COD_ACV)
+LEFT JOIN ucbn_composante_ldap@apoprod ucl ON (ucl.COD_CMP=acv.COD_CGE)
+LEFT JOIN ANNEE_UNI auv on (acn.COD_ANU_ACN = auv.COD_ANU)
+WHERE
+    -- Les formations ne sont prise en compte qu'à partir de l'année universitaire 2017
+    auv.COD_ANU >= 2017
+  -- La source doit être uniquement FCA MANAGER pour les actions
+  AND ens.COD_LOG_SRC = 4
+  -- on filtre sur la bonne année
+  AND acn.COD_ANU_ACN=auv.COD_ANU
+  -- on s'applique à conserver que les noms d'enseignements au bon format
+  AND ens.COD_REF_COM_ENS like 'FCA-%'||auv.COD_ANU||'%'
+  -- On ne conserve que les noms d'enseignement qui sont corrects (zèle ?)
+  AND ens.COD_ACN_REF IS NOT NULL
+  -- La source doit être FCA MANAGER pour les actions OU Apogee pour certains enseignements en pur qualifiant qui sont adossés à du diplômant
+  AND (acn.COD_LOG_SRC = 4 OR acn.COD_LOG_SRC=2)
+  -- L'enseignement est en service
+  AND ens.TEM_EN_SVE_ENS = 1 
+  -- L'action est en service
+  AND acn.TEM_EN_SVE_ACN = 1
+  -- quelques restrictions UNICAEN sur le nom de l'action
+  AND (acn.COD_REF_COM_ACN like 'FCA-%'||auv.COD_ANU or acn.COD_REF_COM_ACN like 'APO-%-'||auv.COD_ANU)
+);
+GRANT SELECT ON OSE_ELEMENT_PEDAGOGIQUE TO ucbn_ose;
+
+-- ##################################
+-- Vue CHEMIN Pédagogique
+-- ##################################
+-- MAJ 20/11/2017 : Utilisation de l'année universitaire de FCA Manager
+-- MAJ 22/11/2017 : Commentaires pour mise à disposition
+-- MAJ 24/11/2017 : Déversement de toutes les formations valides des années > 2017
+-- ##################################
+
+DROP VIEW OSE_CHEMIN_PEDAGOGIQUE;
+
+CREATE VIEW OSE_CHEMIN_PEDAGOGIQUE AS
+(
+  SELECT
+  
+    CASE 
+      -- Si le code de l'élement commence par APO et finie par une année ---> suppression pour retrouver l'étape et la VET d'origine
+      WHEN acn.COD_LOG_SRC=2 THEN REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(acn.COD_REF_COM_ACN,'^APO-',''),'-'||acn.COD_ANU_ACN||'$',''),'-','_')
+      WHEN acn.COD_LOG_SRC=4 THEN 'FCA-ACN-'||ACN.ID
+    END AS Z_ETAPE_ID,
+    
+    'FCA-ENS-'||ens.COD_ENS AS Z_ELEMENT_PEDAGOGIQUE_ID,
+    'FCA-ACN-ENS-'||acn_ens.COD_ACN||'-'||acn_ens.COD_ENS AS SOURCE_CODE,
+    
+    auv.COD_ANU AS ANNEE_ID
+  FROM ACTION_ENSEIGNEMENT acn_ens, ACTION acn, ENSEIGNEMENT ens, ANNEE_UNI auv
+  WHERE
+    acn.COD_ANU_ACN = auv.COD_ANU
+    -- Les formations ne sont prise en compte qu'à partir de l'année universitaire 2017
+    AND auv.COD_ANU >= 2017
+    AND acn_ens.COD_ACN=acn.ID
+    AND acn_ens.COD_ENS=ens.COD_ENS
+    -- Filtrage sur le nom de l'enseignement (format unicaen)
+    AND ens.COD_REF_COM_ENS LIKE 'FCA%'||acn.COD_ANU_ACN||'%'
+    -- Filtrage sur le nom de l'action (format unicaen)
+    AND (acn.COD_REF_COM_ACN LIKE 'FCA%'||acn.COD_ANU_ACN||'%' OR acn.COD_REF_COM_ACN LIKE 'APO-%'||acn.COD_ANU_ACN ) 
+    -- La source doit être FCA MANAGER pour les actions OU Apogee pour certains enseignements en pur qualifiant qui sont adossés à du diplômant
+    AND (acn.COD_LOG_SRC = 4 OR acn.COD_LOG_SRC=2)
+    -- La source doit être uniquement FCA Manager pour les enseignements
+    AND ens.COD_LOG_SRC = 4
+    -- L'enseignement est en service
+    AND ens.TEM_EN_SVE_ENS = 1
+    -- L'action est en service
+    AND acn.TEM_EN_SVE_ACN = 1
+);
+GRANT SELECT ON OSE_CHEMIN_PEDAGOGIQUE TO ucbn_ose;
+
+-- ##################################
+-- Volume Horaire Horaire ens(seignement)
+-- ##################################
+-- MAJ 30/10/2017 : Changement du code source pour différencier TD/CM/TP
+-- MAJ 31/10/2017 : Cumul des temps si plusieurs intervenants et enseignements affectés à plusieurs actions
+-- MAJ 20/11/2017 : Utilisation de l'année universitaire de FCA Manager
+-- MAJ 22/11/2017 : Commentaires pour mise à disposition
+-- MAJ 28/11/2017 : Arrondi sur conversion des minutes en heures
+-- ##################################
+
+DROP VIEW OSE_VOLUME_HORAIRE_ENS;
+
+CREATE VIEW OSE_VOLUME_HORAIRE_ENS AS (
+
+SELECT Z_TYPE_INTERVENTION_ID, ANNEE_ID, sum(HEURES_TMP) AS HEURES, SOURCE_CODE, Z_ELEMENT_PEDAGOGIQUE_ID FROM (
+  SELECT
+    -- Définition du taux de rémunération : TD/TP/CM
+    CASE 
+       -- s'il n'y a pas d'intervenant encore défini, seules des heures de TD pourront être saisie dans OSE
+      WHEN tx_rem.lic_trm IS NULL THEN 'TD'
+      -- sinon le type d'heures de cours (TP/TD/CM) est issu de FCA
+      ELSE tx_rem.lic_trm
+    END AS Z_TYPE_INTERVENTION_ID,
+    -- Année universitaire 'courante' de FCA Manager
+    acn.COD_ANU_ACN AS ANNEE_ID,
+    -- Heures d'enseignements
+    CASE 
+       -- Sans volume horaire défini --> on met 1 heure de saisie autorisée
+      WHEN ens_act.NB_MIN_PREVUES IS NULL THEN 1
+       -- Sinon transformation des minutes en heures
+      ELSE round((ens_act.NB_MIN_PREVUES/60),2)
+    END AS HEURES_TMP,
+    -- Créations des codes uniques des infos pour OSE
+    CASE
+      WHEN tx_rem.lic_trm IS NULL THEN 'FCA-ENS-'||acn.COD_ANU_ACN||'-'||ens.COD_ENS||'-TD'
+      ELSE 'FCA-ENS-'||acn.COD_ANU_ACN||'-'||ens.COD_ENS||'-'||tx_rem.lic_trm
+    END AS SOURCE_CODE,
+    
+    'FCA-ENS-'||ens.COD_ENS AS Z_ELEMENT_PEDAGOGIQUE_ID
+    
+    FROM ENSEIGNEMENT ens
+    LEFT JOIN ACTION acn ON acn.ID=ens.COD_ACN_REF
+    LEFT JOIN ACTIVITE acv ON (acv.ID=acn.COD_ACV)
+    LEFT JOIN ucbn_composante_ldap@apoprod ucl ON (ucl.COD_CMP=acv.COD_CGE)
+    LEFT JOIN ENSEIGNEMENT_ACTEUR_INTER ens_act ON (ens_act.COD_ENS=ens.COD_ENS)
+    LEFT JOIN TAUX_REMUNERATION tx_rem ON (tx_rem.id=ens_act.COD_TRM)
+    JOIN ANNEE_UNI auv on (acn.COD_ANU_ACN = auv.COD_ANU)
+  WHERE
+      -- Les formations ne sont prise en compte qu'à partir de l'année universitaire 2017
+    auv.COD_ANU >= 2017
+     -- La source doit être FCA MANAGER pour les enseignements
+    AND ens.COD_LOG_SRC = 4
+    -- Filtrage sur l'année universitaire en cours dans FCA Manager
+    AND acn.COD_ANU_ACN=auv.COD_ANU
+    -- Filtrage sur le nom de l'enseignement
+    AND ens.COD_REF_COM_ENS like 'FCA-%'||acn.COD_ANU_ACN||'%'
+    -- L'enseignement est en service
+    AND ens.TEM_EN_SVE_ENS = 1
+    -- L'action est en service
+    AND acn.TEM_EN_SVE_ACN = 1)
+    GROUP BY Z_TYPE_INTERVENTION_ID,ANNEE_ID,SOURCE_CODE,Z_ELEMENT_PEDAGOGIQUE_ID
+    -- S'il n'y a pas d'intervenant, on ne remonte pas le volume horaire (ancien choix avant de forcer un nombre d'heures)
+    -- AND lic_trm IS NOT NULL
+);
+GRANT SELECT ON OSE_VOLUME_HORAIRE_ENS TO ucbn_ose;
+
diff --git "a/data/D\303\251ploiement/Connecteurs/FCAManager-OSE-lisezMoi.txt" "b/data/D\303\251ploiement/Connecteurs/FCAManager-OSE-lisezMoi.txt"
new file mode 100644
index 0000000000000000000000000000000000000000..b446858d25ac3c76ebeb636e793e2dd891881231
--- /dev/null
+++ "b/data/D\303\251ploiement/Connecteurs/FCAManager-OSE-lisezMoi.txt"
@@ -0,0 +1,68 @@
+INTERFACAGE ENTRE FCA MANAGER et OSE
+-------------------------------------------------
+Auteur : Jérôme Gallot (jerome.gallot@unicaen.fr)
+
+L'importation de données de FCA Manager vers OSE s'effectue via un dblink entre les deux bases Oracle.
+
+Les vues décrites plus bas utilisent aussi un dblink vers la base Apogee : @apoprod. Cette liaison ne sert qu'à trouver le numéro de composante Hapege depuis le numéro de composante de FCA (= N° composante Apogee)
+
+OSE va lire des vues créées dans la base FCA Manager.
+
+Préambule :
+------------
+
+La nomenclature des noms de formation dans FCA Manager répond à des choix propres à l'UNICAEN :
+
+- Les actions et enseignements qualifiants sont gérés uniquement par FCA Manager et définis de la manière suivante :
+	- le nom d'une action est représenté ainsi : FCA-XXXXXX-ANNEE_UNIV
+	- le nom d'un enseignement suit la nomenclature : FCA-XXXXXX-ANNEE_UNIV-YY (Y variant de 0 à 20)
+	- le code source du logiciel est alors FCA Manager
+
+- Les actions et enseignements diplômants sont intégrés depuis Apogee vers FCA:
+	- le nom de l'action et les enseignements sont au format APO-ETAPE-VET-ANNEE_UNIV
+
+ANNEE_UNIV correspond par exemple à 2017 pour 2017/2018
+
+
+Fca Manager peut aussi contenir des enseignements de type qualifiant qui sont rattachés à des actions diplômantes.
+Les scripts SQL permettent de déverser uniquement les données des formations qualifiantes mais prennent en compte cette subtilité (notamment dans la vue OSE_CHEMIN_PEDAGOGIQUE) 
+
+Ils ont été testés avec les versions 1.10.XXX et 1.11.004 de FCA Manager
+
+Le déversement dans OSE :
+-------------------------
+
+Il est possible si :
+ - des actions et des enseignements dits qualifiants ont été créés dans FCA Manager
+ - au moins un intervenant doit être attaché à chaque enseignement de l'action
+ - il n'y a pas d'obligation que les séances d'un enseignement soient déjà créées (cette contrainte sera éventuellement mise en place ultérieurement)
+ - s'il n'y a pas d'intervenant de défini sur un enseignement -> les heures déclarées pour OSE sont fixées à 0H (à adapter)
+
+
+La vue OSE_ETAPE :
+--------------------------------
+
+Cette vue permet de déverser seulement les actions qualifiantes gérées via FCA Manager. Les actions diplômantes sont gérées par la connecteur APOGEE->OSE
+
+les étapes créées sont uniquement en Formation continue (FC) dans OSE
+
+
+La vue OSE_ELEMENT_PEDAGOGIQUE :
+--------------------------------
+Cette vue permet de déverser les enseignements qualifiants gérés via FCA Manager 
+
+La vue OSE_CHEMIN_PEDAGOGIQUE :
+--------------------------------
+
+Cette vue définit les relations entre les actions (étapes) et élements pédagogiques (enseignements FCA)
+
+
+La vue OSE_VOLUME_HORAIRE_ENS :
+--------------------------------
+Cette vue permet d'associer à chaque enseignement ses volumes horaires par type d'intervention, la saisie de services dans OSE n'étant possible que si une charge existe pour l'enseignement.
+ATTENTION : les volumes horaires envoyés correspondent au cumul des horaires des intervenants d'un enseignement de FCA Manager. Ce n'est donc pas le volume horaire défini sur l'enseignement qui est utilisé. (cf cours avec plusieurs intervenants pendant la même séance)
+
+
+Le script FCAManager-OSE.sql crée les vues dédiées à l'outil OSE dans la base FCA Manager.
+Le script FCAManager-controles.sql contient quelques requêtes notamment pour déceler des incohérences entre les vues lors des associations étapes/élèments
+
diff --git "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..40ac3a536e95b6dd5a950f06fa99d4674e9c1631
Binary files /dev/null and "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" differ