diff --git a/apps/maarch_entreprise/Views/profile.component.html b/apps/maarch_entreprise/Views/profile.component.html
index 1f38751cd8621e48082a2c85656bf1a3ff5dc8da..cb5e0bcac553acc93fc3f68e0a7ba70364a0ed69 100755
--- a/apps/maarch_entreprise/Views/profile.component.html
+++ b/apps/maarch_entreprise/Views/profile.component.html
@@ -432,7 +432,7 @@
                                                             <mat-icon class="fa fa-times"></mat-icon>
                                                         </button>
                                                     </mat-form-field>
-                                                    <img src="{{coreUrl}}rest/users/{{user.id}}/signatures/{{signature.id}}" alt="Signature" style="max-width:100%;height:60px;">
+                                                    <img src="{{coreUrl}}rest/users/{{user.id}}/signatures/{{signature.id}}/content" alt="Signature" style="max-width:100%;height:60px;">
                                                 </mat-card-content>
                                             </mat-card>
                                         </div>
diff --git a/apps/maarch_entreprise/Views/signature-book.component.html b/apps/maarch_entreprise/Views/signature-book.component.html
index 5626de9f1b92b7d1e2e18f9db4c5cbc48cf917b4..ac5dc94189e8a9cdb3088567061cf57c6e31d476 100755
--- a/apps/maarch_entreprise/Views/signature-book.component.html
+++ b/apps/maarch_entreprise/Views/signature-book.component.html
@@ -189,7 +189,7 @@
                          (mouseenter)="showSignaturesPanel = true" (mouseleave)="showSignaturesPanel = false" class="pjSign" [ngClass]="[signatureBook.attachments[rightSelectedThumbnail].status == 'SIGN' ? 'signed' : '']" [ngStyle]="{'box-shadow': signatureBook.listinstance.requested_signature ? 'inset 0px 0px 5px 0px red' : 'inset 0px 0px 5px 0px #656565;'}">
                         <span *ngIf="signatureBook.attachments[rightSelectedThumbnail].status != 'SIGN' && signatureBook.signatures[0]" style="cursor: pointer">
                             <span *ngIf="!loadingSign">
-                                <img *ngFor="let signature of signatureBook.signatures; let i = index" src="{{coreUrl}}rest/users/{{signature.user_serial_id}}/signatures/{{signature.id}}" (click)="signFile(signatureBook.attachments[rightSelectedThumbnail], signature)" [ngStyle]="{'display': !showSignaturesPanel && i > 0 ? 'none' : ''}" title="{{signature.signature_label}}">
+                                <img *ngFor="let signature of signatureBook.signatures; let i = index" src="{{coreUrl}}rest/users/{{signature.user_serial_id}}/signatures/{{signature.id}}/content" (click)="signFile(signatureBook.attachments[rightSelectedThumbnail], signature)" [ngStyle]="{'display': !showSignaturesPanel && i > 0 ? 'none' : ''}" title="{{signature.signature_label}}">
                             </span>
                             <i *ngIf="loadingSign" class="fa fa-spinner fa-pulse fa-2x fa-fw"></i>
                         </span>
diff --git a/apps/maarch_entreprise/Views/user-administration.component.html b/apps/maarch_entreprise/Views/user-administration.component.html
index 6b19a30d9dcd0d44f4a51038a5de0d6c907b46d8..3e4310b728c1afc04c08aa5cd98cf7d770bf9054 100755
--- a/apps/maarch_entreprise/Views/user-administration.component.html
+++ b/apps/maarch_entreprise/Views/user-administration.component.html
@@ -326,7 +326,7 @@
                                             <mat-icon class="fa fa-times"></mat-icon>
                                         </button>
                                     </mat-form-field>
