diff --git a/src/app/document/controllers/DocumentController.php b/src/app/document/controllers/DocumentController.php
index 9b82b36705e60959e5e0411d32f2da350ebe98ef..8a03d9b4497024e9b689594d650e796abc089b80 100755
--- a/src/app/document/controllers/DocumentController.php
+++ b/src/app/document/controllers/DocumentController.php
@@ -1209,20 +1209,32 @@ class DocumentController
                 }
             }
         } else {
-            $previousStepsUsers = array_column(WorkflowModel::get([
-                'select' => ['user_id'],
-                'where'  => ['main_document_id = ?', 'process_date is not null', 'status is not null'],
-                'data'   => [$args['id']]
-            ]), 'user_id');
-            if (!empty($previousStepsUsers)) {
-                $previousStepsSubstitutes = array_column(UserModel::get([
+            $circuitUsers = WorkflowModel::get([
+                'select'  => ['user_id', '(process_date is not null) as processed'],
+                'where'   => ['main_document_id = ?'],
+                'data'    => [$args['id']],
+                'orderBy' => ['"order" asc']
+            ]);
+            $previousAndOneUsers = [];
+            foreach ($circuitUsers as $user) {
+                if ($user['processed']) {
+                    $previousAndOneUsers[] = $user['user_id'];
+                    continue;
+                }
+                $previousAndOneUsers[] = $user['user_id'];
+                break;
+            }
+            $circuitUsers = $previousAndOneUsers;
+            unset($previousAndOneUsers);
+            if (!empty($circuitUsers)) {
+                $circuitSubstitutes = array_column(UserModel::get([
                     'select' => ['substitute'],
-                    'where'  => ['id in (?)'],
-                    'data'   => [$previousStepsUsers]
+                    'where'  => ['substitute is not null', 'id in (?)'],
+                    'data'   => [$circuitUsers]
                 ]), 'substitute');
-                $previousStepsUsers = array_unique(array_merge($previousStepsUsers, $previousStepsSubstitutes));
+                $circuitUsers = array_merge($circuitUsers, $circuitSubstitutes);
             }
-            if (!empty($previousStepsUsers) && !in_array($args['userId'], $previousStepsUsers)) {
+            if (!in_array($args['userId'], $circuitUsers)) {
                 return false;
             }
         }
diff --git a/src/app/search/controllers/SearchController.php b/src/app/search/controllers/SearchController.php
index ad1a750fc21c260868a1ba28211bec54403942d3..4f9d4c1c9b4b24c7238feec65aa2768d83d4d2e1 100755
--- a/src/app/search/controllers/SearchController.php
+++ b/src/app/search/controllers/SearchController.php
@@ -44,13 +44,8 @@ class SearchController
                 $users[] = $value['id'];
             }
 
-            $workflowSelect = 'SELECT main_document_id FROM workflows ws1 WHERE user_id IN (?) AND id IN (
-                SELECT id FROM workflows ws2
-                    WHERE ws1.main_document_id = ws2.main_document_id
-                    ORDER BY "order"
-                    LIMIT 1)';
-            $where          = ["(id IN ({$workflowSelect}) OR typist = ?)"];
-            $data           = [$users, $GLOBALS['id']];
+            $where = ["(id IN (SELECT main_document_id FROM workflows WHERE user_id IN (?)) OR typist = ?)"];
+            $data  = [$users, $GLOBALS['id']];
         }
 
         $whereWorkflow = [];