diff --git a/src/core/controllers/AutoCompleteController.php b/src/core/controllers/AutoCompleteController.php
index 0d539665c6c9b4f9c9a9697a4944ab74a0637caf..7b5ac7d67039a7c95fd2552dd32c24d852e737b7 100644
--- a/src/core/controllers/AutoCompleteController.php
+++ b/src/core/controllers/AutoCompleteController.php
@@ -23,8 +23,8 @@ use Entity\models\EntityModel;
 use SrcCore\models\CoreConfigModel;
 use SrcCore\models\DatabaseModel;
 use SrcCore\models\TextFormatModel;
+use SrcCore\models\ValidatorModel;
 use Status\models\StatusModel;
-use User\models\UserEntityModel;
 use User\models\UserModel;
 
 class AutoCompleteController
@@ -86,23 +86,18 @@ class AutoCompleteController
 
         $excludedUsers = ['superadmin'];
 
-        $searchItems = explode(' ', $data['search']);
-
-        $fields = '(firstname ilike ? OR lastname ilike ?)';
-        $where = ['enabled = ?', 'status != ?', 'user_id not in (?)'];
-        $requestData = ['Y', 'DEL', $excludedUsers];
-        foreach ($searchItems as $item) {
-            if (strlen($item) >= 2) {
-                $where[] = $fields;
-                $requestData[] = "%{$item}%";
-                $requestData[] = "%{$item}%";
-            }
-        }
+        $requestData = AutoCompleteController::getDataForRequest([
+            'search'        => $data['search'],
+            'fields'        => '(firstname ilike ? OR lastname ilike ?)',
+            'where'         => ['enabled = ?', 'status != ?', 'user_id not in (?)'],
+            'data'          => ['Y', 'DEL', $excludedUsers],
+            'fieldsNumber'  => 2,
+        ]);
 
         $users = UserModel::get([
             'select'    => ['user_id', 'firstname', 'lastname'],
-            'where'     => $where,
-            'data'      => $requestData,
+            'where'     => $requestData['where'],
+            'data'      => $requestData['data'],
             'orderBy'   => ['lastname']
         ]);
 
