diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod
index 866f81d40bdb74084bd1dd7933b0ab590bd7e960..2cffc73dc956f7286abc98b0f5058e0e3a760835 100644
--- a/entity/Contact_entity/Contact_entity.aod
+++ b/entity/Contact_entity/Contact_entity.aod
@@ -58,7 +58,6 @@
       <children>
         <entityParameter>
           <name>WithPrivate_param</name>
-          <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/organisations/children/withprivate_param/valueProcess.js</valueProcess>
         </entityParameter>
         <entityParameter>
           <name>ExcludeOrganisationsByPersonId</name>
@@ -128,6 +127,8 @@
       <title>Language</title>
       <consumer>Languages</consumer>
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/language/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Contact_entity/entityfields/language/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
       <name>Languages</name>
@@ -190,6 +191,12 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityParameter>
+      <name>LanguageKey_param</name>
+      <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/languagekey_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Contact_entity/entityfields/language/displayValueProcess.js b/entity/Contact_entity/entityfields/language/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dae44e029af40ecdf3c360a4e80a24d6a5f74540
--- /dev/null
+++ b/entity/Contact_entity/entityfields/language/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+
+var key = vars.get("$field.LANGUAGE");
+if (key)
+{
+    var res = LanguageKeywordUtils.getViewValue(key);
+    result.string(res);
+}
diff --git a/entity/Contact_entity/entityfields/language/valueProcess.js b/entity/Contact_entity/entityfields/language/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f29e2ae5d150b96c68ef1c595fe723ef498e3080
--- /dev/null
+++ b/entity/Contact_entity/entityfields/language/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+var key = vars.get("$param.LanguageKey_param");
+result.string(key);
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/organisations/children/withprivate_param/valueProcess.js b/entity/Contact_entity/entityfields/languagekey_param/valueProcess.js
similarity index 54%
rename from entity/Contact_entity/entityfields/organisations/children/withprivate_param/valueProcess.js
rename to entity/Contact_entity/entityfields/languagekey_param/valueProcess.js
index 40effa0178464da0c7850912345f19c7fa95975a..b36e49dbbe3eefe8d4d3a1f0853ac92c9424b142 100644
--- a/entity/Contact_entity/entityfields/organisations/children/withprivate_param/valueProcess.js
+++ b/entity/Contact_entity/entityfields/languagekey_param/valueProcess.js
@@ -1,3 +1,2 @@
 import("system.result");
-
-result.string(true);
\ No newline at end of file
+result.string("deu");
\ No newline at end of file
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index ae41d2378c17a1b43bd3bb8c0e2318d3482ce0d4..b8b639094ddf118196ebc689d6b123fc1686b2ee 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -208,7 +208,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <children>
         <entityParameter>
           <name>WithPrivate_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/organisations/children/withprivate_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -296,6 +295,7 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <consumer>Languages</consumer>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Person_entity/entityfields/language/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/language/displayValueProcess.js</displayValueProcess>
       <onValueChange>%aditoprj%/entity/Person_entity/entityfields/language/onValueChange.js</onValueChange>
       <onValueChangeTypes>
         <element>MASK</element>
@@ -479,7 +479,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <title>standard address</title>
       <consumer>ContactAndOrganisationAddresses</consumer>
       <searchable v="false" />
-      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/address_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/address_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityActionField>
@@ -726,6 +725,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <name>OwnContactId_param</name>
           <valueProcess>%aditoprj%/entity/Person_entity/entityfields/othercontacts/children/owncontactid_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>LanguageKey_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityField>
diff --git a/entity/Person_entity/entityfields/language/displayValueProcess.js b/entity/Person_entity/entityfields/language/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dae44e029af40ecdf3c360a4e80a24d6a5f74540
--- /dev/null
+++ b/entity/Person_entity/entityfields/language/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+
+var key = vars.get("$field.LANGUAGE");
+if (key)
+{
+    var res = LanguageKeywordUtils.getViewValue(key);
+    result.string(res);
+}
diff --git a/entity/Person_entity/entityfields/language/valueProcess.js b/entity/Person_entity/entityfields/language/valueProcess.js
index 6793351846181a86f6fbd2b1d5afd1a35e3eea79..1af70be4c971c334dbd2b777f26c3f051bd02aa4 100644
--- a/entity/Person_entity/entityfields/language/valueProcess.js
+++ b/entity/Person_entity/entityfields/language/valueProcess.js
@@ -3,5 +3,5 @@ import("system.vars");
 import("system.db");
 import("system.result");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$field.LANGUAGE") == "")
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$field.LANGUAGE") == "")
     result.string("deu");
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/organisations/children/withprivate_param/valueProcess.js b/entity/Person_entity/entityfields/organisations/children/withprivate_param/valueProcess.js
deleted file mode 100644
index 40effa0178464da0c7850912345f19c7fa95975a..0000000000000000000000000000000000000000
--- a/entity/Person_entity/entityfields/organisations/children/withprivate_param/valueProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.string(true);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js b/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e517058dc2daaa603f548ad0e09ec1c9434bb6e5
--- /dev/null
+++ b/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+var res = vars.get("$field.LANGUAGE");
+result.string(res);
\ No newline at end of file
diff --git a/neonView/AddressEdit_view/AddressEdit_view.aod b/neonView/AddressEdit_view/AddressEdit_view.aod
index 10f2872a4938b4ae7855b6bc1c5e74b30775985e..2114d1eb558473953fc4c4d76c45602ad084e906 100644
--- a/neonView/AddressEdit_view/AddressEdit_view.aod
+++ b/neonView/AddressEdit_view/AddressEdit_view.aod
@@ -37,10 +37,6 @@
           <name>fafca9d6-c6dd-4b66-b1ff-1d6ba451827b</name>
           <entityField>CITY</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>e7804363-405d-429d-91c9-23de9685cc9a</name>
