diff --git a/rest/index.php b/rest/index.php
index 7db6f2220d83de7d53832a5fe5dac4b33edeb864..72c5561ac708a5e7b57aae7f2f149964b64bb2e5 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -393,7 +393,6 @@ $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/ac
 $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkValidateParallelOpinion', \Action\controllers\PreProcessActionController::class . ':checkValidateParallelOpinion');
 $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkContinueOpinionCircuit', \Action\controllers\PreProcessActionController::class . ':checkContinueOpinionCircuit');
 $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkGiveParallelOpinion', \Action\controllers\PreProcessActionController::class . ':checkGiveParallelOpinion');
-$app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkValidateParallelOpinionDiffusion', \Action\controllers\PreProcessActionController::class . ':checkValidateParallelOpinionDiffusion');
 $app->post('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}/actions/{actionId}/checkInterruptRejectResetVisa', \Action\controllers\PreProcessActionController::class . ':checkInterruptRejectResetVisa');
 
 //Search
diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php
index 3e4a0bcd724bbda48ecaed9f43371bbde2fb8583..660c37694719036ee00714500f9077a550b5860b 100644
--- a/src/app/resource/controllers/ResourceListController.php
+++ b/src/app/resource/controllers/ResourceListController.php
@@ -876,12 +876,14 @@ class ResourceListController
         $whereCategories = $where;
         $whereStatuses   = $where;
         $whereEntities   = $where;
-        $whereDocTypes    = $where;
+        $whereDocTypes   = $where;
+        $whereFolders    = $where;
         $dataPriorities  = $queryData;
         $dataCategories  = $queryData;
         $dataStatuses    = $queryData;
         $dataEntities    = $queryData;
-        $dataDocTypes     = $queryData;
+        $dataDocTypes    = $queryData;
+        $dataFolders     = $queryData;
 
         if (isset($data['priorities'])) {
             if (empty($data['priorities'])) {
@@ -898,12 +900,14 @@ class ResourceListController
                 $dataStatuses[]   = explode(',', $replace);
                 $dataEntities[]   = explode(',', $replace);
                 $dataDocTypes[]   = explode(',', $replace);
+                $dataFolders[]    = explode(',', $replace);
             }
 
             $whereCategories[] = $tmpWhere;
             $whereStatuses[]   = $tmpWhere;
             $whereEntities[]   = $tmpWhere;
             $whereDocTypes[]   = $tmpWhere;
+            $whereFolders[]    = $tmpWhere;
         }
         if (isset($data['categories'])) {
             if (empty($data['categories'])) {
@@ -920,12 +924,14 @@ class ResourceListController
                 $dataStatuses[]   = explode(',', $replace);
                 $dataEntities[]   = explode(',', $replace);
                 $dataDocTypes[]   = explode(',', $replace);
+                $dataFolders[]    = explode(',', $replace);
             }
 
             $wherePriorities[] = $tmpWhere;
             $whereStatuses[]   = $tmpWhere;
             $whereEntities[]   = $tmpWhere;
             $whereDocTypes[]   = $tmpWhere;
+            $whereFolders[]    = $tmpWhere;
         }
         if (!empty($data['statuses'])) {
             $wherePriorities[] = 'status in (?)';
@@ -936,6 +942,8 @@ class ResourceListController
             $dataEntities[]    = explode(',', $data['statuses']);
             $whereDocTypes[]   = 'status in (?)';
             $dataDocTypes[]    = explode(',', $data['statuses']);
+            $whereFolders[]    = 'status in (?)';
+            $dataFolders[]     = explode(',', $data['statuses']);
         }
         if (!empty($data['doctypes'])) {
             $wherePriorities[] = 'type_id in (?)';
@@ -946,6 +954,8 @@ class ResourceListController
             $dataEntities[]    = explode(',', $data['doctypes']);
             $whereStatuses[]   = 'type_id in (?)';
             $dataStatuses[]    = explode(',', $data['doctypes']);
+            $whereFolders[]    = 'type_id in (?)';
+            $dataFolders[]     = explode(',', $data['doctypes']);
         }
         if (isset($data['entities'])) {
             if (empty($data['entities'])) {
@@ -962,12 +972,14 @@ class ResourceListController
                 $dataCategories[] = explode(',', $replace);
                 $dataStatuses[] = explode(',', $replace);
                 $dataDocTypes[] = explode(',', $replace);
+                $dataFolders[]  = explode(',', $replace);
             }
 
             $wherePriorities[] = $tmpWhere;
             $whereCategories[] = $tmpWhere;
             $whereStatuses[]   = $tmpWhere;
             $whereDocTypes[]   = $tmpWhere;
+            $whereFolders[]    = $tmpWhere;
         }
         if (!empty($data['entitiesChildren'])) {
             $entities = explode(',', $data['entitiesChildren']);
@@ -985,6 +997,8 @@ class ResourceListController
                 $dataStatuses[]    = $entitiesChildren;
                 $whereDocTypes[]   = 'destination in (?)';
                 $dataDocTypes[]    = $entitiesChildren;
+                $whereFolders[]    = 'destination in (?)';
+                $dataFolders[]     = $entitiesChildren;
             }
         }
 
