diff --git a/src/app/action/controllers/ActionController.php b/src/app/action/controllers/ActionController.php
index c7d299b1f48d89bfb9b4ad92da2c872da478e1bd..8895ad3600390a559f74884547e70efa59725756 100755
--- a/src/app/action/controllers/ActionController.php
+++ b/src/app/action/controllers/ActionController.php
@@ -18,9 +18,11 @@ use Group\controllers\GroupController;
 use Group\controllers\PrivilegeController;
 use Group\models\GroupModel;
 use History\controllers\HistoryController;
+use IndexingModel\models\IndexingModelFieldModel;
 use Resource\models\ResModel;
 use Respect\Validation\Validator;
 use Action\models\ActionModel;
+use SrcCore\models\ValidatorModel;
 use Status\models\StatusModel;
 use Slim\Http\Request;
 use Slim\Http\Response;
@@ -345,4 +347,28 @@ class ActionController
         }
         return $request;
     }
+
+    public static function checkRequiredFields(array $args)
+    {
+        ValidatorModel::notEmpty($args, ['resId', 'actionRequiredFields']);
+        ValidatorModel::intVal($args, ['resId']);
+
+        $resource = ResModel::getById(['resId' => $args['resId'], 'select' => ['model_id', 'custom_fields']]);
+        $model = $resource['model_id'];
+        $resourceCustomFields = json_decode($resource['custom_fields'], true);
+        $modelFields = IndexingModelFieldModel::get([
+            'select' => ['identifier'],
+            'where'  => ['model_id = ?', "identifier LIKE 'indexingCustomField_%'"],
+            'data'   => [$model]
+        ]);
+        $modelFields = array_column($modelFields, 'identifier');
+
+        foreach ($args['actionRequiredFields'] as $actionRequiredField) {
+            $idCustom = explode("_", $actionRequiredField)[1];
+            if (in_array($actionRequiredField, $modelFields) && empty($resourceCustomFields[$idCustom])) {
+                return ['errors' => 'Missing required custom field to do action'];
+            }
+        }
+        return ['success' => true];
+    }
 }
diff --git a/src/app/resource/controllers/IndexingController.php b/src/app/resource/controllers/IndexingController.php
index 4d07dd32ccbb7463b6d072fcae9d340cf0cb177c..306fe6a4fb74b3e943c1aacffb85fee7b1546cfb 100755
--- a/src/app/resource/controllers/IndexingController.php
+++ b/src/app/resource/controllers/IndexingController.php
@@ -14,12 +14,12 @@
 
 namespace Resource\controllers;
 
+use Action\controllers\ActionController;
 use Action\controllers\ActionMethodController;
 use Action\models\ActionModel;
 use Doctype\models\DoctypeModel;
 use Entity\models\EntityModel;
 use Group\models\GroupModel;
-use IndexingModel\models\IndexingModelFieldModel;
 use Parameter\models\ParameterModel;
 use Priority\models\PriorityModel;
 use Resource\models\ResModel;
@@ -98,21 +98,9 @@ class IndexingController
         $body['note'] = empty($body['note']) ? null : $body['note'];
 
         if (!empty($actionRequiredFields)) {
-            $resource = ResModel::getById(['resId' => $body['resource'], 'select' => ['model_id', 'custom_fields']]);
-            $model = $resource['model_id'];
-            $resourceCustomFields = json_decode($resource['custom_fields'], true);
-            $modelFields = IndexingModelFieldModel::get([
-                'select' => ['identifier'],
-                'where'  => ['model_id = ?', "identifier LIKE 'indexingCustomField_%'"],
-                'data'   => [$model]
-            ]);
-            $modelFields = array_column($modelFields, 'identifier');
-
-            foreach ($actionRequiredFields as $actionRequiredField) {
-                $idCustom = explode("_", $actionRequiredField)[1];
-                if (in_array($actionRequiredField, $modelFields) && empty($resourceCustomFields[$idCustom])) {
-                    return $response->withStatus(400)->withJson(['errors' => 'Missing required custom field to do action']);
-                }
+            $requiredFieldsValid = ActionController::checkRequiredFields(['resId' => $body['resource'], 'actionRequiredFields' => $actionRequiredFields]);
+            if (!empty($requiredFieldsValid['errors'])) {
+                return $response->withStatus(400)->withJson($requiredFieldsValid);
             }
         }
 
diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php
index 0bad972e988949f6afab024e9e5d5912b86b6239..39e4d7ec1f0b18104ee96adf82dd968df4d81eee 100644
--- a/src/app/resource/controllers/ResourceListController.php
+++ b/src/app/resource/controllers/ResourceListController.php
@@ -14,6 +14,7 @@
 
 namespace Resource\controllers;
 
+use Action\controllers\ActionController;
 use Action\controllers\ActionMethodController;
 use Action\models\ActionModel;
 use Attachment\models\AttachmentModel;
@@ -26,7 +27,6 @@ use Entity\models\EntityModel;
 use Entity\models\ListInstanceModel;
 use Folder\models\FolderModel;
 use Group\models\GroupModel;
-use IndexingModel\models\IndexingModelFieldModel;
 use Note\models\NoteModel;
 use Priority\models\PriorityModel;
 use Resource\models\ResModel;
@@ -438,21 +438,9 @@ class ResourceListController
         $methodResponses = [];
         foreach ($resourcesForAction as $key => $resId) {
             if (!empty($actionRequiredFields)) {
-                $resource = ResModel::getById(['resId' => $resId, 'select' => ['model_id', 'custom_fields']]);
-                $model = $resource['model_id'];
-                $resourceCustomFields = json_decode($resource['custom_fields'], true);
-                $modelFields = IndexingModelFieldModel::get([
-                    'select' => ['identifier'],
-                    'where'  => ['model_id = ?', "identifier LIKE 'indexingCustomField_%'"],
-                    'data'   => [$model]
-                ]);
-                $modelFields = array_column($modelFields, 'identifier');
-
-                foreach ($actionRequiredFields as $actionRequiredField) {
-                    $idCustom = explode("_", $actionRequiredField)[1];
-                    if (in_array($actionRequiredField, $modelFields) && empty($resourceCustomFields[$idCustom])) {
-                        return $response->withStatus(400)->withJson(['errors' => 'Missing required custom field to do action']);
-                    }
+                $requiredFieldsValid = ActionController::checkRequiredFields(['resId' => $resId, 'actionRequiredFields' => $actionRequiredFields]);
+                if (!empty($requiredFieldsValid['errors'])) {
+                    return $response->withStatus(400)->withJson($requiredFieldsValid);
                 }
             }