diff --git a/rest/index.php b/rest/index.php
index 5c722e2522fff3d9edbfdd560134c84a661f9652..e84d6d64e1490ed0476afcd7ce1653bbefefe7a3 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -172,6 +172,20 @@ $app->put('/entities/{id}/status', \Entity\controllers\EntityController::class .
 $app->get('/entityTypes', \Entity\controllers\EntityController::class . ':getTypes');
 $app->post('/entitySeparators', \Entity\controllers\EntitySeparatorController::class . ':create');
 
+//ExternalSignatoryBook
+$app->get('/xParaphWorkflow', \ExternalSignatoryBook\controllers\XParaphController::class . ':getWorkflow');
+$app->post('/xParaphAccount', \ExternalSignatoryBook\controllers\XParaphController::class . ':createXparaphAccount');
+$app->delete('/xParaphAccount', \ExternalSignatoryBook\controllers\XParaphController::class . ':deleteXparaphAccount');
+
+//Folders
+$app->get('/folders', \Folder\controllers\FolderController::class . ':get');
+$app->post('/folders', \Folder\controllers\FolderController::class . ':create');
+$app->get('/folders/{id}', \Folder\controllers\FolderController::class . ':getById');
+$app->put('/folders/{id}', \Folder\controllers\FolderController::class . ':update');
+$app->delete('/folders/{id}', \Folder\controllers\FolderController::class . ':delete');
+$app->get('/folders/{id}/resources', \Folder\controllers\FolderController::class . ':getResourcesById');
+$app->put('/folders/{id}/sharing', \Folder\controllers\FolderController::class . ':sharing');
+
 //Groups
 $app->get('/groups', \Group\controllers\GroupController::class . ':get');
 $app->post('/groups', \Group\controllers\GroupController::class . ':create');
@@ -184,14 +198,6 @@ $app->put('/groups/{id}/indexing', \Group\controllers\GroupController::class . '
 $app->put('/groups/{id}/services/{serviceId}', \Group\controllers\GroupController::class . ':updateService');
 $app->put('/groups/{id}/reassign/{newGroupId}', \Group\controllers\GroupController::class . ':reassignUsers');
 
-//Folders
-$app->get('/folders', \Folder\controllers\FolderController::class . ':get');
-$app->post('/folders', \Folder\controllers\FolderController::class . ':create');
-$app->get('/folders/{id}', \Folder\controllers\FolderController::class . ':getById');
-$app->put('/folders/{id}', \Folder\controllers\FolderController::class . ':update');
-$app->put('/folders/{id}/sharing', \Folder\controllers\FolderController::class . ':sharing');
-$app->delete('/folders/{id}', \Folder\controllers\FolderController::class . ':delete');
-
 //Histories
 $app->get('/histories', \History\controllers\HistoryController::class . ':get');
 $app->get('/histories/users/{userSerialId}', \History\controllers\HistoryController::class . ':getByUserId');
@@ -257,7 +263,7 @@ $app->delete('/priorities/{id}', \Priority\controllers\PriorityController::class
 $app->get('/sortedPriorities', \Priority\controllers\PriorityController::class . ':getSorted');
 $app->put('/sortedPriorities', \Priority\controllers\PriorityController::class . ':updateSort');
 
-// Reconciliation
+//Reconciliation
 $app->post('/reconciliation/add', \Attachment\controllers\ReconciliationController::class . ':create');
 $app->get('/reconciliation/check', \Attachment\controllers\ReconciliationController::class . ':checkAttachment');
 
@@ -399,8 +405,4 @@ $app->post('/saveMessageExchangeReview', \Sendmail\Controllers\MessageExchangeRe
 
 $app->get('/maarchParapheur/user/{id}/picture', \ExternalSignatoryBook\controllers\MaarchParapheurController::class . ':getUserPicture');
 
-$app->get('/xParaphWorkflow', \ExternalSignatoryBook\controllers\XParaphController::class . ':getWorkflow');
-$app->post('/xParaphAccount', \ExternalSignatoryBook\controllers\XParaphController::class . ':createXparaphAccount');
-$app->delete('/xParaphAccount', \ExternalSignatoryBook\controllers\XParaphController::class . ':deleteXparaphAccount');
-
 $app->run();
diff --git a/src/app/folder/controllers/FolderController.php b/src/app/folder/controllers/FolderController.php
index 5d0758e3033ebff25e1535d02c2cf6586b164973..78a5f06ce88dae453d9dce462f42c8f57314bff1 100755
--- a/src/app/folder/controllers/FolderController.php
+++ b/src/app/folder/controllers/FolderController.php
@@ -27,6 +27,7 @@ use Respect\Validation\Validator;
 use Slim\Http\Request;
 use Slim\Http\Response;
 use SrcCore\models\DatabaseModel;
+use SrcCore\models\ValidatorModel;
 use User\models\UserModel;
 
 class FolderController
@@ -110,78 +111,6 @@ class FolderController
             }
         }
 
-        $foldersResources = ResourceFolderModel::get(['select' => ['res_id'], 'where' => ['folder_id = ?'], 'data' => [$args['id']]]);
-        $foldersResources = array_column($foldersResources, 'res_id');
-
-        $queryParams = $request->getQueryParams();
-        $queryParams['offset'] = (empty($queryParams['offset']) || !is_numeric($queryParams['offset']) ? 0 : (int)$queryParams['offset']);
-        $queryParams['limit'] = (empty($queryParams['limit']) || !is_numeric($queryParams['limit']) ? 10 : (int)$queryParams['limit']);
-
-        $allQueryData = ResourceListController::getResourcesListQueryData(['data' => $queryParams]);
-        if (!empty($allQueryData['order'])) {
-            $data['order'] = $allQueryData['order'];
-        }
-
-        $rawResources = ResourceListModel::getOnView([
-            'select'    => ['res_id'],
-            'table'     => $allQueryData['table'],
-            'leftJoin'  => $allQueryData['leftJoin'],
-            'where'     => array_merge(['res_id in (?)'], $allQueryData['where']),
-            'data'      => array_merge([$foldersResources], $allQueryData['queryData']),
-            'orderBy'   => empty($data['order']) ? ['creation_date'] : [$data['order']]
-        ]);
-
-        $resIds = ResourceListController::getIdsWithOffsetAndLimit(['resources' => $rawResources, 'offset' => $queryParams['offset'], 'limit' => $queryParams['limit']]);
-
-        $formattedResources = [];
-        if (!empty($resIds)) {
-            $excludeAttachmentTypes = ['converted_pdf', 'print_folder'];
-            if (!ServiceModel::hasService(['id' => 'view_documents_with_notes', 'userId' => $GLOBALS['userId'], 'location' => 'attachments', 'type' => 'use'])) {
-                $excludeAttachmentTypes[] = 'document_with_notes';
-            }
-
-            $attachments = AttachmentModel::getOnView([
-                'select'    => ['COUNT(res_id)', 'res_id_master'],
-                'where'     => ['res_id_master in (?)', 'status not in (?)', 'attachment_type not in (?)', '((status = ? AND typist = ?) OR status != ?)'],
-                'data'      => [$resIds, ['DEL', 'OBS'], $excludeAttachmentTypes, 'TMP', $GLOBALS['userId'], 'TMP'],
-                'groupBy'   => ['res_id_master']
-            ]);
-
-            $select = [
-                'res_letterbox.res_id', 'res_letterbox.subject', 'res_letterbox.barcode', 'mlb_coll_ext.alt_identifier',
-                'status.label_status AS "status.label_status"', 'status.img_filename AS "status.img_filename"'
-            ];
-            $tableFunction = ['status', 'mlb_coll_ext'];
-            $leftJoinFunction = ['res_letterbox.status = status.id', 'res_letterbox.res_id = mlb_coll_ext.res_id'];
-
-            $order = 'CASE res_letterbox.res_id ';
-            foreach ($resIds as $key => $resId) {
-                $order .= "WHEN {$resId} THEN {$key} ";
-            }
-            $order .= 'END';
-
-            $resources = ResourceListModel::getOnResource([
-                'select'    => $select,
-                'table'     => $tableFunction,
-                'leftJoin'  => $leftJoinFunction,
-                'where'     => ['res_letterbox.res_id in (?)'],
-                'data'      => [$resIds],
-                'orderBy'   => [$order]
-            ]);
-
-            $formattedResources = ResourceListController::getFormattedResources([
-                'resources'     => $resources,
-                'userId'        => $GLOBALS['id'],
-                'attachments'   => $attachments,
-                'checkLocked'   => false
-            ]);
-        }
-
-        $folder['resources'] = $formattedResources;
-        $folder['countResources'] = count($rawResources);
-
-        //TODO Get default action
-
         return $response->withJson(['folder' => $folder]);
     }
 
@@ -418,6 +347,92 @@ class FolderController
         return true;
     }
 
