diff --git a/modules/Settings/MailConverter/handlers/MailScannerAction.php b/modules/Settings/MailConverter/handlers/MailScannerAction.php
index 8200b59663fff4bf9efb203dcbe7996c78543003..1ff8ef60f48ea753e8044eae47450fabad92739e 100644
--- a/modules/Settings/MailConverter/handlers/MailScannerAction.php
+++ b/modules/Settings/MailConverter/handlers/MailScannerAction.php
@@ -148,6 +148,17 @@ class Vtiger_MailScannerAction {
 				$returnid = $this->__UpdateTicket($mailscanner, $mailrecord, $mailscannerrule->hasRegexMatch($matchresult),$mailscannerrule);
 			}
 		}
+		else if (!empty($this->actiontype)) {
+            $action = $this;
+
+            $params = array($action,$mailscanner, $mailrecord, $mailscannerrule);
+            require 'modules/Settings/MailConverter/handlers/MailScannerEntityMethodManager.inc';
+            global $adb;
+            $emm = new MailScannerEntityMethodManager($adb);
+
+            $returnid = $emm->executeMethod($this->module,$this->actiontype, $params);
+
+        }
 		return $returnid;
 	}
 
diff --git a/modules/Settings/MailConverter/handlers/MailScannerEntityMethodManager.inc b/modules/Settings/MailConverter/handlers/MailScannerEntityMethodManager.inc
new file mode 100644
index 0000000000000000000000000000000000000000..0a25d1608c6e1331bf14237eeb318adc18e64045
--- /dev/null
+++ b/modules/Settings/MailConverter/handlers/MailScannerEntityMethodManager.inc
@@ -0,0 +1,101 @@
+<?php
+/*+*******************************************************************************
+ * The contents of this file are subject to the vtiger CRM Public License Version 1.0
+ * ("License"); You may not use this file except in compliance with the License
+ * The Original Code is:  vtiger CRM Open Source
+ * The Initial Developer of the Original Code is vtiger.
+ * Portions created by vtiger are Copyright (C) vtiger.
+ * All Rights Reserved.
+ ******************************************************************************/
+ require_once("include/events/SqlResultIterator.inc");
+
+class MailScannerEntityMethodManager {
+	
+	function __construct($adb){
+		$this->adb = $adb;
+		 if (!Vtiger_Utils::CheckTable('vtiger_mailscanner_entitymethod')) {
+                
+                $adb->pquery('CREATE TABLE IF NOT EXISTS `vtiger_mailscanner_entitymethod` (
+  `mailscanner_entitymethod_id` int(11) NOT NULL AUTO_INCREMENT,
+ 	`module_name` varchar(100) ,
+	 	`method_name` varchar(100) ,
+		 	`function_path` varchar(400) ,
+			 	`function_name` varchar(100) ,
+ 	PRIMARY KEY (`mailscanner_entitymethod_id`)
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+', array());
+
+ $adb->pquery('ALTER TABLE `vtiger_mailscanner_entitymethod`
+  ADD PRIMARY KEY (`mailscanner_entitymethod_id`),
+  ADD UNIQUE KEY `mailscanner_entitymethod_idx` (`mailscanner_entitymethod_id`);
+', array());
+/*
+ $adb->pquery('CREATE TABLE IF NOT EXISTS `vtiger_mailscanner_entitymethod_seq` (
+  `id` int(11) NOT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+', array());*/
+
+$adb->pquery('ALTER TABLE `vtiger_mailscanner_actions`
+   CHANGE `actiontype` `actiontype` VARCHAR(100), CHANGE `module` `module` VARCHAR(100), CHANGE `lookup` `lookup` VARCHAR(100) ;
+', array());
+
+
+            }
+	}
+	
+	
+	function addEntityMethod($moduleName, $methodName, $functionPath, $functionName){
+		$adb = $this->adb;
+		$id = $adb->getUniqueId("vtiger_mailscanner_entitymethod");
+		$adb->pquery("insert into vtiger_mailscanner_entitymethod ( module_name, function_path, function_name, method_name) values (?,?,?,?)", array( $moduleName, $functionPath, $functionName, $methodName));
+	}
+	
+	
+	
+	function executeMethod($moduleName, $methodName,$params){
+		$adb = $this->adb;
+		
+		$result = $adb->pquery("select function_path, function_name from vtiger_mailscanner_entitymethod where module_name=? and method_name=?", array($moduleName, $methodName));
+		if($adb->num_rows($result)!=0){
+			$data = $adb->raw_query_result_rowdata($result, 0);
+			$functionPath = $data['function_path'];
+			$functionName = $data['function_name'];
+			require_once($functionPath);
+			$functionName($params);
+		}
+	}
+	
+	function methodsForModule($moduleName){
+		$adb = $this->adb;
+		$result = $adb->pquery("select method_name from vtiger_mailscanner_entitymethod where module_name=?", array($moduleName));
+		$it = new SqlResultIterator($adb, $result);
+		$methodNames = array();
+		foreach($it as $row){
+			$methodNames[] = $row->method_name;
+		}
+		return $methodNames;
+	}
+	/*
+	private function methodExists($object, $methodName){
+		$className = get_class($object);
+		$class = new ReflectionClass($className);
+		$methods = $class->getMethods();
+		foreach($methods as $method){
+			if($method->getName()==$methodName){
+				return true;
+			}
+		}
+		return false;
+	}*/
+
+	/**
+	 * Function to remove mailscanner action entity method 
+	 * @param <String> Module Name
+	 * @param <String> Entity Method Name.
+	 */
+	function removeEntityMethod($moduleName, $methodName){
+		$adb = $this->adb;
+		$adb->pquery("DELETE FROM vtiger_mailscanner_entitymethod WHERE module_name = ? and method_name= ?", array($moduleName, $methodName));
+	}
+}
+?>
\ No newline at end of file
diff --git a/modules/Settings/MailConverter/models/RuleField.php b/modules/Settings/MailConverter/models/RuleField.php
index d8d95d03edcf25a5ba39738f9dca86458d859164..b14191ef01512fe7f4dd764e236aa041acc384e8 100644
--- a/modules/Settings/MailConverter/models/RuleField.php
+++ b/modules/Settings/MailConverter/models/RuleField.php
@@ -30,7 +30,9 @@ class Settings_MailConverter_RuleField_Model extends Vtiger_Field_Model {
 			}
 		} else if ($fieldName == 'action') {
 			$optionList = array('CREATE_HelpDesk_FROM', 'UPDATE_HelpDesk_SUBJECT', 'CREATE_Leads_SUBJECT', 'CREATE_Contacts_SUBJECT', 'CREATE_Accounts_SUBJECT', 'LINK_Contacts_FROM', 'LINK_Contacts_TO', 'LINK_Leads_FROM', 'LINK_Leads_TO', 'LINK_Accounts_FROM', 'LINK_Accounts_TO');
-			foreach ($optionList as $option) {
+            $optionListCustom= Settings_MailConverter_RuleRecord_Model::getCustomActions();
+            $optionList=array_merge($optionList,$optionListCustom);
+            foreach ($optionList as $option) {
 				$pickListValues[$option] = vtranslate($option, 'Settings::MailConverter');
             }
 		}
diff --git a/modules/Settings/MailConverter/models/RuleRecord.php b/modules/Settings/MailConverter/models/RuleRecord.php
index 443578f1344c92e3da1e394aadb926d96b83781d..341dffef6c2f56da75498c07bf07dd893ae59a08 100644
--- a/modules/Settings/MailConverter/models/RuleRecord.php
+++ b/modules/Settings/MailConverter/models/RuleRecord.php
@@ -10,6 +10,8 @@
 
 vimport('~~modules/Settings/MailConverter/handlers/MailScannerAction.php');
 vimport('~~modules/Settings/MailConverter/handlers/MailScannerRule.php');
+require_once "include/events/SqlResultIterator.inc";
+
 
 class Settings_MailConverter_RuleRecord_Model extends Settings_Vtiger_Record_Model {
 
@@ -250,7 +252,26 @@ class Settings_MailConverter_RuleRecord_Model extends Settings_Vtiger_Record_Mod
 	public static function getDefaultActions() {
 		return array('CREATE_HelpDesk_FROM', 'UPDATE_HelpDesk_SUBJECT', 'LINK_Contacts_FROM', 'LINK_Contacts_TO', 'LINK_Leads_FROM', 'LINK_Leads_TO', 'LINK_Accounts_FROM', 'LINK_Accounts_TO');
 	}
+	public static function getCustomActions()
+    {
+        $db = PearDatabase::getInstance();
+
+        $result = $db->pquery("SELECT module_name,method_name FROM vtiger_mailscanner_entitymethod WHERE 1=1", array());
+        $it = new SqlResultIterator($db, $result);
+        $methodNames = array();
+        foreach ($it as $row) {
+            unset($method_name);
+            $method_name = $row->method_name;
+            $module_name = $row->module_name;
+
+            $methodNames[] = $method_name . "_" . $module_name . "_" . "FROM";
+            $methodNames[] = $method_name . "_" . $module_name . "_" . "TO";
+            $methodNames[] = $method_name . "_" . $module_name . "_" . "SUBJECT";
+
+        }
 
+        return $methodNames;
+    }
 	public function getAssignedTo($scannerId, $ruleId) {
 		$db = PearDatabase::getInstance();
 		$result = $db->pquery("SELECT assigned_to FROM vtiger_mailscanner_rules WHERE scannerid = ? AND ruleid = ?", array($scannerId, $ruleId));