diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4c768d5e412a8240a4f9ee04587a6ae197afb0c4..b24322eb87c44bd1d772b1b19dbd5f81fdd46760 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,8 @@
 # Versions stables
 
-[OSE 15.5](#ose-155-01072021)
+[OSE 16.0](#ose-16-14092021)
 
-[OSE 14.20](#ose-1420-09062021)
+[OSE 15.7](#ose-157-14092021)
 
 
 
@@ -22,7 +22,7 @@ Objectif : Connecteur Export OSE => Logiciel RH
 
 
 
-# OSE 16 (à venir)
+# OSE 16 (14/09/2021)
 Objectif : Connecteur import Actul+ & système différentiel pour comparer des charges d'enseignement
 
 ## Correction de bug
@@ -31,17 +31,20 @@ Objectif : Connecteur import Actul+ & système différentiel pour comparer des c
 
 ## Nouveautés
 
-* Connecteur en import avec Actul+
+* [Connecteur en import avec Actul+](doc/Connecteurs-Import/Actul/Connecteur.md)
 * Outil différentiel d'export des charges d'enseignement
 
 
-# OSE 15.7 (à venir)
+# OSE 15.7 (14/09/2021)
 
 ## Correction de bugs
 
 * Correction de la validation du numéro INSEE dans le dossier de l'intervenant dans le cas d'un département de naissance en Outre Mer (le numéro de département de naissance de l'INSEE dans ce cas peut être sur 2 ou 3 chiffres)
+* Bug sur la prise en compte de règles multiples sur les pièces jointes par statut d'intervenant (date de début et date de fin)
+* Bug [#39644](https://redmine.unicaen.fr/Etablissement/issues/39644) corrigé au niveau de la formule de calcul de l'Université d'Artois
+* Au niveau des formules et en mode test uniquement, si le vacataire n'avait pas de composante d'affectation, les calculs pouvaient être faussés 
 
-# OSE 15.6 (à venir)
+# OSE 15.6 (14/09/2021)
 
 ## Correction de bugs
 
diff --git a/data/ddl/package/OSE_FORMULE/body.sql b/data/ddl/package/OSE_FORMULE/body.sql
index 1cce641a3983df22f685fdc05b655f75b37ee8e4..9d2701c4b31c02dbf4e960b1a8e9395720b7e56e 100644
--- a/data/ddl/package/OSE_FORMULE/body.sql
+++ b/data/ddl/package/OSE_FORMULE/body.sql
@@ -370,7 +370,7 @@ CREATE OR REPLACE PACKAGE BODY "OSE_FORMULE" AS
       volumes_horaires.items(length).taux_fc                   := d.taux_fc;
       volumes_horaires.items(length).ponderation_service_du    := d.ponderation_service_du;
       volumes_horaires.items(length).ponderation_service_compl := d.ponderation_service_compl;
-      volumes_horaires.items(length).structure_is_affectation  := d.structure_code = intervenant.structure_code;
+      volumes_horaires.items(length).structure_is_affectation  := COALESCE(d.structure_code,' ') = COALESCE(intervenant.structure_code,' ');
       volumes_horaires.items(length).structure_is_univ         := d.structure_code = '__UNIV__';
       volumes_horaires.items(length).service_statutaire        := d.service_statutaire = 1;
       volumes_horaires.items(length).heures                    := d.heures;
@@ -959,4 +959,4 @@ CREATE OR REPLACE PACKAGE BODY "OSE_FORMULE" AS
     END LOOP;
   END;
 
-END OSE_FORMULE;
\ No newline at end of file
+END OSE_FORMULE;
diff --git a/data/ddl/package/UNICAEN_TBL/body.sql b/data/ddl/package/UNICAEN_TBL/body.sql
index fb1a704ee4d9a8e8178803430b00cabf28f59d22..5e4b5fcf31bec07ff07f4688c4ef920a847e6886 100644
--- a/data/ddl/package/UNICAEN_TBL/body.sql
+++ b/data/ddl/package/UNICAEN_TBL/body.sql
@@ -1656,8 +1656,10 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
           pj.id piece_jointe_id,
           v.id validation_id,
           f.id fichier_id,
-          CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN 1 ELSE MIN(COALESCE(tpjs.duree_vie,1)) END duree_vie,
-          CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN i.annee_id+1 ELSE MIN(i.annee_id+COALESCE(tpjs.duree_vie,1)) END date_validite,
+          --CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN 1 ELSE MIN(COALESCE(tpjs.duree_vie,1)) END duree_vie,
+          --CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN i.annee_id+1 ELSE MIN(i.annee_id+COALESCE(tpjs.duree_vie,1)) END date_validite,
+          MIN(COALESCE(tpjs.duree_vie,1)) duree_vie,
+          MIN(COALESCE(tpjs.annee_fin_id+1, i.annee_id+COALESCE(tpjs.duree_vie,1))) date_validite,
           pj.date_archive date_archive
         FROM
                     piece_jointe          pj
@@ -1668,6 +1670,7 @@ CREATE OR REPLACE PACKAGE BODY "UNICAEN_TBL" AS
                                             AND f.histo_destruction IS NULL
                 LEFT JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id
                                                    AND tpjs.type_piece_jointe_id = pj.type_piece_jointe_id
+                                                   AND i.annee_id BETWEEN COALESCE(tpjs.annee_debut_id,i.annee_id) AND COALESCE(tpjs.annee_fin_id,i.annee_id)
                                                    AND tpjs.HISTO_DESTRUCTION IS NULL
 
          LEFT JOIN validation             v ON v.id = pj.validation_id
diff --git a/data/ddl/view/V_TBL_PIECE_JOINTE_FOURNIE.sql b/data/ddl/view/V_TBL_PIECE_JOINTE_FOURNIE.sql
index d82007b53b74a14e1afb3519446a8d03b0b2e78c..0ec074559d230b601ea6cde15222944f63be7c35 100644
--- a/data/ddl/view/V_TBL_PIECE_JOINTE_FOURNIE.sql
+++ b/data/ddl/view/V_TBL_PIECE_JOINTE_FOURNIE.sql
@@ -7,8 +7,11 @@ SELECT
   pj.id piece_jointe_id,
   v.id validation_id,
   f.id fichier_id,
-  CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN 1 ELSE MIN(COALESCE(tpjs.duree_vie,1)) END duree_vie,
-  CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN i.annee_id+1 ELSE MIN(i.annee_id+COALESCE(tpjs.duree_vie,1)) END date_validite,
+--  CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN 1 ELSE MIN(COALESCE(tpjs.duree_vie,1)) END duree_vie,
+  --CASE WHEN MIN(COALESCE(tpjs.duree_vie,1)) IS NULL THEN i.annee_id+1 ELSE MIN(i.annee_id+COALESCE(tpjs.duree_vie,1)) END date_validite,
+  MIN(COALESCE(tpjs.duree_vie,1)) duree_vie,
+  MIN(COALESCE(tpjs.annee_fin_id+1, i.annee_id+COALESCE(tpjs.duree_vie,1))) date_validite,
+
   pj.date_archive date_archive
 FROM
             piece_jointe          pj
@@ -19,6 +22,7 @@ FROM
                                     AND f.histo_destruction IS NULL
         LEFT JOIN type_piece_jointe_statut tpjs ON tpjs.statut_intervenant_id = i.statut_id
                                            AND tpjs.type_piece_jointe_id = pj.type_piece_jointe_id
+                                           AND i.annee_id BETWEEN COALESCE(tpjs.annee_debut_id,i.annee_id) AND COALESCE(tpjs.annee_fin_id,i.annee_id)
                                            AND tpjs.HISTO_DESTRUCTION IS NULL
 
  LEFT JOIN validation             v ON v.id = pj.validation_id