diff --git a/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc b/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc
index fee64c337aff6c7afcc4ee1ff0f612d445b4096d..43e142f87db9d3c32a36da9f8454c982762637b5 100644
--- a/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc
+++ b/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc
@@ -70,6 +70,41 @@ function __vt_gt($arr) {
 function __vt_concat($arr){
 	return implode($arr);
 }
+
+function __vt_substring($arr){
+unset($string);unset($start);unset($end);
+    if (count($arr) == 3) {
+        $string = $arr[0];
+        $start = $arr[1];
+        $end = $arr[2];
+    } elseif (count($arr) == 2){
+        $string = $arr[0];
+        $start = $arr[1];
+        $end = strlen($string);
+    }elseif (count($arr) == 1){
+        $string = $arr[0];
+        $start = 0;
+        $end = strlen($string);
+    }else{return '';}
+    return mb_substr($string,$start,$end);
+}
+
+
+
+function __vt_preg_replace_str_only($arr){
+    unset($pattern);unset($replacement);unset($subject);
+    if (count($arr) == 3 && is_string($arr[0]) && is_string($arr[1]) && is_string($arr[2])) {
+        $pattern = $arr[0];
+
+
+        $replacement = $arr[1];
+
+        $subject = $arr[2];
+    } else{return '';}
+    return preg_replace($pattern,$replacement,$subject);
+}
+
+
 /* Date difference between (input times) or (current time and input time)
  *
  * @param Array $a $a[0] - Input time1, $a[1] - Input time2
@@ -283,6 +318,8 @@ class VTFieldExpressionEvaluater{
 				'>' => '__vt_gt',
 		);
 		$this->functions = array(
+		        'substring'=>'__vt_substring',
+				'preg_replace_str_only'=>'__vt_preg_replace_str_only',
 				'concat'=>'__vt_concat',
 				'time_diff' => '__vt_time_diff',
 				'time_diffdays' => '__vt_time_diffdays',
diff --git a/modules/com_vtiger_workflow/expression_engine/VTExpressionsManager.inc b/modules/com_vtiger_workflow/expression_engine/VTExpressionsManager.inc
index 7c2f1f0fb5046100acb3c9e550840ecb81bb64b5..7774e885424ee7de7549881513b707a5ae1a7b1e 100644
--- a/modules/com_vtiger_workflow/expression_engine/VTExpressionsManager.inc
+++ b/modules/com_vtiger_workflow/expression_engine/VTExpressionsManager.inc
@@ -39,7 +39,7 @@ class VTExpressionsManager{
 	}
 
 	function expressionFunctions() {
-		return array('concat' => 'concat(a,b)', 'time_diffdays(a,b)' => 'time_diffdays(a,b)', 'time_diffdays(a)' => 'time_diffdays(a)', 'time_diff(a,b)' => 'time_diff(a,b)','time_diff(a)' => 'time_diff(a)',
+		return array('substring(string,start,end)'=> 'substring(string,start,end)','preg_replace_str_only(pattern_str,replacement_str,subject)'=>'preg_replace_str_only(pattern_str,replacement_str,subject)','concat' => 'concat(a,b)', 'time_diffdays(a,b)' => 'time_diffdays(a,b)', 'time_diffdays(a)' => 'time_diffdays(a)', 'time_diff(a,b)' => 'time_diff(a,b)','time_diff(a)' => 'time_diff(a)',
 			'add_days' => 'add_days(datefield, noofdays)', 'sub_days' => 'sub_days(datefield, noofdays)', 'add_time(timefield, minutes)' => 'add_time(timefield, minutes)', 'sub_time(timefield, minutes)' => 'sub_time(timefield, minutes)',
 			'today' => "get_date('today')", 'tomorrow' => "get_date('tomorrow')",  'yesterday' => "get_date('yesterday')", 'power(base,exponential)' => "power(base,exponential)");
 	}