+    public function getResourcesById(Request $request, Response $response, array $args)
+    {
+        if (!Validator::numeric()->notEmpty()->validate($args['id'])) {
+            return $response->withStatus(400)->withJson(['errors' => 'Route id is not an integer']);
+        }
+
+        if (!FolderController::hasFolder(['id' => $args['id'], 'userId' => $GLOBALS['id']])) {
+            return $response->withStatus(400)->withJson(['errors' => 'Folder out of perimeter']);
+        }
+
+        $foldersResources = ResourceFolderModel::get(['select' => ['res_id'], 'where' => ['folder_id = ?'], 'data' => [$args['id']]]);
+        $foldersResources = array_column($foldersResources, 'res_id');
+
+        $formattedResources = [];
+        $count = 0;
+        if (!empty($foldersResources)) {
+            $queryParams = $request->getQueryParams();
+            $queryParams['offset'] = (empty($queryParams['offset']) || !is_numeric($queryParams['offset']) ? 0 : (int)$queryParams['offset']);
+            $queryParams['limit'] = (empty($queryParams['limit']) || !is_numeric($queryParams['limit']) ? 10 : (int)$queryParams['limit']);
+
+            $allQueryData = ResourceListController::getResourcesListQueryData(['data' => $queryParams]);
+            if (!empty($allQueryData['order'])) {
+                $data['order'] = $allQueryData['order'];
+            }
+
+            $rawResources = ResourceListModel::getOnView([
+                'select'    => ['res_id'],
+                'table'     => $allQueryData['table'],
+                'leftJoin'  => $allQueryData['leftJoin'],
+                'where'     => array_merge(['res_id in (?)'], $allQueryData['where']),
+                'data'      => array_merge([$foldersResources], $allQueryData['queryData']),
+                'orderBy'   => empty($data['order']) ? ['creation_date'] : [$data['order']]
+            ]);
+
+            $resIds = ResourceListController::getIdsWithOffsetAndLimit(['resources' => $rawResources, 'offset' => $queryParams['offset'], 'limit' => $queryParams['limit']]);
+
+            $formattedResources = [];
+            if (!empty($resIds)) {
+                $excludeAttachmentTypes = ['converted_pdf', 'print_folder'];
+                if (!ServiceModel::hasService(['id' => 'view_documents_with_notes', 'userId' => $GLOBALS['userId'], 'location' => 'attachments', 'type' => 'use'])) {
+                    $excludeAttachmentTypes[] = 'document_with_notes';
+                }
+
+                $attachments = AttachmentModel::getOnView([
+                    'select'    => ['COUNT(res_id)', 'res_id_master'],
+                    'where'     => ['res_id_master in (?)', 'status not in (?)', 'attachment_type not in (?)', '((status = ? AND typist = ?) OR status != ?)'],
+                    'data'      => [$resIds, ['DEL', 'OBS'], $excludeAttachmentTypes, 'TMP', $GLOBALS['userId'], 'TMP'],
+                    'groupBy'   => ['res_id_master']
+                ]);
+
+                $select = [
+                    'res_letterbox.res_id', 'res_letterbox.subject', 'res_letterbox.barcode', 'mlb_coll_ext.alt_identifier',
+                    'status.label_status AS "status.label_status"', 'status.img_filename AS "status.img_filename"', 'priorities.color AS "priorities.color"'
+                ];
+                $tableFunction = ['status', 'mlb_coll_ext', 'priorities'];
+                $leftJoinFunction = ['res_letterbox.status = status.id', 'res_letterbox.res_id = mlb_coll_ext.res_id', 'res_letterbox.priority = priorities.id'];
+
+                $order = 'CASE res_letterbox.res_id ';
+                foreach ($resIds as $key => $resId) {
+                    $order .= "WHEN {$resId} THEN {$key} ";
+                }
+                $order .= 'END';
+
+                $resources = ResourceListModel::getOnResource([
+                    'select'    => $select,
+                    'table'     => $tableFunction,
+                    'leftJoin'  => $leftJoinFunction,
+                    'where'     => ['res_letterbox.res_id in (?)'],
+                    'data'      => [$resIds],
+                    'orderBy'   => [$order]
+                ]);
+
+                $formattedResources = ResourceListController::getFormattedResources([
+                    'resources'     => $resources,
+                    'userId'        => $GLOBALS['id'],
+                    'attachments'   => $attachments,
+                    'checkLocked'   => false
+                ]);
+            }
+
+            $count = count($rawResources);
+        }
+
+        return $response->withJson(['resources' => $formattedResources, 'count' => $count]);
+    }
+
     // login (string) : Login of user connected
     // folderId (integer) : Check specific folder
     // edition (boolean) : whether user can edit or not
