diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod
index 511c4edff31012fcec97a4d870b8b658e9f0a586..2855ca741464f3ca1240c40187a3bd65d15edc59 100644
--- a/entity/Address_entity/Address_entity.aod
+++ b/entity/Address_entity/Address_entity.aod
@@ -28,6 +28,7 @@
       <documentation>%aditoprj%/entity/Address_entity/entityfields/addr_type/documentation.adoc</documentation>
       <title>Addresstype</title>
       <consumer>KeywordAddressTypes</consumer>
+      <valueProcess>%aditoprj%/entity/Address_entity/entityfields/addr_type/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Address_entity/entityfields/addr_type/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
@@ -49,6 +50,7 @@
       <title>Country</title>
       <consumer>Countries</consumer>
       <mandatory v="true" />
+      <mandatoryProcess>%aditoprj%/entity/Address_entity/entityfields/country/mandatoryProcess.js</mandatoryProcess>
       <valueProcess>%aditoprj%/entity/Address_entity/entityfields/country/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Address_entity/entityfields/country/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -63,6 +65,7 @@
     <entityField>
       <name>CONTACT_ID</name>
       <mandatory v="true" />
+      <mandatoryProcess>%aditoprj%/entity/Address_entity/entityfields/contact_id/mandatoryProcess.js</mandatoryProcess>
       <valueProcess>%aditoprj%/entity/Address_entity/entityfields/contact_id/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -337,12 +340,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityParameter>
-      <name>ReloadWorkaround_param</name>
-      <expose v="true" />
-      <triggerRecalculation v="true" />
-      <description>PARAMETER</description>
-    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Address_entity/entityfields/address/mandatoryProcess.js b/entity/Address_entity/entityfields/address/mandatoryProcess.js
index e1e8e5fe1eb533b039d04e372e0ec05177a1c150..e3fe2aaca0f62a84aa3be6d632f91b916bc4a435 100644
--- a/entity/Address_entity/entityfields/address/mandatoryProcess.js
+++ b/entity/Address_entity/entityfields/address/mandatoryProcess.js
@@ -1,4 +1,15 @@
+import("Entity_lib");
 import("system.result");
 import("AddressEntity_lib");
 
-result.string(AddressEntityValidation.isMandatoryField());
\ No newline at end of file
+result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([
+        "$field.ADDR_TYPE",
+        "$field.ADDRESS",
+        "$field.BUILDINGNO",
+        "$field.ZIP",
+        "$field.CITY",
+        "$field.COUNTRY",
+        "$field.STATE",
+        "$field.REGION",
+        "$field.ADDRIDENTIFIER"
+    ], AddressEntityValidation.isMandatoryField()));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/city/mandatoryProcess.js b/entity/Address_entity/entityfields/city/mandatoryProcess.js
index e1e8e5fe1eb533b039d04e372e0ec05177a1c150..e3fe2aaca0f62a84aa3be6d632f91b916bc4a435 100644
--- a/entity/Address_entity/entityfields/city/mandatoryProcess.js
+++ b/entity/Address_entity/entityfields/city/mandatoryProcess.js
@@ -1,4 +1,15 @@
+import("Entity_lib");
 import("system.result");
 import("AddressEntity_lib");
 
