diff --git a/src/app/external/exportSeda/controllers/ExportSEDATrait.php b/src/app/external/exportSeda/controllers/ExportSEDATrait.php
index c4b667fc7b9b34877d79349b3ef477e459d6dc7c..fa5a1089077d15eda9c45b0d63088ca0f3377303 100644
--- a/src/app/external/exportSeda/controllers/ExportSEDATrait.php
+++ b/src/app/external/exportSeda/controllers/ExportSEDATrait.php
@@ -12,6 +12,11 @@
 
 namespace ExportSeda\controllers;
 
+use Attachment\models\AttachmentModel;
+use Docserver\models\DocserverModel;
+use Docserver\models\DocserverTypeModel;
+use MessageExchange\models\MessageExchangeModel;
+use Resource\controllers\StoreController;
 use SrcCore\models\ValidatorModel;
 
 trait ExportSEDATrait
@@ -40,4 +45,100 @@ trait ExportSEDATrait
         
         return ['encodedFile' => $encodedFile];
     }
+
+    public static function checkAcknowledgmentRecordManagement(array $args)
+    {
+        ValidatorModel::notEmpty($args, ['resId']);
+        ValidatorModel::intVal($args, ['resId']);
+
+        $acknowledgement = AttachmentModel::get([
+            'select' => ['res_id_master', 'path', 'filename', 'docserver_id', 'fingerprint'],
+            'where'  => ['res_id_master = ?', 'attachment_type = ?', 'status = ?'],
+            'data'   => [$args['resId'], 'acknowledgement_record_management', 'TRA']
+        ])[0];
+        if (empty($acknowledgement)) {
+            return ['errors' => ['No acknowledgement found']];
+        }
+
+        $docserver = DocserverModel::getByDocserverId(['docserverId' => $acknowledgement['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]);
+        if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) {
+            return ['errors' => ['Docserver does not exists']];
+        }
+
+        $pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $acknowledgement['path']) . $acknowledgement['filename'];
+        if (!file_exists($pathToDocument)) {
+            return ['errors' => ['File does not exists']];
+        }
+
+        $docserverType = DocserverTypeModel::getById(['id' => $docserver['docserver_type_id'], 'select' => ['fingerprint_mode']]);
+        $fingerprint = StoreController::getFingerPrint(['filePath' => $pathToDocument, 'mode' => $docserverType['fingerprint_mode']]);
+        if (!empty($acknowledgement['fingerprint']) && $acknowledgement['fingerprint'] != $fingerprint) {
+            return ['errors' => ['Fingerprint does not match']];
+        }
+        
+        $acknowledgementXml = @simplexml_load_file($pathToDocument);
+        if (empty($acknowledgementXml)) {
+            return ['errors' => ['Acknowledgement is not readable']];
+        }
+
+        $messageExchange = MessageExchangeModel::getMessageByReference(['select' => ['message_id'], 'reference' => (string)$acknowledgementXml->MessageReceivedIdentifier]);
+        if (empty($messageExchange)) {
+            return ['errors' => ['No acknowledgement found with this reference']];
+        }
+
+        $unitIdentifier = MessageExchangeModel::getUnitIdentifierByResId(['select' => ['message_id'], 'resId' => $args['resId']]);
+        if ($unitIdentifier['message_id'] != $messageExchange['message_id']) {
+            return ['errors' => ['Wrong acknowledgement']];
+        }
+
+        return true;
+    }
+
+    public static function checkReplyRecordManagement(array $args)
+    {
+        ValidatorModel::notEmpty($args, ['resId']);
+        ValidatorModel::intVal($args, ['resId']);
+
+        $reply = AttachmentModel::get([
+            'select' => ['res_id_master', 'path', 'filename', 'docserver_id', 'fingerprint'],
+            'where'  => ['res_id_master = ?', 'attachment_type = ?', 'status = ?'],
+            'data'   => [$args['resId'], 'reply_record_management', 'TRA']
+        ])[0];
+        if (empty($reply)) {
+            return ['errors' => ['No reply found']];
+        }
+
+        $docserver = DocserverModel::getByDocserverId(['docserverId' => $reply['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]);
+        if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) {
+            return ['errors' => ['Docserver does not exists']];
+        }
+
+        $pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $reply['path']) . $reply['filename'];
+        if (!file_exists($pathToDocument)) {
+            return ['errors' => ['File does not exists']];
+        }
+
+        $docserverType = DocserverTypeModel::getById(['id' => $docserver['docserver_type_id'], 'select' => ['fingerprint_mode']]);
+        $fingerprint = StoreController::getFingerPrint(['filePath' => $pathToDocument, 'mode' => $docserverType['fingerprint_mode']]);
+        if (!empty($reply['fingerprint']) && $reply['fingerprint'] != $fingerprint) {
+            return ['errors' => ['Fingerprint does not match']];
+        }
+        
+        $replyXml = @simplexml_load_file($pathToDocument);
+        if (empty($replyXml)) {
+            return ['errors' => ['Reply is not readable']];
+        }
+
+        $messageExchange = MessageExchangeModel::getMessageByReference(['select' => ['message_id'], 'reference' => (string)$replyXml->MessageReceivedIdentifier]);
+        if (empty($messageExchange)) {
+            return ['errors' => ['No reply found with this reference']];
+        }
+
+        $unitIdentifier = MessageExchangeModel::getUnitIdentifierByResId(['select' => ['message_id'], 'resId' => $args['resId']]);
+        if ($unitIdentifier['message_id'] != $messageExchange['message_id']) {
+            return ['errors' => ['Wrong reply']];
+        }
+
+        return true;
+    }
 }
diff --git a/src/app/external/exportSeda/controllers/PreProcessActionSEDATrait.php b/src/app/external/exportSeda/controllers/PreProcessActionSEDATrait.php
index e3ada08628d5aaf1fab85573994898b18ced1f36..25c8ce8b2e3945d7dca6c576b037009ec04a6e9a 100644
--- a/src/app/external/exportSeda/controllers/PreProcessActionSEDATrait.php
+++ b/src/app/external/exportSeda/controllers/PreProcessActionSEDATrait.php
@@ -89,7 +89,7 @@ trait PreProcessActionSEDATrait
                 continue;
             }
             
