diff --git a/src/app/acknowledgementReceipt/controllers/AcknowledgementReceiptController.php b/src/app/acknowledgementReceipt/controllers/AcknowledgementReceiptController.php
index 94678c5e6b79476ef5ea206a6fe5f0e820d09277..f12d213255ec138393ce10943c91e641462f7908 100644
--- a/src/app/acknowledgementReceipt/controllers/AcknowledgementReceiptController.php
+++ b/src/app/acknowledgementReceipt/controllers/AcknowledgementReceiptController.php
@@ -53,28 +53,38 @@ class AcknowledgementReceiptController
         $basket = BasketModel::getById(['id' => $aArgs['basketId'], 'select' => ['basket_clause', 'basket_res_order', 'basket_name']]);
         $user   = UserModel::getById(['id' => $aArgs['userId'], 'select' => ['user_id']]);
 
+        $acknowledgements = AcknowledgementReceiptModel::getByIds([
+            'select'  => ['res_id', 'docserver_id', 'path', 'filename', 'fingerprint', 'send_date'],
+            'ids'     => $bodyData['resources'],
+            'orderBy' => ['res_id']
+        ]);
+
+        $resourcesInBasket = [];
+        foreach ($acknowledgements as $acknowledgement) {
+            $resourcesInBasket[$acknowledgement['res_id']] = $acknowledgement['res_id'];
+        }
+
         $whereClause = PreparedClauseController::getPreparedClause(['clause' => $basket['basket_clause'], 'login' => $user['user_id']]);
         $rawResourcesInBasket = ResModel::getOnView([
             'select'    => ['res_id'],
             'where'     => [$whereClause, 'res_view_letterbox.res_id in (?)'],
-            'data'      => [$bodyData['resources']]
+            'data'      => [$resourcesInBasket]
         ]);
 
         $allResourcesInBasket = [];