@@ -1084,11 +1098,42 @@ class ResourceListController
             ];
         }
 
+        $folders = [];
+
+        $resIds = ResModel::getOnView([
+            'select' => ['res_id'],
+            'where'  => $whereFolders,
+            'data'   => $dataFolders
+        ]);
+        $resIds = array_column($resIds, 'res_id');
+
+        $userEntities = EntityModel::getWithUserEntities([
+            'select' => ['entities.id'],
+            'where'  => ['users_entities.user_id = ?'],
+            'data'   => [$GLOBALS['userId']]
+        ]);
+        $userEntities = array_column($userEntities, 'id');
+
+        $rawFolders = FolderModel::getWithEntitiesAndResources([
+            'select'  => ['folders.id', 'folders.label', 'count(resources_folders.res_id) as count'],
+            'where'   => ['resources_folders.res_id in (?)', '(folders.user_id = ? OR entities_folders.entity_id in (?))'],
+            'data'    => [$resIds, $GLOBALS['id'], $userEntities],
+            'groupBy' => ['folders.id', 'folders.label']
+        ]);
+        foreach ($rawFolders as $key => $value) {
+            $folders[] = [
+                'id'    => empty($value['id']) ? null : $value['id'],
+                'label' => empty($value['label']) ? '_UNDEFINED' : $value['label'],
+                'count' => $value['count']
+            ];
+        }
+
         $priorities = (count($priorities) >= 2) ? $priorities : [];
         $categories = (count($categories) >= 2) ? $categories : [];
         $statuses   = (count($statuses) >= 2) ? $statuses : [];
         $entities   = (count($entities) >= 2) ? $entities : [];
         $docTypes   = (count($docTypes) >= 2) ? $docTypes : [];
+        $folders    = (count($folders) >= 2) ? $folders : [];
 
         $entitiesChildren = [];
         foreach ($entities as $entity) {
@@ -1122,14 +1167,17 @@ class ResourceListController
 
         usort($docTypes, ['Resource\controllers\ResourceListController', 'compareSortOnLabel']);
 
+        usort($folders, ['Resource\controllers\ResourceListController', 'compareSortOnLabel']);
+
 
         return [
-            'entities' => $entities,
-            'priorities' => $priorities,
-            'categories' => $categories,
-            'statuses' => $statuses,
+            'entities'         => $entities,
+            'priorities'       => $priorities,
+            'categories'       => $categories,
+            'statuses'         => $statuses,
             'entitiesChildren' => $entitiesChildren,
-            'doctypes' => $docTypes
+            'doctypes'         => $docTypes,
+            'folders'          => $folders
         ];
     }
 
