diff --git a/modules/Calendar/actions/Save.php b/modules/Calendar/actions/Save.php
index da5307f8bf039af0d0cb8f0287a3bf8aaca35ed1..6fc2b91e48338732a6680d59280bf568d8eab9fe 100644
--- a/modules/Calendar/actions/Save.php
+++ b/modules/Calendar/actions/Save.php
@@ -144,16 +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(!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 333268357b26e0776a04de3bf59c7180236d634d..92d2df700f9145cd73c988e4848b6d264451ca92 100755
--- a/modules/SalesOrder/actions/SaveAjax.php
+++ b/modules/SalesOrder/actions/SaveAjax.php
@@ -56,16 +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(!empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){
-                        $fieldValue = null;
-                    }
-                }
 				if ($fieldValue !== null) {
 					if (!is_array($fieldValue)) {
 						$fieldValue = trim($fieldValue);
@@ -88,16 +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(!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 d106ec7400e153fa19496a52aaaadc5e98ea3c8e..3def25fd85c183974dcac538a6330a326e389584 100644
--- a/modules/Vtiger/actions/Save.php
+++ b/modules/Vtiger/actions/Save.php
@@ -158,16 +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(!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 829cf8b1486dbde64e9b125a36737dd51727905f..4207e24b1fca96ba253b7d927384d0997e13ece3 100644
--- a/modules/Vtiger/actions/SaveAjax.php
+++ b/modules/Vtiger/actions/SaveAjax.php
@@ -102,18 +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(!empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){
-                        $fieldValue = null;
-                    }
-                }
 				if ($fieldValue !== null) {
 					if (!is_array($fieldValue)) {
 						$fieldValue = trim($fieldValue);
@@ -139,8 +134,11 @@ 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') {
+				if ($fieldDataType == 'time' && $fieldValue !== null) {
 					$fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue);
 				}
 				if ($fieldValue !== null) {
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;
+    }
 }