@@ -459,4 +474,32 @@ class FolderController
 
         return $folders;
     }
+
+    private static function hasFolder(array $args)
+    {
+        ValidatorModel::notEmpty($args, ['id', 'userId']);
+        ValidatorModel::intVal($args, ['id', 'userId']);
+
+
+        $user = UserModel::getById(['id' => $args['userId'], 'select' => ['user_id']]);
+
+        $entities = UserModel::getEntitiesById(['userId' => $user['user_id']]);
+        $entities = array_column($entities, 'id');
+
+        if (empty($entities)) {
+            $entities = [0];
+        }
+
+        $folders = FolderModel::getWithEntities([
+            'select'   => [1],
+            'where'    => ['folders.id = ?', '(user_id = ? OR entity_id in (?))'],
+            'data'     => [$args['id'], $args['userId'], $entities]
+        ]);
+
+        if (empty($folders)) {
+            return false;
+        }
+
+        return true;
+    }
 }
diff --git a/src/app/folder/models/FolderModelAbstract.php b/src/app/folder/models/FolderModelAbstract.php
index 0db2fae9ce8e00afe25ac907621ddd4eca731bce..65c487bee02ce10ff3ff63fed2e49168b90fd7ac 100755
--- a/src/app/folder/models/FolderModelAbstract.php
+++ b/src/app/folder/models/FolderModelAbstract.php
@@ -120,6 +120,21 @@ class FolderModelAbstract
         return true;
     }
 