-                                    <img src="{{coreUrl}}rest/users/{{user.id}}/signatures/{{signature.id}}" alt="Signature" style="width:auto;height:60px;">
+                                    <img src="{{coreUrl}}rest/users/{{user.id}}/signatures/{{signature.id}}/content" alt="Signature" style="width:auto;height:60px;">
                                 </mat-card-content>
                             </mat-card>
                         </div>
diff --git a/apps/maarch_entreprise/class/class_lists_Abstract.php b/apps/maarch_entreprise/class/class_lists_Abstract.php
index a2bc5aefc2ed26de18ff11d48de4d3730df9ae38..c151bb1476c5f91d1451a72a013c6af8cdfc3166 100755
--- a/apps/maarch_entreprise/class/class_lists_Abstract.php
+++ b/apps/maarch_entreprise/class/class_lists_Abstract.php
@@ -3402,7 +3402,7 @@ abstract class lists_Abstract extends Database
     public function showList($resultArray, $parameters = array(), $listKey = '', $currentBasket = array())
     {
         //Put in different arrays: label, show, sort of columns
-        if (count($resultArray) > 0 && isset($resultArray[0])) {
+        if (!empty($resultArray) && is_array($resultArray) && count($resultArray) > 0 && isset($resultArray[0])) {
             $listColumn = array();
             $showColumn = array();
             $sortColumn = array();
@@ -3534,7 +3534,11 @@ abstract class lists_Abstract extends Database
         }
         $this->formId = $parameters['formId'];
         $this->haveAction = false;
-        $this->countResult = count($resultArray);
+
+        $this->countResult = 0;
+        if (!empty($resultArray) && is_array($resultArray)) {
+            $this->countResult = count($resultArray);
+        }
         if (count($currentBasket) > 0) {
             $this->currentBasket = $currentBasket;
         }
@@ -3614,7 +3618,8 @@ abstract class lists_Abstract extends Database
         }
 
         //If there some results
-        if (count($resultArray) > 0 || $this->params['bool_showAddButton']) {
+
+        if ((!empty($resultArray) && is_array($resultArray) && count($resultArray) > 0) || $this->params['bool_showAddButton']) {
             //Need a form?
             $this->withForm = false;
             if ($this->params['bool_checkBox'] === true || $this->params['bool_radioButton'] === true ||
diff --git a/apps/maarch_entreprise/indexing_searching/loadFiveLastMails.php b/apps/maarch_entreprise/indexing_searching/loadFiveLastMails.php
index b941a987362fa5c5f5768634861d84e096b1a30a..445ac1f582df23892ceddf0c7936f100fe24afb2 100755
--- a/apps/maarch_entreprise/indexing_searching/loadFiveLastMails.php
+++ b/apps/maarch_entreprise/indexing_searching/loadFiveLastMails.php
@@ -87,7 +87,11 @@ if($selectedTemplate <> 'none') $extension_icon = "_big";
 
 //Result Array
 
-for ($i=0;$i<count($tab);$i++) {
+$ct = 0;
+if (!empty($tab) && is_array($tab)) {
+    $ct = count($tab);
+}
+for ($i = 0; $i < $ct; $i++) {
 
     for ($j=0;$j<count($tab[$i]);$j++) {
 
diff --git a/apps/maarch_entreprise/smartphone/load_user_signatures.php b/apps/maarch_entreprise/smartphone/load_user_signatures.php
index 283e8bb41e10b1152ae3f44c62a4bc7a2b3b6eb0..bf55bda4f3e3711e977ea58da76df9352899248a 100755
--- a/apps/maarch_entreprise/smartphone/load_user_signatures.php
+++ b/apps/maarch_entreprise/smartphone/load_user_signatures.php
@@ -83,7 +83,7 @@ $subject = $res->subject;
       foreach ($_SESSION['user']['pathToSignature'] as $sign) {
           echo '<a href="signature_main_panel.php?id='.$s_id.'&collId='.$_SESSION['collection_id_choice'].'&tableName='.$_SESSION['res_table'].'&res_id_attach='.$att_id.'">';
 
-          echo '<img src="'. $_SESSION['config']['coreurl'].'rest/users/'.$userInfos[0]['id'].'/signatures/'.$sign['id'].'" alt="signature" style="width:20%;margin:10px;float:left;border:1px solid black;cursor:pointer;" />';
+          echo '<img src="'. $_SESSION['config']['coreurl'].'rest/users/'.$userInfos[0]['id'].'/signatures/'.$sign['id'].'/content" alt="signature" style="width:20%;margin:10px;float:left;border:1px solid black;cursor:pointer;" />';
           echo '</a>';
       }
     ?>
diff --git a/apps/maarch_entreprise/smartphone/signature_main_panel.php b/apps/maarch_entreprise/smartphone/signature_main_panel.php
index b81ab944876c9f37b1d1defac0eda4ddc366d591..c48dbb111880fb973f0d2325b30d8fcfe9f05519 100755
--- a/apps/maarch_entreprise/smartphone/signature_main_panel.php
+++ b/apps/maarch_entreprise/smartphone/signature_main_panel.php
@@ -87,7 +87,7 @@ $subject = $res->subject;
                 $_SESSION['user']['pathToSignature'] = \User\models\UserSignatureModel::get(['select' => ['id'], 'where' => ['user_serial_id = ?'], 'data' => [$userInfos[0]['id']]]);
                 if (count($_SESSION['user']['pathToSignature']) > 0) {
                     foreach ($_SESSION['user']['pathToSignature'] as $sign) {
-                        echo '<img src="'.$_SESSION['config']['coreurl'].'rest/users/'.$userInfos[0]['id'].'/signatures/'.$sign['id'].'" alt="signature" style="width:99px;background:#FFF;" onclick="loadImgSign(this);"/>';
+                        echo '<img src="'.$_SESSION['config']['coreurl'].'rest/users/'.$userInfos[0]['id'].'/signatures/'.$sign['id'].'/content" alt="signature" style="width:99px;background:#FFF;" onclick="loadImgSign(this);"/>';
                     }
                 }
             ?>
diff --git a/rest/index.php b/rest/index.php
index 0d0e3a6fa483655d02730ab1892848785a02b527..83b587306640602fe6341d4238813e8050f7bd40 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -205,6 +205,7 @@ $app->put('/reports/groups/{groupId}', \Report\controllers\ReportController::cla
 //Ressources
 $app->post('/res', \Resource\controllers\ResController::class . ':create');
 $app->post('/resExt', \Resource\controllers\ResController::class . ':createExt');
+$app->get('/res/{resId}/content', \Resource\controllers\ResController::class . ':getFileContent');
 $app->put('/res/resource/status', \Resource\controllers\ResController::class . ':updateStatus');
 $app->post('/res/list', \Resource\controllers\ResController::class . ':getList');
 $app->get('/res/{resId}/lock', \Resource\controllers\ResController::class . ':isLock');
@@ -256,7 +257,7 @@ $app->put('/users/{id}/entities/{entityId}/primaryEntity', \User\controllers\Use
 $app->get('/users/{id}/entities/{entityId}', \User\controllers\UserController::class . ':isEntityDeletable');
 $app->delete('/users/{id}/entities/{entityId}', \User\controllers\UserController::class . ':deleteEntity');
 $app->post('/users/{id}/signatures', \User\controllers\UserController::class . ':addSignature');
-$app->get('/users/{id}/signatures/{signatureId}', \User\controllers\UserController::class . ':getImageSignature');
+$app->get('/users/{id}/signatures/{signatureId}/content', \User\controllers\UserController::class . ':getImageContent');
 $app->put('/users/{id}/signatures/{signatureId}', \User\controllers\UserController::class . ':updateSignature');
 $app->delete('/users/{id}/signatures/{signatureId}', \User\controllers\UserController::class . ':deleteSignature');
 $app->post('/users/{id}/redirectedBaskets', \User\controllers\UserController::class . ':setRedirectedBaskets');
diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php
index c4b0fe5525b46f983b6e6b10eb0690f6aed99917..c1b1ef100f9fb4181341efe46b88ee16c87809a3 100755
--- a/src/app/resource/controllers/ResController.php
+++ b/src/app/resource/controllers/ResController.php
@@ -15,6 +15,7 @@
 namespace Resource\controllers;
 
 use Basket\models\BasketModel;
+use Docserver\models\DocserverModel;
 use Group\controllers\GroupController;
 use Note\models\NoteModel;
 use Group\models\ServiceModel;
@@ -159,6 +160,33 @@ class ResController
         return $response->withJson(['success' => 'success']);
     }
 
+    public function getFileContent(Request $request, Response $response, array $aArgs)
+    {
+        if (!ResController::hasRightByResId(['resId' => $aArgs['resId'], 'userId' => $GLOBALS['userId']])) {
+            return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']);
+        }
+
+        $document = ResModel::getById(['select' => ['docserver_id', 'path', 'filename'], 'resId' => $aArgs['resId']]);
+        if (empty($document)) {
+            return $response->withStatus(400)->withJson(['errors' => 'Document does not exist']);
+        }
+
+        $docserver = DocserverModel::getByDocserverId(['docserverId' => $document['docserver_id'], 'select' => ['path_template']]);
+        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'];
+        $fileContent = file_get_contents($pathToDocument);
+        if ($fileContent === false) {
+            return $response->withStatus(404)->withJson(['errors' => 'Document not found on docserver']);
+        }
+
+        $response->write($fileContent);
+
+        return $response->withHeader('Content-Type', FILEINFO_MIME_TYPE);
+    }
+
     public function updateExternalInfos(Request $request, Response $response)
     {
         $data = $request->getParams();
@@ -247,9 +275,13 @@ class ResController
         }
 
         if (!empty($basketsClause)) {
-            $res = ResModel::getOnView(['select' => [1], 'where' => ['res_id = ?', "({$basketsClause})"], 'data' => [$aArgs['resId']]]);
-            if (!empty($res)) {
-                return true;
+            try {
+                $res = ResModel::getOnView(['select' => [1], 'where' => ['res_id = ?', "({$basketsClause})"], 'data' => [$aArgs['resId']]]);
+                if (!empty($res)) {
+                    return true;
+                }
+            } catch (\Exception $e) {
+                return false;
             }
         }
 
diff --git a/src/app/resource/models/ResModelAbstract.php b/src/app/resource/models/ResModelAbstract.php
index b5792827b5326b0b4e212b5f7204f91f634bb7b7..b4c1d1d578f6fe8cf55d31baa3876273d234901c 100644
--- a/src/app/resource/models/ResModelAbstract.php
+++ b/src/app/resource/models/ResModelAbstract.php
@@ -65,6 +65,10 @@ abstract class ResModelAbstract
             'data'      => [$aArgs['resId']]
         ]);
 
+        if (empty($aResources[0])) {
+            return [];
+        }
+
         return $aResources[0];
     }
 
diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php
index 1fb336ed07c4e2d139eca8ada1b34ac1b68c2b86..da61c66987215a2f7769ffa4a31e25fcb2492586 100644
--- a/src/app/user/controllers/UserController.php
+++ b/src/app/user/controllers/UserController.php
@@ -452,7 +452,7 @@ class UserController
         return $response->withJson(['user' => UserModel::getById(['id' => $aArgs['id'], 'select' => ['status']])]);
     }
 
-    public function getImageSignature(Request $request, Response $response, array $aArgs)
+    public function getImageContent(Request $request, Response $response, array $aArgs)
     {
         $error = $this->hasUsersRights(['id' => $aArgs['id'], 'himself' => true]);
         if (!empty($error['error'])) {