diff --git a/bin/signatureBook/process_mailsFromSignatoryBook.php b/bin/signatureBook/process_mailsFromSignatoryBook.php
index 386dbf2a3b6052ab4a5ff19da0be52a6739fcff4..cec48b8b32149c7d35aea21eeb96dc9380aa889e 100755
--- a/bin/signatureBook/process_mailsFromSignatoryBook.php
+++ b/bin/signatureBook/process_mailsFromSignatoryBook.php
@@ -311,6 +311,10 @@ foreach ($retrievedMails['noVersion'] as $resId => $value) {
         }
         Bt_validatedMail(['status' => $status, 'resId' => $value['res_id_master']]);
 
+        if (empty($validateVisaWorkflow[$value['res_id_master']]['WorkflowCompleted']) || $validateVisaWorkflow[$value['res_id_master']]['WorkflowCompleted'] == false) {
+            $validateVisaWorkflow[$value['res_id_master']]['WorkflowCompleted'] = true;
+        }
+
         $historyInfo = 'La signature de la pièce jointe ' . $historyIdentifier . ' a été validée dans le parapheur externe' . $additionalHistoryInfo;
     } elseif ($value['status'] == 'refused') {
         if (!empty($value['encodedFile'])) {
@@ -346,7 +350,8 @@ foreach ($retrievedMails['noVersion'] as $resId => $value) {
             'where' => ['res_id = ?'],
             'data' => [$value['res_id_master']]
         ]);
-    
+        
+        $validateVisaWorkflow[$value['res_id_master']]['WorkflowCompleted'] = false;
         $historyInfo = 'La signature de la pièce jointe ' . $historyIdentifier . ' a été refusée dans le parapheur externe' . $additionalHistoryInfo;
     }
     if (in_array($value['status'], ['validated', 'refused'])) {
@@ -432,6 +437,11 @@ foreach ($retrievedMails['resLetterbox'] as $resId => $value) {
             if ($value['status'] == 'validatedNote') {
                 $status = $validatedStatusAnnot;
             }
+
+            if (empty($validateVisaWorkflow[$value['res_id']]['WorkflowCompleted']) || $validateVisaWorkflow[$value['res_id_master']]['WorkflowCompleted'] == false) {
+                $validateVisaWorkflow[$value['res_id']]['WorkflowCompleted'] = true;
+            }
+
             $history = 'Le document ' . $historyIdentifier . ' a été validé dans le parapheur externe' . $additionalHistoryInfo;
         } elseif (in_array($value['status'], ['refusedNote', 'refused'])) {
             Bt_writeLog(['level' => 'INFO', 'message' => 'Document refused']);
@@ -439,6 +449,7 @@ foreach ($retrievedMails['resLetterbox'] as $resId => $value) {
             if ($value['status'] == 'refusedNote') {
                 $status = $refusedStatusAnnot;
             }
+            $validateVisaWorkflow[$value['res_id']]['WorkflowCompleted'] = false;
             $history = 'Le document ' . $historyIdentifier . ' a été refusé dans le parapheur externe' . $additionalHistoryInfo;
         }
         Bt_history([
@@ -459,6 +470,14 @@ foreach ($retrievedMails['resLetterbox'] as $resId => $value) {
     }
 }
 
+// valide circuit visa
+// only, if all documents of letterbox are signed
+foreach ($validateVisaWorkflow as $key => $value) {
+    if (!empty($value['WorkflowCompleted']) && $value['WorkflowCompleted']) {
+        \ExternalSignatoryBook\controllers\FastParapheurController::processVisaWorkflow(['res_id' => $key, 'processSignatory' => true]);
+    }
+}
+
 Bt_writeLog(['level' => 'INFO', 'message' => 'End of process']);
 Bt_writeLog(['level' => 'INFO', 'message' => $nbMailsRetrieved.' document(s) retrieved']);