diff --git a/CHANGELOG.md b/CHANGELOG.md
index dacd3734a1bb08129eb3b04bc87b04480857976c..62513250d748d50e2a2c493a166997a73149ff82 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,11 @@
 Journal des modifications
 =========================
 
+5.3.1
+-----
+- [FIX] Donnée : ajout de garde lorsque le mail fourni par les données sources est " "
+- [FIX] hydration des justificatifs
+
 5.3.0
 -----
 - Nouvelle version du module Rapports d'activité.
diff --git a/doc/release-notes/v5.3.1.md b/doc/release-notes/v5.3.1.md
new file mode 100644
index 0000000000000000000000000000000000000000..88d7bf56be1c1f98ff7f1cadd652f21722400486
--- /dev/null
+++ b/doc/release-notes/v5.3.1.md
@@ -0,0 +1,18 @@
+# Version 5.3.1
+
+## 1. Sur le serveur d'application
+
+- Placez-vous dans le répertoire de l'application puis lancez la commande suivante
+  pour installer la nouvelle version :
+
+```bash
+git fetch --tags && git checkout --force 5.3.1 && bash ./install.sh
+```
+
+- Selon le moteur PHP que vous avez installé, rechargez le service, exemple :
+    - php7.4-fpm         : `service php7.4-fpm reload`
+    - apache2-mod-php7.4 : `service apache2 reload`
+
+## 2. Dans la base de données
+
+RAS
\ No newline at end of file
diff --git a/module/Fichier/src/Fichier/Entity/Db/NatureFichier.php b/module/Fichier/src/Fichier/Entity/Db/NatureFichier.php
index bb73f28e41e3042bee008acdbc6db7002bc9f57a..f2966508234af9ea560497db8df8b9b3d8c146b1 100644
--- a/module/Fichier/src/Fichier/Entity/Db/NatureFichier.php
+++ b/module/Fichier/src/Fichier/Entity/Db/NatureFichier.php
@@ -56,7 +56,7 @@ class NatureFichier
     const CODE_LANGUE_ANGLAISE = 'DEMANDE_LANGUE_ANGLAISE';
     const CODE_AUTRES_JUSTIFICATIFS = 'AUTRES_JUSTIFICATIFS';
 
-    const LABEL_FORMATION_INTEGRITE_SCIENTIFIQUE = 'Justificatif de suivi de la formation "Intégrité scientifique"';
+    const LABEL_FORMATION_INTEGRITE_SCIENTIFIQUE = 'Justificatif de suivi de la formation Intégrité scientifique';
     const LABEL_JUSTIFICATIF_HDR = "Justificatif d'habilitation à diriger des recherches";
     const LABEL_JUSTIFICATIF_EMERITAT = "Justificatif d'émeritat";
     const LABEL_JUSTIFICATIF_ETRANGER = "Justificatif dans le cas d'un membre du jury étranger";
