diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php
index ceef73049d..bbf7fb5455 100644
--- a/pandora_console/include/functions_agents.php
+++ b/pandora_console/include/functions_agents.php
@@ -149,7 +149,7 @@ function agents_locate_agent(string $field)
  *
  * @param string $alias Agent alias.
  *
- * @return integer Id from the agent.
+ * @return array|boolean Agents ids or false if error.
  */
 function agents_get_agent_id_by_alias($alias)
 {
diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php
index aebef6c06b..6691ccc605 100644
--- a/pandora_console/include/functions_api.php
+++ b/pandora_console/include/functions_api.php
@@ -6992,114 +6992,6 @@ function api_set_planned_downtimes_additem($id, $thrash1, $other, $thrash3)
 }
 
 
-/**
- * Add data module to policy. And return id from new module.
- *
- * @param string            $id    Id of the target policy.
- * @param $thrash1 Don't use.
- * @param array             $other it's array, $other as param is <module_name>;<id_module_type>;<description>;
- *             <id_module_group>;<min>;<max>;<post_process>;<module_interval>;<min_warning>;<max_warning>;<str_warning>;
- *             <min_critical>;<max_critical>;<str_critical>;<history_data>;<configuration_data>;
- *             <disabled_types_event>;<module_macros>;<ff_threshold>;<each_ff>;<ff_threshold_normal>;
- *             <ff_threshold_warning>;<ff_threshold_critical>;<ff_timeout> in this order
- *              and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_<separator>)
- *              example:
- *
- *              example:
- *
- *              api.php?op=set&op2=add_data_module_policy&id=1&other=data_module_policy_example_name~2~data%20module%20created%20by%20Api~2~0~0~50.00~10~20~180~~21~35~~1~module_begin%0dmodule_name%20pandora_process%0dmodule_type%20generic_data%0dmodule_exec%20ps%20aux%20|%20grep%20pandora%20|%20wc%20-l%0dmodule_end&other_mode=url_encode_separator_~
- *
- * @param $thrash3 Don't use
- */
-function api_set_add_data_module_policy($id, $thrash1, $other, $thrash3)
-{
-    if (defined('METACONSOLE')) {
-        return;
-    }
-
-    if ($id == '') {
-        returnError('The data module could not be added to policy. Id_policy cannot be left blank.');
-        return;
-    }
-
-    if (enterprise_hook('policies_check_user_policy', [$id]) === false) {
-        returnError('forbidden', 'string');
-        return;
-    }
-
-    if ($other['data'][0] == '') {
-        returnError('The data module could not be added to policy. Module_name cannot be left blank.');
-        return;
-    }
-
-    // Check if the module is already in the policy
-    $name_module_policy = enterprise_hook('policies_get_modules', [$id, ['name' => $other['data'][0]], 'name']);
-
-    if ($name_module_policy === ENTERPRISE_NOT_HOOK) {
-        returnError('The data module could not be added to policy.');
-        return;
-    }
-
-    $disabled_types_event = [];
-    $disabled_types_event[EVENTS_GOING_UNKNOWN] = (int) !$other['data'][16];
-    $disabled_types_event = json_encode($disabled_types_event);
-
-    $values = [];
-    $values['id_tipo_modulo'] = $other['data'][1];
-    $values['description'] = $other['data'][2];
-    $values['id_module_group'] = $other['data'][3];
-    $values['min'] = $other['data'][4];
-    $values['max'] = $other['data'][5];
-    $values['post_process'] = $other['data'][6];
-    $values['module_interval'] = $other['data'][7];
-    $values['min_warning'] = $other['data'][8];
-    $values['max_warning'] = $other['data'][9];
-    $values['str_warning'] = $other['data'][10];
-    $values['min_critical'] = $other['data'][11];
-    $values['max_critical'] = $other['data'][12];
-    $values['str_critical'] = $other['data'][13];
-    $values['history_data'] = $other['data'][14];
-    $values['configuration_data'] = $other['data'][15];
-    $values['disabled_types_event'] = $disabled_types_event;
-    $values['module_macros'] = $other['data'][17];
-    $values['min_ff_event'] = $other['data'][18];
-    $values['each_ff'] = $other['data'][19];
-    $values['min_ff_event_normal'] = $other['data'][20];
-    $values['min_ff_event_warning'] = $other['data'][21];
-    $values['min_ff_event_critical'] = $other['data'][22];
-    $values['ff_timeout'] = $other['data'][23];
-    $values['ff_type'] = $other['data'][24];
-
-    if ($name_module_policy !== false) {
-        if ($name_module_policy[0]['name'] == $other['data'][0]) {
-            returnError(
-                'The data module could not be added to policy. The module is already in the policy.'
-            );
-            return;
-        }
-    }
-
-    $success = enterprise_hook(
-        'policies_create_module',
-        [
-            $other['data'][0],
-            $id,
-            1,
-            $values,
-            false,
-        ]
-    );
-
-    if ($success) {
-        // returnData('string', array('type' => 'string', 'data' => __('Data module added to policy. Is necessary to apply the policy in order to changes take effect.')));
-        returnData('string', ['type' => 'string', 'data' => $success]);
-    } else {
-        returnError('The data module could not be added to policy.');
-    }
-
-}
-
-
 /**
  * Update data module in policy. And return id from new module.
  *
diff --git a/pandora_console/include/lib/Entity.php b/pandora_console/include/lib/Entity.php
index 7a59a7e558..d7f55ed780 100644
--- a/pandora_console/include/lib/Entity.php
+++ b/pandora_console/include/lib/Entity.php
@@ -163,7 +163,10 @@ abstract class Entity
     {
         // Prioritize written methods over dynamic ones.
         if (method_exists($this, $methodName) === true) {
-            return $this->{$methodName}($params);
+            return call_user_func_array(
+                $this->{$methodName},
+                $params
+            );
         }
 
         // Enterprise capabilities.
diff --git a/pandora_console/include/lib/ModuleType.php b/pandora_console/include/lib/ModuleType.php
index c14a709298..26ffccc100 100644
--- a/pandora_console/include/lib/ModuleType.php
+++ b/pandora_console/include/lib/ModuleType.php
@@ -91,4 +91,54 @@ class ModuleType extends Entity
     }
 
 
+    /**
+     * Validate id_module and id_module_type pair.
+     *
+     * @param integer $id_module_type Id module_type.
+     * @param integer $id_modulo      Id modulo.
+     *
+     * @return boolean True success, false if not.
+     */
+    public static function validate(int $id_module_type, int $id_modulo)
+    {
+        switch ($id_modulo) {
+            case MODULE_PLUGIN:
+            case MODULE_PREDICTION:
+            case MODULE_DATA:
+            case MODULE_WMI:
+                if (($id_module_type < 6 || $id_module_type > 18) === false
+                    && ($id_module_type < 29 || $id_module_type > 34) === false
+                    && ($id_module_type === 25)
+                ) {
+                    return false;
+                }
+            break;
+
+            case MODULE_NETWORK:
+            case MODULE_SNMP:
+                if ($id_module_type < 6 || $id_module_type > 18) {
+                    return false;
+                }
+            break;
+
+            case MODULE_WEB:
+                if ($id_module_type !== 25) {
+                    return false;
+                }
+            break;
+
+            case MODULE_WUX:
+                if ($id_module_type < 29 || $id_module_type > 34) {
+                    return false;
+                }
+            break;
+
+            default:
+            return false;
+        }
+
+        return true;
+    }
+
+
 }