-            $acknowledgementXml = simplexml_load_file($pathToDocument);
+            $acknowledgementXml = @simplexml_load_file($pathToDocument);
             if (empty($acknowledgementXml)) {
                 $resourcesInformations['errors'][] = ['alt_identifier' => $altIdentifiers[$resId], 'res_id' => $resId, 'reason' => 'recordManagement_acknowledgementNotReadable'];
                 continue;
@@ -107,7 +107,7 @@ trait PreProcessActionSEDATrait
                 continue;
             }
 
-            $resourcesInformation['success'][] = ['alt_identifier' => $altIdentifiers[$resId], 'res_id' => $resId];
+            $resourcesInformations['success'][] = $resId;
         }
 
         return $response->withJson(['resourcesInformations' => $resourcesInformations]);
@@ -175,7 +175,7 @@ trait PreProcessActionSEDATrait
                 continue;
             }
             
-            $replyXml = simplexml_load_file($pathToDocument);
+            $replyXml = @simplexml_load_file($pathToDocument);
             if (empty($replyXml)) {
                 $resourcesInformations['errors'][] = ['alt_identifier' => $altIdentifiers[$resId], 'res_id' => $resId, 'reason' => 'recordManagement_replyNotReadable'];
                 continue;
@@ -193,7 +193,7 @@ trait PreProcessActionSEDATrait
                 continue;
             }
 
-            $resourcesInformation['success'][] = ['alt_identifier' => $altIdentifiers[$resId]['alt_identifier'], 'res_id' => $resId];
+            $resourcesInformations['success'][] = $resId;
         }
 
         return $response->withJson(['resourcesInformations' => $resourcesInformations]);