-          <entityField>STATE</entityField>
-        </entityFieldLink>
       </fields>
     </genericViewTemplate>
   </children>
diff --git a/neonView/AddressFilter_view/AddressFilter_view.aod b/neonView/AddressFilter_view/AddressFilter_view.aod
index 8dca53e1da805358c4592f9d3e267aa52a3637d4..2f07b18741bc8868c6a57aaf1abe84e317671741 100644
--- a/neonView/AddressFilter_view/AddressFilter_view.aod
+++ b/neonView/AddressFilter_view/AddressFilter_view.aod
@@ -37,10 +37,6 @@
           <name>57247c5c-6498-420b-b288-68ca316cf7f2</name>
           <entityField>CITY</entityField>
         </neonTableColumn>
-        <neonTableColumn>
-          <name>9a965a25-a8aa-4777-865e-138624f2d848</name>
-          <entityField>STATE</entityField>
-        </neonTableColumn>
       </columns>
     </tableViewTemplate>
   </children>
diff --git a/neonView/AddressList_view/AddressList_view.aod b/neonView/AddressList_view/AddressList_view.aod
index 4ea6e925cff6fc725c11238a2c57b5c92adf1dfb..f0228635159a4b8f3af11a586cedcf0ad69bba44 100644
--- a/neonView/AddressList_view/AddressList_view.aod
+++ b/neonView/AddressList_view/AddressList_view.aod
@@ -38,10 +38,6 @@
           <name>12727b21-0359-4430-a9c2-54eb48e2e864</name>
           <entityField>CITY</entityField>
         </neonTableColumn>
-        <neonTableColumn>
-          <name>17039f2e-4253-4242-bcc4-b75483adfbd0</name>
-          <entityField>STATE</entityField>
-        </neonTableColumn>
       </columns>
     </titledListViewTemplate>
   </children>
diff --git a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
index 65f2c96188ae4e3313bcbc82c5268b5fc39b8590..c1be3d32a86e74c67ef7a96f749cb24f7500c52f 100644
--- a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
+++ b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
@@ -36,10 +36,6 @@
           <name>fafca2d6-c2dd-4b66-b1ff-1d6ba451827b</name>
           <entityField>CITY</entityField>
         </neonTableColumn>
-        <neonTableColumn>
-          <name>945bd8e7-9d0d-4e32-8908-24d8dfb74463</name>
-          <entityField>STATE</entityField>
-        </neonTableColumn>
       </columns>
     </genericMultipleViewTemplate>
   </children>
diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js
index 3c150d05ed7e111d2531dc3ef03177a27a88a082..12fee921f9229dea47548f1eda8fcfc93280f81a 100644
--- a/process/Keyword_lib/process.js
+++ b/process/Keyword_lib/process.js
@@ -217,6 +217,29 @@ LanguageKeywordUtils.getResolvedTitleSqlPart = function(pDbFieldName, pLocale)
     return db.translateStatement(resSql);
 };
 
+/**
+ * returns a specific name (translated) - this is normally the view-value of a language
+ * 
+ * @param {String} key id value of the language where the view-value shall be searched
+ *
+ * @return {String} representation of the translated name 
+ * 
+ */
+LanguageKeywordUtils.getViewValue = function(key)
+{
+    if (!key)
+        return "";
+    
+    var sql = SqlCondition.begin()
+    .andPrepare("AB_LANGUAGE.ISO3", key)
+    .buildSql("select AB_LANGUAGE.NAME_LATIN from AB_LANGUAGE");
+    var originalTitle = db.cell(sql);
+    if (originalTitle == "")
+        return "";
+    var translatedTitle = translate.text(originalTitle);
+    return translatedTitle;
+};
+
 
 /**
  * provides methods for interactions with legcy keywords