From c1f1f0fe94457b2e6bd4f2642270eb9a61020602 Mon Sep 17 00:00:00 2001
From: Johannes Hoermann <j.hoermann@adito.de>
Date: Mon, 18 Mar 2019 11:18:47 +0100
Subject: [PATCH] use distinct entities

---
 .../KeywordEntry_entity.aod                   |   6 -
 entity/Language_entity/Language_entity.aod    |   6 -
 entity/Person_entity/Person_entity.aod        |  22 +-
 .../gender/displayValueProcess.js             |  39 ++-
 .../entityfields/language/onValueChange.js    |  10 +-
 .../entityfields/language/valueProcess.js     |  14 +-
 .../children/withprivat_param/valueProcess.js |   3 +-
 .../entityfields/salutation/onValueChange.js  |   9 +
 .../children/language_param/valueProcess.js   |   1 -
 .../uiddefinition_param/valueProcess.js       |   3 -
 .../uiddefinition_param/valueProcess.js       |   3 -
 .../SalutationDistinct_entity.aod             |  41 ++++
 .../recordcontainers/jdito/contentProcess.js  |   9 +
 .../titleProcess.js                           |   2 +-
 .../SalutationTitleDistinct_entity.aod        |  51 ++++
 .../recordcontainers/jdito/contentProcess.js  |  10 +
 .../titleProcess.js                           |   2 +-
 .../Salutation_entity/Salutation_entity.aod   | 232 ------------------
 .../containername_param/valueProcess.js       |   2 -
 .../entityfields/salutationid/valueProcess.js |   7 -
 .../children/retval/valueProcess.js           |   2 -
 .../entityfields/uid/titleProcess.js          |  10 -
 .../recordcontainers/db/conditionProcess.js   |   8 -
 .../expression.js                             |   5 -
 .../sex.displayvalue/expression.js            |   5 -
 .../contentProcess.js                         |  15 --
 .../title_jdito/contentProcess.js             |  16 --
 entity/Salutation_entity/titleProcess.js      |  11 -
 neonContext/Salutation/Salutation.aod         |  23 --
 .../SalutationDistinct/SalutationDistinct.aod |   6 +
 .../SalutationTitleDistinct.aod               |   6 +
 .../SalutationEdit_view.aod                   |  43 ----
 .../SalutationFilter_view.aod                 |  50 ----
 .../SalutationLookup_view.aod                 |  22 --
 34 files changed, 174 insertions(+), 520 deletions(-)
 create mode 100644 entity/Person_entity/entityfields/salutation/onValueChange.js
 delete mode 100644 entity/Person_entity/entityfields/salutations/children/uiddefinition_param/valueProcess.js
 delete mode 100644 entity/Person_entity/entityfields/salutationtitles/children/uiddefinition_param/valueProcess.js
 create mode 100644 entity/SalutationDistinct_entity/SalutationDistinct_entity.aod
 create mode 100644 entity/SalutationDistinct_entity/recordcontainers/jdito/contentProcess.js
 rename entity/{Salutation_entity/entityfields/titles => SalutationDistinct_entity}/titleProcess.js (55%)
 create mode 100644 entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod
 create mode 100644 entity/SalutationTitleDistinct_entity/recordcontainers/jdito/contentProcess.js
 rename entity/{Salutation_entity/entityfields/salutations => SalutationTitleDistinct_entity}/titleProcess.js (52%)
 delete mode 100644 entity/Salutation_entity/Salutation_entity.aod
 delete mode 100644 entity/Salutation_entity/entityfields/keywordgender/children/containername_param/valueProcess.js
 delete mode 100644 entity/Salutation_entity/entityfields/salutationid/valueProcess.js
 delete mode 100644 entity/Salutation_entity/entityfields/salutations/children/retval/valueProcess.js
 delete mode 100644 entity/Salutation_entity/entityfields/uid/titleProcess.js
 delete mode 100644 entity/Salutation_entity/recordcontainers/db/conditionProcess.js
 delete mode 100644 entity/Salutation_entity/recordcontainers/db/recordfieldmappings/language_salutation.displayvalue/expression.js
 delete mode 100644 entity/Salutation_entity/recordcontainers/db/recordfieldmappings/sex.displayvalue/expression.js
 delete mode 100644 entity/Salutation_entity/recordcontainers/distinctsalutation_jdito/contentProcess.js
 delete mode 100644 entity/Salutation_entity/recordcontainers/title_jdito/contentProcess.js
 delete mode 100644 entity/Salutation_entity/titleProcess.js
 delete mode 100644 neonContext/Salutation/Salutation.aod
 create mode 100644 neonContext/SalutationDistinct/SalutationDistinct.aod
 create mode 100644 neonContext/SalutationTitleDistinct/SalutationTitleDistinct.aod
 delete mode 100644 neonView/SalutationEdit_view/SalutationEdit_view.aod
 delete mode 100644 neonView/SalutationFilter_view/SalutationFilter_view.aod
 delete mode 100644 neonView/SalutationLookup_view/SalutationLookup_view.aod

diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index ded15e9ac61..8b73d4bd764 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -246,12 +246,6 @@
           <fieldName>KeywordProbabilties</fieldName>
           <isConsumer v="false" />
         </entityDependency>
-        <entityDependency>
-          <name>6e9de468-5c32-4a73-bcf9-988a9f9e943c</name>
-          <entityName>Salutation_entity</entityName>
-          <fieldName>KeywordGender</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
         <entityDependency>
           <name>a44375e9-917c-4db8-9aa8-de0625caf78f</name>
           <entityName>Activity_entity</entityName>
diff --git a/entity/Language_entity/Language_entity.aod b/entity/Language_entity/Language_entity.aod
index d47b14686f6..e15560225fa 100644
--- a/entity/Language_entity/Language_entity.aod
+++ b/entity/Language_entity/Language_entity.aod
@@ -62,12 +62,6 @@
           <fieldName>Languages</fieldName>
           <isConsumer v="false" />
         </entityDependency>
-        <entityDependency>
-          <name>6b4c3907-9174-4a88-8f30-97b7702e4393</name>
-          <entityName>Salutation_entity</entityName>
-          <fieldName>Languages</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
       </dependencies>
     </entityProvider>
   </entityFields>
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index 24c8b57a2cb..eeb41d60f7d 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -51,6 +51,12 @@
       <title>Salutation</title>
       <consumer>Salutations</consumer>
       <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/salutation/displayValueProcess.js</displayValueProcess>
+      <onValueChange>%aditoprj%/entity/Person_entity/entityfields/salutation/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>RECORD</element>
+      </onValueChangeTypes>
     </entityField>
     <entityField>
       <name>TITLE</name>
@@ -522,7 +528,7 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <dependency>
         <name>dependency</name>
         <entityName>Language_entity</entityName>
-        <fieldName>LanguagesISO3Code</fieldName>
+        <fieldName>ISO3Name</fieldName>
       </dependency>
     </entityConsumer>
     <entityConsumer>
@@ -546,7 +552,7 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Salutation_entity</entityName>
+        <entityName>SalutationDistinct_entity</entityName>
         <fieldName>Salutations</fieldName>
       </dependency>
       <children>
@@ -555,10 +561,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutations/children/language_param/valueProcess.js</valueProcess>
           <triggerRecalculation v="true" />
         </entityParameter>
-        <entityParameter>
-          <name>uIdDefinition_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutations/children/uiddefinition_param/valueProcess.js</valueProcess>
-        </entityParameter>
       </children>
     </entityConsumer>
     <entityConsumer>
@@ -589,14 +591,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Salutation_entity</entityName>
-        <fieldName>Titles</fieldName>
+        <entityName>SalutationTitleDistinct_entity</entityName>
+        <fieldName>SalutationTitles</fieldName>
       </dependency>
       <children>
-        <entityParameter>
-          <name>uIdDefinition_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutationtitles/children/uiddefinition_param/valueProcess.js</valueProcess>
-        </entityParameter>
         <entityParameter>
           <name>Salutation_param</name>
           <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutationtitles/children/salutation_param/valueProcess.js</valueProcess>