-        foreach ($rawResourcesInBasket as $resource) {
-            $allResourcesInBasket[] = $resource['res_id'];
+        foreach ($rawResourcesInBasket as $rawResourceInBasket) {
+            $allResourcesInBasket[$rawResourceInBasket['res_id']] = $rawResourceInBasket['res_id'];
+        }
+
+        $aDiff = array_diff($resourcesInBasket, $allResourcesInBasket);
+        if (!empty($aDiff)) {
+            return $response->withStatus(403)->withJson(['errors' => 'Documents out of perimeter']);
         }
 
         $pdf = new Fpdi('P', 'pt');
         $pdf->setPrintHeader(false);
 
-        $acknowledgement = AcknowledgementReceiptModel::getByResIds([
-            'select'  => ['res_id', 'docserver_id', 'path', 'filename', 'fingerprint', 'send_date'],
-            'resIds'  => $allResourcesInBasket,
-            'orderBy' => ['res_id']
-        ]);
-
-        foreach ($acknowledgement as $value) {
+        foreach ($acknowledgements as $value) {
             if (empty($value['send_date'])) {
                 $docserver = DocserverModel::getByDocserverId(['docserverId' => $value['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]);
                 if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) {
@@ -90,7 +100,13 @@ class AcknowledgementReceiptController
                     return $response->withStatus(400)->withJson(['errors' => 'Fingerprints do not match']);
                 }
 
-                $pdf->setSourceFile($pathToDocument);
+                $nbPages = $pdf->setSourceFile($pathToDocument);
+                for ($i = 1; $i <= $nbPages; $i++) {
+                    $page = $pdf->importPage($i);
+                    $size = $pdf->getTemplateSize($page);
+                    $pdf->AddPage($size['orientation'], $size);
+                    $pdf->useImportedPage($page);
+                }
             }
         }
 
@@ -125,7 +141,7 @@ class AcknowledgementReceiptController
         $data['resources'] = array_slice($data['resources'], 0, 500);
 
         
-        foreach($data['resources'] as $resId) {
+        foreach ($data['resources'] as $resId) {
             $ext = ResModel::getExtById(['select' => ['res_id', 'category_id', 'address_id', 'is_multicontacts', 'alt_identifier'], 'resId' => $resId]);
                         
             //Verify resource category
@@ -208,7 +224,7 @@ class AcknowledgementReceiptController
                     $noSendAR['number'] += 1;
                     $noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => 'No user informations' ];
                     continue;
-                }  
+                }
                 
                 if (!empty($contact['email'])) {
                     if (empty($template[0]['template_content'])) {
@@ -218,8 +234,7 @@ class AcknowledgementReceiptController
                     } else {
                         $email += 1;
                     }
-                    
-                } else if (!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_postal_code'])) {
                     if (!file_exists($pathToDocument)) {
                         $noSendAR['number'] += 1;
                         $noSendAR['list'][] = ['resId' => $resId, 'alt_identifier' => $ext['alt_identifier'], 'info' => 'No paper template' ];
@@ -231,7 +246,7 @@ class AcknowledgementReceiptController
             }
             
             $sendEmail += $email;
-            $sendPaper += $paper;            
+            $sendPaper += $paper;
         }
 
         return $response->withJson(['sendEmail' => $sendEmail, 'sendPaper' => $sendPaper, 'noSendAR' => $noSendAR, 'alreadySend' => $alreadySend]);
diff --git a/src/app/acknowledgementReceipt/models/AcknowledgementReceiptModel.php b/src/app/acknowledgementReceipt/models/AcknowledgementReceiptModel.php
index ef66a12f5dad2277aa72364b3be263fc4b336c62..ba097e9016df39220b72e8625da78101d2e0365e 100644
--- a/src/app/acknowledgementReceipt/models/AcknowledgementReceiptModel.php
+++ b/src/app/acknowledgementReceipt/models/AcknowledgementReceiptModel.php
@@ -36,23 +36,19 @@ class AcknowledgementReceiptModel
         return $aTemplates;
     }
 
-    public static function getById(array $aArgs)
+    public static function getByIds(array $aArgs)
     {
-        ValidatorModel::notEmpty($aArgs, ['id']);
-        ValidatorModel::intVal($aArgs, ['id']);
+        ValidatorModel::notEmpty($aArgs, ['ids']);
+        ValidatorModel::arrayType($aArgs, ['ids']);
 
         $aReturn = DatabaseModel::select([
             'select'    => empty($aArgs['select']) ? ['*'] : $aArgs['select'],
             'table'     => ['acknowledgement_receipts'],
-            'where'     => ['id = ?'],
-            'data'      => [$aArgs['id']]
+            'where'     => ['id in (?)'],
+            'data'      => [$aArgs['ids']]
         ]);
 
-        if (empty($aReturn[0])) {
-            return [];
-        }
-
-        return $aReturn[0];
+        return $aReturn;
     }
 
     public static function getByResIds(array $aArgs = [])
diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php
index 81d2ba86defeaf80cba9b638184d4964319c2463..deb8c226d708129a91d9f00e72ba31b7e33ba105 100755
--- a/src/app/resource/controllers/ResController.php
+++ b/src/app/resource/controllers/ResController.php
@@ -403,24 +403,24 @@ class ResController
             return $response->withStatus(400)->withJson(['errors' => 'Document does not exist']);
         }
 
-        $document = AcknowledgementReceiptModel::getById([
+        $document = AcknowledgementReceiptModel::getByIds([
             'select'  => ['docserver_id', 'path', 'filename', 'fingerprint'],
-            'id'      => $aArgs['id']
+            'ids'      => [$aArgs['id']]
         ]);
 
-        $docserver = DocserverModel::getByDocserverId(['docserverId' => $document['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]);
+        $docserver = DocserverModel::getByDocserverId(['docserverId' => $document[0]['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]);
         if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) {
             return $response->withStatus(400)->withJson(['errors' => 'Docserver does not exist']);
         }
 
-        $pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $document['path']) . $document['filename'];
+        $pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $document[0]['path']) . $document[0]['filename'];
 
         if (!file_exists($pathToDocument)) {
             return $response->withStatus(404)->withJson(['errors' => 'Document not found on docserver']);
         }
 
         $fingerprint = StoreController::getFingerPrint(['filePath' => $pathToDocument]);
-        if (!empty($document['fingerprint']) && $document['fingerprint'] != $fingerprint) {
+        if (!empty($document[0]['fingerprint']) && $document[0]['fingerprint'] != $fingerprint) {
             return $response->withStatus(400)->withJson(['errors' => 'Fingerprints do not match']);
         }
 
diff --git a/src/frontend/app/actions/actions-list.component.ts b/src/frontend/app/actions/actions-list.component.ts
index 9fac171484093dd3cb3ca788cfb7df47f082f3d7..93acb06b90ee33aa54c7e7311dfa40544a3b71b2 100644
--- a/src/frontend/app/actions/actions-list.component.ts
+++ b/src/frontend/app/actions/actions-list.component.ts
@@ -186,7 +186,7 @@ export class ActionsListComponent implements OnInit {
         });
     }
 
-    createAcknowledgementReceiptAction() {
+    createAcknowledgementReceiptsAction() {
         const dialogRef = this.dialog.open(CreateAcknowledgementReceiptActionComponent, {
             width: '500px',
             data: {
diff --git a/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.html b/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.html
index b271561a6804955507c2992f5a137559c83e0256..7effec33a9299a9d21f5ab78142343098c3a8c90 100644
--- a/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.html
+++ b/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.html
@@ -1,20 +1,38 @@
 <h1 mat-dialog-title>Confirmer "{{data.action.label_action}}"</h1>
-<div mat-dialog-content>
+<div mat-dialog-content *ngIf="!loadingInit">
     <div *ngIf="loading" class="loading" style="display:flex;height:100%;">
         <mat-spinner style="margin:auto;"></mat-spinner>
     </div>
     <div class="row">
         <div class="col-md-12">
-            {{lang.makeActionOn}} 
+            <div *ngIf="acknowledgement.sendEmail || acknowledgement.sendPaper">{{lang.makeActionOn}} 
             <b *ngIf="data.contextMode" color="primary" class="highlight">{{data.contextChrono}}</b>
-            <b *ngIf="!data.contextMode" color="primary" class="highlight">{{data.selectedRes.length}} {{lang.elements}}</b> ?
+            <b *ngIf="!data.contextMode" color="primary" class="highlight">{{data.selectedRes.length}} {{lang.elements}}<br></b> ?<br><br></div>
+            <div *ngIf="acknowledgement.alreadySend.number">
+                <div class="alert-message alert-message-info" role="alert" style="margin-top: 30px;">{{acknowledgement.alreadySend.number}} accusé(s) de réception déjà envoyé(s) :</div>
+                <mat-list>
+                    <mat-list-item *ngFor="let info of acknowledgement.alreadySend.list">
+                        <span mat-line>{{info.alt_identifier}}</span>
+                    </mat-list-item>
+                </mat-list>
+            </div>
+            <div *ngIf="acknowledgement.noSendAR.number">
+                <div class="alert-message alert-message-danger" role="alert" style="margin-top: 30px;">{{acknowledgement.noSendAR.number}} accusé(s) de réception impossible à envoyer :</div>
+                <mat-list>
+                    <mat-list-item *ngFor="let info of acknowledgement.noSendAR.list">
+                        <span mat-line>{{info.alt_identifier}} : {{info.info}} </span>
+                    </mat-list-item>
+                </mat-list>
+            </div>
+            <b *ngIf="acknowledgement.sendEmail" color="primary" class="highlight">{{acknowledgement.sendEmail}} accusé(s) de réception électronique à envoyer<br></b><br>
+            <b *ngIf="acknowledgement.sendPaper" color="primary" class="highlight">{{acknowledgement.sendPaper}} accusé(s) de réception papier à générer<br></b><br>
         </div>
-        <div class="col-md-12">
+        <div class="col-md-12" *ngIf="acknowledgement.sendEmail || acknowledgement.sendPaper">
             <app-note-editor #noteEditor></app-note-editor>
         </div>
     </div>
 </div>
 <div mat-dialog-actions class="actions">
-    <button mat-raised-button mat-button color="primary" [disabled]="loading" (click)="onSubmit()">{{lang.validate}}</button>
+    <button mat-raised-button mat-button color="primary" [disabled]="loading || (!acknowledgement.sendEmail && !acknowledgement.sendPaper)" (click)="onSubmit()" >{{lang.validate}}</button>
     <button mat-raised-button mat-button [disabled]="loading" [mat-dialog-close]="">{{lang.cancel}}</button>
 </div>
diff --git a/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.scss b/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.scss
index 6de958ac477b05058fa3e5eeab40d680f58533a5..44d9e9f43b6146566ac55c07a82835bf5c1afb1b 100644
--- a/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.scss
+++ b/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.scss
@@ -22,3 +22,79 @@
     z-index: 1;
     overflow: hidden;
 }
+
+.alert-message
+{
+    margin: 20px 0;
+    padding: 20px;
+    border-left: 3px solid #eee;
+}
+.alert-message h4
+{
+    margin-top: 0;
+    margin-bottom: 5px;
+}
+.alert-message p:last-child
+{
+    margin-bottom: 0;
+}
+.alert-message code
+{
+    background-color: #fff;
+    border-radius: 3px;
+}
+.alert-message-success
+{
+    background-color: #F4FDF0;
+    border-color: #3C763D;
+}
+.alert-message-success h4
+{
+    color: #3C763D;
+}
+.alert-message-danger
+{
+    background-color: #8e3e521a;
+    border-color: #8e3e52;
+    color: #8e3e52;
+}
+.alert-message-danger h4
+{
+    color: #8e3e52;
+}
+.alert-message-warning
+{
+    background-color: #fcf8f2;
+    border-color: #f0ad4e;
+}
+.alert-message-warning h4
+{
+    color: #f0ad4e;
+}
+.alert-message-info
+{
+    background-color: #f4f8fa;
+    border-color: #5bc0de;
+}
+.alert-message-info h4
+{
+    color: #5bc0de;
+}
+.alert-message-default
+{
+    background-color: #EEE;
+    border-color: #B4B4B4;
+}
+.alert-message-default h4
+{
+    color: #000;
+}
+.alert-message-notice
+{
+    background-color: #FCFCDD;
+    border-color: #BDBD89;
+}
+.alert-message-notice h4
+{
+    color: #444;
+}
\ No newline at end of file
diff --git a/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.ts b/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.ts
index 402bc523eb407176202ca11b3995e7474b42a364..91169f3019ab5af210ab6ac602c51df709634f32 100644
--- a/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.ts
+++ b/src/frontend/app/actions/create-acknowledgement-receipt-action/create-acknowledgement-receipt-action.component.ts
@@ -14,6 +14,8 @@ export class CreateAcknowledgementReceiptActionComponent implements OnInit {
 
     lang: any = LANG;
     loading: boolean = false;
+    loadingInit: boolean = false;
+    acknowledgement: any;
 
     @ViewChild('noteEditor') noteEditor: NoteEditorComponent;
     loadingExport: boolean;
@@ -21,11 +23,14 @@ export class CreateAcknowledgementReceiptActionComponent implements OnInit {
     constructor(public http: HttpClient, private notify: NotificationService, public dialogRef: MatDialogRef<CreateAcknowledgementReceiptActionComponent>, @Inject(MAT_DIALOG_DATA) public data: any) { }
 
     ngOnInit(): void { 
-        this.http.post("../../rest/resourcesList/users/' + this.data.ownerId + '/groups/' + this.data.groupId + '/baskets/' + this.data.basketId + '/checkAcknowledgement", {resources : this.data.selectedRes})
-        .subscribe(() => {
-
+        this.loadingInit = true;
+        this.http.post('../../rest/resourcesList/users/' + this.data.currentBasketInfo.ownerId + '/groups/' + this.data.currentBasketInfo.groupId + '/baskets/' + this.data.currentBasketInfo.basketId + '/checkAcknowledgementReceipt', {resources : this.data.selectedRes})
+        .subscribe((data : any) => {
+            this.acknowledgement = data;
+            this.loadingInit = false;
         }, (err) => {
             this.notify.error(err.error.errors);
+            this.loadingInit = false;
         });
     }
 
@@ -46,7 +51,7 @@ export class CreateAcknowledgementReceiptActionComponent implements OnInit {
 
     downloadAcknowledgementReceipt(data : any) {
         this.loadingExport = true;
-        this.http.put('../../rest/resourcesList/users/' + this.data.ownerId + '/groups/' + this.data.groupId + '/baskets/' + this.data.basketId + '/acknowledgementReceipt', { 'resources' : data })
+        this.http.post('../../rest/resourcesList/users/' + this.data.currentBasketInfo.ownerId + '/groups/' + this.data.currentBasketInfo.groupId + '/baskets/' + this.data.currentBasketInfo.basketId + '/acknowledgementReceipt', { 'resources' : data }, { responseType: "blob" })
             .subscribe((data) => {
                 let downloadLink = document.createElement('a');
                 downloadLink.href = window.URL.createObjectURL(data);