diff --git a/modules/visa/batch/process_mailsFromSignatoryBook.php b/modules/visa/batch/process_mailsFromSignatoryBook.php
index d20f00d2697298e8f2e48b294dbb4142c7ceed8d..627cc013a0f09810d8516d8d6ade337a68e5d46e 100755
--- a/modules/visa/batch/process_mailsFromSignatoryBook.php
+++ b/modules/visa/batch/process_mailsFromSignatoryBook.php
@@ -130,6 +130,7 @@ $GLOBALS['userWS']                 = (string)$config->userWS;
 $GLOBALS['passwordWS']             = (string)$config->passwordWS;
 $GLOBALS['batchDirectory']         = $GLOBALS['MaarchDirectory'] . 'modules' . DIRECTORY_SEPARATOR . 'visa' . DIRECTORY_SEPARATOR . 'batch';
 $validatedStatus                   = (string)$config->validatedStatus;
+$validatedStatusOnlyVisa           = (string)$config->validatedStatusOnlyVisa;
 $refusedStatus                     = (string)$config->refusedStatus;
 $validatedStatusAnnot              = (string)$config->validatedStatusAnnot;
 $refusedStatusAnnot                = (string)$config->refusedStatusAnnot;
@@ -203,7 +204,6 @@ try {
         echo "\nNo class detected ! \nThe batch cannot be launched !\n\n";
         exit(102);
     }
