diff --git a/modules/Calendar/actions/Save.php b/modules/Calendar/actions/Save.php
index 32cb301628cfb843fe118631dc1b5f92ec506d30..6fc2b91e48338732a6680d59280bf568d8eab9fe 100644
--- a/modules/Calendar/actions/Save.php
+++ b/modules/Calendar/actions/Save.php
@@ -144,24 +144,12 @@ class Calendar_Save_Action extends Vtiger_Save_Action {
 			$fieldValue = $request->get($fieldName, null);
             // For custom time fields in Calendar, it was not converting to db insert format(sending as 10:00 AM/PM)
             $fieldDataType = $fieldModel->getFieldDataType();
+            if($fieldValue){
+                $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel);
+            }
 			if($fieldDataType == 'time' && $fieldValue !== null){
 				$fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
             }
-            if(($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') && $fieldValue !== null){
-                $fieldInfo = $fieldModel->getFieldInfo();
-                $editablePicklistValues = $fieldInfo['editablepicklistvalues'];
-                if($fieldDataType == 'multipicklist'&& !empty($editablePicklistValues)){
-                    $selectedMultiPick = array();
-                    foreach ($fieldValue as $key => $selectedValue) {
-                        if(in_array($selectedValue, $editablePicklistValues)){
-                            $selectedMultiPick[] = $selectedValue;
-                        }
-                    }
-                    $fieldValue = $selectedMultiPick;
-                }else if( $fieldDataType != 'multipicklist' && !empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){
-                    $fieldValue = null;
-                }
-            }
             // End
             if ($fieldName === $request->get('field')) {
 				$fieldValue = $request->get('value');
diff --git a/modules/SalesOrder/actions/SaveAjax.php b/modules/SalesOrder/actions/SaveAjax.php
index bcb53e74aa7375c583dafd5865d5845aff85188d..92d2df700f9145cd73c988e4848b6d264451ca92 100755
--- a/modules/SalesOrder/actions/SaveAjax.php
+++ b/modules/SalesOrder/actions/SaveAjax.php
@@ -56,24 +56,12 @@ class SalesOrder_SaveAjax_Action extends Inventory_SaveAjax_Action {
 				}
 
 				$fieldDataType = $fieldModel->getFieldDataType();
+                if($fieldValue){
+                    $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel);
+                }
 				if ($fieldDataType == 'time' && $fieldValue !== null) {
 					$fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
 				}
-                if(($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') && $fieldValue !== null){
-                    $fieldInfo = $fieldModel->getFieldInfo();
-                    $editablePicklistValues = $fieldInfo['editablepicklistvalues'];
-                    if($fieldDataType == 'multipicklist'&& !empty($editablePicklistValues)){
-                        $selectedMultiPick = array();
-                        foreach ($fieldValue as $key => $selectedValue) {
-                            if(in_array($selectedValue, $editablePicklistValues)){
-                                $selectedMultiPick[] = $selectedValue;
-                            }
-                        }
-                        $fieldValue = $selectedMultiPick;
-                    }else if( $fieldDataType != 'multipicklist' && !empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){
-                        $fieldValue = null;
-                    }
-                }
 				if ($fieldValue !== null) {
 					if (!is_array($fieldValue)) {
 						$fieldValue = trim($fieldValue);
@@ -96,24 +84,12 @@ class SalesOrder_SaveAjax_Action extends Inventory_SaveAjax_Action {
 					$fieldValue = $fieldModel->getDefaultFieldValue();
 				}
 				$fieldDataType = $fieldModel->getFieldDataType();
+                if($fieldValue){
+                    $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel);
+                }
 				if ($fieldDataType == 'time' && $fieldValue !== null) {
 					$fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
 				}
-                if(($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') && $fieldValue !== null){
-                    $fieldInfo = $fieldModel->getFieldInfo();
-                    $editablePicklistValues = $fieldInfo['editablepicklistvalues'];
-                    if($fieldDataType == 'multipicklist'&& !empty($editablePicklistValues)){
-                        $selectedMultiPick = array();
-                        foreach ($fieldValue as $key => $selectedValue) {
-                            if(in_array($selectedValue, $editablePicklistValues)){
-                                $selectedMultiPick[] = $selectedValue;
-                            }
-                        }
-                        $fieldValue = $selectedMultiPick;
-                    }else if( $fieldDataType != 'multipicklist' && !empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){
-                        $fieldValue = null;
-                    }
-                }
 				if ($fieldValue !== null) {
 					if (!is_array($fieldValue)) {
 						$fieldValue = trim($fieldValue);
diff --git a/modules/Vtiger/actions/Save.php b/modules/Vtiger/actions/Save.php
index fdbf584dcb34920f17bd75b1c32e7cf824d0e58f..3def25fd85c183974dcac538a6330a326e389584 100644
--- a/modules/Vtiger/actions/Save.php
+++ b/modules/Vtiger/actions/Save.php
@@ -158,24 +158,12 @@ class Vtiger_Save_Action extends Vtiger_Action_Controller {
 		foreach ($fieldModelList as $fieldName => $fieldModel) {
 			$fieldValue = $request->get($fieldName, null);
 			$fieldDataType = $fieldModel->getFieldDataType();
+            if($fieldValue){
+                $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel);
+            }
 			if($fieldDataType == 'time' && $fieldValue !== null){
 				$fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
 			}
-            if(($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') && $fieldValue !== null){
-                $fieldInfo = $fieldModel->getFieldInfo();
-                $editablePicklistValues = $fieldInfo['editablepicklistvalues'];
-                if($fieldDataType == 'multipicklist'&& !empty($editablePicklistValues)){
-                    $selectedMultiPick = array();
-                    foreach ($fieldValue as $key => $selectedValue) {
-                        if(in_array($selectedValue, $editablePicklistValues)){
-                            $selectedMultiPick[] = $selectedValue;
-                        }
-                    }
-                    $fieldValue = $selectedMultiPick;
-                }else if( $fieldDataType != 'multipicklist' && !empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){
-                    $fieldValue = null;
-                }
-            }
 			if($fieldValue !== null) {
 				if(!is_array($fieldValue) && $fieldDataType != 'currency') {
 					$fieldValue = trim($fieldValue);
diff --git a/modules/Vtiger/actions/SaveAjax.php b/modules/Vtiger/actions/SaveAjax.php
index 2a560adaa2176d3a3d538a500c830cf4ccbe8021..4207e24b1fca96ba253b7d927384d0997e13ece3 100644
--- a/modules/Vtiger/actions/SaveAjax.php
+++ b/modules/Vtiger/actions/SaveAjax.php
@@ -102,26 +102,13 @@ class Vtiger_SaveAjax_Action extends Vtiger_Save_Action {
 				}else if($fieldName === $request->get('field')){
 					$fieldValue = $request->get('value');
 				}
-
+                if($fieldValue){
+                    $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel);
+                }
 				$fieldDataType = $fieldModel->getFieldDataType();
 				if ($fieldDataType == 'time' && $fieldValue !== null) {
 					$fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
 				}
-                if(($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') && $fieldValue !== null){
-                    $fieldInfo = $fieldModel->getFieldInfo();
-                    $editablePicklistValues = $fieldInfo['editablepicklistvalues'];
-                    if($fieldDataType == 'multipicklist'&& !empty($editablePicklistValues)){
-                        $selectedMultiPick = array();
-                        foreach ($fieldValue as $key => $selectedValue) {
-                            if(in_array($selectedValue, $editablePicklistValues)){
-                                $selectedMultiPick[] = $selectedValue;
-                            }
-                        }
-                        $fieldValue = $selectedMultiPick;
-                    }else if( $fieldDataType != 'multipicklist' && !empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){
-                        $fieldValue = null;
-                    }
-                }
 				if ($fieldValue !== null) {
 					if (!is_array($fieldValue)) {
 						$fieldValue = trim($fieldValue);
@@ -147,25 +134,13 @@ class Vtiger_SaveAjax_Action extends Vtiger_Save_Action {
 				} else {
 					$fieldValue = $fieldModel->getDefaultFieldValue();
 				}
+                if($fieldValue){
+                    $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel);
+                }
 				$fieldDataType = $fieldModel->getFieldDataType();
 				if ($fieldDataType == 'time' && $fieldValue !== null) {
 					$fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
 				}
-                if(($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') && $fieldValue !== null){
-                    $fieldInfo = $fieldModel->getFieldInfo();
-                    $editablePicklistValues = $fieldInfo['editablepicklistvalues'];
-                    if($fieldDataType == 'multipicklist'){
-                        $selectedMultiPick = array();
-                        foreach ($fieldValue as $key => $selectedValue) {
-                            if(in_array($selectedValue, $editablePicklistValues)){
-                                $selectedMultiPick[] = $selectedValue;
-                            }
-                        }
-                        $fieldValue = $selectedMultiPick;
-                    }else if( $fieldDataType != 'multipicklist' && !empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){
-                        $fieldValue = null;
-                    }
-                }
 				if ($fieldValue !== null) {
 					if (!is_array($fieldValue)) {
 						$fieldValue = trim($fieldValue);
diff --git a/modules/Vtiger/helpers/Util.php b/modules/Vtiger/helpers/Util.php
index 23b7f18e71a61e4dac0b0a3f55f1f35a1e33481b..a235950841cc553754aea9eafcded79235f94714 100644
--- a/modules/Vtiger/helpers/Util.php
+++ b/modules/Vtiger/helpers/Util.php
@@ -1250,4 +1250,24 @@ class Vtiger_Util_Helper {
 		}
 		return $encryptedFileName;
 	}
+    
+    public static function validateFieldValue($fieldValue,$fieldModel){
+        $fieldDataType = $fieldModel->getFieldDataType();
+        $fieldInfo = $fieldModel->getFieldInfo();
+        $editablePicklistValues = $fieldInfo['editablepicklistvalues'];
+        if($fieldValue && $fieldDataType == 'picklist'){
+           if(!empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){
+                $fieldValue = null;
+            }
+        }elseif(count($fieldValue) > 0 && $fieldDataType == 'multipicklist'){
+            if(!empty($editablePicklistValues)){
+                foreach($fieldValue as $key => $value){
+                    if(!in_array($value, $editablePicklistValues)){
+                        unset($fieldValue[$key]);
+                    }
+                }
+            }
+        }
+        return $fieldValue;
+    }
 }