diff --git a/entity/Person_entity/entityfields/gender/displayValueProcess.js b/entity/Person_entity/entityfields/gender/displayValueProcess.js
index c117e59213e..d59364952c1 100644
--- a/entity/Person_entity/entityfields/gender/displayValueProcess.js
+++ b/entity/Person_entity/entityfields/gender/displayValueProcess.js
@@ -1,21 +1,20 @@
-import("system.logging");
-import("system.vars");
-import("Keyword_lib");
-import("system.result");
-import("system.db");
-import("system.vars");
-import("system.neon");
-import("Sql_lib");
-
-
-var cond = SqlCondition.begin()
-
-var sex = db.cell(cond.andPrepareVars("SALUTATION.SALUTATION", "$field.SALUTATION").buildSql("select SEX from SALUTATION", "1=2"))
-
-    
-if (sex)
-{
-    var keyword = KeywordUtils.getViewValue("PersonGender", sex);
-
-    result.string(keyword)
+import("system.vars");
+import("Keyword_lib");
+import("system.result");
+import("system.db");
+import("system.vars");
+import("system.neon");
+import("Sql_lib");
+
+
+var cond = SqlCondition.begin()
+
+var sex = db.cell(cond.andPrepareVars("SALUTATION.SALUTATION", "$field.SALUTATION").buildSql("select SEX from SALUTATION", "1=2"))
+
+    
+if (sex)
+{
+    var keyword = KeywordUtils.getViewValue("PersonGender", sex);
+
+    result.string(keyword)
 }
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/language/onValueChange.js b/entity/Person_entity/entityfields/language/onValueChange.js
index 6d6c773b43e..531e01b7ec4 100644
--- a/entity/Person_entity/entityfields/language/onValueChange.js
+++ b/entity/Person_entity/entityfields/language/onValueChange.js
@@ -2,12 +2,10 @@ import("system.db");
 import("system.vars");
 import("system.neon");
 
-var language = vars.get("$field.LANGUAGE");
-var salutation = vars.get("$field.SALUTATION")
-var salLanguage = db.cell("select LANGUAGE from SALUTATION where SALUTATION = '" + salutation  + "'")
-
-if((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) 
-        && salLanguage != language)
+if((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
 {
     neon.setFieldValue("$field.SALUTATION", "");
+    neon.setFieldValue("$field.TITLE", "");
+    
+    neon.refresh(["$field.SALUTATION", "$field.TITLE"]);
 }
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/language/valueProcess.js b/entity/Person_entity/entityfields/language/valueProcess.js
index 4a47bbccc13..67933518461 100644
--- a/entity/Person_entity/entityfields/language/valueProcess.js
+++ b/entity/Person_entity/entityfields/language/valueProcess.js
@@ -1,9 +1,7 @@
-import("system.logging");
-import("system.neon");
-import("system.vars");
-import("system.db");
-import("system.result");
-
-
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$field.LANGUAGE") == "")
+import("system.neon");
+import("system.vars");
+import("system.db");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$field.LANGUAGE") == "")
     result.string("deu");
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/organisations/children/withprivat_param/valueProcess.js b/entity/Person_entity/entityfields/organisations/children/withprivat_param/valueProcess.js
index 7fbe0afc48d..975bf6435dc 100644
--- a/entity/Person_entity/entityfields/organisations/children/withprivat_param/valueProcess.js
+++ b/entity/Person_entity/entityfields/organisations/children/withprivat_param/valueProcess.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.result");
-logging.log("set")
+
 result.string("1");
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/salutation/onValueChange.js b/entity/Person_entity/entityfields/salutation/onValueChange.js
new file mode 100644
index 00000000000..161d7c37cf5
--- /dev/null
+++ b/entity/Person_entity/entityfields/salutation/onValueChange.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("system.neon");
+
+if((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
+{
+    neon.setFieldValue("$field.TITLE", "");
+    
+    neon.refresh(["$field.TITLE"]);
+}
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/salutations/children/language_param/valueProcess.js b/entity/Person_entity/entityfields/salutations/children/language_param/valueProcess.js
index 6c3df16a4ff..2cb0f4295d8 100644
--- a/entity/Person_entity/entityfields/salutations/children/language_param/valueProcess.js
+++ b/entity/Person_entity/entityfields/salutations/children/language_param/valueProcess.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.vars");
 import("system.result");
 
diff --git a/entity/Person_entity/entityfields/salutations/children/uiddefinition_param/valueProcess.js b/entity/Person_entity/entityfields/salutations/children/uiddefinition_param/valueProcess.js
deleted file mode 100644
index c4d0a4e0b67..00000000000
--- a/entity/Person_entity/entityfields/salutations/children/uiddefinition_param/valueProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.string("SALUTATION");
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/salutationtitles/children/uiddefinition_param/valueProcess.js b/entity/Person_entity/entityfields/salutationtitles/children/uiddefinition_param/valueProcess.js
deleted file mode 100644
index b02537f776e..00000000000
--- a/entity/Person_entity/entityfields/salutationtitles/children/uiddefinition_param/valueProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.string("TITLE");
\ No newline at end of file
diff --git a/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod
new file mode 100644
index 00000000000..6da4bca86fc
--- /dev/null
+++ b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.2.1">
+  <name>SalutationDistinct_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <titleProcess>%aditoprj%/entity/SalutationDistinct_entity/titleProcess.js</titleProcess>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityProvider>
+      <name>Salutations</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <children>
+        <entityParameter>
+          <name>Language_param</name>
+          <expose v="true" />
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>Language_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/SalutationDistinct_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <recordFields>
+        <element>UID.value</element>
+      </recordFields>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/SalutationDistinct_entity/recordcontainers/jdito/contentProcess.js b/entity/SalutationDistinct_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 00000000000..4e281d75224
--- /dev/null
+++ b/entity/SalutationDistinct_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("system.result");
+import("system.db");
+import("Sql_lib");
+
+result.object(db.table(SqlCondition.begin()
+                        .and("SALUTATION is not NULL")
+                        .andPrepareVars("SALUTATION.LANGUAGE", "$param.Language_param")
+                        .buildSql("select distinct SALUTATION from SALUTATION", "1=2")));
\ No newline at end of file
diff --git a/entity/Salutation_entity/entityfields/titles/titleProcess.js b/entity/SalutationDistinct_entity/titleProcess.js
similarity index 55%
rename from entity/Salutation_entity/entityfields/titles/titleProcess.js
rename to entity/SalutationDistinct_entity/titleProcess.js
index 94f61859cc6..16c85500b53 100644
--- a/entity/Salutation_entity/entityfields/titles/titleProcess.js
+++ b/entity/SalutationDistinct_entity/titleProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.TITLE"));
\ No newline at end of file
+result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod
new file mode 100644
index 00000000000..fcc818d703b
--- /dev/null
+++ b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.2.1">
+  <name>SalutationTitleDistinct_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <titleProcess>%aditoprj%/entity/SalutationTitleDistinct_entity/titleProcess.js</titleProcess>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityParameter>
+      <name>Salutation_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>SalutationTitles</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <children>
+        <entityParameter>
+          <name>Language_param</name>
+          <expose v="true" />
+          <triggerRecalculation v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>Salutation_param</name>
+          <expose v="true" />
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>Language_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/SalutationTitleDistinct_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <recordFields>
+        <element>UID.value</element>
+      </recordFields>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/SalutationTitleDistinct_entity/recordcontainers/jdito/contentProcess.js b/entity/SalutationTitleDistinct_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 00000000000..f584ebd50ba
--- /dev/null
+++ b/entity/SalutationTitleDistinct_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.result");
+import("system.db");
+import("Sql_lib");
+
+result.object(db.table(SqlCondition.begin()
+                    .and("TITLE is not NULL")
+                    .andPrepareVars("SALUTATION.SALUTATION", "$param.Salutation_param")
+                    .andPrepareVars("SALUTATION.LANGUAGE", "$param.Language_param")
+                    .buildSql("select distinct TITLE from SALUTATION", "1=2")));
\ No newline at end of file
diff --git a/entity/Salutation_entity/entityfields/salutations/titleProcess.js b/entity/SalutationTitleDistinct_entity/titleProcess.js
similarity index 52%
rename from entity/Salutation_entity/entityfields/salutations/titleProcess.js
rename to entity/SalutationTitleDistinct_entity/titleProcess.js
index f098580b1e7..16c85500b53 100644
--- a/entity/Salutation_entity/entityfields/salutations/titleProcess.js
+++ b/entity/SalutationTitleDistinct_entity/titleProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.SALUTATION"));
\ No newline at end of file
+result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/Salutation_entity/Salutation_entity.aod b/entity/Salutation_entity/Salutation_entity.aod
deleted file mode 100644
index 863d1038fe0..00000000000
--- a/entity/Salutation_entity/Salutation_entity.aod
+++ /dev/null
@@ -1,232 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.2.1">
-  <name>Salutation_entity</name>
-  <title>Anrede</title>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <titleProcess>%aditoprj%/entity/Salutation_entity/titleProcess.js</titleProcess>
-  <recordContainer>db</recordContainer>
-  <entityFields>
-    <entityProvider>
-      <name>#PROVIDER</name>
-    </entityProvider>
-    <entityField>
-      <name>SALUTATIONID</name>
-      <valueProcess>%aditoprj%/entity/Salutation_entity/entityfields/salutationid/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>HEADLINE</name>
-      <title>Anrede im Briefkopf</title>
-    </entityField>
-    <entityField>
-      <name>LANGUAGE_SALUTATION</name>
-      <title>Sprache</title>
-      <consumer>Languages</consumer>
-    </entityField>
-    <entityField>
-      <name>LETTERSALUTATION</name>
-      <title>Briefanrede</title>
-    </entityField>
-    <entityField>
-      <name>SALUTATION</name>
-      <title>Anrede</title>
-    </entityField>
-    <entityField>
-      <name>SEX</name>
-      <title>Geschlecht</title>
-      <consumer>KeywordGender</consumer>
-    </entityField>
-    <entityField>
-      <name>SORT</name>
-      <title>Sortierung</title>
-    </entityField>
-    <entityField>
-      <name>TITLE</name>
-      <title>(Akademischer) Titel</title>
-    </entityField>
-    <entityConsumer>
-      <name>Languages</name>
-      <fieldType>DEPENDENCY_OUT</fieldType>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Language_entity</entityName>
-        <fieldName>LanguagesISO3Code</fieldName>
-      </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>KeywordGender</name>
-      <fieldType>DEPENDENCY_OUT</fieldType>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>containerName_param</name>
-          <valueProcess>%aditoprj%/entity/Salutation_entity/entityfields/keywordgender/children/containername_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityProvider>
-      <name>Salutations</name>
-      <fieldType>DEPENDENCY_IN</fieldType>
-      <lookupIdfield>UID</lookupIdfield>
-      <titleProcess>%aditoprj%/entity/Salutation_entity/entityfields/salutations/titleProcess.js</titleProcess>
-      <recordContainer>distinctSalutation_jdito</recordContainer>
-      <dependencies>
-        <entityDependency>
-          <name>e3e73780-d3b2-4e31-8e09-6a778c5d63a2</name>
-          <entityName>Person_entity</entityName>
-          <fieldName>Salutations</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
-      <children>
-        <entityParameter>
-          <name>Language_param</name>
-          <expose v="true" />
-          <triggerRecalculation v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>retval</name>
-          <valueProcess>%aditoprj%/entity/Salutation_entity/entityfields/salutations/children/retval/valueProcess.js</valueProcess>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityProvider>
-    <entityProvider>
-      <name>Titles</name>
-      <fieldType>DEPENDENCY_IN</fieldType>
-      <lookupIdfield>UID</lookupIdfield>
-      <titleProcess>%aditoprj%/entity/Salutation_entity/entityfields/titles/titleProcess.js</titleProcess>
-      <recordContainer>title_jdito</recordContainer>
-      <dependencies>
-        <entityDependency>
-          <name>b6dff8b9-1eda-4cb1-97a0-2852756295b7</name>
-          <entityName>Person_entity</entityName>
-          <fieldName>SalutationTitles</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
-      <children>
-        <entityParameter>
-          <name>retval</name>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityProvider>
-    <entityParameter>
-      <name>Language_param</name>
-      <expose v="true" />
-      <triggerRecalculation v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityField>
-      <name>UID</name>
-      <titleProcess>%aditoprj%/entity/Salutation_entity/entityfields/uid/titleProcess.js</titleProcess>
-    </entityField>
-    <entityParameter>
-      <name>uIdDefinition_param</name>
-      <expose v="true" />
-      <triggerRecalculation v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityParameter>
-      <name>Salutation_param</name>
-      <expose v="true" />
-      <triggerRecalculation v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityField>
-      <name>DISTINCT_RETVAL</name>
-    </entityField>
-    <entityParameter>
-      <name>retval</name>
-      <expose v="true" />
-      <description>PARAMETER</description>
-    </entityParameter>
-  </entityFields>
-  <recordContainers>
-    <dbRecordContainer>
-      <name>db</name>
-      <alias>Data_alias</alias>
-      <conditionProcess>%aditoprj%/entity/Salutation_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>6543f63c-3486-4e8b-bfc8-51b5088ce0b6</name>
-          <tableName>SALUTATION</tableName>
-          <primaryKey>SALUTATIONID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
-      <recordFieldMappings>
-        <dbRecordFieldMapping>
-          <name>HEADLINE.value</name>
-          <recordfield>SALUTATION.HEADLINE</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>LANGUAGE_SALUTATION.value</name>
-          <recordfield>SALUTATION.LANGUAGE</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>LETTERSALUTATION.value</name>
-          <recordfield>SALUTATION.LETTERSALUTATION</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>SALUTATION.value</name>
-          <recordfield>SALUTATION.SALUTATION</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>SALUTATIONID.value</name>
-          <recordfield>SALUTATION.SALUTATIONID</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>SEX.value</name>
-          <recordfield>SALUTATION.SEX</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>SORT.value</name>
-          <recordfield>SALUTATION.SORT</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>TITLE.value</name>
-          <recordfield>SALUTATION.TITLE</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>LANGUAGE_SALUTATION.displayValue</name>
-          <expression>%aditoprj%/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/language_salutation.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>SEX.displayValue</name>
-          <expression>%aditoprj%/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/sex.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
-      </recordFieldMappings>
-    </dbRecordContainer>
-    <jDitoRecordContainer>
-      <name>distinctSalutation_jdito</name>
-      <title>Test</title>
-      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
-      <contentProcess>%aditoprj%/entity/Salutation_entity/recordcontainers/distinctsalutation_jdito/contentProcess.js</contentProcess>
-      <recordFields>
-        <element>UID.value</element>
-      </recordFields>
-    </jDitoRecordContainer>
-    <jDitoRecordContainer>
-      <name>title_jdito</name>
-      <title>55</title>
-      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
-      <contentProcess>%aditoprj%/entity/Salutation_entity/recordcontainers/title_jdito/contentProcess.js</contentProcess>
-      <isPageable v="false" />
-      <recordFields>
-        <element>UID.value</element>
-      </recordFields>
-    </jDitoRecordContainer>
-    <jDitoRecordContainer>
-      <name>distinctAny</name>
-    </jDitoRecordContainer>
-  </recordContainers>
-</entity>
diff --git a/entity/Salutation_entity/entityfields/keywordgender/children/containername_param/valueProcess.js b/entity/Salutation_entity/entityfields/keywordgender/children/containername_param/valueProcess.js
deleted file mode 100644
index 6e04863ec76..00000000000
--- a/entity/Salutation_entity/entityfields/keywordgender/children/containername_param/valueProcess.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import("system.result");
-result.string("PersonGender")
\ No newline at end of file
diff --git a/entity/Salutation_entity/entityfields/salutationid/valueProcess.js b/entity/Salutation_entity/entityfields/salutationid/valueProcess.js
deleted file mode 100644
index a2378ee42b3..00000000000
--- a/entity/Salutation_entity/entityfields/salutationid/valueProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.util");
-import("system.vars");
-import("system.result");
-import("system.neon");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(util.getNewUUID());
\ No newline at end of file
diff --git a/entity/Salutation_entity/entityfields/salutations/children/retval/valueProcess.js b/entity/Salutation_entity/entityfields/salutations/children/retval/valueProcess.js
deleted file mode 100644
index c03d064f10c..00000000000
--- a/entity/Salutation_entity/entityfields/salutations/children/retval/valueProcess.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import("system.result");
-result.string("salutation")
\ No newline at end of file
diff --git a/entity/Salutation_entity/entityfields/uid/titleProcess.js b/entity/Salutation_entity/entityfields/uid/titleProcess.js
deleted file mode 100644
index 764d0886fa0..00000000000
--- a/entity/Salutation_entity/entityfields/uid/titleProcess.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("system.vars");
-import("system.result");
-
-var uIdDefinition = vars.get("$param.uIdDefinition_param")
-
-if (uIdDefinition == "SALUTATION")
-    result.string("Anrede")
-
-if (uIdDefinition == "TITLE")
-    result.string("Titel")
\ No newline at end of file
diff --git a/entity/Salutation_entity/recordcontainers/db/conditionProcess.js b/entity/Salutation_entity/recordcontainers/db/conditionProcess.js
deleted file mode 100644
index b0005fe530d..00000000000
--- a/entity/Salutation_entity/recordcontainers/db/conditionProcess.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import("system.db");
-import("system.result");
-import("Sql_lib");
-
-var cond = SqlCondition.begin().andPrepareVars("SALUTATION.LANGUAGE", "$param.Language_param");
-
-//TODO: use a preparedCondition when available #1030812 #1034026
-result.string(db.translateCondition(cond.build("1 = 1")));
\ No newline at end of file
diff --git a/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/language_salutation.displayvalue/expression.js b/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/language_salutation.displayvalue/expression.js
deleted file mode 100644
index 4f510117adc..00000000000
--- a/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/language_salutation.displayvalue/expression.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-
-var sql = LanguageKeywordUtils.getResolvedTitleSqlPart("SALUTATION.LANGUAGE");
-result.string(sql);
\ No newline at end of file
diff --git a/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/sex.displayvalue/expression.js b/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/sex.displayvalue/expression.js
deleted file mode 100644
index 3a982fc3e43..00000000000
--- a/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/sex.displayvalue/expression.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-
-var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.get.PersonGender, "SALUTATION.SEX");
-result.string(sql);
diff --git a/entity/Salutation_entity/recordcontainers/distinctsalutation_jdito/contentProcess.js b/entity/Salutation_entity/recordcontainers/distinctsalutation_jdito/contentProcess.js
deleted file mode 100644
index bdebb34ec8c..00000000000
--- a/entity/Salutation_entity/recordcontainers/distinctsalutation_jdito/contentProcess.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import("system.logging");
-import("system.vars");
-import("system.result");
-import("system.db");
-import("Sql_lib");
-
-logging.log("salutation")
-var cond = SqlCondition.begin()
-    .and("SALUTATION is not NULL")
-    .andPrepareVars("SALUTATION.LANGUAGE", "$param.Language_param")
-    .buildSql("select distinct SALUTATION from SALUTATION", "1=2");
-    
-var salutations = db.table(cond);
-
-result.object(salutations);
\ No newline at end of file
diff --git a/entity/Salutation_entity/recordcontainers/title_jdito/contentProcess.js b/entity/Salutation_entity/recordcontainers/title_jdito/contentProcess.js
deleted file mode 100644
index c875f3fbbb0..00000000000
--- a/entity/Salutation_entity/recordcontainers/title_jdito/contentProcess.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import("system.logging");
-import("system.vars");
-import("system.result");
-import("system.db");
-import("Sql_lib");
-
-logging.log("title")
-
-var cond = SqlCondition.begin()
-    .and("TITLE is not NULL")
-    .andPrepareVars("SALUTATION.SALUTATION", "$param.Salutation_param")
-    .buildSql("select TITLE from SALUTATION", "1=2");
-    
-var titles = db.table(cond);
-
-result.object(titles);
\ No newline at end of file
diff --git a/entity/Salutation_entity/titleProcess.js b/entity/Salutation_entity/titleProcess.js
deleted file mode 100644
index bd122fedadf..00000000000
--- a/entity/Salutation_entity/titleProcess.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import("system.result");
-import("system.vars");
-
-if (vars.get("$param.uIdDefinition_param") && vars.exists("$param.uIdDefinition_param"))
-{
-    result.string(vars.get("$field.UID"))
-}
-else 
-{
-    result.string("Anrede")
-}
\ No newline at end of file
diff --git a/neonContext/Salutation/Salutation.aod b/neonContext/Salutation/Salutation.aod
deleted file mode 100644
index 65f07fc6094..00000000000
--- a/neonContext/Salutation/Salutation.aod
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.0.0">
-  <name>Salutation</name>
-  <title>Anrede</title>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterview>SalutationFilter_view</filterview>
-  <editview>SalutationEdit_view</editview>
-  <entity>Salutation_entity</entity>
-  <references>
-    <neonViewReference>
-      <name>e1ddbe88-af31-4860-9b9e-447282060ec2</name>
-      <view>SalutationFilter_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>2663038a-4f51-4152-bbb2-2c8aa552deee</name>
-      <view>SalutationEdit_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>3bb3eb80-414e-4d1b-aec1-94b0fddb4a29</name>
-      <view>SalutationLookup_view</view>
-    </neonViewReference>
-  </references>
-</neonContext>
diff --git a/neonContext/SalutationDistinct/SalutationDistinct.aod b/neonContext/SalutationDistinct/SalutationDistinct.aod
new file mode 100644
index 00000000000..6a1ec09f9ef
--- /dev/null
+++ b/neonContext/SalutationDistinct/SalutationDistinct.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.0.0">
+  <name>SalutationDistinct</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>SalutationDistinct_entity</entity>
+</neonContext>
diff --git a/neonContext/SalutationTitleDistinct/SalutationTitleDistinct.aod b/neonContext/SalutationTitleDistinct/SalutationTitleDistinct.aod
new file mode 100644
index 00000000000..98baca4dbfa
--- /dev/null
+++ b/neonContext/SalutationTitleDistinct/SalutationTitleDistinct.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.0.0">
+  <name>SalutationTitleDistinct</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>SalutationTitleDistinct_entity</entity>
+</neonContext>
diff --git a/neonView/SalutationEdit_view/SalutationEdit_view.aod b/neonView/SalutationEdit_view/SalutationEdit_view.aod
deleted file mode 100644
index a9dbd96b546..00000000000
--- a/neonView/SalutationEdit_view/SalutationEdit_view.aod
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1">
-  <name>SalutationEdit_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-    </boxLayout>
-  </layout>
-  <children>
-    <genericViewTemplate>
-      <name>Generic</name>
-      <editMode v="true" />
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>3414fd26-d0bf-42e0-b7c7-7ca505e2c70d</name>
-          <entityField>LANGUAGE_SALUTATION</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>b56a3b42-346e-48f2-88f0-0e3c5f4b76fe</name>
-          <entityField>SALUTATION</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>39b0ef67-57f9-40ac-b759-e32c70f16ce0</name>
-          <entityField>TITLE</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>7a6e5f1b-12c8-4d50-ad2f-bfd35fc94d5f</name>
-          <entityField>HEADLINE</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>83feed8a-aca8-4c2a-bac3-fa3d5f9d21b0</name>
-          <entityField>LETTERSALUTATION</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>3179d4c2-98dd-4edf-8bfb-462935bd8d50</name>
-          <entityField>SEX</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
-  </children>
-</neonView>
diff --git a/neonView/SalutationFilter_view/SalutationFilter_view.aod b/neonView/SalutationFilter_view/SalutationFilter_view.aod
deleted file mode 100644
index 5ac48c5730a..00000000000
--- a/neonView/SalutationFilter_view/SalutationFilter_view.aod
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1">
-  <name>SalutationFilter_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterable v="true" />
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-    </boxLayout>
-  </layout>
-  <children>
-    <tableViewTemplate>
-      <name>Table</name>
-      <entityField>#ENTITY</entityField>
-      <columns>
-        <neonTableColumn>
-          <name>b4108c6a-173d-4692-b9dc-a0c02de7d373</name>
-          <entityField>LANGUAGE_SALUTATION</entityField>
-          <width v="75" />
-          <expandRatio v="100" />
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>cd9277bb-e254-41d2-bbfa-5d328e348405</name>
-          <entityField>SALUTATION</entityField>
-          <width v="75" />
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>229e8fa9-e4c3-4cab-b692-6695c4bff4aa</name>
-          <entityField>TITLE</entityField>
-          <width v="75" />
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>dd21b360-22e4-448b-906d-059bc6c4033f</name>
-          <entityField>HEADLINE</entityField>
-          <width v="75" />
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>5aa35e22-4ca3-4a65-a9de-44bd209248e8</name>
-          <entityField>LETTERSALUTATION</entityField>
-          <width v="75" />
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>68809674-e641-4965-8977-20f6b3e1002a</name>
-          <entityField>SEX</entityField>
-          <width v="75" />
-        </neonTableColumn>
-      </columns>
-    </tableViewTemplate>
-  </children>
-</neonView>
diff --git a/neonView/SalutationLookup_view/SalutationLookup_view.aod b/neonView/SalutationLookup_view/SalutationLookup_view.aod
deleted file mode 100644
index 079f7308618..00000000000
--- a/neonView/SalutationLookup_view/SalutationLookup_view.aod
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1">
-  <name>SalutationLookup_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-    </boxLayout>
-  </layout>
-  <children>
-    <tableViewTemplate>
-      <name>Table</name>
-      <entityField>#ENTITY</entityField>
-      <columns>
-        <neonTableColumn>
-          <name>fbf20ad5-75b0-4c5c-8fbf-a2c0369f2adc</name>
-          <entityField>UID</entityField>
-        </neonTableColumn>
-      </columns>
-    </tableViewTemplate>
-  </children>
-</neonView>
-- 
GitLab