diff --git a/entity/Comm_entity/entityfields/addr/onValidation.js b/entity/Comm_entity/entityfields/addr/onValidation.js
index b99bc84225439980d4ed10a88a6a45f9f30c082a..97fccc1a01aeaa1794aae039d5bf8f8d00ddca22 100644
--- a/entity/Comm_entity/entityfields/addr/onValidation.js
+++ b/entity/Comm_entity/entityfields/addr/onValidation.js
@@ -6,6 +6,7 @@ import("system.result");
 import("system.mail");
 import("Keyword_lib");
 import("Comm_lib");
+import("Util_lib");
 
 var kwdUtil = new KeywordUtils();
 var kwd = kwdUtil.createKeyword("COMM.MEDIUM");
@@ -14,7 +15,7 @@ var commCategory = kwd.getPropForKey(commMedium, "contentType", true);//TODO: ma
 
 var fn = CommValidationUtil.makeValidationFn(commCategory);
 if (fn != null){
-    var commAddr = vars.get("$local.value");//contains the entered value - the field contains the value only after successfull validation
+    var commAddr = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.ADDR"));
     var additional = CommValidationUtil.getExtensionsBlueprint();
     additional.countryCode = vars.get("$param.RelationsMainCountry_param");//TODO: try to use users language first and then the companies
     var res = fn.call(null, commAddr, additional);
diff --git a/entity/Contract_entity/entityfields/contractcode/onValidation.js b/entity/Contract_entity/entityfields/contractcode/onValidation.js
index 5b26ae2f6e7dae262d52887628e7b09247f913f7..e357339a3f7c17483b1c7188c54a1c547174f19a 100644
--- a/entity/Contract_entity/entityfields/contractcode/onValidation.js
+++ b/entity/Contract_entity/entityfields/contractcode/onValidation.js
@@ -2,8 +2,9 @@ import("system.translate");
 import("system.result");
 import("system.vars");
 import("system.db");
+import("Util_lib");
 
-var codeCount = db.cell("select count(CONTRACTCODE) from CONTRACT where CONTRACTCODE = '" + vars.get("$local.value") + "'"
+var codeCount = db.cell("select count(CONTRACTCODE) from CONTRACT where CONTRACTCODE = '" + ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTCODE")) + "'"
                        + " and CONTRACTID <> '" + vars.get("$field.CONTRACTID") + "'");
 if(codeCount > 0)
 {
diff --git a/entity/Contract_entity/entityfields/contractdue/onValidation.js b/entity/Contract_entity/entityfields/contractdue/onValidation.js
index 6e86ad155d5d935e10071d2350b22c0a0f16dc63..d269674beab0906856f8e8bc83afe6ffe48c73f9 100644
--- a/entity/Contract_entity/entityfields/contractdue/onValidation.js
+++ b/entity/Contract_entity/entityfields/contractdue/onValidation.js
@@ -2,9 +2,10 @@ import("system.result");
 import("system.translate");
 import("system.vars");
 import("Date_lib");
+import("Util_lib");
 
 var dateUtils = new DateUtils();
-var cDue = vars.get("$local.value");
+var cDue = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTDUE"));
 
 if (dateUtils.validateBeginnBeforeEnd(vars.get("$field.CONTRACTSTART"), cDue) === false || dateUtils.validateBeginnBeforeEnd(cDue, vars.get("$field.CONTRACTEND")) === false) {
     result.string(translate.text("The next due date must be after the start of the contract and before the expiry of the contract!"));
diff --git a/entity/Contract_entity/entityfields/contractend/onValidation.js b/entity/Contract_entity/entityfields/contractend/onValidation.js
index fdd3b12c5740cb61e9421a4f391bc8dd353190db..8bb7dc15d6b77c65124e37372351a6c158d526e6 100644
--- a/entity/Contract_entity/entityfields/contractend/onValidation.js
+++ b/entity/Contract_entity/entityfields/contractend/onValidation.js
@@ -1,9 +1,10 @@
 import("system.result");
 import("system.vars");
 import("Date_lib");
+import("Util_lib");
 
 var dateUtils = new DateUtils();
-var cEnd = vars.get("$local.value");
+var cEnd = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTEND"));
 var cDue = vars.get("$field.CONTRACTDUE");
 
 if (dateUtils.validateBeginnBeforeEnd(vars.get("$field.CONTRACTSTART"), cEnd) === false)
diff --git a/entity/Contract_entity/entityfields/contractend/onValueChange.js b/entity/Contract_entity/entityfields/contractend/onValueChange.js
index 5a41f5caef66e87d9275a21f81d09bea8b71b93d..ae1ba0c5ca77f89b745d574da6d9f0c44d7013e1 100644
--- a/entity/Contract_entity/entityfields/contractend/onValueChange.js
+++ b/entity/Contract_entity/entityfields/contractend/onValueChange.js
@@ -1,6 +1,7 @@
 import("system.vars");
+import("Util_lib");
 
-var cEnd = vars.get("$local.value");
+var cEnd = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTEND"));
 var cDue = vars.get("$field.CONTRACTDUE");
 
 if (cDue > cEnd && cDue != "")
diff --git a/entity/Contract_entity/entityfields/contractstart/onValidation.js b/entity/Contract_entity/entityfields/contractstart/onValidation.js
index f09d0ff9ed4d0de74280fb49485a7100abde3f15..4ebb606eceef9c7f65fe763bb1ac5f1c62430f39 100644
--- a/entity/Contract_entity/entityfields/contractstart/onValidation.js
+++ b/entity/Contract_entity/entityfields/contractstart/onValidation.js
@@ -2,9 +2,10 @@ import("system.neon");
 import("system.result");
 import("system.vars");
 import("Date_lib");
+import("Util_lib");
 
 var dateUtils = new DateUtils();
-var cStart = vars.get("$local.value");
+var cStart = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTSTART"));
 var cDue = vars.get("$field.CONTRACTDUE");
 
 if (dateUtils.validateBeginnBeforeEnd(cStart, vars.get("$field.CONTRACTEND")) === false)
diff --git a/entity/Contract_entity/entityfields/contractstart/onValueChange.js b/entity/Contract_entity/entityfields/contractstart/onValueChange.js
index c8715e611c2a54cd2cb3c2aa7acfa8975da87693..2e58cfbebf5c3583bb3f18ffcc1a3d9e80b542e5 100644
--- a/entity/Contract_entity/entityfields/contractstart/onValueChange.js
+++ b/entity/Contract_entity/entityfields/contractstart/onValueChange.js
@@ -1,6 +1,7 @@
 import("system.vars");
+import("Util_lib");
 
-var cStart = vars.get("$local.value");
+var cStart = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.CONTRACTSTART"));
 var cDue = vars.get("$field.CONTRACTDUE");
 
 if (cDue < cStart && cDue != "")
diff --git a/entity/Offer_entity/entityfields/offercode/onValidation.js b/entity/Offer_entity/entityfields/offercode/onValidation.js
index 7dc708a6c7f89ce9c3ee25c515090e14bcdc4242..d74d0c362ec05c34da6d48e6ce3b2d3eb1e408d7 100644
--- a/entity/Offer_entity/entityfields/offercode/onValidation.js
+++ b/entity/Offer_entity/entityfields/offercode/onValidation.js
@@ -2,10 +2,11 @@ import("system.vars");
 import("system.result");
 import("system.neon");
 import("Offer_lib");
+import("Util_lib");
 
 var OfferUtils = new OfferUtils();
 
-if( !OfferUtils.validateOfferNumber(vars.get("$local.value")) )
+if( !OfferUtils.validateOfferNumber(ProcessHandlingUtil.getOnValidationValue(vars.get("$field.OFFERCODE"))) )
 {
     result.string(OfferUtils.getOfferNumberValidationFailString());
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/relation_id/onValueChange.js b/entity/Offer_entity/entityfields/relation_id/onValueChange.js
index 5aa3b55ed5886a44b307aef36a896c0dfddcaa12..b5114f0629a5559a1d22ca88393dd79967bbd4d5 100644
--- a/entity/Offer_entity/entityfields/relation_id/onValueChange.js
+++ b/entity/Offer_entity/entityfields/relation_id/onValueChange.js
@@ -1,7 +1,8 @@
 import("system.vars");
 import("system.db");
+import("Util_lib");
 
-var relid = vars.get("$local.value");
+var relid = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.RELATION_ID"));
 if(relid != "")
 {
     var relData = db.array(db.ROW, "select LANGUAGE from RELATION where RELATIONID = '" + relid + "'");
diff --git a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
index f55f272b2f22aafd2ec9817827fff425a59b44fc..0c8a79b2abb8d956b67f815a638f02ba7fbd9afa 100644
--- a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
+++ b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
@@ -2,8 +2,9 @@ import("system.logging");
 import("system.vars");
 import("system.neon");
 import("Product_lib");
+import("Util_lib");
 
-var pid = vars.get("$local.value");
+var pid = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PRODUCT_ID"));
 if(pid != "")
 {
     var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : "";
diff --git a/entity/Offeritem_entity/entityfields/quantity/onValueChange.js b/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
index 5acf7788daa3af2aeb320809b1c55acdabf05908..ac528c67dd26229929cab15ec0a41face28ff66f 100644
--- a/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
+++ b/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
@@ -2,9 +2,10 @@ import("system.logging");
 import("system.vars");
 import("system.neon");
 import("Product_lib");
+import("Util_lib");
 
 var pid = vars.get("$field.PRODUCT_ID");
-var newQuantity = vars.get("$local.value");
+var newQuantity = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.QUANTITY"));
 if(pid != "" && newQuantity != "")
 {
     var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : "";
diff --git a/entity/Product_entity/entityfields/productcode/onValidation.js b/entity/Product_entity/entityfields/productcode/onValidation.js
index 5de6f5400bbaa5a1f6308a171078d3296d45d7bc..b72108499db871aa2345dd05649f4cf0178edbc5 100644
--- a/entity/Product_entity/entityfields/productcode/onValidation.js
+++ b/entity/Product_entity/entityfields/productcode/onValidation.js
@@ -2,8 +2,9 @@ import("system.translate");
 import("system.result");
 import("system.vars");
 import("system.db");
+import("Util_lib");
 
-var codeCount = db.cell("select count(PRODUCTCODE) from PRODUCT where PRODUCTCODE = '" + vars.get("$local.value") + "'"
+var codeCount = db.cell("select count(PRODUCTCODE) from PRODUCT where PRODUCTCODE = '" + ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PRODUCTCODE")) + "'"
                        + " and PRODUCTID <> '" + vars.get("$field.PRODUCTID") + "'");
 if(codeCount > 0)
 {
diff --git a/entity/Productprice_entity/entityfields/pricelist/onValidation.js b/entity/Productprice_entity/entityfields/pricelist/onValidation.js
index c2e17e931c19efe455871f80cb6e3f085243eb61..4927c81bd892cc93dbb387a3f8a1407982471e41 100644
--- a/entity/Productprice_entity/entityfields/pricelist/onValidation.js
+++ b/entity/Productprice_entity/entityfields/pricelist/onValidation.js
@@ -2,10 +2,11 @@ import("system.translate");
 import("system.result");
 import("system.vars");
 import("Product_lib");
+import("Util_lib");
 
 var pUtils = new ProductUtils();
 var priceList = {
-                priceList: vars.get("$local.value")
+                priceList: ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PRICELIST"))
                 , fromQuantity: vars.get("$field.FROMQUANTITY")
                 , buySell: vars.get("$field.BUYSELL")
                 , currency: vars.get("$field.CURRENCY")
diff --git a/entity/Productprice_entity/entityfields/valid_from/onValidation.js b/entity/Productprice_entity/entityfields/valid_from/onValidation.js
index f5e5361b6b6b1653cb2a8ce5b77ad1169d307c28..74fa861f9bb6db8bcef42cc1ee335bd281fadac6 100644
--- a/entity/Productprice_entity/entityfields/valid_from/onValidation.js
+++ b/entity/Productprice_entity/entityfields/valid_from/onValidation.js
@@ -1,9 +1,10 @@
 import("system.result");
 import("system.vars");
 import("Date_lib");
+import("Util_lib");
 
 var dateUtils = new DateUtils();
-var cStart = vars.get("$local.value");
+var cStart = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.VALID_FROM"));
 
 if (dateUtils.validateBeginnBeforeEnd(cStart, vars.get("$field.VALID_TO")) === false)
     result.string(dateUtils.getValidationFailString());
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/valid_to/onValidation.js b/entity/Productprice_entity/entityfields/valid_to/onValidation.js
index 5558b9a4ab1023868ff63eb1da8e4166518d0d29..de9f15393fcf97ff4efb4edd960f4aea2a268d72 100644
--- a/entity/Productprice_entity/entityfields/valid_to/onValidation.js
+++ b/entity/Productprice_entity/entityfields/valid_to/onValidation.js
@@ -1,9 +1,10 @@
 import("system.result");
 import("system.vars");
 import("Date_lib");
+import("Util_lib");
 
 var dateUtils = new DateUtils();
-var cEnd = vars.get("$local.value");
+var cEnd = ProcessHandlingUtil.getOnValidationValue(vars.get("$field.VALID_TO"));
 
 if (dateUtils.validateBeginnBeforeEnd(vars.get("$field.VALID_FROM"), cEnd) === false)
     result.string(dateUtils.getValidationFailString());
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/projectcode/onValidation.js b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js
index 75b9fcc84cc451463b73ba313b7d9b08c154fc24..1df10f89516a9d8708a24fd6bf38eced03ee9680 100644
--- a/entity/Salesproject_entity/entityfields/projectcode/onValidation.js
+++ b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js
@@ -2,10 +2,11 @@ import("system.vars");
 import("system.result");
 import("system.neon");
 import("Salesproject_lib");
+import("Util_lib");
 
 var SalesprojectUtils = new SalesprojectUtils();
 
-if( !SalesprojectUtils.validateProjectNumber(vars.get("$local.value")) )
+if( !SalesprojectUtils.validateProjectNumber(ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PROJECTCODE"))) )
 {
     result.string(SalesprojectUtils.getProjectNumberValidationFailString());
 }
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js b/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js
index 937237a494b75ed2ccdf11605a94a9d9abcf4418..289a0b56e8fe01d2c3a655e22c70d771716a190f 100644
--- a/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js
+++ b/entity/Salesproject_entity/entityfields/projectcode/onValueChange.js
@@ -1,9 +1,10 @@
 import("system.vars");
 import("system.result");
 import("Salesproject_lib");
+import("Util_lib");
 
 var SalesprojectUtils = new SalesprojectUtils();
-if( !SalesprojectUtils.validateProjectNumber(vars.get("$local.value")) )
+if( !SalesprojectUtils.validateProjectNumber(ProcessHandlingUtil.getOnValidationValue(vars.get("$field.PROJECTCODE"))) )
 {
     vars.set("$field.PROJECTCODE", SalesprojectUtils.getNextProjectNumber());
 }
diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js
index 71cd86700d070cd6345a3f3305c4a3734282ca9e..9a02ca2d3e870c8097d693452698ca47d85ee93a 100644
--- a/process/Util_lib/process.js
+++ b/process/Util_lib/process.js
@@ -1448,4 +1448,27 @@ function CopyModuleUtils()
             }
         }
     }
+}
+
+/**
+ * provides somehow static methods for special handling in JDito-Processes
+ * do not create an instance of this
+ */
+function ProcessHandlingUtil()
+{
+}
+
+/**
+ * In onValidation-Process a local variable called "$local.value" is made available from kernel. 
+ * It contains the entered value - the field contains the value only after successfull validation (vars.get("$field.Fieldname")).
+ * The onValidation-Process is running again before saving the entity, at this point there's "$local.value" varialbe no longer available,
+ * but the entered value now is the present one because the field has already been validated before.
+ * Otherwise a "variable not found" error would occur.
+ * 
+ * @param {String} pFieldValue req value of the field onValidation-Process is executed ( e.g. vars.get("$field.Fieldname") )
+ * @return {String} Field value for onValidation-Process
+ */
+ProcessHandlingUtil.getOnValidationValue = function(pFieldValue)
+{
+    return vars.exists("$local.value") ? vars.get("$local.value") : pFieldValue;
 }
\ No newline at end of file