diff --git a/src/app/acknowledgementReceipt/models/AcknowledgementReceiptModel.php b/src/app/acknowledgementReceipt/models/AcknowledgementReceiptModel.php
index 38305406b7049382c24f942d3a5e7d354ca6eb84..72ed840bcc0cfb7e94a3402d1aa97b7b1ba1d6ce 100644
--- a/src/app/acknowledgementReceipt/models/AcknowledgementReceiptModel.php
+++ b/src/app/acknowledgementReceipt/models/AcknowledgementReceiptModel.php
@@ -70,7 +70,7 @@ class AcknowledgementReceiptModel
 
     public static function create(array $aArgs)
     {
-        ValidatorModel::notEmpty($aArgs, ['resId', 'type', 'format', 'userId', 'contactAddressId', 'docserverId', 'path', 'filename', 'fingerprint']);
+        ValidatorModel::notEmpty($aArgs, ['resId', 'type', 'format', 'userId', 'contactId', 'docserverId', 'path', 'filename', 'fingerprint']);
         ValidatorModel::intVal($aArgs, ['resId', 'userId']);
         ValidatorModel::stringType($aArgs, ['type', 'format', 'docserverId', 'path', 'filename', 'fingerprint']);
 
@@ -84,7 +84,7 @@ class AcknowledgementReceiptModel
                 'type'                  => $aArgs['type'],
                 'format'                => $aArgs['format'],
                 'user_id'               => $aArgs['userId'],
-                'contact_address_id'    => $aArgs['contactAddressId'],
+                'contact_id'            => $aArgs['contactId'],
                 'creation_date'         => 'CURRENT_TIMESTAMP',
                 'docserver_id'          => $aArgs['docserverId'],
                 'path'                  => $aArgs['path'],
diff --git a/src/app/action/controllers/AcknowledgementReceiptTrait.php b/src/app/action/controllers/AcknowledgementReceiptTrait.php
index ed6e6126e9863181b01012bf5c934e53da34f531..b8499c4cd4b19a62cffb9aeb6be701b53df01df2 100644
--- a/src/app/action/controllers/AcknowledgementReceiptTrait.php
+++ b/src/app/action/controllers/AcknowledgementReceiptTrait.php
@@ -22,6 +22,7 @@ use Doctype\models\DoctypeModel;
 use Email\controllers\EmailController;
 use Entity\models\EntityModel;
 use Resource\models\ResModel;
+use Resource\models\ResourceContactModel;
 use SrcCore\models\DatabaseModel;
 use SrcCore\models\ValidatorModel;
 use Template\models\TemplateModel;
@@ -30,30 +31,22 @@ use User\models\UserModel;
 
 trait AcknowledgementReceiptTrait
 {
-    public static function createAcknowledgementReceipts(array $aArgs)
+    public static function createAcknowledgementReceipts(array $args)
     {
-        ValidatorModel::notEmpty($aArgs, ['resId']);
-        ValidatorModel::intVal($aArgs, ['resId']);
+        ValidatorModel::notEmpty($args, ['resId']);
+        ValidatorModel::intVal($args, ['resId']);
 
-        $resource = ResModel::getById(['select' => ['type_id', 'destination', 'subject', 'category_id', 'address_id', 'is_multicontacts'], 'resId' => $aArgs['resId']]);
+        $resource = ResModel::getById(['select' => ['type_id', 'destination', 'subject', 'category_id'], 'resId' => $args['resId']]);
         if (empty($resource) || $resource['category_id'] != 'incoming') {
             return [];
         }
 
-        $contactsToProcess = [];
-        if ($resource['is_multicontacts'] == 'Y') {
-            $multiContacts = DatabaseModel::select([
-                'select'    => ['address_id'],
-                'table'     => ['contacts_res'],
-                'where'     => ['res_id = ?', 'mode = ?', 'address_id != ?'],
-                'data'      => [$aArgs['resId'], 'multi', 0]
-            ]);
-            foreach ($multiContacts as $multiContact) {
-                $contactsToProcess[] = $multiContact['address_id'];
-            }
-        } else {
-            $contactsToProcess[] = $resource['address_id'];
-        }
+        $contactsToProcess = ResourceContactModel::get([
+            'select' => ['item_id'],
+            'where' => ['res_id = ?', 'type = ?', 'mode = ?'],
+            'data' => [$args['resId'], 'contact', 'sender']
+        ]);
+        $contactsToProcess = array_column($contactsToProcess, 'item_id');
 
         foreach ($contactsToProcess as $contactToProcess) {
             if (empty($contactToProcess)) {
@@ -88,9 +81,9 @@ trait AcknowledgementReceiptTrait
         $emailsToSend = [];
         DatabaseModel::beginTransaction();
         foreach ($contactsToProcess as $contactToProcess) {
-            $contact = ContactModel::getByAddressId(['addressId' => $contactToProcess, 'select' => ['email', 'address_street', 'address_town', 'address_postal_code']]);
+            $contact = ContactModel::getById(['select' => ['email', 'address_street', 'address_town', 'address_postcode'], 'id' => $contactToProcess]);
 
-            if (empty($contact['email']) && (empty($contact['address_street']) || empty($contact['address_town']) || empty($contact['address_postal_code']))) {
+            if (empty($contact['email']) && (empty($contact['address_street']) || empty($contact['address_town']) || empty($contact['address_postcode']))) {
                 DatabaseModel::rollbackTransaction();
                 return [];
             }
@@ -102,7 +95,7 @@ trait AcknowledgementReceiptTrait
                 }
                 $mergedDocument = MergeController::mergeDocument([
                     'content'   => $template[0]['template_content'],
-                    'data'      => ['resId' => $aArgs['resId'], 'contactAddressId' => $contactToProcess, 'userId' => $currentUser['id']]
+                    'data'      => ['resId' => $args['resId'], 'contactId' => $contactToProcess, 'userId' => $currentUser['id']]
                 ]);
                 $format = 'html';
             } else {
@@ -112,7 +105,7 @@ trait AcknowledgementReceiptTrait
                 }
                 $mergedDocument = MergeController::mergeDocument([
                     'path'  => $pathToDocument,
-                    'data'  => ['resId' => $aArgs['resId'], 'contactAddressId' => $contactToProcess, 'userId' => $currentUser['id']]
+                    'data'  => ['resId' => $args['resId'], 'contactId' => $contactToProcess, 'userId' => $currentUser['id']]
                 ]);
                 $encodedDocument = ConvertPdfController::convertFromEncodedResource(['encodedResource' => $mergedDocument['encodedDocument']]);
                 $mergedDocument['encodedDocument'] = $encodedDocument["encodedResource"];
@@ -137,11 +130,11 @@ trait AcknowledgementReceiptTrait
             }
 
             $id = AcknowledgementReceiptModel::create([
-                'resId'             => $aArgs['resId'],
+                'resId'             => $args['resId'],
                 'type'              => $templateAttachmentType,
                 'format'            => $format,
                 'userId'            => $currentUser['id'],
-                'contactAddressId'  => $contactToProcess,
+                'contactId'         => $contactToProcess,
                 'docserverId'       => 'ACKNOWLEDGEMENT_RECEIPTS',
                 'path'              => $storeResult['directory'],
                 'filename'          => $storeResult['file_destination_name'],
@@ -168,7 +161,7 @@ trait AcknowledgementReceiptTrait
                     'recipients'    => [$email['email']],
                     'object'        => '[AR] ' . (empty($resource['subject']) ? '' : substr($resource['subject'], 0, 100)),
                     'body'          => base64_decode($email['encodedHtml']),
-                    'document'      => ['id' => $aArgs['resId'], 'isLinked' => false, 'original' => true],
+                    'document'      => ['id' => $args['resId'], 'isLinked' => false, 'original' => true],
                     'isHtml'        => true,
                     'status'        => 'TO_SEND'
                 ],
diff --git a/src/app/action/controllers/PreProcessActionController.php b/src/app/action/controllers/PreProcessActionController.php
index bf068e5f0d275c043fe162ca0d7c7110f0822092..214696da2ca4e430e4519cf06d378eb782a91d5f 100755
--- a/src/app/action/controllers/PreProcessActionController.php
+++ b/src/app/action/controllers/PreProcessActionController.php
@@ -28,6 +28,7 @@ use Parameter\models\ParameterModel;
 use Resource\controllers\ResController;
 use Resource\controllers\ResourceListController;
 use Resource\models\ResModel;
+use Resource\models\ResourceContactModel;
 use Respect\Validation\Validator;
 use Shipping\controllers\ShippingTemplateController;
 use Shipping\models\ShippingTemplateModel;
@@ -35,7 +36,6 @@ use Slim\Http\Request;
 use Slim\Http\Response;
 use SrcCore\controllers\PreparedClauseController;
 use SrcCore\models\CoreConfigModel;
-use SrcCore\models\DatabaseModel;
 use Template\models\TemplateModel;
 use User\models\UserEntityModel;
 use User\models\UserModel;
@@ -150,11 +150,11 @@ class PreProcessActionController
         return $response->withJson(['entities' => $allEntities, 'users' => $users, 'keepDestForRedirection' => !empty($parameter['param_value_int'])]);
     }
 
-    public function checkAcknowledgementReceipt(Request $request, Response $response, array $aArgs)
+    public function checkAcknowledgementReceipt(Request $request, Response $response, array $args)
     {
         $currentUser = UserModel::getByLogin(['login' => $GLOBALS['userId'], 'select' => ['id']]);
 
-        $errors = ResourceListController::listControl(['groupId' => $aArgs['groupId'], 'userId' => $aArgs['userId'], 'basketId' => $aArgs['basketId'], 'currentUserId' => $currentUser['id']]);
+        $errors = ResourceListController::listControl(['groupId' => $args['groupId'], 'userId' => $args['userId'], 'basketId' => $args['basketId'], 'currentUserId' => $currentUser['id']]);
         if (!empty($errors['errors'])) {
             return $response->withStatus($errors['code'])->withJson(['errors' => $errors['errors']]);
         }
@@ -206,7 +206,7 @@ class PreProcessActionController
         $data['resources'] = $resourcesForProcess;
 
         foreach ($data['resources'] as $resId) {
-            $resource = ResModel::getById(['select' => ['res_id', 'category_id', 'address_id', 'is_multicontacts', 'alt_identifier', 'type_id', 'destination'], 'resId' => $resId]);
+            $resource = ResModel::getById(['select' => ['res_id', 'category_id', 'alt_identifier', 'type_id', 'destination'], 'resId' => $resId]);
 
             if (empty($resource)) {
                 $noSendAR['number'] += 1;
@@ -290,25 +290,12 @@ class PreProcessActionController
             }
 
             //Verify associated contact
-            $contactsToProcess = [];
-            if ($resource['is_multicontacts'] == 'Y') {
-                $multiContacts = DatabaseModel::select([
-                    'select'    => ['address_id'],
-                    'table'     => ['contacts_res'],
-                    'where'     => ['res_id = ?', 'mode = ?', 'address_id != ?'],
-                    'data'      => [$resId, 'multi', 0]
-                ]);
-                foreach ($multiContacts as $multiContact) {
-                    $contactsToProcess[] = $multiContact['address_id'];
-                }
-            } else {
-                $contactsToProcess[] = $resource['address_id'];
-            }
-            if (empty($contactsToProcess)) {
-                $noSendAR['number'] += 1;
-                $noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $resource['alt_identifier'], 'info' => _NO_CONTACT ];
-                continue;
-            }
+            $contactsToProcess = ResourceContactModel::get([
+                'select' => ['item_id'],
+                'where' => ['res_id = ?', 'type = ?', 'mode = ?'],
+                'data' => [$resId, 'contact', 'sender']
+            ]);
+            $contactsToProcess = array_column($contactsToProcess, 'item_id');
 
             //Verify contact informations
             $email = 0;
@@ -320,9 +307,9 @@ class PreProcessActionController
                     continue 2;
                 }
 
-                $contact = ContactModel::getByAddressId(['addressId' => $contactToProcess, 'select' => ['email', 'address_street', 'address_town', 'address_postal_code']]);
+                $contact = ContactModel::getById(['select' => ['*'], 'id' => $contactToProcess]);
 
-                if (empty($contact['email']) && (empty($contact['address_street']) || empty($contact['address_town']) || empty($contact['address_postal_code']))) {
+                if (empty($contact['email']) && (empty($contact['address_street']) || empty($contact['address_town']) || empty($contact['address_postcode']))) {
                     $noSendAR['number'] += 1;
                     $noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $resource['alt_identifier'], 'info' => _USER_MISSING_INFORMATIONS ];
                     continue 2;
@@ -336,7 +323,7 @@ class PreProcessActionController
                     } else {
                         $email += 1;
                     }
-                } elseif (!empty($contact['address_street']) && !empty($contact['address_town']) && !empty($contact['address_postal_code'])) {
+                } elseif (!empty($contact['address_street']) && !empty($contact['address_town']) && !empty($contact['address_postcode'])) {
                     if (!file_exists($pathToDocument) || !is_file($pathToDocument)) {
                         $noSendAR['number'] += 1;
                         $noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $resource['alt_identifier'], 'info' => _NO_PAPER_TEMPLATE . ' \'' . $templateAttachmentType . '\' ' . _FOR_ENTITY . ' ' . $entity['entity_label'] ];