-
 } catch (IncludeFileError $e) {
     $GLOBALS['logger']->write(
         'Problem with the php include path:' .$e .' '. get_include_path(),
@@ -301,7 +301,12 @@ foreach ($retrievedMails['isVersion'] as $resId => $value) {
     
         $GLOBALS['logger']->write('Document validated', 'INFO');
         $GLOBALS['db']->query("UPDATE res_version_attachments set status = 'OBS' WHERE res_id = ?", [$resId]);
-        Bt_processVisaWorkflow(['res_id_master' => $value->res_id_master, 'validatedStatus' => $validatedStatus]);
+        if (!empty($value->onlyVisa) && $value->onlyVisa) {
+            $status = $validatedStatusOnlyVisa;
+        } else {
+            $status = $validatedStatus;
+        }
+        Bt_processVisaWorkflow(['res_id_master' => $value->res_id_master, 'validatedStatus' => $status]);
 
         $historyInfo = 'La signature de la pièce jointe '.$resId.' (res_version_attachments) a été validée dans le parapheur externe';
         Bt_history([
@@ -378,7 +383,12 @@ foreach ($retrievedMails['noVersion'] as $resId => $value) {
 
         $GLOBALS['logger']->write('Document validated', 'INFO');
         $GLOBALS['db']->query("UPDATE res_attachments SET status = 'OBS' WHERE res_id = ?", [$resId]);
-        Bt_processVisaWorkflow(['res_id_master' => $value->res_id_master, 'validatedStatus' => $validatedStatus]);
+        if (!empty($value->onlyVisa) && $value->onlyVisa) {
+            $status = $validatedStatusOnlyVisa;
+        } else {
+            $status = $validatedStatus;
+        }
+        Bt_processVisaWorkflow(['res_id_master' => $value->res_id_master, 'validatedStatus' => $status]);
 
         $historyInfo = 'La signature de la pièce jointe '.$resId.' (res_attachments) a été validée dans le parapheur externe';
         Bt_history([
diff --git a/src/app/action/controllers/ExternalSignatoryBookTrait.php b/src/app/action/controllers/ExternalSignatoryBookTrait.php
index ecf2023c79f2092dc5c9f933a9d684b2cadb7b61..31cd7bd2881685f5d032c88c8b83baad11e7442f 100644
--- a/src/app/action/controllers/ExternalSignatoryBookTrait.php
+++ b/src/app/action/controllers/ExternalSignatoryBookTrait.php
@@ -87,12 +87,17 @@ trait ExternalSignatoryBookTrait
                     return ['errors' => ['No attachment for this mail : ' . $noAttachmentsResource['alt_identifier']]];
                 }
 
-                $attachmentToFreeze = XParaphController::sendDatas([
+                $sendedInfo = XParaphController::sendDatas([
                     'config'      => $config,
                     'resIdMaster' => $args['resId'],
                     'info'        => $args['data']['info'],
                     'steps'       => $args['data']['steps'],
                 ]);
+                if (!empty($sendedInfo['error'])) {
+                    return ['errors' => [$sendedInfo['error']]];
+                } else {
+                    $attachmentToFreeze = $sendedInfo['sended'];
+                }
             }
         }
 
diff --git a/src/app/external/externalSignatoryBook/controllers/XParaphController.php b/src/app/external/externalSignatoryBook/controllers/XParaphController.php
index 5c2c90b11a83b67963615de726b8f225b3012403..44962b5b94fd2b58a45bea9cb6367d9db9d2033f 100755
--- a/src/app/external/externalSignatoryBook/controllers/XParaphController.php
+++ b/src/app/external/externalSignatoryBook/controllers/XParaphController.php
@@ -101,7 +101,7 @@ class XParaphController
             $isError = $response['response']->children('http://schemas.xmlsoap.org/soap/envelope/')->Body;
             if (!empty($isError->Fault[0])) {
                 $error = $response['response']->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->Fault[0]->children()->detail;
-                return ['error' => $error];
+                return ['error' => (string)$error];
             } else {
                 $depotId = $response['response']->children('SOAP-ENV', true)->Body->children('ns1', true)->XPRF_DeposerResponse->children()->return->children()->depotid;
                 $attachmentToFreeze[$collId][$resId] = (string)$depotId;
@@ -213,7 +213,7 @@ class XParaphController
                 if ($state['id'] == 'refused') {
                     $aArgs['idsToRetrieve'][$version][$resId]->status = 'refused';
                     $aArgs['idsToRetrieve'][$version][$resId]->noteContent = $state['note'];
-                } elseif ($state['id'] == 'validateSignature' || $state['id'] == 'validateNoSignature') {
+                } elseif ($state['id'] == 'validateSignature' || $state['id'] == 'validateOnlyVisa') {
                     $processedFile = XParaphController::getFile(['config' => $aArgs['config'], 'depotId' => $value->external_id]);
                     if (!empty($processedFile['errors'])) {
                         unset($aArgs['idsToRetrieve'][$version][$resId]);
@@ -240,6 +240,9 @@ class XParaphController
 
                     $aArgs['idsToRetrieve'][$version][$resId]->encodedFile = $encodedFile;
                     $aArgs['idsToRetrieve'][$version][$resId]->noteContent = $state['note'];
+                    if ($state['id'] == 'validateOnlyVisa') {
+                        $aArgs['idsToRetrieve'][$version][$resId]->onlyVisa = true;
+                    }
                 } else {
                     unset($aArgs['idsToRetrieve'][$version][$resId]);
                 }
@@ -254,21 +257,25 @@ class XParaphController
     {
         // remove first step. Always deposit
         unset($aArgs['avancement'][0]);
-        $state['id'] = 'validateNoSignature';
+        $state['id'] = 'validateOnlyVisa';
         $signature   = false;
 
-        foreach ($aArgs['avancement'] as $step) {
-            if ($step['etat'] == 'ACTIVE') {
-                $state['id'] = 'ACTIVE';
-                break;
-            } elseif ($step['etat'] == 'KO') {
-                $state['id']   = 'refused';
-                $state['note'] = $step['note'];
-                break;
-            }
-            if ($step['typeEtape'] == 'SIGN') {
-                $signature = true;
+        if (!empty($aArgs['avancement'])) {
+            foreach ($aArgs['avancement'] as $step) {
+                if ($step['etat'] == 'ACTIVE') {
+                    $state['id'] = 'ACTIVE';
+                    break;
+                } elseif ($step['etat'] == 'KO') {
+                    $state['id']   = 'refused';
+                    $state['note'] = $step['note'];
+                    break;
+                }
+                if ($step['typeEtape'] == 'SIGN') {
+                    $signature = true;
+                }
             }
+        } else {
+            $state['id'] = 'ACTIVE';
         }
 
         if ($signature) {
@@ -424,5 +431,4 @@ class XParaphController
 
         return $response->withStatus(204);
     }
-
 }