@@ -121,21 +116,72 @@ class AutoCompleteController
 
     public static function getUsersForAdministration(Request $request, Response $response)
     {
+        $data = $request->getQueryParams();
+        $check = Validator::stringType()->notEmpty()->validate($data['search']);
+        if (!$check) {
+            return $response->withStatus(400)->withJson(['errors' => 'Bad Request']);
+        }
+
+        $excludedUsers = ['superadmin'];
+
         if ($GLOBALS['userId'] != 'superadmin') {
             $entities = EntityModel::getAllEntitiesByUserId(['userId' => $GLOBALS['userId']]);
-            $users = UserEntityModel::getUsersByEntities([
+
+            $requestData = AutoCompleteController::getDataForRequest([
+                'search'        => $data['search'],
+                'fields'        => '(users.firstname ilike ? OR users.lastname ilike ?)',
+                'where'         => [
+                    'users.user_id = users_entities.user_id',
+                    'users_entities.entity_id in (?)',
+                    'users.status != ?',
+                    'users.enabled = ?'
+                ],
+                'data'          => [$entities, 'DEL', 'Y'],
+                'fieldsNumber'  => 2,
+            ]);
+
+            $users = DatabaseModel::select([
                 'select'    => ['DISTINCT users.user_id', 'users.id', 'users.firstname', 'users.lastname'],
-                'entities'  => $entities
+                'table'     => ['users, users_entities'],
+                'where'     => $requestData['where'],
+                'data'      => $requestData['data']
+            ]);
+
+            $requestData = AutoCompleteController::getDataForRequest([
+                'search'        => $data['search'],
+                'fields'        => '(users.firstname ilike ? OR users.lastname ilike ?)',
+                'where'         => [
+                    'users_entities IS NULL',
+                    'users.user_id not in (?)',
+                    'users.status != ?',
+                    'users.enabled = ?'
+                ],
+                'data'          => [$excludedUsers, 'DEL', 'Y'],
+                'fieldsNumber'  => 2,
             ]);
-            $usersNoEntities = UserEntityModel::getUsersWithoutEntities(['select' => ['users.id', 'users.user_id', 'users.firstname', 'users.lastname']]);
+
+            $usersNoEntities = DatabaseModel::select([
+                'select'    => ['users.id', 'users.user_id', 'users.firstname', 'users.lastname'],
+                'table'     => ['users', 'users_entities'],
+                'left_join' => ['users.user_id = users_entities.user_id'],
+                'where'     => $requestData['where'],
+                'data'      => $requestData['data']
+            ]);
+
             $users = array_merge($users, $usersNoEntities);
         } else {
-            $excludedUsers = ['superadmin'];
+            $requestData = AutoCompleteController::getDataForRequest([
+                'search'        => $data['search'],
+                'fields'        => '(firstname ilike ? OR lastname ilike ?)',
+                'where'         => ['enabled = ?', 'status != ?', 'user_id not in (?)'],
+                'data'          => ['Y', 'DEL', $excludedUsers],
+                'fieldsNumber'  => 2,
+            ]);
 
             $users = UserModel::get([
-                'select'    => ['id', 'user_id', 'firstname', 'lastname'],
-                'where'     => ['enabled = ?', 'status != ?', 'user_id not in (?)'],
-                'data'      => ['Y', 'DEL', $excludedUsers],
+                'select'    => ['user_id', 'firstname', 'lastname'],
+                'where'     => $requestData['where'],
+                'data'      => $requestData['data'],
                 'orderBy'   => ['lastname']
             ]);
         }
@@ -155,12 +201,18 @@ class AutoCompleteController
 
     public static function getUsersForVisa(Request $request, Response $response)
     {
+        $data = $request->getQueryParams();
+        $check = Validator::stringType()->notEmpty()->validate($data['search']);
+        if (!$check) {
+            return $response->withStatus(400)->withJson(['errors' => 'Bad Request']);
+        }
+
         $excludedUsers = ['superadmin'];
 
-        $users = DatabaseModel::select([
-            'select'    => ['DISTINCT users.user_id', 'users.firstname', 'users.lastname'],
-            'table'     => ['users, usergroup_content, usergroups_services'],
-            'where'     => [
+        $requestData = AutoCompleteController::getDataForRequest([
+            'search'        => $data['search'],
+            'fields'        => '(users.firstname ilike ? OR users.lastname ilike ?)',
+            'where'         => [
                 'usergroup_content.group_id = usergroups_services.group_id',
                 'usergroup_content.user_id = users.user_id',
                 'usergroups_services.service_id in (?)',
@@ -168,7 +220,15 @@ class AutoCompleteController
                 'users.enabled = ?',
                 'users.status != ?'
             ],
-            'data'      => [['visa_documents', 'sign_document'], $excludedUsers, 'Y', 'DEL'],
+            'data'          => [['visa_documents', 'sign_document'], $excludedUsers, 'Y', 'DEL'],
+            'fieldsNumber'  => 2,
+        ]);
+
+        $users = DatabaseModel::select([
+            'select'    => ['DISTINCT users.user_id', 'users.firstname', 'users.lastname'],
+            'table'     => ['users, usergroup_content, usergroups_services'],
+            'where'     => $requestData['where'],
+            'data'      => $requestData['data'],
             'order_by'  => ['users.lastname']
         ]);
 
@@ -187,10 +247,24 @@ class AutoCompleteController
 
     public static function getEntities(Request $request, Response $response)
     {
+        $data = $request->getQueryParams();
+        $check = Validator::stringType()->notEmpty()->validate($data['search']);
+        if (!$check) {
+            return $response->withStatus(400)->withJson(['errors' => 'Bad Request']);
+        }
+
+        $requestData = AutoCompleteController::getDataForRequest([
+            'search'        => $data['search'],
+            'fields'        => '(entity_label ilike ?)',
+            'where'         => ['enabled = ?'],
+            'data'          => ['Y'],
+            'fieldsNumber'  => 1,
+        ]);
+
         $entities = EntityModel::get([
             'select'    => ['entity_id', 'entity_label', 'short_label'],
-            'where'     => ['enabled = ?'],
-            'data'      => ['Y'],
+            'where'     => $requestData['where'],
+            'data'      => $requestData['data'],
             'orderBy'   => ['entity_label']
         ]);
 
@@ -209,9 +283,7 @@ class AutoCompleteController
 
     public static function getStatuses(Request $request, Response $response)
     {
-        $statuses = StatusModel::get([
-            'select'    => ['id', 'label_status', 'img_filename']
-        ]);
+        $statuses = StatusModel::get(['select' => ['id', 'label_status', 'img_filename']]);
 
         $data = [];
         foreach ($statuses as $value) {
@@ -284,4 +356,25 @@ class AutoCompleteController
 
         return $response->withJson($addresses);
     }
+
+    private static function getDataForRequest(array $aArgs)
+    {
+        ValidatorModel::notEmpty($aArgs, ['search', 'fields', 'where', 'data', 'fieldsNumber']);
+        ValidatorModel::stringType($aArgs, ['search', 'fields']);
+        ValidatorModel::arrayType($aArgs, ['where', 'data']);
+        ValidatorModel::intType($aArgs, ['fieldsNumber']);
+
+        $searchItems = explode(' ', $aArgs['search']);
+
+        foreach ($searchItems as $item) {
+            if (strlen($item) >= 2) {
+                $aArgs['where'][] = $aArgs['fields'];
+                for ($i = 0; $i < $aArgs['fieldsNumber']; $i++) {
+                    $aArgs['data'][] = "%{$item}%";
+                }
+            }
+        }
+
+        return ['where' => $aArgs['where'], 'data' => $aArgs['data']];
+    }
 }