+    public static function getWithEntities(array $args = [])
+    {
+        ValidatorModel::arrayType($args, ['select', 'where', 'data']);
+
+        $folders = DatabaseModel::select([
+            'select'    => empty($args['select']) ? ['*'] : $args['select'],
+            'table'     => ['folders', 'entities_folders'],
+            'left_join' => ['folders.id = entities_folders.folder_id'],
+            'where'     => empty($args['where']) ? [] : $args['where'],
+            'data'      => empty($args['data']) ? [] : $args['data'],
+        ]);
+
+        return $folders;
+    }
+
     public static function getWithEntitiesAndResources(array $args = [])
     {
         ValidatorModel::arrayType($args, ['select', 'where', 'data']);
diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php
index 3b7f0518e3980f50da1fd00d6617c3c58d235e9c..f1b19c05b44ed801c811e5b056c5d9e1bb11ce5e 100644
--- a/src/app/resource/controllers/ResourceListController.php
+++ b/src/app/resource/controllers/ResourceListController.php
@@ -980,7 +980,6 @@ class ResourceListController
 
     public static function getIdsWithOffsetAndLimit(array $args)
     {
-        ValidatorModel::notEmpty($args, ['resources']);
         ValidatorModel::arrayType($args, ['resources']);
         ValidatorModel::intVal($args, ['offset', 'limit']);