diff --git a/rest/index.php b/rest/index.php
index 45e008f639e96eaab0d88583cee6bc38ad820114..c53f550be39cddd657680c1dab7cf963a3722083 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -371,6 +371,7 @@ $app->put('/resources/{resId}/sign', \SignatureBook\controllers\SignatureBookCon
 $app->put('/resources/{resId}/unsign', \SignatureBook\controllers\SignatureBookController::class . ':unsignResource');
 $app->get('/resources/{resId}/acknowledgementReceipts', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':getByResId');
 $app->get('/resources/{resId}/shippings', \Shipping\controllers\ShippingController::class . ':getByResId');
+$app->get('/resources/{resId}/messageExchanges', \MessageExchange\controllers\MessageExchangeController::class . ':getByResId');
 
 $app->put('/res/resource/status', \Resource\controllers\ResController::class . ':updateStatus');
 $app->post('/res/list', \Resource\controllers\ResController::class . ':getList');
diff --git a/src/app/external/messageExchange/controllers/MessageExchangeController.php b/src/app/external/messageExchange/controllers/MessageExchangeController.php
new file mode 100644
index 0000000000000000000000000000000000000000..e8660ec7580ed2846023dc1e4c4db74d69eb1e39
--- /dev/null
+++ b/src/app/external/messageExchange/controllers/MessageExchangeController.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * Copyright Maarch since 2008 under licence GPLv3.
+ * See LICENCE.txt file at the root folder for more details.
+ * This file is part of Maarch software.
+ *
+ */
+
+/**
+ * @brief Message Exchange Controller
+ * @author dev@maarch.org
+ */
+
+namespace MessageExchange\controllers;
+
+use MessageExchange\models\MessageExchangeModel;
+use Resource\controllers\ResController;
+use Respect\Validation\Validator;
+use Slim\Http\Request;
+use Slim\Http\Response;
+use User\models\UserModel;
+
+class MessageExchangeController
+{
+    public static function getByResId(Request $request, Response $response, array $args)
+    {
+        if (!Validator::intVal()->validate($args['resId']) || !ResController::hasRightByResId(['resId' => [$args['resId']], 'userId' => $GLOBALS['id']])) {
+            return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']);
+        }
+
+        $messagesModel = MessageExchangeModel::get([
+            'select' => [
+                'message_id', 'date', 'reference', 'type', 'sender_org_name', 'account_id', 'recipient_org_identifier', 'recipient_org_name',
+                'reception_date', 'operation_date', 'data', 'res_id_master', 'filename', 'status'
+            ],
+            'where'  => ['res_id_master = ?', "(type = 'ArchiveTransfer' or reference like '%_ReplySent')"],
+            'data'   => [$args['resId']]
+        ]);
+
+        $messages = [];
+        foreach ($messagesModel as $message) {
+            $messageType = 'm2m_' . strtoupper($message['type']);
+
+            $user = UserModel::getLabelledUserById(['login' => $message['account_id']]);
+            $sender = $user . ' (' . $message['sender_org_name'] . ')';
+
+            $recipient = $message['recipient_org_name'] . ' (' . $message['recipient_org_identifier'] . ')';
+
+            if ($message['status'] == 'S') {
+                $status = 'sent';
+            } elseif ($message['status'] == 'E') {
+                $status = 'error';
+            } elseif ($message['status'] == 'W') {
+                $status = 'wait';
+            } else {
+                $status = 'draft';
+            }
+
+            $messages[] = [
+                'messageId'     => $message['message_id'],
+                'creationDate'  => $message['date'],
+                'type'          => $messageType,
+                'sender'        => $sender,
+                'recipient'     => $recipient,
+                'receptionDate' => $message['reception_date'],
+                'operationDate' => $message['operation_date'],
+                'status'        => $status
+            ];
+        }
+
+        return $response->withJson(['messageExchanges' => $messages]);
+    }
+}
diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts
index 6b616f67f3e58a13d1b7e73adb848a535bb5e81b..02ee216032df84f51f20d7ba90421ebca37e993a 100755
--- a/src/frontend/lang/lang-fr.ts
+++ b/src/frontend/lang/lang-fr.ts
@@ -1524,4 +1524,6 @@ export const LANG_FR = {
     "noMailContact" : "Aucun contact (externe) attaché pour ce courrier",
     "noSelectedAddress": "Aucune adresse associée",
     "documentUnsigned": "La signature du document a été retirée",
+    "m2m_ARCHIVETRANSFER" : "Pli numérique",
+    "m2m_ARCHIVETRANSFERREPLY" :  "Réponse envoyée",
 };