-result.string(AddressEntityValidation.isMandatoryField());
\ No newline at end of file
+result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([
+        "$field.ADDR_TYPE",
+        "$field.ADDRESS",
+        "$field.BUILDINGNO",
+        "$field.ZIP",
+        "$field.CITY",
+        "$field.COUNTRY",
+        "$field.STATE",
+        "$field.REGION",
+        "$field.ADDRIDENTIFIER"
+    ], AddressEntityValidation.isMandatoryField()));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/contact_id/mandatoryProcess.js b/entity/Address_entity/entityfields/contact_id/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9f96f58a0fe94f22a96e5daee2f08d6005f54df2
--- /dev/null
+++ b/entity/Address_entity/entityfields/contact_id/mandatoryProcess.js
@@ -0,0 +1,15 @@
+import("Entity_lib");
+import("system.result");
+import("AddressEntity_lib");
+
+result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([
+        "$field.ADDR_TYPE",
+        "$field.ADDRESS",
+        "$field.BUILDINGNO",
+        "$field.ZIP",
+        "$field.CITY",
+        "$field.COUNTRY",
+        "$field.STATE",
+        "$field.REGION",
+        "$field.ADDRIDENTIFIER"
+    ], true));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/country/mandatoryProcess.js b/entity/Address_entity/entityfields/country/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9f96f58a0fe94f22a96e5daee2f08d6005f54df2
--- /dev/null
+++ b/entity/Address_entity/entityfields/country/mandatoryProcess.js
@@ -0,0 +1,15 @@
+import("Entity_lib");
+import("system.result");
+import("AddressEntity_lib");
+
+result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([
+        "$field.ADDR_TYPE",
+        "$field.ADDRESS",
+        "$field.BUILDINGNO",
+        "$field.ZIP",
+        "$field.CITY",
+        "$field.COUNTRY",
+        "$field.STATE",
+        "$field.REGION",
+        "$field.ADDRIDENTIFIER"
+    ], true));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/state/mandatoryProcess.js b/entity/Address_entity/entityfields/state/mandatoryProcess.js
index e1e8e5fe1eb533b039d04e372e0ec05177a1c150..e3fe2aaca0f62a84aa3be6d632f91b916bc4a435 100644
--- a/entity/Address_entity/entityfields/state/mandatoryProcess.js
+++ b/entity/Address_entity/entityfields/state/mandatoryProcess.js
@@ -1,4 +1,15 @@
+import("Entity_lib");
 import("system.result");
 import("AddressEntity_lib");
 
-result.string(AddressEntityValidation.isMandatoryField());
\ No newline at end of file
+result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([
+        "$field.ADDR_TYPE",
+        "$field.ADDRESS",
+        "$field.BUILDINGNO",
+        "$field.ZIP",
+        "$field.CITY",
+        "$field.COUNTRY",
+        "$field.STATE",
+        "$field.REGION",
+        "$field.ADDRIDENTIFIER"
+    ], AddressEntityValidation.isMandatoryField()));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/zip/mandatoryProcess.js b/entity/Address_entity/entityfields/zip/mandatoryProcess.js
index d12bb3e05db3614c026dab818d1f94676aa73978..e3fe2aaca0f62a84aa3be6d632f91b916bc4a435 100644
--- a/entity/Address_entity/entityfields/zip/mandatoryProcess.js
+++ b/entity/Address_entity/entityfields/zip/mandatoryProcess.js
@@ -1,4 +1,15 @@
+import("Entity_lib");
 import("system.result");
 import("AddressEntity_lib");
 
-result.string(AddressEntityValidation.isMandatoryField());
+result.object(ProcessHandlingUtils.getMandatoryIgnoreAllEmpty([
+        "$field.ADDR_TYPE",
+        "$field.ADDRESS",
+        "$field.BUILDINGNO",
+        "$field.ZIP",
+        "$field.CITY",
+        "$field.COUNTRY",
+        "$field.STATE",
+        "$field.REGION",
+        "$field.ADDRIDENTIFIER"
+    ], AddressEntityValidation.isMandatoryField()));
\ No newline at end of file
diff --git a/process/Entity_lib/process.js b/process/Entity_lib/process.js
index 6db3b2deba0ad67d82b693ba8cd5e421a7f547d0..5c7dfbf7817a9c55e1dd1f65d57da28eeea873c4 100644
--- a/process/Entity_lib/process.js
+++ b/process/Entity_lib/process.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.result");
 import("system.neon");
 import("system.vars");
@@ -47,6 +48,26 @@ ProcessHandlingUtils.initialParamToResult = function(pParamVarName)
     
 }
 
+ProcessHandlingUtils.getMandatoryIgnoreAllEmpty = function(pFields, pIsMandatory)
+{
+    var allEmpty = true;
+    logging.log("-------------")
+    pFields.forEach(function(pField) {
+        logging.log(pField + " " + vars.getString(pField))
+        if (vars.getString(pField))
+        {
+            
+            allEmpty = false;
+        }
+    });
+    logging.log(allEmpty)
+    logging.log(pIsMandatory)
+    logging.log(!allEmpty && pIsMandatory)
+    
+    logging.log("-------------")
+    return !allEmpty && pIsMandatory;
+}
+
 /**
  * Workaround for detecting field changes of fields not managed by record containers. 
  * Should be fixed in the future: Ticket 1030023