diff --git a/module/Individu/src/Individu/Entity/Db/Individu.php b/module/Individu/src/Individu/Entity/Db/Individu.php
index c0934c9010d876c6c4c15732411c30d39c436843..9204ec8c43f0a00dce53de0b68ef2c3f89c0d746 100644
--- a/module/Individu/src/Individu/Entity/Db/Individu.php
+++ b/module/Individu/src/Individu/Entity/Db/Individu.php
@@ -266,11 +266,14 @@ class Individu implements HistoriqueAwareInterface, SourceAwareInterface, Resour
     public function getEmailPro(): ?string
     {
         $complement = $this->getComplement();
-        if ($complement AND !$complement->estHistorise() AND $complement->getEmailPro() !== null) {
+        if ($complement AND !$complement->estHistorise()
+                AND $complement->getEmailPro() !== null) {
             return $complement->getEmailPro();
         }
 
-        return $this->email;
+        $email = $this->email;
+        if ($email === null or trim($this->email) === '') return null;
+        return $email;
     }
 
     /**
diff --git a/module/Soutenance/src/Soutenance/Controller/JustificatifController.php b/module/Soutenance/src/Soutenance/Controller/JustificatifController.php
index 82eeba355b2be21e618e9bd465453570a12a6d61..b1a011df8bd4739e92f2f1fc4205aceab20b5d9f 100644
--- a/module/Soutenance/src/Soutenance/Controller/JustificatifController.php
+++ b/module/Soutenance/src/Soutenance/Controller/JustificatifController.php
@@ -88,10 +88,15 @@ class JustificatifController extends AbstractController {
             $files = ['files' => $request->getFiles()->toArray()];
             if ($nature) $data['nature'] = $nature->getCode();
 
-            $form->setData($data);
-            if ($form->isValid()) {
-                var_dump("After form");
+//            $form->setData($data);
+//            if ($form->isValid()) {
+            // <!> Attention : L'hydration echoue ...
+            if ($data['nature'] !== null AND !empty($files)) {
                 if ($nature === null) $nature = $this->fichierTheseService->fetchNatureFichier($data['nature']);
+                if ($data['membre']) {
+                    $membre = $this->getMembreService()->find($data['membre']);
+                    $justificatif->setMembre($membre);
+                }
                 $version = $this->fichierTheseService->fetchVersionFichier(VersionFichier::CODE_ORIG);
                 $fichiers = $this->fichierTheseService->createFichierThesesFromUpload($these, $files, $nature, $version);
                 $justificatif->setFichier($fichiers[0]);
diff --git a/module/Soutenance/src/Soutenance/Controller/PresoutenanceController.php b/module/Soutenance/src/Soutenance/Controller/PresoutenanceController.php
index e253e74fb0cefd07b32fb7dd4cdce93539bd4afd..feb2a04cc4c1ea499d42e5c87c441675cbec27e2 100644
--- a/module/Soutenance/src/Soutenance/Controller/PresoutenanceController.php
+++ b/module/Soutenance/src/Soutenance/Controller/PresoutenanceController.php
@@ -692,7 +692,9 @@ class PresoutenanceController extends AbstractController
         /** @var Membre $membre */
         foreach ($proposition->getMembres() as $membre) {
             if ($membre->estMembre()) {
-                $email = ($membre->getIndividu() and $membre->getIndividu()->getEmailPro()) ? $membre->getIndividu()->getEmailPro() : $membre->getEmail();
+                $email = null;
+                if ($membre->getIndividu() and $membre->getIndividu()->getEmailPro()) $email = $membre->getIndividu()->getEmailPro();
+                if ($email === null or trim($email) === '') $email = $membre->getEmail();
                 /** @see PresoutenanceController::convocationMembreAction() */
                 $url = $this->url()->fromRoute('soutenance/presoutenance/convocation-membre', ['proposition' => $proposition->getId(), 'membre' => $membre->getId()], ['force_canonical' => true], true);
                 try {
diff --git a/module/Soutenance/src/Soutenance/Form/Justificatif/JusticatifHydrator.php b/module/Soutenance/src/Soutenance/Form/Justificatif/JusticatifHydrator.php
index 55ddf51056784f0c9d93cb3f372637674c239d7e..efd25f5d1b6cf39731f5db7d2babde21fb9ffca1 100644
--- a/module/Soutenance/src/Soutenance/Form/Justificatif/JusticatifHydrator.php
+++ b/module/Soutenance/src/Soutenance/Form/Justificatif/JusticatifHydrator.php
@@ -40,6 +40,7 @@ class JusticatifHydrator implements HydratorInterface {
     {
         /** @var Membre $membre */
         $membre = $this->getMembreService()->find($data['membre']);
+
         $object->setMembre($membre);
         return $object;
     }
diff --git a/module/Soutenance/src/Soutenance/Form/Justificatif/JustificatifForm.php b/module/Soutenance/src/Soutenance/Form/Justificatif/JustificatifForm.php
index 4143d938388f2464f51aa344841169653ab8477f..abd017a2ca8364f628317c8121ee6b00cad2502d 100644
--- a/module/Soutenance/src/Soutenance/Form/Justificatif/JustificatifForm.php
+++ b/module/Soutenance/src/Soutenance/Form/Justificatif/JustificatifForm.php
@@ -83,7 +83,7 @@ class JustificatifForm extends Form {
         $this->setInputFilter((new Factory())->createInputFilter([
             'nature'    => [
                 'name' => 'nature',
-                'required' => true,
+                'required' => false,
             ],
             'fichier'   => [
                 'name' => 'fichier',
diff --git a/module/Soutenance/src/Soutenance/Service/Notification/SoutenanceNotificationFactory.php b/module/Soutenance/src/Soutenance/Service/Notification/SoutenanceNotificationFactory.php
index 0cdde9f0d724df26245746f3838faf390257029b..fe0c839a1da2652b3a8d09a5f75095dca19d88eb 100644
--- a/module/Soutenance/src/Soutenance/Service/Notification/SoutenanceNotificationFactory.php
+++ b/module/Soutenance/src/Soutenance/Service/Notification/SoutenanceNotificationFactory.php
@@ -674,6 +674,13 @@ class SoutenanceNotificationFactory extends NotificationFactory
         $these = $proposition->getThese();
         $pdcData = $this->getTheseService()->fetchInformationsPageDeCouverture($these);
 
+        if ($email === null or $email === '') {
+            throw new RuntimeException("Aucune adresse électronique pour le doctorant [".$doctorant->getIndividu()->getNomComplet()."]");
+        }
+        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
+            throw new RuntimeException("L'adresse électronique est mal formée pour le doctorant [".$doctorant->getIndividu()->getNomComplet()."]");
+        }
+
         $notif = new Notification();
         $notif
             ->setSubject("Convocation pour la soutenance de thèse de  " . $doctorant->getNomComplet())
@@ -709,6 +716,13 @@ class SoutenanceNotificationFactory extends NotificationFactory
         $these = $proposition->getThese();
         $pdcData = $this->getTheseService()->fetchInformationsPageDeCouverture($these);
 
+        if ($email === null or $email === '') {
+            throw new RuntimeException("Aucune adresse électronique pour le membre [".$membre->getDenomination()."]");
+        }
+        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
+            throw new RuntimeException("L'adresse électronique est mal formée pour le membre [".$membre->getDenomination()."]");
+        }
+
         $notif = new Notification();
         $notif
             ->setSubject("Convocation pour la soutenance de thèse de  " . $doctorant->getNomComplet())