diff --git a/src/frontend/app/list/filters/filters-tool.component.html b/src/frontend/app/list/filters/filters-tool.component.html
index abbb8d9dbd8c1f73124b0ef4ca02859181baadcf..fd394835f3676e524abd3eb894773c43bd54ec1d 100644
--- a/src/frontend/app/list/filters/filters-tool.component.html
+++ b/src/frontend/app/list/filters/filters-tool.component.html
@@ -98,4 +98,8 @@
         *ngFor="let doctype of this.listProperties.doctypes; let i=index"
         (click)="removeFilter('doctypes', i)">{{doctype.label}}
         <i class="fa fa-times-circle"></i></span>
-</div>
\ No newline at end of file
+    <span class="label badge-folders" title="{{lang.folders}}"
+        *ngFor="let folder of this.listProperties.folders; let i=index"
+        (click)="removeFilter('folders', i)">{{folder.label}}
+        <i class="fa fa-times-circle"></i></span>
+</div>
diff --git a/src/frontend/app/list/filters/filters-tool.component.scss b/src/frontend/app/list/filters/filters-tool.component.scss
index 7c7aa866df0cab4846a58ef4951c0ecc18f70bd2..e787d4e129d251a0e737533bd15af6328d8c52a3 100644
--- a/src/frontend/app/list/filters/filters-tool.component.scss
+++ b/src/frontend/app/list/filters/filters-tool.component.scss
@@ -172,6 +172,12 @@
     cursor: pointer;
 }
 
+.filterBadges>.badge-folders {
+    margin: 5px;
+    background: #a3d627;
+    cursor: pointer;
+}
+
 ::ng-deep.autoCompletePanelFilter {
     left: 25px;
     min-width: 400px !important;
@@ -182,4 +188,4 @@
     color: #F99830;
     font-size: 14px;
     font-weight: 500;
-}
\ No newline at end of file
+}
diff --git a/src/frontend/app/list/filters/filters-tool.component.ts b/src/frontend/app/list/filters/filters-tool.component.ts
index 8aa7905da1df98a189fa75c36c11168bdac4d4a2..25741890e913b6cd994b49c233e121dcf6988805 100644
--- a/src/frontend/app/list/filters/filters-tool.component.ts
+++ b/src/frontend/app/list/filters/filters-tool.component.ts
@@ -200,6 +200,10 @@ export class FiltersToolComponent implements OnInit {
                 letter: this.lang.doctypes,
                 names: []
             },
+            {
+                letter: this.lang.folders,
+                names: []
+            },
         ];
 
         this.http.get('../..' + this.routeDatas + '?init' + this.filtersListService.getUrlFilters())
@@ -281,6 +285,19 @@ export class FiltersToolComponent implements OnInit {
                         )
                     }
                 });
+
+                data.folders.forEach((element: any) => {
+                    if (this.listProperties.folders.map((doctype: any) => (doctype.id)).indexOf(element.id) === -1) {
+                        this.stateGroups[6].names.push(
+                            {
+                                id: 'folders',
+                                value: element.id,
+                                label: (element.id !== null ? element.label : this.lang.undefined),
+                                count: element.count
+                            }
+                        )
+                    }
+                });
                 this.isLoading = false;
                 if (this.metaSearchInput.length > 0) {
                     setTimeout(() => {
diff --git a/src/frontend/service/filtersList.service.ts b/src/frontend/service/filtersList.service.ts
index 039b9598532cc93a1c49ce4196c376170a31d4bf..6f016c50d5dee50c124f917c9874643461262644 100644
--- a/src/frontend/service/filtersList.service.ts
+++ b/src/frontend/service/filtersList.service.ts
@@ -16,6 +16,7 @@ interface listProperties {
     'subEntities': string[],
     'statuses': string[],
     'doctypes': string[],
+    'folders': string[],
 }
 
 @Injectable()
@@ -64,6 +65,7 @@ export class FiltersListService {
                 'subEntities': [],
                 'statuses': [],
                 'doctypes': [],
+                'folders': [],
             };
             this.listsProperties.push(listProperties);
             this.listsPropertiesIndex = this.listsProperties.length -1;