diff --git a/.aditoprj/blueprints/CreateObservationActionBlueprint.xml b/.aditoprj/blueprints/CreateObservationActionBlueprint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..21f989f10c424baeccf3e1aa48e95b9d32652082
--- /dev/null
+++ b/.aditoprj/blueprints/CreateObservationActionBlueprint.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<blueprint name="Create ObserveActions">
+    <type>entityActionField</type>
+    <parameters>
+    </parameters>
+    <data>
+        <document name="context"><![CDATA[
+            <entity VERSION="1.3.17">
+               <entityFields>
+					<entityActionGroup>
+						<name>observeActionGroup</name>
+						<children>
+							<entityActionField>
+								<name>observe</name>
+								<title>Observe</title>
+								<onActionProcess>import("Observation_lib");
+
+Observation.insertAction();</onActionProcess>
+								<isObjectAction v="true" />
+								<iconId>VAADIN:EYE</iconId>
+								<stateProcess>import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
+else
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}</stateProcess>
+								<titleProcess>import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
+</titleProcess>
+							</entityActionField>
+							<entityActionField>
+								<name>cancelObservation</name>
+								<onActionProcess>import("Observation_lib");
+
+Observation.cancelAction();</onActionProcess>
+								<iconId>VAADIN:EYE_SLASH</iconId>
+								<stateProcess>import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
+else
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}</stateProcess>
+								<titleProcess>import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
+</titleProcess>
+							</entityActionField>
+						</children>
+					</entityActionGroup>
+               </entityFields>
+             </entity>
+    ]]></document>
+    </data>
+</blueprint>
diff --git a/.aditoprj/ignoredScanServiceTasks.json b/.aditoprj/ignoredScanServiceTasks.json
index 876fa8e77553251308a11423050ca464a547eba2..bad77c8c7df0345b93811fa627e1ca06bf884517 100644
--- a/.aditoprj/ignoredScanServiceTasks.json
+++ b/.aditoprj/ignoredScanServiceTasks.json
@@ -1,11 +1,5 @@
 {
   "entries": [
-    {
-      "target": "aliasDefinition/Data_alias/Data_alias.aod",
-      "line": -1,
-      "description": "The table \"AB_LOGHISTORY\" has no primary key [65]",
-      "groupName": "nb-tasklist-warning"
-    },
     {
       "target": "aliasDefinition/Data_alias/Data_alias.aod",
       "line": -1,
@@ -41,6 +35,36 @@
       "line": -1,
       "description": "There is no index for the column \"DEPLOYMENT_ID\" in the table \"DATABASECHANGELOG\" [59]",
       "groupName": "nb-tasklist-warning"
+    },
+    {
+      "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod",
+      "line": -1,
+      "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhaseFunnelChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]",
+      "groupName": "nb-tasklist-warning"
+    },
+    {
+      "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod",
+      "line": -1,
+      "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhasePieChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]",
+      "groupName": "nb-tasklist-warning"
+    },
+    {
+      "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod",
+      "line": -1,
+      "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhasePyramidChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]",
+      "groupName": "nb-tasklist-warning"
+    },
+    {
+      "target": "neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod",
+      "line": -1,
+      "description": "Dead Reference \"#EXTENSION.Month.Month#NUMBER\" located in: TreeTable/defaultGroupFields/#EXTENSION.Month.Month#NUMBER [67]",
+      "groupName": "nb-tasklist-warning"
+    },
+    {
+      "target": "neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod",
+      "line": -1,
+      "description": "Dead Reference \"#EXTENSION.Month.Month#NUMBER\" located in: dynamicChart/defaultGroupFields/#EXTENSION.Month.Month#NUMBER [67]",
+      "groupName": "nb-tasklist-warning"
     }
   ]
 }
\ No newline at end of file
diff --git a/.aditoprj/project.version b/.aditoprj/project.version
index b4940e7b136a1e7dc45d5afe6100e622a0deb61d..94b3c6aab89bbcc9e3c5433f62e4fa30fa7bee5b 100644
--- a/.aditoprj/project.version
+++ b/.aditoprj/project.version
@@ -1,3 +1,3 @@
 #This file is generated by ADITO designer. Do NOT delete or modify!
-#Tue Sep 08 15:42:02 CEST 2020
-version=6.2.0
+#Thu Dec 17 10:59:19 CET 2020
+version=6.2.1
diff --git a/.gitignore b/.gitignore
index bd9db83469ecf1751dacf06f8a70f5caffc39ff0..de3ab422c43067d6538bd1da7eaa9663d5dc2709 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,5 @@
 /others/db_changes/liqui_update.bat
 /others/db_changes/liqui_reset.ps1
 /others/jsdocOut
-/userhelp
\ No newline at end of file
+/userhelp
+/system/dev_local
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml b/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml
index 62c9c29573a17ca606e5c08d2f5ed680729208ae..c1d76b19cd28910c8be6ee4cb90f1a5a8b1e5541 100644
--- a/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml
+++ b/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml
@@ -10,10 +10,10 @@
             <column name="ACTIVITY_ID"/>
         </createIndex>
     </changeSet>
-    <changeSet id="e7527e13-7546-4fa6-ac95-5cc3e1f27056" author="s.listl" dbms="!oracle">
+    <changeSet id="e7527e13-7546-4fa6-ac95-5cc3e1f27056" author="s.listl">
         <preConditions onFail="MARK_RAN">
             <not>
-                <changeSetExecuted id="5a0b62f4-6770-454c-9a0e-d60ca16596dd" author="j.goderbauer"/>
+                <changeSetExecuted id="5a0b62f4-6770-454c-9a0e-d60ca16596dd" author="j.goderbauer" changeLogFile=".liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml"/>
             </not>
         </preConditions>
         <createIndex indexName="IDX_TICKET_TASK_ID" tableName="TICKET">
diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml
index 7a44ef7aefaa703bd41e87f02a1917f13be44247..1987399adb221168427363164d365eb6e183c5c2 100644
--- a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml
+++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml
@@ -6,8 +6,11 @@
             <column name="KNOWLEDGEROLESID" type="CHAR(36)">
                 <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEROLES_KNOWLEDGEROLESID"/>
             </column>
-            <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"></column>
+            <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"/>
             <column name="ROLENAME" type="VARCHAR(100)"/>
         </createTable>
+        <createIndex tableName="KNOWLEDGEROLES" indexName="IDX_KNOWLEDGEROLES_KM_ID">
+            <column name="KNOWLEDGEMANAGEMENT_ID"/>
+        </createIndex>
     </changeSet>
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml
index c4b9698f688657379091897d1d13c0096637a622..0f3de5603a81da59cc30743b70c1b38bd1ccfbb0 100644
--- a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml
+++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml
@@ -16,5 +16,8 @@
             <column name="DISCUSSIONTEXT" type="LONGTEXT"/>
             <column name="PARENTENTRY" type="CHAR(36)"/>
         </createTable>
+        <createIndex tableName="KNOWLEDGEDISCUSSION" indexName="IDX_KNOWLEDGEDISCUSSION_KM_ID">
+            <column name="KNOWLEDGEMANAGEMENT_ID"/>
+        </createIndex>
     </changeSet>
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml
index cdf69919e236ff8b784ebf2d439cdbaff2567ac8..f600fb7e878088e0b6fa325a68c5e8dab3a292f9 100644
--- a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml
+++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml
@@ -1,7 +1,7 @@
 <?xml version="1.1" encoding="UTF-8" standalone="no"?>
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-    <changeSet author="e.pollinger" id="1261195c-ffc1-4abb-a31f-0732823ee0cb">
+    <changeSet author="e.pollinger" id="bee4e42e-9103-4464-849e-59d8b11c542e">
         <createTable tableName="KNOWLEDGELINK">
             <column name="KNOWLEDGELINKID" type="CHAR(36)">
                 <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGELINK_KNOWLEDGELINKID"/>
@@ -14,5 +14,8 @@
             <column name="ROW_ID" type="CHAR(36)"/>
             <column name="OBJECT_TYPE" type="NVARCHAR(100)"/>
         </createTable>
+        <createIndex tableName="KNOWLEDGELINK" indexName="IDX_KNOWLEDGELINK_KM_ID">
+            <column name="KNOWLEDGEMANAGEMENT_ID"/>
+        </createIndex>
     </changeSet>
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml
index a6b9b631d5d6155a40dd9448d88b6e454812cfed..ba1e74c9fcbbf6a4abe6098fcf2757b76fb5c67b 100644
--- a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml
+++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml
@@ -13,5 +13,11 @@
             <column name="USER_NEW" type="nvarchar(50)"/>
             <column name="USER_EDIT" type="nvarchar(50)"/>
         </createTable>
+        <createIndex tableName="KNOWLEDGETAGLINK" indexName="IDX_KNOWLEDGETAGLINK_TAG_ID">
+            <column name="KNOWLEDGETAG_ID"/>
+        </createIndex>
+        <createIndex tableName="KNOWLEDGETAGLINK" indexName="IDX_KNOWLEDGETAGLINK_KM_ID">
+            <column name="KNOWLEDGEMANAGEMENT_ID"/>
+        </createIndex>
     </changeSet>
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.2.2/MSTeams/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d4e6ad9f3d5af78d0f0bb7ec2061aee18715067f
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/changelog.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <include file="create_MST_TEAM.xml" relativeToChangelogFile="true"/>
+    <include file="create_MST_TEAMLINK.xml" relativeToChangelogFile="true"/>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAM.xml b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAM.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3753f3db0c75cb67f100b1063a70e82a18a2d5da
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAM.xml
@@ -0,0 +1,16 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+<changeSet author="m.bilda" id="3d4f843d-9c5d-46b1-9475-9527d45a65b6">
+	<createTable tableName="MST_TEAM">
+		<column name="MST_TEAMID" type="CHAR(36)">
+			<constraints primaryKey="true" primaryKeyName="PK_MST_TEAM_MST_TEAMID"/>
+		</column>   
+                <column name="TEAMNAME" type="NVARCHAR(255)"/>
+                <column name="GENERAL_CHANNELID" type="CHAR(48)"/>
+                <column name="IS_ARCHIVED" type="TINYINT"/>
+                <column name="SERVICE_URL" type="NVARCHAR(255)"/>
+                <column name="WEB_URL" type="NVARCHAR(500)"/>
+	</createTable>      
+</changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAMLINK.xml b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAMLINK.xml
new file mode 100644
index 0000000000000000000000000000000000000000..be14298d37a5e2cdf7923b8c3a3edc7005bfd914
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAMLINK.xml
@@ -0,0 +1,26 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+<changeSet author="s.listl" id="05c74217-459f-43ec-8e33-daee059cafd8">
+    <createTable tableName="MST_TEAMLINK">
+        <column name="MST_TEAMLINKID" type="CHAR(36)">
+            <constraints primaryKey="true" primaryKeyName="PK_MST_TEAMLINKID"/>
+        </column>   
+        <column name="MST_TEAM_ID" type="CHAR(36)">
+            <constraints nullable="false"/>
+        </column>
+        <column name="OBJECT_ROWID" type="CHAR(36)">
+            <constraints nullable="false"/>
+        </column>
+        <column name="OBJECT_TYPE" type="NVARCHAR(63)">
+            <constraints nullable="false"/>
+        </column>
+    </createTable>
+    <createIndex tableName="MST_TEAMLINK" indexName="IDX_MST_TEAMLINK_MST_TEAM_ID">
+        <column name="MST_TEAM_ID"/>
+    </createIndex>
+    <createIndex tableName="MST_TEAMLINK" indexName="IDX_MST_TEAMLINK_OBJECT_ROWID">
+        <column name="OBJECT_ROWID"/>
+    </createIndex>
+</changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsible.xml b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsible.xml
new file mode 100644
index 0000000000000000000000000000000000000000..349148d665121715e6703272fde03c4da372a7c0
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsible.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="a.voegl" id="2a30b35b-9882-468e-98a6-a10f0561a681">
+	<addColumn tableName="CAMPAIGNPARTICIPANT">
+            <column name="RESPONSIBLE_CONTACT_ID" type="CHAR(36)"/>
+	</addColumn> 
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsibleIndex.xml b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsibleIndex.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6360542b2dff79630a5591fcbd5f4b8b2287ad87
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsibleIndex.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="a.voegl" id="6d545d51-b838-4325-9573-5fe51eade79b">
+        <createIndex indexName="IDX_CAMPAIGNPART_RES_CONTACT" tableName="CAMPAIGNPARTICIPANT">
+            <column name="RESPONSIBLE_CONTACT_ID"/>
+        </createIndex>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml b/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6625db2f2f6290579c5c747435541ed7d55e78a
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml
@@ -0,0 +1,19 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet dbms="derby" author="s.pongratz" id="539e6d12-5ba4-424b-a29d-f63a48d07288">
+        <sql>
+            ALTER TABLE LEAD ADD COLUMN STATUS_NEW VARCHAR(36);
+            UPDATE LEAD SET STATUS_NEW = CAST ( CAST (STATUS as CHAR(36)) as VARCHAR(36) );
+            ALTER TABLE LEAD DROP COLUMN STATUS;
+            RENAME COLUMN LEAD.STATUS_NEW TO STATUS;
+        </sql>
+    </changeSet>
+    <changeSet author="s.pongratz" id="be79e660-b112-4f58-b53d-d9e36ecd145b">
+        <preConditions onFail="CONTINUE">
+            <not>
+                <dbms type="derby" />
+            </not>
+        </preConditions>
+        <modifyDataType tableName="LEAD" columnName="STATUS" newDataType="VARCHAR(36)"/>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml
index d2c30058760b63b761bd081bea0debf466bfedb5..2a4bea7a4e0949d9504cea14b44a0f11cf14b25d 100644
--- a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml
+++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml
@@ -3,4 +3,11 @@
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
     <include relativeToChangelogFile="true" file="insert_commMediumTitleKeywordAttribute.xml"/>
     <include relativeToChangelogFile="true" file="Knowledgemanagement/changelog_knowledgeManagement.xml"/>
-</databaseChangeLog>
+    <include relativeToChangelogFile="true" file="insert_employeeCountAttribute.xml"/>
+    <include relativeToChangelogFile="true" file="alter_CampaignParticipantResponsible.xml"/>
+    <include relativeToChangelogFile="true" file="alter_TableLeadStatus.xml"/>
+    <include relativeToChangelogFile="true" file="alter_CampaignParticipantResponsibleIndex.xml"/>
+    <include relativeToChangelogFile="true" file="MSTeams/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="insert_newsletterAttribute.xml"/>
+    <include relativeToChangelogFile="true" file="readd_ExporttemplateIndizes.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2020.2.2/insert_employeeCountAttribute.xml b/.liquibase/Data_alias/basic/2020.2.2/insert_employeeCountAttribute.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f84d5e859c535a143acb02b7b54141dc40cdac59
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.2/insert_employeeCountAttribute.xml
@@ -0,0 +1,21 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="s.listl" id="59d2d137-086a-4c07-869a-72a2b24952d4">
+      <insert tableName="AB_ATTRIBUTE">
+          <column name="AB_ATTRIBUTEID" value="dd024883-c49e-4d09-85c8-829cf9c9c5e9"/>
+          <column name="ATTRIBUTE_PARENT_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+          <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+          <column name="ATTRIBUTE_NAME" value="Employee count"/>
+          <column name="ATTRIBUTE_TYPE" value="NUMBER"/>
+          <column name="SORTING" valueNumeric="7"/>
+      </insert>
+      <insert tableName="AB_ATTRIBUTEUSAGE">
+          <column name="AB_ATTRIBUTEUSAGEID" value="8de717a1-9d64-44c9-b692-b350b0857d59"/>
+          <column name="AB_ATTRIBUTE_ID" value="dd024883-c49e-4d09-85c8-829cf9c9c5e9"/>
+          <column name="OBJECT_TYPE" value="Organisation"/>
+          <column name="MAX_COUNT" valueNumeric="1"/>
+      </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml b/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml
new file mode 100644
index 0000000000000000000000000000000000000000..af877f23248b079e318b4a090bbb6e8fe3d90cd5
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml
@@ -0,0 +1,33 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="s.listl" id="4b285b34-29bc-4446-8d95-37cfcff7bd58">
+      <insert tableName="AB_ATTRIBUTE">
+          <column name="AB_ATTRIBUTEID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/>
+          <column name="ATTRIBUTE_NAME" value="Marketing"/>
+          <column name="ATTRIBUTE_TYPE" value="GROUP"/>
+          <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+      </insert>
+      <insert tableName="AB_ATTRIBUTE">
+          <column name="AB_ATTRIBUTEID" value="e196975c-6cfd-46dc-9cb2-053893ec2faa"/>
+          <column name="ATTRIBUTE_PARENT_ID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/>
+          <column name="ATTRIBUTE_NAME" value="Newsletter"/>
+          <column name="ATTRIBUTE_TYPE" value="BOOLEAN"/>
+          <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+          <column name="SORTING" valueNumeric="0"/>
+      </insert>
+      <insert tableName="AB_ATTRIBUTEUSAGE">
+          <column name="AB_ATTRIBUTEUSAGEID" value="e9842896-628c-4c80-a0ef-811f35b8ae51"/>
+          <column name="AB_ATTRIBUTE_ID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/>
+          <column name="OBJECT_TYPE" value="Person"/>
+          <column name="MAX_COUNT" valueNumeric="1"/>
+      </insert>
+      <insert tableName="AB_ATTRIBUTEUSAGE">
+          <column name="AB_ATTRIBUTEUSAGEID" value="fc594860-76c5-4acb-9758-44ea1a1db5d0"/>
+          <column name="AB_ATTRIBUTE_ID" value="e196975c-6cfd-46dc-9cb2-053893ec2faa"/>
+          <column name="OBJECT_TYPE" value="Person"/>
+          <column name="MAX_COUNT" valueNumeric="1"/>
+      </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2020.2.2/readd_ExporttemplateIndizes.xml b/.liquibase/Data_alias/basic/2020.2.2/readd_ExporttemplateIndizes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..67891291f5b0e2c0ea3df39d310b0d6939c77481
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.2/readd_ExporttemplateIndizes.xml
@@ -0,0 +1,36 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <!-- in some cases -->
+  <changeSet author="j.goderbauer" id="140794d8-eb75-4087-a45a-71b0f547e60a">
+      <preConditions  onFail="MARK_RAN">
+          <not>
+            <indexExists indexName="idx_exprttmpfld_tmpltid" />
+          </not>
+      </preConditions>
+      <createIndex indexName="idx_exprttmpfld_tmpltid" tableName="EXPORTTEMPLATEFIELD">
+          <column name="EXPORTTEMPLATE_ID"/>
+      </createIndex>
+  </changeSet>
+  <changeSet author="j.goderbauer" id="e952abd0-29f4-4d6c-b650-ef925248ae18">
+      <preConditions  onFail="MARK_RAN">
+          <not>
+              <indexExists indexName="idx_exprttmppou_tmpltid" />
+          </not>
+      </preConditions>
+      <createIndex indexName="idx_exprttmppou_tmpltid" tableName="EXPORTTEMPLATEPLACEOFUSE">
+          <column name="EXPORTTEMPLATE_ID"/>
+      </createIndex>
+  </changeSet>
+  <changeSet author="j.goderbauer" id="b49a1ac9-80b2-4cfd-b7cd-bdfee4bc0cd8">
+      <preConditions  onFail="MARK_RAN">
+          <not>
+              <indexExists indexName="idx_exprttmpselection_tmpltid" />
+          </not>
+      </preConditions>
+      <createIndex indexName="idx_exprttmpselection_tmpltid" tableName="EXPORTTEMPLATESELECTION">
+          <column name="EXPORTTEMPLATE_ID"/>
+      </createIndex>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2020.2.3/Offer/addColumnOffer.xml b/.liquibase/Data_alias/basic/2020.2.3/Offer/addColumnOffer.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1ae38fd53a3e8cd90aa3ae2a373c704004c016f7
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.3/Offer/addColumnOffer.xml
@@ -0,0 +1,16 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="s.garb" id="995a11c7-fb16-4c33-b5ad-0c35f44905c3">
+        <addColumn tableName="OFFER">
+            <column name="DISCOUNT"  type="NUMERIC(14,2)" />
+            <column name="DISCOUNTED_NET"  type="NUMERIC(14,2)" />
+        </addColumn>
+    </changeSet> 
+    <changeSet author="s.garb" id="801708bd-91f0-4468-bed9-0bbab7e46997">
+        <addColumn tableName="OFFER">
+            <column name="DISCOUNTED_VAT"  type="NUMERIC(14,2)" />
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2020.2.3/Offer/changelog.xml b/.liquibase/Data_alias/basic/2020.2.3/Offer/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..86ddb71fe50db74127c2f6397e78cfffbacf5740
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.3/Offer/changelog.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <include file="addColumnOffer.xml" relativeToChangelogFile="true" />
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2020.2.3/changelog.xml b/.liquibase/Data_alias/basic/2020.2.3/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c2a68fc34547cb7edcb594b4a2e5eccac52948b0
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.2.3/changelog.xml
@@ -0,0 +1,5 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <include relativeToChangelogFile="true" file="Offer/changelog.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Address/addLatLonIndizes.xml b/.liquibase/Data_alias/basic/2021.0.0/Address/addLatLonIndizes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..89673dc39093067eeb6a8b62ae0771f92622f68a
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Address/addLatLonIndizes.xml
@@ -0,0 +1,13 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="j.goderbauer" id="401ad958-abfd-4002-a2fe-f803e0e72d6c">
+        <createIndex indexName="IDX_ADDRESS_LAT" tableName="ADDRESS">
+            <column name="LAT"/>
+        </createIndex>
+        <createIndex indexName="IDX_ADDRESS_LON" tableName="ADDRESS">
+            <column name="LON"/>
+        </createIndex>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Checklists/changelog.xml b/.liquibase/Data_alias/basic/2021.0.0/Checklists/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d70130484a0b8b17469d68e131e04b73f5ace2f7
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Checklists/changelog.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <include relativeToChangelogFile="true" file="create_checklist.xml"/>
+    <include relativeToChangelogFile="true" file="create_checklistentry.xml"/>
+    <include relativeToChangelogFile="true" file="create_checklistentryvalue.xml"/>
+    <include relativeToChangelogFile="true" file="create_checklistentrytype_keywords.xml"/>
+    <include relativeToChangelogFile="true" file="create_indizes.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklist.xml b/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklist.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f3da3a0219c5ee2b303a1fc0511245482167c133
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklist.xml
@@ -0,0 +1,51 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+    <changeSet author="d.tran" id="e7dcb68c-cb64-4f67-914b-f40acb138569">
+        <createTable tableName="CHECKLIST">
+            <column name="CHECKLISTID" type="CHAR(36)">
+                <constraints nullable="false" primaryKey="true" primaryKeyName="PK_CHECKLIST_CHECKLISTID"/>
+            </column>
+            <column name="USER_NEW" type="VARCHAR(50)"/>
+            <column name="USER_EDIT" type="VARCHAR(50)"/>
+            <column name="DATE_NEW" type="TIMESTAMP"/>
+            <column name="DATE_EDIT" type="TIMESTAMP"/>
+        </createTable>
+    </changeSet>
+    <changeSet author="d.tran" id="b4001d82-7e72-4993-9971-8d2d805f2102">
+        <insert tableName="CHECKLIST">
+            <column name="CHECKLISTID" value="cb340ed2-ea49-45bb-a7a0-1a4f88d6e138"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:10:34"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLIST">
+            <column name="CHECKLISTID" value="c2bb548c-2f0c-45be-9e49-2ebf86bd6ab8"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:36:11"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLIST">
+            <column name="CHECKLISTID" value="c7b847b1-934a-4592-8c10-53da1d43dc4c"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:38:49"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLIST">
+            <column name="CHECKLISTID" value="0f95ce44-3b0d-417b-969f-f84897868558"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:41:20"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLIST">
+            <column name="CHECKLISTID" value="cb0357c9-a222-4d78-b2c5-035fffe3bb51"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:43:26"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklistentry.xml b/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklistentry.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c5994172bce5983f736933568934c078e53f873b
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklistentry.xml
@@ -0,0 +1,251 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+    <changeSet author="d.tran" id="88759560-1ddc-4a4f-87cb-c23a5a77a2d9">
+        <createTable tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" type="CHAR(36)">
+                <constraints nullable="false" primaryKey="true" primaryKeyName="PK_CHECKLISTENTRY_CHECKLISTENTRYID"/>
+            </column>
+            <column name="CHECKLIST_ID" type="CHAR(36)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="TITLE" type="VARCHAR(100)"/>
+            <column name="TYPE" type="VARCHAR(10)"/>
+            <column name="USER_NEW" type="VARCHAR(50)"/>
+            <column name="USER_EDIT" type="VARCHAR(50)"/>
+            <column name="DATE_NEW" type="TIMESTAMP"/>
+            <column name="DATE_EDIT" type="TIMESTAMP"/>
+        </createTable>
+    </changeSet>
+    <changeSet author="d.tran" id="783f74da-d481-4bd6-991a-a70d1bb7ee3b">
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="4197eed7-ff5c-4908-8d39-c1e5f2ff4ee6"/>
+            <column name="CHECKLIST_ID" value="cb340ed2-ea49-45bb-a7a0-1a4f88d6e138"/>
+            <column name="TITLE" value="salesprojectVolume"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:10:34"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="69d5333a-740d-42b8-bea8-676d39de722e"/>
+            <column name="CHECKLIST_ID" value="cb340ed2-ea49-45bb-a7a0-1a4f88d6e138"/>
+            <column name="TITLE" value="Communication strategy designed"/>
+            <column name="TYPE" value="MANUAL"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:10:34"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="484e33ac-e570-4aa2-86d6-274482122037"/>
+            <column name="CHECKLIST_ID" value="cb340ed2-ea49-45bb-a7a0-1a4f88d6e138"/>
+            <column name="TITLE" value="salesprojectRoleProjManager"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:10:34"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="3b78b8c6-acf3-4781-8fe7-da08e9d51566"/>
+            <column name="CHECKLIST_ID" value="cb340ed2-ea49-45bb-a7a0-1a4f88d6e138"/>
+            <column name="TITLE" value="salesprojectTouchpoint"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:10:34"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="820bbd8b-4f92-4640-ac1c-4f56c963d534"/>
+            <column name="CHECKLIST_ID" value="c2bb548c-2f0c-45be-9e49-2ebf86bd6ab8"/>
+            <column name="TITLE" value="salesprojectClassificationFields"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:36:11"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="c913d416-e671-41e4-9f8e-1c919d2a921a"/>
+            <column name="CHECKLIST_ID" value="c2bb548c-2f0c-45be-9e49-2ebf86bd6ab8"/>
+            <column name="TITLE" value="Probability checked and eventually readjusted"/>
+            <column name="TYPE" value="MANUAL"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:36:11"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="6317c21e-843e-4d71-9047-e2bb0f2521b3"/>
+            <column name="CHECKLIST_ID" value="c2bb548c-2f0c-45be-9e49-2ebf86bd6ab8"/>
+            <column name="TITLE" value="Communication strategy introduced"/>
+            <column name="TYPE" value="MANUAL"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:36:11"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="6182dade-b601-48c6-a19d-bd878b7248be"/>
+            <column name="CHECKLIST_ID" value="c2bb548c-2f0c-45be-9e49-2ebf86bd6ab8"/>
+            <column name="TITLE" value="salesprojectProjStart"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:36:11"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="a20733c2-06b8-4de0-a1ed-89877b4ac113"/>
+            <column name="CHECKLIST_ID" value="c2bb548c-2f0c-45be-9e49-2ebf86bd6ab8"/>
+            <column name="TITLE" value="salesprojectRoleIntDist"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:36:11"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="a7d67252-f750-4df8-b37e-75cb683d267e"/>
+            <column name="CHECKLIST_ID" value="c7b847b1-934a-4592-8c10-53da1d43dc4c"/>
+            <column name="TITLE" value="salesprojectOfferExists"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:38:49"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="3bf30a50-d1a1-4155-831c-94a278cb70f0"/>
+            <column name="CHECKLIST_ID" value="c7b847b1-934a-4592-8c10-53da1d43dc4c"/>
+            <column name="TITLE" value="salesprojectTeamRoles"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:38:49"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="181b32cc-bfa7-4685-a372-4736c906bf53"/>
+            <column name="CHECKLIST_ID" value="c7b847b1-934a-4592-8c10-53da1d43dc4c"/>
+            <column name="TITLE" value="salesprojectProjStart12"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:38:49"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="8deb14ed-e41e-4757-a673-63501ef5ff1c"/>
+            <column name="CHECKLIST_ID" value="c7b847b1-934a-4592-8c10-53da1d43dc4c"/>
+            <column name="TITLE" value="Probability checked and eventually readjusted"/>
+            <column name="TYPE" value="MANUAL"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:38:49"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="7558e886-481c-47dd-845a-1a8d2e3b26c6"/>
+            <column name="CHECKLIST_ID" value="c7b847b1-934a-4592-8c10-53da1d43dc4c"/>
+            <column name="TITLE" value="Follow-up appointment(s) exists (e.g.: for workshops..)"/>
+            <column name="TYPE" value="MANUAL"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:38:49"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="7ffeda7a-e26a-4518-a8dc-c5193e07c4d3"/>
+            <column name="CHECKLIST_ID" value="0f95ce44-3b0d-417b-969f-f84897868558"/>
+            <column name="TITLE" value="Risk audit performed"/>
+            <column name="TYPE" value="MANUAL"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:41:20"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="2eadef6b-5e8c-4464-a991-9e0828c48f0c"/>
+            <column name="CHECKLIST_ID" value="0f95ce44-3b0d-417b-969f-f84897868558"/>
+            <column name="TITLE" value="Probability checked and eventually readjusted"/>
+            <column name="TYPE" value="MANUAL"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:41:20"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="7807187b-6418-448f-b8bf-d1422c154ab8"/>
+            <column name="CHECKLIST_ID" value="0f95ce44-3b0d-417b-969f-f84897868558"/>
+            <column name="TITLE" value="Workshop for project-realization planned"/>
+            <column name="TYPE" value="MANUAL"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:41:20"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="40873b4a-b23a-4b1a-a3b6-97e0b87e54de"/>
+            <column name="CHECKLIST_ID" value="0f95ce44-3b0d-417b-969f-f84897868558"/>
+            <column name="TITLE" value="Appointment for offer-agreement occured"/>
+            <column name="TYPE" value="MANUAL"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:41:20"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="40c34072-a4c5-4b2f-af1c-a00ca2838b5b"/>
+            <column name="CHECKLIST_ID" value="0f95ce44-3b0d-417b-969f-f84897868558"/>
+            <column name="TITLE" value="salesprojectOfferSent"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:41:20"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="39666717-6438-45a4-b4f0-9ba463da6f69"/>
+            <column name="CHECKLIST_ID" value="cb0357c9-a222-4d78-b2c5-035fffe3bb51"/>
+            <column name="TITLE" value="salesprojectStatusWon"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:43:26"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="83f406e9-258b-401f-9944-77a5b5dd5bfc"/>
+            <column name="CHECKLIST_ID" value="cb0357c9-a222-4d78-b2c5-035fffe3bb51"/>
+            <column name="TITLE" value="Contract have been signed"/>
+            <column name="TYPE" value="MANUAL"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:43:26"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="eb4f7cac-6e67-4ec5-9512-0eaa0ce50bdc"/>
+            <column name="CHECKLIST_ID" value="cb0357c9-a222-4d78-b2c5-035fffe3bb51"/>
+            <column name="TITLE" value="salesprojectProb100"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:43:26"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRY">
+            <column name="CHECKLISTENTRYID" value="8c18a1d7-f821-4b25-bcac-4aa9ebc5b88e"/>
+            <column name="CHECKLIST_ID" value="cb0357c9-a222-4d78-b2c5-035fffe3bb51"/>
+            <column name="TITLE" value="salesprojectContractExists"/>
+            <column name="TYPE" value="AUTO"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW" valueDate="2021-01-12T08:43:26"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklistentrytype_keywords.xml b/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklistentrytype_keywords.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c672cf365cfb73c142a96acce2e1f108d57d3ba4
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklistentrytype_keywords.xml
@@ -0,0 +1,25 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="d.tran" id="43e6595f-5d5c-40d6-8d0f-4690337fab3a">
+      <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="264b8a1c-45c8-4b41-9d11-4b6fb538b79c"/>
+            <column name="KEYID" value="MANUAL"/>
+            <column name="TITLE" value="Manually"/>
+            <column name="CONTAINER" value="ChecklistEntryType"/>
+            <column name="SORTING" valueNumeric="0"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="1"/>
+        </insert>
+      <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="0af9044d-6eeb-4db0-be95-91e63a30aa19"/>
+            <column name="KEYID" value="AUTO"/>
+            <column name="TITLE" value="Automatically"/>
+            <column name="CONTAINER" value="ChecklistEntryType"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="1"/>
+        </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklistentryvalue.xml b/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklistentryvalue.xml
new file mode 100644
index 0000000000000000000000000000000000000000..083ea6797bba113176e8dfa2144033f66f7797d9
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_checklistentryvalue.xml
@@ -0,0 +1,42 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+    <changeSet author="d.tran" id="876cda94-6845-49a9-a5db-7896f7e37829">
+        <createTable tableName="CHECKLISTENTRYVALUE">
+            <column name="CHECKLISTENTRYVALUEID" type="CHAR(36)">
+                <constraints nullable="false" primaryKey="true" primaryKeyName="PK_CHECKLISTENTRYVALUE_CHECKLISTENTRYVALUEID"/>
+            </column>
+            <column name="CHECKLISTENTRY_ID" type="CHAR(36)"/>
+            <column name="OBJECT_ROWID" type="CHAR(36)"/>
+            <column name="OBJECT_TYPE" type="VARCHAR(50)"/>
+            <column name="IS_FULFILLED" type="SMALLINT"/>
+            <column name="USER_NEW" type="VARCHAR(50)"/>
+            <column name="USER_EDIT" type="VARCHAR(50)"/>
+            <column name="DATE_NEW" type="TIMESTAMP"/>
+            <column name="DATE_EDIT" type="TIMESTAMP"/>
+        </createTable>
+    </changeSet>
+    <changeSet author="d.tran" id="bfff621f-c04a-4791-892c-102f057e667f">
+        <insert tableName="CHECKLISTENTRYVALUE">
+            <column name="CHECKLISTENTRYVALUEID" value="c4dc8c1e-e291-4d3f-8b36-cd8a0960abbf"/>
+            <column name="CHECKLISTENTRY_ID" value="c913d416-e671-41e4-9f8e-1c919d2a921a"/>
+            <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
+            <column name="OBJECT_TYPE"/>
+            <column name="IS_FULFILLED" valueNumeric="0"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT" value="null"/>
+            <column name="DATE_NEW" valueDate="2021-01-22T12:05:25"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="CHECKLISTENTRYVALUE">
+            <column name="CHECKLISTENTRYVALUEID" value="e12dbddc-301f-4da5-b48d-3fabad4c8634"/>
+            <column name="CHECKLISTENTRY_ID" value="6317c21e-843e-4d71-9047-e2bb0f2521b3"/>
+            <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
+            <column name="OBJECT_TYPE"/>
+            <column name="IS_FULFILLED" valueNumeric="0"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT" value="null"/>
+            <column name="DATE_NEW" valueDate="2021-01-22T12:05:25"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_indizes.xml b/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_indizes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a38c8a53bced9885d71ce250a409a322fac8aebc
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Checklists/create_indizes.xml
@@ -0,0 +1,15 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="d.tran" id="90f1d603-d9b0-4c0e-be0c-8a2a1b41b472">
+        <createIndex tableName="CHECKLISTENTRY" indexName="IDX_CHKLSTENTRY_CHECKLIST_ID">
+            <column name="CHECKLIST_ID"/>
+        </createIndex>
+        <createIndex tableName="CHECKLISTENTRYVALUE" indexName="IDX_CHKLSTENTRYVAL_ROWID">
+            <column name="OBJECT_ROWID"/>
+        </createIndex>
+        <createIndex tableName="CHECKLISTENTRYVALUE" indexName="IDX_CHKLSTENTRYVAL_CHKENTRY_ID">
+            <column name="CHECKLISTENTRY_ID"/>
+        </createIndex>
+    </changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Classification/add_ClassificationStorageOutdated.xml b/.liquibase/Data_alias/basic/2021.0.0/Classification/add_ClassificationStorageOutdated.xml
new file mode 100644
index 0000000000000000000000000000000000000000..07638236ad1666eb6055241aaa2d74dbf55cb7ba
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Classification/add_ClassificationStorageOutdated.xml
@@ -0,0 +1,18 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="b.ulrich" id="0dce5058-8b2f-43b1-8e53-03ccebe93cb8">
+        <addColumn tableName="CLASSIFICATIONSTORAGE">
+            <column name="OUTDATED" type="TINYINT" defaultValueNumeric="1"/>
+        </addColumn>
+        <update tableName="CLASSIFICATIONSTORAGE">
+            <column name="OUTDATED" valueNumeric="0"/>
+            <where>OUTDATED IS NULL</where>
+        </update>
+        <addNotNullConstraint
+            columnDataType="TINYINT"
+            columnName="OUTDATED"
+            tableName="CLASSIFICATIONTYPE"/>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Classification/add_ClassificationTypeFilterAndOutdated.xml b/.liquibase/Data_alias/basic/2021.0.0/Classification/add_ClassificationTypeFilterAndOutdated.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cea47fa1fc2189e8f15f642c5642c06d3183e186
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Classification/add_ClassificationTypeFilterAndOutdated.xml
@@ -0,0 +1,19 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="b.ulrich" id="44f49a73-7eb5-498b-a78a-96036e8e00d1">
+        <addColumn tableName="CLASSIFICATIONTYPE">
+            <column name="FILTER" type="NCLOB"/>
+            <column name="OUTDATED" type="TINYINT" defaultValueNumeric="1"/>
+        </addColumn>
+        <update tableName="CLASSIFICATIONTYPE">
+            <column name="OUTDATED" valueNumeric="0"/>
+            <where>OUTDATED IS NULL</where>
+        </update>
+        <addNotNullConstraint
+            columnDataType="TINYINT"
+            columnName="OUTDATED"
+            tableName="CLASSIFICATIONTYPE"/>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Classification/add_ClassificationTypeScorePoints.xml b/.liquibase/Data_alias/basic/2021.0.0/Classification/add_ClassificationTypeScorePoints.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d3e3a13d3d4c4e6fddf2df16a68574fef395ee38
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Classification/add_ClassificationTypeScorePoints.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="b.ulrich" id="3f1bf58e-c7cb-4b50-9b57-8d90ee1ac8b6">
+        <addColumn tableName="CLASSIFICATIONTYPE">
+            <column name="SCOREPOINTS" type="INTEGER"/>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Classification/alter_Classification.xml b/.liquibase/Data_alias/basic/2021.0.0/Classification/alter_Classification.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7ab4bf06f68e5a0fe9fedd06ca2e64bcd49c1133
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Classification/alter_Classification.xml
@@ -0,0 +1,15 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="b.ulrich" id="2c24ff95-86dc-48fe-8997-e7641bded314">
+        <addColumn tableName="CLASSIFICATION">
+            <column name="SCOREPOINTS" type="NUMERIC(14,2)"/>
+	</addColumn> 
+        <renameColumn
+            columnDataType="CHAR(36)"  
+            newColumnName="VALUE"
+            oldColumnName="CLASSIFICATIONSCORE_ID"  
+            tableName="CLASSIFICATION"/>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Classification/alter_ClassificationGrading.xml b/.liquibase/Data_alias/basic/2021.0.0/Classification/alter_ClassificationGrading.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c10f8df9ccff89eb494396edbe2b3cb06bdeeb33
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Classification/alter_ClassificationGrading.xml
@@ -0,0 +1,12 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="b.ulrich" id="f82eebd8-62f5-446d-9b58-a48880bd077c">
+        <renameColumn
+            columnDataType="INTEGER"  
+            newColumnName="MINPERCENT"  
+            oldColumnName="MAXGRADEFORSCORE"  
+            tableName="CLASSIFICATIONGRADING"/>  
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Classification/alter_ClassificationScore.xml b/.liquibase/Data_alias/basic/2021.0.0/Classification/alter_ClassificationScore.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3c74a3b172ace4e581684b607f1b136ad476706b
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Classification/alter_ClassificationScore.xml
@@ -0,0 +1,12 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="b.ulrich" id="6bb5a765-cb8d-4c4f-8bad-76845e90cc41">
+        <renameColumn
+            columnDataType="INTEGER"  
+            newColumnName="SCOREPERCENT"  
+            oldColumnName="SCORE"  
+            tableName="CLASSIFICATIONSCORE"/>  
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Classification/changelog.xml b/.liquibase/Data_alias/basic/2021.0.0/Classification/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1548d06edbea305e452a941b7e205bda2a87c17d
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Classification/changelog.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <include relativeToChangelogFile="true" file="add_ClassificationTypeFilterAndOutdated.xml"/>
+    <include relativeToChangelogFile="true" file="add_ClassificationStorageOutdated.xml"/>
+    <include relativeToChangelogFile="true" file="alter_ClassificationGrading.xml"/>
+    <include relativeToChangelogFile="true" file="add_ClassificationTypeScorePoints.xml"/>
+    <include relativeToChangelogFile="true" file="alter_ClassificationScore.xml"/>
+    <include relativeToChangelogFile="true" file="alter_Classification.xml"/>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2021.0.0/District/alter_district.xml b/.liquibase/Data_alias/basic/2021.0.0/District/alter_district.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d0b0bdd3c9f37e715838f7f30970b079298e70cf
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/District/alter_district.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="Gerhard Bachmaier" id="3a1bb059-c040-435b-8978-bfddb1a6e2d4">
+        <addColumn tableName="DISTRICT">
+            <column name="DISTRICT_AUTOADD"    type="SMALLINT(5)" />
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/District/alter_districtContact.xml b/.liquibase/Data_alias/basic/2021.0.0/District/alter_districtContact.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b389c64e723131b3531d7d5a503f2bd102662e10
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/District/alter_districtContact.xml
@@ -0,0 +1,13 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="Pierre Suchacek" id="9aace074-1b61-4577-ad27-bee6a498134c">
+        <addColumn tableName="DISTRICTCONTACT">
+            <column name="USER_NEW"     type="NVARCHAR(50)" />
+            <column name="USER_EDIT"    type="NVARCHAR(50)" />
+            <column name="DATE_NEW"     type="DATETIME" />
+            <column name="DATE_EDIT"    type="DATETIME" />
+        </addColumn>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/District/alter_districtResponsibleDatatypes.xml b/.liquibase/Data_alias/basic/2021.0.0/District/alter_districtResponsibleDatatypes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7865093566d927f59c40e287bb707ec886a9458d
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/District/alter_districtResponsibleDatatypes.xml
@@ -0,0 +1,13 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="Pierre Suchacek" id="6feb15fd-c517-4bf9-be88-59993908b9ed">
+        <addColumn tableName="DISTRICTRESPONSIBLE">
+            <column name="ADVISERSTATUS"    type="VARCHAR(36)" />
+            <column name="ADVISERROLE"      type="VARCHAR(36)" />
+            <column name="VALIDFROM"        type="DATETIME" />
+            <column name="VALIDTO"          type="DATETIME" />
+        </addColumn>
+    </changeSet>
+</databaseChangeLog> 
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/District/changelog.xml b/.liquibase/Data_alias/basic/2021.0.0/District/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3532ff12e9f9f98c7a12e6e7ed86787fea18fd48
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/District/changelog.xml
@@ -0,0 +1,13 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    
+    <include relativeToChangelogFile="true" file="create_districtContact.xml"/>
+    <include relativeToChangelogFile="true" file="insert_KeywordsDistrictOrigin.xml"/>
+    <include relativeToChangelogFile="true" file="alter_districtResponsibleDatatypes.xml"/>
+    <include relativeToChangelogFile="true" file="insert_KeywordsAdviserRoles.xml"/>
+    <include relativeToChangelogFile="true" file="update_ContactResponsible_consistent.xml"/>
+    <include relativeToChangelogFile="true" file="alter_district.xml"/>
+    <include relativeToChangelogFile="true" file="alter_districtContact.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/District/create_districtContact.xml b/.liquibase/Data_alias/basic/2021.0.0/District/create_districtContact.xml
new file mode 100644
index 0000000000000000000000000000000000000000..77d941f78dad6508618470834e71656e13d6f74f
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/District/create_districtContact.xml
@@ -0,0 +1,20 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="Pierre Suchacek" id="c17cc078-3d3d-4988-9dda-789a59aad814">
+        <createTable tableName="DISTRICTCONTACT">
+            <column name="DISTRICTCONTACTID" type="CHAR(36)">
+                <constraints primaryKey="true" primaryKeyName="PK_DISTRICTCONTACT_DISTRICTCONTACTID"/>
+            </column>
+            <column name="CONTACT_ID" type="VARCHAR(36)"/>
+            <column name="DISTRICT_ID" type="VARCHAR(36)"/>
+            <column name="ADVISER_CONTACT_ID" type="VARCHAR(36)"/>
+            <column name="ADVISER_ROLE" type="VARCHAR(36)"/>
+            <column name="STATUS" type="CHAR(36)"/>
+            <column name="VALID_FROM" type="DATETIME"/>
+            <column name="VALID_UNTIL" type="DATETIME"/>
+            <column name="ORIGIN" type="NVARCHAR(36)"/>
+        </createTable>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/District/insert_KeywordsAdviserRoles.xml b/.liquibase/Data_alias/basic/2021.0.0/District/insert_KeywordsAdviserRoles.xml
new file mode 100644
index 0000000000000000000000000000000000000000..84cc08d4f148a5841fbc5f2aaac882690f1043c3
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/District/insert_KeywordsAdviserRoles.xml
@@ -0,0 +1,61 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="Pierre Suchacek" id="d5737f12-5e86-4d6c-bcc7-7d7bed2d993f">
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="97c73c26-c90e-410b-8732-47cbeaf986df"/>
+            <column name="KEYID" value="ADVISERROLE_SalesManager"/>
+            <column name="TITLE" value="Sales Manager"/>
+            <column name="CONTAINER" value="ADVISER_ROLE"/>
+            <column name="SORTING" valueNumeric="0"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="8d853c34-0896-45db-989d-131a15bd0c6a"/>
+            <column name="KEYID" value="ADVISERROLE_OfficeDuty"/>
+            <column name="TITLE" value="Office Duty"/>
+            <column name="CONTAINER" value="ADVISER_ROLE"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="40212bc7-df71-4131-965b-344e6baf7c57"/>
+            <column name="KEYID" value="ADVISERROLE_RegionManager"/>
+            <column name="TITLE" value="Region Manager"/>
+            <column name="CONTAINER" value="ADVISER_ROLE"/>
+            <column name="SORTING" valueNumeric="2"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="df052065-a32d-4c17-a229-60abcaf2736f"/>
+            <column name="KEYID" value="ADVISERROLE_AccountManager"/>
+            <column name="TITLE" value="Account Manager"/>
+            <column name="CONTAINER" value="ADVISER_ROLE"/>
+            <column name="SORTING" valueNumeric="3"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="3b080d0e-9301-47f2-9ead-10f2b5aaf701"/>
+            <column name="KEYID" value="ADVISERROLE_AreaManager"/>
+            <column name="TITLE" value="Area Manager"/>
+            <column name="CONTAINER" value="ADVISER_ROLE"/>
+            <column name="SORTING" valueNumeric="4"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="a343cbe0-af9c-464c-861e-65f00eab392f"/>
+            <column name="KEYID" value="ADVISERROLE_FieldService"/>
+            <column name="TITLE" value="Field Service"/>
+            <column name="CONTAINER" value="ADVISER_ROLE"/>
+            <column name="SORTING" valueNumeric="5"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/District/insert_KeywordsDistrictOrigin.xml b/.liquibase/Data_alias/basic/2021.0.0/District/insert_KeywordsDistrictOrigin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..59cc5b0cfa80d4593b27a5f43d22a143b63aeff5
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/District/insert_KeywordsDistrictOrigin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="Pierre Suchacek" id="a2067d42-75a1-4799-8c03-e5ec13f29b7a">
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="9531f6ba-dbbc-43c2-ba7a-761c6e44ca3b"/>
+            <column name="KEYID" value="DistrictOrigin_auto"/>
+            <column name="TITLE" value="auto"/>
+            <column name="CONTAINER" value="DISTRICT_ORIGIN"/>
+            <column name="SORTING" valueNumeric="0"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="b063bd18-0f60-4e5f-b153-62acb984a4b2"/>
+            <column name="KEYID" value="DistrictOrigin_manual"/>
+            <column name="TITLE" value="manual"/>
+            <column name="CONTAINER" value="DISTRICT_ORIGIN"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/District/update_ContactResponsible_consistent.xml b/.liquibase/Data_alias/basic/2021.0.0/District/update_ContactResponsible_consistent.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9aaa38da63024a5b8d0d662bbef91b9459e09440
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/District/update_ContactResponsible_consistent.xml
@@ -0,0 +1,30 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="Pierre Suchacek" id="610e5b84-2428-4294-b513-b4a0c7493e0a">
+        <renameColumn
+            columnDataType="VARCHAR(36)"  
+            newColumnName="ADVISER_STATUS"  
+            oldColumnName="ADVISERSTATUS"   
+            tableName="DISTRICTRESPONSIBLE"/>
+        
+        <renameColumn
+            columnDataType="VARCHAR(36)"  
+            newColumnName="ADVISER_ROLE"  
+            oldColumnName="ADVISERROLE"   
+            tableName="DISTRICTRESPONSIBLE"/>
+                
+        <renameColumn
+            columnDataType="VARCHAR(36)"  
+            newColumnName="VALID_FROM"  
+            oldColumnName="VALIDFROM"   
+            tableName="DISTRICTRESPONSIBLE"/>
+                        
+        <renameColumn
+            columnDataType="VARCHAR(36)"  
+            newColumnName="VALID_UNTIL"  
+            oldColumnName="VALIDTO"   
+            tableName="DISTRICTRESPONSIBLE"/>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/MissingIndizes/add_MissingIndizes.xml b/.liquibase/Data_alias/basic/2021.0.0/MissingIndizes/add_MissingIndizes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b86da6372b514d898bc54f5883b43fc579d7a057
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/MissingIndizes/add_MissingIndizes.xml
@@ -0,0 +1,37 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="b.ulrich" id="50062c3c-f2db-4be1-854f-fc44110fd160">
+    <createIndex tableName="VISITRECOMMENDATION" indexName="IDX_VISITRECOMMEND_CONPERS_ID">
+        <column name="CONTACT_PERSON_ID"/>
+    </createIndex>
+    <createIndex tableName="DISTRICTCONTACT" indexName="IDX_DISTRTCON_ADVCONTACTID_ID">
+        <column name="ADVISER_CONTACT_ID"/>
+    </createIndex>
+    <createIndex tableName="DISTRICTCONTACT" indexName="IDX_DISTRTCON_DISTRICT_ID">
+        <column name="DISTRICT_ID"/>
+    </createIndex>
+    <createIndex tableName="DISTRICTCONTACT" indexName="IDX_DISTRTCON_CONTACT_ID">
+        <column name="CONTACT_ID"/>
+    </createIndex>
+    <createIndex tableName="KNOWLEDGELINK" indexName="IDX_KNOWLEDELINK_ROW_ID">
+        <column name="ROW_ID"/>
+    </createIndex>
+    <createIndex tableName="KNOWLEDGEMANAGEMENT" indexName="IDX_KNOWLEDEMNGMT_AUTHCON_ID">
+        <column name="AUTHOR_CONTACT_ID"/>
+    </createIndex>
+    <createIndex tableName="KNOWLEDGEMANAGEMENT" indexName="IDX_KNOWLEDEMNGMT_RESCON_ID">
+        <column name="RESPONSIBLE_CONTACT_ID"/>
+    </createIndex>
+    <createIndex tableName="KNOWLEDGEMANAGEMENTTAGMODERATION" indexName="IDX_KNOWLEDEMNGMTMOD_ATTR_ID">
+        <column name="AB_ATTRIBUTE_ID"/>
+    </createIndex>
+    <createIndex tableName="OBSERVATION" indexName="IDX_OBSERVATION_OBSERVATION_ID">
+        <column name="OBSERVATION_ID"/>
+    </createIndex>
+    <createIndex tableName="OBSERVATION" indexName="IDX_OBSERVATION_OBJECT_ID">
+        <column name="OBJECT_ID"/>
+    </createIndex>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Observation/CreateObservation.xml b/.liquibase/Data_alias/basic/2021.0.0/Observation/CreateObservation.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4ff46cb083171a465fbd24a3e425fb49dceed102
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Observation/CreateObservation.xml
@@ -0,0 +1,36 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="s.pongratz" id="e7212711-2d85-4e5a-b215-0bbbeed9d538">
+    <createTable tableName="OBSERVATION">
+            <column name="OBSERVATIONID" type="CHAR(36)">
+                <constraints primaryKey="true" primaryKeyName="PK_OBSERVATION_OBSERVATIONID"/>
+            </column>
+            <column name="OBSERVATION_ID" type="CHAR(36)" />
+            
+            <column name="OBSERVER" type="NVARCHAR(63)" >
+                <constraints nullable="false"/>
+            </column>
+            <column name="OBJECT_TYPE" type="NVARCHAR(80)">
+                <constraints nullable="false"/>
+            </column>
+            
+            <column name="OBJECT_ID" type="VARCHAR(63)" />
+            <column name="OBJECT_FILTER" type="NCLOB" />
+            
+            <column name="OBJECT_FIELD" type="NCLOB" />
+            
+            <column name="NOTIFICATION_PRIO" type="NVARCHAR(36)" />
+            
+            <column name="TRIGGEREVENTUPDATE" type="TINYINT"/>
+            <column name="TRIGGEREVENTDELETE" type="TINYINT"/>
+            <column name="TRIGGEREVENTINSERT" type="TINYINT"/>
+            
+            <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+    </createTable>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Observation/changelog.xml b/.liquibase/Data_alias/basic/2021.0.0/Observation/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..44639ff557273d3b9efc4b179789c33401c28be8
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Observation/changelog.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+        <include relativeToChangelogFile="true" file="CreateObservation.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/SalesprojectConversion/changelog.xml b/.liquibase/Data_alias/basic/2021.0.0/SalesprojectConversion/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..037d80a7e64869383731d8a349e6d415bde5f031
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/SalesprojectConversion/changelog.xml
@@ -0,0 +1,5 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <include relativeToChangelogFile="true" file="create_salesprojectphasedefinition.xml"/>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2021.0.0/SalesprojectConversion/create_salesprojectphasedefinition.xml b/.liquibase/Data_alias/basic/2021.0.0/SalesprojectConversion/create_salesprojectphasedefinition.xml
new file mode 100644
index 0000000000000000000000000000000000000000..14beebe3eb510ecf4d44575fc9f709eec83098f3
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/SalesprojectConversion/create_salesprojectphasedefinition.xml
@@ -0,0 +1,72 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+    <changeSet author="d.tran" id="87b5a00d-ddb4-42af-b604-ddd795b89c5d">
+        <createTable tableName="SALESPROJECTPHASEDEFINITION">
+            <column name="SALESPROJECTPHASEDEFINITIONID" type="CHAR(36)">
+                <constraints nullable="false" primaryKey="true" primaryKeyName="PK_SALESPROJECTPHASEDEFINITION_SALESPROJECTPHASEDEFINITIONID"/>
+            </column>
+            <column name="CHECKLIST_ID" type="CHAR(36)"/>
+            <column name="PHASE" type="VARCHAR(36)"/>
+            <column name="DESCRIPTION" type="VARCHAR(500)"/>
+            <column name="USER_NEW" type="VARCHAR(50)"/>
+            <column name="USER_EDIT" type="VARCHAR(50)"/>
+            <column name="DATE_NEW" type="TIMESTAMP"/>
+            <column name="DATE_EDIT" type="TIMESTAMP"/>
+        </createTable>
+    <createIndex tableName="SALESPROJECTPHASEDEFINITION" indexName="IDX_SPPHASEDEF_CHECKLIST_ID">
+        <column name="CHECKLIST_ID"/>
+    </createIndex>
+    </changeSet>
+    <changeSet author="d.tran" id="65674357-70f6-44b7-b54f-57044130b926">
+        <insert tableName="SALESPROJECTPHASEDEFINITION">
+            <column name="SALESPROJECTPHASEDEFINITIONID" value="14adec36-4f29-446a-9dde-a83e9904813f"/>
+            <column name="CHECKLIST_ID" value="cb340ed2-ea49-45bb-a7a0-1a4f88d6e138"/>
+            <column name="PHASE" value="SALPROJPHASEMQL"/>
+            <column name="DESCRIPTION" value="Voraussetzungen für die Phase: 'MQL'."/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="SALESPROJECTPHASEDEFINITION">
+            <column name="SALESPROJECTPHASEDEFINITIONID" value="52454e8e-d71a-443d-81d0-ab93601b7bf3"/>
+            <column name="CHECKLIST_ID" value="c2bb548c-2f0c-45be-9e49-2ebf86bd6ab8"/>
+            <column name="PHASE" value="SALPROJPHASESAL"/>
+            <column name="DESCRIPTION" value="Voraussetzungen für die Phase: 'SAL'"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="SALESPROJECTPHASEDEFINITION">
+            <column name="SALESPROJECTPHASEDEFINITIONID" value="25796eb6-59c4-4e74-80f3-c66583320155"/>
+            <column name="CHECKLIST_ID" value="c7b847b1-934a-4592-8c10-53da1d43dc4c"/>
+            <column name="PHASE" value="SALPROJPHASESQO"/>
+            <column name="DESCRIPTION" value="Voraussetzungen für die Phase: 'SQO'"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="SALESPROJECTPHASEDEFINITION">
+            <column name="SALESPROJECTPHASEDEFINITIONID" value="e8ff463f-692c-40a7-bafa-d168886700fd"/>
+            <column name="CHECKLIST_ID" value="0f95ce44-3b0d-417b-969f-f84897868558"/>
+            <column name="PHASE" value="SALPROJPHASEOFFER"/>
+            <column name="DESCRIPTION" value="Voraussetzungen für die Phase: 'Offer'"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+        <insert tableName="SALESPROJECTPHASEDEFINITION">
+            <column name="SALESPROJECTPHASEDEFINITIONID" value="21011181-fe9f-4c6c-910e-344ce10e3fc1"/>
+            <column name="CHECKLIST_ID" value="cb0357c9-a222-4d78-b2c5-035fffe3bb51"/>
+            <column name="PHASE" value="SALPROJPHASENEGO"/>
+            <column name="DESCRIPTION" value="Voraussetzungen für die Phase: 'Negotiation'"/>
+            <column name="USER_NEW" value="Admin"/>
+            <column name="USER_EDIT"/>
+            <column name="DATE_NEW"/>
+            <column name="DATE_EDIT"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/UpdateAddrFormats.xml b/.liquibase/Data_alias/basic/2021.0.0/UpdateAddrFormats.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9dc813de099597e444ce5b3c3969a8c0e8b8b054
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/UpdateAddrFormats.xml
@@ -0,0 +1,1005 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="e.rohrmeyer" id="6c8c603d-262b-46b2-af80-2061ceb06d58">
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%S%n%Z %C%n%A %B%n%O%n%N"/>
+      <where>ISO2 = 'BY'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'BE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'VI'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'GU'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'AF'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%nAX-%Z %C%nÃ…LAND"/>
+      <where>ISO2 = 'AX'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z%n%C"/>
+      <where>ISO2 = 'AL'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'DZ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'AS'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'MK'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'MG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %X"/>
+      <where>ISO2 = 'MW'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%D%n%Z %C%n%S"/>
+      <where>ISO2 = 'MY'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'MV'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'AD'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'AO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'AI'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'AQ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'AG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C%n%S"/>
+      <where>ISO2 = 'AR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z%n%C%n%S"/>
+      <where>ISO2 = 'AM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'AW'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'AU'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'AT'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%nAZ %Z %C"/>
+      <where>ISO2 = 'AZ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C, %S"/>
+      <where>ISO2 = 'BS'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'BH'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C - %Z"/>
+      <where>ISO2 = 'BD'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C, %S %Z"/>
+      <where>ISO2 = 'BB'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'BZ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'BJ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'BM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'BT'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'BO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'BQ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'BA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'BW'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'BV'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%D%n%C-%S%n%Z"/>
+      <where>ISO2 = 'BR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'KH'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'CM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'CA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C%n%S"/>
+      <where>ISO2 = 'CV'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'IO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'UM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'VG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'BN'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'BG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %X"/>
+      <where>ISO2 = 'BF'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'BI'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%S %Z"/>
+      <where>ISO2 = 'KY'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'CF'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'TD'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C%n%S"/>
+      <where>ISO2 = 'CL'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%Z%n%S%C%D%n%A %B%n%O%n%N"/>
+      <where>ISO2 = 'CN'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'CX'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'CC'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C, %S, %Z"/>
+      <where>ISO2 = 'CO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'KM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'CG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'CD'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'CK'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%S, %C%n%Z"/>
+      <where>ISO2 = 'CR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'HM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%nJERSEY%n%Z"/>
+      <where>ISO2 = 'JE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%nHR-%Z %C"/>
+      <where>ISO2 = 'HR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %S%n%Z"/>
+      <where>ISO2 = 'CU'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'CW'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'CY'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'CZ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'DK'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'DJ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'DM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'DO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z%n%C"/>
+      <where>ISO2 = 'EC'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%S%n%Z"/>
+      <where>ISO2 = 'EG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z-%C%n%S"/>
+      <where>ISO2 = 'SV'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'GQ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'ER'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'EE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'ET'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'FK'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%nFO%Z %C"/>
+      <where>ISO2 = 'FO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'FJ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%nFI-%Z %C"/>
+      <where>ISO2 = 'FI'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%B %A%n%Z %C %X"/>
+      <where>ISO2 = 'FR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C %X"/>
+      <where>ISO2 = 'GF'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C %S"/>
+      <where>ISO2 = 'PF'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'TF'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'GA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'GM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'GE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'DE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'GH'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%nGIBRALTAR%n%Z"/>
+      <where>ISO2 = 'GI'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'GR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'GL'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'GD'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C %X"/>
+      <where>ISO2 = 'GP'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z- %C"/>
+      <where>ISO2 = 'GT'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%nGUERNSEY%n%Z"/>
+      <where>ISO2 = 'GG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%Z %A %B %C"/>
+      <where>ISO2 = 'GN'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'GW'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'GY'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%nHT%Z %C"/>
+      <where>ISO2 = 'HT'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'VA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C, %S%n%Z"/>
+      <where>ISO2 = 'HN'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%S%n%C%n%A %B%n%O%n%N"/>
+      <where>ISO2 = 'HK'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%C%n%A %B%n%Z"/>
+      <where>ISO2 = 'HU'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'IS'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z%n%S"/>
+      <where>ISO2 = 'IN'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%S %Z"/>
+      <where>ISO2 = 'ID'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%X %A %B %C %X"/>
+      <where>ISO2 = 'CI'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%S%n%C, %D%n%A %B%n%Z"/>
+      <where>ISO2 = 'IR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%C, %S%n%Z"/>
+      <where>ISO2 = 'IQ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%D%n%C%n%S %Z"/>
+      <where>ISO2 = 'IE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'IM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'IL'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C %S"/>
+      <where>ISO2 = 'IT'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%S %X"/>
+      <where>ISO2 = 'JM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="?%Z%n%S%n%B %A%n%O%n%N"/>
+      <where>ISO2 = 'JP'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'JO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'LS'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'LR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'LY'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%Z%n%S%n%C%n%A %B%n%O%n%N"/>
+      <where>ISO2 = 'KZ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'KE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%S%n%C"/>
+      <where>ISO2 = 'KI'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'KW'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'KG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'LA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C, %Z"/>
+      <where>ISO2 = 'LV'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'LB'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%nFL-%Z %C"/>
+      <where>ISO2 = 'LI'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%nLT-%Z %C"/>
+      <where>ISO2 = 'LT'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%nL-%Z %C"/>
+      <where>ISO2 = 'LU'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%A %B%n%O%n%N"/>
+      <where>ISO2 = 'MO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'ML'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'MT'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'MH'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C %X"/>
+      <where>ISO2 = 'MQ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'MR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z%n%C"/>
+      <where>ISO2 = 'MU'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C %X"/>
+      <where>ISO2 = 'YT'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%D%n%Z %C, %S"/>
+      <where>ISO2 = 'MX'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'FM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%nMD-%Z %C"/>
+      <where>ISO2 = 'MD'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%nMC-%Z %C %X"/>
+      <where>ISO2 = 'MC'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%S %Z"/>
+      <where>ISO2 = 'MN'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'ME'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'MS'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'MA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C%S"/>
+      <where>ISO2 = 'MZ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C, %Z"/>
+      <where>ISO2 = 'MM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'NA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%S"/>
+      <where>ISO2 = 'NR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'NP'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'NL'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C %X"/>
+      <where>ISO2 = 'NC'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%D%n%C %Z"/>
+      <where>ISO2 = 'NZ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z%n%C, %S"/>
+      <where>ISO2 = 'NI'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'NE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%D%n%C %Z%n%S"/>
+      <where>ISO2 = 'NG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'NU'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'NF'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%Z%n%S%n%C%n%A %B%n%O%n%N"/>
+      <where>ISO2 = 'KP'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'MP'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'NO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z%n%C"/>
+      <where>ISO2 = 'OM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C-%Z"/>
+      <where>ISO2 = 'PK'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %S %Z"/>
+      <where>ISO2 = 'PW'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'PS'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%S"/>
+      <where>ISO2 = 'PA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z %S"/>
+      <where>ISO2 = 'PG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'PY'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z%n%S"/>
+      <where>ISO2 = 'PE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%D, %C%n%Z %S"/>
+      <where>ISO2 = 'PH'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'PN'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'PL'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'PT'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C PR %Z"/>
+      <where>ISO2 = 'PR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'QA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'XK'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C %X"/>
+      <where>ISO2 = 'RE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'RO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%S%n%Z"/>
+      <where>ISO2 = 'RU'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'RW'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C %X"/>
+      <where>ISO2 = 'BL'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'SH'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C, %S"/>
+      <where>ISO2 = 'KN'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'LC'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C %X"/>
+      <where>ISO2 = 'MF'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C %X"/>
+      <where>ISO2 = 'PM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'VC'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'WS'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'SM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'ST'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z"/>
+      <where>ISO2 = 'SA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'SN'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'RS'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%S"/>
+      <where>ISO2 = 'SC'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'SL'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%nSINGAPORE %Z"/>
+      <where>ISO2 = 'SG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'SX'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'SK'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%nSI-%Z %C"/>
+      <where>ISO2 = 'SI'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'SB'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C, %S %Z"/>
+      <where>ISO2 = 'SO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%D%n%C%n%Z"/>
+      <where>ISO2 = 'ZA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%n%C%n%Z"/>
+      <where>ISO2 = 'GS'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%S %C%D%n%A %B%n%O%n%N%n%Z"/>
+      <where>ISO2 = 'KR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'SS'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C %S"/>
+      <where>ISO2 = 'ES'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'LK'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'SD'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%S"/>
+      <where>ISO2 = 'SR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'SJ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'SZ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%nSE-%Z %C"/>
+      <where>ISO2 = 'SE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%nCH-%Z %C"/>
+      <where>ISO2 = 'CH'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'SY'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%Z%n%S%C%n%A %B%n%O%n%N"/>
+      <where>ISO2 = 'TW'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'TJ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'TZ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%D %C%n%S %Z"/>
+      <where>ISO2 = 'TH'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'TL'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'TG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'TK'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'TO'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'TT'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'TN'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C/%S"/>
+      <where>ISO2 = 'TR'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'TM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%Z"/>
+      <where>ISO2 = 'TC'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%S"/>
+      <where>ISO2 = 'TV'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'UG'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%S%n%Z"/>
+      <where>ISO2 = 'UA'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%S"/>
+      <where>ISO2 = 'AE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%B, %A%n%C%n%Z"/>
+      <where>ISO2 = 'GB'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%B %A%n%C, %S %Z"/>
+      <where>ISO2 = 'US'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C %S"/>
+      <where>ISO2 = 'UY'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C%n%S"/>
+      <where>ISO2 = 'UZ'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'VU'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C %Z, %S"/>
+      <where>ISO2 = 'VE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C%n%S %Z"/>
+      <where>ISO2 = 'VN'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%O%n%N%n%A %B%n%Z %C %X"/>
+      <where>ISO2 = 'WF'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'EH'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'YE'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%Z %C"/>
+      <where>ISO2 = 'ZM'</where>
+    </update>
+    <update tableName="AB_COUNTRYINFO">
+      <column name="ADDR_FORMAT" value="%N%n%O%n%A %B%n%C"/>
+      <where>ISO2 = 'ZW'</where>
+    </update>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Visit/add_VisitPlanEntry.xml b/.liquibase/Data_alias/basic/2021.0.0/Visit/add_VisitPlanEntry.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d43b906d7fd2e768d5178348fc5cc29d09b5d0ec
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Visit/add_VisitPlanEntry.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="c.wimmer" id="d49486a1-a935-49dd-886c-04c5be4d529e">
+    <addColumn tableName="VISITPLANENTRY">
+            <column name="STATUS_APPOINTMENT" type="VARCHAR(36)"/>
+        </addColumn>
+  </changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Visit/add_VisitrecommendationStatus.xml b/.liquibase/Data_alias/basic/2021.0.0/Visit/add_VisitrecommendationStatus.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a2bd036c1d4146eca31052f506caf7d3474ea35e
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Visit/add_VisitrecommendationStatus.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="c.wimmer" id="e4ab868a-6072-483c-abb3-db83ce162575">
+        <addColumn tableName="VISITRECOMMENDATION">
+            <column name="STATUS" type="CHAR(36)"/>
+	</addColumn>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Visit/alter_VisitrecommendationpriorityUserNewResp.xml b/.liquibase/Data_alias/basic/2021.0.0/Visit/alter_VisitrecommendationpriorityUserNewResp.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c57e89387fb5f69f801d86e9110b7de0eca76700
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Visit/alter_VisitrecommendationpriorityUserNewResp.xml
@@ -0,0 +1,11 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="c.wimmer" id="c994f27c-c773-41f3-b467-aa11e27f1142">
+         <addColumn tableName="VISITRECOMMENDATION">
+            <column name="USER_NEW" type="NVARCHAR(50)"/>
+            <column name="CONTACT_PERSON_ID" type="CHAR(36)"/>
+            <column name="RESPONSIBLE" type="CHAR(36)"/>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Visit/changelog.xml b/.liquibase/Data_alias/basic/2021.0.0/Visit/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d6346a774dad2b61c9236231ed90636d636123c6
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Visit/changelog.xml
@@ -0,0 +1,11 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <include relativeToChangelogFile="true" file="alter_VisitrecommendationpriorityUserNewResp.xml"/>
+    <include relativeToChangelogFile="true" file="insert_VisitFrequencyAttributeUsagePers.xml"/>
+    <include relativeToChangelogFile="true" file="insert_VisitPlanningAttribute.xml"/> 
+    <include relativeToChangelogFile="true" file="insert_VisitPlanEntryStatusAppointment.xml"/> 
+    <include relativeToChangelogFile="true" file="add_VisitPlanEntry.xml"/> 
+    <include relativeToChangelogFile="true" file="add_VisitrecommendationStatus.xml"/> 
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Visit/insert_VisitFrequencyAttributeUsagePers.xml b/.liquibase/Data_alias/basic/2021.0.0/Visit/insert_VisitFrequencyAttributeUsagePers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ac24208cb27c163c81216f8002a6766eeed109a3
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Visit/insert_VisitFrequencyAttributeUsagePers.xml
@@ -0,0 +1,12 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="c.wimmer" id="077aed97-bd93-4062-be37-78d306c4b4c6">
+        <insert tableName="AB_ATTRIBUTEUSAGE">
+              <column name="AB_ATTRIBUTEUSAGEID" value="23897e8d-00d5-45ff-86c7-391db0bd5cf4"/>
+              <column name="AB_ATTRIBUTE_ID" value="547b8b9d-88ba-4590-9e01-34d2a58116cc"/>
+              <column name="MAX_COUNT" valueNumeric="1"/>
+              <column name="OBJECT_TYPE" value="Person"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Visit/insert_VisitPlanEntryStatusAppointment.xml b/.liquibase/Data_alias/basic/2021.0.0/Visit/insert_VisitPlanEntryStatusAppointment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1319607baf5a5a22557f3482af094dba289f93bc
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Visit/insert_VisitPlanEntryStatusAppointment.xml
@@ -0,0 +1,25 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="c.wimmer" id="b1bd94b5-5cef-450d-a1a3-c510984373e0">
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="70f352e7-81dc-4d44-9f12-30bfc2cc39f1"/>
+            <column name="KEYID" value="VISITSTATUSAPPOINTMENTREQUESTED"/>
+            <column name="TITLE" value="requested"/>
+            <column name="CONTAINER" value="VisitPlanEntryStatusAppointment"/>
+            <column name="SORTING" valueNumeric="0"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="1"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="1b6b5070-8028-42f9-abfd-ee64142801d1"/>
+            <column name="KEYID" value="VISITSTATUSAPPOINTMENTCONFIRMED"/>
+            <column name="TITLE" value="confirmed"/>
+            <column name="CONTAINER" value="VisitPlanEntryStatusAppointment"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="1"/>
+        </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/Visit/insert_VisitPlanningAttribute.xml b/.liquibase/Data_alias/basic/2021.0.0/Visit/insert_VisitPlanningAttribute.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2fe3d6a38c8943ff591145dda9f1e34a99760de7
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/Visit/insert_VisitPlanningAttribute.xml
@@ -0,0 +1,63 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="c.wimmer" id="f03c2c38-bf5d-411a-9b77-3050771d91f9">
+        <delete tableName="AB_ATTRIBUTE">
+                <where>AB_ATTRIBUTEID = ?</where>
+                <whereParams>
+                    <param value="59377864-0745-4a18-8d7b-57a0491a8116" />
+                </whereParams>
+            </delete>
+        <insert tableName="AB_ATTRIBUTE">
+            <column name="AB_ATTRIBUTEID" value="59377864-0745-4a18-8d7b-57a0491a8116"/>
+            <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+            <column name="ATTRIBUTE_NAME" value="Visit Planning"/>
+            <column name="ATTRIBUTE_TYPE" value="GROUP"/>
+        </insert>
+        <insert tableName="AB_ATTRIBUTE">
+            <column name="AB_ATTRIBUTEID" value="e8770b60-160c-466e-af57-4f90bd6e02d7"/>
+            <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+            <column name="ATTRIBUTE_NAME" value="Maturity"/>
+            <column name="ATTRIBUTE_PARENT_ID" value="59377864-0745-4a18-8d7b-57a0491a8116"/>
+            <column name="ATTRIBUTE_TYPE" value="COMBO                               "/>
+        </insert>
+        <insert tableName="AB_ATTRIBUTE">
+            <column name="AB_ATTRIBUTEID" value="5dd9a89d-2357-4ca7-910c-4365fd338603"/>
+            <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+            <column name="ATTRIBUTE_NAME" value="2 Weeks"/>
+            <column name="ATTRIBUTE_PARENT_ID" value="e8770b60-160c-466e-af57-4f90bd6e02d7"/>
+            <column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+            <column name="SORTING" valueNumeric="1"/>
+        </insert>
+        <insert tableName="AB_ATTRIBUTE">
+            <column name="AB_ATTRIBUTEID" value="b0eeed9b-38a5-44b9-8fdf-dd03493380b8"/>
+            <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+            <column name="ATTRIBUTE_NAME" value="1 Month"/>
+            <column name="ATTRIBUTE_PARENT_ID" value="e8770b60-160c-466e-af57-4f90bd6e02d7"/>
+            <column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+            <column name="SORTING" valueNumeric="2"/>
+        </insert>
+        <insert tableName="AB_ATTRIBUTE">
+            <column name="AB_ATTRIBUTEID" value="e7ece5ea-f1f3-47de-b11a-479183e5e95a"/>
+            <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+            <column name="ATTRIBUTE_NAME" value="6 Months"/>
+            <column name="ATTRIBUTE_PARENT_ID" value="e8770b60-160c-466e-af57-4f90bd6e02d7"/>
+            <column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+            <column name="SORTING" valueNumeric="3"/>
+        </insert>
+        <insert tableName="AB_ATTRIBUTE">
+            <column name="AB_ATTRIBUTEID" value="49dc2a73-a58a-45b7-95d3-ce2ff21326fd"/>
+            <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+            <column name="ATTRIBUTE_NAME" value="12 Months"/>
+            <column name="ATTRIBUTE_PARENT_ID" value="e8770b60-160c-466e-af57-4f90bd6e02d7"/>
+            <column name="ATTRIBUTE_TYPE" value="COMBOVALUE                          "/>
+            <column name="SORTING" valueNumeric="4"/>
+        </insert>
+        <insert tableName="AB_ATTRIBUTEUSAGE">
+            <column name="AB_ATTRIBUTEUSAGEID" value="ace9e8ea-b586-4299-92ea-b12fce72e4d9"/>
+            <column name="AB_ATTRIBUTE_ID" value="e8770b60-160c-466e-af57-4f90bd6e02d7"/>
+            <column name="MAX_COUNT" valueNumeric="1"/>
+            <column name="OBJECT_TYPE" value="Person"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2021.0.0/alter_Order_info.xml b/.liquibase/Data_alias/basic/2021.0.0/alter_Order_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1f503a3bb62e08a11a872c5ab24e43fd2d0da0ee
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.0.0/alter_Order_info.xml
@@ -0,0 +1,10 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="Pierre und Imen" id="46a01232-99c9-4de6-b74b-9a9e650fc034">
+        <addColumn tableName="SALESORDER">
+            <column name="INFO" type="VARCHAR(255)"/>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.0.0/changelog.xml b/.liquibase/Data_alias/basic/2021.0.0/changelog.xml
index 9304490f2c8571ffd7bd66778a6f2df93f8c2c41..0ec02e0b5db5b6b0b60aab7a420a17abffe5f3c2 100644
--- a/.liquibase/Data_alias/basic/2021.0.0/changelog.xml
+++ b/.liquibase/Data_alias/basic/2021.0.0/changelog.xml
@@ -1,5 +1,14 @@
 <?xml version="1.1" encoding="UTF-8" standalone="no"?>
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-    <include relativeToChangelogFile="true" file="Keywords/changelog.xml"/>
-</databaseChangeLog>
+    <include relativeToChangelogFile="true" file="Observation/changelog.xml"/>      
+    <include relativeToChangelogFile="true" file="Classification/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="Visit/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="UpdateAddrFormats.xml"/>
+    <include relativeToChangelogFile="true" file="Address/addLatLonIndizes.xml"/>
+    <include relativeToChangelogFile="true" file="District/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="alter_Order_info.xml"/>
+    <include relativeToChangelogFile="true" file="MissingIndizes/add_MissingIndizes.xml"/>
+    <include relativeToChangelogFile="true" file="SalesprojectConversion/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="Checklists/changelog.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/ab_attributerelation.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/ab_attributerelation.xml
index 68c4a24099c21895e4346ab23dde9434ae87272d..e907f2c437ccfbdbff604cd378c451afe6dab379 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/ab_attributerelation.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/ab_attributerelation.xml
@@ -7,7 +7,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="0563ec4f-6f85-469d-89a1-5fc807f4dc9f"/>
       <column name="AB_ATTRIBUTE_ID" value="3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="13e60843-5d6d-45ee-88c7-46db41874138"/>
+      <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:45:34"/>
       <column name="ID_VALUE" value="DELIVERCIF"/>
     </insert>
@@ -25,7 +25,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="086ff454-e407-433a-9124-496de7fef1cb"/>
       <column name="AB_ATTRIBUTE_ID" value="97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="97b66b3c-a9f5-4dc4-902e-850d69973d1d"/>
+      <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:45:09"/>
       <column name="ID_VALUE" value="PRICELISTSPECIAL"/>
     </insert>
@@ -34,7 +34,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="0a1aabd7-4faf-4a82-9a85-3351add5b357"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="692e1f81-9f05-4e22-b74d-56d34c671067"/>
+      <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
       <column name="DATE_NEW" valueDate="2019-05-23T10:54:10"/>
       <column name="ID_VALUE" value="acafca42-8ef4-4c21-abe8-1c2ca358a5aa"/>
     </insert>
@@ -43,7 +43,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="12a0bb2a-9b6c-4282-9209-2dc90d726fc2"/>
       <column name="AB_ATTRIBUTE_ID" value="f11f65d0-4352-4f81-85d0-bfd034275e34"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="22f1ca45-e633-4080-9d5c-9a8c2e06d3f9"/>
+      <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:47:54"/>
       <column name="ID_VALUE" value="292825e8-fa96-4b7b-8dab-71955ae14571"/>
     </insert>
@@ -61,7 +61,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="1505bacf-c29a-48a7-8da5-5e969252309f"/>
       <column name="AB_ATTRIBUTE_ID" value="71226196-2812-4d70-b90f-c3e2c14fd4d1"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="a5d107ac-f796-430e-a686-5a132f96650b"/>
+      <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:51:07"/>
       <column name="ID_VALUE" value="SALPROJWEAKLIQUIDITY"/>
     </insert>
@@ -79,7 +79,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="2261ef33-50af-445a-bc19-27367cc6ff7a"/>
       <column name="AB_ATTRIBUTE_ID" value="71226196-2812-4d70-b90f-c3e2c14fd4d1"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="756662b5-f5e4-479c-8d97-abd6a395bd79"/>
+      <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:44:08"/>
       <column name="ID_VALUE" value="SALPROJWEAKMARKET"/>
     </insert>
@@ -96,7 +96,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="255571a4-2fda-49ec-baed-ea7b374895f1"/>
       <column name="AB_ATTRIBUTE_ID" value="97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="82c7b72d-da4e-4fab-a6cc-31e1be07dd08"/>
+      <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:49:39"/>
       <column name="ID_VALUE" value="PRICELISTSPECIAL"/>
     </insert>
@@ -105,7 +105,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="25a53e28-d8a1-43d3-9af0-b34ce9c0bc06"/>
       <column name="AB_ATTRIBUTE_ID" value="97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:52:25"/>
       <column name="ID_VALUE" value="PRICELISTSPECIAL"/>
     </insert>
@@ -114,7 +114,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="25dac52d-de7e-47e1-b60c-22d252dae4c2"/>
       <column name="AB_ATTRIBUTE_ID" value="292fae38-6557-466d-8843-3b1b4a1f6599"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="22f1ca45-e633-4080-9d5c-9a8c2e06d3f9"/>
+      <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:47:46"/>
       <column name="ID_VALUE" value="PAYTERM7"/>
     </insert>
@@ -123,7 +123,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="2d80654e-3bd5-46bb-af0b-f18f812d11e0"/>
       <column name="AB_ATTRIBUTE_ID" value="71226196-2812-4d70-b90f-c3e2c14fd4d1"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="22f1ca45-e633-4080-9d5c-9a8c2e06d3f9"/>
+      <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:47:37"/>
       <column name="ID_VALUE" value="SALPROJWEAKMARKET"/>
     </insert>
@@ -132,7 +132,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="2e456151-e59d-4d37-85cc-6e4b4054c8fe"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="62175b31-b432-4ec6-932f-8e69033884c6"/>
+      <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:21:26"/>
       <column name="ID_VALUE" value="617da3f5-d8bc-45ff-85a1-258621ea2a0b"/>
     </insert>
@@ -141,7 +141,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="3253baa7-06ea-4458-b7c1-36907321d025"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:24:42"/>
       <column name="ID_VALUE" value="9882c4bc-a3d9-43a9-8238-81ef39387869"/>
     </insert>
@@ -159,7 +159,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="3a32b8d5-1770-49cd-ae41-5b02f792ac6a"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="ea07af40-4918-4ea2-94ad-031d01aeaab4"/>
+      <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:46:58"/>
       <column name="ID_VALUE" value="26385e16-6b2f-428c-9c28-1bfa9c2ccf6f"/>
     </insert>
@@ -168,7 +168,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="3acc3d04-5212-4510-b88c-5885db940fec"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-15T03:21:35"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -186,7 +186,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="3e119bed-4330-4519-bf98-73b7edc8a404"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="97b66b3c-a9f5-4dc4-902e-850d69973d1d"/>
+      <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:18:11"/>
       <column name="ID_VALUE" value="acafca42-8ef4-4c21-abe8-1c2ca358a5aa"/>
     </insert>
@@ -195,7 +195,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="3e91603c-813c-43f9-964f-90e566cbc042"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="a5d107ac-f796-430e-a686-5a132f96650b"/>
+      <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:27:34"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -222,7 +222,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="4475ef06-83ab-4dff-91e1-be7053e004fa"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:27:08"/>
       <column name="ID_VALUE" value="c85a5ebe-80fe-4176-a92a-35d2200baa07"/>
     </insert>
@@ -231,7 +231,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="44bd5ab6-0b4f-4655-a276-ed172240643b"/>
       <column name="AB_ATTRIBUTE_ID" value="292fae38-6557-466d-8843-3b1b4a1f6599"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="756662b5-f5e4-479c-8d97-abd6a395bd79"/>
+      <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:43:59"/>
       <column name="ID_VALUE" value="PAYTERM30"/>
     </insert>
@@ -240,7 +240,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="4d65a707-7dec-44c1-9a06-3dbb3204059c"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-15T03:28:49"/>
       <column name="ID_VALUE" value="617da3f5-d8bc-45ff-85a1-258621ea2a0b"/>
     </insert>
@@ -249,7 +249,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="4de531e4-4e91-4362-b701-a76282e7b976"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="09281be8-8cb5-4201-9758-8c86b3d2bb85"/>
+      <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:19:47"/>
       <column name="ID_VALUE" value="79378933-9f74-4391-b876-4528b582661f"/>
     </insert>
@@ -258,7 +258,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="4ecfff5d-221a-4cf2-9498-fd24a11e4055"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="03e09527-21cc-489a-b37f-0dd7df553c20"/>
+      <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:22:05"/>
       <column name="ID_VALUE" value="9882c4bc-a3d9-43a9-8238-81ef39387869"/>
     </insert>
@@ -267,7 +267,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="509845c5-6b4a-4918-923d-75b1aef3a1f4"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="8f4f43e0-669b-4e1f-b050-42193f8d2998"/>
+      <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:26:46"/>
       <column name="ID_VALUE" value="c85a5ebe-80fe-4176-a92a-35d2200baa07"/>
     </insert>
@@ -276,7 +276,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="52b61d0c-3cbf-4e98-a126-786540c808c9"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="756662b5-f5e4-479c-8d97-abd6a395bd79"/>
+      <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:17:34"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -303,7 +303,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="593d0626-9049-43ca-b7bd-eb6c7327beed"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="b043cd42-058c-48bd-8326-4c92e0e74c48"/>
+      <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:51:53"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -330,7 +330,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="5d83b2c1-92b6-478d-a5b1-fdda3d35592d"/>
       <column name="AB_ATTRIBUTE_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="b043cd42-058c-48bd-8326-4c92e0e74c48"/>
+      <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:51:44"/>
       <column name="ID_VALUE" value="1d30d0ab-6103-4972-84c0-fd23eef15ca1"/>
     </insert>
@@ -348,7 +348,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="67f36d84-1997-4801-a4f6-94c9b8318e95"/>
       <column name="AB_ATTRIBUTE_ID" value="558419b2-6113-4060-b88d-cc6324754765"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="ea07af40-4918-4ea2-94ad-031d01aeaab4"/>
+      <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:47:08"/>
       <column name="ID_VALUE" value="SALPROJSTPRICEPOL"/>
     </insert>
@@ -357,7 +357,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="68b689b8-f9ff-40d1-b936-629985423ebb"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="a5d107ac-f796-430e-a686-5a132f96650b"/>
+      <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:27:34"/>
       <column name="ID_VALUE" value="79378933-9f74-4391-b876-4528b582661f"/>
     </insert>
@@ -366,7 +366,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="6907f00d-011d-4592-8f0e-26e52449658f"/>
       <column name="AB_ATTRIBUTE_ID" value="97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="03e09527-21cc-489a-b37f-0dd7df553c20"/>
+      <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:48:46"/>
       <column name="ID_VALUE" value="PRICELISTDEFAULT"/>
     </insert>
@@ -375,7 +375,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="69cb66c6-1d04-4029-8a20-0f6452bc4bf1"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="09281be8-8cb5-4201-9758-8c86b3d2bb85"/>
+      <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:19:47"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -393,7 +393,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="6e619f34-361d-48d7-868a-572848ab4463"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="82c7b72d-da4e-4fab-a6cc-31e1be07dd08"/>
+      <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:25:55"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -402,7 +402,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="6e8b96f9-de86-4dc1-b0c9-d5b99867d29c"/>
       <column name="AB_ATTRIBUTE_ID" value="292fae38-6557-466d-8843-3b1b4a1f6599"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="d3707591-5620-49a8-a63f-19e88ca7a21c"/>
+      <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:49:10"/>
       <column name="ID_VALUE" value="PAYTERMDISCOUNT"/>
     </insert>
@@ -411,7 +411,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="72cb6a41-def0-4a96-b8c1-56df885cf151"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="82c7b72d-da4e-4fab-a6cc-31e1be07dd08"/>
+      <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:25:55"/>
       <column name="ID_VALUE" value="617da3f5-d8bc-45ff-85a1-258621ea2a0b"/>
     </insert>
@@ -420,7 +420,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="76967a63-8322-484b-b603-d3cb5ce27d6d"/>
       <column name="AB_ATTRIBUTE_ID" value="8af37871-d407-4414-98ad-e64dbaa5794a"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-05-15T03:41:53"/>
       <column name="ID_VALUE" value="SALPROJPOLLOW"/>
     </insert>
@@ -429,7 +429,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="7a291363-9a75-4dd5-aa64-34a1801aeb92"/>
       <column name="AB_ATTRIBUTE_ID" value="292fae38-6557-466d-8843-3b1b4a1f6599"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-05-15T03:41:53"/>
       <column name="ID_VALUE" value="PAYTERM30"/>
     </insert>
@@ -438,7 +438,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="7a7736db-8b68-4865-a212-bd603af51370"/>
       <column name="AB_ATTRIBUTE_ID" value="8af37871-d407-4414-98ad-e64dbaa5794a"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-15T03:28:49"/>
       <column name="ID_VALUE" value="SALPROJPOLLOW"/>
     </insert>
@@ -447,7 +447,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="7a7e223f-a1f9-4503-b6e9-95e4f49c75c1"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-15T03:28:49"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -456,7 +456,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="7abc6537-b254-4a36-8315-2e44a5b10fad"/>
       <column name="AB_ATTRIBUTE_ID" value="8af37871-d407-4414-98ad-e64dbaa5794a"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="97b66b3c-a9f5-4dc4-902e-850d69973d1d"/>
+      <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:44:47"/>
       <column name="ID_VALUE" value="SALPROJPOLABO"/>
     </insert>
@@ -474,7 +474,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="7b38959d-d0b7-434a-9316-58d4894982d2"/>
       <column name="AB_ATTRIBUTE_ID" value="8af37871-d407-4414-98ad-e64dbaa5794a"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:52:18"/>
       <column name="ID_VALUE" value="SALPROJPOLABO"/>
     </insert>
@@ -483,7 +483,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="7e3d2c81-a9dd-4e82-a3e6-b26835c8ac46"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="22f1ca45-e633-4080-9d5c-9a8c2e06d3f9"/>
+      <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:20:55"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -501,7 +501,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="81dc88e3-3540-4675-a6d8-bca92cd91f84"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="aed65442-06aa-4cdc-b924-1d9728b444d3"/>
+      <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
       <column name="DATE_NEW" valueDate="2019-05-23T10:56:16"/>
       <column name="ID_VALUE" value="c85a5ebe-80fe-4176-a92a-35d2200baa07"/>
     </insert>
@@ -510,7 +510,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="84c93ae0-1821-40da-9eee-d180ce23cad5"/>
       <column name="AB_ATTRIBUTE_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-15T03:21:35"/>
       <column name="ID_VALUE" value="17746b46-2702-447a-b749-a92bfdf4bb38"/>
     </insert>
@@ -546,7 +546,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="8e474a2c-6adc-4f1d-88d8-217b0ddd592b"/>
       <column name="AB_ATTRIBUTE_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="756662b5-f5e4-479c-8d97-abd6a395bd79"/>
+      <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
       <column name="DATE_NEW" valueDate="2019-05-17T10:36:47"/>
       <column name="ID_VALUE" value="1d30d0ab-6103-4972-84c0-fd23eef15ca1"/>
     </insert>
@@ -564,7 +564,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="924e8914-6275-45d4-a36a-94f3b70a35b4"/>
       <column name="AB_ATTRIBUTE_ID" value="558419b2-6113-4060-b88d-cc6324754765"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:46:41"/>
       <column name="ID_VALUE" value="SALPROJSTPERSAPP"/>
     </insert>
@@ -582,7 +582,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="95513181-69ac-4775-860a-42730e370e38"/>
       <column name="AB_ATTRIBUTE_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="8f4f43e0-669b-4e1f-b050-42193f8d2998"/>
+      <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:50:03"/>
       <column name="ID_VALUE" value="e4a60941-513f-4e75-a787-f00070ecb00a"/>
     </insert>
@@ -591,7 +591,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="956d65fa-6c89-475b-9c85-3ce9265b4273"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="8f4f43e0-669b-4e1f-b050-42193f8d2998"/>
+      <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:26:46"/>
       <column name="ID_VALUE" value="79378933-9f74-4391-b876-4528b582661f"/>
     </insert>
@@ -600,7 +600,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="97429450-9cb5-4f8a-bd0f-c6c63c9afee9"/>
       <column name="AB_ATTRIBUTE_ID" value="71226196-2812-4d70-b90f-c3e2c14fd4d1"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="03e09527-21cc-489a-b37f-0dd7df553c20"/>
+      <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:48:40"/>
       <column name="ID_VALUE" value="SALPROJWEAKMARKET"/>
     </insert>
@@ -618,7 +618,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="9f7d0b52-0f03-4eb0-b0b2-e3751862a3a1"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="22f1ca45-e633-4080-9d5c-9a8c2e06d3f9"/>
+      <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:20:55"/>
       <column name="ID_VALUE" value="bb0c6356-33be-4e7c-a409-9ef5145f7aae"/>
     </insert>
@@ -627,7 +627,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="a433931c-412c-4a42-9a86-e5ca1e671a04"/>
       <column name="AB_ATTRIBUTE_ID" value="3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:51:25"/>
       <column name="ID_VALUE" value="DELIVEREX"/>
     </insert>
@@ -636,7 +636,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="a59304f1-2019-4191-a897-801747adb0e5"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="13e60843-5d6d-45ee-88c7-46db41874138"/>
+      <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
       <column name="DATE_NEW" valueDate="2019-05-17T10:01:27"/>
       <column name="ID_VALUE" value="79378933-9f74-4391-b876-4528b582661f"/>
     </insert>
@@ -654,7 +654,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="b2bb8ab7-0e64-49fc-8e18-372ec0a03822"/>
       <column name="AB_ATTRIBUTE_ID" value="558419b2-6113-4060-b88d-cc6324754765"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="8f4f43e0-669b-4e1f-b050-42193f8d2998"/>
+      <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:49:54"/>
       <column name="ID_VALUE" value="SALPROJSTPERSAPP"/>
     </insert>
@@ -681,7 +681,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="b45cc44c-77d2-4ba4-ae85-8b2046301a95"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="bd92680c-fb4b-4f9b-b434-da4fcee5b079"/>
+      <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:40:12"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -690,7 +690,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="b482cf64-0b8c-49a3-8894-b50635bc2db2"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="756662b5-f5e4-479c-8d97-abd6a395bd79"/>
+      <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:17:34"/>
       <column name="ID_VALUE" value="9882c4bc-a3d9-43a9-8238-81ef39387869"/>
     </insert>
@@ -699,7 +699,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="b9712ac0-cf76-47c1-b059-9d7498b6fa5c"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="bd92680c-fb4b-4f9b-b434-da4fcee5b079"/>
+      <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:40:12"/>
       <column name="ID_VALUE" value="9882c4bc-a3d9-43a9-8238-81ef39387869"/>
     </insert>
@@ -708,7 +708,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="c0a7430e-6393-4d1a-9954-b67e9d6cd73d"/>
       <column name="AB_ATTRIBUTE_ID" value="f11f65d0-4352-4f81-85d0-bfd034275e34"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="13e60843-5d6d-45ee-88c7-46db41874138"/>
+      <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:45:25"/>
       <column name="ID_VALUE" value="e7e05c6e-6108-44bd-824a-c076dfa5ae93"/>
     </insert>
@@ -717,7 +717,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="c7f04b7a-de66-4398-8810-2592d5ca8674"/>
       <column name="AB_ATTRIBUTE_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="09281be8-8cb5-4201-9758-8c86b3d2bb85"/>
+      <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:46:05"/>
       <column name="ID_VALUE" value="e4a60941-513f-4e75-a787-f00070ecb00a"/>
     </insert>
@@ -726,7 +726,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="c87cf142-382a-426a-a4d6-07b71b6d41ed"/>
       <column name="AB_ATTRIBUTE_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="a5d107ac-f796-430e-a686-5a132f96650b"/>
+      <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:50:59"/>
       <column name="ID_VALUE" value="1d30d0ab-6103-4972-84c0-fd23eef15ca1"/>
     </insert>
@@ -735,7 +735,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="cdab4a76-c6e6-4ffd-bae6-750128b6ed5d"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="97b66b3c-a9f5-4dc4-902e-850d69973d1d"/>
+      <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:18:12"/>
       <column name="ID_VALUE" value="c85a5ebe-80fe-4176-a92a-35d2200baa07"/>
     </insert>
@@ -744,7 +744,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="ce75da6e-b946-4a8c-a9dc-fb76cc20f0a1"/>
       <column name="AB_ATTRIBUTE_ID" value="292fae38-6557-466d-8843-3b1b4a1f6599"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:46:30"/>
       <column name="ID_VALUE" value="PAYTERM30"/>
     </insert>
@@ -753,7 +753,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="d4974b69-d5b9-4e4e-9f39-de34622765b1"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="13e60843-5d6d-45ee-88c7-46db41874138"/>
+      <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
       <column name="DATE_NEW" valueDate="2019-05-17T10:01:27"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -762,7 +762,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="d4a3c8a0-2050-4147-abad-43a1f35ccbf0"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-15T03:21:35"/>
       <column name="ID_VALUE" value="9882c4bc-a3d9-43a9-8238-81ef39387869"/>
     </insert>
@@ -780,7 +780,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="df4e0db2-dbcb-46c2-b3ec-b7689ff2f3ba"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="692e1f81-9f05-4e22-b74d-56d34c671067"/>
+      <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
       <column name="DATE_NEW" valueDate="2019-05-23T10:54:10"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -789,7 +789,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="e1beb5a9-acfa-4b7b-bc6d-735b1a669e10"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="b043cd42-058c-48bd-8326-4c92e0e74c48"/>
+      <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:28:14"/>
       <column name="ID_VALUE" value="79378933-9f74-4391-b876-4528b582661f"/>
     </insert>
@@ -798,7 +798,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="e303b295-01ae-4dd4-bad1-35a70c6dc90f"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="d3707591-5620-49a8-a63f-19e88ca7a21c"/>
+      <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:25:12"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -807,7 +807,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="e7ebccea-0850-4525-908c-040681de1bf4"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:24:42"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -816,7 +816,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="edddb76a-348d-497b-9665-21acbe0bed0b"/>
       <column name="AB_ATTRIBUTE_ID" value="71226196-2812-4d70-b90f-c3e2c14fd4d1"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="97b66b3c-a9f5-4dc4-902e-850d69973d1d"/>
+      <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:44:55"/>
       <column name="ID_VALUE" value="SALPROJWEAKMARKET"/>
     </insert>
@@ -825,7 +825,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="ee0027e1-8fa2-4550-96f7-59c32461e2b0"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="d3707591-5620-49a8-a63f-19e88ca7a21c"/>
+      <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:25:12"/>
       <column name="ID_VALUE" value="9882c4bc-a3d9-43a9-8238-81ef39387869"/>
     </insert>
@@ -834,7 +834,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="ef53917b-ae76-4903-a68a-ab0feb743288"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="03e09527-21cc-489a-b37f-0dd7df553c20"/>
+      <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:22:05"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -843,7 +843,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="f1f8c53a-46e9-40a9-8be2-8f0775cafa64"/>
       <column name="AB_ATTRIBUTE_ID" value="8af37871-d407-4414-98ad-e64dbaa5794a"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="82c7b72d-da4e-4fab-a6cc-31e1be07dd08"/>
+      <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:49:31"/>
       <column name="ID_VALUE" value="SALPROJPOLLOW"/>
     </insert>
@@ -861,7 +861,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="f5a05824-270c-4556-a992-e5af9491b734"/>
       <column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="ea07af40-4918-4ea2-94ad-031d01aeaab4"/>
+      <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:20:19"/>
       <column name="ID_VALUE" value="0a6cbbc0-bd0e-4794-96ef-3d458d5fdb70"/>
     </insert>
@@ -870,7 +870,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="f69ac4cd-7d18-47b4-994f-4fda20f2bc9f"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="aed65442-06aa-4cdc-b924-1d9728b444d3"/>
+      <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
       <column name="DATE_NEW" valueDate="2019-05-23T10:56:16"/>
       <column name="ID_VALUE" value="79378933-9f74-4391-b876-4528b582661f"/>
     </insert>
@@ -879,7 +879,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="f7824359-7f2c-4942-b959-465bf776ef7e"/>
       <column name="AB_ATTRIBUTE_ID" value="558419b2-6113-4060-b88d-cc6324754765"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="bd92680c-fb4b-4f9b-b434-da4fcee5b079"/>
+      <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:40:12"/>
       <column name="ID_VALUE" value="SALPROJSTPRICEPOL"/>
     </insert>
@@ -888,7 +888,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="f7a60ce6-39c5-43b6-a14d-24b838f541b9"/>
       <column name="AB_ATTRIBUTE_ID" value="8af37871-d407-4414-98ad-e64dbaa5794a"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="d3707591-5620-49a8-a63f-19e88ca7a21c"/>
+      <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:49:02"/>
       <column name="ID_VALUE" value="SALPROJPOLLOW"/>
     </insert>
@@ -897,7 +897,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="f9404e0f-48cc-4a2b-a4f7-d260fe4f6e07"/>
       <column name="AB_ATTRIBUTE_ID" value="f11f65d0-4352-4f81-85d0-bfd034275e34"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:52:10"/>
       <column name="ID_VALUE" value="292825e8-fa96-4b7b-8dab-71955ae14571"/>
     </insert>
@@ -906,7 +906,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="fedc492c-cc5d-48cb-a7ee-0cef061facec"/>
       <column name="AB_ATTRIBUTE_ID" value="292fae38-6557-466d-8843-3b1b4a1f6599"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="09281be8-8cb5-4201-9758-8c86b3d2bb85"/>
+      <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:45:57"/>
       <column name="ID_VALUE" value="PAYTERM30"/>
     </insert>
@@ -915,7 +915,7 @@
       <column name="AB_ATTRIBUTERELATIONID" value="fffb23a5-20a8-40d9-b05f-b2bb822f2db1"/>
       <column name="AB_ATTRIBUTE_ID" value="7e9927a4-41e4-426f-bddd-c3e9ee3b093e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-05-15T03:41:53"/>
       <column name="ID_VALUE" value="79378933-9f74-4391-b876-4528b582661f"/>
     </insert>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/ab_loghistory.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/ab_loghistory.xml
index 3f718d9b8395c2b9fe5424b2945387f2be98e4d6..935298d7a89d0a2736a4a8a517d4147ec7a0b02a 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/ab_loghistory.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/ab_loghistory.xml
@@ -248,7 +248,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="f355e4a9-c520-413d-ac93-2e2c100e5f8b"/>
       <column name="LOGTYPE" value="I"/>
-      <column name="DESCRIPTION" value="Activity Id: &quot;e265a424-b343-4bc1-b1cd-d40b9405ca12&quot;,&#10;Objekt: &quot;2c63e0de-f21c-474f-89d7-bff8ba1dbf43&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
+      <column name="DESCRIPTION" value="Activity Id: &quot;e265a424-b343-4bc1-b1cd-d40b9405ca12&quot;,&#10;Objekt: &quot;dec94545-2487-46d5-978d-26ee0fcf0f5f&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
       <column name="TABLENAME" value="ACTIVITYLINK"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="f1b02cad-2a68-45fb-9313-1983b83bb310"/>
@@ -743,7 +743,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="1224bcca-ac13-4aed-af29-5eb38ef567f5"/>
       <column name="LOGTYPE" value="I"/>
-      <column name="DESCRIPTION" value="Activity Id: &quot;d3e2acf7-ee1c-4b17-9cb6-e8e720d0cc0b&quot;,&#10;Objekt: &quot;f7b8f0c3-7702-4466-b502-d21fa4fa0010&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
+      <column name="DESCRIPTION" value="Activity Id: &quot;d3e2acf7-ee1c-4b17-9cb6-e8e720d0cc0b&quot;,&#10;Objekt: &quot;fc465f2f-803b-4a1f-b79d-7b466d7ecff4&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
       <column name="TABLENAME" value="ACTIVITYLINK"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="26f94d20-7f3a-4b3e-9655-fcf3e971ce1d"/>
@@ -905,7 +905,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="76b82ec8-bcb6-48be-8f2d-56f64ba45db2"/>
       <column name="LOGTYPE" value="I"/>
-      <column name="DESCRIPTION" value="Activity Id: &quot;9c22ba51-8a09-40f1-b6b8-9787fe43b141&quot;,&#10;Objekt: &quot;6a92df58-2b98-40da-ba6a-d0ddb1fde234&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
+      <column name="DESCRIPTION" value="Activity Id: &quot;9c22ba51-8a09-40f1-b6b8-9787fe43b141&quot;,&#10;Objekt: &quot;6efb4fab-64f9-4d8e-aa6f-a158d13fc273&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
       <column name="TABLENAME" value="ACTIVITYLINK"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="fedb7c1b-0a41-4dba-8abb-2e4af7b4ee2d"/>
@@ -941,7 +941,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="cd622430-d539-41a1-b18d-eb31d03dcff3"/>
       <column name="LOGTYPE" value="I"/>
-      <column name="DESCRIPTION" value="Objekt: &quot;2c63e0de-f21c-474f-89d7-bff8ba1dbf43&quot;,&#10;Task Id: &quot;46164eac-62d1-4dbb-a252-93ac49429855&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
+      <column name="DESCRIPTION" value="Objekt: &quot;dec94545-2487-46d5-978d-26ee0fcf0f5f&quot;,&#10;Task Id: &quot;46164eac-62d1-4dbb-a252-93ac49429855&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
       <column name="TABLENAME" value="TASKLINK"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="eca5c8cb-bd10-4425-b4bc-a2e50f2518b9"/>
@@ -986,7 +986,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="86c7423a-5db3-42a1-b26d-c03a902fb913"/>
       <column name="LOGTYPE" value="I"/>
-      <column name="DESCRIPTION" value="Activity Id: &quot;b8067a42-d059-4d86-88b0-485a194faa36&quot;,&#10;Objekt: &quot;2c63e0de-f21c-474f-89d7-bff8ba1dbf43&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
+      <column name="DESCRIPTION" value="Activity Id: &quot;b8067a42-d059-4d86-88b0-485a194faa36&quot;,&#10;Objekt: &quot;dec94545-2487-46d5-978d-26ee0fcf0f5f&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
       <column name="TABLENAME" value="ACTIVITYLINK"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="60c58962-9b76-4d22-855d-b0cf9ef388dc"/>
@@ -1051,7 +1051,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="9d97109c-d973-4c7a-8cb3-ec1e4e3d178b"/>
       <column name="LOGTYPE" value="I"/>
-      <column name="DESCRIPTION" value="Activity Id: &quot;c7c29526-3138-4264-8eb4-c6876797f8fe&quot;,&#10;Objekt: &quot;2c63e0de-f21c-474f-89d7-bff8ba1dbf43&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
+      <column name="DESCRIPTION" value="Activity Id: &quot;c7c29526-3138-4264-8eb4-c6876797f8fe&quot;,&#10;Objekt: &quot;dec94545-2487-46d5-978d-26ee0fcf0f5f&quot;,&#10;Art: &quot;Organisation&quot; eingefügt."/>
       <column name="TABLENAME" value="ACTIVITYLINK"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="9770d2f3-409c-4fab-a3df-4fd3dcd14693"/>
@@ -1191,7 +1191,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;mittel&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="756662b5-f5e4-479c-8d97-abd6a395bd79"/>
+      <column name="TABLENAMEID" value="449080f6-b714-4189-a261-37439d0d4010"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:17:34"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1200,7 +1200,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Maschinenbau&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="756662b5-f5e4-479c-8d97-abd6a395bd79"/>
+      <column name="TABLENAMEID" value="449080f6-b714-4189-a261-37439d0d4010"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:17:34"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1209,7 +1209,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Handel&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="97b66b3c-a9f5-4dc4-902e-850d69973d1d"/>
+      <column name="TABLENAMEID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:18:11"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1218,7 +1218,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;gross&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="97b66b3c-a9f5-4dc4-902e-850d69973d1d"/>
+      <column name="TABLENAMEID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:18:12"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1227,7 +1227,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;mittel&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="09281be8-8cb5-4201-9758-8c86b3d2bb85"/>
+      <column name="TABLENAMEID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:19:47"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1236,7 +1236,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Bauwesen&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="09281be8-8cb5-4201-9758-8c86b3d2bb85"/>
+      <column name="TABLENAMEID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:19:47"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1245,7 +1245,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;mittel&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="ea07af40-4918-4ea2-94ad-031d01aeaab4"/>
+      <column name="TABLENAMEID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:20:19"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1254,7 +1254,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Service&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="22f1ca45-e633-4080-9d5c-9a8c2e06d3f9"/>
+      <column name="TABLENAMEID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:20:55"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1263,7 +1263,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;mittel&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="22f1ca45-e633-4080-9d5c-9a8c2e06d3f9"/>
+      <column name="TABLENAMEID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:20:55"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1272,7 +1272,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Logistik&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="62175b31-b432-4ec6-932f-8e69033884c6"/>
+      <column name="TABLENAMEID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:21:26"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1281,7 +1281,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;mittel&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="62175b31-b432-4ec6-932f-8e69033884c6"/>
+      <column name="TABLENAMEID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:21:26"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1290,7 +1290,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;mittel&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="03e09527-21cc-489a-b37f-0dd7df553c20"/>
+      <column name="TABLENAMEID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:22:05"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1299,7 +1299,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Maschinenbau&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="03e09527-21cc-489a-b37f-0dd7df553c20"/>
+      <column name="TABLENAMEID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:22:05"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1308,7 +1308,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Maschinenbau&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="TABLENAMEID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:24:42"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1317,7 +1317,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;mittel&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="TABLENAMEID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:24:42"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1326,7 +1326,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Maschinenbau&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="d3707591-5620-49a8-a63f-19e88ca7a21c"/>
+      <column name="TABLENAMEID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:25:12"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1335,7 +1335,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;mittel&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="d3707591-5620-49a8-a63f-19e88ca7a21c"/>
+      <column name="TABLENAMEID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:25:13"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1344,7 +1344,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;mittel&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="82c7b72d-da4e-4fab-a6cc-31e1be07dd08"/>
+      <column name="TABLENAMEID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:25:55"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1353,7 +1353,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Logistik&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="82c7b72d-da4e-4fab-a6cc-31e1be07dd08"/>
+      <column name="TABLENAMEID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:25:55"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1362,7 +1362,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Bauwesen&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="8f4f43e0-669b-4e1f-b050-42193f8d2998"/>
+      <column name="TABLENAMEID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:26:46"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1380,7 +1380,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;gross&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="TABLENAMEID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:27:08"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1389,7 +1389,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Bauwesen&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="a5d107ac-f796-430e-a686-5a132f96650b"/>
+      <column name="TABLENAMEID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:27:34"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1398,7 +1398,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: &quot;mittel&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="a5d107ac-f796-430e-a686-5a132f96650b"/>
+      <column name="TABLENAMEID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:27:34"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1407,7 +1407,7 @@
       <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: &quot;Bauwesen&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="TABLENAMEID" value="b043cd42-058c-48bd-8326-4c92e0e74c48"/>
+      <column name="TABLENAMEID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
       <column name="DATE_NEW" valueDate="2019-11-26T06:28:14"/>
     </insert>
     <insert tableName="ab_loghistory">
@@ -1476,7 +1476,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="209dd881-57eb-429b-8144-8fd5e14ad1bb"/>
       <column name="LOGTYPE" value="I"/>
-      <column name="DESCRIPTION" value="Object 1 row Id: &quot;13e60843-5d6d-45ee-88c7-46db41874138&quot;,&#10;Object 2 row Id: &quot;2c63e0de-f21c-474f-89d7-bff8ba1dbf43&quot;,&#10;Object relation type 1: &quot;3cee0474-504f-43cc-844a-715f1a0db271&quot;,&#10;Object relation type 2: &quot;fa879afd-b2c5-4eee-9799-d63c6764b348&quot; eingefügt."/>
+      <column name="DESCRIPTION" value="Object 1 row Id: &quot;8707accf-b1fd-4bde-97b1-ab44b75f66f9&quot;,&#10;Object 2 row Id: &quot;dec94545-2487-46d5-978d-26ee0fcf0f5f&quot;,&#10;Object relation type 1: &quot;3cee0474-504f-43cc-844a-715f1a0db271&quot;,&#10;Object relation type 2: &quot;fa879afd-b2c5-4eee-9799-d63c6764b348&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_OBJECTRELATION"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="e94240b7-4492-43f8-8913-cd7ff6ea2892"/>
@@ -1485,7 +1485,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="64a91508-b375-4a40-8968-968309e5f781"/>
       <column name="LOGTYPE" value="I"/>
-      <column name="DESCRIPTION" value="Object 1 row Id: &quot;b043cd42-058c-48bd-8326-4c92e0e74c48&quot;,&#10;Object 2 row Id: &quot;2c63e0de-f21c-474f-89d7-bff8ba1dbf43&quot;,&#10;Object relation type 1: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot;,&#10;Object relation type 2: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot; eingefügt."/>
+      <column name="DESCRIPTION" value="Object 1 row Id: &quot;5a52304e-65e8-40ed-9aca-a76af6c8c3a0&quot;,&#10;Object 2 row Id: &quot;dec94545-2487-46d5-978d-26ee0fcf0f5f&quot;,&#10;Object relation type 1: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot;,&#10;Object relation type 2: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_OBJECTRELATION"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="8c09b724-5ff0-4869-add8-803097cd94aa"/>
@@ -1494,7 +1494,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="3dabb79a-1b4f-4977-a7ff-d92d7e1a1b1f"/>
       <column name="LOGTYPE" value="D"/>
-      <column name="DESCRIPTION" value="Object relation type 1: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot;,&#10;Object relation type 2: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot;,&#10;Object 1 row Id: &quot;b043cd42-058c-48bd-8326-4c92e0e74c48&quot;,&#10;Object 2 row Id: &quot;2c63e0de-f21c-474f-89d7-bff8ba1dbf43&quot; gelöscht."/>
+      <column name="DESCRIPTION" value="Object relation type 1: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot;,&#10;Object relation type 2: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot;,&#10;Object 1 row Id: &quot;5a52304e-65e8-40ed-9aca-a76af6c8c3a0&quot;,&#10;Object 2 row Id: &quot;dec94545-2487-46d5-978d-26ee0fcf0f5f&quot; gelöscht."/>
       <column name="TABLENAME" value="AB_OBJECTRELATION"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="8c09b724-5ff0-4869-add8-803097cd94aa"/>
@@ -1503,7 +1503,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="de5beb83-904d-4657-89db-4ba5a56b68f5"/>
       <column name="LOGTYPE" value="I"/>
-      <column name="DESCRIPTION" value="Object 1 row Id: &quot;62175b31-b432-4ec6-932f-8e69033884c6&quot;,&#10;Object 2 row Id: &quot;2c63e0de-f21c-474f-89d7-bff8ba1dbf43&quot;,&#10;Object relation type 1: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot;,&#10;Object relation type 2: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot; eingefügt."/>
+      <column name="DESCRIPTION" value="Object 1 row Id: &quot;a3fd3c23-12e1-4820-b76e-2cd70103d94d&quot;,&#10;Object 2 row Id: &quot;dec94545-2487-46d5-978d-26ee0fcf0f5f&quot;,&#10;Object relation type 1: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot;,&#10;Object relation type 2: &quot;0795a3cd-295b-421b-aed1-decc09b05362&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_OBJECTRELATION"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="47802bb5-7785-43ba-a860-6b494e8ef593"/>
@@ -1512,7 +1512,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="3e8db12d-58c7-41b1-aa83-4d3476b6e861"/>
       <column name="LOGTYPE" value="I"/>
-      <column name="DESCRIPTION" value="Object 1 row Id: &quot;97b66b3c-a9f5-4dc4-902e-850d69973d1d&quot;,&#10;Object 2 row Id: &quot;2c63e0de-f21c-474f-89d7-bff8ba1dbf43&quot;,&#10;Object relation type 1: &quot;c9b7ce6b-1100-46f6-8498-2da6ac24189e&quot;,&#10;Object relation type 2: &quot;259babbd-7827-44d4-b9ec-8245d27b5f70&quot; eingefügt."/>
+      <column name="DESCRIPTION" value="Object 1 row Id: &quot;019651a4-503e-4e06-aefd-e7e631bf3144&quot;,&#10;Object 2 row Id: &quot;dec94545-2487-46d5-978d-26ee0fcf0f5f&quot;,&#10;Object relation type 1: &quot;c9b7ce6b-1100-46f6-8498-2da6ac24189e&quot;,&#10;Object relation type 2: &quot;259babbd-7827-44d4-b9ec-8245d27b5f70&quot; eingefügt."/>
       <column name="TABLENAME" value="AB_OBJECTRELATION"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="2bd8678c-e621-4e22-b203-2d5d967422c0"/>
@@ -1559,7 +1559,7 @@
     <insert tableName="ab_loghistory">
       <column name="AB_LOGHISTORYID" value="0ae7a999-a5d3-4e04-b2a0-ffbf90588459"/>
       <column name="LOGTYPE" value="D"/>
-      <column name="DESCRIPTION" value="Activity Id: &quot;c7c29526-3138-4264-8eb4-c6876797f8fe&quot;,&#10;Objekt: &quot;2c63e0de-f21c-474f-89d7-bff8ba1dbf43&quot;,&#10;Art: &quot;Organisation&quot; gelöscht."/>
+      <column name="DESCRIPTION" value="Activity Id: &quot;c7c29526-3138-4264-8eb4-c6876797f8fe&quot;,&#10;Objekt: &quot;dec94545-2487-46d5-978d-26ee0fcf0f5f&quot;,&#10;Art: &quot;Organisation&quot; gelöscht."/>
       <column name="TABLENAME" value="ACTIVITYLINK"/>
       <column name="USER_NEW" value="Admin"/>
       <column name="TABLENAMEID" value="9770d2f3-409c-4fab-a3df-4fd3dcd14693"/>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/ab_objectrelation.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/ab_objectrelation.xml
index cca5228e40acf742f9b3c16e6c978ad3703d3f38..cb61f6138dee01989649ef4c2f0bde4ed3b56304 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/ab_objectrelation.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/ab_objectrelation.xml
@@ -5,9 +5,9 @@
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="259babbd-7827-44d4-b9ec-8245d27b5f70"/>
       <column name="AB_OBJECTRELATIONID" value="03c855e5-f236-4e39-b886-91832b3a53fb"/>
-      <column name="OBJECT2_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT2_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="AB_OBJECTRELATIONTYPE1" value="c9b7ce6b-1100-46f6-8498-2da6ac24189e"/>
-      <column name="OBJECT1_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT1_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
     </insert>
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="b3b85332-1c86-4cd8-a3b9-34c49c51f01a"/>
@@ -19,44 +19,44 @@
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="259babbd-7827-44d4-b9ec-8245d27b5f70"/>
       <column name="AB_OBJECTRELATIONID" value="2bd8678c-e621-4e22-b203-2d5d967422c0"/>
-      <column name="OBJECT2_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT2_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="AB_OBJECTRELATIONTYPE1" value="c9b7ce6b-1100-46f6-8498-2da6ac24189e"/>
-      <column name="OBJECT1_ROWID" value="97b66b3c-a9f5-4dc4-902e-850d69973d1d"/>
+      <column name="OBJECT1_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
     </insert>
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="47a9e611-79b6-46b6-b767-3a0dfed9d010"/>
       <column name="AB_OBJECTRELATIONID" value="390cd4d2-8231-4dbc-ac9d-0ea7aecc6ef6"/>
-      <column name="OBJECT2_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT2_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="AB_OBJECTRELATIONTYPE1" value="47a9e611-79b6-46b6-b767-3a0dfed9d010"/>
-      <column name="OBJECT1_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT1_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
     </insert>
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="0795a3cd-295b-421b-aed1-decc09b05362"/>
       <column name="AB_OBJECTRELATIONID" value="47802bb5-7785-43ba-a860-6b494e8ef593"/>
-      <column name="OBJECT2_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT2_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="AB_OBJECTRELATIONTYPE1" value="0795a3cd-295b-421b-aed1-decc09b05362"/>
-      <column name="OBJECT1_ROWID" value="62175b31-b432-4ec6-932f-8e69033884c6"/>
+      <column name="OBJECT1_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
     </insert>
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="fa879afd-b2c5-4eee-9799-d63c6764b348"/>
       <column name="AB_OBJECTRELATIONID" value="4c9bc7f3-c13b-4e55-9c23-012ba40196c9"/>
-      <column name="OBJECT2_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="AB_OBJECTRELATIONTYPE1" value="3cee0474-504f-43cc-844a-715f1a0db271"/>
-      <column name="OBJECT1_ROWID" value="d3707591-5620-49a8-a63f-19e88ca7a21c"/>
+      <column name="OBJECT1_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
     </insert>
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="e397b595-38ae-4365-908e-75ee388838eb"/>
       <column name="AB_OBJECTRELATIONID" value="5c545235-231f-4082-9e74-4ec4512eb98d"/>
-      <column name="OBJECT2_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT2_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="AB_OBJECTRELATIONTYPE1" value="9d4739ba-33b0-4e87-b281-561e2cbdd277"/>
       <column name="OBJECT1_ROWID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
     </insert>
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="47a9e611-79b6-46b6-b767-3a0dfed9d010"/>
       <column name="AB_OBJECTRELATIONID" value="63ecd05d-f2e5-4957-a496-96a87451a78f"/>
-      <column name="OBJECT2_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT2_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="AB_OBJECTRELATIONTYPE1" value="47a9e611-79b6-46b6-b767-3a0dfed9d010"/>
-      <column name="OBJECT1_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT1_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="090f6adc-c2b8-44b7-8c61-39dbb5660aa0"/>
@@ -68,30 +68,30 @@
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="fa879afd-b2c5-4eee-9799-d63c6764b348"/>
       <column name="AB_OBJECTRELATIONID" value="c8aa4abb-a274-43d6-a067-ee935c443bfb"/>
-      <column name="OBJECT2_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT2_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="AB_OBJECTRELATIONTYPE1" value="3cee0474-504f-43cc-844a-715f1a0db271"/>
-      <column name="OBJECT1_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT1_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
     </insert>
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="47a9e611-79b6-46b6-b767-3a0dfed9d010"/>
       <column name="AB_OBJECTRELATIONID" value="cfbbce3e-1c0d-4d05-9ccf-8232f7eaaf02"/>
-      <column name="OBJECT2_ROWID" value="62175b31-b432-4ec6-932f-8e69033884c6"/>
+      <column name="OBJECT2_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
       <column name="AB_OBJECTRELATIONTYPE1" value="47a9e611-79b6-46b6-b767-3a0dfed9d010"/>
-      <column name="OBJECT1_ROWID" value="97b66b3c-a9f5-4dc4-902e-850d69973d1d"/>
+      <column name="OBJECT1_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
     </insert>
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="259babbd-7827-44d4-b9ec-8245d27b5f70"/>
       <column name="AB_OBJECTRELATIONID" value="d4454686-8d4e-42d9-9df8-61f19c69ce93"/>
-      <column name="OBJECT2_ROWID" value="62175b31-b432-4ec6-932f-8e69033884c6"/>
+      <column name="OBJECT2_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
       <column name="AB_OBJECTRELATIONTYPE1" value="c9b7ce6b-1100-46f6-8498-2da6ac24189e"/>
-      <column name="OBJECT1_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT1_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="ab_objectrelation">
       <column name="AB_OBJECTRELATIONTYPE2" value="fa879afd-b2c5-4eee-9799-d63c6764b348"/>
       <column name="AB_OBJECTRELATIONID" value="e94240b7-4492-43f8-8913-cd7ff6ea2892"/>
-      <column name="OBJECT2_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT2_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="AB_OBJECTRELATIONTYPE1" value="3cee0474-504f-43cc-844a-715f1a0db271"/>
-      <column name="OBJECT1_ROWID" value="13e60843-5d6d-45ee-88c7-46db41874138"/>
+      <column name="OBJECT1_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
     </insert>
   </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/activitylink.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/activitylink.xml
index 51685d850add04ebcd58f6396a40af906c5f87b0..3621d28b4d2a747be8b92c2036a829bc1cbb556b 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/activitylink.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/activitylink.xml
@@ -15,7 +15,7 @@
       <column name="ACTIVITY_ID" value="94365b81-cddd-4f56-8379-7ba0a98840a4"/>
       <column name="ACTIVITYLINKID" value="01ff4193-d5b4-41eb-b2db-ea31e5ed7df4"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/>
     </insert>
     <insert tableName="activitylink">
@@ -39,7 +39,7 @@
       <column name="ACTIVITY_ID" value="ccbb8eef-5caa-4f6b-ad1e-dbb8ba171650"/>
       <column name="ACTIVITYLINKID" value="05ccef04-86cd-4b29-96b7-e106c015a82f"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-22T05:57:11"/>
     </insert>
     <insert tableName="activitylink">
@@ -47,7 +47,7 @@
       <column name="ACTIVITY_ID" value="8c88dd83-20cb-4601-b1e0-098f1aef8963"/>
       <column name="ACTIVITYLINKID" value="0aaad19f-daa1-44d3-b7df-cba2a88b2745"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-17T08:56:54"/>
     </insert>
     <insert tableName="activitylink">
@@ -87,7 +87,7 @@
       <column name="ACTIVITY_ID" value="dc0d01bc-6a8e-48cc-8ce0-58fc9d83af01"/>
       <column name="ACTIVITYLINKID" value="10aa8b38-509c-4385-bfe0-775ab92571a8"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-22T05:45:07"/>
     </insert>
     <insert tableName="activitylink">
@@ -95,7 +95,7 @@
       <column name="ACTIVITY_ID" value="a42f7cff-53e5-4515-aca2-49c5b4c46f69"/>
       <column name="ACTIVITYLINKID" value="10b9499b-2f14-4251-8001-ac9e838c59a8"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-17T07:55:56"/>
     </insert>
     <insert tableName="activitylink">
@@ -151,7 +151,7 @@
       <column name="ACTIVITY_ID" value="9f498736-c523-4c63-8c53-28e49324b52b"/>
       <column name="ACTIVITYLINKID" value="20a50d5d-fe87-4ed2-8f94-b2571b6b34e7"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/>
     </insert>
     <insert tableName="activitylink">
@@ -167,7 +167,7 @@
       <column name="ACTIVITY_ID" value="d6ee3c57-1a49-45d2-8d09-d1480ad3e159"/>
       <column name="ACTIVITYLINKID" value="26b0f97e-30fc-4808-85a1-5d95cd5f6b34"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:56:37"/>
     </insert>
     <insert tableName="activitylink">
@@ -175,7 +175,7 @@
       <column name="ACTIVITY_ID" value="d3e2acf7-ee1c-4b17-9cb6-e8e720d0cc0b"/>
       <column name="ACTIVITYLINKID" value="26f94d20-7f3a-4b3e-9655-fcf3e971ce1d"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-11-15T08:46:21"/>
     </insert>
     <insert tableName="activitylink">
@@ -191,7 +191,7 @@
       <column name="ACTIVITY_ID" value="aaf320cd-b849-4062-a3b4-e6636230c114"/>
       <column name="ACTIVITYLINKID" value="2de91976-7c5e-4676-87e6-1869381235b0"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-23T10:51:56"/>
     </insert>
     <insert tableName="activitylink">
@@ -199,7 +199,7 @@
       <column name="ACTIVITY_ID" value="502167d7-8946-41bb-9353-8bafde8c7b09"/>
       <column name="ACTIVITYLINKID" value="2e4494d3-0160-4e9a-a78a-54884dd465f7"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-06-11T02:41:00"/>
     </insert>
     <insert tableName="activitylink">
@@ -225,7 +225,7 @@
       <column name="ACTIVITY_ID" value="84136771-b2ea-4ad6-a6f7-a08ed228581e"/>
       <column name="ACTIVITYLINKID" value="3385ac40-6f0e-45eb-bb71-ca3027325133"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-17T07:56:49"/>
     </insert>
     <insert tableName="activitylink">
@@ -281,7 +281,7 @@
       <column name="ACTIVITY_ID" value="8034de5b-48e7-4ca6-bfbf-db86395a4c59"/>
       <column name="ACTIVITYLINKID" value="4247ff5e-db95-4114-a1e6-21bbea86098e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-05-17T08:14:49"/>
     </insert>
     <insert tableName="activitylink">
@@ -289,7 +289,7 @@
       <column name="ACTIVITY_ID" value="810346d8-ab0e-4f1a-ae78-9f55efcadbe6"/>
       <column name="ACTIVITYLINKID" value="44ae4bcc-ccec-493c-a0db-32b136c450bc"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-15T05:07:31"/>
     </insert>
     <insert tableName="activitylink">
@@ -305,7 +305,7 @@
       <column name="ACTIVITY_ID" value="1c711078-8324-4fcf-93ec-2c8aa29c0cc6"/>
       <column name="ACTIVITYLINKID" value="46d9d317-1b7d-4046-8278-9a4957cc1dfe"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/>
     </insert>
     <insert tableName="activitylink">
@@ -337,7 +337,7 @@
       <column name="ACTIVITY_ID" value="86bd08ed-38ca-42bb-af5b-2bcfb9d3ee1b"/>
       <column name="ACTIVITYLINKID" value="4c526e91-a6b1-4d53-8ecc-a79418c81941"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-15T05:03:18"/>
     </insert>
     <insert tableName="activitylink">
@@ -417,7 +417,7 @@
       <column name="ACTIVITY_ID" value="a586aba1-0880-4705-9d2a-46b19cbdb954"/>
       <column name="ACTIVITYLINKID" value="565f3c19-3a81-4af6-b2ae-5b4fdccb87eb"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-23T09:30:34"/>
     </insert>
     <insert tableName="activitylink">
@@ -441,7 +441,7 @@
       <column name="ACTIVITY_ID" value="21852330-9c66-42a3-9d25-d053833f146d"/>
       <column name="ACTIVITYLINKID" value="5a4672ac-99ff-4a2e-a4ca-aad217bef144"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-15T05:22:44"/>
     </insert>
     <insert tableName="activitylink">
@@ -449,7 +449,7 @@
       <column name="ACTIVITY_ID" value="661a7b87-68ae-4d52-bc22-6bf96184e6fe"/>
       <column name="ACTIVITYLINKID" value="5a4d249a-e3e4-48e5-80a5-2fd1567a82b8"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/>
     </insert>
     <insert tableName="activitylink">
@@ -457,7 +457,7 @@
       <column name="ACTIVITY_ID" value="b378876d-dba5-4e41-865f-9ac056bffa60"/>
       <column name="ACTIVITYLINKID" value="5ad45b3e-72a0-419e-a183-17aaead38158"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/>
     </insert>
     <insert tableName="activitylink">
@@ -473,7 +473,7 @@
       <column name="ACTIVITY_ID" value="b8067a42-d059-4d86-88b0-485a194faa36"/>
       <column name="ACTIVITYLINKID" value="60c58962-9b76-4d22-855d-b0cf9ef388dc"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-11-15T11:05:25"/>
     </insert>
     <insert tableName="activitylink">
@@ -513,7 +513,7 @@
       <column name="ACTIVITY_ID" value="beda92e0-bbd6-423a-8b49-78da30064e84"/>
       <column name="ACTIVITYLINKID" value="6c212e64-a9db-4395-a118-5279dbc6761d"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/>
     </insert>
     <insert tableName="activitylink">
@@ -553,7 +553,7 @@
       <column name="ACTIVITY_ID" value="325d38fe-e0e8-44b7-b67c-279fcba6a7bd"/>
       <column name="ACTIVITYLINKID" value="75b42e7c-4748-41ca-9a23-3436b55cadf6"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-17T09:00:40"/>
     </insert>
     <insert tableName="activitylink">
@@ -561,7 +561,7 @@
       <column name="ACTIVITY_ID" value="e2d3cde4-e214-4cef-ae5a-d52da5633094"/>
       <column name="ACTIVITYLINKID" value="769721cc-a526-4e61-989f-71296085e7df"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-15T05:14:26"/>
     </insert>
     <insert tableName="activitylink">
@@ -569,7 +569,7 @@
       <column name="ACTIVITY_ID" value="5fcb8c51-22da-49ec-83c4-d47c296c77a7"/>
       <column name="ACTIVITYLINKID" value="777ed544-bcb2-43b2-914f-31bfa684e5c3"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-05-17T08:11:53"/>
     </insert>
     <insert tableName="activitylink">
@@ -585,7 +585,7 @@
       <column name="ACTIVITY_ID" value="7a058394-b360-41e0-aaea-6a3ca625f0d3"/>
       <column name="ACTIVITYLINKID" value="7a4b1e70-1773-4529-8506-3243c9349ebc"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-19T08:54:52"/>
     </insert>
     <insert tableName="activitylink">
@@ -593,7 +593,7 @@
       <column name="ACTIVITY_ID" value="91f7f3c5-8f36-44a7-ba0b-503a05c81d3b"/>
       <column name="ACTIVITYLINKID" value="7f9cbd45-7ff0-4d7d-9412-58db6245f400"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-05-15T03:48:02"/>
     </insert>
     <insert tableName="activitylink">
@@ -601,7 +601,7 @@
       <column name="ACTIVITY_ID" value="6397161c-afed-40cf-a1bd-12e657054ce4"/>
       <column name="ACTIVITYLINKID" value="80d3de8f-fd86-401b-aeae-63b389b9310c"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/>
     </insert>
     <insert tableName="activitylink">
@@ -633,7 +633,7 @@
       <column name="ACTIVITY_ID" value="a416d1f7-553a-43b6-a084-021ad1f92dd9"/>
       <column name="ACTIVITYLINKID" value="869c8987-7239-4f61-a0dc-b2f9e83ab2db"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="62175b31-b432-4ec6-932f-8e69033884c6"/>
+      <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
       <column name="DATE_NEW" valueDate="2019-05-17T10:47:38"/>
     </insert>
     <insert tableName="activitylink">
@@ -657,7 +657,7 @@
       <column name="ACTIVITY_ID" value="2e2e733b-0d88-41aa-80c3-04dab338011a"/>
       <column name="ACTIVITYLINKID" value="8d136835-b822-49a2-a516-87d4af34e8e1"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-17T07:58:03"/>
     </insert>
     <insert tableName="activitylink">
@@ -665,7 +665,7 @@
       <column name="ACTIVITY_ID" value="5e95209e-0c7d-4c45-a5de-0d3ccdbc5f08"/>
       <column name="ACTIVITYLINKID" value="8d2ff9ea-5416-47ac-839f-3f7c7b517129"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-22T05:42:09"/>
     </insert>
     <insert tableName="activitylink">
@@ -673,7 +673,7 @@
       <column name="ACTIVITY_ID" value="56c78f3d-e126-4e36-8031-d5eef9877243"/>
       <column name="ACTIVITYLINKID" value="8d384436-9989-4571-a193-cc3061249f97"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/>
     </insert>
     <insert tableName="activitylink">
@@ -681,7 +681,7 @@
       <column name="ACTIVITY_ID" value="107a18dd-94f1-4df4-8775-6016262951ef"/>
       <column name="ACTIVITYLINKID" value="918ec650-9e5a-430b-b6a7-d0f5e9780935"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-05-17T08:19:41"/>
     </insert>
     <insert tableName="activitylink">
@@ -689,7 +689,7 @@
       <column name="ACTIVITY_ID" value="7c89c987-2751-4d87-8d42-1ebbd7bdba7f"/>
       <column name="ACTIVITYLINKID" value="93c76b23-fc2c-4544-9e18-2422b2721860"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-05-17T08:16:16"/>
     </insert>
     <insert tableName="activitylink">
@@ -705,7 +705,7 @@
       <column name="ACTIVITY_ID" value="7fa61c35-0b88-4e01-aadf-73101245a2e8"/>
       <column name="ACTIVITYLINKID" value="94ed9437-9050-4358-975b-c07988c36117"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-23T10:50:27"/>
     </insert>
     <insert tableName="activitylink">
@@ -713,7 +713,7 @@
       <column name="ACTIVITY_ID" value="a01f1cc6-e588-451d-b22a-6dfe314fda51"/>
       <column name="ACTIVITYLINKID" value="9715d82b-5239-46c3-a651-fdc7ca4c1d0e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="62175b31-b432-4ec6-932f-8e69033884c6"/>
+      <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
       <column name="DATE_NEW" valueDate="2019-05-17T10:51:50"/>
     </insert>
     <insert tableName="activitylink">
@@ -753,7 +753,7 @@
       <column name="ACTIVITY_ID" value="62486e9e-52c6-476f-b1e3-5d62e3f6384e"/>
       <column name="ACTIVITYLINKID" value="9f20ee40-22b8-440a-93e3-749bc6d6e273"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-22T05:54:23"/>
     </insert>
     <insert tableName="activitylink">
@@ -761,7 +761,7 @@
       <column name="ACTIVITY_ID" value="ed70c795-2a72-40e4-bce7-13aca09da578"/>
       <column name="ACTIVITYLINKID" value="9f2616fb-7d78-44f6-9f5e-94ef5268dad4"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-23T08:57:56"/>
     </insert>
     <insert tableName="activitylink">
@@ -793,7 +793,7 @@
       <column name="ACTIVITY_ID" value="52462c82-d05f-4a73-9bac-4d9929d07436"/>
       <column name="ACTIVITYLINKID" value="a631ea8d-c09a-4bff-83ab-4573df6dbe4f"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-17T07:52:12"/>
     </insert>
     <insert tableName="activitylink">
@@ -809,7 +809,7 @@
       <column name="ACTIVITY_ID" value="d6038dc6-a28f-42ad-b17b-094adc98fd8a"/>
       <column name="ACTIVITYLINKID" value="aa944406-61f4-4044-9f69-51a42b270113"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-22T05:46:52"/>
     </insert>
     <insert tableName="activitylink">
@@ -833,7 +833,7 @@
       <column name="ACTIVITY_ID" value="9dda39bf-966c-4560-be03-5ddbbc1da84a"/>
       <column name="ACTIVITYLINKID" value="b0fae79b-0b1e-4650-8d94-853d17cca7bd"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/>
     </insert>
     <insert tableName="activitylink">
@@ -873,7 +873,7 @@
       <column name="ACTIVITY_ID" value="de110a33-bcab-407e-9d60-7a65f028159b"/>
       <column name="ACTIVITYLINKID" value="baa5a1da-39f2-48ae-93a5-bad704e5ae48"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/>
     </insert>
     <insert tableName="activitylink">
@@ -889,7 +889,7 @@
       <column name="ACTIVITY_ID" value="f38f8b69-7c10-4991-af8c-40dda43376f9"/>
       <column name="ACTIVITYLINKID" value="bc86224f-8266-4c8a-950b-b8cb9e1a5569"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-22T05:58:08"/>
     </insert>
     <insert tableName="activitylink">
@@ -929,7 +929,7 @@
       <column name="ACTIVITY_ID" value="e3be48af-e679-4b3a-972f-ad17239e3bb4"/>
       <column name="ACTIVITYLINKID" value="c3751fb7-ae77-402b-8716-3e3a477dc813"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-15T04:58:50"/>
     </insert>
     <insert tableName="activitylink">
@@ -945,7 +945,7 @@
       <column name="ACTIVITY_ID" value="e303e7e9-6d16-40cd-a7a9-7196d219d1de"/>
       <column name="ACTIVITYLINKID" value="c419929e-2b07-4cc4-9c7d-b0cf8b47b252"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-22T05:52:55"/>
     </insert>
     <insert tableName="activitylink">
@@ -961,7 +961,7 @@
       <column name="ACTIVITY_ID" value="de110a35-aaab-407e-9d60-7a65f028159b"/>
       <column name="ACTIVITYLINKID" value="caa5a1da-39f2-48ae-93a5-bad704e5ae48"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="06006801-c6a1-4321-9fde-95f9d3f9b786"/>
+      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
       <column name="DATE_NEW" valueDate="2019-05-13T01:16:36"/>
     </insert>
     <insert tableName="activitylink">
@@ -977,7 +977,7 @@
       <column name="ACTIVITY_ID" value="6fe97d41-b44a-42b8-b19d-3ed9ce1cc393"/>
       <column name="ACTIVITYLINKID" value="cfb3f5f6-c148-42c9-b86c-14900e8d30c9"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-17T08:54:10"/>
     </insert>
     <insert tableName="activitylink">
@@ -993,7 +993,7 @@
       <column name="ACTIVITY_ID" value="a867b04c-b2be-48ec-8108-1144a978f54a"/>
       <column name="ACTIVITYLINKID" value="d1cfe415-bf05-4ee0-98b6-56ba560a39b6"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-15T05:00:39"/>
     </insert>
     <insert tableName="activitylink">
@@ -1057,7 +1057,7 @@
       <column name="ACTIVITY_ID" value="d608cae4-7b54-4a12-95f3-5b9eac3d04ef"/>
       <column name="ACTIVITYLINKID" value="da68ccb2-09c8-4a63-9dc3-16bec0777ad6"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-15T03:53:44"/>
     </insert>
     <insert tableName="activitylink">
@@ -1105,7 +1105,7 @@
       <column name="ACTIVITY_ID" value="36ec539c-a451-4166-b64d-fb98f1b73481"/>
       <column name="ACTIVITYLINKID" value="e090084f-d2e4-42e5-b524-7e79dafcb78e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="62175b31-b432-4ec6-932f-8e69033884c6"/>
+      <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
       <column name="DATE_NEW" valueDate="2019-05-17T10:49:00"/>
     </insert>
     <insert tableName="activitylink">
@@ -1145,7 +1145,7 @@
       <column name="ACTIVITY_ID" value="81b4d02f-be0b-4437-b51d-d5c833adede4"/>
       <column name="ACTIVITYLINKID" value="e80cdefe-ff46-49f9-84ce-393882730337"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-06-11T02:30:33"/>
     </insert>
     <insert tableName="activitylink">
@@ -1153,7 +1153,7 @@
       <column name="ACTIVITY_ID" value="dcf266be-505d-4344-b091-6d9b01007a72"/>
       <column name="ACTIVITYLINKID" value="ef66f553-93f4-4df5-a97c-d7a93b57ae6a"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-17T08:00:17"/>
     </insert>
     <insert tableName="activitylink">
@@ -1161,7 +1161,7 @@
       <column name="ACTIVITY_ID" value="e265a424-b343-4bc1-b1cd-d40b9405ca12"/>
       <column name="ACTIVITYLINKID" value="f1b02cad-2a68-45fb-9313-1983b83bb310"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-11-13T11:06:51"/>
     </insert>
     <insert tableName="activitylink">
@@ -1169,7 +1169,7 @@
       <column name="ACTIVITY_ID" value="0cf02b72-a46a-4cd2-975f-15556618ea90"/>
       <column name="ACTIVITYLINKID" value="f20857e3-3191-4fdf-b803-9ffd1a0668d7"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-22T05:43:15"/>
     </insert>
     <insert tableName="activitylink">
@@ -1185,7 +1185,7 @@
       <column name="ACTIVITY_ID" value="26c4ccf9-a59d-483d-83a8-264b5fac219a"/>
       <column name="ACTIVITYLINKID" value="f37c2f14-27ce-4782-a7d4-c9f6d6fbcecd"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-23T09:28:27"/>
     </insert>
     <insert tableName="activitylink">
@@ -1193,7 +1193,7 @@
       <column name="ACTIVITY_ID" value="e2068edd-75cf-4b8a-8ff2-96a3c63956c2"/>
       <column name="ACTIVITYLINKID" value="f43ce26b-e728-41cd-9a93-745718b98972"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-05-23T10:49:12"/>
     </insert>
     <insert tableName="activitylink">
@@ -1217,7 +1217,7 @@
       <column name="ACTIVITY_ID" value="dd74c12b-44c5-4c58-a363-48333edd5538"/>
       <column name="ACTIVITYLINKID" value="f91f6e28-01f1-4b45-98f5-b0fb42ac3c38"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="f7b8f0c3-7702-4466-b502-d21fa4fa0010"/>
+      <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
       <column name="DATE_NEW" valueDate="2019-05-17T08:17:16"/>
     </insert>
     <insert tableName="activitylink">
@@ -1241,7 +1241,7 @@
       <column name="ACTIVITY_ID" value="0e62c5cf-7562-4c03-ae11-e6163acada9f"/>
       <column name="ACTIVITYLINKID" value="fb08245a-d14b-4a41-bfb3-973aa560d079"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-19T08:57:37"/>
     </insert>
     <insert tableName="activitylink">
@@ -1249,7 +1249,7 @@
       <column name="ACTIVITY_ID" value="b660824c-4336-4119-b5d3-5d0459764d86"/>
       <column name="ACTIVITYLINKID" value="fbd5ad75-92ac-48e2-ae11-d2f6e135123e"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
       <column name="DATE_NEW" valueDate="2019-05-23T09:07:02"/>
     </insert>
     <insert tableName="activitylink">
@@ -1257,7 +1257,7 @@
       <column name="ACTIVITY_ID" value="9c22ba51-8a09-40f1-b6b8-9787fe43b141"/>
       <column name="ACTIVITYLINKID" value="fedb7c1b-0a41-4dba-8abb-2e4af7b4ee2d"/>
       <column name="USER_NEW" value="Admin"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
       <column name="DATE_NEW" valueDate="2019-11-15T08:57:12"/>
     </insert>
     <insert tableName="activitylink">
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/classification.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/classification.xml
index a8fe8e687375d7e2b2c214668030e7c33d0a6a00..17afcac0e508742a6cc5879850aa8259ddc26247 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/classification.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/classification.xml
@@ -5,1787 +5,2026 @@
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
+      <column name="VALUE" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="0027e606-7932-4e40-9e20-43717b687a64"/>
       <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>    
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="008ac315-31ab-4320-bf29-6681708eda88"/>
       <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
+      <column name="VALUE" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="00c30050-c850-46b0-8e1d-d70f889655e3"/>
       <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b1c55bcd-16c6-4b2f-8f73-e16397b40e93"/>
+      <column name="VALUE" value="b1c55bcd-16c6-4b2f-8f73-e16397b40e93"/>
+      <column name="SCOREPOINTS" valueNumeric="30.00"/>
       <column name="CLASSIFICATIONID" value="028181fe-5687-4904-b7cb-c4a1befe7eed"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="ba5d70c3-e77a-45ff-828b-7b3e0a61eec2"/>
+      <column name="VALUE" value="ba5d70c3-e77a-45ff-828b-7b3e0a61eec2"/>
+      <column name="SCOREPOINTS" valueNumeric="30.00"/>
       <column name="CLASSIFICATIONID" value="02f2f9a4-0d34-472a-b8b2-461fad057c4e"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>    
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="0359b7b8-7526-4165-8b01-e90403b206eb"/>
       <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="29134094-66f2-4331-9f14-fc6a27ab111e"/>
+      <column name="VALUE" value="29134094-66f2-4331-9f14-fc6a27ab111e"/>  
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="03bb8bbb-0644-4376-99fb-b21fc2807f14"/>
       <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="0423c091-7e65-43eb-9ab3-f5a847350845"/>
       <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/>
+      <column name="VALUE" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/>    
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="045365c1-9561-4e4f-ad9b-9ce6ef0d0279"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="29134094-66f2-4331-9f14-fc6a27ab111e"/>
+      <column name="VALUE" value="29134094-66f2-4331-9f14-fc6a27ab111e"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="048a95bd-0a82-494d-b7fd-90f5d750f2c7"/>
       <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>
+      <column name="VALUE" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="051e9f0f-fc99-4046-90b9-6cfb403844e9"/>
       <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/>
+      <column name="VALUE" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="0521dd6e-49ca-4a3a-9906-12e8359e3db9"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/>
+      <column name="VALUE" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/>   
+      <column name="SCOREPOINTS" valueNumeric="50.00"/>
       <column name="CLASSIFICATIONID" value="053f18d1-8fe2-4a79-978d-03cc37454ffe"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>   
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="058a9ef7-adca-4278-840a-720665fa3cd3"/>
       <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="0759e286-007b-4568-b4d6-0542900d7ba1"/>
       <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>   
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="085d5901-9ab4-4747-a758-660d952a7a2c"/>
       <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>
+      <column name="VALUE" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>   
+      <column name="SCOREPOINTS" valueNumeric="12.50"/>
       <column name="CLASSIFICATIONID" value="0969044c-33eb-41eb-9aec-fa3795d8c49f"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="bf6b1757-11da-49a9-a02c-8340139968ee"/>
+      <column name="VALUE" value="bf6b1757-11da-49a9-a02c-8340139968ee"/>   
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="0a7ec07b-d429-4b0a-aebb-0a194e76428e"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> 
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="0f77577a-7a45-4c3f-be39-35ec364e8242"/>
       <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="f1534026-34cc-4898-8711-41cbe4accb60"/>
+      <column name="VALUE" value="f1534026-34cc-4898-8711-41cbe4accb60"/>
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="0fcfa75f-9844-49d7-a088-56e570be4cd0"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/>
+      <column name="VALUE" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/>  
+      <column name="SCOREPOINTS" valueNumeric="50.00"/>
       <column name="CLASSIFICATIONID" value="1180d429-0453-4b67-a805-7dc101e6ead2"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/>
+      <column name="VALUE" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="122116f6-e858-4605-af18-6c8b21da6455"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> 
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="12280a78-1bc8-411d-9556-57b6ea12343f"/>
       <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5564a330-8c13-424f-a24b-5f97185a9036"/>
+      <column name="VALUE" value="5564a330-8c13-424f-a24b-5f97185a9036"/>    
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="1249cfe4-d2cd-42c2-9df8-93b8f6c1f272"/>
       <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="35d8ae15-8993-4ab2-99f6-e57c2ebf0bb3"/>
+      <column name="VALUE" value="35d8ae15-8993-4ab2-99f6-e57c2ebf0bb3"/>
+      <column name="SCOREPOINTS" valueNumeric="33.00"/>
       <column name="CLASSIFICATIONID" value="13771cd8-3694-4a44-8793-cd0fc3fb4b53"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/>
+      <column name="VALUE" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/>  
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="13985a1a-1660-4a85-86c1-612bd62df8d7"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>      
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="13f634ef-70ba-440b-91af-e6324cdb20bb"/>
       <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>
+      <column name="VALUE" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>    
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="14148c9a-8afb-42ad-a4c5-d1102241e9f8"/>
       <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="14f31249-544a-46f9-a2e4-c3bdcf3e49a3"/>
       <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="e70a23b4-f2a9-4438-8ba6-742c6c17e5cc"/>
+      <column name="VALUE" value="e70a23b4-f2a9-4438-8ba6-742c6c17e5cc"/>
+      <column name="SCOREPOINTS" valueNumeric="12.50"/>
       <column name="CLASSIFICATIONID" value="166f3484-53a8-4c44-aad7-ef47a268ae71"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>
+      <column name="VALUE" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>    
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="1743c169-ef67-42b9-81af-99fc753d7a64"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>      
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="1897cf27-f472-4d25-88fe-64bd08915817"/>
       <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
+      <column name="VALUE" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>      
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="19cd3898-cb8e-4fa3-ade8-89cacb181b7d"/>
       <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>    
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="1a093afe-066e-4bbc-b6c9-b913ab8dfdc0"/>
       <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>  
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="1ac75382-0af9-42d2-8fe5-22295a93e8b3"/>
       <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>
+      <column name="VALUE" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="1af00ea1-11fe-49d7-8a21-29bee4f31991"/>
       <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>  
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="1dc7de76-80d9-4240-97ae-cab241301a68"/>
       <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="bf6b1757-11da-49a9-a02c-8340139968ee"/>
+      <column name="VALUE" value="bf6b1757-11da-49a9-a02c-8340139968ee"/>   
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="1ec41224-e21c-4adf-8b7c-235eca10801c"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>   
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="20092371-2723-45e2-aae0-3a697b1265fc"/>
       <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>   
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="203fb867-ee2f-4c01-8fb5-8e49da32be64"/>
       <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/>
+      <column name="VALUE" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="208c8324-e7f9-41b9-93ec-ac7e7f7262b7"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>  
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="218f1794-26e6-45f2-a26d-98185a49bf4f"/>
       <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="22429945-9c82-493c-a0a6-ff31ecaa4b56"/>
       <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>      
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="2314864a-76f7-4fe9-a01f-c5be6ba0669e"/>
       <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="6bd19de4-691b-4e78-84dc-cf6f41231978"/>
+      <column name="VALUE" value="6bd19de4-691b-4e78-84dc-cf6f41231978"/>
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="25bfa0ce-433a-4bb9-992c-df66b02a76da"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>  
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="2800c5de-2174-46fb-a50a-d5ae4a28c28d"/>
       <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="636af750-fcd3-4480-bfe7-ead42bf85280"/>
+      <column name="VALUE" value="636af750-fcd3-4480-bfe7-ead42bf85280"/>
+      <column name="SCOREPOINTS" valueNumeric="30.00"/>
       <column name="CLASSIFICATIONID" value="28405f79-a635-4ede-8b11-11284c5e7190"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> 
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="289cea03-2c65-4557-b0f9-0dd29b26cecc"/>
       <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>
+      <column name="VALUE" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>  
+      <column name="SCOREPOINTS" valueNumeric="12.50"/>
       <column name="CLASSIFICATIONID" value="297cc1a1-1813-4f30-ad70-b452292c3371"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="08764209-9b5e-4893-96d0-e2a347bccf60"/>
+      <column name="VALUE" value="08764209-9b5e-4893-96d0-e2a347bccf60"/>
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="2a447c40-23b0-4e45-b932-067c08515da0"/>
       <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/>
+      <column name="VALUE" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/>  
+      <column name="SCOREPOINTS" valueNumeric="50.00"/>
       <column name="CLASSIFICATIONID" value="2a9353ec-78c3-42ae-836f-dcec0a4cfaad"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/>
+      <column name="VALUE" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/>    
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="2abfbf1f-8f2c-4713-a61b-13ba593d1055"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5564a330-8c13-424f-a24b-5f97185a9036"/>
+      <column name="VALUE" value="5564a330-8c13-424f-a24b-5f97185a9036"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="2b0e75e0-0a36-4397-988d-2ae60e5d2658"/>
       <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="2c644b64-0404-4eac-841c-d8579ff25fa6"/>
       <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="618bf0d1-18d4-4a96-900c-80a5a616da9b"/>
+      <column name="VALUE" value="618bf0d1-18d4-4a96-900c-80a5a616da9b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="2e3d4c1e-24b2-4362-bee9-b11fa9847d42"/>
       <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> 
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="3056c0b4-5e4b-4580-ab89-75ac80920415"/>
       <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>    
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="319dec0d-5ed5-40f8-8c98-b912582a8817"/>
       <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>   
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="31a22039-ac7d-4bb9-9f36-d1f91c6c4052"/>
       <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>
+      <column name="VALUE" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>  
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="326d5aff-cb21-4bb6-9c32-7fcac48d175c"/>
       <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5564a330-8c13-424f-a24b-5f97185a9036"/>
+      <column name="VALUE" value="5564a330-8c13-424f-a24b-5f97185a9036"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="32b4f1b2-6cc2-4702-a9e0-0a75184c5698"/>
       <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
+      <column name="VALUE" value="4d868dc5-747a-4f22-9134-638198d3084a"/>    
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="342c7c38-ca79-4e46-9677-5da074ceb60b"/>
       <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b41e180f-db8c-44c3-9fbb-179ab58d5852"/>
+      <column name="VALUE" value="b41e180f-db8c-44c3-9fbb-179ab58d5852"/>
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="3561883e-bec9-4be7-8f0f-985ca694ff04"/>
       <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>  
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="359fddf8-baae-497f-8ad6-d2cab1438473"/>
       <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="618bf0d1-18d4-4a96-900c-80a5a616da9b"/>
+      <column name="VALUE" value="618bf0d1-18d4-4a96-900c-80a5a616da9b"/>   
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="35b79ed1-7002-44f1-af61-891cdf863ac9"/>
       <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="90361317-d80e-4466-a45b-3021bf02e2f9"/>
+      <column name="VALUE" value="90361317-d80e-4466-a45b-3021bf02e2f9"/>
+      <column name="SCOREPOINTS" valueNumeric="19.80"/>
       <column name="CLASSIFICATIONID" value="3672003e-0624-4a51-bb15-48f93bbd4342"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="36b1ed8c-a4d4-4203-aa20-52cf10f8d8a0"/>
       <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>    
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="3807eda2-aa0f-4caf-b3ab-0ff341eb887b"/>
       <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="39dc9940-eb00-4ed5-82ec-521f5cc62239"/>
       <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
-    <insert tableName="classification">
-      <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="618bf0d1-18d4-4a96-900c-80a5a616da9b"/>
-      <column name="CLASSIFICATIONID" value="3cc8a674-7934-4b8f-b200-bd19ddcb4689"/>
-      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
-    </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="7e569319-5885-452e-9331-a507f3365236"/>
+      <column name="VALUE" value="7e569319-5885-452e-9331-a507f3365236"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="3da8549a-762a-438f-9878-271c52943fd2"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/>
+      <column name="VALUE" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/>     
+      <column name="SCOREPOINTS" valueNumeric="9.90"/>
       <column name="CLASSIFICATIONID" value="3e9b7598-39a6-4ebc-aa49-8ec3a20f9eb4"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ec3dbf-f8f6-4418-8dc2-0062510c1a28"/>
+      <column name="VALUE" value="47ec3dbf-f8f6-4418-8dc2-0062510c1a28"/>
+      <column name="SCOREPOINTS" valueNumeric="7.50"/>
       <column name="CLASSIFICATIONID" value="3f410195-bca5-41ac-a819-a8d29506f9e5"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/>
+      <column name="VALUE" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/>   
+      <column name="SCOREPOINTS" valueNumeric="9.90"/>
       <column name="CLASSIFICATIONID" value="4164397b-a129-4e37-9586-af6e6133befd"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>
+      <column name="VALUE" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>    
+      <column name="SCOREPOINTS" valueNumeric="12.50"/>
       <column name="CLASSIFICATIONID" value="421cdeeb-a5d6-4612-b47b-49db966de27f"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/>
+      <column name="VALUE" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="440d25a3-39c1-412e-90c7-c0a6366f0794"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>  
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="4444b22f-02d1-4e8f-9073-82d61eba18e0"/>
       <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="445ccf23-4d44-489a-8054-b46194e104e7"/>
       <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/>
+      <column name="VALUE" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="46065d3f-a811-430d-8fa2-e048aee894c7"/>
       <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b41e180f-db8c-44c3-9fbb-179ab58d5852"/>
+      <column name="VALUE" value="b41e180f-db8c-44c3-9fbb-179ab58d5852"/>
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="4a61a0fe-394e-4b2f-897a-092fc2c109b2"/>
       <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="f1534026-34cc-4898-8711-41cbe4accb60"/>
+      <column name="VALUE" value="f1534026-34cc-4898-8711-41cbe4accb60"/>
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="4d67d40e-4656-46b0-b5a0-9c299c1ef9d3"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="4e21e953-7146-43dd-a888-92d9f55f561e"/>
       <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>
+      <column name="VALUE" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>  
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="4e96b522-209b-48ca-b04d-f328416aacdd"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>   
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="522566b0-6eca-40bb-977c-c9a26f730890"/>
       <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>   
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="52c6bccc-1055-48dc-ad5d-311e80a12d2a"/>
       <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="51575eb6-4005-42d2-96f3-b35dfd06a86b"/>
+      <column name="VALUE" value="51575eb6-4005-42d2-96f3-b35dfd06a86b"/>
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="55401dae-a111-4e69-9c26-21fa9badd973"/>
       <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="9ac96400-9c47-4d4f-be5b-e053f92a54ce"/>
+      <column name="VALUE" value="9ac96400-9c47-4d4f-be5b-e053f92a54ce"/>
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="55569485-c1f8-4bef-9e94-2b64c9b6bd4e"/>
       <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>    
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="555a280b-a2e4-4eb5-bbec-87bca3987395"/>
       <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="51575eb6-4005-42d2-96f3-b35dfd06a86b"/>
+      <column name="VALUE" value="51575eb6-4005-42d2-96f3-b35dfd06a86b"/>    
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="568cebf1-2494-44e0-9eb8-91bbcf1189eb"/>
       <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>   
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="57a2e5d3-0aa9-48a1-89f8-2db8967ffed6"/>
       <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/>
+      <column name="VALUE" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/>   
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="58642867-f8fc-45c1-a926-06306498a9c8"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/>
+      <column name="VALUE" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/>
+      <column name="SCOREPOINTS" valueNumeric="30.00"/>
       <column name="CLASSIFICATIONID" value="58671a19-6522-46e6-93ba-8f62bf580048"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="597de33c-b223-4d55-bed7-aeb1d161fc2e"/>
       <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="5a5e780b-01af-4a0f-bcd6-74c0c588210a"/>
       <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/>
+      <column name="VALUE" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/>   
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="5bb5e000-5bba-4895-a5b8-374c2c5bd3a4"/>
       <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>    
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="5bb7b949-cc0b-4724-a5e9-37bfcfe55813"/>
       <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="5c1b2604-da33-4268-8400-5fb4b23c436b"/>
       <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/> 
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="5ce0c1b0-c040-462e-bd19-c8e109449b8e"/>
       <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>
+      <column name="VALUE" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="5dd419ab-971f-42fd-9bb6-2247a6b4175b"/>
       <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="5f0cdce4-81b4-4c05-9011-4d76bdc21b65"/>
       <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ec3dbf-f8f6-4418-8dc2-0062510c1a28"/>
+      <column name="VALUE" value="47ec3dbf-f8f6-4418-8dc2-0062510c1a28"/>
+      <column name="SCOREPOINTS" valueNumeric="7.50"/>
       <column name="CLASSIFICATIONID" value="6017fea2-7e31-4220-86f4-cf72123af805"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
+      <column name="VALUE" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="6048f088-dde7-4134-a101-f5e8f8b70cf5"/>
       <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/>
+      <column name="VALUE" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/>   
+      <column name="SCOREPOINTS" valueNumeric="30.00"/>
       <column name="CLASSIFICATIONID" value="6111dd76-4786-43bf-b6ce-74b36415ad03"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="62b9dacc-7d6f-4e05-81f8-6a425e369489"/>
       <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="62cc115a-f80e-4a0f-899e-8060e9ed575e"/>
       <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>
+      <column name="VALUE" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>  
+      <column name="SCOREPOINTS" valueNumeric="12.50"/>
       <column name="CLASSIFICATIONID" value="6382b5d7-06a3-4584-8314-e00abdd8e8e9"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="65f45f0d-ab41-4a83-b5f7-795dc21d0fd4"/>
       <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>
+      <column name="VALUE" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="6685c781-a87d-4102-8764-27f0fcb0dc60"/>
       <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="6800e69f-33b1-44ae-b3a2-d7362bfddbf8"/>
       <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>   
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="688cdc0d-d1a7-46ad-95c3-7503c054ee2c"/>
       <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>  
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="6a6dfe13-6fcc-4ae9-b12b-dced4a55daef"/>
       <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>
+      <column name="VALUE" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="6bbe5de0-4302-4467-9f3b-a0292485b214"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
+      <column name="VALUE" value="4d868dc5-747a-4f22-9134-638198d3084a"/>  
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="6d3464fa-eadd-4afd-b4e1-3031726770d5"/>
       <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>    
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="6dadd578-7e24-41cd-ab27-7baa29e4691b"/>
       <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/>
+      <column name="VALUE" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/>     
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="6e187a9b-2e57-4da2-8132-9f576a28d6f7"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>
+      <column name="VALUE" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="717dfb2c-2e2c-46c8-b72c-8d81e61b94c1"/>
       <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="740bcc4c-b621-458e-874e-034cf70965bc"/>
       <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>
+      <column name="VALUE" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/> 
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="75fd708e-78a9-442f-8ddb-913b8fd29cdf"/>
       <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="76990230-73ec-4026-8a28-871ac5b4edc6"/>
       <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="77941d3d-e876-44b3-b824-3a075d7dd398"/>
       <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/>
+      <column name="VALUE" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/>    
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="77a11bd3-a521-4701-b564-7f8b07000f0b"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>
+      <column name="VALUE" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>    
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="77f0f0bd-eaca-44ef-abfa-9156eac6eb7e"/>
       <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>    
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="7884869d-85ab-458f-9078-e2dd7234be91"/>
       <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3eb18b76-f51e-4ad2-9080-74b4a603667b"/>
+      <column name="VALUE" value="3eb18b76-f51e-4ad2-9080-74b4a603667b"/>
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="79cc0205-25f8-44a9-b682-a31df2068e3f"/>
       <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/> 
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="7d131f29-0430-44ad-b4ec-7044a67e0e3b"/>
       <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/>
+      <column name="VALUE" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/>  
+      <column name="SCOREPOINTS" valueNumeric="30.00"/>
       <column name="CLASSIFICATIONID" value="80beaf88-415d-49da-ae0b-c4d6528747a2"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
     </insert>
-    <insert tableName="classification">
-      <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
-      <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
-      <column name="CLASSIFICATIONID" value="813a990d-a17a-4481-a49d-7fb3a9c6513a"/>
-      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
-    </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ec3dbf-f8f6-4418-8dc2-0062510c1a28"/>
+      <column name="VALUE" value="47ec3dbf-f8f6-4418-8dc2-0062510c1a28"/>
+      <column name="SCOREPOINTS" valueNumeric="7.50"/>
       <column name="CLASSIFICATIONID" value="81d75e31-673b-426e-827f-c505b386ce0e"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="81deaf11-9f63-4cc8-b83c-8711f5e3f734"/>
       <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
+      <column name="VALUE" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="83537aae-14a3-499f-a94b-9c630745110b"/>
       <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>    
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="83d2e0f5-b7f5-4305-8da7-69e27da99f98"/>
       <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>
+      <column name="VALUE" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="84ca4de3-ba44-40b4-8727-c5e23861c2c9"/>
       <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>  
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="8502a2c8-fb7e-44f2-91cb-3d44d2d50d98"/>
       <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>
+      <column name="VALUE" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/> 
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="85b54389-50f9-4bd3-838b-d3941bda2cc1"/>
       <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
     </insert>
-    <insert tableName="classification">
-      <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
-      <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
-      <column name="CLASSIFICATIONID" value="8b59888b-ba5c-4a77-b06d-d522037fe3b3"/>
-      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
-    </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="8c133476-7e1a-4120-8127-b45228bd5403"/>
       <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="8c792586-2d2d-41a3-933b-6f679dd4011e"/>
       <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>  
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="8d830242-7eb6-4185-b1cc-3e7977e6c340"/>
       <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>
+      <column name="VALUE" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>   
+      <column name="SCOREPOINTS" valueNumeric="12.50"/>
       <column name="CLASSIFICATIONID" value="8f44739a-7103-4dd3-8f1f-25afbae07cd0"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>
+      <column name="VALUE" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="8fbd5ec4-bb9a-4c33-aa8d-73185d4b0746"/>
       <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>
+      <column name="VALUE" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>   
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="905cae71-9e4b-48f2-9de3-fcb8607d01a1"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>  
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="91cd0603-ac46-420b-81d4-0e1c72a916bf"/>
       <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
+      <column name="VALUE" value="4d868dc5-747a-4f22-9134-638198d3084a"/>   
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="9260ed8f-3b4a-4c5a-9077-0fe59105883b"/>
       <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="9286af56-8942-4e30-8ed3-cde6bf2e77d5"/>
       <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/>
+      <column name="VALUE" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/>  
+      <column name="SCOREPOINTS" valueNumeric="30.00"/>
       <column name="CLASSIFICATIONID" value="93f4dfdf-b07b-4dc5-91a3-7db80cc314fc"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/>
+      <column name="VALUE" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/>   
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="9452b219-64af-4c27-8f35-0ba81210abf3"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="94a737b7-d4f6-4a13-b06b-05a225d9225b"/>
       <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="ba5d70c3-e77a-45ff-828b-7b3e0a61eec2"/>
+      <column name="VALUE" value="ba5d70c3-e77a-45ff-828b-7b3e0a61eec2"/>
+      <column name="SCOREPOINTS" valueNumeric="30.00"/>
       <column name="CLASSIFICATIONID" value="94a83ec1-8e6d-4c1b-90a0-54eeac52277b"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="29134094-66f2-4331-9f14-fc6a27ab111e"/>
+      <column name="VALUE" value="29134094-66f2-4331-9f14-fc6a27ab111e"/>
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="94bbfbe5-136f-40f2-af1f-8a47e1414a8c"/>
       <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>  
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="95f0f027-799b-48fd-b1b5-49f70760a008"/>
       <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
+      <column name="VALUE" value="4d868dc5-747a-4f22-9134-638198d3084a"/>    
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="965bd86a-ad6d-4440-a7a3-e4bcf1b0a505"/>
       <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>
+      <column name="VALUE" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="971cee9d-9b1f-4b57-9635-9bbfdb792958"/>
       <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="51575eb6-4005-42d2-96f3-b35dfd06a86b"/>
+      <column name="VALUE" value="51575eb6-4005-42d2-96f3-b35dfd06a86b"/>  
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="9772b8f6-08c6-40aa-af16-df68bcecb77f"/>
       <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="51575eb6-4005-42d2-96f3-b35dfd06a86b"/>
+      <column name="VALUE" value="51575eb6-4005-42d2-96f3-b35dfd06a86b"/>  
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="98d2e3c1-f308-4a7a-a12f-4d24b45d4db9"/>
       <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>
+      <column name="VALUE" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>   
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="9aa3789c-bc9d-43cf-a121-2575090c2dc4"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>   
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="9af237aa-daa0-4195-a301-a815497a75b6"/>
       <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>    
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="9c457191-c7c7-4a4f-bb91-8a48d27add92"/>
       <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/>
+      <column name="VALUE" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/>
+      <column name="SCOREPOINTS" valueNumeric="50.00"/>
       <column name="CLASSIFICATIONID" value="9cc46dc2-f40a-4c3b-aabd-c77858f5d770"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>
+      <column name="VALUE" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>   
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="9ea74c40-7732-4d0a-a489-f50bc60caf8b"/>
       <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/>
+      <column name="VALUE" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/>  
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="9ec7bc3e-dc4c-40e4-bcee-bd59ab949d42"/>
       <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>    
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="9f5975c7-3df6-4fa4-87e4-7a1c0dbd967c"/>
       <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/>
+      <column name="VALUE" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/>
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="9f85a0f0-6576-4077-99fc-953d8ab53352"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5564a330-8c13-424f-a24b-5f97185a9036"/>
+      <column name="VALUE" value="5564a330-8c13-424f-a24b-5f97185a9036"/>
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="9fcf5382-f070-4698-a011-748c8584733b"/>
       <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="a0120295-79d1-429f-aef4-b9cce9c92de2"/>
       <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="1f924d71-c500-4cdd-bc52-4718a6b88e45"/>
+      <column name="VALUE" value="1f924d71-c500-4cdd-bc52-4718a6b88e45"/>
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="a027bccd-c894-443e-bdde-f32ee0b88285"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>    
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="a03201a8-0858-45e0-a0e2-9b70f5a35061"/>
       <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>  
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="a1591490-e7c3-46b1-8d7e-843acbe93b41"/>
       <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>
+      <column name="VALUE" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>   
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="a28dd724-cd0b-48f4-afd5-840ddc611026"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="a3081728-77d9-4c92-96b5-6fa21659a33f"/>
       <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/>
+      <column name="VALUE" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/>    
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="a3e22367-c33f-4f2c-ad0c-8f9eb6ab572a"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
+      <column name="VALUE" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="a3e2d764-bd51-4f06-a0a0-0e5f4b37d41b"/>
       <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>    
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="a51c9515-80bc-4902-8d9b-115179ab40df"/>
       <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
+      <column name="VALUE" value="4d868dc5-747a-4f22-9134-638198d3084a"/>   
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="a5ce852a-83e6-4b0e-b3fa-310ea99c7e87"/>
       <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="a63b089c-f856-4513-8691-57422e400dc4"/>
       <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
+      <column name="VALUE" value="4d868dc5-747a-4f22-9134-638198d3084a"/>    
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="a653069f-927d-425a-8956-aeb15a2c4bc8"/>
       <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="a69faa8d-afaa-40cd-97e6-65a851f5dde1"/>
       <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> 
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="a728d498-dd75-4b96-a5e5-cbdccd10b0b2"/>
       <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>    
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="a76fcafb-a84d-4505-8c68-1b221482e292"/>
       <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>    
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="a7b9862c-6a25-4bbc-92ec-7bfb25cdb6c0"/>
       <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="a7d7fd5c-624c-4d64-929b-2b0eb146ab9d"/>
       <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>
+      <column name="VALUE" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>  
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="a898ffe5-96ec-4eef-9e0c-6a2622fc74fc"/>
       <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>    
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="a8c2d3c5-423f-45fa-a8db-cd2ab59c5045"/>
       <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
     </insert>
-    <insert tableName="classification">
-      <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
-      <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
-      <column name="CLASSIFICATIONID" value="aa291e2a-646d-4b73-b826-85bd357fd5c0"/>
-      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
-    </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>  
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="ac0944d2-b184-45f5-983a-6c873aadfb8e"/>
       <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b3792b08-4b07-4ed2-9bee-4673182b7349"/>
+      <column name="VALUE" value="b3792b08-4b07-4ed2-9bee-4673182b7349"/>
+      <column name="SCOREPOINTS" valueNumeric="30.00"/>
       <column name="CLASSIFICATIONID" value="b06e62a0-53b0-4046-b024-b00293e632f2"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="b1cb759c-f17c-4277-bee1-e50717d8934a"/>
       <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/>
+      <column name="VALUE" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/>  
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="b38101bf-3d36-4509-9637-a428beb9999a"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="b3846b7c-e70a-43fe-9637-ea74ed1fe0d7"/>
       <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>    
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="b49911f5-fccc-4dba-a46a-32fd56cf8b8f"/>
       <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/>
+      <column name="VALUE" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/> 
+      <column name="SCOREPOINTS" valueNumeric="9.90"/>
       <column name="CLASSIFICATIONID" value="b6d36680-909d-4470-9bf4-0a8b8a7807b1"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>
+      <column name="VALUE" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>  
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="b6ed4614-ea3d-4b2d-a9c3-44d146724b71"/>
       <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="e70a23b4-f2a9-4438-8ba6-742c6c17e5cc"/>
+      <column name="VALUE" value="e70a23b4-f2a9-4438-8ba6-742c6c17e5cc"/>
+      <column name="SCOREPOINTS" valueNumeric="12.50"/>
       <column name="CLASSIFICATIONID" value="b7d6e658-96b3-4664-b7db-139b73add7e3"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="b828dfb2-943a-4f81-b950-fbe4db3d19b7"/>
       <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
+      <column name="VALUE" value="4d868dc5-747a-4f22-9134-638198d3084a"/>  
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="b923621f-e48e-4a77-9f67-f63f5a0b0fbb"/>
       <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
+      <column name="VALUE" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="bb5ee550-320f-491a-a48f-b1ecf41ef90c"/>
       <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
     </insert>
-    <insert tableName="classification">
-      <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
-      <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
-      <column name="CLASSIFICATIONID" value="bc4a31b1-f2e2-4caf-8dcd-ac754c1d7290"/>
-      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
-    </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>  
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="bc61586b-a63e-4d69-82ad-62b02ea2b28a"/>
       <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>    
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="beb7f0ec-3331-49f9-b440-0099f62205c0"/>
       <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
+      <column name="VALUE" value="4d868dc5-747a-4f22-9134-638198d3084a"/>   
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="c179fe12-4bb0-495d-99d0-0159d0466bc0"/>
       <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/>
+      <column name="VALUE" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/>  
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>      
       <column name="CLASSIFICATIONID" value="c28d914e-ad91-4202-9fe6-0d0d41e53836"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>
+      <column name="VALUE" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>  
+      <column name="SCOREPOINTS" valueNumeric="12.50"/>
       <column name="CLASSIFICATIONID" value="c4dc8a62-edc1-4af6-b7c6-f91f6ab700c5"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>    
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="c58b5e5a-b4fe-4dec-a93d-79848e564b87"/>
       <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>   
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="c5d4a548-7a5a-4695-b746-526ef41f5035"/>
       <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>    
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="c61069c1-fe41-4585-9d75-cef27d534ceb"/>
       <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
     </insert>
-    <insert tableName="classification">
-      <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
-      <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>
-      <column name="CLASSIFICATIONID" value="c6fe5361-777d-4047-99dd-e8495ebb8c73"/>
-      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
-    </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/>
+      <column name="VALUE" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/>  
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="c7b46dff-956a-47e1-8a7f-7d3f56c81da1"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>
+      <column name="VALUE" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>   
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="c9208276-8f53-424d-821b-e37f041f864a"/>
       <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>
+      <column name="VALUE" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="caaa6b4e-34e3-4337-b65f-abe761a8c24c"/>
       <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>   
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="cb7df4e3-e15c-4e65-92f4-ecd5cda09f95"/>
       <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>   
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="ccaea5d2-64c3-4255-9825-c91784ba5f54"/>
       <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/>
+      <column name="VALUE" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/>
+      <column name="SCOREPOINTS" valueNumeric="25.00"/>
       <column name="CLASSIFICATIONID" value="cd531b73-1390-498e-a83d-a50c964c24ea"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
     </insert>
-    <insert tableName="classification">
-      <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
-      <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
-      <column name="CLASSIFICATIONID" value="cea579d4-35fa-4376-b791-8b91cbe05d3a"/>
-      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
-    </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>    
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="cf051c11-5f8e-401c-8e57-aabc55496eb8"/>
       <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>    
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="d03c3aa2-c97f-4bd4-b92f-7e09d594cdb8"/>
       <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/>
+      <column name="VALUE" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/>  
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="d18a0dec-5161-488d-958d-3d9ea88f32f3"/>
       <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="c9d4e28d-7935-42c5-9da5-5ce0b51b425a"/>
+      <column name="VALUE" value="c9d4e28d-7935-42c5-9da5-5ce0b51b425a"/>
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="d33aeb65-0c28-48a1-9a81-105faa882a4c"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="d3932d83-8afe-47ff-aff9-7d23bd443669"/>
       <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>   
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="d3b5f0ad-1a66-4eee-a40d-36daf317d510"/>
       <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="f02cfd28-5a09-42ca-b805-07b7b38e3363"/>
+      <column name="VALUE" value="f02cfd28-5a09-42ca-b805-07b7b38e3363"/>
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="d5db188e-4e30-4179-8c3a-339bc16fa2ab"/>
       <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="d6443737-e23b-42fa-81a8-d5e86636fb79"/>
       <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
     </insert>
-    <insert tableName="classification">
-      <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
-      <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
-      <column name="CLASSIFICATIONID" value="d6bf1068-83a5-4bcc-9d97-2efc72cc57a8"/>
-      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
-    </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>   
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="d6d64590-9299-4348-8e21-0cac9f84f51a"/>
       <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3eb18b76-f51e-4ad2-9080-74b4a603667b"/>
+      <column name="VALUE" value="3eb18b76-f51e-4ad2-9080-74b4a603667b"/>  
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="d70e23a7-bc3c-43ae-8b2c-44d85fc7a2d3"/>
       <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>    
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="d74914a9-05f6-4433-9121-87755b724fb4"/>
       <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>   
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="d9cce938-36d9-4a80-9bc2-9e37e6ed64ce"/>
       <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>
+      <column name="VALUE" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>    
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="da16c6c0-3bdf-4af5-b810-e85babe83e69"/>
       <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b3792b08-4b07-4ed2-9bee-4673182b7349"/>
+      <column name="VALUE" value="b3792b08-4b07-4ed2-9bee-4673182b7349"/>
+      <column name="SCOREPOINTS" valueNumeric="30.00"/>
       <column name="CLASSIFICATIONID" value="da44d022-9ea6-4fcb-9491-c5b7236c642f"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="dccab9b9-5306-4325-896f-99646139b5ba"/>
       <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>   
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="ddb5083d-9410-4b9c-82a4-496370b868e3"/>
       <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/>
+      <column name="VALUE" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/>   
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="dfaec9c0-d9fa-4362-a955-341addc3a76d"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="a177b155-4665-4af1-b50e-0b59e8ac2752"/>
+      <column name="VALUE" value="a177b155-4665-4af1-b50e-0b59e8ac2752"/>
+      <column name="SCOREPOINTS" valueNumeric="7.40"/>
       <column name="CLASSIFICATIONID" value="e10a5ecb-b0f3-4b08-a380-de1a04fbc87f"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="3eb18b76-f51e-4ad2-9080-74b4a603667b"/>
+      <column name="VALUE" value="3eb18b76-f51e-4ad2-9080-74b4a603667b"/>    
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="e14fd7cc-abca-4296-bbd6-d9605d1e6f00"/>
       <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
+      <column name="VALUE" value="4d868dc5-747a-4f22-9134-638198d3084a"/>     
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="e27e1f4b-bca2-4928-9652-950762723531"/>
       <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>     
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="e4d83d98-fcf8-402e-9d81-17f374654df7"/>
       <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>   
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="e567dc3e-fb98-4b17-b503-499497b691a6"/>
       <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5564a330-8c13-424f-a24b-5f97185a9036"/>
+      <column name="VALUE" value="5564a330-8c13-424f-a24b-5f97185a9036"/>  
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="e7a7da18-7283-4d75-ab9f-06f62972293c"/>
       <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/>
+      <column name="VALUE" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/>    
+      <column name="SCOREPOINTS" valueNumeric="9.90"/>
       <column name="CLASSIFICATIONID" value="e90c4086-db5f-4099-ba26-67799eb25e44"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/>
+      <column name="VALUE" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/>    
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="eba1581a-1235-4139-a33a-687513436777"/>
       <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="ed2a3c86-814d-4212-a2da-5875d0d3c598"/>
       <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="5564a330-8c13-424f-a24b-5f97185a9036"/>
+      <column name="VALUE" value="5564a330-8c13-424f-a24b-5f97185a9036"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="efe87026-b813-4bb7-a3c8-4ef72e2076b8"/>
       <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>
+      <column name="VALUE" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>   
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="f11eeaac-645d-416e-a50d-259f6ead0c30"/>
       <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>
+      <column name="VALUE" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>   
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="f25ef82a-6466-49c7-aa35-1f4d750218ca"/>
       <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="bf6b1757-11da-49a9-a02c-8340139968ee"/>
+      <column name="VALUE" value="bf6b1757-11da-49a9-a02c-8340139968ee"/>  
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="f47c0ea2-3a6d-4d7b-8f89-bb2d9799fd0e"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
+      <column name="VALUE" value="893720f9-3780-4868-af0c-cbef5a564024"/>  
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="f5dd89ed-f6ae-4676-aa83-906211570a5b"/>
       <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>    
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="f5e4ebc2-e0a7-4ab0-b7e1-dc43c2913135"/>
       <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
+      <column name="VALUE" value="4982ab85-0961-4d85-8fee-2b55887add96"/>    
+      <column name="SCOREPOINTS" valueNumeric="5.00"/>
       <column name="CLASSIFICATIONID" value="f60f8fe8-5ee9-43b4-a0cd-50b0f354bf79"/>
       <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>  
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="f7118dce-dac9-4821-a709-bb7e9db8170a"/>
       <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
+      <column name="VALUE" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>    
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="f724bcdf-ac46-4296-be41-2febc7747ce1"/>
       <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
+      <column name="VALUE" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>    
+      <column name="SCOREPOINTS" valueNumeric="0.00"/>
       <column name="CLASSIFICATIONID" value="f738a3d6-b4e0-491e-8d51-a83ce039fbc8"/>
       <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
     </insert>
-    <insert tableName="classification">
-      <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
-      <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
-      <column name="CLASSIFICATIONID" value="f7504a50-2748-434a-ae08-cff2f4f8035a"/>
-      <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
-    </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="2119cb62-b57c-40be-aff8-ace8e40378d4"/>
+      <column name="VALUE" value="2119cb62-b57c-40be-aff8-ace8e40378d4"/>
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="f7f7022f-57a2-4944-a9d3-e092e1be43b3"/>
       <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
+      <column name="VALUE" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>   
+      <column name="SCOREPOINTS" valueNumeric="35.00"/>
       <column name="CLASSIFICATIONID" value="fa07168c-6aa5-4b9d-935e-6ece6e1c5bdb"/>
       <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="bf6b1757-11da-49a9-a02c-8340139968ee"/>
+      <column name="VALUE" value="bf6b1757-11da-49a9-a02c-8340139968ee"/> 
+      <column name="SCOREPOINTS" valueNumeric="15.00"/>
       <column name="CLASSIFICATIONID" value="fbc32ea9-8350-463a-846e-71a30851f15a"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>     
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="fc10831b-65ea-4ecb-b52e-98c6f54b2a9a"/>
       <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
+      <column name="VALUE" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>      
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
       <column name="CLASSIFICATIONID" value="fcdedb8a-a863-47a8-93af-379c451fedb0"/>
       <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="classification">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
+      <column name="VALUE" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
       <column name="CLASSIFICATIONID" value="fd0fea13-2322-4664-bf15-8026a91bebd2"/>
       <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
     </insert>
+    <insert tableName="classification">
+      <column name="CLASSIFICATIONTYPE_ID" value="df4aacdc-7e17-484c-a96e-a07550a7220e"/>
+      <column name="OBJECT_TYPE" value="Organisation"/>
+      <column name="VALUE" value="21697201-96ae-4c52-848e-e3d228e003b8"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
+      <column name="CLASSIFICATIONID" value="7c8baa19-4e39-4432-8ea8-f7be9890dcf6"/>
+      <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
+    </insert>
+    <insert tableName="classification">
+      <column name="CLASSIFICATIONTYPE_ID" value="df4aacdc-7e17-484c-a96e-a07550a7220e"/>
+      <column name="OBJECT_TYPE" value="Organisation"/>
+      <column name="VALUE" value="21697201-96ae-4c52-848e-e3d228e003b8"/>
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
+      <column name="CLASSIFICATIONID" value="5696dd08-4d0b-4807-963b-daa0de06da13"/>
+      <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
+    </insert>
+    <insert tableName="classification">
+      <column name="CLASSIFICATIONTYPE_ID" value="df4aacdc-7e17-484c-a96e-a07550a7220e"/>
+      <column name="OBJECT_TYPE" value="Organisation"/>
+      <column name="VALUE" value="21697201-96ae-4c52-848e-e3d228e003b8"/>    
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
+      <column name="CLASSIFICATIONID" value="52d997a1-aa11-43e6-9728-7c8b479aac6e"/>
+      <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
+    </insert>
+    <insert tableName="classification">
+      <column name="CLASSIFICATIONTYPE_ID" value="df4aacdc-7e17-484c-a96e-a07550a7220e"/>
+      <column name="OBJECT_TYPE" value="Organisation"/>
+      <column name="VALUE" value="21697201-96ae-4c52-848e-e3d228e003b8"/>   
+      <column name="SCOREPOINTS" valueNumeric="10.00"/>
+      <column name="CLASSIFICATIONID" value="a42c6ab9-2d12-4b5f-92f9-d071061afb90"/>
+      <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
+    </insert>
+    <insert tableName="classification">
+      <column name="CLASSIFICATIONTYPE_ID" value="df4aacdc-7e17-484c-a96e-a07550a7220e"/>
+      <column name="OBJECT_TYPE" value="Organisation"/>
+      <column name="VALUE" value="4c769195-7bce-45e7-9176-782ff98de8d4"/>
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
+      <column name="CLASSIFICATIONID" value="cc878532-031e-4b4e-86a3-d81b15b98a25"/>
+      <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
+    </insert>
+    <insert tableName="classification">
+      <column name="CLASSIFICATIONTYPE_ID" value="df4aacdc-7e17-484c-a96e-a07550a7220e"/>
+      <column name="OBJECT_TYPE" value="Organisation"/>
+      <column name="VALUE" value="4c769195-7bce-45e7-9176-782ff98de8d4"/>   
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
+      <column name="CLASSIFICATIONID" value="308fee51-494c-4d2d-a16f-ba01ac89b4f8"/>
+      <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
+    </insert>
+    <insert tableName="classification">
+      <column name="CLASSIFICATIONTYPE_ID" value="df4aacdc-7e17-484c-a96e-a07550a7220e"/>
+      <column name="OBJECT_TYPE" value="Organisation"/>
+      <column name="VALUE" value="4c769195-7bce-45e7-9176-782ff98de8d4"/>  
+      <column name="SCOREPOINTS" valueNumeric="20.00"/>
+      <column name="CLASSIFICATIONID" value="5323d3e3-af2e-454f-b33b-dd7f01c1ce1b"/>
+      <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
+    </insert>
   </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationgrading.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationgrading.xml
index 26547da7c1327d6c34e880031f19fb618cffc4c5..2e68fcc50aed2ce81e7f85561d2038d543ade168 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationgrading.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationgrading.xml
@@ -5,121 +5,121 @@
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/>
       <column name="GRADING" value="C"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="50"/>
+      <column name="MINPERCENT" valueNumeric="26"/>
       <column name="CLASSIFICATIONGRADINGID" value="03aa277d-873b-4913-9051-d44aa4f77627"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/>
       <column name="GRADING" value="C"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="50"/>
-      <column name="CLASSIFICATIONGRADINGID" value="14da2618-88be-425c-92c3-68d8584aa0bf"/>
+      <column name="MINPERCENT" valueNumeric="26"/>
+      <column name="CLASSIFICATIONGRADINGID" value="14da2618-88be-424c-92c3-68d8584aa0bf"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/>
       <column name="GRADING" value="B"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="75"/>
+      <column name="MINPERCENT" valueNumeric="51"/>
       <column name="CLASSIFICATIONGRADINGID" value="29226adf-eb79-4696-a4b8-7be73c9488e6"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/>
       <column name="GRADING" value="C"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="50"/>
+      <column name="MINPERCENT" valueNumeric="26"/>
       <column name="CLASSIFICATIONGRADINGID" value="348a2af8-ec01-4a58-8ff6-5e3a837852a4"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/>
       <column name="GRADING" value="A"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="100"/>
+      <column name="MINPERCENT" valueNumeric="76"/>
       <column name="CLASSIFICATIONGRADINGID" value="4ef54a02-ddf8-4238-b9fd-f5a043032b7d"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/>
       <column name="GRADING" value="D"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="25"/>
+      <column name="MINPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONGRADINGID" value="5e46e499-00c2-4cc2-9f4c-952290484623"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/>
       <column name="GRADING" value="D"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="25"/>
+      <column name="MINPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONGRADINGID" value="5e5c3ffe-3fa6-41e3-8659-1b03e7e1a1cd"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/>
       <column name="GRADING" value="A"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="100"/>
+      <column name="MINPERCENT" valueNumeric="76"/>
       <column name="CLASSIFICATIONGRADINGID" value="68dd4d91-d472-477d-935c-70cbe5606c51"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/>
       <column name="GRADING" value="B"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="75"/>
+      <column name="MINPERCENT" valueNumeric="51"/>
       <column name="CLASSIFICATIONGRADINGID" value="748ef65c-af41-42d8-8ac4-480bc9390591"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/>
       <column name="GRADING" value="D"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="25"/>
-      <column name="CLASSIFICATIONGRADINGID" value="76af9750-a714-4a35-bfd2-6eab3c316e5b"/>
+      <column name="MINPERCENT" valueNumeric="0"/>
+      <column name="CLASSIFICATIONGRADINGID" value="76af9740-a714-4a35-bfd2-6eab3c316e5b"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/>
       <column name="GRADING" value="A"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="100"/>
+      <column name="MINPERCENT" valueNumeric="76"/>
       <column name="CLASSIFICATIONGRADINGID" value="7afd58ad-6eae-4d6b-8d4b-2ca4bdd177e6"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/>
       <column name="GRADING" value="D"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="25"/>
+      <column name="MINPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONGRADINGID" value="8408ca43-a4dc-4767-8127-e52c08276815"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/>
       <column name="GRADING" value="C"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="50"/>
+      <column name="MINPERCENT" valueNumeric="26"/>
       <column name="CLASSIFICATIONGRADINGID" value="8c982beb-bc53-4bcf-8b76-7ee919bbf653"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/>
       <column name="GRADING" value="C"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="50"/>
+      <column name="MINPERCENT" valueNumeric="26"/>
       <column name="CLASSIFICATIONGRADINGID" value="8e73dd97-4428-4316-882d-7b2af56330ef"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/>
       <column name="GRADING" value="B"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="75"/>
-      <column name="CLASSIFICATIONGRADINGID" value="8f702450-83fc-4085-92c2-ac09f96dcd6b"/>
+      <column name="MINPERCENT" valueNumeric="51"/>
+      <column name="CLASSIFICATIONGRADINGID" value="8f702449-83fc-4085-92c2-ac09f96dcd6b"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/>
       <column name="GRADING" value="B"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="75"/>
+      <column name="MINPERCENT" valueNumeric="51"/>
       <column name="CLASSIFICATIONGRADINGID" value="9437f368-bea1-47f4-b76e-d6a391af438d"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/>
       <column name="GRADING" value="D"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="25"/>
-      <column name="CLASSIFICATIONGRADINGID" value="9a823957-0ca9-4972-95df-d894d4e4fc25"/>
+      <column name="MINPERCENT" valueNumeric="0"/>
+      <column name="CLASSIFICATIONGRADINGID" value="9a823957-0ca9-4972-95df-d894d4e4fc24"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/>
       <column name="GRADING" value="B"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="75"/>
+      <column name="MINPERCENT" valueNumeric="51"/>
       <column name="CLASSIFICATIONGRADINGID" value="a89c81df-9380-41b1-9c7c-52d3a1862ac7"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/>
       <column name="GRADING" value="A"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="100"/>
-      <column name="CLASSIFICATIONGRADINGID" value="c021718f-b6ca-4d4d-87f7-e4450d103fe2"/>
+      <column name="MINPERCENT" valueNumeric="76"/>
+      <column name="CLASSIFICATIONGRADINGID" value="c021718f-b6ca-4d4d-87f7-e4449d103fe2"/>
     </insert>
     <insert tableName="classificationgrading">
       <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/>
       <column name="GRADING" value="A"/>
-      <column name="MAXGRADEFORSCORE" valueNumeric="100"/>
+      <column name="MINPERCENT" valueNumeric="76"/>
       <column name="CLASSIFICATIONGRADINGID" value="f8e1c5a4-b0d0-4b73-9700-11ff916adfdd"/>
     </insert>
   </changeSet>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationscore.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationscore.xml
index c5de6229ea80f6b1c90df74e02bfac79640d1135..767f15e2ddcb4f9fff3de7728c7408eff25a8425 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationscore.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationscore.xml
@@ -4,717 +4,731 @@
     <delete tableName="classificationscore"/>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="01840c9d-2856-4882-a12a-303e58fd9d30"/>
       <column name="SORT" valueNumeric="50"/>
       <column name="TITLE" value="Purchasing"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="100-199 D€"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="33.30"/>
+      <column name="SCOREPERCENT" valueNumeric="66"/>
       <column name="CLASSIFICATIONSCOREID" value="0803779b-73d8-47b3-9705-f5771c01e6a3"/>
       <column name="SORT" valueNumeric="140"/>
       <column name="TITLE" value="Automotive"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="08764209-9b5e-4893-96d0-e2a347bccf60"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="low"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="15.00"/>
+      <column name="SCOREPERCENT" valueNumeric="75"/>
       <column name="CLASSIFICATIONSCOREID" value="09559e61-09ed-4f85-b0cb-fa7b0c66e488"/>
       <column name="SORT" valueNumeric="150"/>
       <column name="TITLE" value="Publishing house"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="0b671383-ecc3-440c-aff4-ff485da2755d"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="medium"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="10419ecc-335b-43c3-a1e3-8ecfbeda6f2b"/>
       <column name="SORT" valueNumeric="60"/>
       <column name="TITLE" value="Project management"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="25"/>
       <column name="CLASSIFICATIONSCOREID" value="107c199b-b315-4093-add5-48c496794bc9"/>
       <column name="SORT" valueNumeric="110"/>
       <column name="TITLE" value="Lottery"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="11418754-1667-437b-816b-adec4b9291f3"/>
       <column name="SORT" valueNumeric="40"/>
       <column name="TITLE" value="No project planned"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="1bc2b2aa-2582-4b0c-a2f8-04125b82ba33"/>
       <column name="SORT" valueNumeric="40"/>
       <column name="TITLE" value="Service"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="1f924d71-c500-4cdd-bc52-4718a6b88e45"/>
       <column name="SORT" valueNumeric="70"/>
       <column name="TITLE" value="Consultation"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
-      <column name="SCORE" valueNumeric="25.00"/>
+      <column name="SCOREPERCENT" valueNumeric="70"/>
       <column name="CLASSIFICATIONSCOREID" value="206fd02f-68ec-42f2-83d1-92848f51dc1a"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="Switzerland"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="2119cb62-b57c-40be-aff8-ace8e40378d4"/>
       <column name="SORT" valueNumeric="120"/>
       <column name="TITLE" value="Education"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/>
       <column name="SORT" valueNumeric="180"/>
       <column name="TITLE" value="Service"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="2745d6c3-fffb-4f72-8bc2-92439a14e919"/>
       <column name="SORT" valueNumeric="40"/>
       <column name="TITLE" value="Other"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="29134094-66f2-4331-9f14-fc6a27ab111e"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="0-49 D€"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="33.30"/>
+      <column name="SCOREPERCENT" valueNumeric="66"/>
       <column name="CLASSIFICATIONSCOREID" value="2a516661-537d-473e-864a-c2f721b96a42"/>
       <column name="SORT" valueNumeric="180"/>
       <column name="TITLE" value="Service"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="80"/>
       <column name="CLASSIFICATIONSCOREID" value="2cd8d11f-ee3f-429b-a16a-7839cf30b62d"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="51-100"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="2f3b6088-d78f-4fba-998d-b18a6b981485"/>
       <column name="SORT" valueNumeric="170"/>
       <column name="TITLE" value="Environment"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/>
       <column name="SORT" valueNumeric="50"/>
       <column name="TITLE" value="0 to 49T"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="Germany"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="25"/>
       <column name="CLASSIFICATIONSCOREID" value="3035e36e-ee6a-45d1-9d68-920cd3666362"/>
       <column name="SORT" valueNumeric="70"/>
       <column name="TITLE" value="Student/Internship"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="33.30"/>
+      <column name="SCOREPERCENT" valueNumeric="66"/>
       <column name="CLASSIFICATIONSCOREID" value="35d8ae15-8993-4ab2-99f6-e57c2ebf0bb3"/>
       <column name="SORT" valueNumeric="80"/>
       <column name="TITLE" value="Food"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="16"/>
       <column name="CLASSIFICATIONSCOREID" value="39547328-ccc6-47ad-b31a-d6a149081c44"/>
       <column name="SORT" valueNumeric="50"/>
       <column name="TITLE" value="0 to 49"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
-      <column name="SCORE" valueNumeric="30.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="251 to 1,000"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/>
-      <column name="SCORE" valueNumeric="25.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="Yes"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/>
-      <column name="SCORE" valueNumeric="12.50"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="Standard"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="25"/>
       <column name="CLASSIFICATIONSCOREID" value="3eb18b76-f51e-4ad2-9080-74b4a603667b"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="Machinery and equipment"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="50.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/>
       <column name="SORT" valueNumeric="190"/>
       <column name="TITLE" value="Public"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="41300a6c-8dc7-4b5a-9fb1-cecd3d5cbb8c"/>
       <column name="SORT" valueNumeric="160"/>
       <column name="TITLE" value="Electric"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="50.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="41d43723-7d19-4a7e-936a-df9013db7dfb"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="Logistics"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
-      <column name="SCORE" valueNumeric="15.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="high"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="Commodity group 1"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
-      <column name="SCORE" valueNumeric="7.50"/>
+      <column name="SCOREPERCENT" valueNumeric="75"/>
       <column name="CLASSIFICATIONSCOREID" value="47ec3dbf-f8f6-4418-8dc2-0062510c1a28"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="Sales"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="25"/>
       <column name="CLASSIFICATIONSCOREID" value="4982ab85-0961-4d85-8fee-2b55887add96"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="high"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/>
       <column name="SORT" valueNumeric="130"/>
       <column name="TITLE" value="Trade"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="20"/>
       <column name="CLASSIFICATIONSCOREID" value="4d868dc5-747a-4f22-9134-638198d3084a"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="0-50"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="Negative"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
-      <column name="SCORE" valueNumeric="25.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="51575eb6-4005-42d2-96f3-b35dfd06a86b"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="101-250"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="5564a330-8c13-424f-a24b-5f97185a9036"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="low"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="56a56ec0-34c1-419f-81c2-1c1310d685d2"/>
       <column name="SORT" valueNumeric="120"/>
       <column name="TITLE" value="Education"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="high"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="5ca391a5-9de8-41e6-9792-17cf8deaa7e7"/>
       <column name="SORT" valueNumeric="90"/>
       <column name="TITLE" value="Energy"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="618bf0d1-18d4-4a96-900c-80a5a616da9b"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="Logistics"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/>
-      <column name="SCORE" valueNumeric="25.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="61fe4e4f-e64d-4195-87b5-658f36ce1736"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="Individual"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/>
-      <column name="SCORE" valueNumeric="30.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="636af750-fcd3-4480-bfe7-ead42bf85280"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="Choice"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="6632b510-7094-45d6-b7ef-946e759429a3"/>
       <column name="SORT" valueNumeric="140"/>
       <column name="TITLE" value="Automotive"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="6bd19de4-691b-4e78-84dc-cf6f41231978"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="Management/Sales Manager"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="20"/>
       <column name="CLASSIFICATIONSCOREID" value="6d6653ae-024e-444c-aeae-561874d55569"/>
       <column name="SORT" valueNumeric="40"/>
       <column name="TITLE" value="50 to 99T"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="6fe28489-2383-412b-9bbd-4f01a9421775"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="medium"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
-      <column name="SCORE" valueNumeric="15.00"/>
+      <column name="SCOREPERCENT" valueNumeric="75"/>
       <column name="CLASSIFICATIONSCOREID" value="733323d6-ff3d-4ccb-b179-ad1fea05dfe8"/>
       <column name="SORT" valueNumeric="40"/>
       <column name="TITLE" value="200-349 D€"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="7d6f716a-97c7-417b-a8c0-3cb71e403dde"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="Other"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="7e569319-5885-452e-9331-a507f3365236"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="Overarching"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="25"/>
       <column name="CLASSIFICATIONSCOREID" value="839cd672-5981-4207-8a82-caddd00107e4"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="50-99 D€"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
-      <column name="SCORE" valueNumeric="0.00"/>
+      <column name="SCOREPERCENT" valueNumeric="0"/>
       <column name="CLASSIFICATIONSCOREID" value="893720f9-3780-4868-af0c-cbef5a564024"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="low"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
-      <column name="SCORE" valueNumeric="35.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="8d7bc557-e020-42c9-83d9-ff84fcbd12b7"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="Austria"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="66"/>
       <column name="CLASSIFICATIONSCOREID" value="90361317-d80e-4466-a45b-3021bf02e2f9"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="101 to 250"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="904e2dbe-49a1-42a0-a5db-0f274334dd7f"/>
       <column name="SORT" valueNumeric="160"/>
       <column name="TITLE" value="Electric"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="25"/>
       <column name="CLASSIFICATIONSCOREID" value="9181a683-dcab-47fc-af7b-e282505348d6"/>
       <column name="SORT" valueNumeric="90"/>
       <column name="TITLE" value="Energy"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
-      <column name="SCORE" valueNumeric="15.00"/>
+      <column name="SCOREPERCENT" valueNumeric="60"/>
       <column name="CLASSIFICATIONSCOREID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/>
       <column name="SORT" valueNumeric="40"/>
       <column name="TITLE" value="251-1000"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="92c8f126-b31e-4011-bbf0-cb5e57bfc3e5"/>
       <column name="SORT" valueNumeric="60"/>
       <column name="TITLE" value="Finance"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="33.30"/>
+      <column name="SCOREPERCENT" valueNumeric="66"/>
       <column name="CLASSIFICATIONSCOREID" value="9a3183db-8a38-4cf1-a234-3e2cf20a4f77"/>
       <column name="SORT" valueNumeric="40"/>
       <column name="TITLE" value="IT"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="9ac96400-9c47-4d4f-be5b-e053f92a54ce"/>
       <column name="SORT" valueNumeric="40"/>
       <column name="TITLE" value="IT"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="OnPremise"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="33.30"/>
+      <column name="SCOREPERCENT" valueNumeric="66"/>
       <column name="CLASSIFICATIONSCOREID" value="a0fcd2e2-40c8-40b8-8a5b-e591154c248a"/>
       <column name="SORT" valueNumeric="110"/>
       <column name="TITLE" value="Lottery"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/>
-      <column name="SCORE" valueNumeric="7.50"/>
+      <column name="SCOREPERCENT" valueNumeric="37"/>
       <column name="CLASSIFICATIONSCOREID" value="a177b155-4665-4af1-b50e-0b59e8ac2752"/>
       <column name="SORT" valueNumeric="40"/>
       <column name="TITLE" value="Switzerland"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
-      <column name="SCORE" valueNumeric="25.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="Positive"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="a61e3451-296b-4812-a7b2-425963176f80"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="Cloud"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="a7e70abc-4d98-467d-a475-66bbd101de1d"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="Head of IT"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
-      <column name="SCORE" valueNumeric="30.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="b1c55bcd-16c6-4b2f-8f73-e16397b40e93"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="from 1,000"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/>
-      <column name="SCORE" valueNumeric="30.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="b3792b08-4b07-4ed2-9bee-4673182b7349"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="Within 6 months"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="25"/>
       <column name="CLASSIFICATIONSCOREID" value="b41e180f-db8c-44c3-9fbb-179ab58d5852"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="Commodity group 3"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
-      <column name="SCORE" valueNumeric="35.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="Germany"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
-      <column name="SCORE" valueNumeric="30.00"/>
+      <column name="SCOREPERCENT" valueNumeric="60"/>
       <column name="CLASSIFICATIONSCOREID" value="ba5d70c3-e77a-45ff-828b-7b3e0a61eec2"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="200 to 349T"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="16.60"/>
+      <column name="SCOREPERCENT" valueNumeric="33"/>
       <column name="CLASSIFICATIONSCOREID" value="bf44ae05-a4c4-4ee9-ad6e-7d64474afeff"/>
       <column name="SORT" valueNumeric="60"/>
       <column name="TITLE" value="Finance"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
-      <column name="SCORE" valueNumeric="15.00"/>
+      <column name="SCOREPERCENT" valueNumeric="75"/>
       <column name="CLASSIFICATIONSCOREID" value="bf6b1757-11da-49a9-a02c-8340139968ee"/>
       <column name="SORT" valueNumeric="40"/>
       <column name="TITLE" value="Service Manager"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="33"/>
       <column name="CLASSIFICATIONSCOREID" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="No date yet"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="33.30"/>
+      <column name="SCOREPERCENT" valueNumeric="66"/>
       <column name="CLASSIFICATIONSCOREID" value="c6300eeb-0494-4eba-89b1-23afdbb397e9"/>
       <column name="SORT" valueNumeric="150"/>
       <column name="TITLE" value="Publishing house"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="c9d4e28d-7935-42c5-9da5-5ce0b51b425a"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="CRM Manager"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="40"/>
       <column name="CLASSIFICATIONSCOREID" value="cddaf52d-37b7-426c-b858-c986e58544e6"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="Stagnated"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
-      <column name="SCORE" valueNumeric="15.00"/>
+      <column name="SCOREPERCENT" valueNumeric="75"/>
       <column name="CLASSIFICATIONSCOREID" value="d032f425-5739-4f0c-8103-e102fe0d3ccf"/>
       <column name="SORT" valueNumeric="50"/>
       <column name="TITLE" value="Skilled workers"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="33"/>
       <column name="CLASSIFICATIONSCOREID" value="d0f5c576-e1cd-463e-82d2-e09c46ccb2a0"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="medium"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="15.00"/>
+      <column name="SCOREPERCENT" valueNumeric="75"/>
       <column name="CLASSIFICATIONSCOREID" value="d2a75f81-d0b3-48ce-be97-5e6add962cbb"/>
       <column name="SORT" valueNumeric="70"/>
       <column name="TITLE" value="Consultation"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="60"/>
       <column name="CLASSIFICATIONSCOREID" value="d578aa09-5d14-4ace-8cd0-572c5efcd82e"/>
       <column name="SORT" valueNumeric="50"/>
       <column name="TITLE" value="ab 1000"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/>
-      <column name="SCORE" valueNumeric="15.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="Rate"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="33"/>
       <column name="CLASSIFICATIONSCOREID" value="d7d807a2-8a97-4a0e-9d1c-fb8c7a703599"/>
       <column name="SORT" valueNumeric="40"/>
       <column name="TITLE" value="50 to 100"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="25"/>
       <column name="CLASSIFICATIONSCOREID" value="df7ea293-1fd6-4e98-ba3f-7d975fa8eaeb"/>
       <column name="SORT" valueNumeric="170"/>
       <column name="TITLE" value="Environment"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="16"/>
       <column name="CLASSIFICATIONSCOREID" value="e6ab210e-6a26-4a12-9d50-ff8bd392c590"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="Search"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/>
-      <column name="SCORE" valueNumeric="12.50"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="e70a23b4-f2a9-4438-8ba6-742c6c17e5cc"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="No"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="40"/>
       <column name="CLASSIFICATIONSCOREID" value="e824d7e3-dfbe-4f34-a5c7-8f2226aade7e"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="100 to 199T"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="e8741cb0-9ada-48dd-89d1-f00a1a755c38"/>
       <column name="SORT" valueNumeric="60"/>
       <column name="TITLE" value="Counsellor"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="50.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="ec51d975-bda6-415e-9b91-32f0e981ecd8"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="Building and construction suppliers"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="ecf421ef-66b2-4f9f-98c6-ee8a73e753da"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="Austria"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
-      <column name="SCORE" valueNumeric="50.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="ed6a38f7-97bf-4e3d-a34c-4a1e636fa6a7"/>
       <column name="SORT" valueNumeric="10"/>
       <column name="TITLE" value="from 350T"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="50.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="efec90bd-c99f-49d9-bd52-df0ae6f938a3"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="Machinery and equipment"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
       <column name="CLASSIFICATIONSCOREID" value="f02cfd28-5a09-42ca-b805-07b7b38e3363"/>
       <column name="SORT" valueNumeric="50"/>
       <column name="TITLE" value="ab 350 D€"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="f1534026-34cc-4898-8711-41cbe4accb60"/>
       <column name="SORT" valueNumeric="30"/>
       <column name="TITLE" value="Marketing"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="33.30"/>
+      <column name="SCOREPERCENT" valueNumeric="66"/>
       <column name="CLASSIFICATIONSCOREID" value="f678b3e0-72c4-4b48-90c0-054bf3612dc2"/>
       <column name="SORT" valueNumeric="130"/>
       <column name="TITLE" value="Trade"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
-      <column name="SCORE" valueNumeric="33.30"/>
+      <column name="SCOREPERCENT" valueNumeric="66"/>
       <column name="CLASSIFICATIONSCOREID" value="fae1ef0a-5d07-4725-907f-4b2ac5814328"/>
       <column name="SORT" valueNumeric="100"/>
       <column name="TITLE" value="Industry"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/>
-      <column name="SCORE" valueNumeric="20.00"/>
+      <column name="SCOREPERCENT" valueNumeric="66"/>
       <column name="CLASSIFICATIONSCOREID" value="fb8cb769-d95b-468a-ac64-7ee0cefd46a7"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="unknown"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
-      <column name="SCORE" valueNumeric="5.00"/>
+      <column name="SCOREPERCENT" valueNumeric="25"/>
       <column name="CLASSIFICATIONSCOREID" value="fd022500-4cbc-461f-abb9-b0ec3d8e1dd1"/>
       <column name="SORT" valueNumeric="80"/>
       <column name="TITLE" value="Food"/>
     </insert>
     <insert tableName="classificationscore">
       <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
-      <column name="SCORE" valueNumeric="10.00"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
       <column name="CLASSIFICATIONSCOREID" value="fd8a348a-dc1f-414b-b95e-b1a6aeb9a8d4"/>
       <column name="SORT" valueNumeric="20"/>
       <column name="TITLE" value="Commodity group 2"/>
     </insert>
+    <insert tableName="classificationscore">
+      <column name="CLASSIFICATIONTYPE_ID" value="df4aacdc-7e17-484c-a96e-a07550a7220e"/>
+      <column name="SCOREPERCENT" valueNumeric="100"/>
+      <column name="CLASSIFICATIONSCOREID" value="4c769195-7bce-45e7-9176-782ff98de8d4"/>
+      <column name="SORT" valueNumeric="10"/>
+      <column name="TITLE" value="Commodity group 1"/>
+    </insert>
+    <insert tableName="classificationscore">
+      <column name="CLASSIFICATIONTYPE_ID" value="df4aacdc-7e17-484c-a96e-a07550a7220e"/>
+      <column name="SCOREPERCENT" valueNumeric="50"/>
+      <column name="CLASSIFICATIONSCOREID" value="21697201-96ae-4c52-848e-e3d228e003b8"/>
+      <column name="SORT" valueNumeric="20"/>
+      <column name="TITLE" value="Commodity group 2"/>
+    </insert>
   </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationstorage.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationstorage.xml
index 4d76235c4afaff4c17945c195d876a5160ebc07e..1548d4a39c2a725756508c81ebedd4492730ebbe 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationstorage.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationstorage.xml
@@ -7,156 +7,182 @@
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="CLASSIFICATIONVALUE" value="ABB"/>
       <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="0adb8953-1685-45cf-bcf7-c2c2098aa215"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="AB"/>
       <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="1251e4b0-195d-4556-a10e-7942f1b0e337"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="AB"/>
       <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="166e729d-45c6-4dab-bff2-940d2b618f6b"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="CLASSIFICATIONVALUE" value="ADB"/>
       <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="1aafcbf6-6feb-4916-a4fd-58c138eb8f8f"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="CLASSIFICATIONVALUE" value="CBA"/>
       <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="25a1b340-538d-4c4f-8b1e-25126286cd53"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BB"/>
       <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="2ab913d3-e1a8-4fe2-904b-77b02f6be689"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BA"/>
       <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="3893da8a-f357-46e0-a0b9-65aa58b0dfa6"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BC"/>
       <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="42cc772e-53c6-4849-be29-ebb4e18ab860"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="CLASSIFICATIONVALUE" value="ACB"/>
       <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="471aafd5-a348-453f-8b2a-64bb365fd0ee"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="CLASSIFICATIONVALUE" value="ACB"/>
       <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="4ce62df5-f0ea-4593-a152-6704c61d7cef"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BD"/>
       <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="63dd36bb-74b8-487b-811f-521438ef9491"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="AC"/>
       <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="7a4762f5-90a3-4b6c-8a5d-93125381c18a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONVALUE" value="AC"/>
+      <column name="CLASSIFICATIONVALUE" value="BC"/>
       <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="7b2eb62a-b686-4eaf-bde1-2e1dd1028f65"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BC"/>
       <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="7e59d485-01a8-4e43-9655-ba751d5983a4"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BC"/>
       <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="7f7dfe1d-cb98-44c8-8106-858d991d2b06"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="CLASSIFICATIONVALUE" value="ACA"/>
       <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="80eac6e6-f237-455e-96fd-8484722a79d4"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BD"/>
       <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="821c7eed-7bee-4879-97ec-44d2014a192b"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BD"/>
       <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="84a92c36-88df-4c06-a36a-650ed92d4d0a"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BD"/>
       <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="8db70618-5840-4d4b-90e2-66e1919fc6c1"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONVALUE" value="AC"/>
+      <column name="CLASSIFICATIONVALUE" value="BC"/>
       <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="b4d2847f-0548-4cc8-b002-7723b5fc9184"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BD"/>
       <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="bbc19466-8d76-4f35-be56-8458f677d4a9"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BC"/>
       <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="c64c9f31-a108-4df9-b515-6e523b1341c1"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
-      <column name="CLASSIFICATIONVALUE" value="AC"/>
+      <column name="CLASSIFICATIONVALUE" value="BC"/>
       <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="e2142492-eeab-482d-a37e-b1c8fe7b2545"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="BC"/>
       <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="f451479f-97dc-4570-b342-c8d53f04b493"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="AC"/>
       <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationstorage">
       <column name="CLASSIFICATIONSTORAGEID" value="fc665249-9efc-4d90-839d-cdffb4c3f407"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="CLASSIFICATIONVALUE" value="AC"/>
       <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
   </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationtype.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationtype.xml
index 60482c030a909eb068ae282c7a51d0c2c1fbe4fb..7d2dadd9477c0f3e0c90da9b5b73a9184125e900 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationtype.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationtype.xml
@@ -7,120 +7,169 @@
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="SCORETYPE" value="Headquarters"/>
       <column name="CLASSIFICATIONTYPEID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/>
+      <column name="SCOREPOINTS" valueNumeric="35"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="SCORETYPE" value="ScoreCustomizing"/>
       <column name="CLASSIFICATIONTYPEID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/>
+      <column name="SCOREPOINTS" valueNumeric="25"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="SCORETYPE" value="ScoreStandard"/>
       <column name="CLASSIFICATIONTYPEID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/>
+      <column name="SCOREPOINTS" valueNumeric="25"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="SCORETYPE" value="ScoreDepartment"/>
       <column name="CLASSIFICATIONTYPEID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/>
+      <column name="SCOREPOINTS" valueNumeric="10"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="SCORETYPE" value="ScoreUsers"/>
       <column name="CLASSIFICATIONTYPEID" value="382b311e-b2b2-49da-b6e1-339afae92657"/>
+      <column name="SCOREPOINTS" valueNumeric="30"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="SCORETYPE" value="ScoreBranch"/>
       <column name="CLASSIFICATIONTYPEID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/>
+      <column name="SCOREPOINTS" valueNumeric="50"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="SCORETYPE" value="Number of employees"/>
       <column name="CLASSIFICATIONTYPEID" value="4b72857e-863d-4254-accf-25281bb7bb64"/>
+      <column name="SCOREPOINTS" valueNumeric="25"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="SCORETYPE" value="Loyalty"/>
       <column name="CLASSIFICATIONTYPEID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/>
+      <column name="SCOREPOINTS" valueNumeric="20"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="SCORETYPE" value="ScoreBased"/>
       <column name="CLASSIFICATIONTYPEID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/>
+      <column name="SCOREPOINTS" valueNumeric="20"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="SCORETYPE" value="ScoreDecisionPhase"/>
       <column name="CLASSIFICATIONTYPEID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/>
+      <column name="SCOREPOINTS" valueNumeric="30"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="SCORETYPE" value="Creditworthiness"/>
       <column name="CLASSIFICATIONTYPEID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/>
+      <column name="SCOREPOINTS" valueNumeric="15"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="SCORETYPE" value="ScoreCloud"/>
       <column name="CLASSIFICATIONTYPEID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/>
+      <column name="SCOREPOINTS" valueNumeric="10"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="SCORETYPE" value="Business development"/>
       <column name="CLASSIFICATIONTYPEID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/>
+      <column name="SCOREPOINTS" valueNumeric="25"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="SCORETYPE" value="Product preference"/>
       <column name="CLASSIFICATIONTYPEID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/>
+      <column name="SCOREPOINTS" valueNumeric="20"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="SCORETYPE" value="ScorePosition"/>
       <column name="CLASSIFICATIONTYPEID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/>
+      <column name="SCOREPOINTS" valueNumeric="20"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="SCORETYPE" value="Current supply share"/>
       <column name="CLASSIFICATIONTYPEID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/>
+      <column name="SCOREPOINTS" valueNumeric="20"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="SCORETYPE" value="Industry"/>
       <column name="CLASSIFICATIONTYPEID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/>
+      <column name="SCOREPOINTS" valueNumeric="20"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="SCORETYPE" value="ScoreBudget"/>
       <column name="CLASSIFICATIONTYPEID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/>
+      <column name="SCOREPOINTS" valueNumeric="50"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/>
       <column name="OBJECT_TYPE" value="Salesproject"/>
       <column name="SCORETYPE" value="ScoreProjectStart"/>
       <column name="CLASSIFICATIONTYPEID" value="f4d3791e-1717-4473-987b-0cd751805387"/>
+      <column name="SCOREPOINTS" valueNumeric="30"/>
+      <column name="OUTDATED" valueNumeric="0"/>
     </insert>
     <insert tableName="classificationtype">
       <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/>
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="SCORETYPE" value="Purchasing potential p. a."/>
       <column name="CLASSIFICATIONTYPEID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/>
+      <column name="SCOREPOINTS" valueNumeric="20"/>
+      <column name="OUTDATED" valueNumeric="0"/>
+    </insert>
+    <insert tableName="classificationtype">
+      <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/>
+      <column name="OBJECT_TYPE" value="Organisation"/>
+      <column name="SCORETYPE" value="Focus"/>
+      <column name="CLASSIFICATIONTYPEID" value="df4aacdc-7e17-484c-a96e-a07550a7220e"/>
+      <column name="SCOREPOINTS" valueNumeric="20"/>
+      <column name="OUTDATED" valueNumeric="0"/>
+      <column name="FILTER" value='{"entity":"Organisation_entity","filter":{"type":"group","operator":"AND","childs":[{"type":"row","name":"TYPE","operator":"EQUAL","value":"Interessent","key":"ORGPROSPECT","contenttype":"TEXT"}]}}'/>
     </insert>
   </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplate.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplate.xml
index 3edae4a9772c175a79b80dbcba86e576b40c2274..ffbb58f0d758063daa2eda4593f316ca6cf9eda4 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplate.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplate.xml
@@ -75,17 +75,6 @@
       <column name="USER_NEW" value="Admin"/>
       <column name="DATE_NEW" valueDate="2019-10-17T07:10:02"/>
     </insert>
-    <insert tableName="documenttemplate">
-      <column name="DOCUMENTTEMPLATEID" value="b935bc35-cb5e-4ccc-aef6-0cc745ca2691"/>
-      <column name="ISOLANGUAGE" value="deu"/>
-      <column name="REPLACEMENTNAME" value="footermeineFirma"/>
-      <column name="KIND" value="TEX"/>
-      <column name="NAME" value="footer_meineFrima"/>
-      <column name="DESCRIPTION" value="Fußtext mit Logo, Informationen und Links zu meineFirma."/>
-      <column name="CLASSIFICATION" value="7"/>
-      <column name="USER_NEW" value="Admin"/>
-      <column name="DATE_NEW" valueDate="2019-10-17T07:01:34"/>
-    </insert>
     <insert tableName="documenttemplate">
       <column name="DOCUMENTTEMPLATEID" value="e70b9ef1-f0a3-4cd2-b3cd-fa7b4229ee73"/>
       <column name="ISOLANGUAGE" value="deu"/>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplateplaceofuse.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplateplaceofuse.xml
index b7f09032ef0bc8ba4392684da6df39b3a3f34548..415544ff7d52b15bd0630acaadabcbcfdbb895bc 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplateplaceofuse.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplateplaceofuse.xml
@@ -17,11 +17,6 @@
       <column name="PLACEOFUSE" value="Organisation"/>
       <column name="DOCUMENTTEMPLATEPLACEOFUSEID" value="0c546f3e-11bb-4fbf-b2f0-a06bf36f55fa"/>
     </insert>
-    <insert tableName="documenttemplateplaceofuse">
-      <column name="DOCUMENTTEMPLATE_ID" value="b935bc35-cb5e-4ccc-aef6-0cc745ca2691"/>
-      <column name="PLACEOFUSE" value="Person"/>
-      <column name="DOCUMENTTEMPLATEPLACEOFUSEID" value="1dcf4e02-79ad-463d-8956-a3886eba9546"/>
-    </insert>
     <insert tableName="documenttemplateplaceofuse">
       <column name="DOCUMENTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81"/>
       <column name="PLACEOFUSE" value="Person"/>
@@ -97,10 +92,5 @@
       <column name="PLACEOFUSE" value="Person"/>
       <column name="DOCUMENTTEMPLATEPLACEOFUSEID" value="ebbec7a2-a396-424a-aab5-1726254fc2e9"/>
     </insert>
-    <insert tableName="documenttemplateplaceofuse">
-      <column name="DOCUMENTTEMPLATE_ID" value="b935bc35-cb5e-4ccc-aef6-0cc745ca2691"/>
-      <column name="PLACEOFUSE" value="Organisation"/>
-      <column name="DOCUMENTTEMPLATEPLACEOFUSEID" value="f43bc91d-7fc1-4549-8a41-903c62673e43"/>
-    </insert>
   </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/dsgvoinfo.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/dsgvoinfo.xml
index 9d3ad487ecbb0c6f2e9ff10365b7a8a53f5228a0..9d0f1862c96565eec34d545663371ea31ba17236 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/dsgvoinfo.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/dsgvoinfo.xml
@@ -4,7 +4,7 @@
     <delete tableName="dsgvoinfo"/>
     <insert tableName="dsgvoinfo">
       <column name="TRANSMISSION" value="DSGVONONE"/>
-      <column name="DATASOURCE" value="756662b5-f5e4-479c-8d97-abd6a395bd79"/>
+      <column name="DATASOURCE" value="449080f6-b714-4189-a261-37439d0d4010"/>
       <column name="CONTACT_ID" value="b3906c2d-7b2e-4f64-8c97-ae92e39f96b6"/>
       <column name="DSGVOINFOID" value="6b117aad-02f4-4746-985a-de931059b72e"/>
     </insert>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/organisation.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/organisation.xml
index 9edca5ffee807eb090d1402af3ba9da6ac6de0ef..02c3077b02a98842edc63705625527984ae56052 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/organisation.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/organisation.xml
@@ -11,6 +11,7 @@
     </insert>
     <insert tableName="organisation">
       <column name="ORGANISATIONID" value="03e09527-21cc-489a-b37f-0dd7df553c20"/>
+      <column name="KIND" value="ORGPROSPECT"/>
       <column name="NAME" value="Lichtenstein Document Solutions GmbH&#10;"/>
       <column name="DATE_EDIT" valueDate="2019-11-26T06:21:44"/>
       <column name="CUSTOMERCODE" value="2419"/>
@@ -71,6 +72,7 @@
     </insert>
     <insert tableName="organisation">
       <column name="ORGANISATIONID" value="62175b31-b432-4ec6-932f-8e69033884c6"/>
+      <column name="KIND" value="ORGPROSPECT"/>
       <column name="NAME" value="Kronen AG"/>
       <column name="DATE_EDIT" valueDate="2019-11-26T06:21:07"/>
       <column name="CUSTOMERCODE" value="5874"/>
@@ -111,6 +113,7 @@
     </insert>
     <insert tableName="organisation">
       <column name="ORGANISATIONID" value="82c7b72d-da4e-4fab-a6cc-31e1be07dd08"/>
+      <column name="KIND" value="ORGPROSPECT"/>
       <column name="NAME" value="Pichelmaier Financial  AG&#13;&#10;"/>
       <column name="DATE_EDIT" valueDate="2019-11-26T06:25:36"/>
       <column name="CUSTOMERCODE" value="3579"/>
@@ -131,6 +134,7 @@
     </insert>
     <insert tableName="organisation">
       <column name="ORGANISATIONID" value="97b66b3c-a9f5-4dc4-902e-850d69973d1d"/>
+      <column name="KIND" value="ORGPROSPECT"/>
       <column name="NAME" value="Bucher Unternehmensgruppe"/>
       <column name="DATE_EDIT" valueDate="2019-11-26T06:17:51"/>
       <column name="CUSTOMERCODE" value="3698"/>
@@ -160,6 +164,7 @@
     </insert>
     <insert tableName="organisation">
       <column name="ORGANISATIONID" value="b043cd42-058c-48bd-8326-4c92e0e74c48"/>
+      <column name="KIND" value="ORGPROSPECT"/>
       <column name="NAME" value="Waken Neuser SE"/>
       <column name="DATE_EDIT" valueDate="2019-11-26T06:28:03"/>
       <column name="CUSTOMERCODE" value="5612"/>
@@ -179,6 +184,7 @@
     </insert>
     <insert tableName="organisation">
       <column name="ORGANISATIONID" value="d3707591-5620-49a8-a63f-19e88ca7a21c"/>
+      <column name="KIND" value="ORGPROSPECT"/>
       <column name="NAME" value="MNF Versicherung"/>
       <column name="DATE_EDIT" valueDate="2019-11-26T06:24:53"/>
       <column name="CUSTOMERCODE" value="7691"/>
@@ -188,6 +194,7 @@
     </insert>
     <insert tableName="organisation">
       <column name="ORGANISATIONID" value="ea07af40-4918-4ea2-94ad-031d01aeaab4"/>
+      <column name="KIND" value="ORGPROSPECT"/>
       <column name="NAME" value="International Kältetechnik AG&#10;"/>
       <column name="DATE_EDIT" valueDate="2019-11-26T06:20:08"/>
       <column name="CUSTOMERCODE" value="6983"/>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/tasklink.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/tasklink.xml
index 04c72218c576ff03540b136aeaf811f1e83c3ae4..018d8fd16f3b8db0d46d982ebea3cbf967ac2603 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/tasklink.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/tasklink.xml
@@ -12,7 +12,7 @@
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="TASKLINKID" value="44c1f582-7681-4f6f-b592-6221ebbdee52"/>
       <column name="TASK_ID" value="81a4c8e7-4429-41e1-a534-f1be21e56b5e"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="tasklink">
       <column name="OBJECT_TYPE" value="Salesproject"/>
@@ -24,7 +24,7 @@
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="TASKLINKID" value="6c2f84af-ff2e-4b70-b4d0-607a2bd0d941"/>
       <column name="TASK_ID" value="2e50d2cd-9429-433c-8f6e-2e31a9e7908e"/>
-      <column name="OBJECT_ROWID" value="6a92df58-2b98-40da-ba6a-d0ddb1fde234"/>
+      <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/>
     </insert>
     <insert tableName="tasklink">
       <column name="OBJECT_TYPE" value="Salesproject"/>
@@ -36,13 +36,13 @@
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="TASKLINKID" value="b618fb87-d39d-41d8-be41-2b03bce29538"/>
       <column name="TASK_ID" value="96ec8b48-9fac-4216-bc98-a8323f0592f9"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="tasklink">
       <column name="OBJECT_TYPE" value="Organisation"/>
       <column name="TASKLINKID" value="eca5c8cb-bd10-4425-b4bc-a2e50f2518b9"/>
       <column name="TASK_ID" value="46164eac-62d1-4dbb-a252-93ac49429855"/>
-      <column name="OBJECT_ROWID" value="2c63e0de-f21c-474f-89d7-bff8ba1dbf43"/>
+      <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
     </insert>
     <insert tableName="tasklink">
       <column name="OBJECT_TYPE" value="Salesproject"/>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/visitrecommendation.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/visitrecommendation.xml
index 8c87c7d354f8a87ea081fc188365869937210be7..6f2b91485c8da2cbfa0e71a029dbf6d7d0daacdc 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/visitrecommendation.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/visitrecommendation.xml
@@ -7,7 +7,7 @@
       <column name="DUE_DATE" valueDate="2020-09-16T12:00:00"/>
       <column name="SOURCE" value="MANUAL                              "/>
       <column name="PRIORITY" value="VISITPRIOCRITICAL                   "/>
-      <column name="CONTACT_ID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/>
+      <column name="CONTACT_ID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/>
     </insert>
   </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml
index faf7b4d858a31a26f2aad2e735685c967f95a989..12d0865aebe1c4bc81cb8563000a34e896ec8998 100644
--- a/.liquibase/Data_alias/changelog.xml
+++ b/.liquibase/Data_alias/changelog.xml
@@ -18,6 +18,7 @@
     <include relativeToChangelogFile="true" file="basic/2020.2.0/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2020.2.1/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2020.2.2/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="basic/2020.2.3/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2021.0.0/changelog.xml"/>
 
     <!--enable this only when you definetly want to overwrite the existing data with demo records:-->
diff --git a/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_BINARIES/BINDATA/blobFiles/e3ba3d891ab9cbc43367cd4cce7eeb55 b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_BINARIES/BINDATA/blobFiles/e3ba3d891ab9cbc43367cd4cce7eeb55
index 5612079f37c55d30eb9353fa48b5800d6f15e0ca..36958bab85ab17bfa34743fb5d2e4187817540cc 100644
Binary files a/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_BINARIES/BINDATA/blobFiles/e3ba3d891ab9cbc43367cd4cce7eeb55 and b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_BINARIES/BINDATA/blobFiles/e3ba3d891ab9cbc43367cd4cce7eeb55 differ
diff --git a/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_BINARIES/BINDATA/blobFiles/ef3d15d33c3023a91985372805270dc6 b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_BINARIES/BINDATA/blobFiles/ef3d15d33c3023a91985372805270dc6
index d03920805c23b660ed4535bc1584d1392c68fc72..036d2eb9d494a9b5dd09c6e30da4e1b68180ad30 100644
Binary files a/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_BINARIES/BINDATA/blobFiles/ef3d15d33c3023a91985372805270dc6 and b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_BINARIES/BINDATA/blobFiles/ef3d15d33c3023a91985372805270dc6 differ
diff --git a/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_PERMISSION.xml b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_PERMISSION.xml
new file mode 100644
index 0000000000000000000000000000000000000000..635ef285ba0a85e4e84df8dd4ed05434c6b9b8d6
--- /dev/null
+++ b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_PERMISSION.xml
@@ -0,0 +1,23 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="j.luginger" id="1110a814-62e1-4c54-9e8d-03e2feb27760">
+    <insert tableName="ASYS_PERMISSION">
+      <column name="ASYS_PERMISSIONID" value="f53f7071-c0ad-4af4-b3c0-4a02bb8f27b5"/>
+      <column name="ASYS_PERMISSIONSET_ID" value="8cc1bee8-0092-4e52-a439-f647eed55441"/>
+      <column name="COND" value="{&quot;entity&quot;:&quot;DistrictContact_entity&quot;,&quot;filter&quot;:{&quot;type&quot;:&quot;group&quot;,&quot;operator&quot;:&quot;AND&quot;,&quot;childs&quot;:[]}}"/>
+      <column name="CONDTYPE" valueNumeric="1"/>
+    </insert>
+    <insert tableName="ASYS_PERMISSION">
+      <column name="ASYS_PERMISSIONID" value="3cbc4523-6d24-44aa-bc05-ef044b13d3fb"/>
+      <column name="ASYS_PERMISSIONSET_ID" value="295cd7b4-7ffd-4249-919f-daa908dab7ec"/>
+      <column name="COND" value="{&quot;entity&quot;:&quot;DistrictContact_entity&quot;,&quot;filter&quot;:{&quot;type&quot;:&quot;group&quot;,&quot;operator&quot;:&quot;AND&quot;,&quot;childs&quot;:[]}}"/>
+      <column name="CONDTYPE" valueNumeric="1"/>
+    </insert>
+    <insert tableName="ASYS_PERMISSION">
+      <column name="ASYS_PERMISSIONID" value="ddfb3a26-8be1-4773-9cd6-73675603201e"/>
+      <column name="ASYS_PERMISSIONSET_ID" value="295cd7b4-7ffd-4249-919f-daa908dab7ec"/>
+      <column name="COND" value="{&quot;entity&quot;:&quot;DistrictContact_entity&quot;,&quot;filter&quot;:{&quot;type&quot;:&quot;group&quot;,&quot;operator&quot;:&quot;AND&quot;,&quot;childs&quot;:[{&quot;type&quot;:&quot;row&quot;,&quot;name&quot;:&quot;ORIGIN&quot;,&quot;operator&quot;:&quot;EQUAL&quot;,&quot;value&quot;:&quot;manual&quot;,&quot;key&quot;:&quot;DistrictOrigin_manual&quot;,&quot;contenttype&quot;:&quot;TEXT&quot;}]}}"/>
+      <column name="CONDTYPE" valueNumeric="1"/>
+    </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_PERMISSIONACTION.xml b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_PERMISSIONACTION.xml
new file mode 100644
index 0000000000000000000000000000000000000000..74dd82d7f1d5f281069376f66c13db45ac5186fa
--- /dev/null
+++ b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_PERMISSIONACTION.xml
@@ -0,0 +1,30 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="j.luginger" id="a6e86404-38ec-419f-9fe8-25327a6b3ac6">
+    <insert tableName="ASYS_PERMISSIONACTION">
+      <column name="ACTION" value="view"/>
+      <column name="ASYS_PERMISSION_ID" value="f53f7071-c0ad-4af4-b3c0-4a02bb8f27b5"/>
+      <column name="ASYS_PERMISSIONACTIONID" value="8cae79d8-e8bf-4d9a-9353-e0dd7df1f667"/>
+    </insert>
+    <insert tableName="ASYS_PERMISSIONACTION">
+      <column name="ACTION" value="create"/>
+      <column name="ASYS_PERMISSION_ID" value="f53f7071-c0ad-4af4-b3c0-4a02bb8f27b5"/>
+      <column name="ASYS_PERMISSIONACTIONID" value="3a7a7322-ac8b-49dc-b185-a5acab4fb6dc"/>
+    </insert>
+    <insert tableName="ASYS_PERMISSIONACTION">
+      <column name="ACTION" value="read"/>
+      <column name="ASYS_PERMISSION_ID" value="3cbc4523-6d24-44aa-bc05-ef044b13d3fb"/>
+      <column name="ASYS_PERMISSIONACTIONID" value="1686674d-7343-4d00-8a92-290c0263991b"/>
+    </insert>
+    <insert tableName="ASYS_PERMISSIONACTION">
+      <column name="ACTION" value="delete"/>
+      <column name="ASYS_PERMISSION_ID" value="ddfb3a26-8be1-4773-9cd6-73675603201e"/>
+      <column name="ASYS_PERMISSIONACTIONID" value="a60eb350-12a5-444c-8d1a-3f5a7d57d8f3"/>
+    </insert>
+    <insert tableName="ASYS_PERMISSIONACTION">
+      <column name="ACTION" value="update"/>
+      <column name="ASYS_PERMISSION_ID" value="ddfb3a26-8be1-4773-9cd6-73675603201e"/>
+      <column name="ASYS_PERMISSIONACTIONID" value="63668e61-664b-48d3-8ba8-fea974271438"/>
+    </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_PERMISSIONSET.xml b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_PERMISSIONSET.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4611c456f2d4ebde1cf1c773190a5c8b3fbbd5da
--- /dev/null
+++ b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/ASYS_PERMISSIONSET.xml
@@ -0,0 +1,18 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+  <changeSet author="j.luginger" id="c83eadc7-c360-411a-8a83-da85eff5e945">
+    <insert tableName="ASYS_PERMISSIONSET">
+      <column name="ACCESSTYPE" value="E"/>
+      <column name="ASYS_PERMISSIONSETID" value="8cc1bee8-0092-4e52-a439-f647eed55441"/>
+      <column name="ENTITY_ID" value="DistrictContact_entity"/>
+      <column name="ROLE_ID" value="INTERNAL_EVERYONE"/>
+    </insert>
+    <insert tableName="ASYS_PERMISSIONSET">
+      <column name="ACCESSTYPE" value="R"/>
+      <column name="ASYS_PERMISSIONSET_ID" value="8cc1bee8-0092-4e52-a439-f647eed55441"/>
+      <column name="ASYS_PERMISSIONSETID" value="295cd7b4-7ffd-4249-919f-daa908dab7ec"/>
+      <column name="ENTITY_ID" value="DistrictContact_entity"/>
+      <column name="ROLE_ID" value="INTERNAL_EVERYONE"/>
+    </insert>
+  </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/changelog.xml b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/changelog.xml
index b64f62ea0f7bca50bca82cb051c542a489bb7409..5c155f478645750f5b76a9a1e4f2364eca59b34d 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/changelog.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/_demoData/generatedData/changelog.xml
@@ -1,6 +1,9 @@
 <?xml version="1.1" encoding="UTF-8" standalone="no"?>
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
     <include relativeToChangelogFile="true" file="ASYS_BINARIES.xml"/>
-	<include relativeToChangelogFile="true" file="ASYS_RECORD.xml"/>
-	<include relativeToChangelogFile="true" file="ASYS_RECORDGROUP.xml"/>
+    <include relativeToChangelogFile="true" file="ASYS_RECORD.xml"/>
+    <include relativeToChangelogFile="true" file="ASYS_RECORDGROUP.xml"/>
+    <include relativeToChangelogFile="true" file="ASYS_PERMISSION.xml"/>
+    <include relativeToChangelogFile="true" file="ASYS_PERMISSIONACTION.xml"/>
+    <include relativeToChangelogFile="true" file="ASYS_PERMISSIONSET.xml"/>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml
index 84b8857d8d5e08885c286dde38ffc6a9c93b1701..8da963bc9892353e093b84f03ae816b204209090 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml
@@ -13,7 +13,7 @@
             <constraints nullable="false"/>
         </column>
         <column name="NAME" type="NVARCHAR(63)">
-            <constraints nullable="false"/>
+            <constraints nullable="false" unique="true"/>
         </column>
         <column name="TITLE" type="NVARCHAR(63)"/>
         <column name="DESCRIPTION" type="NVARCHAR(255)"/>
@@ -26,5 +26,8 @@
     <createIndex tableName="ASYS_ALIASCONFIG" indexName="IDX_ASYS_ALIASCONFIG_SERVERID">
         <column name="SERVERID"/>
     </createIndex>
+    <createIndex tableName="ASYS_ALIASCONFIG" indexName="IDX_ASYS_ALIASCONFIG_ALIASID">
+        <column name="ALIASID"/>
+    </createIndex>
 </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml
index e037c40bd68234584e01385d2b9f570bd92b4635..939fc396efeac5d3d51bb1e67082b609e39ba406 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml
@@ -23,5 +23,34 @@
         <column name="TRANSP" type="CHAR(1)"/>
         <column name="VCOMPONENT" type="CLOB"/>
     </createTable>
+    <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_ENTRYTYPE">
+        <column name="ENTRYTYPE"/>
+    </createIndex>
+    <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_STARTTIME">
+        <column name="STARTTIME"/>
+    </createIndex>
+    <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_STATUS">
+        <column name="STATUS"/>
+    </createIndex>
+    <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_ENDTIME">
+        <column name="ENDTIME"/>
+    </createIndex>
+    <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_MAILBOX">
+        <column name="MAILBOX"/>
+    </createIndex>
+    <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_LASTMOD">
+        <column name="LASTMODIFIED"/>
+    </createIndex>
+    <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_DTSTART">
+        <column name="DTSTART"/>
+    </createIndex>
+    <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_DTEND">
+        <column name="DTEND"/>
+    </createIndex>
+</changeSet>
+<changeSet id="4810b7c6-50f6-44f6-a0b5-83a3adfae6f7" author="s.listl" dbms="!mssql,!mysql,!mariadb">
+    <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_ELEMENTUID">
+        <column name="ELEMENTUID"/>
+    </createIndex>
 </changeSet>
 </databaseChangeLog>
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml
index 4e0f73a0b10270db715663c22349f57547d93abd..a9535f3f3ac114811a1e0159a6e9d71bafb39c84 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml
@@ -2,19 +2,25 @@
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
 <changeSet author="a.schindlbeck" id="c31ed111-b98d-46b6-b7bf-845420624e28">
     <createTable tableName="ASYS_CALENDARLINK">
-        <column name="DBALIAS" type="VARCHAR(127)"/>
-        <column name="DBID" type="VARCHAR(191)">
-            <constraints primaryKey="true" primaryKeyName="PK_ASYS_CALENDARLINK_DBID"/>
+        <column name="ID" type="CHAR(36)">
+            <constraints nullable="false" primaryKey="true" primaryKeyName="PK_ASYS_CALENDARLINK_ID"/>
         </column>
+        <column name="DBALIAS" type="VARCHAR(127)"/>
+        <column name="DBID" type="VARCHAR(1023)"/>
         <column name="DBIDCOLUMN" type="VARCHAR(127)"/>
         <column name="DBTABLENAME" type="VARCHAR(127)"/>
         <column name="ENTRYID" type="VARCHAR(512)"/>
         <column name="ENTRYSTORE" type="VARCHAR(255)"/>
         <column name="FRAME" type="VARCHAR(1023)"/>
-        <column name="ID" type="CHAR(36)">
-            <constraints nullable="false"/>
-        </column>
         <column name="TITLE" type="VARCHAR(2000)"/>
     </createTable>
 </changeSet>
+<changeSet id="bf6546b4-67e3-4996-bcd9-77a534127b01" author="s.listl" dbms="!mssql,!mysql,!mariadb">
+    <createIndex tableName="ASYS_CALENDARLINK" indexName="IDX_ASYS_CALENDARLINK_ENTRYID">
+        <column name="ENTRYID"/>
+    </createIndex>
+    <createIndex tableName="ASYS_CALENDARLINK" indexName="IDX_ASYS_CALENDARLINK_DBID">
+        <column name="DBID"/>
+    </createIndex>
+</changeSet>
 </databaseChangeLog>
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml
index 5f8ddc0ed26f8961dde66978901ff46162f17104..6fcc01993321b4f11d7668493a296751e846f0ae 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml
@@ -10,5 +10,8 @@
             <column name="PARENTID" type="CHAR(63)"/>
             <column name="METRICS" type="CLOB"/>
         </createTable>
+        <createIndex tableName="ASYS_COLLECTOR_DATA" indexName="IDX_COLLECTORDATA_TIMECOLLECT">
+            <column name="TIMECOLLECTED"/>
+        </createIndex>
     </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml
index 1fcaf740d8ac5c8f29254872634be78af9426f0e..133aff97c3446084db51cfcf51d91cc3c52015cf 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml
@@ -3,10 +3,15 @@
     <changeSet author="j.hoermann" id="4fe7309e-e131-4f3d-8e65-fb399fcd7090">
         <createTable tableName="ASYS_COLLECTOR_TAGS">
             <column name="COLLECTORDATAID" type="CHAR(63)">
-                <constraints primaryKey="true" primaryKeyName="PK_ASYS_COLLECTOR_TAGS_ID"/>
+                <constraints nullable="false"/>
+            </column>
+            <column name="TAGNAME" type="VARCHAR(63)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="TAGVALUE" type="VARCHAR(63)">
+                <constraints nullable="false"/>
             </column>
-            <column name="TAGNAME" type="VARCHAR(63)"/>
-            <column name="TAGVALUE" type="VARCHAR(63)"/>
         </createTable>
+        <addPrimaryKey tableName="ASYS_COLLECTOR_TAGS" columnNames="COLLECTORDATAID, TAGNAME, TAGVALUE" constraintName="PK_ASYS_COLLECTOR_TAGS"/>
     </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml
index 6ecf84fd630421d50a01ef071830269f8538cfa8..369537c606f93165cf7710c569d7cd21db94672d 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml
@@ -2,22 +2,22 @@
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
 <changeSet author="j.hoermann" id="a510b5e9-e599-4503-8bcd-4ef2465f56c6">
     <createTable tableName="ASYS_DASHLETCONFIGURATIONS">
-        <column name="ID" type="CHAR(36)">
+        <column name="ID" type="CHAR(63)">
             <constraints primaryKey="true" primaryKeyName="PK_ASYS_ASYS_DASHLETCONFIGURATIONS_ID"/>
         </column>
-        <column name="CATEGORIES" type="CLOB"/>
+        <column name="NAME" type="VARCHAR(63)"/>
+        <column name="TITLE" type="VARCHAR(63)"/>
+        <column name="VIEW_NAME" type="VARCHAR(512)"/>
         <column name="DESCRIPTION" type="VARCHAR(512)"/>
-        <column name="FRAGMENT" type="VARCHAR(1023)"/>
-        <column name="FRAGMENT_CUSTOMIZABLE" type="INTEGER"/>
         <column name="ICON" type="VARCHAR(63)"/>
-        <column name="NAME" type="VARCHAR(63)"/>
-        <column name="PARAMETERS" type="CLOB"/>
+        <column name="FRAGMENT" type="VARCHAR(1023)"/>
         <column name="PREVIEW" type="CLOB"/>
-        <column name="REQUIRES_CONFIGURATION" type="INTEGER"/>
         <column name="SINGLETON" type="INTEGER"/>
+        <column name="FRAGMENT_CUSTOMIZABLE" type="INTEGER"/>
+        <column name="REQUIRES_CONFIGURATION" type="INTEGER"/>
+        <column name="CATEGORIES" type="CLOB"/>
+        <column name="PARAMETERS" type="CLOB"/>
         <column name="STORE_ROLES" type="VARCHAR(1023)"/>
-        <column name="TITLE" type="VARCHAR(63)"/>
-        <column name="VIEW_NAME" type="VARCHAR(63)"/>
     </createTable>
 </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml
index f5ea6eb9088d0ea83e950d2e4d259d3eaddc5207..5b3d2d5a60bf48258a8e82957e9db0d43fbf34f8 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml
@@ -2,18 +2,18 @@
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
 <changeSet author="j.hoermann" id="dbdfa16c-8e62-4fc6-8d79-2a14a0d863c5">
     <createTable tableName="ASYS_DASHLETS">
-        <column name="ID" type="CHAR(36)">
+        <column name="ID" type="CHAR(63)">
             <constraints primaryKey="true" primaryKeyName="PK_ASYS_DASHLETS_ID"/>
         </column>
-        <column name="COLSPAN" type="INTEGER"/>
-        <column name="CONFIGURATION_ID" type="VARCHAR(63)"/>
         <column name="DASHBOARD_ID" type="VARCHAR(63)"/>
+        <column name="CONFIGURATION_ID" type="VARCHAR(63)"/>
+        <column name="TITLE" type="VARCHAR(63)"/>
         <column name="FRAGMENT" type="VARCHAR(1023)"/>
         <column name="PARAMETERS" type="CLOB"/>
-        <column name="ROWSPAN" type="INTEGER"/>
-        <column name="TITLE" type="VARCHAR(63)"/>
         <column name="X" type="INTEGER"/>
         <column name="Y" type="INTEGER"/>
+        <column name="COLSPAN" type="INTEGER"/>
+        <column name="ROWSPAN" type="INTEGER"/>
     </createTable>
 </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml
index fb1ae2f5ee87ef81421765227ffdeca8682dd681..e77db9a1c3d3b13f9b4c297bf36cde0a4d92ccad 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml
@@ -7,20 +7,17 @@
         </column>
         <column name="BACKPACK" type="CLOB"/>
         <column name="CAPTION" type="VARCHAR(512)"/>
-        <column name="CREATEDATE" type="TIMESTAMP"/>
-        <column name="DELETEDATE" type="TIMESTAMP"/>
+        <column name="CREATEDATE" type="DATETIME"/>
         <column name="DESCRIPTION" type="VARCHAR(1023)"/>
         <column name="FORCEDPRIORITY" type="VARCHAR(15)"/>
         <column name="ICON_INFO" type="VARCHAR(1023)"/>
+        <column name="DELETEDATE" type="DATETIME"/>
         <column name="LINK_INFO" type="VARCHAR(1023)"/>
         <column name="ORIGINATORNAME" type="VARCHAR(63)"/>
         <column name="RECIPIENTUSERIDS" type="CLOB"/>
         <column name="TYPECODE" type="VARCHAR(63)"/>
         <column name="VERSION" type="INTEGER"/>
+        <column name="SUBCATEGORY" type="VARCHAR(256)"/>
     </createTable>
-    
-    <createIndex indexName="idx_asysnoticontents_contid" tableName="ASYS_NOTIFICATIONCONTENTS">
-        <column name="CONTENTID"/>
-    </createIndex>
 </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml
index f3ff1e9ae1ccab5ab2fc46dba3c28bc9e0a783ac..5ecd347c48718a326ba9ec9119f3b9d2e55f6e6c 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml
@@ -6,7 +6,7 @@
             <constraints primaryKey="true" primaryKeyName="PK_ASYS_NOTIFICATIONS_ID"/>
         </column>
         <column name="CONTENTID" type="CHAR(36)"/>
-        <column name="STATE" type="VARCHAR(15)"/>
+        <column name="STATE" type="VARCHAR(16)"/>
         <column name="USERID" type="VARCHAR(63)"/>
         <column name="RESOLVEDPRIORITY" type="VARCHAR(15)"/>
     </createTable>
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml
index c8fae3a479ec0862f068aee234a572c3f092d5c7..35ddb98cb9bb10336fa9fcfa993cd135f1f31b33 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml
@@ -9,9 +9,6 @@
         <column name="TITLE" type="VARCHAR(256)"/>
         <column name="GROUP_TYPE" type="VARCHAR(64)"/>
     </createTable>
-    <createIndex indexName="idx_asysrecordgroup_id" tableName="ASYS_RECORDGROUP">
-        <column name="ID"/>
-    </createIndex>
     <createIndex indexName="idx_asysrecordgroup_userid" tableName="ASYS_RECORDGROUP">
         <column name="USER_ID"/>
     </createIndex>
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml
index 4ea33eeb65bbdce19c15b13db043c8fc744e58ab..9f54423b467e072e41b99e53eabf9789457083c0 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml
@@ -5,10 +5,10 @@
             <column name="ROLENAME" type="VARCHAR(63)">
                 <constraints primaryKey="true" primaryKeyName="PK_ASYS_ROLES_ID"/>
             </column>
-            <column name="ROLETITLE" type="VARCHAR(63)"/>
+            <column name="ROLETITLE" type="NVARCHAR(63)"/>
             <column name="ROLEDESCRIPTION" type="VARCHAR(255)"/>
-            <column name="ASSIGNABLE" type="INTEGER"/>
-            <column name="CHILDREN" type="CLOB"/>
+            <column name="ASSIGNABLE" type="TINYINT"/>
+            <column name="CHILDREN" type="NCLOB"/>
         </createTable>
     </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml
index 9dd2c8b7d6d65db71a4b6ecb4b3482f1763c74ad..83fff19bd005bb2e605f38b29a189461f5970c26 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml
@@ -6,7 +6,7 @@
                 <constraints primaryKey="true" primaryKeyName="PK_ASYS_ROLES_CHILDREN_ID"/>
             </column>
             <column name="PARENT_ROLE" type="VARCHAR(63)"/>
-            <column name="CHILD_ROLE" type="VARCHAR(63)"/>
+            <column name="CHILD_ROLE" type="NVARCHAR(63)"/>
         </createTable>
     </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml
index 4e001416ea8db72052f9da8c0d0925e90d225150..ec0459b46b9596c3ba26f3aa4f3239bef0ea8608 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml
@@ -13,5 +13,8 @@
             <constraints nullable="false"/>
         </column>
     </createTable>
+    <createIndex tableName="ASYS_SEQUENCES" indexName="IDX_ASYS_SEQUENCES_ID_GUID">
+        <column name="ID_GUID"/>
+    </createIndex>
 </changeSet>
 </databaseChangeLog>
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml
index fea891c550df4d29827915634728cef5af053042..fb86982a2864b0d101a4fffb0ecd3106b14335c2 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml
@@ -13,6 +13,6 @@
     </createTable>
     <addPrimaryKey tableName="ASYS_TIMERS_SERVERRUNS"
                    columnNames="SERVERID, TIMERID"
-                   constraintName="PK_ASYS_TIMERS_SERVERRUNS_SERVERID_TIMERID"/>
+                   constraintName="PK_ASYS_TIMERS_SERVERRUNS"/>
 </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml
index c8d26b66bf9e3b832991f2f6f2be6522b0d58043..c2064247aa6464b3bda6f5abce670daf632404a2 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml
@@ -1,37 +1,38 @@
 <?xml version="1.1" encoding="UTF-8" standalone="no"?>
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-<changeSet author="j.hoermann" id="77e5fc97-1e89-45e2-a00f-29742d28ab7e">
-    <createTable tableName="ASYS_USERS">
-        <column name="ID" type="CHAR(36)">
-            <constraints primaryKey="true" primaryKeyName="PK_ASYS_USERS_ID"/>
-        </column>
-        <column name="DATE_NEW" type="DATETIME"/>
-        <column name="DATE_EDIT" type="DATETIME"/>
-        <column name="NAME" type="NVARCHAR(63)">
-            <constraints nullable="false"/>
-        </column>
-        <column name="GROUPID" type="NVARCHAR(63)">
-            <constraints nullable="false"/>
-        </column>
-        <column name="PROPKEY" type="VARCHAR(1024)">
-            <constraints nullable="false"/>
-        </column>
-        <column name="PROPVAL" type="VARCHAR(1024)"/>
-        <column name="PROPVAL_CLOB" type="CLOB"/>
-    </createTable>
-    <createIndex indexName="IDX_ASYS_USERS_NAME" tableName="ASYS_USERS">
-        <column name="NAME"/>
-    </createIndex>
-    <createIndex indexName="idx_asysusers_groupid" tableName="ASYS_USERS">
-        <column name="GROUPID"/>
-    </createIndex>
-    <!--normally a index should be created for propkey and propval but this causes due to it's length problems on some dbms-->
-    <!--<createIndex indexName="idx_asysusers_propkey" tableName="ASYS_USERS">
-        <column name="PROPKEY"/>
-    </createIndex>
-    <createIndex indexName="idx_asysusers_propval" tableName="ASYS_USERS">
-        <column name="PROPVAL"/>
-    </createIndex>-->
-    
-</changeSet>
+    <changeSet author="j.hoermann" id="77e5fc97-1e89-45e2-a00f-29742d28ab7e">
+        <createTable tableName="ASYS_USERS">
+            <column name="ID" type="CHAR(36)">
+                <constraints primaryKey="true" primaryKeyName="PK_ASYS_USERS_ID"/>
+            </column>
+            <column name="DATE_NEW" type="DATETIME"/>
+            <column name="DATE_EDIT" type="DATETIME"/>
+            <column name="NAME" type="NVARCHAR(63)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="GROUPID" type="NVARCHAR(63)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="PROPKEY" type="VARCHAR(1024)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="PROPVAL" type="VARCHAR(1024)"/>
+            <column name="PROPVAL_CLOB" type="CLOB"/>
+        </createTable>
+        <createIndex indexName="IDX_ASYS_USERS_NAME" tableName="ASYS_USERS">
+            <column name="NAME"/>
+        </createIndex>
+        <createIndex indexName="idx_asysusers_groupid" tableName="ASYS_USERS">
+            <column name="GROUPID"/>
+        </createIndex>
+    </changeSet>
+    <changeSet id="4d1dc8cd-2bca-4501-9458-9178287a4f38" author="s.listl" dbms="!mssql,!mysql,!mariadb">
+        <!--index can't be created on all dbms because of size restrictions-->
+        <createIndex indexName="idx_asysusers_propkey" tableName="ASYS_USERS">
+            <column name="PROPKEY"/>
+        </createIndex>
+        <createIndex indexName="idx_asysusers_propval" tableName="ASYS_USERS">
+            <column name="PROPVAL"/>
+        </createIndex>
+    </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index e7cfe339c61e4608ca6684efe418a5b877b7c979..2e698e94fb7e85a12cc41b1394634e3f5592f445 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -1152,7 +1152,7 @@
                 <scale v="8" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -1166,7 +1166,7 @@
                 <scale v="8" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -3108,6 +3108,48 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>DISCOUNT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2" />
+                <size v="14" />
+                <scale v="2" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DISCOUNTED_NET</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2" />
+                <size v="14" />
+                <scale v="2" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DISCOUNTED_VAT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2" />
+                <size v="14" />
+                <scale v="2" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -4844,6 +4886,20 @@
                   </customBooleanProperty>
                 </customProperties>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>INFO</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -8365,6 +8421,20 @@
                   </entityDependency>
                 </dependencies>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>RESPONSIBLE_CONTACT_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -9491,6 +9561,48 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>FILTER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SCOREPOINTS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OUTDATED</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -9554,48 +9666,55 @@
                 </dependencies>
               </entityFieldDb>
               <entityFieldDb>
-                <name>CLASSIFICATIONSCORE_ID</name>
+                <name>CLASSIFICATIONID</name>
                 <dbName></dbName>
-                <primaryKey v="false" />
+                <primaryKey v="true" />
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="true" />
-                <isUnique v="false" />
+                <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
-                <dependencies>
-                  <entityDependency>
-                    <name>aeeb4a24-4e92-4f78-a98c-3c423678000a</name>
-                    <entityName>CLASSIFICATIONSCORE</entityName>
-                    <fieldName>CLASSIFICATIONSCOREID</fieldName>
-                  </entityDependency>
-                </dependencies>
               </entityFieldDb>
               <entityFieldDb>
-                <name>CLASSIFICATIONID</name>
+                <name>OBJECT_TYPE</name>
                 <dbName></dbName>
-                <primaryKey v="true" />
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>VALUE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="true" />
-                <isUnique v="true" />
+                <isUnique v="false" />
                 <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>OBJECT_TYPE</name>
+                <name>SCOREPOINTS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="50" />
-                <scale v="0" />
-                <notNull v="true" />
+                <columnType v="2" />
+                <size v="14" />
+                <scale v="2" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -9622,20 +9741,6 @@
               <syncIds></syncIds>
             </auditSyncConfig>
             <entityFields>
-              <entityFieldDb>
-                <name>SCORE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="2" />
-                <size v="10" />
-                <scale v="2" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>CLASSIFICATIONSCOREID</name>
                 <dbName></dbName>
@@ -9692,6 +9797,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>SCOREPERCENT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2" />
+                <size v="10" />
+                <scale v="2" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -13179,8 +13298,8 @@
                 <name>STATUS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="4" />
-                <size v="10" />
+                <columnType v="12" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -14189,7 +14308,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -14515,7 +14634,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -14570,7 +14689,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -14860,6 +14979,62 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTACT_PERSON_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>RESPONSIBLE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>STATUS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -15110,6 +15285,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>STATUS_APPOINTMENT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -15159,29 +15348,29 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>MAXGRADEFORSCORE</name>
+                <name>CLASSIFICATIONGROUP_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="4" />
-                <size v="10" />
-                <scale v="0" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>CLASSIFICATIONGROUP_ID</name>
+                <name>MINPERCENT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <columnType v="4" />
+                <size v="10" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -15262,6 +15451,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>OUTDATED</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -15658,6 +15861,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>DISTRICT_AUTOADD</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -15790,31 +16007,11 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-            </entityFields>
-          </entityDb>
-          <entityDb>
-            <name>KNOWLEDGEDISCUSSION</name>
-            <dbName></dbName>
-            <idColumn>KNOWLEDGEDISCUSSIONID</idColumn>
-            <idGeneratorType v="0" />
-            <idGeneratorInterval v="1" />
-            <documentation></documentation>
-            <title></title>
-            <description></description>
-            <auditSyncConfig>
-              <name>auditSyncConfig</name>
-              <auditMode v="0" />
-              <syncActive v="false" />
-              <syncComplete v="true" />
-              <syncDirection v="1" />
-              <syncIds></syncIds>
-            </auditSyncConfig>
-            <entityFields>
               <entityFieldDb>
-                <name>PARENTENTRY</name>
+                <name>ADVISER_STATUS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
+                <columnType v="12" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -15825,7 +16022,7 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>STATUS</name>
+                <name>ADVISER_ROLE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
@@ -15839,12 +16036,12 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DISCUSSIONTEXT</name>
+                <name>VALID_FROM</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -15853,7 +16050,7 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DATE_EDIT</name>
+                <name>VALID_UNTIL</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
@@ -15866,22 +16063,42 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>DISTRICTCONTACT</name>
+            <dbName></dbName>
+            <idColumn>DISTRICTCONTACTID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="1" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
               <entityFieldDb>
-                <name>KNOWLEDGEDISCUSSIONID</name>
+                <name>ORIGIN</name>
                 <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
+                <primaryKey v="false" />
+                <columnType v="12" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="true" />
-                <index v="true" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>KNOWLEDGEMANAGEMENT_ID</name>
+                <name>STATUS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="1" />
@@ -15891,15 +16108,27 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>District assignment status</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                  <customJDitoProperty>
+                    <name>translate4Log</name>
+                    <global v="false" />
+                    <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/status/customproperties/translate4log/property.js</property>
+                  </customJDitoProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
-                <name>AUTHOR</name>
+                <name>ADVISER_ROLE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="50" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -15909,83 +16138,87 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DATE_NEW</name>
+                <name>ADVISER_CONTACT_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_NEW</name>
+                <name>DISTRICTCONTACTID</name>
                 <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="50" />
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_EDIT</name>
+                <name>DISTRICT_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="50" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
-                <title></title>
+                <title>District</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                  <customJDitoProperty>
+                    <name>translate4Log</name>
+                    <global v="false" />
+                    <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/district_id/customproperties/translate4log/property.js</property>
+                  </customJDitoProperty>
+                </customProperties>
               </entityFieldDb>
-            </entityFields>
-          </entityDb>
-          <entityDb>
-            <name>KNOWLEDGELINK</name>
-            <dbName></dbName>
-            <idColumn>KNOWLEDGELINKID</idColumn>
-            <idGeneratorType v="0" />
-            <idGeneratorInterval v="1" />
-            <documentation></documentation>
-            <title></title>
-            <description></description>
-            <auditSyncConfig>
-              <name>auditSyncConfig</name>
-              <auditMode v="0" />
-              <syncActive v="false" />
-              <syncComplete v="true" />
-              <syncDirection v="1" />
-              <syncIds></syncIds>
-            </auditSyncConfig>
-            <entityFields>
               <entityFieldDb>
-                <name>KNOWLEDGELINKID</name>
+                <name>CONTACT_ID</name>
                 <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
+                <primaryKey v="false" />
+                <columnType v="12" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="true" />
+                <notNull v="false" />
+                <isUnique v="false" />
                 <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="false" />
+                  </customBooleanProperty>
+                  <customStringProperty>
+                    <name>tableRef</name>
+                    <global v="false" />
+                    <property>CONTACT</property>
+                  </customStringProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DATE_EDIT</name>
+                <name>VALID_FROM</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
@@ -15999,12 +16232,12 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>KNOWLEDGEMANAGEMENT_ID</name>
+                <name>VALID_UNTIL</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -16013,7 +16246,7 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DATE_NEW</name>
+                <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
@@ -16027,7 +16260,7 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_NEW</name>
+                <name>USER_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
@@ -16041,12 +16274,12 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>OBJECT_TYPE</name>
+                <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="100" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -16055,7 +16288,7 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_EDIT</name>
+                <name>USER_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
@@ -16068,26 +16301,12 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>ROW_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
-            <name>KNOWLEDGEMANAGEMENT</name>
+            <name>KNOWLEDGEDISCUSSION</name>
             <dbName></dbName>
-            <idColumn>KNOWLEDGEMANAGEMENTID</idColumn>
+            <idColumn>KNOWLEDGEDISCUSSIONID</idColumn>
             <idGeneratorType v="0" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
@@ -16103,12 +16322,12 @@
             </auditSyncConfig>
             <entityFields>
               <entityFieldDb>
-                <name>DATE_EDIT</name>
+                <name>PARENTENTRY</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -16117,24 +16336,10 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>KNOWLEDGEMANAGEMENTID</name>
+                <name>STATUS</name>
                 <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="true" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>AUTHOR_CONTACT_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
+                <primaryKey v="false" />
+                <columnType v="12" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -16143,20 +16348,13 @@
                 <documentation></documentation>
                 <title></title>
                 <description></description>
-                <customProperties>
-                  <customBooleanProperty>
-                    <name>log</name>
-                    <global v="false" />
-                    <property v="true" />
-                  </customBooleanProperty>
-                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
-                <name>PUBLISH</name>
+                <name>DISCUSSIONTEXT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="36" />
+                <columnType v="2005" />
+                <size v="2147483647" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -16166,12 +16364,12 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_EDIT</name>
+                <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="63" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -16180,25 +16378,25 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>CONTENTDECODED</name>
+                <name>KNOWLEDGEDISCUSSIONID</name>
                 <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>TITLE</name>
+                <name>KNOWLEDGEMANAGEMENT_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="255" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -16206,20 +16404,13 @@
                 <documentation></documentation>
                 <title></title>
                 <description></description>
-                <customProperties>
-                  <customBooleanProperty>
-                    <name>log</name>
-                    <global v="false" />
-                    <property v="true" />
-                  </customBooleanProperty>
-                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
-                <name>CONTENT</name>
+                <name>AUTHOR</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
+                <columnType v="12" />
+                <size v="50" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -16227,13 +16418,6 @@
                 <documentation></documentation>
                 <title></title>
                 <description></description>
-                <customProperties>
-                  <customBooleanProperty>
-                    <name>log</name>
-                    <global v="false" />
-                    <property v="true" />
-                  </customBooleanProperty>
-                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
                 <name>DATE_NEW</name>
@@ -16254,21 +16438,7 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="63" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>RESPONSIBLE_CONTACT_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <size v="50" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -16276,24 +16446,17 @@
                 <documentation></documentation>
                 <title></title>
                 <description></description>
-                <customProperties>
-                  <customBooleanProperty>
-                    <name>log</name>
-                    <global v="false" />
-                    <property v="true" />
-                  </customBooleanProperty>
-                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
-                <name>TYPE</name>
+                <name>USER_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="36" />
+                <size v="50" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -16301,9 +16464,9 @@
             </entityFields>
           </entityDb>
           <entityDb>
-            <name>KNOWLEDGEROLES</name>
+            <name>KNOWLEDGELINK</name>
             <dbName></dbName>
-            <idColumn>KNOWLEDGEROLESID</idColumn>
+            <idColumn>KNOWLEDGELINKID</idColumn>
             <idGeneratorType v="0" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
@@ -16319,7 +16482,7 @@
             </auditSyncConfig>
             <entityFields>
               <entityFieldDb>
-                <name>KNOWLEDGEROLESID</name>
+                <name>KNOWLEDGELINKID</name>
                 <dbName></dbName>
                 <primaryKey v="true" />
                 <columnType v="1" />
@@ -16332,6 +16495,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
               <entityFieldDb>
                 <name>KNOWLEDGEMANAGEMENT_ID</name>
                 <dbName></dbName>
@@ -16341,13 +16518,41 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>ROLENAME</name>
+                <name>OBJECT_TYPE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
@@ -16360,12 +16565,40 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ROW_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
-            <name>KNOWLEDGEGITINTERFACE</name>
+            <name>KNOWLEDGEMANAGEMENT</name>
             <dbName></dbName>
-            <idColumn>KNOWLEDGEGITINTERFACEID</idColumn>
+            <idColumn>KNOWLEDGEMANAGEMENTID</idColumn>
             <idGeneratorType v="0" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
@@ -16395,7 +16628,7 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>KNOWLEDGEGITINTERFACEID</name>
+                <name>KNOWLEDGEMANAGEMENTID</name>
                 <dbName></dbName>
                 <primaryKey v="true" />
                 <columnType v="1" />
@@ -16405,25 +16638,1172 @@
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
-                <title></title>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>AUTHOR_CONTACT_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>PUBLISH</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTENTDECODED</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TITLE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTENT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>RESPONSIBLE_CONTACT_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                </customProperties>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>KNOWLEDGEROLES</name>
+            <dbName></dbName>
+            <idColumn>KNOWLEDGEROLESID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>KNOWLEDGEROLESID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>KNOWLEDGEMANAGEMENT_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ROLENAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="100" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>KNOWLEDGEGITINTERFACE</name>
+            <dbName></dbName>
+            <idColumn>KNOWLEDGEGITINTERFACEID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>KNOWLEDGEGITINTERFACEID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>GITCOMMIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="200" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SYSTEMNAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>KNOWLEDGEMANAGEMENTTAGMODERATION</name>
+            <dbName></dbName>
+            <idColumn>KNOWLEDGEMANAGEMENTTAGMODERATIONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>STATUS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>AB_ATTRIBUTE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>KNOWLEDGEMANAGEMENTTAGMODERATIONID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>KNOWLEDGETAG</name>
+            <dbName></dbName>
+            <idColumn>KNOWLEDGETAGID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>KNOWLEDGETAGID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>STATUS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TAG</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>KNOWLEDGETAGLINK</name>
+            <dbName></dbName>
+            <idColumn>KNOWLEDGETAGLINKID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>KNOWLEDGEMANAGEMENT_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>KNOWLEDGETAGLINKID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>KNOWLEDGETAG_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>AB_KEYWORD_CATEGORY</name>
+            <dbName></dbName>
+            <idColumn>AB_KEYWORD_CATEGORYID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>SORTINGBY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>AB_KEYWORD_CATEGORYID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SORTINGDIRECTION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="4" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>NAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="80" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>MST_TEAMLINK</name>
+            <dbName></dbName>
+            <idColumn>MST_TEAMLINKID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>OBJECT_ROWID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MST_TEAM_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MST_TEAMLINKID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>MST_TEAM</name>
+            <dbName></dbName>
+            <idColumn>MST_TEAMID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>MST_TEAMID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>IS_ARCHIVED</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SERVICE_URL</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TEAMNAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>GENERAL_CHANNELID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="48" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>WEB_URL</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="500" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>OBSERVATION</name>
+            <dbName></dbName>
+            <idColumn>OBSERVATIONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>OBJECT_FILTER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="80" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBSERVATION_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>NOTIFICATION_PRIO</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBSERVATIONID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TRIGGEREVENTDELETE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TRIGGEREVENTINSERT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TRIGGEREVENTUPDATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBSERVER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_FIELD</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>SALESPROJECTPHASEDEFINITION</name>
+            <dbName></dbName>
+            <idColumn>SALESPROJECTPHASEDEFINITIONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>PHASE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>GITCOMMIT</name>
+                <name>CHECKLIST_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="200" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DATE_NEW</name>
+                <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
@@ -16433,39 +17813,36 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_NEW</name>
+                <name>DESCRIPTION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="50" />
+                <size v="500" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>SYSTEMNAME</name>
+                <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="50" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_EDIT</name>
+                <name>USER_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
@@ -16475,81 +17852,43 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
-            </entityFields>
-          </entityDb>
-          <entityDb>
-            <name>KNOWLEDGEMANAGEMENTTAGMODERATION</name>
-            <dbName></dbName>
-            <idColumn>KNOWLEDGEMANAGEMENTTAGMODERATIONID</idColumn>
-            <idGeneratorType v="0" />
-            <idGeneratorInterval v="1" />
-            <documentation></documentation>
-            <title></title>
-            <description></description>
-            <auditSyncConfig>
-              <name>auditSyncConfig</name>
-              <auditMode v="0" />
-              <syncActive v="false" />
-              <syncComplete v="true" />
-              <syncDirection v="1" />
-              <syncIds></syncIds>
-            </auditSyncConfig>
-            <entityFields>
               <entityFieldDb>
-                <name>STATUS</name>
+                <name>SALESPROJECTPHASEDEFINITIONID</name>
                 <dbName></dbName>
-                <primaryKey v="false" />
+                <primaryKey v="true" />
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>AB_ATTRIBUTE_ID</name>
+                <name>USER_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <columnType v="12" />
+                <size v="50" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>KNOWLEDGEMANAGEMENTTAGMODERATIONID</name>
-                <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="true" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
-            <name>KNOWLEDGETAG</name>
+            <name>CHECKLISTENTRY</name>
             <dbName></dbName>
-            <idColumn>KNOWLEDGETAGID</idColumn>
+            <idColumn>CHECKLISTENTRYID</idColumn>
             <idGeneratorType v="0" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
-            <title></title>
             <description></description>
             <auditSyncConfig>
               <name>auditSyncConfig</name>
@@ -16561,7 +17900,7 @@
             </auditSyncConfig>
             <entityFields>
               <entityFieldDb>
-                <name>KNOWLEDGETAGID</name>
+                <name>CHECKLISTENTRYID</name>
                 <dbName></dbName>
                 <primaryKey v="true" />
                 <columnType v="1" />
@@ -16571,21 +17910,19 @@
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>STATUS</name>
+                <name>CHECKLIST_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
@@ -16599,7 +17936,19 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TITLE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="100" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
@@ -16613,11 +17962,10 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>TAG</name>
+                <name>USER_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
@@ -16627,21 +17975,19 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_NEW</name>
+                <name>TYPE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="50" />
+                <size v="10" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
@@ -16655,19 +18001,17 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
-            <name>KNOWLEDGETAGLINK</name>
+            <name>CHECKLIST</name>
             <dbName></dbName>
-            <idColumn>KNOWLEDGETAGLINKID</idColumn>
+            <idColumn>CHECKLISTID</idColumn>
             <idGeneratorType v="0" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
-            <title></title>
             <description></description>
             <auditSyncConfig>
               <name>auditSyncConfig</name>
@@ -16679,35 +18023,7 @@
             </auditSyncConfig>
             <entityFields>
               <entityFieldDb>
-                <name>DATE_EDIT</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>KNOWLEDGEMANAGEMENT_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>KNOWLEDGETAGLINKID</name>
+                <name>CHECKLISTID</name>
                 <dbName></dbName>
                 <primaryKey v="true" />
                 <columnType v="1" />
@@ -16717,11 +18033,10 @@
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DATE_NEW</name>
+                <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
@@ -16731,21 +18046,19 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>KNOWLEDGETAG_ID</name>
+                <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
@@ -16759,7 +18072,6 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
@@ -16773,19 +18085,17 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
-            <name>AB_KEYWORD_CATEGORY</name>
+            <name>CHECKLISTENTRYVALUE</name>
             <dbName></dbName>
-            <idColumn>AB_KEYWORD_CATEGORYID</idColumn>
+            <idColumn>CHECKLISTENTRYVALUEID</idColumn>
             <idGeneratorType v="0" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
-            <title></title>
             <description></description>
             <auditSyncConfig>
               <name>auditSyncConfig</name>
@@ -16797,21 +18107,46 @@
             </auditSyncConfig>
             <entityFields>
               <entityFieldDb>
-                <name>SORTINGBY</name>
+                <name>OBJECT_ROWID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="4" />
-                <size v="10" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>IS_FULFILLED</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>AB_KEYWORD_CATEGORYID</name>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CHECKLISTENTRYVALUEID</name>
                 <dbName></dbName>
                 <primaryKey v="true" />
                 <columnType v="1" />
@@ -16821,35 +18156,71 @@
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>SORTINGDIRECTION</name>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="4" />
+                <size v="50" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>NAME</name>
+                <name>OBJECT_TYPE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="80" />
+                <size v="50" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CHECKLISTENTRY_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
                 <description></description>
               </entityFieldDb>
             </entityFields>
diff --git a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/district_id/customproperties/translate4log/property.js b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/district_id/customproperties/translate4log/property.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab6e2e133acbfa75f37c5dfb34ce24ccb9376997
--- /dev/null
+++ b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/district_id/customproperties/translate4log/property.js
@@ -0,0 +1,22 @@
+import("system.translate");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+import("District_lib");
+import("system.result");
+import("Loghistory_lib");
+import("Contact_lib");
+
+var params = Translate4LogParams.load();
+
+if (params.action == 'I')
+{
+    //resolve district and adviser
+    var arrDistrictContact = DistrictUtils.getDataFromDistrictContact(params.rowId);
+    var districtName = DistrictUtils.getDistrictName(arrDistrictContact[0]);
+    var adviserName = ContactUtils.getTitleByContactId(arrDistrictContact[1]);
+    result.string(districtName + " (" + params.value + "); " + translate.text("Adviser") + ": " + adviserName);
+}
+else if (params.action == 'D')
+{
+    result.string(params.value);
+}
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/status/customproperties/translate4log/property.js b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/status/customproperties/translate4log/property.js
new file mode 100644
index 0000000000000000000000000000000000000000..0001c86efec9e7efc60aaa66eb84c37974cd3d6a
--- /dev/null
+++ b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/status/customproperties/translate4log/property.js
@@ -0,0 +1,23 @@
+import("system.translate");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+import("District_lib");
+import("system.result");
+import("Loghistory_lib");
+import("Contact_lib");
+
+var params = Translate4LogParams.load();
+
+//log status change
+if (params.action == 'U')
+{
+    //resolve keyword
+    var keyname = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), params.value);
+
+    //resolve district and adviser
+    var arrDistrictContact = DistrictUtils.getDataFromDistrictContact(params.rowId);
+    var districtName = DistrictUtils.getDistrictName(arrDistrictContact[0]);
+    var adviserName = ContactUtils.getTitleByContactId(arrDistrictContact[1]);
+    
+    result.string(keyname + " (" + translate.text("District") + ": " + districtName + "; " + translate.text("Adviser") + ": " + adviserName + ")");
+}
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js
index aa7a1fe2a061e4d09e65eab58e503c37562cf5a6..7305220193d3d0f0504d588ccb1c70db27d139b2 100644
--- a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js
+++ b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js
@@ -12,4 +12,4 @@ var type = newSelect("OBJECT_TYPE")
            .where("SALESORDER.SALESORDERID", params.rowId)
            .cell();
 
-result.string(db.cell(ContextUtils.getNameSql(type, params.value)));
+result.string(ContextUtils.getTitleByContext(type, params.value));
diff --git a/aliasDefinition/IndexSearchAlias/IndexSearchAlias.aod b/aliasDefinition/IndexSearchAlias/IndexSearchAlias.aod
new file mode 100644
index 0000000000000000000000000000000000000000..79981226f95fdf63a642c463bce21dc56fa76f5e
--- /dev/null
+++ b/aliasDefinition/IndexSearchAlias/IndexSearchAlias.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<aliasDefinition xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/aliasDefinition/1.2.0">
+  <name>IndexSearchAlias</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <datasourceType v="18" />
+</aliasDefinition>
diff --git a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod
index 6f4f1b2dca5291f2a8a2ad8cbb2b4d47552c98ff..d2f38c17d694f7f0ff0e6aac6b4fb5110b8e7774 100644
--- a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod
+++ b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod
@@ -19,9 +19,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -32,9 +32,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -47,7 +47,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -58,9 +58,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2004" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -73,7 +73,7 @@
                 <columnType v="1" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <title></title>
@@ -84,9 +84,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -99,9 +99,9 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -112,7 +112,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -125,7 +125,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -138,7 +138,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -149,9 +149,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2004" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -172,9 +172,9 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -183,9 +183,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -196,9 +196,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -211,7 +211,7 @@
                 <columnType v="12" />
                 <size v="127" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <title></title>
@@ -231,9 +231,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2004" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -246,7 +246,7 @@
                 <columnType v="12" />
                 <size v="31" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -257,9 +257,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="-5" />
-                <size v="19" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -270,9 +270,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -283,9 +283,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -298,7 +298,7 @@
                 <columnType v="12" />
                 <size v="127" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -311,7 +311,7 @@
                 <columnType v="12" />
                 <size v="127" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -324,7 +324,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <title></title>
@@ -337,7 +337,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -350,7 +350,7 @@
                 <columnType v="12" />
                 <size v="127" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -363,7 +363,7 @@
                 <columnType v="12" />
                 <size v="1024" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -374,9 +374,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2004" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -389,7 +389,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="true" />
                 <title></title>
@@ -402,7 +402,7 @@
                 <columnType v="12" />
                 <size v="127" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -415,7 +415,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -428,7 +428,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -447,9 +447,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -462,7 +462,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <title></title>
@@ -473,11 +473,11 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -486,11 +486,11 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -501,9 +501,9 @@
                 <columnType v="12" />
                 <size v="512" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -512,11 +512,11 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -525,11 +525,11 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -538,9 +538,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -551,9 +551,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -564,11 +564,11 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -579,9 +579,9 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -592,7 +592,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -605,7 +605,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -616,11 +616,11 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -631,9 +631,9 @@
                 <columnType v="12" />
                 <size v="32" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -644,7 +644,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -657,7 +657,7 @@
                 <columnType v="1" />
                 <size v="1" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -668,9 +668,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -691,7 +691,7 @@
                 <columnType v="12" />
                 <size v="127" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -700,12 +700,12 @@
               <entityFieldDb>
                 <name>DBID</name>
                 <dbName></dbName>
-                <primaryKey v="true" />
+                <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="191" />
+                <size v="1023" />
                 <scale v="0" />
                 <notNull v="true" />
-                <isUnique v="true" />
+                <isUnique v="false" />
                 <index v="true" />
                 <title></title>
                 <description></description>
@@ -717,7 +717,7 @@
                 <columnType v="12" />
                 <size v="127" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -730,7 +730,7 @@
                 <columnType v="12" />
                 <size v="127" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -743,9 +743,9 @@
                 <columnType v="12" />
                 <size v="512" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -756,7 +756,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -769,7 +769,7 @@
                 <columnType v="12" />
                 <size v="1023" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -778,13 +778,13 @@
               <entityFieldDb>
                 <name>ID</name>
                 <dbName></dbName>
-                <primaryKey v="false" />
+                <primaryKey v="true" />
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
+                <notNull v="false" />
+                <isUnique v="true" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -795,7 +795,7 @@
                 <columnType v="12" />
                 <size v="2000" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -814,9 +814,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -827,9 +827,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -842,7 +842,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="true" />
                 <title></title>
@@ -855,7 +855,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <title></title>
@@ -868,7 +868,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="true" />
                 <title></title>
@@ -881,9 +881,9 @@
                 <columnType v="12" />
                 <size v="1024" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -894,9 +894,9 @@
                 <columnType v="12" />
                 <size v="1024" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -905,9 +905,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -928,9 +928,9 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -939,9 +939,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -952,9 +952,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -964,10 +964,10 @@
                 <name>DESCRIPTION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
+                <columnType v="12" />
+                <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -978,9 +978,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2004" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -993,7 +993,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <title></title>
@@ -1004,9 +1004,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1019,8 +1019,8 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
+                <notNull v="false" />
+                <isUnique v="true" />
                 <index v="false" />
                 <title></title>
                 <description></description>
@@ -1032,9 +1032,9 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -1045,7 +1045,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1058,7 +1058,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1071,7 +1071,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1084,7 +1084,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1095,9 +1095,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2004" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1118,7 +1118,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="true" />
                 <title></title>
@@ -1131,7 +1131,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <title></title>
@@ -1142,9 +1142,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="15" />
+                <size v="16" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="true" />
                 <title></title>
@@ -1157,7 +1157,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="true" />
                 <title></title>
@@ -1170,7 +1170,7 @@
                 <columnType v="12" />
                 <size v="15" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1190,9 +1190,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1205,7 +1205,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1218,7 +1218,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1231,7 +1231,7 @@
                 <columnType v="12" />
                 <size v="1023" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1242,9 +1242,9 @@
                 <dbName></dbName>
                 <primaryKey v="true" />
                 <columnType v="1" />
-                <size v="36" />
+                <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <title></title>
@@ -1255,9 +1255,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1268,9 +1268,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1283,7 +1283,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1294,9 +1294,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1307,9 +1307,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1328,9 +1328,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1343,7 +1343,7 @@
                 <columnType v="12" />
                 <size v="512" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1356,7 +1356,7 @@
                 <columnType v="12" />
                 <size v="1023" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1367,9 +1367,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1382,7 +1382,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1393,9 +1393,9 @@
                 <dbName></dbName>
                 <primaryKey v="true" />
                 <columnType v="1" />
-                <size v="36" />
+                <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <title></title>
@@ -1408,7 +1408,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1419,9 +1419,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1432,9 +1432,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1445,9 +1445,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1458,9 +1458,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1473,7 +1473,7 @@
                 <columnType v="12" />
                 <size v="1023" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1486,7 +1486,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1497,9 +1497,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="63" />
+                <size v="512" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -1532,7 +1532,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
@@ -1546,7 +1546,7 @@
                 <columnType v="12" />
                 <size v="15" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1560,7 +1560,7 @@
                 <columnType v="12" />
                 <size v="1023" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1572,9 +1572,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1586,9 +1586,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1602,7 +1602,7 @@
                 <columnType v="12" />
                 <size v="1023" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1616,7 +1616,7 @@
                 <columnType v="12" />
                 <size v="1023" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1628,9 +1628,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1642,9 +1642,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1658,7 +1658,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1670,9 +1670,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1686,7 +1686,7 @@
                 <columnType v="12" />
                 <size v="512" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1700,7 +1700,21 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SUBCATEGORY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="256" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1734,7 +1748,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1748,7 +1762,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1762,7 +1776,7 @@
                 <columnType v="1" />
                 <size v="1" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1776,7 +1790,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1790,7 +1804,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1804,7 +1818,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
@@ -1838,7 +1852,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1852,7 +1866,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1866,7 +1880,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
@@ -1897,10 +1911,10 @@
                 <name>CONDTYPE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="5" />
-                <size v="5" />
+                <columnType v="-6" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1912,9 +1926,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1928,7 +1942,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
@@ -1942,7 +1956,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1976,7 +1990,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1990,7 +2004,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2004,7 +2018,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
@@ -2038,7 +2052,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2049,10 +2063,10 @@
                 <name>ASSIGNABLE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="4" />
-                <size v="10" />
+                <columnType v="-6" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2066,7 +2080,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
@@ -2078,9 +2092,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2094,7 +2108,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2126,9 +2140,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2140,9 +2154,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2156,7 +2170,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2168,9 +2182,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2184,7 +2198,7 @@
                 <columnType v="1" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
@@ -2196,9 +2210,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2210,9 +2224,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2242,12 +2256,12 @@
               <entityFieldDb>
                 <name>DATAID</name>
                 <dbName></dbName>
-                <primaryKey v="true" />
+                <primaryKey v="false" />
                 <columnType v="1" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="true" />
+                <notNull v="false" />
+                <isUnique v="false" />
                 <index v="true" />
                 <documentation></documentation>
                 <title></title>
@@ -2260,7 +2274,7 @@
                 <columnType v="1" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2272,9 +2286,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="2005" />
-                <size v="2147483647" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2288,7 +2302,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2300,11 +2314,11 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -2336,9 +2350,9 @@
                 <columnType v="12" />
                 <size v="127" />
                 <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
+                <notNull v="false" />
+                <isUnique v="true" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -2348,9 +2362,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2364,9 +2378,9 @@
                 <columnType v="12" />
                 <size v="127" />
                 <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
+                <notNull v="false" />
+                <isUnique v="true" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -2614,7 +2628,7 @@
                 <columnType v="1" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
@@ -2624,13 +2638,13 @@
               <entityFieldDb>
                 <name>TAGNAME</name>
                 <dbName></dbName>
-                <primaryKey v="false" />
+                <primaryKey v="true" />
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
                 <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
+                <isUnique v="true" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -2638,13 +2652,13 @@
               <entityFieldDb>
                 <name>TAGVALUE</name>
                 <dbName></dbName>
-                <primaryKey v="false" />
+                <primaryKey v="true" />
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
                 <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
+                <isUnique v="true" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -2750,9 +2764,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2764,9 +2778,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2778,9 +2792,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2794,7 +2808,7 @@
                 <columnType v="12" />
                 <size v="5" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2808,7 +2822,7 @@
                 <columnType v="12" />
                 <size v="5" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2820,9 +2834,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2836,7 +2850,7 @@
                 <columnType v="12" />
                 <size v="127" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
@@ -2850,7 +2864,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2864,7 +2878,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2876,9 +2890,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2892,7 +2906,7 @@
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2904,9 +2918,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2926,9 +2940,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -2939,9 +2953,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -2954,7 +2968,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -2967,7 +2981,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <title></title>
@@ -2980,7 +2994,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -2993,7 +3007,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -3006,7 +3020,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -3019,7 +3033,7 @@
                 <columnType v="12" />
                 <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -3030,9 +3044,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -3043,9 +3057,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -3056,9 +3070,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="4" />
-                <size v="10" />
+                <size v="0" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -3069,9 +3083,9 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <title></title>
@@ -3104,7 +3118,7 @@
                 <columnType v="12" />
                 <size v="64" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -3118,7 +3132,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
@@ -3132,7 +3146,7 @@
                 <columnType v="12" />
                 <size v="256" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="true" />
                 <documentation></documentation>
@@ -3146,7 +3160,7 @@
                 <columnType v="1" />
                 <size v="46" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="true" />
                 <documentation></documentation>
@@ -3180,7 +3194,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="true" />
                 <index v="true" />
                 <documentation></documentation>
@@ -3194,7 +3208,7 @@
                 <columnType v="12" />
                 <size v="64" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="true" />
                 <documentation></documentation>
@@ -3208,7 +3222,7 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="true" />
                 <documentation></documentation>
@@ -3222,6 +3236,1324 @@
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_ICONS</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>BINDATA</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2004" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DESCRIPTION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="127" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ICON_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_MAILREPOSIT</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>FLAGGED</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>FOLDER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MAIL</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MAILUSER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>RECEIVEDATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>RECENT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>RECIPIENT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="2046" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SEEN</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SENDER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="127" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SENTDATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SUBJECT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="1023" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_MAILREPOSIT_HASH</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>MAILHASH</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="31" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MAILINFO</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="12" />
+                <size v="127" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_CALENDARSYNC</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>LASTMODIFIED</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MASTERUID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="512" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SLAVEUID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="12" />
+                <size v="127" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SUSER</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_UIDRESOLVER</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>ENTRY_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ENTRY_UID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="512" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ENTRY_USER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_FARM</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>ADDRESS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CLIENTS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>FARMVERSION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="12" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>LICENSE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SENCODING</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SERVERID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="12" />
+                <size v="127" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>WORKLOAD</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_FARM_CLIENT</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>CHARACTERISTIC</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CLIENTID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SADDRESS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SERVERID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USERNAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_AUDIT</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>ACOLUMNNAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="127" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ALIAS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ATABLENAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="127" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ATIMESTAMP</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>AUSER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATASETID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="1023" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATASETNEWVALUE_BLOB</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2004" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATASETNEWVALUE_CLOB</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATASETNEWVALUE_STRING</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="1023" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>LOGTIME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>LOGTYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>LOGWRITERUID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="127" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SQLACTION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="1" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_SYNCSLAVES</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>ACTIVE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DESCRIPTION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DEVICEID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="40" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INTERVALL</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>LASTSYNC</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SLAVEUID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="12" />
+                <size v="127" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_XMPP_OFFLINESTANZA</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>ATIMESTAMP</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>JID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="64" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>STANZA</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_XMPP_HISTORY</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>ATIMESTAMP</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CHATMARKER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="16" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>JID_FROM</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="64" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>JID_TO</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="64" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MSGMARKER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MSGTYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="16" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>STANZA</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ASYS_VERSIONHISTORY</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="0" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="0" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OPERATION_DESCRIPTION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OPERATION_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TABLE_NAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>VERSION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="true" />
diff --git a/aliasDefinition/flowableEngine/flowableEngine.aod b/aliasDefinition/flowableEngine/flowableEngine.aod
new file mode 100644
index 0000000000000000000000000000000000000000..3f70b6e5426e5a6166c834f5b5aaa90b0ba2360a
--- /dev/null
+++ b/aliasDefinition/flowableEngine/flowableEngine.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<aliasDefinition xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/aliasDefinition/1.2.0">
+  <name>flowableEngine</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <datasourceType v="19" />
+</aliasDefinition>
diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
index 9471b78c62c46bf047b627256b96bc873f0faf12..1096be53741c5f1a45f70340ae7713df140bf1ff 100644
--- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
+++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
@@ -340,12 +340,16 @@
                 <name>District</name>
                 <kind v="10077" />
               </entityNode>
+              <entityNode>
+                <name>SalesprojectPhaseDefinition</name>
+                <kind v="10077" />
+              </entityNode>
             </childNodes>
           </entityNode>
         </childNodes>
       </entityNode>
       <entityNode>
-        <name>User Administration</name>
+        <name>Useradministration</name>
         <kind v="123" />
         <title>User Administration</title>
         <icon>VAADIN:UNLINK</icon>
diff --git a/entity/360Degree_entity/360Degree_entity.aod b/entity/360Degree_entity/360Degree_entity.aod
index 62c86300ec6c74f84a6ac8fbb50ffd4daf7f5259..cf7b453f0372f7c208eeff54b74d378215ab1cc8 100644
--- a/entity/360Degree_entity/360Degree_entity.aod
+++ b/entity/360Degree_entity/360Degree_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>360Degree_entity</name>
+  <title>360 Degree</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/360Degree_entity/documentation.adoc</documentation>
-  <title>360 Degree</title>
   <siblings>
     <element>Offer_entity</element>
     <element>Salesproject_entity</element>
@@ -25,6 +25,7 @@
     </entityField>
     <entityField>
       <name>TITLE</name>
+      <title>Title</title>
       <linkedContextProcess>%aditoprj%/entity/360Degree_entity/entityfields/title/linkedContextProcess.js</linkedContextProcess>
     </entityField>
     <entityParameter>
@@ -71,11 +72,10 @@
     <entityField>
       <name>ENTITY_NAME</name>
       <title>Module</title>
-      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/entity_name/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
-      <name>DATE</name>
+      <name>DATE_NEW</name>
       <title>Date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
@@ -105,12 +105,6 @@
         </entityParameter>
       </children>
     </entityProvider>
-    <entityField>
-      <name>YEAR</name>
-      <title>Year</title>
-      <groupable v="true" />
-      <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/year/valueProcess.js</valueProcess>
-    </entityField>
     <entityActionGroup>
       <name>newModule</name>
       <title>New module</title>
@@ -166,13 +160,6 @@
       <contentType>IMAGE</contentType>
       <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/icon/valueProcess.js</valueProcess>
     </entityField>
-    <entityField>
-      <name>ACTIVE</name>
-      <title>Active</title>
-      <contentType>TEXT</contentType>
-      <groupable v="true" />
-      <dropDownProcess>%aditoprj%/entity/360Degree_entity/entityfields/active/dropDownProcess.js</dropDownProcess>
-    </entityField>
     <entityParameter>
       <name>BaseContextId_param</name>
       <expose v="true" />
@@ -185,6 +172,25 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>GROUP</name>
+      <title>Group</title>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>DESCRIPTION</name>
+      <title>Description</title>
+    </entityField>
+    <entityField>
+      <name>YEAR</name>
+      <title>Year</title>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>ACTIVE</name>
+      <title>Active</title>
+      <dropDownProcess>%aditoprj%/entity/360Degree_entity/entityfields/active/dropDownProcess.js</dropDownProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
@@ -203,20 +209,32 @@
         <jDitoRecordFieldMapping>
           <name>TARGET_CONTEXT.value</name>
         </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>TARGET_CONTEXT.displayValue</name>
+        </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>TITLE.value</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
-          <name>DATE.value</name>
+          <name>DESCRIPTION.value</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
-          <name>ACTIVE.value</name>
+          <name>DATE_NEW.value</name>
           <isFilterable v="true" />
-          <isLookupFilter v="true" />
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>YEAR.value</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>ENTITY_NAME.value</name>
         </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>GROUP.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>ACTIVE.value</name>
+          <isFilterable v="true" />
+        </jDitoRecordFieldMapping>
       </recordFieldMappings>
     </jDitoRecordContainer>
   </recordContainers>
diff --git a/entity/360Degree_entity/documentation.adoc b/entity/360Degree_entity/documentation.adoc
index d14c31a7c939c89fb3ace5ae20758bb83cb2f522..b07c00500ceb7ed1fc24f01140cf046eb2f41251 100644
--- a/entity/360Degree_entity/documentation.adoc
+++ b/entity/360Degree_entity/documentation.adoc
@@ -3,9 +3,9 @@
 The 360Degree_entity shows the Connection between data models.
 The entity has two providers for persons and organizations.
 
-The 360Degree_entity shows direct connections, don´t be confused with the ObjectRelation_entity.
+The 360Degree_entity shows direct connections, don´t be confused with the ObjectRelation_entity.
 
-== Adding new modules to the 360° view
+== Adding new modules to the 360° view
 You may want to display more modules within the 360degree view (for example after creating and implemeting your own module).
 
 .An Example:
@@ -14,6 +14,23 @@ display it in the 360degree view.
 
 Heres is a list of what you need to do whenever you want to do this:
 
-- Add an entry in the function `ContextUtils.getSelectMap` which is located in the `Context_lib` (check out the documentation there for further details). _Speaking of the example above you need to define there how to retrieve the t-shirt-data for a contact_
+- At first you have to fill/add certain Fields/Processes in your new Context.
+    - Add (These have to be written exactly like that, if not already existing):
+        - DATE_NEW, this Field has to contain a Date as a Long Value. That will be used as the Date Value you can see in the Timeline View-Template.
+        - ACTIVE, in this Field you can specify which Datasets are active or not. You have to declare that in the Value Expression as a Case-When due to the Filter
+    - Fill (these can be filled in the specific Entity as a Process)
+        - #CONTENTTITLE, this will be the main display Text and the blue Link
+        - #CONTENTDESCRIPTION, this will be the smaller, mostly longer, Text beneath the #CONTENTTITLE 
+        
+- Add an element (with the name of the context you want to add) in the process of the `ObjectType_param` in the *corresponding provider* which is located in the `360Degree_entity`. _We would extend the JSON-Object which is returned in the `PersonObjects`-provider by the name of our t-shirt-context: "TShirt" in our example
 
-- Add an entry (with the name of the context you want to add) in the process of the `ObjectType_param` in the *corresponding provider* which is located in the `360Degree_entity`. _We would extend the array which is returned in the `PersonObjects`-provider by the name of our t-shirt-context: "TShirt" in our example_
\ No newline at end of file
+- In that JSON-Object you can/have to add some Configuration Elements to change the results.
+    - connectionField, here you have to declare a Field that writes exactly like the one in your Entity (Standard is CONTACT_ID!!!). The Value of this Field will be used to compare it with the Object_Rowid. 
+    - setGroupBy: here you can declare a DB-Column that will be used as the new group by of that context. A good example is Order. We want to group by the Ordertype so we have to declare ORDERTYPE as our groupBy. 
+        - If your DB-Value is related to a Keyword you also have to use groupByKeyword and add the Container as Value
+
+- If you have a Connection of 1:N in your Database Schema (like Task and TaskLink) you have to add specific Properties in your Context Object. Lets take TaskLink as a Example.
+    - subContext: the Name of the "Link"-Context -> TaskLink
+    - childField: The Field where the LinkID to your Parent is stored -> TASK_ID
+    - parentField: The field in your Parent Context where your Connection to your Child is stored -> TASKID
+    - contactIdField: The Field in the Link Context where your Contactid is stored -> OBJECT_ROWID
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js
index 353aa9f3676bc0c8d4a823b2944a5794acbb4677..fbdfd3fd2e124194d93b908f33d2b56bffbf1bee 100644
--- a/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js
+++ b/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js
@@ -7,11 +7,11 @@ if (contextList)
 {
     var found = false;
 
-    contextList.forEach(function (context) 
+    for(context in contextList)
     {
         if(context == "Campaign")
             found = true;        
-    });
+    }
     if(found)
         result.string(neon.COMPONENTSTATE_AUTO);
     else
diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js
index f1cfb310581815a99377b7da0152c0483f24d9d5..64c597b2e188312d6589a3d1bbf53cb00ff83e95 100644
--- a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js
+++ b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js
@@ -6,11 +6,11 @@ var contextList = JSON.parse(vars.getString("$param.ObjectType_param"));
 if (contextList)
 {
     var found = false;
-    contextList.forEach(function (context) 
+    for(context in contextList)
     {
         if(context == "Contract")
             found = true;        
-    });
+    }
     if(found)
         result.string(neon.COMPONENTSTATE_AUTO);
     else
diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js
index 02a2b07b699e399fed77114a8841d76b2d0d35b1..ce3eb11c9bd8dba37fe4bf96fd936fd9fec4f843 100644
--- a/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js
+++ b/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js
@@ -6,11 +6,11 @@ var contextList = JSON.parse(vars.getString("$param.ObjectType_param"));
 if (contextList)
 {
     var found = false;
-    contextList.forEach(function (context) 
+    for(context in contextList)
     {
         if(context == "Offer")
             found = true;        
-    });
+    }
     if(found)
         result.string(neon.COMPONENTSTATE_AUTO);
     else
diff --git a/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js
index 1c2b2b9123cb9512962e66ccf03bc2c7fecef0ab..6b9ec8164168c9286b1646b88d8f18e83708d833 100644
--- a/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js
+++ b/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js
@@ -6,11 +6,11 @@ var contextList = JSON.parse(vars.getString("$param.ObjectType_param"));
 if (contextList)
 {
     var found = false;
-    contextList.forEach(function (context) 
+    for(context in contextList)
     {
         if(context == "Order")
             found = true;        
-    });
+    }
     if(found)
         result.string(neon.COMPONENTSTATE_AUTO);
     else
diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js
index f23023f7d177f0f5d7eec62b42371db2b0289173..6a18dc9adfd19a69b749c88e9282cfb186e35d5c 100644
--- a/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js
+++ b/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js
@@ -7,11 +7,11 @@ if (contextList)
 {
     var found = false;
     
-    contextList.forEach(function (context) 
+    for(context in contextList)
     {
         if(context == "Salesproject")
             found = true;        
-    });
+    }
     if(found)
         result.string(neon.COMPONENTSTATE_AUTO);
     else
diff --git a/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js b/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js
index 86503dcd7f316c24dd3b7e31d296e35802db29a4..9b0fe874baa54a8604d5955087be959dfb644563 100644
--- a/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js
+++ b/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js
@@ -3,4 +3,21 @@ import("system.result");
 
 //No campaign, since a campaign can only be linked with a person. 
 //Even when all entries of persons are displayed in the organisation_entity: It's still nonsense to display campaigns per status.
-result.object(["Salesproject", "Offer", "Order", "Contract", "SupportTicket"]);
\ No newline at end of file
+
+var res = {
+    "Salesproject": {}, 
+    "Offer": {}, 
+    "Order": {
+        "setGroupBy":"ORDERTYPE",
+        "groupByKeyword":"OrderType"
+    }, 
+    "Contract": {}, 
+    "SupportTicket": {
+        "subContext":"TaskLink",
+        "childField":"TASK_ID",
+        "parentField":"TASK_TASKID",
+        "contactIdField":"OBJECT_ROWID"
+    }
+}
+
+result.string(JSON.stringify(res))
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js b/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js
index 51c40eed05ba103ae4347347277aea4e2bad20a3..3d9c6d75f1d5026e6e31e985752e51b6a88a9262 100644
--- a/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js
+++ b/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js
@@ -1,4 +1,25 @@
 import("system.vars");
 import("system.result");
 
-result.object(["Offer", "Contract", "Campaign", "Order", "SupportTicket"]);
\ No newline at end of file
+var res = { 
+    "Offer": {}, 
+    "Order": {
+        "setGroupBy":"ORDERTYPE",
+        "groupByKeyword":"OrderType"
+    }, 
+    "Contract": {}, 
+    "SupportTicket": {        
+        "subContext":"TaskLink",
+        "childField":"TASK_ID",
+        "parentField":"TASK_TASKID",
+        "contactIdField":"OBJECT_ROWID"
+    },
+    "Campaign": {        
+        "subContext":"CampaignParticipant",
+        "childField":"CAMPAIGN_ID",
+        "parentField":"CAMPAIGNID",
+        "contactIdField":"CONTACT_ID"
+    }
+};
+
+result.string(JSON.stringify(res));
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/year/valueProcess.js b/entity/360Degree_entity/entityfields/year/valueProcess.js
deleted file mode 100644
index c21dcc8cde6f3f27028dbb1844895cc55f093ff8..0000000000000000000000000000000000000000
--- a/entity/360Degree_entity/entityfields/year/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.datetime");
-import("system.result");
-import("system.vars");
-
-var dateVal = vars.get("$field.DATE");
-result.string(datetime.toDate(dateVal, "yyyy"));
\ No newline at end of file
diff --git a/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js
index 3014803809e5526a81241581d3f12bc965edf216..8f6bf8cf9a87d4c4973130e7769a562086b9463c 100644
--- a/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js
@@ -1,36 +1,20 @@
-import("system.util");
-import("system.db");
-import("system.vars");
+import("system.datetime");
+import("system.logging");
+import("Util_lib");
+import("system.translate");
 import("system.result");
+import("system.vars");
 import("Context_lib");
-import("system.translate");
+import("Keyword_lib");
 
-if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param") && vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"))
-{    
-    var active;
-    var selectMap = ContextUtils.getSelectMap();
-    if(vars.exists("$local.filter") && vars.get("$local.filter") )
-    {
-        var filter = vars.get("$local.filter");
-        if (filter.filter)
-            if(filter.filter.childs != null && filter.filter.childs.length > 0)
-            {
-                filter.filter.childs.forEach(function(child)
-                {
-                    if(child.name === "ACTIVE")
-                        active = child.key == 'true';
-                });  
-            }  
-    }
-    
-    var contextList = JSON.parse(vars.getString("$param.ObjectType_param"));
-    var contactId = vars.get("$param.ObjectRowId_param");
-    var idValues;
-    if (vars.exists("$local.idvalues"))
-        idValues = vars.get("$local.idvalues");
-    
-    var res =  _get360Data(selectMap, contactId, contextList, active, idValues);
-    result.object(res);   
+
+if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param") 
+    && vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"))
+{
+    var contextList = JSON.parse(vars.get("$param.ObjectType_param"));
+    var contactId = JSON.parse(vars.get("$param.ObjectRowId_param"));
+    var data = _get360Data(contactId, contextList);
+    result.object(data);   
 } 
 else
 {
@@ -38,79 +22,65 @@ else
 }
 
 /** 
- * load all data for the 360Degree tree.
- * @param {Object} pSelectMap the select map (result of ContextUtils.getSelectMap())
- * @param {String[]} pContactId the Contactid the 360 Degree tree should be loaded for
- * @param {String[]} pContextList list of contexts to load. Note that subcontexts use their own list, defined in ContextUtils
- * @param {Boolean} [pActive=undefined] if not undefined: it select only for active / inactive state
- * @param {Array} [pUids=undefined] uids of the 360° entity that are used for filtering, each rowId needs the format: 
- *                                    {id: "«rowid»", type: "«context id»"}
+ * collects all data for the 360Degree tree.
+ * @param {String} pContactId, the main Contactid that will be used for the Connections
+ * @param {String[]} pContextList, a list of Contexts that should be displayed
  *  
  *  @return {String[][]} the resulting data
  */
-function _get360Data(pSelectMap, pContactId, pContextList, pActive, pUids)
+function _get360Data(pContactId, pContextList)
 {   
-    //if there are uids for filtering, group them per context:
-    var uidContextMap = new Map();//Map where key is the type (contextname) and value is an array of the rowIds for that type
-    if (pUids)
-    {
-        pUids.forEach(function (uid){
-            uid = JSON.parse(uid);
-            if (uidContextMap.has(uid.type))
-                uidContextMap.get(uid.type).push(uid.id);
-            else
-                uidContextMap.set(uid.type, [uid.id]);
-        });
-    }
-
     var resultList = [];
-    pContextList.forEach(function (context) 
+    var filter = vars.get("$sys.filter");
+    for(var context in pContextList) 
     {
-        var rowIds;
-        if (pUids)
-        {
-            //when a Uid-filter exists, but there is no context for filtering we can skip that context, 
-            //otherwise we need to filter for the found row ids of that context
-            if (!uidContextMap.has(context))
-                return;
-            else
-                rowIds = uidContextMap.get(context);
-        }
-        var data = db.table(ContextUtils.getContextDataSql(context, JSON.parse(pContactId), true, pActive, true, true, rowIds));
-        data.forEach(function (row) 
+        var group = ContextUtils.getTitle(context, true);
+        if(pContextList[context].hasOwnProperty("setGroupBy") && pContextList[context].hasOwnProperty("groupByKeyword"))
+            var groupKeyword = Utils.objectFromMap(new Map(KeywordUtils.getEntryNamesAndIdsByContainer(pContextList[context]["groupByKeyword"])));
+
+        var res = ContextUtils.getContextDataViaReadEntity(context, pContextList[context], filter, pContactId);
+        if(res.length > 0)
         {
-            var active;
-            if(pActive != undefined) //ACTIVE
-                active = translate.text(pActive);
-            else
+            res.forEach(function (row) 
             {
-                if(pSelectMap[context].activeStates && pSelectMap[context].activeStates.indexOf(row[3]) > -1)    
-                    active = translate.text("true");
-                else
-                    active = translate.text("false");
-            }
-            
-            var groupBy = row[4];
-            if(groupBy == "")
-                groupBy = ContextUtils.getEntityTitle(context, true);
-            
-            var uid = JSON.stringify({id: row[0], type: context});
-            resultList.push([
-                uid, // UID
-                row[0], // TARGET_ID
-                context, // TARGET_CONTEXT
-                row[1], // TITLE
-                row[2], //DATE
-                active,
-                groupBy
-                ]); 
-        });
-    });  
-    
-    resultList.sort(function (a,b) {
-        if (a[4] < b[4]) return  1;
-        if (a[4] > b[4]) return -1;
-        return 0;
-    })
+                var uid = JSON.stringify({
+                    "id": row["#UID"], 
+                    "type": context
+                });
+                var targetid = row["#UID"];
+                var title = row["#CONTENTTITLE"];
+                var description = row["#CONTENTDESCRIPTION"];
+                var dataDate = row["DATE_NEW"];
+                var active = row["ACTIVE"];
+                if(pContextList[context].hasOwnProperty("setGroupBy"))
+                    group = row[pContextList[context]["setGroupBy"]]
+                
+
+                if(pContextList[context].hasOwnProperty("setGroupBy"))
+                {
+                    if( pContextList[context].hasOwnProperty("groupByKeyword") && groupKeyword)
+                        group = groupKeyword[row[pContextList[context]["setGroupBy"]]]
+                    else
+                        group = row[pContextList[context]["setGroupBy"]]
+                }
+                
+                resultList.push([
+                    uid,                                          // UID
+                    targetid,                                     // TARGET_ID
+                    context,                                      // TARGET_CONTEXT
+                    translate.text(pContextList[context]),        // TARGET_CONTEXT.displayValue
+                    title,                                        // TITLE
+                    description,                                  // DESCRIPTION
+                    dataDate,                                     // DATE
+                    datetime.toDate(dataDate, "yyyy"),            // YEAR
+                    ContextUtils.getEntity(context),              // ENTITY_NAME
+                    translate.text(group),                        // GROUP
+                    active                                        // ACTIVE
+                    ]); 
+            });
+        }
+    }
+    var sortArr = [9, false]
+    resultList = ArrayUtils.sortMulti(resultList, sortArr)
     return resultList;
 }
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/ActivityLink_entity.aod b/entity/ActivityLink_entity/ActivityLink_entity.aod
index e5518fff2fac73d9b45fcd177cd580a8edf2a289..d9d7007ec9227ddae16877a203d93ce5281bb21f 100644
--- a/entity/ActivityLink_entity/ActivityLink_entity.aod
+++ b/entity/ActivityLink_entity/ActivityLink_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ActivityLink_entity</name>
+  <title>Connection</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ActivityLink_entity/documentation.adoc</documentation>
-  <title>Connection</title>
   <titlePlural>Connections</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -106,17 +106,11 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>66f9eb3e-6f56-4731-a868-ffc9ffcce340</name>
-          <tableName>ACTIVITYLINK</tableName>
-          <primaryKey>ACTIVITYLINKID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <onDBInsert>%aditoprj%/entity/ActivityLink_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
+      <onDBUpdate>%aditoprj%/entity/ActivityLink_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
+      <onDBDelete>%aditoprj%/entity/ActivityLink_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ACTIVITY_ID.value</name>
@@ -151,6 +145,15 @@
           <recordfield>ACTIVITYLINK.DATE_EDIT</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>66f9eb3e-6f56-4731-a868-ffc9ffcce340</name>
+          <tableName>ACTIVITYLINK</tableName>
+          <primaryKey>ACTIVITYLINKID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js b/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js
index 8b080bceea92c146a676b0f33cc7cb87d4e86b9d..95c4eea5367140dc2d81e470ba0607adf52f07c1 100644
--- a/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js
+++ b/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js
@@ -7,5 +7,5 @@ import("Context_lib");
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) {
     result.string("");
 } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
-    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
+    result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")));
 }
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js b/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js
index 8c0ab0e94b135d4b1b475ecbbde7900cd3fd109e..62c7fcc7146f0ddc96c32458381a18507a831252 100644
--- a/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js
@@ -5,5 +5,4 @@ import("Sql_lib");
 
 var cond = newWhereIfSet("ACTIVITYLINK.ACTIVITY_ID", "$param.ActivityId_param", SqlBuilder.EQUAL());
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/recordcontainers/db/onDBDelete.js b/entity/ActivityLink_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ff91a5eb319120b527776868367d3cdb0f445f1
--- /dev/null
+++ b/entity/ActivityLink_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,3 @@
+import("Workflow_lib");
+
+WorkflowSignalSender.deleted();
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/recordcontainers/db/onDBInsert.js b/entity/ActivityLink_entity/recordcontainers/db/onDBInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..54f0349c9f1ddaab6b25f85f758d52928df41847
--- /dev/null
+++ b/entity/ActivityLink_entity/recordcontainers/db/onDBInsert.js
@@ -0,0 +1,3 @@
+import("Workflow_lib");
+
+WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/recordcontainers/db/onDBUpdate.js b/entity/ActivityLink_entity/recordcontainers/db/onDBUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..2e53f3cad9a9edf21cc5bbc6fdecc00c5001dfee
--- /dev/null
+++ b/entity/ActivityLink_entity/recordcontainers/db/onDBUpdate.js
@@ -0,0 +1,3 @@
+import("Workflow_lib");
+
+WorkflowSignalSender.updated();
\ No newline at end of file
diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index 9163db06e98eabcd7d5addaa2c6d2a2dfcd6f17a..989e3516e41bd5e72029a4d6078bb40722e17fe7 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Activity_entity</name>
+  <title>Activity</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Activity_entity/documentation.adoc</documentation>
-  <title>Activity</title>
   <grantDeleteProcess>%aditoprj%/entity/Activity_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Activity_entity/contentTitleProcess.js</contentTitleProcess>
   <afterUiInit>%aditoprj%/entity/Activity_entity/afterUiInit.js</afterUiInit>
@@ -103,10 +103,10 @@
     </entityField>
     <entityParameter>
       <name>OnlyInnate_param</name>
-      <title>Show only own</title>
       <expose v="true" />
       <mandatory v="false" />
       <documentation>%aditoprj%/entity/Activity_entity/entityfields/onlyinnate_param/documentation.adoc</documentation>
+      <title>Show only own</title>
     </entityParameter>
     <entityParameter>
       <name>ObjectId_param</name>
@@ -157,6 +157,7 @@
       <title>Date (Month)</title>
       <contentType>TEXT</contentType>
       <groupable v="true" />
+      <displayValueProcess>%aditoprj%/entity/Activity_entity/entityfields/entrymonth/displayValueProcess.js</displayValueProcess>
       <onValueChangeTypes>
         <element>MASK</element>
         <element>PROCESS</element>
@@ -338,21 +339,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityActionField>
-      <name>newActivity</name>
-      <title>New activity</title>
-      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:HOURGLASS_END</iconId>
-      <tooltip>New activity</tooltip>
-      <tooltipProcess>%aditoprj%/entity/Activity_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess>
-    </entityActionField>
-    <entityActionField>
-      <name>newTask</name>
-      <title>New task</title>
-      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
-      <actionOrder v="1" />
-      <iconId>VAADIN:TASKS</iconId>
-    </entityActionField>
     <entityParameter>
       <name>ParentId_param</name>
       <expose v="true" />
@@ -414,13 +400,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityActionField>
-      <name>newOffer</name>
-      <title>New offer</title>
-      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newoffer/onActionProcess.js</onActionProcess>
-      <actionOrder v="0" />
-      <iconId>VAADIN:CART</iconId>
-    </entityActionField>
     <entityConsumer>
       <name>Employees</name>
       <dependency>
@@ -488,19 +467,6 @@
         <fieldName>LinkedAppointments</fieldName>
       </dependency>
     </entityConsumer>
-    <entityActionField>
-      <name>newSupportticket</name>
-      <title>New Support ticket</title>
-      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newsupportticket/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:CHAT</iconId>
-    </entityActionField>
-    <entityActionField>
-      <name>openAdminView</name>
-      <title>Open admin view</title>
-      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:CURLY_BRACKETS</iconId>
-      <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/openadminview/stateProcess.js</stateProcess>
-    </entityActionField>
     <entityParameter>
       <name>PresetDocuments_param</name>
       <expose v="true" />
@@ -606,7 +572,7 @@
     </entityParameter>
     <entityField>
       <name>countLinks</name>
-      <title> number of connections</title>
+      <title>number of connections</title>
       <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/countlinks/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -689,11 +655,85 @@
         </entityParameter>
       </children>
     </entityProvider>
+    <entityActionGroup>
+      <name>MSTeamsActions</name>
+      <title>MS Teams</title>
+      <state>EDITABLE</state>
+      <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js</stateProcess>
+      <children>
+        <entityActionField>
+          <name>importFromTeams</name>
+          <title>Import from Teams</title>
+          <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js</onActionProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityActionField>
+      <name>newActivity</name>
+      <title>New activity</title>
+      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:HOURGLASS_END</iconId>
+      <tooltip>New activity</tooltip>
+      <tooltipProcess>%aditoprj%/entity/Activity_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>newTask</name>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <actionOrder v="1" />
+      <iconId>VAADIN:TASKS</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>newOffer</name>
+      <title>New offer</title>
+      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newoffer/onActionProcess.js</onActionProcess>
+      <actionOrder v="0" />
+      <iconId>VAADIN:CART</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>newSupportticket</name>
+      <title>New Support ticket</title>
+      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newsupportticket/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CHAT</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>openAdminView</name>
+      <title>Open admin view</title>
+      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CURLY_BRACKETS</iconId>
+      <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/openadminview/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityActionGroup>
+      <name>filterActions</name>
+      <children>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/filteractions/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/filteractions/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Activity_entity/entityfields/filteractions/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityField>
+      <name>infoTable</name>
+      <title>Description</title>
+      <contentType>LONG_TEXT</contentType>
+      <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/infotable/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <maximumDbRows v="10000" />
       <fromClauseProcess>%aditoprj%/entity/Activity_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Activity_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
@@ -701,15 +741,7 @@
       <onDBInsert>%aditoprj%/entity/Activity_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Activity_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Activity_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>4d4e82f5-fd0d-48e0-805a-c713d73dfae0</name>
-          <tableName>ACTIVITY</tableName>
-          <primaryKey>ACTIVITYID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ACTIVITYID.value</name>
@@ -812,6 +844,15 @@
           <isFilterable v="true" />
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>4d4e82f5-fd0d-48e0-805a-c713d73dfae0</name>
+          <tableName>ACTIVITY</tableName>
+          <primaryKey>ACTIVITYID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtensionSet>
           <name>Attribute_filter</name>
diff --git a/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/onActionProcess.js b/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/stateProcess.js b/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/titleProcess.js b/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Activity_entity/entityfields/filteractions/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/filteractions/children/observe/onActionProcess.js b/entity/Activity_entity/entityfields/filteractions/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Activity_entity/entityfields/filteractions/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/filteractions/children/observe/stateProcess.js b/entity/Activity_entity/entityfields/filteractions/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Activity_entity/entityfields/filteractions/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/filteractions/children/observe/titleProcess.js b/entity/Activity_entity/entityfields/filteractions/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Activity_entity/entityfields/filteractions/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/infotable/valueProcess.js b/entity/Activity_entity/entityfields/infotable/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..54f280282884c70778f950ac3da83d0bb3a0e43d
--- /dev/null
+++ b/entity/Activity_entity/entityfields/infotable/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("system.text");
+
+result.string(text.html2text(vars.get("$field.INFO")));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js b/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..102768f5f8e122cca4946d1cce6beae65d2e3ff5
--- /dev/null
+++ b/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.neon");
+
+neon.openContext("MSTeamsActivityImport", "MSTeamsActivityImportEdit_view", null, neon.OPERATINGSTATE_VIEW, {
+    "ObjectRowId_param" : vars.get("$param.RowId_param"),
+    "ObjectType_param": vars.get("$param.ObjectId_param")
+});
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js b/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2708ddc1ec8a3c626e049d0956bd4b116ed2c10b
--- /dev/null
+++ b/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+import("MSTeams_lib");
+
+var isTeamsEnabled = vars.get("$param.ObjectId_param") in MSTeamsUtils.getTeamLinkContexts() && MSTeamsUtils.isTeamsEnabled();
+result.string(isTeamsEnabled ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/newoffer/onActionProcess.js b/entity/Activity_entity/entityfields/newoffer/onActionProcess.js
index 2973002c2cfac6ea1cf0ff1bc79b0c50aa31d5db..73cd9c4d17edf67a358563f95030f6ce963e1859 100644
--- a/entity/Activity_entity/entityfields/newoffer/onActionProcess.js
+++ b/entity/Activity_entity/entityfields/newoffer/onActionProcess.js
@@ -1,4 +1,21 @@
+import("Sql_lib");
 import("system.vars");
 import("Offer_lib");
 
-OfferUtils.createNewOffer(null, null, null, vars.get("$field.ACTIVITYID"));
\ No newline at end of file
+var activityId = vars.get("$field.ACTIVITYID");
+var activityLinks = newSelect("ACTIVITYLINK.OBJECT_TYPE, ACTIVITYLINK.OBJECT_ROWID")
+                                .from("ACTIVITYLINK")
+                                .where("ACTIVITYLINK.ACTIVITY_ID", activityId)
+                                .and("ACTIVITYLINK.OBJECT_TYPE", ["Person", "Organisation", "Salesproject"], SqlBuilder.IN())
+                                .table();
+
+//make a map from the 2d-array to easily access the ids by objectType
+var linkMap = new Map(activityLinks);
+
+//if we only have one Person: that person is the contact.
+//otherwise: we check for organisations: if we only have one then we use that one.
+//same logic for salesprojects: if we have only one: use that one
+var contactId = linkMap.get("Person") || linkMap.get("Organisation");
+var salesprojectId = linkMap.get("Salesproject");
+
+OfferUtils.createNewOffer("Salesproject", salesprojectId, contactId, activityId);
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/openadminview/onActionProcess.js b/entity/Activity_entity/entityfields/openadminview/onActionProcess.js
index 2421bcf840468a2ac89ea751cec95d99dea8c1a9..0723fb5772c2503dc64fbca951dc124fe6c0769a 100644
--- a/entity/Activity_entity/entityfields/openadminview/onActionProcess.js
+++ b/entity/Activity_entity/entityfields/openadminview/onActionProcess.js
@@ -4,8 +4,8 @@ import("Context_lib");
 AdminViewUtils.open("ACTIVITYID", [
     ["PARENT_ID", vars.get("$field.PARENT_ID")],
     ["PARENT_CONTEXT", vars.get("$field.PARENT_CONTEXT")],
-    ["DATE_NEW", vars.get("$field.DATE_NEW")],
-    ["DATE_EDIT", vars.get("$field.DATE_EDIT")],
+    ["DATE_NEW", vars.get("$field.DATE_NEW"), "DATE"],
+    ["DATE_EDIT", vars.get("$field.DATE_EDIT"), "DATE"],
     ["USER_NEW", vars.get("$field.USER_NEW")],
     ["USER_EDIT", vars.get("$field.USER_EDIT")]
 ]);
\ No newline at end of file
diff --git a/entity/Activity_entity/recordcontainers/db/conditionProcess.js b/entity/Activity_entity/recordcontainers/db/conditionProcess.js
index 0b11a5004b58c4183c958973a80043c56bcac66f..950fcd1f1dc1877ea33c1de0d3c20e92fd9e654a 100644
--- a/entity/Activity_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Activity_entity/recordcontainers/db/conditionProcess.js
@@ -59,5 +59,4 @@ if (Utils.toBoolean(vars.get("$param.OnlyInnate_param")))
 condition.andIfSet("ACTIVITY.PARENT_ID", "$param.ParentId_param");
 condition.andIfSet("ACTIVITY.PARENT_CONTEXT", "$param.ParentContext_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(condition.toString());
\ No newline at end of file
diff --git a/entity/Activity_entity/recordcontainers/db/onDBInsert.js b/entity/Activity_entity/recordcontainers/db/onDBInsert.js
index c50343f5ee151ae93ea0838053e69c138540a21b..03ba2693c5c83c04813081360c6380aa0d248181 100644
--- a/entity/Activity_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Activity_entity/recordcontainers/db/onDBInsert.js
@@ -28,8 +28,12 @@ if(vars.exists("$param.VisitPlanEntryId_param") && vars.get("$param.VisitPlanEnt
 {    
     var values = [$KeywordRegistry.visitPlanEntryStatus$Visitreportcreated()];
     var columns = ["STATUS"];
-    var update = newWhere("VISITPLANENTRY.VISITPLANENTRYID", vars.get("$param.VisitPlanEntryId_param"))
+    var updateEntry = newWhere("VISITPLANENTRY.VISITPLANENTRYID", vars.get("$param.VisitPlanEntryId_param"))
                             .updateData(true, "VISITPLANENTRY", columns, null, values);
+                            
+    var recommendationId = newSelect("VISITPLANENTRY.VISITRECOMMENDATION_ID").from("VISITPLANENTRY").where("VISITPLANENTRY.VISITPLANENTRYID", vars.get("$param.VisitPlanEntryId_param"))
+    
+    newWhere("VISITRECOMMENDATION.VISITRECOMMENDATIONID", recommendationId).deleteData(true, "VISITRECOMMENDATION");
 }
 
 if (vars.exists("$param.InsertLinks_param") && vars.get("$param.InsertLinks_param"))
diff --git a/entity/AddressType_entity/AddressType_entity.aod b/entity/AddressType_entity/AddressType_entity.aod
index 44fe6f291552d9072dd56043974aaaf7e422024e..ed17a9345db928ee2a78d54a2ff245c449469b09 100644
--- a/entity/AddressType_entity/AddressType_entity.aod
+++ b/entity/AddressType_entity/AddressType_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>AddressType_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/AddressType_entity/documentation.adoc</documentation>
@@ -40,8 +40,8 @@
     </entityProvider>
     <entityParameter>
       <name>UsageFilter_param</name>
-      <title></title>
       <expose v="true" />
+      <title></title>
       <description>PARAMETER</description>
     </entityParameter>
     <entityProvider>
@@ -52,17 +52,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/AddressType_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>a4614347-7edb-4101-9e79-40971acfd79e</name>
-          <tableName>AB_KEYWORD_ENTRY</tableName>
-          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>AB_KEYWORD_ENTRYID.value</name>
@@ -77,6 +68,15 @@
           <recordfield>AB_KEYWORD_ENTRY.TITLE</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>a4614347-7edb-4101-9e79-40971acfd79e</name>
+          <tableName>AB_KEYWORD_ENTRY</tableName>
+          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/AddressType_entity/recordcontainers/db/conditionProcess.js b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js
index 19180612ce1d42532dc6f3807b84884e8469b4ad..6e937ecf4c22f7a5bb99a4320ddb55e7a32590f0 100644
--- a/entity/AddressType_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js
@@ -18,5 +18,4 @@ if (usageFilter)
             SqlBuilder.IN())
 }
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/AddressValidation_entity/AddressValidation_entity.aod b/entity/AddressValidation_entity/AddressValidation_entity.aod
index 4f1ed59385145f4ad623b3590763ae1ff9ad8a25..7a1a4919353fdbb0d05b7e6770155d47ebd991db 100644
--- a/entity/AddressValidation_entity/AddressValidation_entity.aod
+++ b/entity/AddressValidation_entity/AddressValidation_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>AddressValidation_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/AddressValidation_entity/documentation.adoc</documentation>
@@ -194,9 +194,6 @@
         <jDitoRecordFieldMapping>
           <name>DISTRICT.value</name>
         </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>REGION.value</name>
-        </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>STATE.value</name>
         </jDitoRecordFieldMapping>
diff --git a/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js b/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js
index e92fed1fd8c707472ada73dd1673279aeb618992..506f8a365a9e962f97b5e7f04490319cc8d883ba 100644
--- a/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js
@@ -49,7 +49,6 @@ else
             row.cityExt,
             row.country,
             row.district,
-            row.region,
             row.state,
             row.road,
             row.buildingNo,
diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod
index b1cf501940c85a3f845264d1a6a8bca878db1948..1420961a65ff83f6d6c2c00e56263bbe1be92072 100644
--- a/entity/Address_entity/Address_entity.aod
+++ b/entity/Address_entity/Address_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Address_entity</name>
+  <title>Address</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Address_entity/documentation.adoc</documentation>
-  <title>Address</title>
   <contentTitleProcess>%aditoprj%/entity/Address_entity/contentTitleProcess.js</contentTitleProcess>
   <afterOperatingState>%aditoprj%/entity/Address_entity/afterOperatingState.js</afterOperatingState>
   <titlePlural>Addresses</titlePlural>
@@ -23,6 +23,7 @@
     <entityField>
       <name>ADDRESSADDITION</name>
       <title>Address addition</title>
+      <stateProcess>%aditoprj%/entity/Address_entity/entityfields/addressaddition/stateProcess.js</stateProcess>
     </entityField>
     <entityField>
       <name>ADDRESSID</name>
@@ -31,6 +32,7 @@
     <entityField>
       <name>ADDRIDENTIFIER</name>
       <title>{$ADDRESS_IDENTIFIER}</title>
+      <stateProcess>%aditoprj%/entity/Address_entity/entityfields/addridentifier/stateProcess.js</stateProcess>
     </entityField>
     <entityField>
       <name>ADDR_TYPE</name>
@@ -43,6 +45,7 @@
     <entityField>
       <name>BUILDINGNO</name>
       <title>House number</title>
+      <stateProcess>%aditoprj%/entity/Address_entity/entityfields/buildingno/stateProcess.js</stateProcess>
     </entityField>
     <entityField>
       <name>CITY</name>
@@ -57,6 +60,7 @@
       <title>Country</title>
       <consumer>Countries</consumer>
       <mandatory v="true" />
+      <stateProcess>%aditoprj%/entity/Address_entity/entityfields/country/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Address_entity/entityfields/country/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Address_entity/entityfields/country/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -79,6 +83,7 @@
       <name>STATE</name>
       <title>${ADDRESS_STATE}</title>
       <mandatoryProcess>%aditoprj%/entity/Address_entity/entityfields/state/mandatoryProcess.js</mandatoryProcess>
+      <stateProcess>%aditoprj%/entity/Address_entity/entityfields/state/stateProcess.js</stateProcess>
     </entityField>
     <entityField>
       <name>ZIP</name>
@@ -254,10 +259,10 @@
         </entityParameter>
         <entityParameter>
           <name>OrganisationId_param</name>
-          <title></title>
           <valueProcess>%aditoprj%/entity/Address_entity/entityfields/organisationandcontactaddresses/children/organisationid_param/valueProcess.js</valueProcess>
           <expose v="true" />
           <documentation>%aditoprj%/entity/Address_entity/entityfields/organisationandcontactaddresses/children/organisationid_param/documentation.adoc</documentation>
+          <title></title>
         </entityParameter>
         <entityParameter>
           <name>ContactId_param</name>
@@ -487,23 +492,21 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>formattedAddress</name>
+      <stateProcess>%aditoprj%/entity/Address_entity/entityfields/formattedaddress/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/Address_entity/entityfields/formattedaddress/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/Address_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Address_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBInsert>%aditoprj%/entity/Address_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Address_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
-      <linkInformation>
-        <linkInformation>
-          <name>6a0005cc-c64b-4044-9712-c9d00f02d7a8</name>
-          <tableName>ADDRESS</tableName>
-          <primaryKey>ADDRESSID</primaryKey>
-          <isUIDTable v="true" />
-        </linkInformation>
-      </linkInformation>
+      <onDBDelete>%aditoprj%/entity/Address_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ADDRESS.value</name>
@@ -604,6 +607,15 @@
           <recordfield>ADDRESS.LON</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>56df9517-4983-430b-bd06-d029007b76b3</name>
+          <tableName>ADDRESS</tableName>
+          <primaryKey>ADDRESSID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Address_entity/entityfields/address/stateProcess.js b/entity/Address_entity/entityfields/address/stateProcess.js
index 3644f13c625a21d01f132729ba0aa8b888166a02..005ea314f1ddba67091c33e6f8c8ed259e6c6440 100644
--- a/entity/Address_entity/entityfields/address/stateProcess.js
+++ b/entity/Address_entity/entityfields/address/stateProcess.js
@@ -1,4 +1,11 @@
+import("system.neon");
+import("system.vars");
 import("system.result");
 import("WsValidation_lib");
 
-result.string(WsValidationFieldUtils.mainFieldStateProcess(WsValidationType.get().TYPE_STREET_NOMINATIM));
\ No newline at end of file
+// The field is only displayed in edit mode because there is the "formattedAddress" field which one shows the fromated address.
+// If the field has a Value it would be displayed next to the formattedAddress field in view mode, so in this case the state is set to invisible.
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW)
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+else
+    result.string(WsValidationFieldUtils.mainFieldStateProcess(WsValidationType.get().TYPE_STREET_NOMINATIM));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/address_ws/stateProcess.js b/entity/Address_entity/entityfields/address_ws/stateProcess.js
index e20c40eb313f2a3ac9fa5bcea35d7665e4274744..1e05ad82e9970e26accfdad7cf94cbb65f7e15ff 100644
--- a/entity/Address_entity/entityfields/address_ws/stateProcess.js
+++ b/entity/Address_entity/entityfields/address_ws/stateProcess.js
@@ -1,4 +1,11 @@
+import("system.neon");
+import("system.vars");
 import("system.result");
 import("WsValidation_lib");
 
-result.string(WsValidationFieldUtils.wsFieldStateProcess(WsValidationType.get().TYPE_STREET_NOMINATIM));
\ No newline at end of file
+// The field is only displayed in edit mode because there is the "formattedAddress" field which one shows the fromated address.
+// If the field has a Value it would be displayed next to the formattedAddress field in view mode, so in this case the state is set to invisible.
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW)
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+else
+    result.string(WsValidationFieldUtils.wsFieldStateProcess(WsValidationType.get().TYPE_STREET_NOMINATIM));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/addressaddition/stateProcess.js b/entity/Address_entity/entityfields/addressaddition/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed5e161dcc793ca6dc3a379eea6d6b3445eb3b3c
--- /dev/null
+++ b/entity/Address_entity/entityfields/addressaddition/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+// The field is only displayed in edit mode because there is the "formattedAddress" field which one shows the fromated address.
+// If the field has a Value it would be displayed next to the formattedAddress field in view mode, so in this case the state is set to invisible.
+if (vars.get("$sys.recordstate") == "" || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW)
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/addridentifier/stateProcess.js b/entity/Address_entity/entityfields/addridentifier/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed5e161dcc793ca6dc3a379eea6d6b3445eb3b3c
--- /dev/null
+++ b/entity/Address_entity/entityfields/addridentifier/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+// The field is only displayed in edit mode because there is the "formattedAddress" field which one shows the fromated address.
+// If the field has a Value it would be displayed next to the formattedAddress field in view mode, so in this case the state is set to invisible.
+if (vars.get("$sys.recordstate") == "" || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW)
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/buildingno/stateProcess.js b/entity/Address_entity/entityfields/buildingno/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed5e161dcc793ca6dc3a379eea6d6b3445eb3b3c
--- /dev/null
+++ b/entity/Address_entity/entityfields/buildingno/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+// The field is only displayed in edit mode because there is the "formattedAddress" field which one shows the fromated address.
+// If the field has a Value it would be displayed next to the formattedAddress field in view mode, so in this case the state is set to invisible.
+if (vars.get("$sys.recordstate") == "" || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW)
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/city/stateProcess.js b/entity/Address_entity/entityfields/city/stateProcess.js
index e2ef4a95e3c8fef0eb47912e2344bd35bad880f4..fe5eecb4a34b7031f7a69192eed73d6d4c5ec4d4 100644
--- a/entity/Address_entity/entityfields/city/stateProcess.js
+++ b/entity/Address_entity/entityfields/city/stateProcess.js
@@ -1,4 +1,11 @@
+import("system.neon");
+import("system.vars");
 import("system.result");
 import("WsValidation_lib");
 
-result.string(WsValidationFieldUtils.mainFieldStateProcess(WsValidationType.get().TYPE_CITY_NOMINATIM));
\ No newline at end of file
+// The field is only displayed in edit mode because there is the "formattedAddress" field which one shows the fromated address.
+// If the field has a Value it would be displayed next to the formattedAddress field in view mode, so in this case the state is set to invisible.
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW)
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+else
+    result.string(WsValidationFieldUtils.mainFieldStateProcess(WsValidationType.get().TYPE_CITY_NOMINATIM));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/city_ws/stateProcess.js b/entity/Address_entity/entityfields/city_ws/stateProcess.js
index 1017598abbdba0191d7b1e0da4496723a21aff9f..7095f69b78189f64e649f434fa0178d6d7bd26cf 100644
--- a/entity/Address_entity/entityfields/city_ws/stateProcess.js
+++ b/entity/Address_entity/entityfields/city_ws/stateProcess.js
@@ -1,4 +1,9 @@
+import("system.neon");
+import("system.vars");
 import("system.result");
 import("WsValidation_lib");
 
-result.string(WsValidationFieldUtils.wsFieldStateProcess(WsValidationType.get().TYPE_CITY_NOMINATIM));
\ No newline at end of file
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW)
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+else
+    result.string(WsValidationFieldUtils.wsFieldStateProcess(WsValidationType.get().TYPE_CITY_NOMINATIM));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/country/stateProcess.js b/entity/Address_entity/entityfields/country/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed5e161dcc793ca6dc3a379eea6d6b3445eb3b3c
--- /dev/null
+++ b/entity/Address_entity/entityfields/country/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+// The field is only displayed in edit mode because there is the "formattedAddress" field which one shows the fromated address.
+// If the field has a Value it would be displayed next to the formattedAddress field in view mode, so in this case the state is set to invisible.
+if (vars.get("$sys.recordstate") == "" || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW)
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/formattedaddress/stateProcess.js b/entity/Address_entity/entityfields/formattedaddress/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..46a443dd90259fda67204407ab940f6e0250ca58
--- /dev/null
+++ b/entity/Address_entity/entityfields/formattedaddress/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") != "" && vars.get("$sys.recordstate") != neon.OPERATINGSTATE_VIEW)
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/formattedaddress/valueProcess.js b/entity/Address_entity/entityfields/formattedaddress/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3d034c555c7e69cb6da47bc501fdf0f6059037a1
--- /dev/null
+++ b/entity/Address_entity/entityfields/formattedaddress/valueProcess.js
@@ -0,0 +1,57 @@
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+import("Address_lib");
+
+result.string(setAddressData(
+[
+    [
+        [
+            "2",
+            vars.get("$field.ADDRESS"),
+            vars.get("$field.BUILDINGNO"),
+            vars.get("$field.ZIP"),
+            vars.get("$field.CITY"),
+            vars.get("$field.COUNTRY"),
+            "",
+            "",
+            vars.get("$field.DISTRICT"),
+            vars.get("$field.REGION"),
+            vars.get("$field.STATE"),
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            newSelect("ADDR_FORMAT")
+            .from("AB_COUNTRYINFO")
+            .where("AB_COUNTRYINFO.ISO2", vars.get("$field.COUNTRY"))
+            .cell() + "%n {country}",
+            ""
+        ]
+    ],
+    [
+        [
+            0,
+            "ADDRESSFORMAT",
+            ""
+        ]
+    ],
+    [
+        "{@fullAddress@}"
+    ],
+    {
+        length : 28
+    }
+])[1][0]);
+    
diff --git a/entity/Address_entity/entityfields/state/stateProcess.js b/entity/Address_entity/entityfields/state/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed5e161dcc793ca6dc3a379eea6d6b3445eb3b3c
--- /dev/null
+++ b/entity/Address_entity/entityfields/state/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+// The field is only displayed in edit mode because there is the "formattedAddress" field which one shows the fromated address.
+// If the field has a Value it would be displayed next to the formattedAddress field in view mode, so in this case the state is set to invisible.
+if (vars.get("$sys.recordstate") == "" || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW)
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/zip/stateProcess.js b/entity/Address_entity/entityfields/zip/stateProcess.js
index b1f5ba1ac1ff8909fb57d89236cf68be4a92d6d0..764f48cdd72329a2d63c83df9f378561f4263b65 100644
--- a/entity/Address_entity/entityfields/zip/stateProcess.js
+++ b/entity/Address_entity/entityfields/zip/stateProcess.js
@@ -1,4 +1,11 @@
+import("system.neon");
+import("system.vars");
 import("system.result");
 import("WsValidation_lib");
 
-result.string(WsValidationFieldUtils.mainFieldStateProcess(WsValidationType.get().TYPE_ZIP_NOMINATIM));
\ No newline at end of file
+// The field is only displayed in edit mode because there is the "formattedAddress" field which one shows the fromated address.
+// If the field has a Value it would be displayed next to the formattedAddress field in view mode, so in this case the state is set to invisible.
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW)
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+else
+    result.string(WsValidationFieldUtils.mainFieldStateProcess(WsValidationType.get().TYPE_ZIP_NOMINATIM));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/zip_ws/stateProcess.js b/entity/Address_entity/entityfields/zip_ws/stateProcess.js
index 3aec65f49c1af2c53e7221499485909c8ad4ee78..624d619e37803cf888573c65a7346c23cbd554ad 100644
--- a/entity/Address_entity/entityfields/zip_ws/stateProcess.js
+++ b/entity/Address_entity/entityfields/zip_ws/stateProcess.js
@@ -1,4 +1,11 @@
+import("system.neon");
+import("system.vars");
 import("system.result");
 import("WsValidation_lib");
 
-result.string(WsValidationFieldUtils.wsFieldStateProcess(WsValidationType.get().TYPE_ZIP_NOMINATIM));
\ No newline at end of file
+// The field is only displayed in edit mode because there is the "formattedAddress" field which one shows the fromated address.
+// If the field has a Value it would be displayed next to the formattedAddress field in view mode, so in this case the state is set to invisible.
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW)
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+else
+    result.string(WsValidationFieldUtils.wsFieldStateProcess(WsValidationType.get().TYPE_ZIP_NOMINATIM));
\ No newline at end of file
diff --git a/entity/Address_entity/recordcontainers/db/conditionProcess.js b/entity/Address_entity/recordcontainers/db/conditionProcess.js
index a938934f9b9642e9935641e62b1a9f8d957e1fbc..24b457e53de03c851e12a95bc95830c987a5f0f2 100644
--- a/entity/Address_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Address_entity/recordcontainers/db/conditionProcess.js
@@ -4,13 +4,9 @@ import("system.db");
 import("Sql_lib");
 
 var cond = newWhere()
+    .andIfSet("ADDRESS.CONTACT_ID", "$param.ContactId_param");
 
-if (vars.exists("$param.ContactId_param")) // Todo: shouldn't be needed, but sometimes in the filter view of pers / org the param doesn't exist?? --> It should be null if it's not set...
-    cond.andIfSet("ADDRESS.CONTACT_ID", "$param.ContactId_param");
-
-if (vars.exists("$param.OrganisationId_param")) // Todo: shouldn't be needed, but sometimes in the filter view of pers / org the param doesn't exist??' --> It should be null if it's not set...
-    var organisationId = vars.get("$param.OrganisationId_param");
-
+var organisationId = vars.get("$param.OrganisationId_param");
 if (organisationId)
 {
     var organisationContactId = newSelect("CONTACT.CONTACTID")
@@ -21,5 +17,4 @@ if (organisationId)
     cond.orIfSet("ADDRESS.CONTACT_ID", organisationContactId);
 }
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Address_entity/recordcontainers/db/onDBDelete.js b/entity/Address_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ff91a5eb319120b527776868367d3cdb0f445f1
--- /dev/null
+++ b/entity/Address_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,3 @@
+import("Workflow_lib");
+
+WorkflowSignalSender.deleted();
\ No newline at end of file
diff --git a/entity/Address_entity/recordcontainers/db/onDBInsert.js b/entity/Address_entity/recordcontainers/db/onDBInsert.js
index ac6e09eee06255c378346ac58f1c219f5b7670fb..cddb15a9f8fd75177c6a219a72f240d56a1b257b 100644
--- a/entity/Address_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Address_entity/recordcontainers/db/onDBInsert.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("Sql_lib");
 import("system.logging");
 import("KeywordRegistry_basic");
@@ -59,4 +60,6 @@ if (addressLocation)
             "LAT": addressLocation.lat,
             "LON": addressLocation.lon
         });
-}
\ No newline at end of file
+}
+
+WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/Address_entity/recordcontainers/db/onDBUpdate.js b/entity/Address_entity/recordcontainers/db/onDBUpdate.js
index 80e0c649be5a71951c695bfc2e3eda0f29f9048c..87c3f2c27180a26dfb2d548acf385067807800a8 100644
--- a/entity/Address_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Address_entity/recordcontainers/db/onDBUpdate.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("Sql_lib");
 import("Location_lib");
 import("Address_lib");
@@ -28,4 +29,6 @@ if (isAddressChanged)
                 "LON": addressLocation.lon
             });
     }
-}
\ No newline at end of file
+}
+
+WorkflowSignalSender.updated();
\ No newline at end of file
diff --git a/entity/AdminViewRow_entity/AdminViewRow_entity.aod b/entity/AdminViewRow_entity/AdminViewRow_entity.aod
index e957f3e131e1570cc6fd74e143d74bfe0caec1d6..eb56b773bae0329432467ddd786d80a0b7805dc6 100644
--- a/entity/AdminViewRow_entity/AdminViewRow_entity.aod
+++ b/entity/AdminViewRow_entity/AdminViewRow_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>AdminViewRow_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/AdminViewRow_entity/documentation.adoc</documentation>
@@ -17,6 +17,7 @@
     <entityField>
       <name>VALUE</name>
       <contentTypeProcess>%aditoprj%/entity/AdminViewRow_entity/entityfields/value/contentTypeProcess.js</contentTypeProcess>
+      <displayValueProcess>%aditoprj%/entity/AdminViewRow_entity/entityfields/value/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityParameter>
       <name>Rows_param</name>
diff --git a/entity/AdminViewRow_entity/entityfields/value/displayValueProcess.js b/entity/AdminViewRow_entity/entityfields/value/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f0f30ab1f978226833d3f947417717bcaf3a8c8c
--- /dev/null
+++ b/entity/AdminViewRow_entity/entityfields/value/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("Attribute_lib");
+import("system.result");
+
+
+result.string(AttributeTypeUtil.getAttributeViewValue(vars.get("$field.CONTENTTYPE"), vars.get("$field.VALUE"), null));
\ No newline at end of file
diff --git a/entity/Analyses_entity/Analyses_entity.aod b/entity/Analyses_entity/Analyses_entity.aod
index 3eadc589a83baf6a21f36a19f48a7053ac9cec8b..7d49b0bd6a63ddb2bf1b1ebf8912ab1ec4e166c0 100644
--- a/entity/Analyses_entity/Analyses_entity.aod
+++ b/entity/Analyses_entity/Analyses_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Analyses_entity</name>
+  <title>Analyses</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Analyses_entity/documentation.adoc</documentation>
   <icon>VAADIN:GRID_BIG_O</icon>
-  <title>Analyses</title>
   <recordContainer>jdito</recordContainer>
   <entityFields>
     <entityProvider>
@@ -31,14 +31,17 @@
     <entityActionField>
       <name>openCalendar</name>
       <onActionProcess>%aditoprj%/entity/Analyses_entity/entityfields/opencalendar/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CALENDAR</iconId>
     </entityActionField>
     <entityActionField>
       <name>openNewTasks</name>
       <onActionProcess>%aditoprj%/entity/Analyses_entity/entityfields/opennewtasks/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TASKS</iconId>
     </entityActionField>
     <entityActionField>
       <name>openOverdueTasks</name>
       <onActionProcess>%aditoprj%/entity/Analyses_entity/entityfields/openoverduetasks/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TIME_FORWARD</iconId>
     </entityActionField>
     <entityField>
       <name>TURNOVER_FORECAST</name>
diff --git a/entity/Analyses_entity/entityfields/imminent_appointments/valueProcess.js b/entity/Analyses_entity/entityfields/imminent_appointments/valueProcess.js
index 9a5657456f3a131ca47d303d21a17b46ada862d1..f782309d32349f8320ada9dd3aa91588f3069e4e 100644
--- a/entity/Analyses_entity/entityfields/imminent_appointments/valueProcess.js
+++ b/entity/Analyses_entity/entityfields/imminent_appointments/valueProcess.js
@@ -1,3 +1,4 @@
+import("system.tools");
 import("system.SQLTYPES");
 import("system.db");
 import("system.datetime");
@@ -8,45 +9,49 @@ import("Sql_lib");
 import("system.calendars");
 import("Calendar_lib");
 
-var pFilter =  CalendarUtil.reset_filterEvent();
-var conditions = [];
-var conditioncount = 0;
-var user = undefined;
-var stati = [];
-var entries = [];
+var calendarId = tools.getCurrentUser()[tools.PARAMS][tools.CALENDARID];
+if(calendarId != "" && calendarId != null && calendarId != undefined)
+{
+    var pFilter =  CalendarUtil.reset_filterEvent();
+    var conditions = [];
+    var conditioncount = 0;
+    var user = undefined;
+    var stati = [];
+    var entries = [];
 
-var startnumber = Number(vars.get("$sys.date"));
-var endnumber = startnumber + 43200000 ;
+    var startnumber = Number(vars.get("$sys.date"));
+    var endnumber = startnumber + 43200000 ;
 
-var start = startnumber + "";
-var end = endnumber + "";
+    var start = startnumber + "";
+    var end = endnumber + "";
 
-if ( pFilter.tentative == "true" )    
-    stati.push(calendars.STATUS_TENTATIVE);
+    if ( pFilter.tentative == "true" )    
+        stati.push(calendars.STATUS_TENTATIVE);
 
-if ( pFilter.cancelled == "true" )    
-    stati.push(calendars.STATUS_CANCELLED);
+    if ( pFilter.cancelled == "true" )    
+        stati.push(calendars.STATUS_CANCELLED);
 
-if ( pFilter.confirmed == "true" )
-    stati.push(CalendarUtil.mapCalendarStatus(calendars.STATUS_CONFIRMED, calendars.getBackendType() ));
+    if ( pFilter.confirmed == "true" )
+        stati.push(CalendarUtil.mapCalendarStatus(calendars.STATUS_CONFIRMED, calendars.getBackendType() ));
 
-if (CalendarUtil.getCalendarSystemType(calendars.VEVENT) == calendars.BACKEND_EXCHANGEWS && pFilter.free == "true")
-    stati.push(calendars.STATUS_FREE);
+    if (CalendarUtil.getCalendarSystemType(calendars.VEVENT) == calendars.BACKEND_EXCHANGEWS && pFilter.free == "true")
+        stati.push(calendars.STATUS_FREE);
 
-if ( pFilter.user != "" )	
-    user = (pFilter.user).trim();
+    if ( pFilter.user != "" )	
+        user = (pFilter.user).trim();
 
-for ( var z = 0; z < stati.length; z++ )
-    CalendarUtil.addEntryCondition(conditions, ++conditioncount,
-    {
-        TYPE: calendars.VEVENT,
-        START: start,
-        END: end,
-        USER: user,
-        STATUS: stati[z]
-    });
+    for ( var z = 0; z < stati.length; z++ )
+        CalendarUtil.addEntryCondition(conditions, ++conditioncount,
+        {
+            TYPE: calendars.VEVENT,
+            START: start,
+            END: end,
+            USER: user,
+            STATUS: stati[z]
+        });
 
-conditions["COUNT"] = String(conditioncount);
-entries = calendars.getEntries(conditions);
+    conditions["COUNT"] = String(conditioncount);
+    entries = calendars.getEntries(conditions);
 
-result.string(entries.length);
+    result.string(entries.length);
+}
\ No newline at end of file
diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod
index 3b3b3c3e9899dc01fc477ddfc3e5f3f910455f69..c604642bfd4ad7211cceafc4f93468c1dcf149a6 100644
--- a/entity/AnyContact_entity/AnyContact_entity.aod
+++ b/entity/AnyContact_entity/AnyContact_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>AnyContact_entity</name>
+  <title>Contact</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/AnyContact_entity/documentation.adoc</documentation>
-  <title>Contact</title>
   <contentTitleProcess>%aditoprj%/entity/AnyContact_entity/contentTitleProcess.js</contentTitleProcess>
   <initFilterProcess>%aditoprj%/entity/AnyContact_entity/initFilterProcess.js</initFilterProcess>
   <imageProcess>%aditoprj%/entity/AnyContact_entity/imageProcess.js</imageProcess>
@@ -83,12 +83,6 @@
     <entityProvider>
       <name>ContactsByIds</name>
       <documentation>%aditoprj%/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc</documentation>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <expose v="false" />
-        </entityParameter>
-      </children>
       <dependencies>
         <entityDependency>
           <name>0206f7a8-fd58-47e8-8b7a-5ff4531e56fb</name>
@@ -97,6 +91,12 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
     </entityProvider>
     <entityParameter>
       <name>ContactIds_param</name>
@@ -177,13 +177,6 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description>
     <entityProvider>
       <name>OnlySameCompany</name>
       <documentation>%aditoprj%/entity/AnyContact_entity/entityfields/onlysamecompany/documentation.adoc</documentation>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <expose v="true" />
-          <mandatory v="true" />
-        </entityParameter>
-      </children>
       <dependencies>
         <entityDependency>
           <name>28b19d6b-237c-4268-b6c6-323df408c94a</name>
@@ -192,6 +185,13 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description>
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <expose v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+      </children>
     </entityProvider>
     <entityParameter>
       <name>WithPrivatePersons_param</name>
@@ -210,40 +210,10 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/AnyContact_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/AnyContact_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>7b3fa460-44a1-40f3-89e3-1625ce9c6bb3</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>6786a204-2cea-42ae-857d-4335bad6b5e4</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>d15ccb84-6928-4c44-b940-0f5d04826b55</name>
-          <tableName>PERSON</tableName>
-          <primaryKey>PERSONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>b778622f-449a-4185-b7cb-9b373ba4024f</name>
-          <tableName>ADDRESS</tableName>
-          <primaryKey>ADDRESSID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ADDRESS_ID.value</name>
@@ -318,6 +288,36 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description>
           <recordfield>PERSON.PICTURE</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>7b3fa460-44a1-40f3-89e3-1625ce9c6bb3</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>6786a204-2cea-42ae-857d-4335bad6b5e4</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>d15ccb84-6928-4c44-b940-0f5d04826b55</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>b778622f-449a-4185-b7cb-9b373ba4024f</name>
+          <tableName>ADDRESS</tableName>
+          <primaryKey>ADDRESSID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js
index a793d04a1b1ac773414d333e4ccc4e645b1df960..e063f85110e206b097eb26a9bed17fc0b948eabd 100644
--- a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js
@@ -32,5 +32,4 @@ var contactIds = vars.exists("$param.ContactIds_param") && vars.get("$param.Cont
 if (contactIds) 
     cond.andIfSet("CONTACT.CONTACTID", JSON.parse(contactIds), SqlBuilder.IN());
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/AppointmentLink_entity/AppointmentLink_entity.aod b/entity/AppointmentLink_entity/AppointmentLink_entity.aod
index a60f3736b97b1a8f533330412d5d8414e5c1d742..e3d3ce500ad05f8859ed18e27398714824b560c9 100644
--- a/entity/AppointmentLink_entity/AppointmentLink_entity.aod
+++ b/entity/AppointmentLink_entity/AppointmentLink_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>AppointmentLink_entity</name>
+  <title>Connection</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/AppointmentLink_entity/documentation.adoc</documentation>
-  <title>Connection</title>
   <titlePlural>Connections</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -110,17 +110,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>211047ab-be9d-401b-a2d9-3dd1e048c5c5</name>
-          <tableName>AB_APPOINTMENTLINK</tableName>
-          <primaryKey>AB_APPOINTMENTLINK_ID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>APPOINTMENT_ID.value</name>
@@ -139,6 +130,15 @@
           <recordfield>AB_APPOINTMENTLINK.AB_APPOINTMENTLINK_ID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>211047ab-be9d-401b-a2d9-3dd1e048c5c5</name>
+          <tableName>AB_APPOINTMENTLINK</tableName>
+          <primaryKey>AB_APPOINTMENTLINK_ID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js b/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js
index e95adef18a9cb958af3277c59ad305d5d4a786b6..a44f299d8aff2125db0785b0a333771b0af21cd5 100644
--- a/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js
+++ b/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js
@@ -7,5 +7,5 @@ import("Context_lib");
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECTID")) {
     result.string("");
 } else if (vars.exists("$field.OBJECTTYPE") && vars.get("$field.OBJECTTYPE")) {
-    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECTTYPE"), vars.get("$field.OBJECTID"))));
+    result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECTTYPE"), vars.get("$field.OBJECTID")));
 }
\ No newline at end of file
diff --git a/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js b/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js
index b9a9cafdcba80e3ff11803906bddf17e2423c3b3..b44b0652bd7cf463b313517ee246185226d339e4 100644
--- a/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js
@@ -4,5 +4,4 @@ import("Sql_lib");
 
 var cond = newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", "$param.AppointmentId_param")
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod
index 2b98d6bd2c33292ef54ca82d1d5c8f624b353cbf..d615ac8db071653c41b13edc8e574505ab3f4b50 100644
--- a/entity/Appointment_entity/Appointment_entity.aod
+++ b/entity/Appointment_entity/Appointment_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Appointment_entity</name>
+  <title>Appointment</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Appointment_entity/documentation.adoc</documentation>
-  <title>Appointment</title>
   <siblings />
   <grantUpdateProcess>%aditoprj%/entity/Appointment_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/Appointment_entity/grantDeleteProcess.js</grantDeleteProcess>
@@ -171,6 +171,11 @@
     </entityParameter>
     <entityConsumer>
       <name>AppointmentLinks</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AppointmentLink_entity</entityName>
+        <fieldName>Links</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>AppointmentId_param</name>
@@ -182,11 +187,6 @@
           <expose v="false" />
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>AppointmentLink_entity</entityName>
-        <fieldName>Links</fieldName>
-      </dependency>
     </entityConsumer>
     <entityActionField>
       <name>deleteSeries</name>
@@ -254,6 +254,10 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityParameter>
+      <name>PresetLinks_param</name>
+      <expose v="true" />
+    </entityParameter>
     <entityParameter>
       <name>ErrorOnPermissionDenied</name>
       <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js</valueProcess>
diff --git a/entity/Appointment_entity/afterUiInit.js b/entity/Appointment_entity/afterUiInit.js
index 12e19779bd85ea257cf9f67b8eba2cae0d388fa2..b018dcc372580a44982d6c1fbfccf554474ca192 100644
--- a/entity/Appointment_entity/afterUiInit.js
+++ b/entity/Appointment_entity/afterUiInit.js
@@ -14,4 +14,15 @@ if(vars.exists("$param.Entry_param") && vars.get("$param.Entry_param"))
             "OBJECTTYPE" : entry["AppLinkContext"]
         });
     }
+}
+
+if(vars.exists("$param.PresetLinks_param") && vars.get("$param.PresetLinks_param"))
+{ 
+    var presetLink = JSON.parse(vars.get("$param.PresetLinks_param"));
+    presetLink.forEach(function(link) {
+        neon.addRecord("AppointmentLinks", {
+            "OBJECTTYPE" : link[0], 
+            "OBJECTID" : link[1]
+        });
+    });
 }
\ No newline at end of file
diff --git a/entity/Appointment_entity/recordcontainers/jdito/onUpdate.js b/entity/Appointment_entity/recordcontainers/jdito/onUpdate.js
index 32ea225c34405b2ce25a50d2199e8c1800ae20c6..dde683a8929aa922bdb8041662279a61d8e33a1b 100644
--- a/entity/Appointment_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/Appointment_entity/recordcontainers/jdito/onUpdate.js
@@ -83,7 +83,7 @@ function areEventAndFieldsDifferent(event){
         event[calendars.DTSTART] != vars.get("$field.BEGIN") ||
         event[calendars.DTEND] != vars.get("$field.END") ||
         event[calendars.HASREMINDER] != "false" ||
-        event["X-ADITO-ISALLDAYEVENT"] == vars.get("$field.ALLDAY") ||
+        event["X-ADITO-ISALLDAYEVENT"] != vars.get("$field.ALLDAY") ||
         event[calendars.CLASSIFICATION] != vars.get("$field.CLASSIFICATION") ||
         event[calendars.CATEGORIES] != vars.get("$field.CATEGORIES") ||
         event[calendars.AFFECTEDUSERS] != vars.get("$field.ATTENDEES") ||
diff --git a/entity/AroundLocation_entity/AroundLocation_entity.aod b/entity/AroundLocation_entity/AroundLocation_entity.aod
index c91531dc4c43f5cb38c9324e78b6c69f15d6251f..1ccc8984c6b21bc186fb84d00416543831fddeaa 100644
--- a/entity/AroundLocation_entity/AroundLocation_entity.aod
+++ b/entity/AroundLocation_entity/AroundLocation_entity.aod
@@ -1,9 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>AroundLocation_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/AroundLocation_entity/documentation.adoc</documentation>
   <onValidation>%aditoprj%/entity/AroundLocation_entity/onValidation.js</onValidation>
+  <iconId>VAADIN:MAP_MARKER</iconId>
   <recordContainer>dataless</recordContainer>
   <entityFields>
     <entityProvider>
diff --git a/entity/AroundLocation_entity/entityfields/open/onActionProcess.js b/entity/AroundLocation_entity/entityfields/open/onActionProcess.js
index 064f8348f4474ef01e4dfb061e6abdfff8ba6427..10fa1eeb0072f9ca47d9df86503fbd82c530de2f 100644
--- a/entity/AroundLocation_entity/entityfields/open/onActionProcess.js
+++ b/entity/AroundLocation_entity/entityfields/open/onActionProcess.js
@@ -1,3 +1,4 @@
+import("Context_lib");
 import("system.vars");
 import("system.neon");
 
@@ -6,5 +7,35 @@ var contactIds = vars.get("$field.ContactIds");
 if (contactIds)
     contactIds = JSON.parse(contactIds);
 
-neon.openContext("Organisation", "OrganisationFilter_view", contactIds, neon.OPERATINGSTATE_SEARCH, null, null);
-//neon.openContext("Organisation", null, contactIds, null, null, null);
\ No newline at end of file
+
+var homeFeatureCollection = {
+    "type": "FeatureCollection",
+    "features": [
+    {
+        "type": "Feature",
+        "properties": {
+            "ADITO-radius": vars.get("$field.SearchRadius") * 1000,
+            "ADITO-color": neon.PRIORITY_HIGH_COLOR,
+            "ADITO-icon": "VAADIN:MAP_MARKER",
+            "ADITO-targetContext": "Organisation",
+            "ADITO-targetId": vars.get("$param.OriginUid_param"),
+            "ADITO-label": ContextUtils.loadContentTitle("Organisation_entity", vars.get("$param.OriginUid_param"))
+        },
+        "geometry": {
+            "type": "Point",
+            "coordinates": [
+                parseFloat(vars.get("$param.LocationLon_param"), 10),
+                parseFloat(vars.get("$param.LocationLat_param"), 10)
+                
+            ]
+        }
+    }
+    ]
+};
+
+var params = {
+    MapViewAdditionalFeatures_param: JSON.stringify(homeFeatureCollection),
+    MapViewCenterLat_param: vars.get("$param.LocationLat_param"),
+    MapViewCenterLon_param: vars.get("$param.LocationLon_param")
+};
+neon.openContext("Organisation", "OrganisationFilter_view", contactIds, neon.OPERATINGSTATE_SEARCH, params, null);
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
index 4e5c98f9dece6d09e3bc547dc137db746490724b..6d8fcd2fb05d3259a0b339733d9eaa4b9d5a69e2 100644
--- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod
+++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
@@ -1,11 +1,12 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>AttributeRelation_entity</name>
+  <title>Attribute</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/AttributeRelation_entity/documentation.adoc</documentation>
-  <title>Attribute</title>
   <grantUpdateProcess>%aditoprj%/entity/AttributeRelation_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/AttributeRelation_entity/grantDeleteProcess.js</grantDeleteProcess>
+  <contentTitleProcess>%aditoprj%/entity/AttributeRelation_entity/contentTitleProcess.js</contentTitleProcess>
   <titlePlural>Attributes</titlePlural>
   <recordContainer>jdito</recordContainer>
   <entityFields>
@@ -238,6 +239,12 @@
           <fieldName>Attributes</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>92855510-92c8-4837-85d3-072396f5f7f6</name>
+          <entityName>Contact_entity</entityName>
+          <fieldName>Attributes</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
@@ -341,6 +348,7 @@
     </entityProvider>
     <entityField>
       <name>AB_ATTRIBUTERELATIONID</name>
+      <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js</valueProcess>
     </entityField>
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
diff --git a/entity/AttributeRelation_entity/contentTitleProcess.js b/entity/AttributeRelation_entity/contentTitleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..07a93ad61aa87f8fab38a45da2f8c5f879e47b73
--- /dev/null
+++ b/entity/AttributeRelation_entity/contentTitleProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("Attribute_lib");
+
+result.string(AttributeUtil.getFullAttributeName(
+        vars.get("$field.AB_ATTRIBUTE_ID"), false, true ));
diff --git a/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js b/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e11e370a0bf849a4ef24d5ae03cda2d11b82a8ce
--- /dev/null
+++ b/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string(util.getNewUUID());
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js b/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js
index e0ce90c175370c539ed09e94eab727271db1cc2d..051e58a290e40ba32c7f91d3782eb37a59768e96 100644
--- a/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js
+++ b/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js
@@ -4,8 +4,11 @@ import("system.result");
 import("Attribute_lib");
 
 var fieldState;
-if (AttributeTypeUtil.useLookup(vars.get("$field.ATTRIBUTE_TYPE")))
+if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    && AttributeTypeUtil.useLookup(vars.get("$field.ATTRIBUTE_TYPE")))
+{
     fieldState = neon.COMPONENTSTATE_EDITABLE;
+}
 else 
     fieldState = neon.COMPONENTSTATE_INVISIBLE;
 
diff --git a/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js b/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js
index b5337ee20f4280c527eacf1890f5f42399537096..67c301db12e38dc4a793e97a6bd35cf77895ca29 100644
--- a/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/AttributeRelation_entity/recordcontainers/jdito/contentProcess.js
@@ -204,7 +204,10 @@ attributeRelations = attributeRelations.map(function (row)
     ];
 });
 
-minCountInsurance.loadMinCounts(objectType);
+if (objectType){
+    minCountInsurance.loadMinCounts(objectType);
+}
+
 attributeRelations.forEach(function (attributeRelation)
 {
     var attrId = attributeRelation[4];
diff --git a/entity/AttributeRelation_entity/recordcontainers/jdito/onDelete.js b/entity/AttributeRelation_entity/recordcontainers/jdito/onDelete.js
index 102089af40ad4f3e510e4ef8387f40864d031e8f..785fe3e0ac18b69e2acc9856afb0875fc81b73e7 100644
--- a/entity/AttributeRelation_entity/recordcontainers/jdito/onDelete.js
+++ b/entity/AttributeRelation_entity/recordcontainers/jdito/onDelete.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("system.vars");
 import("Sql_lib");
 
@@ -9,4 +10,6 @@ if (rowData["AB_ATTRIBUTE_ID.value"])
         : vars.get("$local.uid");
     newWhereIfSet("AB_ATTRIBUTERELATION.AB_ATTRIBUTERELATIONID", attributeRelationId)
         .deleteData();
-}
\ No newline at end of file
+}
+
+WorkflowSignalSender.deleted();
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/recordcontainers/jdito/onInsert.js b/entity/AttributeRelation_entity/recordcontainers/jdito/onInsert.js
index 09bcd82719b1c36aaf7f44cc92d9834f003f9388..2836dcd5bc7ee17da8d0d75e560f05b6117a36ea 100644
--- a/entity/AttributeRelation_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/AttributeRelation_entity/recordcontainers/jdito/onInsert.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("DataPrivacy_lib");
 import("system.datetime");
 import("system.util");
@@ -39,4 +40,6 @@ if (valueField)
 db.insertData("AB_ATTRIBUTERELATION", columns, null, values);
 
 if (vars.get("$param.ObjectType_param") == "Person")
-    DataPrivacyUtils.notifyNeedDataPrivacyUpdate(vars.get("$param.ObjectRowId_param"), vars.get("$param.ShowDsgvoMessage_param"));
\ No newline at end of file
+    DataPrivacyUtils.notifyNeedDataPrivacyUpdate(vars.get("$param.ObjectRowId_param"), vars.get("$param.ShowDsgvoMessage_param"));
+
+WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/recordcontainers/jdito/onUpdate.js b/entity/AttributeRelation_entity/recordcontainers/jdito/onUpdate.js
index e5bd33ae96f917320e2024b7c57ab2d7b88f3676..e88af46b5b0766cd413f835d6435b7b19609693c 100644
--- a/entity/AttributeRelation_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/AttributeRelation_entity/recordcontainers/jdito/onUpdate.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("DataPrivacy_lib");
 import("Sql_lib");
 import("system.util");
@@ -69,4 +70,6 @@ else
 }
 
 if (vars.get("$param.ObjectType_param") == "Person")
-    DataPrivacyUtils.notifyNeedDataPrivacyUpdate(vars.get("$param.ObjectRowId_param"), vars.get("$param.ShowDsgvoMessage_param"));
\ No newline at end of file
+    DataPrivacyUtils.notifyNeedDataPrivacyUpdate(vars.get("$param.ObjectRowId_param"), vars.get("$param.ShowDsgvoMessage_param"));
+
+WorkflowSignalSender.updated();
\ No newline at end of file
diff --git a/entity/AttributeUsage_entity/AttributeUsage_entity.aod b/entity/AttributeUsage_entity/AttributeUsage_entity.aod
index 281daa5f5aafefe0a4307b836fefb819ed97670a..7537ce268732fefca76ffe7f04f87d7b4e5d98fa 100644
--- a/entity/AttributeUsage_entity/AttributeUsage_entity.aod
+++ b/entity/AttributeUsage_entity/AttributeUsage_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>AttributeUsage_entity</name>
+  <title>Usage</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/AttributeUsage_entity/documentation.adoc</documentation>
-  <title>Usage</title>
   <siblings>
     <element>Attribute_entity</element>
   </siblings>
@@ -78,10 +78,6 @@
         <fieldName>Exclusive</fieldName>
       </dependency>
       <children>
-        <entityParameter>
-          <name>GetAllContexts_param</name>
-          <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js</valueProcess>
-        </entityParameter>
         <entityParameter>
           <name>Blacklist_param</name>
           <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/context/children/blacklist_param/valueProcess.js</valueProcess>
@@ -110,20 +106,11 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <onDBInsert>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>c30f5670-580e-4621-95dd-0fec4a99190f</name>
-          <tableName>AB_ATTRIBUTEUSAGE</tableName>
-          <primaryKey>AB_ATTRIBUTEUSAGEID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>AB_ATTRIBUTE_ID.value</name>
@@ -146,6 +133,15 @@
           <recordfield>AB_ATTRIBUTEUSAGE.MIN_COUNT</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>c30f5670-580e-4621-95dd-0fec4a99190f</name>
+          <tableName>AB_ATTRIBUTEUSAGE</tableName>
+          <primaryKey>AB_ATTRIBUTEUSAGEID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js b/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js
index 4c333a888b165e2b3fff15433861e3de2b785344..854e2896ae3f2baa9ea18cbab4a7922e6821dd21 100644
--- a/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js
@@ -2,6 +2,5 @@ import("Sql_lib");
 import("system.db");
 import("system.result");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(newWhereIfSet("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", "$param.AttributeId_param")
                 .toString());  
diff --git a/entity/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod
index 26e2e934e598ad4d50c640da866a5cd4b452b3f2..4891628b32b0bb8d32d5783fafe33604322fec5e 100644
--- a/entity/Attribute_entity/Attribute_entity.aod
+++ b/entity/Attribute_entity/Attribute_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Attribute_entity</name>
+  <title>Attribute</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Attribute_entity/documentation.adoc</documentation>
-  <title>Attribute</title>
   <grantDeleteProcess>%aditoprj%/entity/Attribute_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Attribute_entity/contentTitleProcess.js</contentTitleProcess>
   <afterUiInit>%aditoprj%/entity/Attribute_entity/afterUiInit.js</afterUiInit>
@@ -131,6 +131,7 @@
     <entityProvider>
       <name>SpecificAttribute</name>
       <lookupIdfield>UID</lookupIdfield>
+      <documentation>%aditoprj%/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>ba3b4d47-7385-49df-bf61-54c99f5b2c81</name>
@@ -156,12 +157,6 @@
           <fieldName>Departments</fieldName>
           <isConsumer v="false" />
         </entityDependency>
-        <entityDependency>
-          <name>71cfeddd-a315-4692-8299-08813ca1dc19</name>
-          <entityName>DistrictResponsible_entity</entityName>
-          <fieldName>Departments</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
@@ -214,6 +209,7 @@
     </entityField>
     <entityProvider>
       <name>AttributeGroups</name>
+      <documentation>%aditoprj%/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc</documentation>
       <children>
         <entityParameter>
           <name>ThemeObjectRowId_param</name>
@@ -319,10 +315,6 @@
           <name>Blacklist_param</name>
           <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/contexts/children/blacklist_param/valueProcess.js</valueProcess>
         </entityParameter>
-        <entityParameter>
-          <name>GetAllContexts_param</name>
-          <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js</valueProcess>
-        </entityParameter>
         <entityParameter>
           <name>InvertBlacklist_param</name>
           <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess>
diff --git a/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc b/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..6af9c11f0f7e8517aa60a8bdd6d5fb0a457dd6fc
--- /dev/null
+++ b/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc
@@ -0,0 +1,3 @@
+= AttributeGroups
+
+This provider provides only attribute groups, it is used for the selection of an attribute parent.
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc b/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..5084132f04b54babcf687262514ac3462c479261
--- /dev/null
+++ b/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc
@@ -0,0 +1,4 @@
+= SpecificAttribute
+
+This provider is used for selecting an attribute, for example to create an attribute relation in AttributeRelation_entity.
+The attributes are usually filtered by the ObjectType_param parameter to show only attributes that can be used in a specific context.
\ No newline at end of file
diff --git a/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod b/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod
index 88d93c5023fdb6b90668c9269a64a6a642785a08..4425b01ed72db74d1573848afc1b9473d5e3368a 100644
--- a/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod
+++ b/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod
@@ -1,13 +1,13 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>AuditLogHistory_entity</name>
+  <title>Audit Log</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/AuditLogHistory_entity/documentation.adoc</documentation>
   <icon>VAADIN:LINES_LIST</icon>
-  <title>Audit Log</title>
   <grantCreate v="false" />
   <grantUpdate v="false" />
   <grantDelete v="true" />
-  <grantDeleteProcess>%aditoprj%/entity/AuditLogHistory_entity/grantDeleteProcess.js</grantDeleteProcess>
   <initFilterProcess>%aditoprj%/entity/AuditLogHistory_entity/initFilterProcess.js</initFilterProcess>
   <titlePlural>Audit Logs</titlePlural>
   <recordContainer>db</recordContainer>
@@ -75,17 +75,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <orderClauseProcess>%aditoprj%/entity/AuditLogHistory_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>ed8bd1ca-64eb-443e-a04d-ea7aee0c352a</name>
-          <tableName>AB_LOGHISTORY</tableName>
-          <primaryKey>AB_LOGHISTORYID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>UID.value</name>
@@ -129,10 +120,19 @@
           <isFilterable v="true" />
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>ed8bd1ca-64eb-443e-a04d-ea7aee0c352a</name>
+          <tableName>AB_LOGHISTORY</tableName>
+          <primaryKey>AB_LOGHISTORYID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtension>
           <name>contextFilter</name>
-          <title>Kontext</title>
+          <title>Context</title>
           <contentType>TEXT</contentType>
           <filterValuesProcess>%aditoprj%/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterValuesProcess.js</filterValuesProcess>
           <filterConditionProcess>%aditoprj%/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterConditionProcess.js</filterConditionProcess>
diff --git a/entity/AuditLogHistory_entity/documentation.adoc b/entity/AuditLogHistory_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..2c0a2a12eb8182eeab3ad27c32727dee6d898c20
--- /dev/null
+++ b/entity/AuditLogHistory_entity/documentation.adoc
@@ -0,0 +1,3 @@
+= AuditLogHistory_entity
+
+This is an entity for loading all log history entries from all contexts.
\ No newline at end of file
diff --git a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod
index 95b5c59685bfe4317f636f6a4301150861bbefe4..a43dd1134fefe62920ca5f7ec6941dba89da5cb8 100644
--- a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod
+++ b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>BulkMailAddRecipients_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/BulkMailAddRecipients_entity/documentation.adoc</documentation>
diff --git a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod
index 60d85496e220808f40709d4fd7fc80bbba176c0a..1d001090085c21d4535df8e8b11fbd770655ad08 100644
--- a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod
+++ b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>BulkMailRecipient_entity</name>
+  <title>Recipient</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/BulkMailRecipient_entity/documentation.adoc</documentation>
-  <title>Recipient</title>
   <siblings>
     <element>Communication_entity</element>
   </siblings>
@@ -156,43 +156,13 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/BulkMailRecipient_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/BulkMailRecipient_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBInsert>%aditoprj%/entity/BulkMailRecipient_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/BulkMailRecipient_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/BulkMailRecipient_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>b8fa2cab-18d8-4297-adc3-191d21f60c3a</name>
-          <tableName>BULKMAILRECIPIENT</tableName>
-          <primaryKey>BULKMAILRECIPIENTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>c4c3f40e-9435-4414-a4c8-7611e112b460</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>cc598ca4-9623-48a5-8543-0963be24f714</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>7887492c-6920-4568-96b7-e9a2661ff9d1</name>
-          <tableName>PERSON</tableName>
-          <primaryKey>PERSONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>BULKMAIL_ID.value</name>
@@ -255,6 +225,36 @@
           <expression>%aditoprj%/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/problem.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>b8fa2cab-18d8-4297-adc3-191d21f60c3a</name>
+          <tableName>BULKMAILRECIPIENT</tableName>
+          <primaryKey>BULKMAILRECIPIENTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>c4c3f40e-9435-4414-a4c8-7611e112b460</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>cc598ca4-9623-48a5-8543-0963be24f714</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>7887492c-6920-4568-96b7-e9a2661ff9d1</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js b/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js
index a2473cad7ca8ee6904811861505e0e412ab6c6fa..01d4a5dc9c76ee5f350521eea0f4a2bb6016a3ec 100644
--- a/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js
@@ -2,5 +2,4 @@ import("system.db");
 import("system.result");
 import("Sql_lib");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(newWhere("BULKMAILRECIPIENT.BULKMAIL_ID", "$param.BulkMailId_param").toString());
\ No newline at end of file
diff --git a/entity/BulkMailStatusChart_entity/BulkMailStatusChart_entity.aod b/entity/BulkMailStatusChart_entity/BulkMailStatusChart_entity.aod
index 63f5f1d40783c0f29bc9f33e89dc4e21ff058271..8449b088e741ea936c249395c17838dee4cd4995 100644
--- a/entity/BulkMailStatusChart_entity/BulkMailStatusChart_entity.aod
+++ b/entity/BulkMailStatusChart_entity/BulkMailStatusChart_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>BulkMailStatusChart_entity</name>
+  <title>Recipient status</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/BulkMailStatusChart_entity/documentation.adoc</documentation>
-  <title>Recipient status</title>
   <siblings>
     <element>BulkMailRecipient_entity</element>
   </siblings>
diff --git a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod
index 008aa0177c9d316bbadd3f8401189398e6a8964e..c876aa327d0b054dc32677aef4aa26a549404217 100644
--- a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod
+++ b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>BulkMailTesting_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/BulkMailTesting_entity/documentation.adoc</documentation>
diff --git a/entity/BulkMail_entity/BulkMail_entity.aod b/entity/BulkMail_entity/BulkMail_entity.aod
index a6e8b3db47b37d15f43098189957c08b86595414..a137066b8aee192134f5b3c862113852ab75b52a 100644
--- a/entity/BulkMail_entity/BulkMail_entity.aod
+++ b/entity/BulkMail_entity/BulkMail_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>BulkMail_entity</name>
+  <title>Bulk Mail</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/BulkMail_entity/documentation.adoc</documentation>
   <icon>VAADIN:AT</icon>
-  <title>Bulk Mail</title>
   <grantUpdateProcess>%aditoprj%/entity/BulkMail_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/BulkMail_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/BulkMail_entity/contentTitleProcess.js</contentTitleProcess>
@@ -290,6 +290,7 @@
     </entityParameter>
     <entityProvider>
       <name>BulkMailsNotSent</name>
+      <documentation>%aditoprj%/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>16cdf326-0b43-4d72-bf19-21434e047e85</name>
@@ -322,28 +323,12 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <onDBInsert>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>6444866d-42ee-4b7b-8536-6dc8f6437c45</name>
-          <tableName>BULKMAIL</tableName>
-          <primaryKey>BULKMAILID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>914d6373-4409-44e5-882a-3f795b196d7b</name>
-          <tableName>DOCUMENTTEMPLATE</tableName>
-          <primaryKey>DOCUMENTTEMPLATEID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>BULKMAILID.value</name>
@@ -412,6 +397,22 @@
           <recordfield>BULKMAIL.USE_TEMPLATE_ATTACHMENTS</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>6444866d-42ee-4b7b-8536-6dc8f6437c45</name>
+          <tableName>BULKMAIL</tableName>
+          <primaryKey>BULKMAILID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>914d6373-4409-44e5-882a-3f795b196d7b</name>
+          <tableName>DOCUMENTTEMPLATE</tableName>
+          <primaryKey>DOCUMENTTEMPLATEID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc b/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..256cf217d7182dead7e7dfe8cbfb770cdcd77f86
--- /dev/null
+++ b/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc
@@ -0,0 +1,3 @@
+= BulkMailsNotSent
+
+Provides only BulkMails with the status 'not sent'.
\ No newline at end of file
diff --git a/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js b/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js
index 5f100fbe60a4fef3b5f793b411562889452f16c1..fa553b4c0ebe856c7b540afcf5f4c2e4504ecd7d 100644
--- a/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js
+++ b/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js
@@ -4,12 +4,13 @@ import("system.util");
 import("system.mail");
 import("DocumentTemplate_lib");
 import("Entity_lib");
+import("EmailUtil_lib");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
 {
     // note: could not use only the valueProcess from $field.content because then it refreshed $field.content just before save.
     // --> only set in $field.content.valueProcess if $field.content is null and set it from here only if MASK triggered change
-    [content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$local.value"), new FileUpload(vars.get("$field.bindata")));
+    var [content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$local.value"), new FileUpload(vars.get("$field.bindata")));
     vars.set("$field.templateType", type);
     vars.set("$field.content", content);
     
diff --git a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod
index 447fef3d4393c2b2dc7924ab017ea3d896006850..19a9716e888eb80a204d2bb2a3901750e4d244b7 100644
--- a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod
+++ b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod
@@ -1,11 +1,12 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>CampaignAddParticipants_entity</name>
+  <title>Add participants to Campaign</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/CampaignAddParticipants_entity/documentation.adoc</documentation>
-  <title>Add participants to Campaign</title>
   <siblings>
     <element>CampaignParticipant_entity</element>
+    <element>Campaign_entity</element>
   </siblings>
   <recordContainer>datalessConfig</recordContainer>
   <entityFields>
@@ -27,6 +28,7 @@
         <element>PROCESS_SETVALUE</element>
         <element>RECORD</element>
       </onValueChangeTypes>
+      <onValidation>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaign_id/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>CAMPAIGNSTEP_ID</name>
@@ -59,11 +61,6 @@
     </entityConsumer>
     <entityConsumer>
       <name>CampaignStepConsumer</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>CampaignStep_entity</entityName>
-        <fieldName>CampaignSteps</fieldName>
-      </dependency>
       <children>
         <entityParameter>
           <name>campaignId_param</name>
@@ -71,6 +68,11 @@
           <expose v="true" />
         </entityParameter>
       </children>
+      <dependency>
+        <name>dependency</name>
+        <entityName>CampaignStep_entity</entityName>
+        <fieldName>CampaignSteps</fieldName>
+      </dependency>
     </entityConsumer>
     <entityField>
       <name>UID</name>
diff --git a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js
index b2c37dfa07d393af2fbd10b50ae3ea3dcac816b4..f1697b24ba89faca7eee7192a830ee3bf51ac713 100644
--- a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js
+++ b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js
@@ -31,7 +31,7 @@ else
     participantCondition = JSON.parse(vars.getString("$param.campaignParticipantsCondition_param")).condition;
     _handleCondition(campaignId, conditionSourceTableName, participantCondition);
 }
-
+neon.refreshAll();
 if (!vars.exists("$param.currentCampaignId_param") || !vars.get("$param.currentCampaignId_param"))
     neon.openContext("Campaign", "CampaignMain_view", [campaignId], neon.OPERATINGSTATE_VIEW, null);
 
diff --git a/entity/CampaignAddParticipants_entity/entityfields/campaign_id/onValidation.js b/entity/CampaignAddParticipants_entity/entityfields/campaign_id/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..c84027b8fee4b1faaeaa73067205a136f7ce68ba
--- /dev/null
+++ b/entity/CampaignAddParticipants_entity/entityfields/campaign_id/onValidation.js
@@ -0,0 +1,19 @@
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+import("system.translate");
+
+let participants = JSON.parse(vars.get("$param.campaignParticipantsRowIds_param"));
+if(participants.length > 0)
+{
+    let thisParticipantCount = newSelect("count('')").from("CAMPAIGNPARTICIPANT")
+        .where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", vars.get("$field.CAMPAIGN_ID"))
+        .and(
+            "CAMPAIGNPARTICIPANT.CONTACT_ID",
+            participants,
+            SqlBuilder.IN()
+        ).cell();
+
+    if(parseInt(thisParticipantCount) > 0)
+        result.string(translate.text("Participant is already participating"));
+}
diff --git a/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js b/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js
index ff279849cebaa73eaaad7f251b821d9379d06ad5..d1c7824536e06bed2ffb8d47a1b93cc8f1260253 100644
--- a/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js
+++ b/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js
@@ -29,7 +29,7 @@ if(vars.get("$field.CAMPAIGN_ID"))
         if (vars.get("$param.campaignParticipantsCondition_param"))
         {
             var contactFilterCondition = JSON.parse(vars.get("$param.campaignParticipantsCondition_param")).condition;
-            contactIds = CampaignUtils.GetContactIdsNotInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), contactFilterCondition, comingfrom);
+            contactIds = CampaignUtils.GetContactIdsInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), contactFilterCondition);
         } 
         else
         {
diff --git a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod
index 137b70c4aa991ae7a2e366e78c7658701dd62d68..432e1d4f798b4c2928c0e37cc9b506016699886f 100644
--- a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod
+++ b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod
@@ -1,11 +1,12 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>CampaignAnalysis_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/CampaignAnalysis_entity/documentation.adoc</documentation>
   <siblings>
     <element>CampaignCost_entity</element>
   </siblings>
+  <usePermissions v="false" />
   <recordContainer>jdito</recordContainer>
   <entityFields>
     <entityProvider>
diff --git a/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod b/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod
index de366ec455d550396f8e3fbbbb404e73f7c8b02b..58a579ab19e9eb374abf7a186b1d33602d0b5407 100644
--- a/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod
+++ b/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod
@@ -1,11 +1,12 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>CampaignCostChart_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/CampaignCostChart_entity/documentation.adoc</documentation>
   <siblings>
     <element>CampaignCost_entity</element>
   </siblings>
+  <usePermissions v="false" />
   <recordContainer>jdito</recordContainer>
   <entityFields>
     <entityProvider>
diff --git a/entity/CampaignCost_entity/CampaignCost_entity.aod b/entity/CampaignCost_entity/CampaignCost_entity.aod
index 2af24acc0d0ade0e8fbe9d0df0397c5b4c1a2ced..9016cfd74c6a4c08c3db2342593a2499338aaba3 100644
--- a/entity/CampaignCost_entity/CampaignCost_entity.aod
+++ b/entity/CampaignCost_entity/CampaignCost_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>CampaignCost_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/CampaignCost_entity/documentation.adoc</documentation>
@@ -7,6 +7,7 @@
     <element>CampaignAnalysis_entity</element>
     <element>CampaignCostChart_entity</element>
   </siblings>
+  <usePermissions v="false" />
   <titlePlural>Cost entries</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -179,8 +180,8 @@
           <valueProcess>%aditoprj%/entity/CampaignCost_entity/entityfields/keywordcampaignmanagementcostcategory/children/containername_param/valueProcess.js</valueProcess>
         </entityParameter>
         <entityParameter>
-          <name>ExcludedKeyIdsSubquery_param</name>
-          <valueProcess>%aditoprj%/entity/CampaignCost_entity/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js</valueProcess>
+          <name>BlacklistIds_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignCost_entity/entityfields/keywordcampaignmanagementcostcategory/children/blacklistids_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -221,9 +222,9 @@
     </entityField>
     <entityParameter>
       <name>CampaignSteps_param</name>
-      <title></title>
       <expose v="true" />
       <documentation>%aditoprj%/entity/CampaignCost_entity/entityfields/campaignsteps_param/documentation.adoc</documentation>
+      <title></title>
       <description>PARAMETER</description>
     </entityParameter>
     <entityField>
@@ -236,37 +237,22 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityAggregateField>
+      <name>NET_aggregate</name>
+      <parentField>NET</parentField>
+    </entityAggregateField>
+    <entityAggregateField>
+      <name>NETPERPARTICIPANT_aggregate</name>
+      <parentField>netPerParticipant</parentField>
+    </entityAggregateField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/CampaignCost_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/CampaignCost_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>6010c581-04c5-4578-b07b-5ab5ce27093b</name>
-          <tableName>CAMPAIGNCOST</tableName>
-          <primaryKey>CAMPAIGNCOSTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>e5fcdb82-a4f4-4bf8-a7e5-81b94d6377bb</name>
-          <tableName>CAMPAIGNSTEP</tableName>
-          <primaryKey>CAMPAIGNSTEPID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>22980b1e-ea89-4dc6-a648-bddb77401c6a</name>
-          <tableName>CAMPAIGN</tableName>
-          <primaryKey>CAMPAIGNID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CAMPAIGN_ID.value</name>
@@ -312,7 +298,39 @@
           <name>CURRENCY.value</name>
           <recordfield>CAMPAIGN.CURRENCY</recordfield>
         </dbRecordFieldMapping>
+        <aggregateFieldDbMapping>
+          <name>NET_aggregate.value</name>
+          <recordfield>CAMPAIGNCOST.NET</recordfield>
+          <aggregateType>SUM</aggregateType>
+        </aggregateFieldDbMapping>
+        <aggregateFieldDbMapping>
+          <name>NETPERPARTICIPANT_aggregate.value</name>
+          <expression>%aditoprj%/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js</expression>
+        </aggregateFieldDbMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>6010c581-04c5-4578-b07b-5ab5ce27093b</name>
+          <tableName>CAMPAIGNCOST</tableName>
+          <primaryKey>CAMPAIGNCOSTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>e5fcdb82-a4f4-4bf8-a7e5-81b94d6377bb</name>
+          <tableName>CAMPAIGNSTEP</tableName>
+          <primaryKey>CAMPAIGNSTEPID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>22980b1e-ea89-4dc6-a648-bddb77401c6a</name>
+          <tableName>CAMPAIGN</tableName>
+          <primaryKey>CAMPAIGNID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/CampaignCost_entity/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js b/entity/CampaignCost_entity/entityfields/keywordcampaignmanagementcostcategory/children/blacklistids_param/valueProcess.js
similarity index 84%
rename from entity/CampaignCost_entity/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js
rename to entity/CampaignCost_entity/entityfields/keywordcampaignmanagementcostcategory/children/blacklistids_param/valueProcess.js
index d918b95bfcb392e62eeee2bc4e77dacf8b9efd29..64277edeb0afa5bd2ed0c3a9bf86700a54343e6e 100644
--- a/entity/CampaignCost_entity/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js
+++ b/entity/CampaignCost_entity/entityfields/keywordcampaignmanagementcostcategory/children/blacklistids_param/valueProcess.js
@@ -12,9 +12,9 @@ var cond = newSelect("CATEGORY")
 if (vars.get("$field.CAMPAIGNSTEP_ID"))
     cond.andIfSet("CAMPAIGNCOST.CAMPAIGNSTEP_ID", "$field.CAMPAIGNSTEP_ID");
 else
-    cond.and("CAMPAIGNCOST.CAMPAIGNSTEP_ID is null")
+    cond.and("CAMPAIGNCOST.CAMPAIGNSTEP_ID is null");
     
 if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW)
     cond.andIfSet("CAMPAIGNCOST.CAMPAIGNCOSTID", "$field.CAMPAIGNCOSTID", SqlBuilder.NOT_EQUAL());
 
-result.string(cond.toString());
\ No newline at end of file
+result.string(JSON.stringify(cond.arrayColumn()));
\ No newline at end of file
diff --git a/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js b/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js
index 0d440b3273654c53a9eb47fa0da830499214b1a0..41159ac869687465a8b95f1980f26bd891c9851d 100644
--- a/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js
@@ -19,5 +19,4 @@ else
     cond.and("CAMPAIGNCOST.CAMPAIGNSTEP_ID is null");
 }
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js b/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..18b449265da4cb9e8479a5db4f859cfbc5d6bf53
--- /dev/null
+++ b/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js
@@ -0,0 +1,3 @@
+import("system.result");
+result.string("SUM(CAMPAIGNCOST.NET/(select COUNT(*) from CAMPAIGNPARTICIPANT where CAMPAIGNCOST.CAMPAIGN_ID = CAMPAIGNPARTICIPANT.CAMPAIGN_ID "
+             +" and CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID = CAMPAIGNSTEP.CAMPAIGNSTEPID))");
\ No newline at end of file
diff --git a/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod b/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod
index 9f4d833b4dd531b6cd9df80f061ed1cd12be9704..5e514a302a5165452ac0cb7ee1c1b4fd1448a141 100644
--- a/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod
+++ b/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>CampaignParticipantChart_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/CampaignParticipantChart_entity/documentation.adoc</documentation>
@@ -8,6 +8,7 @@
     <element>CampaignStep_entity</element>
     <element>CampaignAddParticipants_entity</element>
   </siblings>
+  <usePermissions v="false" />
   <recordContainer>jdito</recordContainer>
   <entityFields>
     <entityProvider>
diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod
index 42f0af8d639be70deb1552aaab86af3c4dbf0953..57d9fdba321a7f82f43f6e36baf126bbc075ca19 100644
--- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod
+++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod
@@ -1,40 +1,27 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>CampaignParticipant_entity</name>
+  <title>Participant</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/CampaignParticipant_entity/documentation.adoc</documentation>
-  <title>Participant</title>
   <siblings>
     <element>CampaignAddParticipants_entity</element>
     <element>CampaignParticipantChart_entity</element>
+    <element>Campaign_entity</element>
   </siblings>
   <afterOperatingState>%aditoprj%/entity/CampaignParticipant_entity/afterOperatingState.js</afterOperatingState>
-  <useFavorites v="true" />
+  <usePermissions v="false" />
   <titlePlural>Participants</titlePlural>
-  <recordContainer>ParticipantsDbRecordContainer</recordContainer>
+  <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
+      <recordContainer>db</recordContainer>
     </entityProvider>
     <entityProvider>
       <name>CampaignParticipantsProvider</name>
-      <targetContextField>CONTACTCONTEXT</targetContextField>
-      <targetIdField>CONTACT_ID</targetIdField>
       <documentation>%aditoprj%/entity/CampaignParticipant_entity/entityfields/campaignparticipantsprovider/documentation.adoc</documentation>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <expose v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>CampaignId_param</name>
-          <expose v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>CampaignStepId_param</name>
-          <expose v="true" />
-        </entityParameter>
-      </children>
+      <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
           <name>f28945cd-4613-4dfa-91f7-a7d9d64cef58</name>
@@ -49,6 +36,20 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>CampaignId_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>CampaignStepId_param</name>
+          <expose v="true" />
+        </entityParameter>
+      </children>
     </entityProvider>
     <entityParameter>
       <name>CampaignStepId_param</name>
@@ -113,11 +114,9 @@
       <name>CONTACT_ID</name>
       <title>Participant</title>
       <consumer>AnyContacts</consumer>
-      <linkedContextProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess>
       <mandatory v="true" />
       <state>READONLY</state>
       <stateProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/stateProcess.js</stateProcess>
-      <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
@@ -145,6 +144,11 @@
     <entityConsumer>
       <name>CampaignSteps</name>
       <refreshParent v="true" />
+      <dependency>
+        <name>dependency</name>
+        <entityName>CampaignStep_entity</entityName>
+        <fieldName>CampaignSteps</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>campaignId_param</name>
@@ -152,11 +156,6 @@
           <expose v="true" />
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>CampaignStep_entity</entityName>
-        <fieldName>CampaignSteps</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>CONTACTCONTEXT</name>
@@ -170,20 +169,12 @@
           <title>Update campaign step</title>
           <onActionProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js</onActionProcess>
           <isObjectAction v="false" />
-          <isSelectionAction v="false" />
           <iconId>NEON:GROUP_APPOINTMENT</iconId>
-          <state>DISABLED</state>
+          <state>AUTO</state>
           <stateProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js</stateProcess>
           <tooltip>Update campaign step</tooltip>
           <tooltipProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/tooltipProcess.js</tooltipProcess>
         </entityActionField>
-        <entityActionField>
-          <name>startMarketingWorkflows</name>
-          <title>Start marketing mailing</title>
-          <onActionProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess>
-          <isObjectAction v="false" />
-          <iconId>VAADIN:ENVELOPES</iconId>
-        </entityActionField>
       </children>
     </entityActionGroup>
     <entityField>
@@ -212,17 +203,17 @@
     </entityConsumer>
     <entityConsumer>
       <name>CommRestrictionIcon</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordAttribute_entity</entityName>
+        <fieldName>SpecificContainerKeyword</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
           <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/commrestrictionicon/children/containername_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordAttribute_entity</entityName>
-        <fieldName>SpecificContainerKeyword</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>STANDARD_EMAIL_COMMUNICATION</name>
@@ -237,30 +228,79 @@
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
+      <recordContainer>db</recordContainer>
     </entityProvider>
     <entityField>
-      <name>HASADVERTISINGBAN</name>
-      <title>Advertising ban</title>
-      <contentType>BOOLEAN</contentType>
-      <dropDownProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js</dropDownProcess>
+      <name>CONTACT_ORGANISATION_ID</name>
+      <title>Organisation</title>
+      <linkedContext>Organisation</linkedContext>
+    </entityField>
+    <entityField>
+      <name>CONTACT_PERSON_ID</name>
+      <title>Participant</title>
+      <linkedContext>Person</linkedContext>
+    </entityField>
+    <entityField>
+      <name>PERSON_CONTACT_ID</name>
+      <title>Person</title>
+      <consumer>Persons</consumer>
+      <linkedContext>Person</linkedContext>
+    </entityField>
+    <entityField>
+      <name>ORGANISATION_CONTACT_ID</name>
+      <title>Organisation</title>
+      <consumer>Organisations</consumer>
+      <groupable v="true" />
+      <linkedContext>Organisation</linkedContext>
     </entityField>
+    <entityConsumer>
+      <name>Persons</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Person_entity</entityName>
+        <fieldName>Contacts</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Organisations</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Organisation_entity</entityName>
+        <fieldName>Organisations</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityField>
+      <name>RESPONSIBLE_CONTACT_ID</name>
+      <title>Responsible</title>
+      <consumer>ResponsibleEmployees</consumer>
+      <groupable v="true" />
+      <linkedContext>Person</linkedContext>
+      <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>ResponsibleEmployees</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Employee_entity</entityName>
+        <fieldName>Employees</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>EmployeeContactIdWhitelist_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
-      <name>ParticipantsDbRecordContainer</name>
-      <alias>Data_alias</alias>
+      <name>db</name>
       <hasDependentRecords v="true" />
-      <conditionProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/conditionProcess.js</conditionProcess>
-      <onDBInsert>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/onDBInsert.js</onDBInsert>
-      <linkInformation>
-        <linkInformation>
-          <name>12b5bf2e-e376-4c40-9799-fb07961a455d</name>
-          <tableName>CAMPAIGNPARTICIPANT</tableName>
-          <primaryKey>CAMPAIGNPARTICIPANTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <fromClauseProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
+      <conditionProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <onDBInsert>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CAMPAIGN_ID.value</name>
@@ -300,26 +340,99 @@
           <recordfield>CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
-          <name>STANDARD_EMAIL_COMMUNICATION.value</name>
-          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.value/expression.js</expression>
-          <isFilterable v="true" />
+          <name>STANDARD_PHONE_COMMUNICATION.displayValue</name>
+          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_phone_communication.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>STANDARD_EMAIL_COMMUNICATION.displayValue</name>
+          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_email_communication.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ADVERTISINGBAN_ICON.value</name>
+          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CONTACT_PERSON_ID.displayValue</name>
+          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
-          <name>STANDARD_PHONE_COMMUNICATION.value</name>
-          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.value/expression.js</expression>
+          <name>CAMPAIGNSTEP_ID.displayValue</name>
+          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/campaignstep_id.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
-        <consumerMapping>
-          <name>AnyContacts</name>
-          <filterConditionProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js</filterConditionProcess>
+        <dbRecordFieldMapping>
+          <name>campaignStepCurrentParticipantCount.value</name>
+          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ORGANISATION_CONTACT_ID.value</name>
+          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js</expression>
           <isFilterable v="true" />
-          <filtertype>BASIC</filtertype>
-        </consumerMapping>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PERSON_CONTACT_ID.value</name>
+          <recordfield>CONTACT.CONTACTID</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PERSON_CONTACT_ID.displayValue</name>
+          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
-          <name>HASADVERTISINGBAN.value</name>
-          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js</expression>
+          <name>RESPONSIBLE_CONTACT_ID.value</name>
+          <recordfield>CAMPAIGNPARTICIPANT.RESPONSIBLE_CONTACT_ID</recordfield>
           <isFilterable v="true" />
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>RESPONSIBLE_CONTACT_ID.displayValue</name>
+          <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CONTACT_ORGANISATION_ID.displayValue</name>
+          <recordfield>ORGANISATION.NAME</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CONTACT_ORGANISATION_ID.value</name>
+          <recordfield>CONTACT.ORGANISATION_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CONTACT_PERSON_ID.value</name>
+          <recordfield>CONTACT.PERSON_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ORGANISATION_CONTACT_ID.displayValue</name>
+          <recordfield>ORGANISATION.NAME</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>02d0ac80-2767-401c-bdc1-aac3e8abf0e4</name>
+          <tableName>CAMPAIGNPARTICIPANT</tableName>
+          <primaryKey>CAMPAIGNPARTICIPANTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>6c320211-601b-47bf-a562-003886666040</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>e1719eb5-112c-4acd-8f72-58a688d5f058</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>8be80af4-69ea-4a5d-b404-8a26c1f8d8da</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js
index f322e15de7ad601c5a31941c8e33b1fa34d33e83..1bcf3daac52e4e4473b002a163317af1c88db283 100644
--- a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js
+++ b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/colorProcess.js
@@ -1,7 +1,16 @@
-import("Util_lib");
 import("system.result");
+import("Sql_lib");
+import("system.db");
 import("system.vars");
 import("system.neon");
+import("Campaign_lib");
                 
-var hasAdvertisingBan = Utils.toBoolean(vars.get("$field.HASADVERTISINGBAN"));
-result.string(hasAdvertisingBan ? neon.PRIORITY_MEDIUM_COLOR : neon.PRIORITY_LOW_COLOR);
\ No newline at end of file
+if(vars.get("$field.ADVERTISINGBAN_ICON") > 0)
+{
+    result.string(neon.PRIORITY_MEDIUM_COLOR);
+}
+else
+{
+    result.string(neon.PRIORITY_LOW_COLOR);
+}
+
diff --git a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js
index 7ff3faa94c8640ed84148138aef80e3973ba5b6d..837878d3b76182bb3c42d5b51b73c23349f95204 100644
--- a/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js
+++ b/entity/CampaignParticipant_entity/entityfields/advertisingban_icon/displayValueProcess.js
@@ -1,7 +1,12 @@
-import("Util_lib");
 import("system.result");
 import("system.vars");
 
 // Now show warning always, if any commrestriction exists. No matter which medium the current step has.
-var hasAdvertisingBan = Utils.toBoolean(vars.get("$field.HASADVERTISINGBAN"));
-result.string(hasAdvertisingBan ? "VAADIN:WARNING" : "VAADIN:CHECK");
\ No newline at end of file
+if (vars.get("$field.ADVERTISINGBAN_ICON") == 0)
+{
+    result.string("VAADIN:CHECK");
+}
+else
+{
+    result.string("VAADIN:WARNING");
+}
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js
index a22fac8bd5302593f1b008cf40574f6d662c3bb9..eb6914514d8b5113929b3fb4b41dd78767efde3a 100644
--- a/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js
+++ b/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js
@@ -1,8 +1,9 @@
 import("system.vars");
 import("system.result");
-import("system.neon");
 
-if (vars.get("$sys.viewmode") == neon.FRAME_VIEWMODE_TABLE)
-    result.string(vars.get("$param.CampaignId_param"));
-else
-    result.string(vars.get("$field.CAMPAIGN_ID"));
\ No newline at end of file
+var campaignID = vars.get("$field.CAMPAIGN_ID");
+
+if(!campaignID)
+    campaignID = vars.get("$param.CampaignId_param");
+
+result.string(campaignID);
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js b/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js
index 1e3714bbbc7b3249e43757d6d933fb289cb4f767..85822946ab4fe0ba7730ca93fd6fca69250a5b33 100644
--- a/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js
+++ b/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js
@@ -3,10 +3,4 @@ import("system.vars");
 import("Contact_lib");
 import("system.neon");
 
-let contactId = vars.getString("$field.CONTACT_ID");
-let displayValue = "";
-    
-if(contactId != "")
-    displayValue = ContactUtils.getFullTitleByContactId(contactId);
-
-result.string(displayValue);
+result.string(ContactUtils.getFullTitleByContactId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js b/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js
deleted file mode 100644
index 2e504d63e3b5a3f71b54b072798b3ad09c50984b..0000000000000000000000000000000000000000
--- a/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.vars");
-import("system.result");
-import("Contact_lib");
-
-result.string(ContactUtils.getContextByContactId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js
deleted file mode 100644
index 7a0567f685002323c521639e56667e945aa30d91..0000000000000000000000000000000000000000
--- a/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("system.vars");
-
-if(vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param"))
-    result.string(vars.get("$param.ContactId_param"));
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js
index 5f2f7a2cfa299eb520877db19056edad8bbef2f6..fbba2db18aa37636d3d3ca5097cccd1c29df51e7 100644
--- a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js
+++ b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js
@@ -13,6 +13,5 @@ if(sysSelection.length > 0) //selektierte IDs als Array
 }
 else
 {
-    let sysFilter = vars.get("$sys.filter");//todo change name
-    CampaignUtils.openSetCampaignStepViewByCondition(JSON.stringify(sysFilter), campaignId, campaignStepId);
+    CampaignUtils.openSetCampaignStepViewByCondition(JSON.stringify(vars.get("$sys.filter")), campaignId, campaignStepId);
 }
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js
index d55386c662b50138c9a582d15dfcd103d2200e20..78eb0e84628e8dd7122682d803a8e555c24594a5 100644
--- a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js
+++ b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js
@@ -3,8 +3,7 @@ import("system.vars");
 import("system.neon");
 import("system.result");
 
-var campaignId = vars.get("$field.CAMPAIGN_ID");
-var participantCount = CampaignUtils.getParticipantCount(campaignId);
+var participantCount = vars.get("$sys.datarowcountfull");
 
 if(participantCount > 0)
 {
diff --git a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js
deleted file mode 100644
index 40e60ff20d2ca20af3b447981c2a988959d2de63..0000000000000000000000000000000000000000
--- a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js
+++ /dev/null
@@ -1,36 +0,0 @@
-import("Util_lib");
-import("system.entities");
-import("Context_lib");
-import("system.vars");
-import("system.neon");
-
-var rows = vars.get("$sys.selectionRows");
-var filter = vars.get("$sys.filter").filter;
-var targets = [];
-
-if (Utils.isNullOrEmpty(rows))
-{
-    let loadConfig = entities.createConfigForLoadingRows()
-        .entity("CampaignParticipant_entity")
-        .provider("CampaignParticipantsProvider")
-        .fields(["CONTACT_ID", "CONTACTCONTEXT"])
-        .addParameter("CampaignId_param", vars.get("$param.CampaignId_param"))
-        .addParameter("CampaignStepId_param", vars.get("$param.CampaignStepId_param"))
-        .addParameter("ContactId_param", vars.get("$param.ContactId_param"));
-
-    if (filter)
-        loadConfig.filter(JSON.stringify(filter));
-    
-    rows = entities.getRows(loadConfig);
-}
-
-rows = rows.map(function (row)
-{
-    return [row["CONTACT_ID"], row["CONTACTCONTEXT"]];
-});
-
-
-neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, {
-    "ObjectIds_param": JSON.stringify(rows),
-    "ObjectType_param": ContextUtils.getCurrentContextId()
-});
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..92bb44a696f0c6d44599487fd487f086d632b652
--- /dev/null
+++ b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+result.string(ContactUtils.getTitleByContactId(vars.get("$field.RESPONSIBLE_CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a952fcd46b87af6cd15e61a321c986df950fe4d7
--- /dev/null
+++ b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+    
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string(vars.get("$global.user.contactId"));
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2aacdbde97117f3c607a2234c5b96e5616f10246
--- /dev/null
+++ b/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+import("system.neon");
+
+if(vars.get("$sys.presentationmode") == neon.CONTEXT_PRESENTATIONMODE_FILTER)
+{
+    result.string(JSON.stringify(newSelect("DISTINCT CAMPAIGNPARTICIPANT.RESPONSIBLE_CONTACT_ID")
+        .from("CAMPAIGNPARTICIPANT")
+        .where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", vars.get("$param.CampaignId_param"))
+        .arrayColumn()));
+}
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/conditionProcess.js b/entity/CampaignParticipant_entity/recordcontainers/db/conditionProcess.js
similarity index 100%
rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/conditionProcess.js
rename to entity/CampaignParticipant_entity/recordcontainers/db/conditionProcess.js
diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js b/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8603fcea0476d3281eedbdcb42db6032e193ff12
--- /dev/null
+++ b/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+result.string("CAMPAIGNPARTICIPANT "
+            +" join CONTACT on CONTACTID = CONTACT_ID "
+            +" left join PERSON ON PERSONID = PERSON_ID "
+            +" join ORGANISATION on ORGANISATION_ID = ORGANISATIONiD");
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/onDBInsert.js b/entity/CampaignParticipant_entity/recordcontainers/db/onDBInsert.js
similarity index 100%
rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/onDBInsert.js
rename to entity/CampaignParticipant_entity/recordcontainers/db/onDBInsert.js
diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..3343ac44d8f919400aa9972b5f1c0cd3f7837c57
--- /dev/null
+++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("Contact_lib");
+import("Sql_lib");
+import("system.result");
+
+// Now show warning always, if any commrestriction exists. No matter which medium the current step has.
+result.string("(" + ContactUtils.getCommRestrictionCount(undefined, vars.get("$sys.date")) + ")");
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/campaignstep_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/campaignstep_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..840d4c2dc1202bd94f31491b84d05e76e55adf03
--- /dev/null
+++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/campaignstep_id.displayvalue/expression.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Sql_lib");
+
+result.string(newSelect("CAMPAIGNSTEP.NAME").from("CAMPAIGNSTEP").where("CAMPAIGNSTEP.CAMPAIGNSTEPID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID").toString());
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..d563f19045726a045494d9156cadf3f53389589e
--- /dev/null
+++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Sql_lib");
+
+result.string(newSelect("COUNT(*)").from("CAMPAIGNPARTICIPANT", "p1").where("p1.CAMPAIGNSTEP_ID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID").toString());
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..d28cdbab4f0d456577a81ffdacfca0609beb60d4
--- /dev/null
+++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js
@@ -0,0 +1,3 @@
+import("system.result");
+import("Person_lib");
+result.string(PersUtils.getResolvingDisplaySubSql("CONTACT_ID"));
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..93edad8b41dce7f2dbaab8c776c8054e9097c7a2
--- /dev/null
+++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js
@@ -0,0 +1,14 @@
+import("system.SQLTYPES");
+import("Sql_lib");
+import("system.result");
+
+result.string(SqlBuilder.caseWhen(newWhere(newSelect("COUNT(*)")
+                                    .from("CONTACT")
+                                    .where("CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID")
+                                    .and("CONTACT.PERSON_ID is null"), "0", SqlBuilder.GREATER(), SQLTYPES.INTEGER))
+                        .then("CAMPAIGNPARTICIPANT.CONTACT_ID")
+                        .elseValue(newSelect("c1.CONTACTID")
+                                        .from("CONTACT", "c1")
+                                        .join("CONTACT", "c1.ORGANISATION_ID = c2.ORGANISATION_ID", "c2")
+                                        .where("c2.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID")
+                                        .and("c1.PERSON_ID is null")).toString())
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..8e485513f892edef1812070b5521317ed059cf3d
--- /dev/null
+++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js
@@ -0,0 +1,3 @@
+import("system.result");
+import("Person_lib");
+result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGNPARTICIPANT.CONTACT_ID"));
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..29d2f306f74cbad80faada5dba266f0c819e76d3
--- /dev/null
+++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js
@@ -0,0 +1,3 @@
+import("system.result");
+import("Person_lib");
+result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGNPARTICIPANT.RESPONSIBLE_CONTACT_ID"));
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_email_communication.displayvalue/expression.js
similarity index 100%
rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.value/expression.js
rename to entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_email_communication.displayvalue/expression.js
diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_phone_communication.displayvalue/expression.js
similarity index 100%
rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.value/expression.js
rename to entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_phone_communication.displayvalue/expression.js
diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js
deleted file mode 100644
index c37a5f4a9b9f278e371d4609622c78b70aafe351..0000000000000000000000000000000000000000
--- a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/anycontacts/filterConditionProcess.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Contact_lib");
-import("Sql_lib");
-
-var condition = newWhere(null, ContactUtils.getFullContactSqlBuilder("CONTACTID")
-    .where("CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID")
-    .and(vars.get("$local.condition")), SqlBuilder.EXISTS());
-    
-result.string(condition.toString());
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js
deleted file mode 100644
index b1292f5439920657e37cfaa83ca71afd2ce1a5a8..0000000000000000000000000000000000000000
--- a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/hasadvertisingban.value/expression.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import("system.vars");
-import("Contact_lib");
-import("Sql_lib");
-import("system.result");
-
-var commRestrictionContactSubSql = newSelect("CONTACT.CONTACTID")
-    .from("CONTACT")
-    .where("CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID")
-    .and(ContactUtils.getCommRestrictionCondition());
-
-result.string(SqlBuilder.caseWhen(null, commRestrictionContactSubSql, SqlBuilder.EXISTS()).thenString("1").elseString("0").toString());
\ No newline at end of file
diff --git a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod
index 2de87bf6e8cb49f4aa8850d0674b0e85d81a2767..33c4b451adff6a01240d01795313d03eda9a0dac 100644
--- a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod
+++ b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod
@@ -1,14 +1,15 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>CampaignPlanning_entity</name>
+  <title>Campaign Planning</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/CampaignPlanning_entity/documentation.adoc</documentation>
-  <title>Campaign Planning</title>
   <siblings>
     <element>Campaign_entity</element>
     <element>CampaignStep_entity</element>
   </siblings>
   <iconId>NEON:GROUP_APPOINTMENT</iconId>
+  <usePermissions v="false" />
   <recordContainer>jditoRecordContainer</recordContainer>
   <entityFields>
     <entityProvider>
@@ -98,58 +99,6 @@
     </entityProvider>
   </entityFields>
   <recordContainers>
-    <dbRecordContainer>
-      <name>recordContainer</name>
-      <alias>Data_alias</alias>
-      <fromClauseProcess>%aditoprj%/entity/CampaignPlanning_entity/recordcontainers/recordcontainer/fromClauseProcess.js</fromClauseProcess>
-      <orderClauseProcess>%aditoprj%/entity/CampaignPlanning_entity/recordcontainers/recordcontainer/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>091a323d-d1e8-4eec-8f33-0c91bc7f62af</name>
-          <tableName>CAMPAIGN</tableName>
-          <primaryKey>CAMPAIGNID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>2df8e267-6c25-4bae-bd0f-2b7b4399cc2b</name>
-          <tableName>CAMPAIGNSTEP</tableName>
-          <primaryKey>CAMPAIGNSTEPID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
-      <recordFieldMappings>
-        <dbRecordFieldMapping>
-          <name>CAMPAIGN_ID.value</name>
-          <recordfield>CAMPAIGN.CAMPAIGNID</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>DATE_END.value</name>
-          <recordfield>CAMPAIGNSTEP.DATE_END</recordfield>
-          <isFilterable v="true" />
-          <isLookupFilter v="true" />
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>DATE_START.value</name>
-          <recordfield>CAMPAIGNSTEP.DATE_START</recordfield>
-          <isFilterable v="true" />
-          <isLookupFilter v="true" />
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>PREDECESSOR_STEP_ID.value</name>
-          <recordfield>CAMPAIGNSTEP.PREDECESSORSTEP_ID</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>STEP_DESCRIPTION.value</name>
-          <recordfield>CAMPAIGNSTEP.DESCRIPTION</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>STEP_ID.value</name>
-          <recordfield>CAMPAIGNSTEP.CAMPAIGNSTEPID</recordfield>
-        </dbRecordFieldMapping>
-      </recordFieldMappings>
-    </dbRecordContainer>
     <jDitoRecordContainer>
       <name>jditoRecordContainer</name>
       <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
diff --git a/entity/CampaignPlanning_entity/recordcontainers/jditorecordcontainer/contentProcess.js b/entity/CampaignPlanning_entity/recordcontainers/jditorecordcontainer/contentProcess.js
index 9f1541d2f9b4b072bcdb0a64bdf3c8c84baf1d7a..53985b5cc50a47402b9df28330a3f2623c768f39 100644
--- a/entity/CampaignPlanning_entity/recordcontainers/jditorecordcontainer/contentProcess.js
+++ b/entity/CampaignPlanning_entity/recordcontainers/jditorecordcontainer/contentProcess.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("JditoFilter_lib");
 import("system.util");
 import("system.db");
@@ -26,34 +27,47 @@ if (isMariaDB)
     columnName = "\`NAME\`";
 }
 
-var stepsRows = stepCondition.select("CAMPAIGNSTEPID, CAMPAIGNSTEP."+ columnName + ", CAMPAIGNSTEP.PREDECESSORSTEP_ID,"
+stepCondition.select("CAMPAIGNSTEPID, CAMPAIGNSTEP."+ columnName + ", CAMPAIGNSTEP.PREDECESSORSTEP_ID,"
                                    + " CAMPAIGNSTEP.DESCRIPTION, CAMPAIGNSTEP.DATE_START, CAMPAIGNSTEP.DATE_END, CAMPAIGNID, CAMPAIGN."+ columnName +", CAMPAIGN.STATUS")
                              .from("CAMPAIGN")
-                             .join("CAMPAIGNSTEP", "CAMPAIGN.CAMPAIGNID = CAMPAIGNSTEP.CAMPAIGN_ID")
-                             .orderBy("SORTING")
-                             .table();
+                             .join("CAMPAIGNSTEP", "CAMPAIGN.CAMPAIGNID = CAMPAIGNSTEP.CAMPAIGN_ID");
+                             
+if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
+   stepCondition.and("CAMPAIGNSTEP.CAMPAIGNSTEPID", vars.get("$local.idvalues"), SqlBuilder.IN());
 
-stepsRows = stepsRows.map(function ([stepId, stepName, predecessorId, desc, stepStartDate, stepEndDate, campaignId, campaignName, campaignStatus])
+var stepsRows = stepCondition.orderBy("SORTING").table();
+
+//this can happen when not a CampaignStep, but a Campaign node was selected
+if(stepsRows.length == 0 && vars.get("$local.idvalues") && newSelect("count(*)").from("CAMPAIGN").where("CAMPAIGN.CAMPAIGNID", vars.get("$local.idvalues")).cell() > 0)
 {
-    if (!campaignRows[campaignId])
-    {
-        let startDate = CampaignUtils.getCampaignStartDate(campaignId);
-        let endDate = CampaignUtils.getCampaignEndDate(campaignId);
-        campaignRows[campaignId] = [campaignId, campaignName, null, null, startDate, endDate, campaignId, TARGET_CONTEXT_ROOT_ELEMENT, campaignStatus];
-    }
-    stepIds[stepId] = true;
-    
-    return [stepId, stepName, predecessorId || campaignId, desc, stepStartDate, stepEndDate, campaignId, TARGET_CONTEXT_ELEMENT, campaignStatus];
-});
+    stepsRows = [[vars.get("$local.idvalues"), "", "", "", "", "", vars.get("$local.idvalues"), "", ""]]
+}
 
-//replace all predecessor ids that are not in the tree with the campaign id
-stepsRows.forEach(function (row)
+if(!vars.get("$local.idvalues"))
 {
-    if (!(stepIds[row[2]]))
-        row[2] = row[6];
-});
+    stepsRows = stepsRows.map(function ([stepId, stepName, predecessorId, desc, stepStartDate, stepEndDate, campaignId, campaignName, campaignStatus])
+    {
+        if (!campaignRows[campaignId])
+        {
+            let startDate = CampaignUtils.getCampaignStartDate(campaignId);
+            let endDate = CampaignUtils.getCampaignEndDate(campaignId);
+            campaignRows[campaignId] = [campaignId, campaignName, null, null, startDate, endDate, campaignId, TARGET_CONTEXT_ROOT_ELEMENT, campaignStatus];
+        }
+        stepIds[stepId] = true;
+
+        return [stepId, stepName, predecessorId || campaignId, desc, stepStartDate, stepEndDate, campaignId, TARGET_CONTEXT_ELEMENT, campaignStatus];
+    });
 
-//convert the object to an array
-campaignRows = Object.keys(campaignRows).map(function (id) {return campaignRows[id];});
+    //replace all predecessor ids that are not in the tree with the campaign id
+    stepsRows.forEach(function (row)
+    {
+        if (!(stepIds[row[2]]))
+            row[2] = row[6];
+    });
 
-result.object(campaignRows.concat(stepsRows))
+    //convert the object to an array
+    campaignRows = Object.keys(campaignRows).map(function (id) {return campaignRows[id];});
+    
+    stepsRows = campaignRows.concat(stepsRows);
+}
+result.object(stepsRows);
diff --git a/entity/CampaignPlanning_entity/recordcontainers/recordcontainer/fromClauseProcess.js b/entity/CampaignPlanning_entity/recordcontainers/recordcontainer/fromClauseProcess.js
deleted file mode 100644
index b007b4d58a7376e99c1fb0b20cfe88459dc89a4f..0000000000000000000000000000000000000000
--- a/entity/CampaignPlanning_entity/recordcontainers/recordcontainer/fromClauseProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.string("CAMPAIGN join CAMPAIGNSTEP on CAMPAIGN.CAMPAIGNID = CAMPAIGNSTEP.CAMPAIGN_ID")
\ No newline at end of file
diff --git a/entity/CampaignPlanning_entity/recordcontainers/recordcontainer/orderClauseProcess.js b/entity/CampaignPlanning_entity/recordcontainers/recordcontainer/orderClauseProcess.js
deleted file mode 100644
index 8538a702d13027d9d9739d9b6652105b87725638..0000000000000000000000000000000000000000
--- a/entity/CampaignPlanning_entity/recordcontainers/recordcontainer/orderClauseProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("system.db");
-
-result.object({"CAMPAIGNSTEP.SORTING": db.ASCENDING});
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/CampaignStep_entity.aod b/entity/CampaignStep_entity/CampaignStep_entity.aod
index 38abc14be1b8c632764cc2e8ad4081a5b798d5f3..db37cfd536dda3caf37c26d5774ef9c9d6e2ac85 100644
--- a/entity/CampaignStep_entity/CampaignStep_entity.aod
+++ b/entity/CampaignStep_entity/CampaignStep_entity.aod
@@ -1,18 +1,20 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>CampaignStep_entity</name>
+  <title>Campaign Step</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/CampaignStep_entity/documentation.adoc</documentation>
   <icon>NEON:GROUP_APPOINTMENT</icon>
-  <title>Campaign Step</title>
   <siblings>
     <element>CampaignPlanning_entity</element>
     <element>Campaign_entity</element>
   </siblings>
   <grantDeleteProcess>%aditoprj%/entity/CampaignStep_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/CampaignStep_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/CampaignStep_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <onValidation>%aditoprj%/entity/CampaignStep_entity/onValidation.js</onValidation>
   <imageProcess>%aditoprj%/entity/CampaignStep_entity/imageProcess.js</imageProcess>
+  <usePermissions v="false" />
   <titlePlural>Steps</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -58,6 +60,7 @@
       <title>Responsible</title>
       <consumer>Employees</consumer>
       <groupable v="true" />
+      <linkedContext>Person</linkedContext>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js</displayValueProcess>
@@ -95,7 +98,6 @@
       <groupable v="true" />
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/status/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>SORTING</name>
@@ -244,6 +246,12 @@
         <entityName>Employee_entity</entityName>
         <fieldName>Employees</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>OnlyActives_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityConsumer>
       <name>CampaignStepCosts</name>
@@ -375,27 +383,11 @@
       <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
-    <entityConsumer>
-      <name>CampaignStepMedium</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContainerName_param</name>
-          <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js</valueProcess>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityConsumer>
     <entityField>
       <name>STEPMEDIUM</name>
       <title>Medium</title>
-      <consumer>CampaignStepMedium</consumer>
+      <consumer>KeywordStepMedium</consumer>
       <groupable v="true" />
-      <displayValueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityActionField>
       <name>newBulkMail</name>
@@ -422,25 +414,33 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>CurrentParticipantsPerStep</name>
+    </entityField>
+    <entityConsumer>
+      <name>KeywordStepMedium</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBInsert>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>b039db2c-3988-42a0-9257-9689b1eb4e58</name>
-          <tableName>CAMPAIGNSTEP</tableName>
-          <primaryKey>CAMPAIGNSTEPID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CAMPAIGN_ID.value</name>
@@ -520,7 +520,28 @@
           <name>STEPMEDIUM.value</name>
           <recordfield>CAMPAIGNSTEP.STEPMEDIUM</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CurrentParticipantsPerStep.value</name>
+          <expression>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>STEPMEDIUM.displayValue</name>
+          <expression>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>EMPLOYEE_CONTACT_ID.displayValue</name>
+          <expression>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>b039db2c-3988-42a0-9257-9689b1eb4e58</name>
+          <tableName>CAMPAIGNSTEP</tableName>
+          <primaryKey>CAMPAIGNSTEPID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/CampaignStep_entity/contentDescriptionProcess.js b/entity/CampaignStep_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b07a72fe7cc543e3bedc5d5604f12f28769ffb6b
--- /dev/null
+++ b/entity/CampaignStep_entity/contentDescriptionProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.datetime");
+import("system.vars");
+import("system.result");
+result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy")));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js b/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js
index fcfc9adff47d5aec4a5503074c7efba56b4bc507..c53bfb5c9af9abcb188c7f5be23e0ba18b92ae7f 100644
--- a/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js
+++ b/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js
@@ -11,13 +11,13 @@ import("system.vars");
  * This is specifically required for the campaign planning module as we want to create
  * new steps there regardless of the selection
  */
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW &&
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW || (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW &&
     (vars.exists("$param.campaignId_param") && vars.get("$param.campaignId_param") == "" ||
-    vars.exists("$param.campaignSelectionVisible_param") && vars.get("$param.campaignSelectionVisible_param") == "true"))
+    vars.exists("$param.campaignSelectionVisible_param") && vars.get("$param.campaignSelectionVisible_param") == "true")))
 {
     result.string(neon.COMPONENTSTATE_AUTO);
 }
-else
+else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
 {
     result.string(neon.COMPONENTSTATE_INVISIBLE);
 }
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js b/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js
index 86c117c70ddf7fe6b5a8c94a811313929cec7a00..e9ba9c24747c9a500d2b4a46091b85a8a1167b4b 100644
--- a/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js
+++ b/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js
@@ -2,6 +2,14 @@ import("system.result");
 import("system.vars");
 import("Campaign_lib");
 
-let currentParticipantsCount = CampaignUtils.getParticipantCountForStep(vars.get("$field.CAMPAIGNSTEPID"), vars.get("$field.CAMPAIGN_ID"));
-let maxParticipantsStepCount = vars.get("$field.MAXPARTICIPANTS");
-result.string(currentParticipantsCount + "/" + maxParticipantsStepCount);
\ No newline at end of file
+var currentParticipantsCount = vars.get("$field.CurrentParticipantsPerStep");
+var maxParticipantsStepCount = vars.get("$field.MAXPARTICIPANTS");
+var res = [];
+
+if(currentParticipantsCount)
+    res.push(currentParticipantsCount);
+
+if(maxParticipantsStepCount)
+    res.push(maxParticipantsStepCount);
+
+result.string(res.join("/"));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js
index 351d4b3f2c2dd75cb77ecc6ae3e0ec36f0b467de..037d5e264baf41f4e2b0ebcfce8103d365ee7e13 100644
--- a/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js
+++ b/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js
@@ -1,5 +1,5 @@
-import("system.vars");
-import("system.result");
-import("Contact_lib");
-
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
 result.string(ContactUtils.getTitleByContactId(vars.get("$field.EMPLOYEE_CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js b/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js
index 0e00e387dfc0f28d5aa51163bd183e450f8535b9..85f342bc9d6e0a7d82ad065c59d5d30e6c735fe6 100644
--- a/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js
+++ b/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js
@@ -3,5 +3,5 @@ import("system.neon");
 import("system.vars");
 import("Employee_lib");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(EmployeeUtils.getCurrentContactId());
\ No newline at end of file
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string(EmployeeUtils.getCurrentContactId());
diff --git a/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js
similarity index 97%
rename from entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js
rename to entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js
index ed5935fc124e63ff268a7e65d5efceab70ac456e..cda204045d2aba9ae974e0ce2200ba0cc6c852c0 100644
--- a/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js
+++ b/entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js
@@ -1,2 +1,2 @@
-import("system.result");
+import("system.result");
 result.string(true);
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js
index 3567518a6daebc37b34b1d557a04f5410c2d0a34..09fcdcf23e88706a34b513b13000ad5db2059234 100644
--- a/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js
+++ b/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js
@@ -1,5 +1,4 @@
 import("system.result");
-import("Keyword_lib");
 import("KeywordRegistry_basic");
 
 result.string($KeywordRegistry.campaignStepState());
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js
similarity index 81%
rename from entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js
rename to entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js
index a944db3259568d4c9b4453d682666704918a9b80..87e20a83401fc3a61ebc4f743ca2cc9763788253 100644
--- a/entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js
+++ b/entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js
@@ -1,5 +1,3 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
+import("KeywordRegistry_basic");
+import("system.result");
 result.string($KeywordRegistry.communicationMediumCampaign());
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js b/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js
index fd6b6aef2f69c7be604ebcf0512609e3dfdff3cb..de688c4d15daf210c375a6bb8bc8f6af326f20fd 100644
--- a/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js
+++ b/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js
@@ -1,3 +1,4 @@
+import("system.translate");
 import("Campaign_lib");
 import("system.result");
 import("Entity_lib");
@@ -7,4 +8,6 @@ var currentParticipantsCount = parseInt(vars.get("$field.CurrentMaxParticipantsI
 var newMaxParticipantsCount = parseInt(vars.get("local.value"));
 
 if(newMaxParticipantsCount < currentParticipantsCount)
-    result.string(CampaignUtils.getMaxParticipantsValidationMessage());
\ No newline at end of file
+    result.string(CampaignUtils.getMaxParticipantsValidationMessage());
+else if(newMaxParticipantsCount <= 0)
+    result.string(translate.text("The max participants count can not be equal or less then 0"));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js
deleted file mode 100644
index d0247bf23ab99895d336f6954448a7866fc855c5..0000000000000000000000000000000000000000
--- a/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignStepState(), vars.get("$field.STATUS")));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/status/valueProcess.js b/entity/CampaignStep_entity/entityfields/status/valueProcess.js
index dc5efe1d6fe6cca00ad15ff17d26d7fe16a98a55..ed6f79285d36d3d6d904c6554b6e28b79b09d861 100644
--- a/entity/CampaignStep_entity/entityfields/status/valueProcess.js
+++ b/entity/CampaignStep_entity/entityfields/status/valueProcess.js
@@ -1,7 +1,7 @@
+import("KeywordRegistry_basic");
 import("system.vars");
 import("system.result");
 import("system.neon");
-import("KeywordRegistry_basic");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
-    result.string($KeywordRegistry.campaignStepState$open());
\ No newline at end of file
+    result.string($KeywordRegistry.campaignStepState$open);
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js
deleted file mode 100644
index 429287a14cde6238f380ff76c6b30c2e6ca93f05..0000000000000000000000000000000000000000
--- a/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("system.vars");
-import("KeywordRegistry_basic");
-import("Keyword_lib");
-
-result.string(KeywordUtils.getViewValue($KeywordRegistry.communicationMediumCampaign(), vars.get("$field.STEPMEDIUM")));
diff --git a/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js b/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js
index d3d9bfc8c7b5828c91439ec247e9af5ec5ac33a4..c28e929a43d58b57ee5279fea896c3634511bf31 100644
--- a/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js
@@ -6,5 +6,4 @@ import("system.result");
 var cond = newWhereIfSet("CAMPAIGNSTEP.CAMPAIGN_ID", "$param.campaignId_param")
                 .andIfSet("CAMPAIGNSTEP.SORTING","$param.maxSort_param", SqlBuilder.LESS_OR_EQUAL());
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..adbfaa81f0fab15ab159113880fd2c1cdd6ce47d
--- /dev/null
+++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js
@@ -0,0 +1,3 @@
+import("system.result");
+import("Sql_lib");
+result.string(newSelect("COUNT(*)").from("CAMPAIGNPARTICIPANT").where("CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID = CAMPAIGNSTEP.CAMPAIGNSTEPID").toString());
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..54ff36ce1d19a4fcaf358c6242271a93d788c915
--- /dev/null
+++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js
@@ -0,0 +1,3 @@
+import("system.result");
+import("Person_lib");
+result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGNSTEP.EMPLOYEE_CONTACT_ID"));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
index f0e8a44adee3749dafae8e5cba1b67c52701e01a..dd2e2affd49e8a4b142168764ba20c101f1f500e 100644
--- a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
+++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
@@ -1,6 +1,5 @@
 import("system.result");
 import("Keyword_lib");
-import("KeywordRegistry_basic");
 
-var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.campaignStepState(), "CAMPAIGNSTEP.STATUS");
+var sql = KeywordUtils.getResolvedTitleSqlPart("CampaignManagementStepStates", "CAMPAIGNSTEP.STATUS");
 result.string(sql);
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..260b5474d57381f02195ced3290c820a2eea719f
--- /dev/null
+++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+
+var sql = KeywordUtils.getResolvedTitleSqlPart("CommunicationMediumCampaign", "CAMPAIGNSTEP.STEPMEDIUM");
+result.string(sql);
\ No newline at end of file
diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod
index 37416e7b55c7aa8aeec8dc400816f6df5b390cae..f5c04fb9aa81e250a12f0f2253e8201607d2aa53 100644
--- a/entity/Campaign_entity/Campaign_entity.aod
+++ b/entity/Campaign_entity/Campaign_entity.aod
@@ -1,18 +1,21 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Campaign_entity</name>
+  <title>Campaign</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Campaign_entity/documentation.adoc</documentation>
   <icon>VAADIN:GROUP</icon>
-  <title>Campaign</title>
   <siblings>
     <element>CampaignStep_entity</element>
     <element>CampaignCost_entity</element>
     <element>CampaignCostChart_entity</element>
     <element>CampaignStep_entity</element>
+    <element>CampaignAddParticipants_entity</element>
+    <element>CampaignParticipant_entity</element>
   </siblings>
   <grantDeleteProcess>%aditoprj%/entity/Campaign_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Campaign_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/Campaign_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <afterUiInit>%aditoprj%/entity/Campaign_entity/afterUiInit.js</afterUiInit>
   <useFavorites v="true" />
   <iconId>VAADIN:GROUP</iconId>
@@ -20,6 +23,27 @@
   <titlePlural>Campaigns</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityProvider>
       <name>#PROVIDER</name>
       <dependencies>
@@ -45,7 +69,6 @@
       <name>NAME</name>
       <title>Name</title>
       <mandatory v="true" />
-      <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/name/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>DATE_START</name>
@@ -71,6 +94,7 @@
       <title>Person in charge</title>
       <consumer>Employee</consumer>
       <groupable v="true" />
+      <linkedContext>Person</linkedContext>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Campaign_entity/entityfields/employee_contact_id/displayValueProcess.js</displayValueProcess>
@@ -79,7 +103,6 @@
       <name>DESCRIPTION</name>
       <title>Description</title>
       <contentType>LONG_TEXT</contentType>
-      <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/description/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>USER_NEW</name>
@@ -127,7 +150,6 @@
       <groupable v="true" />
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/status/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/Campaign_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
       <name>KeywordStates</name>
@@ -184,10 +206,6 @@
         <fieldName>CampaignParticipantsProvider</fieldName>
       </dependency>
       <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <expose v="true" />
-        </entityParameter>
         <entityParameter>
           <name>CampaignStepId_param</name>
           <expose v="true" />
@@ -271,25 +289,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityConsumer>
-      <name>Tasks</name>
-      <title>Tasks</title>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Task_entity</entityName>
-        <fieldName>Tasks</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ObjectId_param</name>
-          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-        <entityParameter>
-          <name>RowId_param</name>
-          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
     <entityActionField>
       <name>newActivity</name>
       <title>New activity</title>
@@ -390,8 +389,8 @@
       <children>
         <entityParameter>
           <name>CampaignId_param</name>
-          <title></title>
           <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaignanalysisconsumer/children/campaignid_param/valueProcess.js</valueProcess>
+          <title></title>
         </entityParameter>
         <entityParameter>
           <name>DateEnd_param</name>
@@ -423,8 +422,8 @@
     </entityConsumer>
     <entityParameter>
       <name>ShowOnlyCurrentUsersCampaigns_param</name>
-      <title>Show only own</title>
       <expose v="true" />
+      <title>Show only own</title>
     </entityParameter>
     <entityActionField>
       <name>copyCampaign</name>
@@ -439,26 +438,6 @@
       <iconId>VAADIN:CURLY_BRACKETS</iconId>
       <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/openadminview/stateProcess.js</stateProcess>
     </entityActionField>
-    <entityParameter>
-      <name>originalCampaignIdCopy_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityParameter>
-      <name>description_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityParameter>
-      <name>emplContactId_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityParameter>
-      <name>name_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityParameter>
-      <name>state_param</name>
-      <expose v="true" />
-    </entityParameter>
     <entityConsumer>
       <name>Documents</name>
       <dependency>
@@ -552,25 +531,40 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>ACTIVE</name>
+    </entityField>
+    <entityParameter>
+      <name>Copy_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>Tasks</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Task_entity</entityName>
+        <fieldName>Tasks</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectId_param</name>
+          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>RowId_param</name>
+          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
-      <fromClauseProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <onDBInsert>%aditoprj%/entity/Campaign_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Campaign_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Campaign_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>f95b8870-15cd-4302-99ec-8a104ae2262d</name>
-          <tableName>CAMPAIGN</tableName>
-          <primaryKey>CAMPAIGNID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
@@ -667,7 +661,24 @@
           <isFilterable v="true" />
           <filtertype>BASIC</filtertype>
         </consumerMapping>
+        <dbRecordFieldMapping>
+          <name>ACTIVE.value</name>
+          <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>EMPLOYEE_CONTACT_ID.displayValue</name>
+          <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>f95b8870-15cd-4302-99ec-8a104ae2262d</name>
+          <tableName>CAMPAIGN</tableName>
+          <primaryKey>CAMPAIGNID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtensionSet>
           <name>Attribute_filter</name>
@@ -676,53 +687,6 @@
           <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess>
           <filtertype>BASIC</filtertype>
         </filterExtensionSet>
-        <filterExtension>
-          <name>DateStart_filter</name>
-          <title>Startdate</title>
-          <contentType>DATE</contentType>
-          <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js</filterConditionProcess>
-          <filtertype>BASIC</filtertype>
-        </filterExtension>
-        <filterExtension>
-          <name>DateEnd_filter</name>
-          <title>Enddate</title>
-          <contentType>DATE</contentType>
-          <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js</filterConditionProcess>
-          <filtertype>BASIC</filtertype>
-        </filterExtension>
-        <filterExtension>
-          <name>Participant_filter</name>
-          <title>Participants</title>
-          <contentType>TEXT</contentType>
-          <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js</filterValuesProcess>
-          <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js</filterConditionProcess>
-          <filtertype>BASIC</filtertype>
-        </filterExtension>
-        <filterExtension>
-          <name>CampaignStep_filter</name>
-          <title>Steps</title>
-          <contentType>TEXT</contentType>
-          <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js</filterValuesProcess>
-          <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js</filterConditionProcess>
-          <filtertype>BASIC</filtertype>
-        </filterExtension>
-        <filterExtension>
-          <name>Member_filter</name>
-          <title>Members</title>
-          <contentType>TEXT</contentType>
-          <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js</filterValuesProcess>
-          <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js</filterConditionProcess>
-          <filtertype>BASIC</filtertype>
-        </filterExtension>
-        <filterExtension>
-          <name>Favorite_filter</name>
-          <title>Favoritegroup</title>
-          <contentType>TEXT</contentType>
-          <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js</filterValuesProcess>
-          <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js</filterConditionProcess>
-          <groupedRecordField></groupedRecordField>
-          <filtertype>BASIC</filtertype>
-        </filterExtension>
       </filterExtensions>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Campaign_entity/afterUiInit.js b/entity/Campaign_entity/afterUiInit.js
index 40048a413712450e39dc819e7142ed9b2a48d820..d71e3ce2b9233ece766c8092979fc69c296d212f 100644
--- a/entity/Campaign_entity/afterUiInit.js
+++ b/entity/Campaign_entity/afterUiInit.js
@@ -6,4 +6,9 @@ import("Attribute_lib");
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
 {
     AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes");
+    
+    if(vars.exists("$param.Copy_param") && vars.get("$param.Copy_param"))
+    {
+        neon.setFieldValues(JSON.parse(vars.get("$param.Copy_param"))["FIELDS"]);      
+    }
 }
diff --git a/entity/Campaign_entity/contentDescriptionProcess.js b/entity/Campaign_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b07a72fe7cc543e3bedc5d5604f12f28769ffb6b
--- /dev/null
+++ b/entity/Campaign_entity/contentDescriptionProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.datetime");
+import("system.vars");
+import("system.result");
+result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy")));
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js b/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js
index d0e4f15cee96a3e7328b2b5d92067f31c8cceaef..10b5370070b7fb3a8afee2313256a569cf4bc5ab 100644
--- a/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js
+++ b/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js
@@ -1,11 +1,11 @@
 import("system.vars");
 import("Campaign_lib");
 
-var campaignid = vars.getString("$field.CAMPAIGNID");
-var description = vars.getString("$field.DESCRIPTION");
-var emplContactId = vars.getString("$field.EMPLOYEE_CONTACT_ID");
-var name = vars.getString("$field.NAME");
-var state = vars.getString("$field.STATUS");
+var campaignid = vars.get("$field.CAMPAIGNID");
+var description = vars.get("$field.DESCRIPTION");
+var emplContactId = vars.get("$field.EMPLOYEE_CONTACT_ID");
+var name = vars.get("$field.NAME");
+var state = vars.get("$field.STATUS");
 
 CampaignUtils.copyCampaign(campaignid, description, emplContactId, name, state);
     
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/description/valueProcess.js b/entity/Campaign_entity/entityfields/description/valueProcess.js
deleted file mode 100644
index f410607cb7949d96ee9b88651ad0d2ae8b82f61c..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/entityfields/description/valueProcess.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import("system.vars");
-import("system.result");
-import("system.neon");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.description_param") && vars.get("$param.description_param") && !vars.get("$this.value")) 
-{
-    result.string(vars.get("$param.description_param"));
-}
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js b/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js
index 04046053e32189ddf0521ec4c014092fc503e9e2..4b00f2d048bc22a15174915872c498ea6051b998 100644
--- a/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js
+++ b/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js
@@ -3,10 +3,5 @@ import("system.neon");
 import("system.vars");
 import("Employee_lib");
 
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) 
-{
-    if(vars.exists("$param.emplContactId_param") && vars.get("$param.emplContactId_param") && !vars.get("$this.value"))
-        result.string(vars.get("$param.emplContactId_param"));
-    else if(vars.get("$this.value") == null)
-        result.string(EmployeeUtils.getCurrentContactId());
-}
\ No newline at end of file
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+        result.string(EmployeeUtils.getCurrentContactId());
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/name/valueProcess.js b/entity/Campaign_entity/entityfields/name/valueProcess.js
deleted file mode 100644
index 2c8e28aa36ecb0800ec59eccd8579a6a5d31ef10..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/entityfields/name/valueProcess.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import("system.vars");
-import("system.result");
-import("system.neon");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.name_param") && vars.get("$param.name_param") && !vars.get("$this.value")) 
-{
-    result.string(vars.get("$param.name_param"));
-}
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/openadminview/onActionProcess.js b/entity/Campaign_entity/entityfields/openadminview/onActionProcess.js
index e499f2c9eb69997395c5227e2df347b3dc86441d..3c00c1e0ff2dc159fc564be0e981aa9e9194443d 100644
--- a/entity/Campaign_entity/entityfields/openadminview/onActionProcess.js
+++ b/entity/Campaign_entity/entityfields/openadminview/onActionProcess.js
@@ -3,8 +3,8 @@ import("Context_lib");
 
 AdminViewUtils.open("CAMPAIGNID", [
     ["EMPLOYEE_CONTACT_ID", vars.get("$field.EMPLOYEE_CONTACT_ID")],
-    ["DATE_NEW", vars.get("$field.DATE_NEW")],
-    ["DATE_EDIT", vars.get("$field.DATE_EDIT")],
+    ["DATE_NEW", vars.get("$field.DATE_NEW"), "DATE"],
+    ["DATE_EDIT", vars.get("$field.DATE_EDIT"), "DATE"],
     ["USER_NEW", vars.get("$field.USER_NEW")],
     ["USER_EDIT", vars.get("$field.USER_EDIT")]
 ]);
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/status/valueProcess.js b/entity/Campaign_entity/entityfields/status/valueProcess.js
index e772e08d2c7b872067cd42a3605f157f9e41f4b9..c3b6c3a036232875d3123ed76e88d24c518a0e7f 100644
--- a/entity/Campaign_entity/entityfields/status/valueProcess.js
+++ b/entity/Campaign_entity/entityfields/status/valueProcess.js
@@ -1,12 +1,7 @@
+import("KeywordRegistry_basic");
 import("system.neon");
 import("system.vars");
 import("system.result");
-import("KeywordRegistry_basic");
 
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-{
-    if(vars.exists("$param.state_param") && vars.get("$param.state_param") && !vars.get("$this.value"))
-        result.string(vars.get("$param.state_param"));
-    else if (vars.get("$this.value") == null)
-        result.string($KeywordRegistry.campaignState$planning());
-}
\ No newline at end of file
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string($KeywordRegistry.campaignState$planning);
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js b/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js
index 5996e99db232db8df50f155732110608e5abff4e..e8b4e72e74a0a4696ff39e83135aa6100ef908c0 100644
--- a/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js
+++ b/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js
@@ -1,4 +1,4 @@
-import("system.result");
-import("Context_lib");
-
-result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
diff --git a/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js b/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js
index 44d452d9b78ba56e5498e9044770c98277bbfb2c..3814648f507bd77edb266f38a807c1669e8c5f1e 100644
--- a/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js
+++ b/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js
@@ -1,4 +1,4 @@
-import("system.vars");
-import("system.result");
-
+import("system.vars");
+import("system.result");
+
 result.string(vars.get("$field.CAMPAIGNID"));
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/conditionProcess.js b/entity/Campaign_entity/recordcontainers/db/conditionProcess.js
index ea77837ea6f8defb3e4e66200740f5b8614adae5..e5c5faf2b6e2facaaaad245e6858fa3ddec4c0a7 100644
--- a/entity/Campaign_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Campaign_entity/recordcontainers/db/conditionProcess.js
@@ -7,11 +7,11 @@ import("Sql_lib");
 
 
 var recordState = vars.get("$sys.recordstate");
-var condition = newWhere();
+var cond = newWhere();
+
 
 if(vars.get("$param.ShowOnlyCurrentUsersCampaigns_param") == 'true')
 {
-    condition.and("CAMPAIGN.EMPLOYEE_CONTACT_ID", EmployeeUtils.getCurrentContactId());
+    cond.and("CAMPAIGN.EMPLOYEE_CONTACT_ID", EmployeeUtils.getCurrentContactId());
 }
-
-result.string(condition.toString());
\ No newline at end of file
+result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js
deleted file mode 100644
index d0dddcc8b370c4307bd88e167744ee1c2be730ac..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Sql_lib");
-import("Util_lib");
-import("Campaign_lib");
-
-
-var valueSubSelect = "(select CAMPAIGNSTEPID from CAMPAIGNSTEP where CAMPAIGN.CAMPAIGNID = CAMPAIGNSTEP.CAMPAIGN_ID)";
-var countSubSelect = "(select count(*) from CAMPAIGNSTEP where CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)";
-var condition = "";
-
-switch(vars.get("$local.comparison")) {
-    case "ISNOTNULL":
-        condition = countSubSelect + " > 0";
-        break;
-    case "ISNULL":
-        condition = countSubSelect + " = 0";
-        break;
-    case "NOT_EQUAL":
-        condition = vars.get("$local.value") + " not in " + valueSubSelect;
-        break;
-    case "EQUAL":
-        condition = vars.get("$local.value") + " in " + valueSubSelect;
-    break;
-}
-
-result.object(condition);
diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js
deleted file mode 100644
index 13b3ff34c39b81bad62a1a11c9ade92ac14078fc..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import("system.result");
-import("Sql_lib");
-
-
-var campaignStepValues = new SqlBuilder()
-    .select("CAMPAIGNSTEPID, NAME")
-    .from("CAMPAIGNSTEP")
-    .orderBy("NAME")
-    .table();
-    
-result.object(campaignStepValues);
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js
deleted file mode 100644
index c5895859892cd384192c63b347d7c054bb6efc3d..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Sql_lib");
-import("Util_lib");
-
-
-var subSelect = new SqlBuilder()
-    .select("max(CAMPAIGNSTEP.DATE_END)")
-    .from("CAMPAIGNSTEP")
-    .where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID")
-    .toString();
-
-subSelect = "(" + subSelect + ")";
-
-var condition = StringUtils.replaceAll(vars.get("$local.condition"), vars.get("$local.columnPlaceholder"), subSelect);
-
-result.object(condition);
diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js
deleted file mode 100644
index 2d15b9e58f29554efe52a565d2033e5ba2f448ab..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Sql_lib");
-import("Util_lib");
-
-
-var subSelect = new SqlBuilder()
-    .select("min(CAMPAIGNSTEP.DATE_START)")
-    .from("CAMPAIGNSTEP")
-    .where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID")
-    .toString();
-
-subSelect = "(" + subSelect + ")";
-
-var condition = StringUtils.replaceAll(vars.get("$local.condition"), vars.get("$local.columnPlaceholder"), subSelect);
-
-result.object(condition);
diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js
deleted file mode 100644
index 5a2fdfdb69a4f0e0b4e752d9bb6cfff63e45f76e..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import("Favorites_lib");
-import("system.result");
-import("Sql_lib");
-
-var favoFilterCond = newWhere();
-var rowIds = FavoritesUtil.getRowIdsOfFavoriteGroup();
-
-for(i = 0; i < rowIds.length; i++)
-    favoFilterCond.or("CAMPAIGN.CAMPAIGNID", rowIds[i], SqlBuilder.EQUAL());
-
-result.string(favoFilterCond.toString());
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
deleted file mode 100644
index 419128ca73fe597afc7ca4aeed50b28e610206ec..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("Context_lib");
-import("system.result");
-import("Favorites_lib");
-
-result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId()));
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js
deleted file mode 100644
index 48c84a8dcbb02d59429f6b681c2186b3c1767b6b..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Sql_lib");
-import("Util_lib");
-
-
-var valueSubSelect = "(select CONTACT_ID from OBJECTMEMBER where OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID)";
-var countSubSelect = "(select count(*) from OBJECTMEMBER where OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID)";
-var condition = "";
-
-switch(vars.get("$local.comparison")) {
-    case "ISNOTNULL":
-        condition = countSubSelect + " > 0";
-        break;
-    case "ISNULL":
-        condition = countSubSelect + " = 0";
-        break;
-    case "NOT_EQUAL":
-        condition = vars.get("$local.value") + " not in " + valueSubSelect;
-        break;
-    case "EQUAL":
-        condition = vars.get("$local.value") + " in " + valueSubSelect;
-    break;
-}
-
-result.object(condition);
diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js
deleted file mode 100644
index 569b13dcd324261da56d6e462a80f7b0a718c1df..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import("system.result");
-import("Sql_lib");
-import("Person_lib");
-
-
-var query = new SqlBuilder()
-    .select("OBJECTMEMBER.CONTACT_ID, (" + PersUtils.getResolvingDisplaySubSql("OBJECTMEMBER.CONTACT_ID") + ") as C")
-    .from("OBJECTMEMBER")
-    .join("CAMPAIGN", "OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID")
-    .join("CONTACT", "OBJECTMEMBER.CONTACT_ID = CONTACT.CONTACTID")
-    ;
-    
-result.object(query.table());
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js
deleted file mode 100644
index be23e1087b366a1211fadd6672a3ac0a0e9de033..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Sql_lib");
-import("Util_lib");
-
-
-var valueSubSelect = "(select CONTACT_ID from CAMPAIGNPARTICIPANT where CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)";
-var countSubSelect = "(select count(*) from CAMPAIGNPARTICIPANT where CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)";
-var condition = "";
-
-switch(vars.get("$local.comparison")) {
-    case "ISNOTNULL":
-        condition = countSubSelect + " > 0";
-        break;
-    case "ISNULL":
-        condition = countSubSelect + " = 0";
-        break;
-    case "NOT_EQUAL":
-        condition = vars.get("$local.value") + " not in " + valueSubSelect;
-        break;
-    case "EQUAL":
-        condition = vars.get("$local.value") + " in " + valueSubSelect;
-    break;
-}
-
-result.object(condition);
diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js
deleted file mode 100644
index 0ff2d9c975bfceec9ad15b02e8b0a921abf3081b..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import("system.result");
-import("Sql_lib");
-import("Person_lib");
-
-
-var contactDisplaySelect = "case when CONTACT.PERSON_ID is null"
-                            + " then (select ORGANISATION.NAME FROM ORGANISATION join CONTACT on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID where CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID)"
-                            + " else (" + PersUtils.getResolvingDisplaySubSql("CAMPAIGNPARTICIPANT.CONTACT_ID") + ")"
-                            + " end";
-var query = new SqlBuilder()
-    .select("distinct CAMPAIGNPARTICIPANT.CONTACT_ID, (" + contactDisplaySelect + ") as C")
-    .from("CAMPAIGNPARTICIPANT")
-    .join("CONTACT on CAMPAIGNPARTICIPANT.CONTACT_ID = CONTACT.CONTACTID", "", "", "inner")
-    ;
-    
-result.object(query.table());
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js b/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js
deleted file mode 100644
index f1704c63ce08d64a2b42eaa2192c87e929b2c290..0000000000000000000000000000000000000000
--- a/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-
-
-var recordState = vars.get("$sys.recordstate");
-var res = "CAMPAIGN";
-
-if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) {
-    res +=  " join (select min(DATE_START) as STEPDATESTART_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) STEPDATESTART_TABLEALIAS"
-        + " on STEPDATESTART_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID "
-        + " join (select max(DATE_END) as STEPDATEEND_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) STEPDATEEND_TABLEALIAS"
-        + " on STEPDATEEND_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID ";
-
-}
-
-result.string(res);
diff --git a/entity/Campaign_entity/recordcontainers/db/onDBInsert.js b/entity/Campaign_entity/recordcontainers/db/onDBInsert.js
index 3c0830aabedeb8f5a85b0d97704ef810d06b9002..ecc62088cac7fd1e7ee7b449554330682ae3a4e2 100644
--- a/entity/Campaign_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Campaign_entity/recordcontainers/db/onDBInsert.js
@@ -12,8 +12,8 @@ import("Campaign_lib");
 var rowdata = vars.get("$local.rowdata");
 var campaignId = vars.get("$local.uid");
 
-if (vars.get("$param.originalCampaignIdCopy_param"))
-    CampaignUtils.copyCampaignSteps(vars.getString("$param.originalCampaignIdCopy_param"), campaignId);
+if (vars.get("$param.Copy_param"))
+    CampaignUtils.copyCampaignSteps(JSON.parse(vars.get("$param.Copy_param"))["CAMPAIGNID"], campaignId);
 else
 {
     var threeWeeks = datetime.ONE_WEEK * 3;
diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..0c4da8fb72e3474ab6980b621c9139a560e21b09
--- /dev/null
+++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
@@ -0,0 +1,6 @@
+import("Context_lib");
+import("system.result");
+import("KeywordRegistry_basic");
+
+var activArr = [$KeywordRegistry.campaignState$planning(), $KeywordRegistry.campaignState$approved()];
+result.string(ContextUtils.buildActiveCaseWhen(activArr, "CAMPAIGN.STATUS"));
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js
index 510c61f479969118c5e33f8c21cf3861579d0f64..26ead684de6fdd3d812a023a30963789747605ab 100644
--- a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js
+++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js
@@ -1,12 +1,4 @@
-import("system.neon");
 import("system.result");
-import("system.vars");
+import("Sql_lib");
 
-
-var recordState = vars.get("$sys.recordstate");
-
-if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) {
-    result.string("STEPDATEEND_ALIAS");
-} else {
-    result.string("0");
-}
+result.string(newSelect("max(CAMPAIGNSTEP.DATE_END)").from("CAMPAIGNSTEP").where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID").toString());
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js
index 77d1b3dde659a3522bd8f4f6d682a091a8a13dc0..4659e92e558e26b8a60f3f37622a934793ac4f21 100644
--- a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js
+++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js
@@ -1,12 +1,5 @@
 import("system.neon");
 import("system.result");
-import("system.vars");
+import("Sql_lib");
 
-
-var recordState = vars.get("$sys.recordstate");
-
-if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) {
-    result.string("STEPDATESTART_ALIAS");
-} else {
-    result.string("0");
-}
\ No newline at end of file
+result.string(newSelect("min(CAMPAIGNSTEP.DATE_START)").from("CAMPAIGNSTEP").where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID").toString());
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..f0023d115c5071a9e86a99a3f9624b169018f820
--- /dev/null
+++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js
@@ -0,0 +1,3 @@
+import("Person_lib");
+import("system.result");
+result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGN.EMPLOYEE_CONTACT_ID"));
\ No newline at end of file
diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
index f67e50c289fe9587d704ded87665c5abce6509b5..d5024a1449de08a93db1ac0d8d642c2b1e5a4ceb 100644
--- a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
+++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
@@ -1,6 +1,6 @@
-import("system.result");
-import("Keyword_lib");
 import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
 
 var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.campaignState(), "CAMPAIGN.STATUS");
 result.string(sql);
\ No newline at end of file
diff --git a/entity/ChecklistEntryValue_entity/ChecklistEntryValue_entity.aod b/entity/ChecklistEntryValue_entity/ChecklistEntryValue_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..a2e7566be13d80bdeb1b4a29dc61ecfaec1fb4ff
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/ChecklistEntryValue_entity.aod
@@ -0,0 +1,152 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>ChecklistEntryValue_entity</name>
+  <title>Checklist entries</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>NEON:MQL</icon>
+  <imageProcess>%aditoprj%/entity/ChecklistEntryValue_entity/imageProcess.js</imageProcess>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>CHECKLISTENTRYVALUEID</name>
+    </entityField>
+    <entityField>
+      <name>CHECKLISTENTRY_ID</name>
+      <title>Checklist entry</title>
+      <state>READONLY</state>
+      <displayValueProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/checklistentry_id/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>OBJECT_ROWID</name>
+    </entityField>
+    <entityField>
+      <name>OBJECT_TYPE</name>
+      <valueProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/object_type/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>IS_FULFILLED</name>
+      <contentType>BOOLEAN</contentType>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+    </entityField>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>ChecklistId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>ChecklistEntryValues</name>
+      <titlePlural>Checklist entries</titlePlural>
+      <recordContainer>jdito</recordContainer>
+      <dependencies>
+        <entityDependency>
+          <name>7eae9b1e-cea7-4688-898a-754dba82eac7</name>
+          <entityName>ChecklistEntry_entity</entityName>
+          <fieldName>ChecklistEntryValues</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>d4bddebc-b38b-46dc-8bb8-5ffa4fbdf627</name>
+          <entityName>Salesproject_entity</entityName>
+          <fieldName>ChecklistEntryValues</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityParameter>
+      <name>Verifier_param</name>
+      <valueProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/verifier_param/valueProcess.js</valueProcess>
+    </entityParameter>
+    <entityParameter>
+      <name>VerifierFnName_param</name>
+    </entityParameter>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityActionGroup>
+      <name>setChecklistEntryCompleted</name>
+      <state>AUTO</state>
+      <stateProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/setchecklistentrycompleted/stateProcess.js</stateProcess>
+      <children>
+        <entityActionField>
+          <name>setCompleted</name>
+          <title>Set completed</title>
+          <onActionProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/setchecklistentrycompleted/children/setcompleted/onActionProcess.js</onActionProcess>
+          <isObjectAction v="false" />
+          <isSelectionAction v="true" />
+          <iconId>NEON:MQL</iconId>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityField>
+      <name>type</name>
+      <title>Type</title>
+      <valueProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/type/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/type/displayValueProcess.js</displayValueProcess>
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/ChecklistEntryValue_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <onUpdate>%aditoprj%/entity/ChecklistEntryValue_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
+      <recordFieldMappings>
+        <jDitoRecordFieldMapping>
+          <name>UID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>CHECKLISTENTRY_ID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>CHECKLISTENTRYVALUEID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>IS_FULFILLED.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>OBJECT_ROWID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>OBJECT_TYPE.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>USER_NEW.value</name>
+        </jDitoRecordFieldMapping>
+      </recordFieldMappings>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/ChecklistEntryValue_entity/entityfields/checklistentry_id/displayValueProcess.js b/entity/ChecklistEntryValue_entity/entityfields/checklistentry_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3a0b46b8b1fe9519eeec33585163ca74d1a2ebab
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/entityfields/checklistentry_id/displayValueProcess.js
@@ -0,0 +1,25 @@
+import("system.result");
+import("system.vars");
+import("system.translate");
+import("ChecklistEntryRegistry_basic");
+import("Util_lib");
+import("Sql_lib");
+
+
+var checklistEntryId = vars.get("$field.CHECKLISTENTRY_ID");
+var verfierFnName = newSelect("TITLE", "Data_alias")
+                            .from("CHECKLISTENTRY")
+                            .where("CHECKLISTENTRY.CHECKLISTENTRYID", checklistEntryId)
+                            .cell();
+var verifierFn = $ChecklistEntryRegistry[verfierFnName];
+var displayValue;
+
+if (Utils.isFunction(verifierFn))
+    displayValue = verifierFn().title;
+else{
+    displayValue = translate.text(verfierFnName);
+}
+
+result.string(displayValue);
+
+
diff --git a/entity/ChecklistEntryValue_entity/entityfields/object_type/valueProcess.js b/entity/ChecklistEntryValue_entity/entityfields/object_type/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cf41a5d0a18af79415a71643a793880b25ec5ec0
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/entityfields/object_type/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+
+result.string(vars.get("$param.ObjectType_param"));
\ No newline at end of file
diff --git a/entity/ChecklistEntryValue_entity/entityfields/setchecklistentrycompleted/children/setcompleted/onActionProcess.js b/entity/ChecklistEntryValue_entity/entityfields/setchecklistentrycompleted/children/setcompleted/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4684843918c7813b0de9c2057d3b93650301dacf
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/entityfields/setchecklistentrycompleted/children/setcompleted/onActionProcess.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("system.neon");
+import("Sql_lib");
+
+
+newWhere("CHECKLISTENTRYVALUE.CHECKLISTENTRYVALUEID", "$field.CHECKLISTENTRYVALUEID")
+    .updateFields({"IS_FULFILLED":1});
+        
+neon.refreshAll();
\ No newline at end of file
diff --git a/entity/ChecklistEntryValue_entity/entityfields/setchecklistentrycompleted/stateProcess.js b/entity/ChecklistEntryValue_entity/entityfields/setchecklistentrycompleted/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9e756de19ae758e0f6d61a377c1f25181a31d598
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/entityfields/setchecklistentrycompleted/stateProcess.js
@@ -0,0 +1,15 @@
+import("system.result");
+import("system.vars");
+import("system.neon");
+import("KeywordRegistry_basic");
+
+
+if (vars.get("$field.type") == $KeywordRegistry.checklistEntryType$auto())
+{
+    result.string(neon.COMPONENTSTATE_DISABLED);
+}
+
+if (vars.get("$field.type") == $KeywordRegistry.checklistEntryType$manual())
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
\ No newline at end of file
diff --git a/entity/ChecklistEntryValue_entity/entityfields/type/displayValueProcess.js b/entity/ChecklistEntryValue_entity/entityfields/type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..574355fa5aa6c81739dff0c6bc2884eed8ac0829
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/entityfields/type/displayValueProcess.js
@@ -0,0 +1,7 @@
+import("Keyword_lib");
+import("system.vars");
+import("system.result");
+import("KeywordRegistry_basic");
+
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.checklistEntryType(), vars.get("$field.type")));
\ No newline at end of file
diff --git a/entity/ChecklistEntryValue_entity/entityfields/type/valueProcess.js b/entity/ChecklistEntryValue_entity/entityfields/type/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..08c466c3be65f8e64bb5f7d594ce20fca8db8891
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/entityfields/type/valueProcess.js
@@ -0,0 +1,16 @@
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+
+var checklistEntryId = vars.get("$field.CHECKLISTENTRY_ID");
+
+if (checklistEntryId)
+{
+    var type = newSelect("TYPE")
+                .from("CHECKLISTENTRY")
+                .where("CHECKLISTENTRY.CHECKLISTENTRYID", checklistEntryId)
+                .cell(); 
+
+    result.string(type);
+}
\ No newline at end of file
diff --git a/entity/ChecklistEntryValue_entity/entityfields/verifier_param/valueProcess.js b/entity/ChecklistEntryValue_entity/entityfields/verifier_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..bd99ebeed2027694251b6959689c55508a87b6bb
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/entityfields/verifier_param/valueProcess.js
@@ -0,0 +1,14 @@
+import("Util_lib");
+import("system.result");
+import("system.vars");
+import("ChecklistEntryRegistry_basic");
+
+
+var fnName = vars.get("$param.VerifierFnName_param");
+var objectRowId = vars.get("$param.ObjectRowId_param");
+var isFulfilledFn = $ChecklistEntryRegistry[fnName];
+
+if (Utils.isFunction(isFulfilledFn))
+    result.string(isFulfilledFn().verifierFn(objectRowId));
+
+
diff --git a/entity/ChecklistEntryValue_entity/imageProcess.js b/entity/ChecklistEntryValue_entity/imageProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..de02e652cc1d7938b9675e6e39e10f2e0b1d04c3
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/imageProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.result");
+
+
+var image;
+var isFulfilled = vars.get("$field.IS_FULFILLED");
+
+if (isFulfilled == 1)
+{
+    image = "NEON:MQL";
+}
+
+result.string(image);
\ No newline at end of file
diff --git a/entity/ChecklistEntryValue_entity/recordcontainers/jdito/contentProcess.js b/entity/ChecklistEntryValue_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4727ac92281bcd2d31273ffa81fe95efe7a12786
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,95 @@
+import("system.result");
+import("system.vars");
+import("system.util");
+import("system.db");
+import("KeywordRegistry_basic");
+import("Util_lib");
+import("Sql_lib");
+
+
+var newUid;
+var isExistent;
+var checklistEntryIds = [];
+var preparedStatements = [];
+var checklistEntryValues = [];
+var manualChecklistEntries = [];
+var manualChecklistEntryValues = [];
+var cols = ["CHECKLISTENTRYVALUEID", "CHECKLISTENTRY_ID", "OBJECT_ROWID", "OBJECT_TYPE", 
+                "IS_FULFILLED", "USER_NEW", "USER_EDIT", "DATE_NEW", "DATE_EDIT"];
+
+var checklistId = vars.get("$param.ChecklistId_param");
+var objectRowId = vars.get("$param.ObjectRowId_param");
+//var objectType = vars.get("$param.ObjectType_param"); - necessary?
+var checklistEntries = [];
+if (checklistId)
+{
+    checklistEntries = newSelect("CHECKLISTENTRYID, CHECKLIST_ID, TITLE, TYPE, USER_NEW, USER_EDIT, DATE_NEW, DATE_EDIT")
+                            .from("CHECKLISTENTRY")
+                            .where("CHECKLISTENTRY.CHECKLIST_ID", checklistId)
+                            .table();
+                            
+    checklistEntries.forEach(function(pRow){
+        if (pRow[0]) 
+        {
+            checklistEntryIds.push(pRow[0]);
+        }
+    });
+}
+
+for (i = 0; i < checklistEntries.length; i++) 
+{
+    for (j = 0; j < checklistEntries[i].length; j++) 
+    {
+        checklistEntryValues[i] = new Array(10);
+
+        if (checklistEntries[i][3] == $KeywordRegistry.checklistEntryType$auto())
+        {
+            newUid = util.getNewUUID();
+            vars.set("$param.VerifierFnName_param", checklistEntries[i][2]);
+            checklistEntryValues[i] = [newUid, checklistEntries[i][0], newUid, "", vars.get("$sys.date"), 
+                                        Utils.toBoolean(vars.get("$param.Verifier_param")) ? 1 : 0, objectRowId,
+                                        "", "null", vars.get("$sys.user")];
+        }
+        else 
+        {
+            isExistent = newSelect("CHECKLISTENTRYVALUEID, CHECKLISTENTRY_ID, CHECKLISTENTRYVALUEID,\n\
+                                                DATE_EDIT, DATE_NEW, IS_FULFILLED, OBJECT_ROWID, OBJECT_TYPE, USER_EDIT, USER_NEW")
+                                    .from("CHECKLISTENTRYVALUE")
+                                    .where("CHECKLISTENTRYVALUE.CHECKLISTENTRY_ID", checklistEntries[i][0])
+                                    .and("CHECKLISTENTRYVALUE.OBJECT_ROWID", objectRowId)
+                                    .arrayRow();
+            if (isExistent.length > 0)
+            {
+                checklistEntryValues[i] = isExistent;
+            }
+            else
+            {
+                newUid = util.getNewUUID();
+                checklistEntryValues[i] = [newUid, checklistEntries[i][0], newUid, "", vars.get("$sys.date"), "0", objectRowId, "", 
+                                            "null", vars.get("$sys.user")];
+                isExistent = preparedStatements.some(function(pPreparedStatement){
+                    return pPreparedStatement[3].includes(checklistEntries[i][0]) && pPreparedStatement[3].includes(objectRowId);
+                });
+                
+                if (!isExistent)
+                {
+                    preparedStatements.push(["CHECKLISTENTRYVALUE", 
+                                            cols,
+                                            db.getColumnTypes("CHECKLISTENTRYVALUE", cols),
+                                            [checklistEntryValues[i][0],
+                                                checklistEntryValues[i][1],
+                                                checklistEntryValues[i][6],
+                                                checklistEntryValues[i][7],
+                                                checklistEntryValues[i][5].toString(),
+                                                checklistEntryValues[i][9],
+                                                checklistEntryValues[i][8],
+                                                checklistEntryValues[i][4],
+                                                checklistEntryValues[i][3]]]);
+                }
+            }
+        }
+    }
+} 
+
+db.inserts(preparedStatements, "Data_alias");
+result.object(checklistEntryValues);
\ No newline at end of file
diff --git a/entity/ChecklistEntryValue_entity/recordcontainers/jdito/onUpdate.js b/entity/ChecklistEntryValue_entity/recordcontainers/jdito/onUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..666ee575b4538a2df8721203cf2feaea2a61158e
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/recordcontainers/jdito/onUpdate.js
@@ -0,0 +1,10 @@
+import("Sql_lib");
+import("system.vars");
+
+var changed = vars.get("$local.changed");
+
+if(changed)
+{
+    newWhere("CHECKLISTENTRYVALUE.CHECKLISTENTRYVALUEID", "$field.CHECKLISTENTRYVALUEID")
+        .updateFields({"IS_FULFILLED" : vars.get("$field.IS_FULFILLED")});
+}
\ No newline at end of file
diff --git a/entity/ChecklistEntry_entity/ChecklistEntry_entity.aod b/entity/ChecklistEntry_entity/ChecklistEntry_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..22d41d9dd884232153e5ae210c532b72df52a8c3
--- /dev/null
+++ b/entity/ChecklistEntry_entity/ChecklistEntry_entity.aod
@@ -0,0 +1,149 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>ChecklistEntry_entity</name>
+  <title>Checklist entries</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>NEON:MQL</icon>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>CHECKLISTENTRYID</name>
+      <displayValueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklistentryid/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>TITLE</name>
+      <title>Title</title>
+      <dropDownProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/title/dropDownProcess.js</dropDownProcess>
+      <displayValueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/title/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>TYPE</name>
+      <title>Type</title>
+      <dropDownProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/type/dropDownProcess.js</dropDownProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityProvider>
+      <name>ChecklistEntries</name>
+      <dependencies>
+        <entityDependency>
+          <name>84d5df6b-1aff-4ab2-88a5-fd3b591916ce</name>
+          <entityName>Checklist_entity</entityName>
+          <fieldName>ChecklistEntries</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>9134e842-dac3-4f09-9e03-f71827b15fcf</name>
+          <entityName>SalesprojectPhaseDefinition_entity</entityName>
+          <fieldName>ChecklistEntries</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityField>
+      <name>CHECKLIST_ID</name>
+      <valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklist_id/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>ChecklistUid_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>ChecklistEntryValues</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>ChecklistEntryValue_entity</entityName>
+        <fieldName>ChecklistEntryValues</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ChecklistId_param</name>
+          <valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/checklistentryuid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ChecklistEntryType_param</name>
+          <valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/checklistentrytype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <conditionProcess>%aditoprj%/entity/ChecklistEntry_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <alias>Data_alias</alias>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>CHECKLISTENTRYID.value</name>
+          <recordfield>CHECKLISTENTRY.CHECKLISTENTRYID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>CHECKLISTENTRY.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>CHECKLISTENTRY.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TITLE.value</name>
+          <recordfield>CHECKLISTENTRY.TITLE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TYPE.value</name>
+          <recordfield>CHECKLISTENTRY.TYPE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>CHECKLISTENTRY.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>CHECKLISTENTRY.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CHECKLIST_ID.value</name>
+          <recordfield>CHECKLISTENTRY.CHECKLIST_ID</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>65224b99-e70c-49fb-955e-ee5bca837d6c</name>
+          <tableName>CHECKLISTENTRY</tableName>
+          <primaryKey>CHECKLISTENTRYID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/ChecklistEntry_entity/entityfields/checklist_id/valueProcess.js b/entity/ChecklistEntry_entity/entityfields/checklist_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..31aabdc692618a256df1bd91be2ae64c0cad7d99
--- /dev/null
+++ b/entity/ChecklistEntry_entity/entityfields/checklist_id/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+
+result.string(vars.get("$param.ChecklistUid_param"));
\ No newline at end of file
diff --git a/entity/ChecklistEntry_entity/entityfields/checklistentryid/displayValueProcess.js b/entity/ChecklistEntry_entity/entityfields/checklistentryid/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/entity/Role_entity/entityfields/permissionoverviews/children/roletitle_param/valueProcess.js b/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/checklistentrytype_param/valueProcess.js
similarity index 51%
rename from entity/Role_entity/entityfields/permissionoverviews/children/roletitle_param/valueProcess.js
rename to entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/checklistentrytype_param/valueProcess.js
index c4fc6bffb984a2312dbe938d59b5770b9703ce50..1ea6cd9699911073e0808318a9964c2cfa6bcabc 100644
--- a/entity/Role_entity/entityfields/permissionoverviews/children/roletitle_param/valueProcess.js
+++ b/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/checklistentrytype_param/valueProcess.js
@@ -1,4 +1,5 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$field.ROLENAME"));
\ No newline at end of file
+import("system.result");
+import("system.vars");
+
+
+result.string(vars.get("$field.TYPE"));
\ No newline at end of file
diff --git a/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/checklistentryuid_param/valueProcess.js b/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/checklistentryuid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..db36b115945826bd4ba67b94ed06f99fb4e2daf5
--- /dev/null
+++ b/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/checklistentryuid_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+
+result.string(vars.get("$field.CHECKLISTENTRYID"));
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/departmentattributename/stateProcess.js b/entity/ChecklistEntry_entity/entityfields/date_edit/valueProcess.js
similarity index 73%
rename from entity/DistrictResponsible_entity/entityfields/departmentattributename/stateProcess.js
rename to entity/ChecklistEntry_entity/entityfields/date_edit/valueProcess.js
index 916fbbd300758fdb197ee31bb0958a12d87f6670..b1325e54818a2ef8aef43c452e840cf0e00a340b 100644
--- a/entity/DistrictResponsible_entity/entityfields/departmentattributename/stateProcess.js
+++ b/entity/ChecklistEntry_entity/entityfields/date_edit/valueProcess.js
@@ -1,9 +1,8 @@
+import("system.vars");
 import("system.result");
 import("system.neon");
-import("system.vars");
-
 
 if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
 {
-    result.string(neon.COMPONENTSTATE_INVISIBLE);
+    result.string(vars.get("$sys.date"));
 }
\ No newline at end of file
diff --git a/entity/ChecklistEntry_entity/entityfields/date_new/valueProcess.js b/entity/ChecklistEntry_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..557358ecb61b3de637a1a916a37929ca88fc9563
--- /dev/null
+++ b/entity/ChecklistEntry_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/ChecklistEntry_entity/entityfields/title/displayValueProcess.js b/entity/ChecklistEntry_entity/entityfields/title/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b9d9117ecefc66d14394164cab6b1ca390a67c50
--- /dev/null
+++ b/entity/ChecklistEntry_entity/entityfields/title/displayValueProcess.js
@@ -0,0 +1,11 @@
+import("system.result");
+import("system.vars");
+import("system.translate");
+import("KeywordRegistry_basic");
+
+var title = vars.get("$field.TITLE");
+
+if (vars.get("$field.TYPE") == $KeywordRegistry.checklistEntryType$manual())
+{
+    result.string(translate.text(title));
+}
\ No newline at end of file
diff --git a/entity/ChecklistEntry_entity/entityfields/title/dropDownProcess.js b/entity/ChecklistEntry_entity/entityfields/title/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3a7f1a267bc366a0da3a7c3a5a68cc21f418479a
--- /dev/null
+++ b/entity/ChecklistEntry_entity/entityfields/title/dropDownProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+import("ChecklistEntryRegistry_basic");
+
+
+if (vars.get("$field.TYPE") == $KeywordRegistry.checklistEntryType$auto())
+{
+    result.object($ChecklistEntryRegistry.getEntryList());
+}
\ No newline at end of file
diff --git a/entity/ChecklistEntry_entity/entityfields/type/dropDownProcess.js b/entity/ChecklistEntry_entity/entityfields/type/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f3b2df2523349e9e5fe6e9ac8d8b8f712aed3bec
--- /dev/null
+++ b/entity/ChecklistEntry_entity/entityfields/type/dropDownProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("system.translate");
+
+result.object({"MANUAL":translate.text("Manually"), "AUTO":translate.text("Automatically")});
\ No newline at end of file
diff --git a/entity/ChecklistEntry_entity/entityfields/user_edit/valueProcess.js b/entity/ChecklistEntry_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..de5a4ba34e5e6a1abd7ba5be9d69d59f7f05330f
--- /dev/null
+++ b/entity/ChecklistEntry_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/ChecklistEntry_entity/entityfields/user_new/valueProcess.js b/entity/ChecklistEntry_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c2c237153fee057be773b3a43d34c443734039e5
--- /dev/null
+++ b/entity/ChecklistEntry_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/ChecklistEntry_entity/recordcontainers/db/conditionProcess.js b/entity/ChecklistEntry_entity/recordcontainers/db/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c25101de02357ff096464daebd0cb512ce138c8
--- /dev/null
+++ b/entity/ChecklistEntry_entity/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,18 @@
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+
+var checklistId = vars.get("$param.ChecklistUid_param");
+var cond = newWhere();
+
+if (checklistId) 
+{
+    cond.and("CHECKLISTENTRY.CHECKLIST_ID", checklistId);
+}
+else
+{
+    cond.and("1 = 2");
+}
+
+result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Checklist_entity/Checklist_entity.aod b/entity/Checklist_entity/Checklist_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b0e4120919d1d45da413523b4211b2614aee6def
--- /dev/null
+++ b/entity/Checklist_entity/Checklist_entity.aod
@@ -0,0 +1,85 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>Checklist_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>NEON:MQC</icon>
+  <siblings />
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>CHECKLISTID</name>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Checklist_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/Checklist_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/Checklist_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Checklist_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityProvider>
+      <name>Checklists</name>
+      <documentation>%aditoprj%/entity/Checklist_entity/entityfields/checklists/documentation.adoc</documentation>
+    </entityProvider>
+    <entityConsumer>
+      <name>ChecklistEntries</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>ChecklistEntry_entity</entityName>
+        <fieldName>ChecklistEntries</fieldName>
+      </dependency>
+    </entityConsumer>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <alias>Data_alias</alias>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>CHECKLISTID.value</name>
+          <recordfield>CHECKLIST.CHECKLISTID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>CHECKLIST.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>CHECKLIST.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>CHECKLIST.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>CHECKLIST.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>6151d9b7-6253-459b-953d-027710b120d7</name>
+          <tableName>CHECKLIST</tableName>
+          <primaryKey>CHECKLISTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/Checklist_entity/entityfields/checklists/documentation.adoc b/entity/Checklist_entity/entityfields/checklists/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/entity/Checklist_entity/entityfields/date_edit/valueProcess.js b/entity/Checklist_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b1325e54818a2ef8aef43c452e840cf0e00a340b
--- /dev/null
+++ b/entity/Checklist_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/Checklist_entity/entityfields/date_new/valueProcess.js b/entity/Checklist_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..557358ecb61b3de637a1a916a37929ca88fc9563
--- /dev/null
+++ b/entity/Checklist_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/Checklist_entity/entityfields/user_edit/valueProcess.js b/entity/Checklist_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..de5a4ba34e5e6a1abd7ba5be9d69d59f7f05330f
--- /dev/null
+++ b/entity/Checklist_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/Checklist_entity/entityfields/user_new/valueProcess.js b/entity/Checklist_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c2c237153fee057be773b3a43d34c443734039e5
--- /dev/null
+++ b/entity/Checklist_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod b/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod
index dc74f4716b87e075d26e2926315c508bdf77726c..50832393a42e0ccb91f71e3946cb435fd76c68fc 100644
--- a/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod
+++ b/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ClassificationAdmin_entity</name>
+  <title>Classification</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ClassificationAdmin_entity/documentation.adoc</documentation>
   <icon>VAADIN:LIST_OL</icon>
-  <title>Classification</title>
   <grantUpdateProcess>%aditoprj%/entity/ClassificationAdmin_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/ClassificationAdmin_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/ClassificationAdmin_entity/contentTitleProcess.js</contentTitleProcess>
@@ -39,7 +39,7 @@
     <entityField>
       <name>CLASSIFICATIONTYPEID</name>
       <title>Indicator</title>
-      <mandatory v="true" />
+      <mandatory v="false" />
       <stateProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/displayValueProcess.js</displayValueProcess>
@@ -49,9 +49,10 @@
       <title>Classification</title>
       <contentType>TEXT</contentType>
       <groupable v="true" />
-      <mandatory v="true" />
+      <mandatory v="false" />
       <dropDownProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroup/dropDownProcess.js</dropDownProcess>
       <textInputAllowed v="true" />
+      <stateProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroup/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroup/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroup/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -71,6 +72,7 @@
       <title>Place Of Use</title>
       <mandatory v="true" />
       <dropDownProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/object_type/dropDownProcess.js</dropDownProcess>
+      <stateProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/object_type/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/object_type/valueProcess.js</valueProcess>
       <onValueChange>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/object_type/onValueChange.js</onValueChange>
       <onValueChangeTypes>
@@ -119,13 +121,38 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>classificationTypeFilter</name>
+      <title>Usage</title>
+      <contentType>FILTER_TREE</contentType>
+      <filterTreeExcludedFieldsProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtypefilter/filterTreeExcludedFieldsProcess.js</filterTreeExcludedFieldsProcess>
+      <stateProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtypefilter/stateProcess.js</stateProcess>
+    </entityField>
+    <entityField>
+      <name>CLASSIFICATIONGROUPDISPLAYVALUE</name>
+      <title>Classification</title>
+      <mandatory v="true" />
+      <dropDownProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/dropDownProcess.js</dropDownProcess>
+      <textInputAllowed v="true" />
+      <stateProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/valueProcess.js</valueProcess>
+      <onValueChange>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/onValueChange.js</onValueChange>
+    </entityField>
+    <entityField>
+      <name>SCOREPOINTS</name>
+      <title>Max Points</title>
+      <contentType>NUMBER</contentType>
+      <mandatory v="true" />
+      <mandatoryProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/scorepoints/mandatoryProcess.js</mandatoryProcess>
+      <stateProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/scorepoints/stateProcess.js</stateProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
       <name>jDito</name>
       <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
       <contentProcess>%aditoprj%/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
-      <hasDependentRecords v="false" />
+      <hasDependentRecords v="true" />
       <onInsert>%aditoprj%/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js</onInsert>
       <onUpdate>%aditoprj%/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
       <onDelete>%aditoprj%/entity/ClassificationAdmin_entity/recordcontainers/jdito/onDelete.js</onDelete>
@@ -160,6 +187,18 @@
         <jDitoRecordFieldMapping>
           <name>recordCategory.value</name>
         </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>classificationTypeFilter.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>classificationTypeFilter.displayValue</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>SCOREPOINTS.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>CLASSIFICATIONGROUPDISPLAYVALUE.value</name>
+        </jDitoRecordFieldMapping>
       </recordFieldMappings>
     </jDitoRecordContainer>
   </recordContainers>
diff --git a/entity/ClassificationAdmin_entity/documentation.adoc b/entity/ClassificationAdmin_entity/documentation.adoc
index 390fb4c5dca8e222225334788788753279bc5d4b..52829958f6942c4a6c44173339b47fb1422aacfe 100644
--- a/entity/ClassificationAdmin_entity/documentation.adoc
+++ b/entity/ClassificationAdmin_entity/documentation.adoc
@@ -10,19 +10,19 @@ Purpose:
     This Entity gives the administrators an easy way to change the classification.
     Classifications get stored in the Classification table with their own uid, the ids of the classification type, classification score, object_rowId and object_type.
 
-    This entity displays the classifications (classificationGroup) and indicators (classificationType) grouped with the usage (object_type) in an treetable.
-    with the usage (object_type) as the first group, followed by the classifications (classificationgroup) of that group and it's indicators.
+    This entity displays the classifications (classificationGroup) and indicators (classificationType) and their usage(filter) grouped with the object_type in an treetable.
+    with the object_type as the first group, followed by the classifications (classificationgroup) of that group and it's indicators.
     The grading of the classification can be changed in the preview of an classification.
     The possible values of an indicator can be changed when opening the preview of the indicator.
 
     TreeTable Example: 
 
-        USAGE           CLASSIFICATION      INDICATOR
+                       CLASSIFICATION      INDICATOR            USAGE
         Organisation
                         1. Target Group     
-                                            Industry
-                                            Headquarters
-                                            Product preference
+                                            Industry            No restrictions
+                                            Headquarters        Filter set                  (ToDo: 1067241)
+                                            Product preference  No restrictions
                         2. Customer value   
         Salesproject    
                         1. Classification
@@ -31,8 +31,8 @@ Purpose:
 
 Particularities:
     
-    The classification gets updated via the "updateClassifications_serverProcess", which runs periodically, 
-    you can also start it manually using the action of this entity (currently invisible).
+    The classification gets updated via the "updateClassifications_serverProcess", which should run periodically, 
+    you can also start it manually using the action of this entity.
 
     The Classification consists of the following entities:
     Classification_entity,
@@ -53,23 +53,45 @@ Particularities:
 
 Adding the classification to other modules:
 
-    The Classification is only implemented for Organisation and Salesproject at the moment but can easily be used in other modules aswell by doing the following:
 
-    Add the Consumers "Classifications" and "ClassificationGroups" to the module you want to add the classification functionality 
-    and configure them the same way as in organisation and salesproject.
-    If you want to also have the classification in the preview and Filterview you also have to add the field "CLASSIFICATIONSTORAGE_ID" 
-    and configure the following things:
-        -add CLASSIFICATIONSTORAGE at the Linkinformation of the recordContainer (Primary key: CLASSIFICATIONSTORAGEID, UID Table: false, Read only: true)
-        -add the left join in the fromClauseProcess to CLASSIFICATIONSTORAGE using CLASSIFICATIONSTORAGE.OBJECT_ROWID = TableName.TableUid 
-        -add the recordfieldmapping to the field (CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID)
-        -add the CLASSIFICATIONSTORAGE_ID to the Filterview and Preview
-    Add the reference to the ClassificationView to the Mainview Context (see als organsiation and salesproject) 
+    The Classification is only implemented for Organisation and Salesproject at the moment but can easily be used in other modules aswell by doing the following:
 
     Extend the Keywordregistry and the classificationTypes in AB_KEYWORD_ENTRY by the new Module you are implementing the classification for.
     Also extend the CLASSIFICATIONADMIN_entity.CLASSIFICATIONTYPEPLACEOFUSE DropDownProcess.
-    Add ClassificationUtils.insertEmptyClassification() with the Uid und vars.get("$sys.currentcontextname") to the onInsert of the Module 
-    and also add the delete conditon to the onDelete (newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", eigeneUid).deleteData();)
-    !Important: if you are adding or deleting these datasets you always have to also insert/delete the dataset into CLASSIFICATIONSTORAGE entry,
-     so add the above mentioned delete condition and onInsertFunction to all actions that delete/create those datasets.!
 
-    Now you can either configure your classifications in the client or via liquibase
\ No newline at end of file
+    Add the Consumers "Classifications" and "ClassificationGroups" to the module you want to add the classification functionality and configure them the same way as in Organisation_entity and Salesproject_entity.
+    If you want to also have the classification in the preview and Filterview you also have to add the field "CLASSIFICATIONSTORAGEVALUE" and configure the following things:
+            -add CLASSIFICATIONSTORAGE at the Linkinformation of the recordContainer (Primary key: CLASSIFICATIONSTORAGEID, UID Table: false, Read only: true)
+            -add the left join in the fromClauseProcess to CLASSIFICATIONSTORAGE using CLASSIFICATIONSTORAGE.OBJECT_ROWID = TableName.TableUid 
+            -add the recordfieldmapping to the field (CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID)
+            -add CLASSIFICATIONSTORAGE_ID to the Filterview and Preview.
+            -optional: check "filterable" if you want it filterable (probably not that useful)
+    Add the reference to the ClassificationView to the Mainview Context (see als organsiation and salesproject) 
+    Add both of the classificationFilterExtensionSets: 
+        -"ClassificationType_filter" for filtering of the classificationTypes and it's values
+        -"ClassificationType_filter" for filtering of the achieved Classifications for each group
+
+    Important: 
+    -If you are deleting these datasets you always have to also delete the CLASSIFICATIONSTORAGE entry and the classification entries(if they exist), 
+    so add the these deleteconditions to all actions that delete those datasets:
+            newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", eigeneUid).deleteData();
+            newWhere("CLASSIFICATION.OBJECT_ROWID", eigeneUid).deleteData();
+    -Be sure to use WorkflowSignalSender.updated(); in the onUpdateProcess of the module and add the dependency mapping for classificationStorage in 
+    the Dependency_lib so the outdated flag of the classificationStorage dataset can automatically be set everytime an dataset get's modified
+
+
+    Now you can either configure your classifications in the client or via liquibase
+
+    If you already have old ClassificationDatasets:
+    A lot has changed in terms of datastructure:
+    The groups now have their own table and we are using an uuid instead of the groupname for the classificationgroups
+    We store classificationgrading with the the minPERCENT and the resulting grading for each classificationGroup dataset
+    We can now store filter for classificationtype datasets
+    We now store the scorepoints for classificationtype datasets
+    we are storing the achieved classifications (e.g. "ACD") in CLASSIFICATIONSTORAGE 
+    and the stored classifiaction now also store the value(because it will be possible to also use things like attributes as classifications) and the 
+    scorepoints (scorepercent of the linked classificationscore dataset * Scorepoints of the linked classificationtype dataset)
+    We also added an outdated flag to both ClassificationStorage and ClassificationType -> so the updateClassificationsServerprocess knows what it 
+    has to update (see also documentationProperty of said process)
+        - The ClassificationStorage one get's set via the onUpdate of the module (see above)
+        - The ClassificationType get's set for changes in classificationAdmin
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/stateProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..04d6ba3c02af036fc51b33769653aaf8c06e1088
--- /dev/null
+++ b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_EDIT && vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_NEW)
+    result.string(neon.COMPONENTSTATE_EDITABLE)
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE)
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/dropDownProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..917fbdf4fd535892b9a297d66d82bd0e16e21c92
--- /dev/null
+++ b/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/dropDownProcess.js
@@ -0,0 +1,16 @@
+import("Classification_lib");
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+//no Translation since the same logic as in the Keywords applies (Admin User is able to change the title)
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    var objectType = vars.get("$field.OBJECT_TYPE")
+    if (objectType)
+    {
+        var obj = ClassificationUtils.getAllGroups(objectType);
+        
+        result.object(obj);
+    }
+}
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/onValueChange.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..ea41f9b73265437d01ee5d12218b4aa8a358f74b
--- /dev/null
+++ b/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/onValueChange.js
@@ -0,0 +1,16 @@
+import("system.neon");
+import("system.vars");
+import("Sql_lib");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    var sorting = newSelect("CLASSIFICATIONGROUP.SORTING")
+                                .from("CLASSIFICATIONGROUP")
+                                .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", vars.get("$this.value"))
+                                .cell();
+
+    if(sorting)
+    {
+        neon.setFieldValue("$field.SORTING", sorting)
+    }
+}
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/stateProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..75628dd48b118ed61a38a10a7e1a96a2b58d8ec7
--- /dev/null
+++ b/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/stateProcess.js
@@ -0,0 +1,11 @@
+import("Classification_lib");
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if((vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW))
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE)
+}
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE)
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ad68c834ce9d2dde7ae05c13957bbab6d3737755
--- /dev/null
+++ b/entity/ClassificationAdmin_entity/entityfields/classificationgroupdisplayvalue/valueProcess.js
@@ -0,0 +1,19 @@
+import("system.result");
+import("system.vars");
+import("system.translate");
+import("Sql_lib");
+import("Classification_lib");
+
+var res = vars.get("$this.value");
+if(!res)
+{
+    var classificationGroupId = vars.get("$field.CLASSIFICATIONGROUP");
+    if(classificationGroupId)
+    {
+        res = newSelect("CLASSIFICATIONGROUP.TITLE")
+                            .from("CLASSIFICATIONGROUP")
+                            .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", classificationGroupId)
+                            .cell();
+    }
+}
+result.string(res);
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtypefilter/filterTreeExcludedFieldsProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtypefilter/filterTreeExcludedFieldsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cf03254dee3ad99700634720a48d4bbeb569bd23
--- /dev/null
+++ b/entity/ClassificationAdmin_entity/entityfields/classificationtypefilter/filterTreeExcludedFieldsProcess.js
@@ -0,0 +1,84 @@
+import("system.neon");
+import("system.text");
+import("Classification_lib");
+import("system.vars");
+import("Context_lib");
+import("Dependency_lib");
+import("system.project");
+import("ClassificationFilter_lib");
+import("Sql_lib");
+import("system.result");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
+{
+    //We want to exclude all the classificationFilterFields.
+    //Excluding via this process works by returning a array with all the fieldNames you want to exclude.
+    //The ClassificationFilters are ClassificationFilterExtensionSets so the name of one of these fields looks like this:
+    //      "#EXTENSION." + Set-Name + "." + Field-Name + "#" + Contenttype
+    // e.g: "#EXTENSION.ClassificationType_filter.d67397c5-5e05-433b-b61d-12807906aa5a#TEXT""
+
+    var classificationTypes = newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID, CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, CLASSIFICATIONTYPE.OBJECT_TYPE")
+                                        .from("CLASSIFICATIONTYPE")
+                                        .join("CLASSIFICATIONGROUP", "CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID = CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID")
+                                        .orderBy("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.SORTING")
+                                        .table();
+
+    var res = ["CLASSIFICATIONVALUE"];
+    var groupObject = {};
+    var sqlHelper = new SqlMaskingUtils();
+    var ii;
+    var previousObjectType;
+
+    for (let i = 0; i < classificationTypes.length; i++) {
+        //classificationTypeFilterFields are just the classificationTypeId with the correct prefix and contenttype
+        res.push("#EXTENSION.ClassificationType_filter."+classificationTypes[i][0]+"#TEXT")
+
+        //classificationGroupFilterFields are are a little more complicated:
+        //it's the classificationGroupId + the correct SqlCondition (as String) encoded via ClassificationGroupFilterNameCoder +correct prefix and contenttype
+        if(!groupObject.hasOwnProperty(classificationTypes[i][1]))//only once per group
+        {
+            if(previousObjectType == null || previousObjectType != classificationTypes[i][2])
+            {
+                ii = 0;// reset the position once we are done with that object_type (possible thanks to the orderBy of the select above
+            }
+            
+            var sqlConditionForGroup = SqlBuilder.caseWhen(newWhere("CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE is null"))
+                                                            .thenString("-")
+                                                            .elseValue(sqlHelper.substring("CLASSIFICATIONVALUE", ii+1, 1))
+                                                            .toString();
+                                                            
+            res.push("#EXTENSION.ClassificationGroup_filter."+ClassificationGroupFilterNameCoder.encode(classificationTypes[i][1], sqlConditionForGroup)+"#TEXT");
+            groupObject[classificationTypes[i][1]] = "";
+            ii++;// used for the correct Position in the grading string (we need the exact same condition as in the filterExtensionSet
+            previousObjectType = classificationTypes[i][2];
+        }
+    }
+
+    //remove all the fields of consumers with no dependency set between the entity of the object_type and the consumer entity
+    var context = text.decodeMS(text.decodeMS(vars.get("$field.UID"))[0])[0];
+
+    var entity = ContextUtils.getEntity(context);
+    var fields = project.getEntityStructure(entity)["fields"];
+
+    for (var field in fields)
+    {
+        if(fields[field]["fieldType"] == "CONSUMER")
+        {
+            var consumerEntity = fields[field]["entityName"];
+
+            if(!Dependency.getReverseDependency(entity).includes(consumerEntity))
+            {
+                var consumerStructure = project.getEntityStructure(consumerEntity);
+                var consumerName = fields[field]["name"];
+                var consumerFields = consumerStructure["fields"];
+                
+                for (var consumerField in consumerFields)
+                {
+                    //name of these filterFields = consumerName + '.' + fieldname
+                    res.push(consumerName +"."+consumerFields[consumerField]["name"]);
+                }
+            }
+        }
+    }
+    result.object(res);
+}
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtypefilter/stateProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtypefilter/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..460ef2a0b5860fafd7186f2d359295cd25c4b90e
--- /dev/null
+++ b/entity/ClassificationAdmin_entity/entityfields/classificationtypefilter/stateProcess.js
@@ -0,0 +1,15 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Classification_lib");
+
+var state;
+var recordCategory = vars.get("$field.recordCategory");
+if((recordCategory != $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE() 
+        && (vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_NEW)&& (vars.get("$sys.presentationmode") != neon.CONTEXT_PRESENTATIONMODE_FILTER)) 
+            || vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+    state = neon.COMPONENTSTATE_INVISIBLE;
+else
+    state = neon.COMPONENTSTATE_EDITABLE;
+    
+result.string(state);
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/entityfields/object_type/stateProcess.js b/entity/ClassificationAdmin_entity/entityfields/object_type/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6e826e0c8c9c707c2a6618da377d37812671571a
--- /dev/null
+++ b/entity/ClassificationAdmin_entity/entityfields/object_type/stateProcess.js
@@ -0,0 +1,16 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Classification_lib");
+
+var state;
+var recordCategory = vars.get("$field.recordCategory");
+
+if(vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_NEW && (recordCategory != $ClassificationRecordCategories.CLASSIFICATION_GROUP_EXISTS() 
+    || recordCategory != $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP()
+    || recordCategory != $ClassificationRecordCategories.CLASSIFICATION_GROUP_DOESNT_EXIST()))
+    state = neon.COMPONENTSTATE_DISABLED;
+else
+    state = neon.COMPONENTSTATE_EDITABLE;
+    
+result.string(state);
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/entityfields/scorepoints/mandatoryProcess.js b/entity/ClassificationAdmin_entity/entityfields/scorepoints/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..17d5c36488374de4df1f312b44a470014b336a36
--- /dev/null
+++ b/entity/ClassificationAdmin_entity/entityfields/scorepoints/mandatoryProcess.js
@@ -0,0 +1,16 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Classification_lib");
+
+var mandatory;
+var recordCategory = vars.get("$field.recordCategory");
+
+if(vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_NEW && (recordCategory == $ClassificationRecordCategories.CLASSIFICATION_GROUP_EXISTS() 
+    || recordCategory == $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP()
+    || recordCategory == $ClassificationRecordCategories.CLASSIFICATION_GROUP_DOESNT_EXIST()))
+    mandatory = false;
+else
+    mandatory = true;
+    
+result.string(mandatory);
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/entityfields/scorepoints/stateProcess.js b/entity/ClassificationAdmin_entity/entityfields/scorepoints/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1698a32794efed84f712e9985fe0ac602a8c07c6
--- /dev/null
+++ b/entity/ClassificationAdmin_entity/entityfields/scorepoints/stateProcess.js
@@ -0,0 +1,16 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Classification_lib");
+
+var state;
+var recordCategory = vars.get("$field.recordCategory");
+
+if(vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_NEW && (recordCategory == $ClassificationRecordCategories.CLASSIFICATION_GROUP_EXISTS() 
+    || recordCategory == $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP()
+    || recordCategory == $ClassificationRecordCategories.CLASSIFICATION_GROUP_DOESNT_EXIST()))
+    state = neon.COMPONENTSTATE_INVISIBLE;
+else
+    state = neon.COMPONENTSTATE_EDITABLE;
+    
+result.string(state);
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/entityfields/sorting/stateProcess.js b/entity/ClassificationAdmin_entity/entityfields/sorting/stateProcess.js
index 2cd13f04b8ed1f8cd3f762168f0b3208ada7cf1e..759b36de7c39c4a53ea6baa74cd5298958b6a0ee 100644
--- a/entity/ClassificationAdmin_entity/entityfields/sorting/stateProcess.js
+++ b/entity/ClassificationAdmin_entity/entityfields/sorting/stateProcess.js
@@ -9,7 +9,7 @@ var recordCategory = vars.get("$field.recordCategory");
 if(recordCategory == $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE())
     state = neon.COMPONENTSTATE_INVISIBLE;
 else if(recordCategory == $ClassificationRecordCategories.CLASSIFICATION_GROUP_EXISTS())
-    state = neon.COMPONENTSTATE_DISABLED;
+    state = neon.COMPONENTSTATE_EDITABLE;
 else
     state = neon.COMPONENTSTATE_EDITABLE;
     
diff --git a/entity/ClassificationAdmin_entity/entityfields/sorting/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/sorting/valueProcess.js
index 6eaad20db1e0a95b1bfa4842971a4e69a037b151..2a00907372cd2e3b236bcae2b2b04410c1e710ef 100644
--- a/entity/ClassificationAdmin_entity/entityfields/sorting/valueProcess.js
+++ b/entity/ClassificationAdmin_entity/entityfields/sorting/valueProcess.js
@@ -1,43 +1,49 @@
+import("Classification_lib");
 import("system.neon");
 import("system.vars");
 import("system.result");
 import("system.text");
 import("Sql_lib");
 
-if(!vars.get("$this.value"))
+var sysSelection = vars.get("$sys.selection");
+var uid = vars.get("$field.UID");
+var id;
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT )
 {
-    var sysSelection = vars.get("$sys.selection");
-    var uid = vars.get("$field.UID");
-    var id;
-    if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT )
+    if(sysSelection.length > 0)
     {
-        if(sysSelection.length > 0)
+        var res;
+        var value = vars.get("$field.CLASSIFICATION_PARENT_ID");
+        if(value)
         {
-            var res;
-            var value = vars.get("$field.CLASSIFICATION_PARENT_ID");
-            if(value)
+            if(value.charAt(0) != ";" && value.charAt(value.length) != ";")
+                id = text.decodeMS(uid)[1];
+            else
             {
-                if(value.charAt(0) != ";" && value.charAt(value.length) != ";")
-                    id = text.decodeMS(uid)[1];
-                else
-                {
-                    decodedIdvalues = text.decodeMS(value);
-                    if(decodedIdvalues[0].charAt(0) != ";" && decodedIdvalues[0].charAt(decodedIdvalues[0].length) != ";")
-                        id = text.decodeMS(text.decodeMS(uid)[0])[1];
-                }
+                decodedIdvalues = text.decodeMS(value);
+                if(decodedIdvalues[0].charAt(0) != ";" && decodedIdvalues[0].charAt(decodedIdvalues[0].length) != ";")
+                    id = text.decodeMS(text.decodeMS(uid)[0])[1];
             }
         }
     }
-    else if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
-        id = vars.get("$field.CLASSIFICATIONGROUP");
-        
-    var sorting = newSelect("CLASSIFICATIONGROUP.SORTING")
-                                .from("CLASSIFICATIONGROUP")
-                                .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", id)
-                                .cell();
-    if(sorting)
-        result.string(sorting);
-    else
-        result.string("1");
 }
+else if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+    id = vars.get("$field.CLASSIFICATIONGROUP");
 
+var sorting = newSelect("CLASSIFICATIONGROUP.SORTING")
+                            .from("CLASSIFICATIONGROUP")
+                            .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", id)
+                            .cell();
+var fieldValue = vars.get("$this.value");
+if((!fieldValue || fieldValue == "") && sorting)
+{
+    result.string(sorting);
+}
+else if(fieldValue)
+{
+    result.string(fieldValue);
+}
+else
+{
+    result.string("1");
+}
diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js
index 62e3899f1be13fb9086e3539720f58b0a177adc3..4022fc575bdb2dd5b3884809e0bb4819285cc65b 100644
--- a/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,7 @@
+import("Context_lib");
+import("JditoFilter_lib");
+import("system.entities");
+import("system.eMath");
 import("Classification_lib");
 import("Sql_lib");
 import("system.result");
@@ -7,13 +11,15 @@ import("system.util");
 import("system.vars");
 
 var idvalues = vars.get("$local.idvalues");
-var decodedIdvalues;
+var decodedIdvalues, entity, groupTitle;
 var res = [];
 if(idvalues)
 {
     if(idvalues[0].charAt(0) != ";" && idvalues[0].charAt(idvalues[0].length) != ";")
+    {
         res.push([idvalues[0], "", "", "", "", "", idvalues[0], translate.text(idvalues[0]), 
-            "", $ClassificationRecordCategories.CLASSIFICATION_OBJECT_TYPE()])
+            "", $ClassificationRecordCategories.CLASSIFICATION_OBJECT_TYPE(), "", "", "", ""]);
+    }
     else
     {
         decodedIdvalues = text.decodeMS(idvalues[0]);
@@ -23,59 +29,88 @@ if(idvalues)
                                     .from("CLASSIFICATIONGROUP")
                                     .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", decodedIdvalues[1])
                                     .cell();
+
             res.push([idvalues[0], decodedIdvalues[0], decodedIdvalues[1], translate.text(groupName), "", "", "", 
-                "", "", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP()]);
+                "", "", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP(), "", "", "", groupName]);
         }
-        
         else
         {
-            var scoreType = newSelect("CLASSIFICATIONTYPE.SCORETYPE")
+            var typeAndFilter = newSelect("OBJECT_TYPE, CLASSIFICATIONTYPE.FILTER, CLASSIFICATIONTYPE.SCORETYPE, CLASSIFICATIONTYPE.SCOREPOINTS")
                                     .from("CLASSIFICATIONTYPE")
                                     .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", decodedIdvalues[1])
                                     .orderBy("CLASSIFICATIONTYPE.SCORETYPE")
-                                    .cell();
-            res.push([idvalues[0], decodedIdvalues[0], "", "",decodedIdvalues[1], translate.text(scoreType), 
-                "", "","", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE()]);
+                                    .arrayRow();
+                                    
+            var filter = typeAndFilter[1];
+            var filterDisplay = translate.text("Filter set"); //ToDo: "resolved" DisplayValue for the Filterstrings #1067160/1067241
+            entity = ContextUtils.getEntity(typeAndFilter[0]);
+            var emptyFilter = JditoFilterUtils.getEmptyFilter(entity)
+            if(filter == "")
+                filter = emptyFilter;
+            if (filter == emptyFilter)
+                filterDisplay = translate.text("No Restrictions");
+            
+            var maxScore = typeAndFilter[3];
+            groupTitle = newSelect("CLASSIFICATIONGROUP.TITLE")
+                                        .from("CLASSIFICATIONGROUP")
+                                        .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", text.decodeMS(decodedIdvalues[0])[1])
+                                        .cell();
+            
+            //ToDo: "resolved" DisplayValue for the Filterstrings #1067160/1067241
+            res.push([idvalues[0], decodedIdvalues[0], "", "", decodedIdvalues[1], translate.text(typeAndFilter[2]), 
+                "", "","", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE(), filter, filterDisplay, maxScore, groupTitle]);
         }
     }
 }
 else
 {
-    var savedData = {};
+    var savedData = new Set();
     var classificationData = newSelect("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, \n\
-                                            CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID,  CLASSIFICATIONTYPE.SCORETYPE")
+                                            CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID,  CLASSIFICATIONTYPE.SCORETYPE, CLASSIFICATIONTYPE.FILTER, CLASSIFICATIONTYPE.SCOREPOINTS")
                                             .from("CLASSIFICATIONGROUP")
                                             .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
                                             .orderBy("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.SORTING")
-                                            .table()
-                                            
-    var objectType, classificationGroupId, classificationGroupName, classificationTypeId, classificationScoreType, uidClassificationGroup, uidClassificationType;
-    for (let  i = 0; i < classificationData.length; i++) 
-        {
-        [objectType, classificationGroupId, classificationGroupName, classificationTypeId, classificationScoreType] = classificationData[i];
-                
+                                            .table()                                   
+    
+    //run trough the data and build the tree
+    classificationData.forEach(function ([objectType, classificationGroupId, classificationGroupName, classificationTypeId, classificationScoreType, classificationTypeFilter, classificationTypeScorePoints])
+    {                
         uidClassificationGroup = text.encodeMS([objectType, classificationGroupId]);
         uidClassificationType = text.encodeMS([uidClassificationGroup, classificationTypeId]);
+        uidClassificationTypeFilter = text.encodeMS([uidClassificationType, util.getNewUUID()]);
         
         
-        if(!savedData.hasOwnProperty(classificationData[i][0])) //objectType
+        if(!savedData.has(objectType)) //objectType
         { 
             res.push([objectType, "", "", "", "", "", objectType, translate.text(objectType), 
-                "", $ClassificationRecordCategories.CLASSIFICATION_OBJECT_TYPE()]);
-            savedData[classificationData[i][0]] = "";
+                "", $ClassificationRecordCategories.CLASSIFICATION_OBJECT_TYPE(), "", "", "", ""]);
+            savedData.add(objectType);
         }
-        if(!savedData.hasOwnProperty(classificationData[i][1])) //classificationGroup
+        if(!savedData.has(classificationGroupId)) //classificationGroup
         {
             res.push([uidClassificationGroup, objectType, classificationGroupId, translate.text(classificationGroupName), "", "", "",
-                "", "", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP()]);
-            savedData[classificationData[i][1]] = "";
+                "", "", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP(), "", "", "", ""]);
+            savedData.add(classificationGroupId);
         }
-        if(!savedData.hasOwnProperty(classificationData[i][3])) //classificationType
+        if(!savedData.has(classificationTypeId)) //classificationType
         {
+            var classificationTypeFilterDisplay = translate.text("Filter set"); //ToDo: "resolved" DisplayValue for the Filterstrings #1067160/1067241
+            entity = ContextUtils.getEntity(objectType);
+            emptyFilter = JditoFilterUtils.getEmptyFilter(entity);
+            if(classificationTypeFilter == "")
+            {
+                classificationTypeFilter = emptyFilter;
+            }
+            if(classificationTypeFilter == emptyFilter)
+            {
+                classificationTypeFilterDisplay = translate.text("No Restrictions");
+            }
+
             res.push([uidClassificationType, uidClassificationGroup, "", "", classificationTypeId, translate.text(classificationScoreType), 
-                "", "", "", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE()]);
-            savedData[classificationData[i][3]] = "";
+                "", "", "", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE(), classificationTypeFilter, classificationTypeFilterDisplay, classificationTypeScorePoints, ""]);
+
+            savedData.add(classificationTypeId);
         }
-    }
+    })
 }
 result.object(res);
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onDelete.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onDelete.js
index c7da129c3b05bfcf9fd0f48988914efa532bc5ac..57378b99c786b9baab1443e999d675df3fb6a351 100644
--- a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onDelete.js
+++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onDelete.js
@@ -5,26 +5,22 @@ import("system.util");
 import("system.db");
 import("system.vars");
 
-try
-{
-    _delete();
-}
-finally //always make sure that the cache is as valid as possible
-{
-    //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty
-    entities.invalidateCache("ClassificationType_entity", "db");
-    //dependecies are deleted so the cache needs to be updated
-    entities.invalidateCache("ClassificationGrading_entity", "db");
-    entities.invalidateCache("ClassificationGroup_entity", "db");
-    entities.invalidateCache("ClassificationScore_entity", "db");
-}
+    
+//always make sure that the cache is as valid as possible
+
+//ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty
+entities.invalidateCache("ClassificationType_entity", "db");
+//dependecies are deleted so the cache needs to be updated
+entities.invalidateCache("ClassificationGrading_entity", "db");
+entities.invalidateCache("ClassificationGroup_entity", "db");
+entities.invalidateCache("ClassificationScore_entity", "db");
+
+_delete();
 
 //private helper function for better code readability
 function _delete()
 {
     var rowData = vars.get("$local.rowdata");
-    var groupID;
-    var groupValue = rowData["CLASSIFICATIONGROUP.value"];
     var classificationType = rowData["CLASSIFICATIONTYPEID.value"];
     var objectType = rowData["OBJECT_TYPE.value"];
     var table;
@@ -40,25 +36,6 @@ function _delete()
         newWhere("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", classificationType).deleteData(); //deletes the classificationscores that are linked to the classificationtype
         newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationType).deleteData(); //deletes the classificationtype
         newWhere("CLASSIFICATION.CLASSIFICATIONTYPE_ID", classificationType).deleteData(); //deletes all the classifications
-    
-        var gradingTable = ClassificationUtils.getGradingTableByGroupId(classificationGroup); 
-
-        var maxScore = ClassificationUtils.getMaxScore(classificationGroup) //important to do this AFTER deleting the classificationscores to get the new value
-
-        if(gradingTable[0][1] != maxScore)
-        {
-            var column = ["MAXGRADEFORSCORE"];
-            table = ["CLASSIFICATIONGRADING"];
-            var multiplicand = maxScore/gradingTable[0][1];
-            var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0])
-            .updateData(true, table, column, null, [maxScore]);
-
-            for (let i = 1; i < gradingTable.length; i++) 
-            {
-                update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0])
-                .updateData(true, table, column, null, [parseInt(gradingTable[i][1] * multiplicand)]);
-            }
-        }
     }
 
     else if(recordCategory == $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP()) //the deleted dataset must be an classificationGroup
diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js
index 62d83bc0564f53c4c851555ceaf91d428fe5a234..687c5a1a474b6a974e613b30fdff2d4675d9a55d 100644
--- a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js
@@ -3,32 +3,29 @@ import("system.util");
 import("system.db");
 import("system.vars");
 
-try
-{
-    _insert();
-}
-finally //always make sure that the cache is as valid as possible
-{
-    //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty
-    entities.invalidateCache("ClassificationType_entity", "db");
-    //Grading-values are dependent since they are inserted within this process (maxgrade)
-    entities.invalidateCache("ClassificationGrading_entity", "db");
-    //groups are dependent since they are inserted within this process
-    entities.invalidateCache("ClassificationGroup_entity", "db");
-}
+ //always make sure that the cache is as valid as possible
+
+//ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty
+entities.invalidateCache("ClassificationType_entity", "db");
+//Grading-values are dependent since they are inserted within this process (maxgrade)
+entities.invalidateCache("ClassificationGrading_entity", "db");
+//groups are dependent since they are inserted within this process
+entities.invalidateCache("ClassificationGroup_entity", "db");
+
+_insert();
 
 //private helper function for better code readability
 function _insert()
 {
     var rowData = vars.get("$local.rowdata");
-    var groupID;
-    var groupValue = rowData["CLASSIFICATIONGROUP.value"];
-    if(groupValue.length != 36 && (groupValue.match(/-/g) || []).length != 4) //if classificationGroup is no Id -> insert new group
+    var groupId;
+    var groupValue = rowData["CLASSIFICATIONGROUPDISPLAYVALUE.value"];
+    if(groupValue.length != 36 && (groupValue.match(/-/g) || []).length != 4) //if groupValue is no Id -> insert new group
     {
-        groupID = util.getNewUUID();
+        groupId = util.getNewUUID();
         var groupValues = [
             groupValue,
-            groupID,
+            groupId,
             rowData["SORTING.value"]
         ];
         
@@ -39,40 +36,28 @@ function _insert()
         ];
         
         db.insertData("CLASSIFICATIONGROUP", groupColumns, null, groupValues);
-        
-        var gradingColumns = [
-            "CLASSIFICATIONGRADINGID",
-            "GRADING",
-            "MAXGRADEFORSCORE",
-            "CLASSIFICATIONGROUP_ID"
-        ];
-        
-        var gradingValues = [
-            util.getNewUUID(),
-            "A",
-            0,
-            groupID
-        ];
-        
-        db.insertData("CLASSIFICATIONGRADING", gradingColumns, null, gradingValues); // insert a "dummy" classificationGradingValue
     }
-    else{
-        groupID = groupValue; //else the groupValue is the groupId
+    else
+    {
+        groupId = groupValue; //else the groupValue is the groupId
     }
     
     var typeValues = [
         vars.get("$field.CLASSIFICATIONTYPEIDDISPLAYVALUE"),
         util.getNewUUID(),
-        groupID,
-        rowData["OBJECT_TYPE.value"]
-    ]
+        groupId,
+        rowData["OBJECT_TYPE.value"],
+        rowData["SCOREPOINTS.value"],
+        1
+    ];
     
     var typeColumns = [
         "SCORETYPE",
         "CLASSIFICATIONTYPEID",
         "CLASSIFICATIONGROUP_ID",
-        "OBJECT_TYPE"
+        "OBJECT_TYPE",
+        "SCOREPOINTS",
+        "OUTDATED"
     ];
-    
     db.insertData("CLASSIFICATIONTYPE", typeColumns, null, typeValues); // always insert the classificationtype
 }
\ No newline at end of file
diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js
index ea803f184c537724212607c29cfa59f9342de57c..9a9e04cfd71ca1864d2663355453c080d3cc4d05 100644
--- a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js
@@ -8,25 +8,23 @@ import("system.text");
 import("system.util");
 import("system.vars");
 
-try
-{
-    _update();
-}
-finally //always make sure that the cache is as valid as possible
-{
-    //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty
-    entities.invalidateCache("ClassificationType_entity", "db");
-    //Grading-values are dependent since they are modified within this process (maxgrade)
-    entities.invalidateCache("ClassificationGrading_entity", "db");
-    //groups are dependent since they are modified within this process
-    entities.invalidateCache("ClassificationGroup_entity", "db");
-}
+
+//always make sure that the cache is as valid as possible
+
+//ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty
+entities.invalidateCache("ClassificationType_entity", "db");
+//Grading-values are dependent since they are modified within this process (maxgrade)
+entities.invalidateCache("ClassificationGrading_entity", "db");
+//groups are dependent since they are modified within this process
+entities.invalidateCache("ClassificationGroup_entity", "db");
+
+_update();
 
 //private helper function for better code readability
 function _update()
 {
-    var rowdata = vars.get("$local.rowdata");
-    var uid = vars.get("$field.UID");
+    var rowData = vars.get("$local.rowdata");
+    var uid = rowData["UID.value"];
 
     //for changes of the place of use (object_type), group, and title of an scoretpye dataset
     var dbFields = {
@@ -35,20 +33,27 @@ function _update()
         "CLASSIFICATIONGROUP.value": "CLASSIFICATIONGROUP_ID",
         "CLASSIFICATIONTYPEID.displayValue": "SCORETYPE",
         "SORTING.value": "SORTING",
-        "CLASSIFICATIONTYPEIDDISPLAYVALUE.value": "CLASSIFICATIONTYPEID"
+        "CLASSIFICATIONTYPEIDDISPLAYVALUE.value": "CLASSIFICATIONTYPEID",
+        "classificationTypeFilter.value": "FILTER",
+        "CLASSIFICATIONGROUPDISPLAYVALUE.value": "CLASSIFICATIONGROUP_ID",
+        "SCOREPOINTS.value": "SCOREPOINTS"
     };
 
     var table = "CLASSIFICATIONTYPE";
-    var cond;
+    var cond, typeCond;
     var values = [];
     var columns = [];
+    var groupCol = [];
+    var groupVal = [];
+    var gradingCol = [];
+    var gradingVal = [];
 
     var i;
     var isGroupDataSet = false;
 //    the classificationtypeId.value has the placeholder set when editing a classificationgroup dataset to allow us 
 //    to handle the updating differently depending on whether its an classifcation group dataset or an classification type dataset
 //    since you want changes to the name of groups to effect only the group name and changes to the group of an classificationtype to change it's group
-    if(rowdata["CLASSIFICATIONTYPEID.value"] == $ClassificationPlaceholder.TOPSECRETPLACEHOLDER()) 
+    if(rowData["CLASSIFICATIONTYPEID.value"] == $ClassificationPlaceholder.TOPSECRETPLACEHOLDER()) 
         isGroupDataSet = true;
 
     vars.get("$local.changed").forEach(function (field, i)
@@ -57,135 +62,117 @@ function _update()
         if (dbField)
         {
             columns[i] = dbField;
-            values[i] = rowdata[field] || "";
+            values[i] = rowData[field] || "";
         }
     });
 
-
     if(!isGroupDataSet) //-> update the classification type dataset
     {
-        var groupIds = ClassificationUtils.getAllGroups(vars.get("$field.OBJECT_TYPE")); //gets all existing groups of the object_type
+        var groupIds = ClassificationUtils.getAllGroups(rowData["OBJECT_TYPE.value"]); //gets all existing groups of the object_type
         var newGroupId;
         var newGroupName;
         var insertGroup = false;
-        var groupchange = true;
+        var groupChange = false;
+        var markOutdated = false;
         var newId;
-        for (i = 0; i < columns.length; i++) {
+        var condition;
+        
+        for (i = 0; i < columns.length; i++) {     
+
             if(columns[i] == "CLASSIFICATIONGROUP_ID")//if the classificationgroup_Id changed: determine whether or not a new group has to be inserted
             {
-                if(!groupIds.toString().includes(values[i]))
+                condition = true;
+                for (let ii = 0; ii < groupIds.length; ii++) {
+                    if(groupIds[ii][1] == rowData["CLASSIFICATIONGROUPDISPLAYVALUE.value"])
+                    {
+                        condition = false;
+                    }
+                }
+                if(condition && rowData["CLASSIFICATIONGROUPDISPLAYVALUE.value"].length != 36)
                 {
-                    newGroupName = values[i];
+                    newGroupName = rowData["CLASSIFICATIONGROUPDISPLAYVALUE.value"];
                     newGroupId = util.getNewUUID();
                     values[i] = newGroupId;
                     insertGroup = true;
-                    groupchange = true;
+                    groupChange = true;
                 }
-                else if(values[i] == text.decodeMS(text.decodeMS(uid)[0])[1])
+                else if(values[2] != rowData["CLASSIFICATIONGROUPDISPLAYVALUE.value"] && values[2] != rowData["CLASSIFICATIONGROUP.value"] && rowData["CLASSIFICATIONGROUPDISPLAYVALUE.value"].length == 36)
                 {
-                    groupchange = false;
-                    insertGroup = true;
-                    break;
+                    groupChange = true;
+                    insertGroup = false;
+                    values[i] = rowData["CLASSIFICATIONGROUPDISPLAYVALUE.value"];
                 }
             }
             else if(columns[i] == "CLASSIFICATIONTYPEID")
-                {
-                    columns.splice(i, 1);
-                    values.splice(i, 1);
-                    i = i-1
-                }
+            {
+                columns.splice(i, 1);
+                values.splice(i, 1);
+                i = i-1;
+            }
             else if(columns[i] == "SORTING")
-                {
-                    columns.splice(i, 1);
-                    values.splice(i, 1);
-                    i = i-1
-                }
-        }
-
-        if(groupchange == true)
-        {
-            var gradeColumn, gradeTable, multiplicand, update, gradingTable;
-            var oldGroup = ClassificationUtils.getClassificationGroup(text.decodeMS(uid)[1]);
-            var newMax = ClassificationUtils.getMaxScoreExcludeType(oldGroup, text.decodeMS(uid)[1]);
-            gradingTable = ClassificationUtils.getGradingTableByGroupId(oldGroup); 
-            
-            var lostScore = parseInt(newSelect("max(SCORE)")
-                                                .from("CLASSIFICATIONSCORE")
-                                                .where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", text.decodeMS(uid)[1])
-                                                .cell()); //the greatest score of the "moved" classificationtype affects the classificationGradings
-            
-            if(insertGroup) //new group has to be inserted
             {
-                var maxSorting = newSelect("distinct CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONGROUP.SORTING")
-                                            .from("CLASSIFICATIONGROUP")
-                                            .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
-                                            .where("CLASSIFICATIONTYPE.OBJECT_TYPE", vars.get("$field.OBJECT_TYPE"))
-                                            .orderBy("CLASSIFICATIONGROUP.SORTING desc")
-                                            .table()[0][1]; //gets the greatest sorting value of the object_type
-                db.insertData("CLASSIFICATIONGROUP", ["CLASSIFICATIONGROUPID", "TITLE", "SORTING"], null, [newGroupId, newGroupName, eMath.addInt(maxSorting, 1)]) //insert the new group (sorting is greater than the greatest one
-
-                var gradingColumns = [
-                "CLASSIFICATIONGRADINGID",
-                "GRADING",
-                "MAXGRADEFORSCORE",
-                "CLASSIFICATIONGROUP_ID"
-                ];
-
-                var gradingValues = [
-                util.getNewUUID(),
-                "A",
-                lostScore,
-                newGroupId
-                ];
-
-                db.insertData("CLASSIFICATIONGRADING", gradingColumns, null, gradingValues); // insert a "dummy" classificationGradingValue, since not having one results in problems
+                columns.splice(i, 1);
+                values.splice(i, 1);
+                i = i-1;
             }
-            else // classificationtype has to be moved to another classificatingroup
+            else if(columns[i] == "SCOREPOINTS" || columns[i] == "FILTER")
             {
-                newId = vars.get("$field.CLASSIFICATIONGROUP"); //we know that the field has the classificationgroupId of the new group set
-                newGradingTable = ClassificationUtils.getGradingTableByGroupId(newId); //we use this id to get the gradingtable of the new group
-                newNewMax = eMath.addInt(newGradingTable[0][1], lostScore) //maxvalue of the gradingtable with the added lostScore = the new maxValue
-                if(newGradingTable[0][1] != newNewMax) //update existing classificationGrading if the maxValue has changed
+                markOutdated = true
+                if(columns[i] == "FILTER")
                 {
-                    gradeColumn = ["MAXGRADEFORSCORE"];
-                    gradeTable = "CLASSIFICATIONGRADING";
-                    multiplicand = newNewMax/newGradingTable[0][1];
-                    update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", newGradingTable[0][0])
-                                            .updateData(true, gradeTable, gradeColumn,  null, [parseInt(newGradingTable[0][1] * multiplicand)]);
-
-                    for (i = 1; i < newGradingTable.length; i++) 
-                    {
-                        update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", newGradingTable[i][0])
-                                        .updateData(true, gradeTable, gradeColumn,  null, [parseInt(newGradingTable[i][1] * multiplicand)]);
-                    }
+                    if(JSON.parse(values[i]).filter.childs.length == 0) //insert "" intead of an empty filter
+                        values[i] = "";
                 }
-
             }
-
-            if(gradingTable[0][1] != newMax) //update old classificationGrading if the maxValue has changed
+            else if(columns[i] == undefined || columns[i] == null || columns[i] == "")
             {
-                gradeColumn = ["MAXGRADEFORSCORE"];
-                gradeTable = "CLASSIFICATIONGRADING";
-                multiplicand = newMax/gradingTable[0][1];
-                update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0])
-                                        .updateData(true, gradeTable, gradeColumn,  null, [newMax]);
+                columns.splice(i, 1);
+                values.splice(i, 1);
+                i = i-1;
+            }
+        }
+        if(insertGroup) // new group has to be inserted
+        {
+            groupVal = [newGroupId, newGroupName];
+            groupCol = ["CLASSIFICATIONGROUPID", "TITLE"];
+            db.insertData("CLASSIFICATIONGROUP", groupCol, null, groupVal)
+            
+            gradingCol = ["CLASSIFICATIONGRADINGID", "GRADING", "MINPERCENT", "CLASSIFICATIONGROUP_ID"];
+            //also insert this dummy gradingtable
+            gradingVal = [util.getNewUUID(), "A", 76, newGroupId];
+            db.insertData("CLASSIFICATIONGRADING", gradingCol, null, gradingVal)
+            gradingVal = [util.getNewUUID(), "B", 51, newGroupId];
+            db.insertData("CLASSIFICATIONGRADING", gradingCol, null, gradingVal)
+            gradingVal = [util.getNewUUID(), "C", 26, newGroupId];
+            db.insertData("CLASSIFICATIONGRADING", gradingCol, null, gradingVal)
+            gradingVal = [util.getNewUUID(), "D", 0, newGroupId];
+            db.insertData("CLASSIFICATIONGRADING", gradingCol, null, gradingVal) 
+        }
 
-                for (i = 0; i < gradingTable.length; i++) 
+        if(groupChange || insertGroup || markOutdated)
+        {
+            columns.push("OUTDATED");
+            values.push(1)
+            if(groupChange || insertGroup)
+            {
+                var classificationTypesOfOldGroup = ClassificationUtils.getClassificationTypesOfGroup(rowData["CLASSIFICATIONGROUP.value"],rowData["CLASSIFICATIONTYPEID.value"], true)
+                                                        
+                for (i = 0; i < classificationTypesOfOldGroup.length; i++) 
                 {
-                    update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0])
-                                    .updateData(true, gradeTable, gradeColumn,  null, [parseInt(gradingTable[i][1] * multiplicand)]);
+                    typeCond = newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationTypesOfOldGroup[i]);
+                    typeCond.updateData(true, "CLASSIFICATIONTYPE" , ["OUTDATED"], null, [1]);
                 }
             }
         }
 
         cond = newWhereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", text.decodeMS(uid)[1]);
-        columns.push("SCORETYPE");
-        values.push(vars.get("$field.CLASSIFICATIONTYPEIDDISPLAYVALUE"));
+
         cond.updateData(true, table, columns, null, values);
     }
+    
     else //-> update the classification group dataset
     {
-        var value = vars.get("$field.CLASSIFICATION_PARENT_ID");
+        var value = rowData["CLASSIFICATION_PARENT_ID.value"];
 
         if(value.charAt(0) != ";" && value.charAt(value.length) != ";")
             id = text.decodeMS(uid)[1];
@@ -199,8 +186,8 @@ function _update()
 
         var groupTable = "CLASSIFICATIONGROUP";
         var groupColumns = ["SORTING", "TITLE"];
-        var groupName = rowdata["CLASSIFICATIONGROUP.value"] == classificationGroupId ? rowdata["CLASSIFICATIONGROUP.displayValue"] : rowdata["CLASSIFICATIONGROUP.value"];
-        var groupValues = [vars.get("$field.SORTING"), groupName];
+        var groupName = rowData["CLASSIFICATIONGROUP.value"] == classificationGroupId ? rowData["CLASSIFICATIONGROUP.displayValue"] : rowData["CLASSIFICATIONGROUP.value"];
+        var groupValues = [rowData["SORTING.value"], groupName];
         var groupCond = newWhereIfSet("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", classificationGroupId);
         groupCond.updateData(true, groupTable, groupColumns, null, groupValues);
     }
diff --git a/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod b/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod
index fdf4e999952bbfc3804623512cf5fe978d900612..81876c26e624810fd02f57d640df8fbc10bcc132 100644
--- a/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod
+++ b/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ClassificationGrading_entity</name>
+  <title>Grading</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ClassificationGrading_entity/documentation.adoc</documentation>
-  <title>Grading</title>
-  <titlePlural>Gradings</titlePlural>
+  <titlePlural>Gradings in Percent</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
@@ -18,16 +18,6 @@
       <name>GRADING</name>
       <title>Scoretype</title>
     </entityField>
-    <entityField>
-      <name>MAXGRADEFORSCORE</name>
-      <documentation>%aditoprj%/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/documentation.adoc</documentation>
-      <title>Max Value</title>
-      <contentType>NUMBER</contentType>
-      <outputFormat>#####</outputFormat>
-      <inputFormat>#####</inputFormat>
-      <valueProcess>%aditoprj%/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/valueProcess.js</valueProcess>
-      <onValidation>%aditoprj%/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/onValidation.js</onValidation>
-    </entityField>
     <entityField>
       <name>CLASSIFICATIONGROUP_ID</name>
       <title>Classification</title>
@@ -51,7 +41,6 @@
       <children>
         <entityParameter>
           <name>ClassificationTypeId_param</name>
-          <valueProcess>%aditoprj%/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js</valueProcess>
           <expose v="true" />
         </entityParameter>
       </children>
@@ -60,30 +49,27 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>MINPERCENT</name>
+      <documentation>%aditoprj%/entity/ClassificationGrading_entity/entityfields/minpercent/documentation.adoc</documentation>
+      <title>Percent</title>
+      <displayValueProcess>%aditoprj%/entity/ClassificationGrading_entity/entityfields/minpercent/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/ClassificationGrading_entity/entityfields/minpercent/onValidation.js</onValidation>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="false" />
       <conditionProcess>%aditoprj%/entity/ClassificationGrading_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/ClassificationGrading_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBInsert>%aditoprj%/entity/ClassificationGrading_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
+      <onDBUpdate>%aditoprj%/entity/ClassificationGrading_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
+      <onDBDelete>%aditoprj%/entity/ClassificationGrading_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
+      <alias>Data_alias</alias>
       <cacheType>GLOBAL</cacheType>
       <cacheKeyProcess>%aditoprj%/entity/ClassificationGrading_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>9a9482d5-005a-4dc5-8b58-e07c44420b64</name>
-          <tableName>CLASSIFICATIONGRADING</tableName>
-          <primaryKey>CLASSIFICATIONGRADINGID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
       <recordFieldMappings>
-        <dbRecordFieldMapping>
-          <name>MAXGRADEFORSCORE.value</name>
-          <recordfield>CLASSIFICATIONGRADING.MAXGRADEFORSCORE</recordfield>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>GRADING.value</name>
           <recordfield>CLASSIFICATIONGRADING.GRADING</recordfield>
@@ -96,7 +82,20 @@
           <name>CLASSIFICATIONGRADINGID.value</name>
           <recordfield>CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>MINPERCENT.value</name>
+          <recordfield>CLASSIFICATIONGRADING.MINPERCENT</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>9a9482d5-005a-4dc5-8b58-e07c44420b64</name>
+          <tableName>CLASSIFICATIONGRADING</tableName>
+          <primaryKey>CLASSIFICATIONGRADINGID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/ClassificationGrading_entity/documentation.adoc b/entity/ClassificationGrading_entity/documentation.adoc
index faa566900db907439f90781456e63e894d2ccf2d..9638714b062297d11de3f9ae52382a81e9500040 100644
--- a/entity/ClassificationGrading_entity/documentation.adoc
+++ b/entity/ClassificationGrading_entity/documentation.adoc
@@ -11,9 +11,9 @@ Purpose:
     This Entity gives the administrators an easy way to change the classification grading in the preview of classificationAdmin 
     when selecting a classification (classificationGroup).
     The classificationgrading gets stored in the table classificationgrading with it's own classificationgradingId, the classificationGroup_id, 
-    the grading (e.g. "A", "B", "C") and the max score you this grade for.
+    the grading (e.g. "A", "B", "C") and the min score you get this grade for.
 
-    This entity only has one view: the ClassificationGradingMultipleEdit_view which has both the MaxGradeForScore and the grading column.
+    This entity only has one view: the ClassificationGradingMultipleEdit_view which has both the minPercent and the grading column.
     making it possible for the admin to configure something like this:
 
     ClassificationAdminPreviewOfClassification Example: 
@@ -21,22 +21,24 @@ Purpose:
         USAGE:          Organisation
         CLASSIFICATION: 1. Target Group
         SORTING:        1
-         A               100
-         B               75
-         C               50
-         D               25
+         A               76% - 100%
+         B               51% - 76%
+         C               26% - 51%
+         D               0% - 26%
 
     --> The Score "72" would lead to the grade "B" (<<<not included in the preview, just for easier understanding of how this works)
 
 Particularities:
     
-    The MaxGradeForScore of the best possible score (in our example for "A") has to always be the largest possibly achievable value, 
-    otherwise it would lead to errors, which is why this field always get's the maximum value set as default 
-    and it's not possible to save something greater than that (validationProcess).
-    
-    Also, since the indicators under the classification and the possible values of those indicators can be changed:
-    The grading get's updated automatically after changes to the maximum possible value, 
-    using the rule of three (see onInsert-, onUpdate- and onDelete- processes of classificationScore).
+    The reason why we use percent is because the classificationTypes of the group can have different filterconditions, which excludes them for some datasets
+    -> we had to settle for percent
+    The score itself get's calculated by the adding all the archeived scores of the relevant classificationType datasets of the object 
+    (scorePercent of the classificationScore dataset * the scorePoints of the classificationType dataset)
+    and matching it against the the sum of the best possible scores of each relevant classificationType of that group and calculating it via the classificationGrading minPercents
+    If none of the classificationTypes of a group is relevant we ignore that group.
+
+    We also have to set the outdated flag of the classificationtype dataset everytime we insert/update/delete
+
 
     The Classification consists of the following entities:
     Classification_entity,
diff --git a/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js b/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js
deleted file mode 100644
index b11d099579d9bf35111e31b13a41336731c28540..0000000000000000000000000000000000000000
--- a/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$field.CLASSIFICATIONTYPEID"));
\ No newline at end of file
diff --git a/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/documentation.adoc b/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/documentation.adoc
deleted file mode 100644
index d42cd1657ab6afe2b94c0306d9a901d4097059a2..0000000000000000000000000000000000000000
--- a/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/documentation.adoc
+++ /dev/null
@@ -1,17 +0,0 @@
-== ClassificationGrading.MaxGradeForScore:
-
-Used to store the highest value for the Grade.
-
-Example: 
-A 100-75,
-B 74-50,
-C 49-25,
-D 24-0
---> maxGradeForScore: A:100, B:74, C:49, D:24
-
-The maxGradeForScore of the best possible grading (In our Example A), should always be the highest possible value, 
-that's why it's set as the default value of the field.
-The maxGradeForScore should never be greater than the highest possible value, that's why this field has it's onValidationProcess.
-
-The highest possible value get's calculated by calculating the sum of all the classificationScores of the types under the group. 
-(ClassificationUtils.getMaxScore)
\ No newline at end of file
diff --git a/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/onValidation.js b/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/onValidation.js
deleted file mode 100644
index 1e60bc18fdb2d3ec65ba10aa47ce63f7e225e579..0000000000000000000000000000000000000000
--- a/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/onValidation.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import("Classification_lib");
-import("system.result");
-import("system.translate");
-import("system.vars");
-
-var classificationTypeGroup = vars.get("$field.CLASSIFICATIONGROUP_ID");
-var maxValue = ClassificationUtils.getMaxScore(classificationTypeGroup);
-
-if (maxValue == "")
-    maxValue = 100;
-        
-if (parseFloat(vars.get("local.value")) > maxValue)
-    result.string(translate.withArguments("${HIGHER_THAN_MAX} max: %0", [maxValue]));
\ No newline at end of file
diff --git a/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/valueProcess.js b/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/valueProcess.js
deleted file mode 100644
index 24571535a888b634c3f4381ed280eda6321a0555..0000000000000000000000000000000000000000
--- a/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/valueProcess.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import("Classification_lib");
-import("system.neon");
-import("system.vars");
-import("system.result");
-    
-if(((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) && 
-    (vars.get("$this.value") == null || vars.get("$this.value") == undefined)))
-{
-    var group = vars.getString("$param.ClassificationTypeId_param");
-    result.string(ClassificationUtils.getMaxScore(group));
-}
\ No newline at end of file
diff --git a/entity/ClassificationGrading_entity/entityfields/minpercent/displayValueProcess.js b/entity/ClassificationGrading_entity/entityfields/minpercent/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ae81080bc44d0bdcfc3acc1cc47b7aee5c469898
--- /dev/null
+++ b/entity/ClassificationGrading_entity/entityfields/minpercent/displayValueProcess.js
@@ -0,0 +1,30 @@
+import("system.neon");
+import("Sql_lib");
+import("system.vars");
+import("system.result");
+
+if(vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_EDIT){
+
+
+var min = vars.get("$field.MINPERCENT");
+var max;
+
+var gradingTable = newSelect("CLASSIFICATIONGRADING.MINPERCENT")
+                                .from("CLASSIFICATIONGRADING")
+                                .where("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID", vars.get("$field.CLASSIFICATIONGROUP_ID"))
+                                .orderBy("MINPERCENT desc")
+                                .arrayColumn();
+                                
+for (let i = 0; i < gradingTable.length; i++) 
+{    
+    if(min >= gradingTable[i])
+    {
+        if(gradingTable[i-1] != undefined)
+            max = (gradingTable[i-1]);
+        else
+            max = 100;
+        break;
+    }
+}
+    result.string(min + "% - " + max + "%");
+}
\ No newline at end of file
diff --git a/entity/ClassificationGrading_entity/entityfields/minpercent/documentation.adoc b/entity/ClassificationGrading_entity/entityfields/minpercent/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..a69c2bab0e23246a08d026d3ecd96110688ed2f1
--- /dev/null
+++ b/entity/ClassificationGrading_entity/entityfields/minpercent/documentation.adoc
@@ -0,0 +1 @@
+newAndImprovedâ„¢
\ No newline at end of file
diff --git a/entity/ClassificationGrading_entity/entityfields/minpercent/onValidation.js b/entity/ClassificationGrading_entity/entityfields/minpercent/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..244e89b04334f17b16492a9f55c8061849536b86
--- /dev/null
+++ b/entity/ClassificationGrading_entity/entityfields/minpercent/onValidation.js
@@ -0,0 +1,22 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+
+var val = vars.get("$this.value");
+if(val)
+{
+    var res;
+    if(!Number.isInteger(Number(val)))
+    {
+        res = translate.text("Only Integers allowed");
+    }
+    else if(val < 0 || val > 100)
+    {
+        res = translate.text("The Value has to be in the 0-100% range");
+    }
+    
+    if(res)
+    {
+        result.string(res);
+    }
+}
\ No newline at end of file
diff --git a/entity/ClassificationGrading_entity/recordcontainers/db/onDBDelete.js b/entity/ClassificationGrading_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..fa7d86fe4e885314eba29f09dc9ecd9651b1fbeb
--- /dev/null
+++ b/entity/ClassificationGrading_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,9 @@
+import("Classification_lib");
+import("Sql_lib");
+import("system.vars");
+
+var classificationGroupId = vars.get("$field.CLASSIFICATIONGROUP_ID") 
+var classificationTypeIds = ClassificationUtils.getClassificationTypesOfGroup(classificationGroupId, null, true)
+
+var cond = newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationTypeIds, SqlBuilder.IN());
+cond.updateData(true, "CLASSIFICATIONTYPE", ["OUTDATED"], null, [1]);
\ No newline at end of file
diff --git a/entity/ClassificationGrading_entity/recordcontainers/db/onDBInsert.js b/entity/ClassificationGrading_entity/recordcontainers/db/onDBInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..9c06240960ec310a0b8dec6386a6bf8667ce396f
--- /dev/null
+++ b/entity/ClassificationGrading_entity/recordcontainers/db/onDBInsert.js
@@ -0,0 +1,9 @@
+import("Classification_lib");
+import("Sql_lib");
+import("system.vars");
+
+var classificationGroupId = vars.get("$field.CLASSIFICATIONGROUP_ID") 
+var classificationTypeIds = ClassificationUtils.getClassificationTypesOfGroup(classificationGroupId, null, true)
+
+var cond = newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationTypeIds);
+cond.updateData(true, "CLASSIFICATIONTYPE", ["OUTDATED"], null, [1]);
\ No newline at end of file
diff --git a/entity/ClassificationGrading_entity/recordcontainers/db/onDBUpdate.js b/entity/ClassificationGrading_entity/recordcontainers/db/onDBUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..fa7d86fe4e885314eba29f09dc9ecd9651b1fbeb
--- /dev/null
+++ b/entity/ClassificationGrading_entity/recordcontainers/db/onDBUpdate.js
@@ -0,0 +1,9 @@
+import("Classification_lib");
+import("Sql_lib");
+import("system.vars");
+
+var classificationGroupId = vars.get("$field.CLASSIFICATIONGROUP_ID") 
+var classificationTypeIds = ClassificationUtils.getClassificationTypesOfGroup(classificationGroupId, null, true)
+
+var cond = newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationTypeIds, SqlBuilder.IN());
+cond.updateData(true, "CLASSIFICATIONTYPE", ["OUTDATED"], null, [1]);
\ No newline at end of file
diff --git a/entity/ClassificationGrading_entity/recordcontainers/db/orderClauseProcess.js b/entity/ClassificationGrading_entity/recordcontainers/db/orderClauseProcess.js
index 7d2ce489cafba9b89d7db5fedf9ef221da7f8bad..1e65fbee70b528e58de3ed3af97a38bdb65d615a 100644
--- a/entity/ClassificationGrading_entity/recordcontainers/db/orderClauseProcess.js
+++ b/entity/ClassificationGrading_entity/recordcontainers/db/orderClauseProcess.js
@@ -2,5 +2,5 @@ import("system.result");
 import("system.db");
 
 result.object({
-    "CLASSIFICATIONGRADING.MAXGRADEFORSCORE": db.DESCENDING
+    "CLASSIFICATIONGRADING.MINPERCENT": db.DESCENDING
     });
\ No newline at end of file
diff --git a/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod b/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod
index 546a64d948001e538ed6a971478016d6ae568b0f..68724063ba34834853391bc581552e49765003cb 100644
--- a/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod
+++ b/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ClassificationGroup_entity</name>
+  <title>Classification</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ClassificationGroup_entity/documentation.adoc</documentation>
-  <title>Classification</title>
   <contentTitleProcess>%aditoprj%/entity/ClassificationGroup_entity/contentTitleProcess.js</contentTitleProcess>
   <titlePlural>Classifications</titlePlural>
   <recordContainer>db</recordContainer>
@@ -78,21 +78,12 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="false" />
       <conditionProcess>%aditoprj%/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/ClassificationGroup_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <alias>Data_alias</alias>
       <cacheType>GLOBAL</cacheType>
       <cacheKeyProcess>%aditoprj%/entity/ClassificationGroup_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>b0606861-e080-4441-94ac-fce33bbf7747</name>
-          <tableName>CLASSIFICATIONGROUP</tableName>
-          <primaryKey>CLASSIFICATIONGROUPID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>TITLE.value</name>
@@ -107,6 +98,15 @@
           <recordfield>CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>b0606861-e080-4441-94ac-fce33bbf7747</name>
+          <tableName>CLASSIFICATIONGROUP</tableName>
+          <primaryKey>CLASSIFICATIONGROUPID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/ClassificationGroup_entity/entityfields/title/displayValueProcess.js b/entity/ClassificationGroup_entity/entityfields/title/displayValueProcess.js
index 1bd5882b79ef1bdc97ba4ed6d408b4401eeb35a2..faa7580ef55101e0036640e5a650898564860e81 100644
--- a/entity/ClassificationGroup_entity/entityfields/title/displayValueProcess.js
+++ b/entity/ClassificationGroup_entity/entityfields/title/displayValueProcess.js
@@ -1,4 +1,5 @@
+import("system.translate");
 import("system.result")
 import("system.vars")
 
-result.string(vars.get("$this.value"));
\ No newline at end of file
+result.string(translate.text(vars.get("$this.value")));
\ No newline at end of file
diff --git a/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js b/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js
index 2d43dba815cd2dea8e2a5eeb8335aa36c8e3746c..e0b2732445777e17d096a1122bde6538fa369a47 100644
--- a/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js
@@ -16,5 +16,4 @@ if (objectType)
                                                             .from("CLASSIFICATIONTYPE")
                                                             .where("CLASSIFICATIONTYPE.OBJECT_TYPE", objectType), SqlBuilder.IN());
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/ClassificationScore_entity/ClassificationScore_entity.aod b/entity/ClassificationScore_entity/ClassificationScore_entity.aod
index b24809498150ef8eca45712cbaa279277a9607d6..6867a2f6dd62f0d18357cc637c858485a10276e5 100644
--- a/entity/ClassificationScore_entity/ClassificationScore_entity.aod
+++ b/entity/ClassificationScore_entity/ClassificationScore_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ClassificationScore_entity</name>
+  <title>Possible Value</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ClassificationScore_entity/documentation.adoc</documentation>
-  <title>Possible Value</title>
   <contentTitleProcess>%aditoprj%/entity/ClassificationScore_entity/contentTitleProcess.js</contentTitleProcess>
   <titlePlural>Possible Values</titlePlural>
   <recordContainer>db</recordContainer>
@@ -31,14 +31,6 @@
       <title>Sorting</title>
       <mandatory v="true" />
     </entityField>
-    <entityField>
-      <name>SCORE</name>
-      <title>Points</title>
-      <contentType>NUMBER</contentType>
-      <outputFormat>#,##0.00</outputFormat>
-      <inputFormat>#,##0.00</inputFormat>
-      <mandatory v="true" />
-    </entityField>
     <entityProvider>
       <name>ClassificationScores</name>
       <sortingField>SORT</sortingField>
@@ -90,37 +82,35 @@
       <name>translatedTitle</name>
       <valueProcess>%aditoprj%/entity/ClassificationScore_entity/entityfields/translatedtitle/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>SCOREPERCENT</name>
+      <title>Percent</title>
+      <contentType>NUMBER</contentType>
+      <onValidation>%aditoprj%/entity/ClassificationScore_entity/entityfields/scorepercent/onValidation.js</onValidation>
+    </entityField>
+    <entityField>
+      <name>scoreInPoints</name>
+      <title>Points</title>
+      <state>READONLY</state>
+      <valueProcess>%aditoprj%/entity/ClassificationScore_entity/entityfields/scoreinpoints/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="false" />
       <conditionProcess>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <onDBInsert>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
+      <alias>Data_alias</alias>
       <cacheType>GLOBAL</cacheType>
       <cacheKeyProcess>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>e2fecaf8-bc95-4a4d-bd96-88731568b1a4</name>
-          <tableName>CLASSIFICATIONSCORE</tableName>
-          <primaryKey>CLASSIFICATIONSCOREID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CLASSIFICATIONSCOREID.value</name>
           <recordfield>CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>SCORE.value</name>
-          <recordfield>CLASSIFICATIONSCORE.SCORE</recordfield>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>SORT.value</name>
           <recordfield>CLASSIFICATIONSCORE.SORT</recordfield>
@@ -137,7 +127,20 @@
           <name>CLASSIFICATIONTYPE_ID.displayValue</name>
           <expression>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/recordfieldmappings/classificationtype_id.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>SCOREPERCENT.value</name>
+          <recordfield>CLASSIFICATIONSCORE.SCOREPERCENT</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>e2fecaf8-bc95-4a4d-bd96-88731568b1a4</name>
+          <tableName>CLASSIFICATIONSCORE</tableName>
+          <primaryKey>CLASSIFICATIONSCOREID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/ClassificationScore_entity/documentation.adoc b/entity/ClassificationScore_entity/documentation.adoc
index b726994060331781c42824c0019eb30c1f2df4b6..8d280e34f85ddcafd52b0ea546f64389b0ea40ee 100644
--- a/entity/ClassificationScore_entity/documentation.adoc
+++ b/entity/ClassificationScore_entity/documentation.adoc
@@ -2,14 +2,14 @@
 
 Definition:
 
-    Stores the possible Values of Classification score types and their score and the sorting value.
+    Stores the possible Values of Classification score types their scorePercent and the sorting value.
     (For more information about the classification see also Classification_entity)
 
 Purpose:
 
-    This Entity gives the administrators an easy way to edit the possible values, their scoring and sorting in the preview of classificationAdmin 
+    This Entity gives the administrators an easy way to edit the possible values, their scorePercent and sorting in the preview of classificationAdmin 
     when selecting a indicator (classificationType).
-    The values gets stored in the table classificationscore with their own classificationScoreId, the classificationType_Id, title, score und sort.
+    The values gets stored in the table classificationscore with their own classificationScoreId, the classificationType_Id, title, scorePercent and sort.
 
     This entity only has one view: the ClassificationScoreMultipleEdit_view which has title as the title field and score and sort as columns
     making it possible for the admin to configure something like this:
@@ -19,15 +19,22 @@ Purpose:
         USAGE:          Organisation
         CLASSIFICATION: 1. Target Group
         INDICATOR:      Headquarters
-         Germany         35,00, 10
-         Austria         35,00 20
-         Switzerland     25,00, 30
-         Other            0,00, 40
+        SCOREPOINTS:    35
+         Germany         100%, 35,00
+         Austria         100%, 35,00
+         Switzerland      70%, 25,00
+         Other             0%, 0,00
 
 Particularities:
 
-    The biggest possible score is being used by classificationGrading to calculate the value for the best possible grade, 
-    if this value is changed the grading get's updated using the rule of three (see onInsert-, onUpdate- and onDelete- processes).
+    The reason why we use percent is because the classificationTypes of the group can have different filterconditions, which excludes them for some datasets
+    -> we had to settle for percent
+    The score itself get's calculated by the adding all the archeived scores of the relevant classificationType datasets of the object 
+    (scorePercent of the classificationScore dataset * the scorePoints of the classificationType dataset)
+    and matching it against the the sum of the best possible scores of each relevant classificationType of that group and calculating it via the classificationGrading minPercents
+    If none of the classificationTypes of a group is relevant we ignore that group.
+
+    We also have to set the outdated flag of the classificationtype dataset everytime we insert/update/delete
     
     The Classification consists of the following entities:
     Classification_entity,
diff --git a/entity/ClassificationScore_entity/entityfields/scoreinpoints/valueProcess.js b/entity/ClassificationScore_entity/entityfields/scoreinpoints/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab39285c8e6ce942461544c56aea0796a9a7058d
--- /dev/null
+++ b/entity/ClassificationScore_entity/entityfields/scoreinpoints/valueProcess.js
@@ -0,0 +1,16 @@
+import("system.result");
+import("Sql_lib");
+import("system.vars");
+
+var percent = vars.get("$field.SCOREPERCENT");
+var classificationTypeId = vars.get("$param.ClassificationTypeId_param");
+
+var maxPoints = newSelect("CLASSIFICATIONTYPE.SCOREPOINTS")
+                        .from("CLASSIFICATIONTYPE")
+                        .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationTypeId)
+                        .cell();
+
+var points = percent/100*maxPoints;
+if(!points)
+    points = 0;
+result.string(points.toFixed(2));
\ No newline at end of file
diff --git a/entity/ClassificationScore_entity/entityfields/scorepercent/onValidation.js b/entity/ClassificationScore_entity/entityfields/scorepercent/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..fe95642377c3e90c2afc43a33106075ac9be622f
--- /dev/null
+++ b/entity/ClassificationScore_entity/entityfields/scorepercent/onValidation.js
@@ -0,0 +1,10 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+
+var val = vars.get("$this.value");
+if(val)
+{
+    if(val < 0 || val > 100)
+        result.string(translate.text("The Value has to be in the 0-100% range"));
+}
\ No newline at end of file
diff --git a/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js b/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js
index 10dbbac6efbdb80f576dab966afa19ede6ffb645..2cc442f6f758f5c33128f5cd38ba37b44c2c00f8 100644
--- a/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js
@@ -3,5 +3,4 @@ import("Sql_lib");
 import("system.db");
 import("system.result");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(newWhereIfSet("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", "$param.ClassificationTypeId_param").toString());
\ No newline at end of file
diff --git a/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js b/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js
index f45ecc8306bdd9f82d4249c83fa66b0f8543ac71..c9d29f0a6ed67c07d8974c97aa4318ff6f50cb8a 100644
--- a/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js
@@ -1,39 +1,8 @@
 import("Sql_lib");
-import("system.db");
 import("system.vars");
-import("Classification_lib");
-import("system.eMath");
-import("system.entities");
 
-try
-{
-    newWhere("CLASSIFICATION.CLASSIFICATIONSCORE_ID", "$field.CLASSIFICATIONSCOREID").deleteData();
-    var classificationScoreId = vars.get("$field.CLASSIFICATIONSCOREID")
+var classificationTypeId = vars.get("$field.CLASSIFICATIONTYPE_ID");
 
-    var classificationType = ClassificationUtils.getClassificationType(classificationScoreId);
-    var classificationGroup = ClassificationUtils.getClassificationGroup(classificationType);
-    var gradingTable = ClassificationUtils.getGradingTableByGroupId(classificationGroup);
-    var maxScore = ClassificationUtils.getMaxScore(classificationGroup)
+var cond = newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationTypeId);
 
-    if(gradingTable[0][1] != maxScore) //the gradingTable is already sorted, so gradingTable[0][1] is the maxGradeForScore of the best possible Grade
-    {
-        var column = ["MAXGRADEFORSCORE"];
-        var table = ["CLASSIFICATIONGRADING"];
-        var multiplicand = maxScore/gradingTable[0][1];
-        var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0])
-                                .updateData(true, table, column, null, column, db.getCurrentAlias(), [maxScore]);
-
-        for (let i = 1; i < gradingTable.length; i++) 
-        {
-            update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0])
-                            .updateData(true, table, column, null, [parseInt(gradingTable[i][1] * multiplicand)]);
-        }
-    }
-}
-finally //always make sure that the cache is as valid as possible
-{
-    //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty
-    entities.invalidateCache("ClassificationType_entity", "db");
-    //Grading-values are dependent since they are modified within this process (maxgrade)
-    entities.invalidateCache("ClassificationGrading_entity", "db");
-}
+cond.updateData(true, "CLASSIFICATIONTYPE", ["OUTDATED"], null, [1]);
\ No newline at end of file
diff --git a/entity/ClassificationScore_entity/recordcontainers/db/onDBInsert.js b/entity/ClassificationScore_entity/recordcontainers/db/onDBInsert.js
deleted file mode 100644
index 0dfe964c1e25974c57ac6b79e9f09adf783cdc26..0000000000000000000000000000000000000000
--- a/entity/ClassificationScore_entity/recordcontainers/db/onDBInsert.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import("system.entities");
-import("system.db");
-import("Sql_lib");
-import("system.vars");
-import("Classification_lib");
-import("system.eMath")
-
-try
-{
-    var classificationScoreId = vars.get("$field.CLASSIFICATIONSCOREID")
-
-    var classificationType = ClassificationUtils.getClassificationType(classificationScoreId);
-    var classificationGroup = ClassificationUtils.getClassificationGroup(classificationType);
-    var gradingTable = ClassificationUtils.getGradingTableByGroupId(classificationGroup);
-    var maxScore = ClassificationUtils.getMaxScore(classificationGroup)
-
-    if(gradingTable.length > 0 && gradingTable != undefined && gradingTable != null)
-    {
-        if(gradingTable[0][1] != maxScore)
-        {
-            var column = ["MAXGRADEFORSCORE"];
-            var table = ["CLASSIFICATIONGRADING"];
-            var multiplicand = maxScore/gradingTable[0][1];
-            var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0])
-                                    .updateData(true, table, column,  null, [maxScore]);
-
-            for (let i = 1; i < gradingTable.length; i++) 
-            {
-                update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0])
-                                .updateData(true, table, column,  null, [parseInt(gradingTable[i][1] * multiplicand)]);
-            }
-        }
-    }
-}
-finally //always make sure that the cache is as valid as possible
-{
-    //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty
-    entities.invalidateCache("ClassificationType_entity", "db");
-    //Grading-values are dependent since they are modified within this process (maxgrade)
-    entities.invalidateCache("ClassificationGrading_entity", "db");
-}
\ No newline at end of file
diff --git a/entity/ClassificationScore_entity/recordcontainers/db/onDBUpdate.js b/entity/ClassificationScore_entity/recordcontainers/db/onDBUpdate.js
index dc07afd47acdfced255c79862004b15ea01f911a..c9d29f0a6ed67c07d8974c97aa4318ff6f50cb8a 100644
--- a/entity/ClassificationScore_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/ClassificationScore_entity/recordcontainers/db/onDBUpdate.js
@@ -1,38 +1,8 @@
-import("system.entities");
-import("system.db");
 import("Sql_lib");
 import("system.vars");
-import("Classification_lib");
-import("system.eMath")
 
-try
-{
-    var classificationScoreId = vars.get("$field.CLASSIFICATIONSCOREID")
+var classificationTypeId = vars.get("$field.CLASSIFICATIONTYPE_ID");
 
-    var classificationType = ClassificationUtils.getClassificationType(classificationScoreId);
-    var classificationGroup = ClassificationUtils.getClassificationGroup(classificationType);
-    var gradingTable = ClassificationUtils.getGradingTableByGroupId(classificationGroup);
-    var maxScore = ClassificationUtils.getMaxScore(classificationGroup)
+var cond = newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationTypeId);
 
-    if(gradingTable[0][1] != maxScore)
-    {
-        var column = ["MAXGRADEFORSCORE"];
-        var table = ["CLASSIFICATIONGRADING"];
-        var multiplicand = maxScore/gradingTable[0][1];
-        var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0])
-                                .updateData(true, table, column, null, [maxScore]);
-
-        for (let i = 1; i < gradingTable.length; i++) 
-        {
-            update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0])
-                            .updateData(true, table, column, null, [parseInt(gradingTable[i][1] * multiplicand)]);
-        }
-    }
-}
-finally //always make sure that the cache is as valid as possible
-{
-    //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty
-    entities.invalidateCache("ClassificationType_entity", "db");
-    //Grading-values are dependent since they are modified within this process (maxgrade)
-    entities.invalidateCache("ClassificationGrading_entity", "db");
-}
\ No newline at end of file
+cond.updateData(true, "CLASSIFICATIONTYPE", ["OUTDATED"], null, [1]);
\ No newline at end of file
diff --git a/entity/ClassificationType_entity/ClassificationType_entity.aod b/entity/ClassificationType_entity/ClassificationType_entity.aod
index faf8305ab8185d249fd38216f9954fd7d857dcb9..749feeedc36f37bc816ada37def0bd46b14aabaf 100644
--- a/entity/ClassificationType_entity/ClassificationType_entity.aod
+++ b/entity/ClassificationType_entity/ClassificationType_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ClassificationType_entity</name>
+  <title>Indicator</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ClassificationType_entity/documentation.adoc</documentation>
-  <title>Indicator</title>
   <contentTitleProcess>%aditoprj%/entity/ClassificationType_entity/contentTitleProcess.js</contentTitleProcess>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -56,19 +56,10 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityField>
-      <name>infoField</name>
-      <title>Hint</title>
-      <valueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js</valueProcess>
-    </entityField>
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
-    <entityField>
-      <name>maxScore</name>
-      <valueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/maxscore/valueProcess.js</valueProcess>
-    </entityField>
     <entityParameter>
       <name>ClassificationGroupId_param</name>
       <expose v="true" />
@@ -83,24 +74,29 @@
         </entityParameter>
       </children>
     </entityProvider>
+    <entityField>
+      <name>FILTER</name>
+      <title>Usage</title>
+      <contentType>FILTER_TREE</contentType>
+      <stateProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/filter/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/filter/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>SCOREPOINTS</name>
+      <title>Max Points</title>
+    </entityField>
+    <entityField>
+      <name>OUTDATED</name>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="false" />
       <conditionProcess>%aditoprj%/entity/ClassificationType_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <alias>Data_alias</alias>
       <cacheType>GLOBAL</cacheType>
       <cacheKeyProcess>%aditoprj%/entity/ClassificationType_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>0c764b72-f55b-4b87-8dc1-9a491a143f44</name>
-          <tableName>CLASSIFICATIONTYPE</tableName>
-          <primaryKey>CLASSIFICATIONTYPEID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CLASSIFICATIONTYPEID.value</name>
@@ -119,10 +115,23 @@
           <recordfield>CLASSIFICATIONTYPE.SCORETYPE</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
-          <name>maxScore.value</name>
-          <expression>%aditoprj%/entity/ClassificationType_entity/recordcontainers/db/recordfieldmappings/maxscore.value/expression.js</expression>
+          <name>FILTER.value</name>
+          <recordfield>CLASSIFICATIONTYPE.FILTER</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>SCOREPOINTS.value</name>
+          <recordfield>CLASSIFICATIONTYPE.SCOREPOINTS</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>0c764b72-f55b-4b87-8dc1-9a491a143f44</name>
+          <tableName>CLASSIFICATIONTYPE</tableName>
+          <primaryKey>CLASSIFICATIONTYPEID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/ClassificationType_entity/documentation.adoc b/entity/ClassificationType_entity/documentation.adoc
index a09562ce3a4c852c52ff3a616d3838531b041890..ec1b4d8a15791b2e5f541eb575bde404113fbc1b 100644
--- a/entity/ClassificationType_entity/documentation.adoc
+++ b/entity/ClassificationType_entity/documentation.adoc
@@ -10,9 +10,10 @@ Purpose:
     This entity is used for storing the indicators and making it possible for the admin to change 
     the details of the indicator (classificationType) like the name, it's usage or it's classification (classificationGroup)
 
-    This entity only has one view: the ClassificationTypePreview which has the usage (object_type), 
-    classification (classificationgroup_Id), and title (scoretype)
-    and the ClassificationScoreMultipleEdit_view.
+    This entity only has one view: the ClassificationTypePreview which has the usagePlace (object_type), 
+    classification (classificationgroup_Id), title (scoretype), and the usagefilter to make it possible to have classificationTypes 
+    that are only relevant for certain objects, scorepoints
+    + the ClassificationScoreMultipleEdit_view.
     making it possible for the admin to configure something like this:
 
     ClassificationAdminPreviewOfIndicator Example: 
@@ -20,16 +21,19 @@ Purpose:
         USAGE:          Organisation
         CLASSIFICATION: 1. Target Group
         INDICATOR:      Headquarters
-         Germany         35,00, 10
-         Austria         35,00 20
-         Switzerland     25,00, 30
-         Other            0,00, 40
+        SCOREPOINTS:    35
+         Germany         100%, 35,00
+         Austria         100%, 35,00
+         Switzerland      70%, 25,00
+         Other             0%, 0,00
 
 Particularities:
 
-    The biggest possible score of the subordinated classificationScores is being used by classificationGrading to calculate the value for the best possible grade, 
-    if this value is changed the grading get's updated using the rule of three (see onInsert-, onUpdate- and onDelete- processes of classificationScore_entity).
+    The admin is maintaining the scorepoints per classificationType and percentages for the classificationscores
     
+    We also have to set the outdated flag of the classificationtype dataset everytime we insert/update it and set the flag 
+    for all the other classificationtypes of the group if we delete the current classificationType
+
     The Classification consists of the following entities:
     Classification_entity,
     ClassificationAdmin_entity,
diff --git a/entity/ClassificationType_entity/entityfields/filter/stateProcess.js b/entity/ClassificationType_entity/entityfields/filter/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0c40c68f93058b33af2e171d58ac34b1d62d436a
--- /dev/null
+++ b/entity/ClassificationType_entity/entityfields/filter/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if(vars.get("$field.FILTER") == null || vars.get("$field.FILTER") == undefined || vars.get("$field.FILTER") == "")
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+else
+    result.string(neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
diff --git a/entity/ClassificationType_entity/entityfields/filter/valueProcess.js b/entity/ClassificationType_entity/entityfields/filter/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fdbc23fc58624088fb9d0f9a462b75f3da562ce2
--- /dev/null
+++ b/entity/ClassificationType_entity/entityfields/filter/valueProcess.js
@@ -0,0 +1,26 @@
+import("Context_lib");
+import("system.neon");
+import("system.vars");
+import("system.result");
+import("Attribute_lib");
+
+var entity = ContextUtils.getEntity(vars.getString("$field.OBJECT_TYPE"));
+var emptyFilter = {
+    entity: entity, 
+    filter: {
+        type: "group", 
+        operator: "AND", 
+        childs: []
+    }
+};
+
+var currentFilter = vars.get("$this.value");
+if (currentFilter)
+    currentFilter = JSON.parse(currentFilter);
+
+//if the filter field is empty or if the entity was changed, reset the filter
+if (!currentFilter || currentFilter.entity != emptyFilter.entity)
+{
+    var condJson = JSON.stringify(emptyFilter);
+    result.string(condJson);
+}
diff --git a/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js b/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js
deleted file mode 100644
index 1aec260db1641b4b7b282eacb60d756408b1f086..0000000000000000000000000000000000000000
--- a/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js
+++ /dev/null
@@ -1,76 +0,0 @@
-import("system.neon");
-import("system.translate");
-import("Entity_lib");
-import("system.result");
-import("Sql_lib");
-import("system.vars");
-import("Classification_lib");
-import("system.eMath");
-
-//references needed for auto refresh:
-"$field.ClassificationScores.insertedRows";
-"$field.ClassificationScores.changedRows";
-"$field.ClassificationScores.deletedRows";
-
-var rows = EntityConsumerRowsHelper.getCurrentConsumerRows("ClassificationScores", ["SCORE"]);
-var maxScore = 0;
-var i;
-var randomScoreId;
-
-var res = ClassificationUtils.getTranslatedInfo();
-if(rows.length > 0)
-{
-    for (i = 0; i < rows.length; i++) 
-    {
-        randomScoreId = rows[i]["#UID"];
-        break;
-    }
-    var classificationGroup = vars.get("$field.CLASSIFICATIONGROUP_ID");
-    var classificationType = ClassificationUtils.getClassificationType(randomScoreId);
-    var gradingTable = ClassificationUtils.getGradingTableByGroupId(classificationGroup);
-    for (i = 0; i < rows.length; i++) 
-        {
-            if(parseFloat(rows[i]["SCORE"]) > maxScore)
-                maxScore = parseFloat(rows[i]["SCORE"]);
-        }
-    if(classificationType.length > 0)
-    {
-        maxScore = eMath.addDec(parseFloat(maxScore), parseFloat(ClassificationUtils.getMaxScoreExcludeType(classificationGroup, classificationType)));
-    }
-    else
-    {
-        maxScore = eMath.addDec(parseFloat(maxScore), parseFloat(ClassificationUtils.getMaxScore(classificationGroup)));
-    }
-    
-    if(gradingTable.length > 0 && gradingTable != undefined && gradingTable != null)
-    {
-        var greatestGrading = gradingTable[0][1];
-        if(gradingTable[0][1] != maxScore)
-        {
-            var multiplicand;
-            var oldToNewValueString = "";
-            if(greatestGrading != 0)
-            {
-                multiplicand = maxScore/greatestGrading;
-                for (i = 0; i < gradingTable.length; i++) 
-                {
-                    oldToNewValueString += gradingTable[i][2] + ": " + gradingTable[i][1] + "->" + parseInt(gradingTable[i][1] * multiplicand) + "\n\
-    ";
-                }
-            }
-            else 
-            {
-                greatestGrading = maxScore;
-                multiplicand = 1;
-                for (i = 0; i < gradingTable.length; i++) 
-                {
-                    oldToNewValueString += gradingTable[i][2] + ": " + gradingTable[i][1] + "->" + greatestGrading * multiplicand + "\n\
-            ";
-                }
-            }
-            res = translate.text("This is how the Classification Gradings of the Classification will get affected by these changes:") + "\n\
-    "+ oldToNewValueString;
-        }
-    }
-}
-result.string(res);
\ No newline at end of file
diff --git a/entity/ClassificationType_entity/entityfields/maxscore/valueProcess.js b/entity/ClassificationType_entity/entityfields/maxscore/valueProcess.js
deleted file mode 100644
index 49d9c5de791ae6d83bb8a6f61da2927d509ebddd..0000000000000000000000000000000000000000
--- a/entity/ClassificationType_entity/entityfields/maxscore/valueProcess.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import("system.result");
-import("Sql_lib");
-import("system.vars");
-
-var classificationTypeId = vars.get("$field.CLASSIFICATIONTYPEID");
-
-var score = null;
-if (classificationTypeId)
-{
-    score = newSelect("max(CLASSIFICATIONSCORE.SCORE)")
-        .from("CLASSIFICATIONSCORE")
-        .where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", classificationTypeId)
-        .cell();
-}
-
-result.string(score);
\ No newline at end of file
diff --git a/entity/ClassificationType_entity/recordcontainers/db/recordfieldmappings/maxscore.value/expression.js b/entity/ClassificationType_entity/recordcontainers/db/recordfieldmappings/maxscore.value/expression.js
deleted file mode 100644
index d8c6a26ee9e7e6851db78a9c24172140d0d2aa8d..0000000000000000000000000000000000000000
--- a/entity/ClassificationType_entity/recordcontainers/db/recordfieldmappings/maxscore.value/expression.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.result");
-import("system.result");
-import("Sql_lib");
-
-var statement = newSelect("max(CLASSIFICATIONSCORE.SCORE)")
-        .from("CLASSIFICATIONSCORE")
-        .where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID");
-
-result.string(statement.toString());
\ No newline at end of file
diff --git a/entity/Classification_entity/Classification_entity.aod b/entity/Classification_entity/Classification_entity.aod
index 0ffc7c029876ca37340aa50f5a4503ca4e0c8d1e..ce16a9a80461f72c42b1c4447f9be2aee94ca93a 100644
--- a/entity/Classification_entity/Classification_entity.aod
+++ b/entity/Classification_entity/Classification_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Classification_entity</name>
+  <title>Classification</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Classification_entity/documentation.adoc</documentation>
-  <title>Classification</title>
   <grantDelete v="false" />
   <afterOperatingState>%aditoprj%/entity/Classification_entity/afterOperatingState.js</afterOperatingState>
   <titlePlural>Classifications</titlePlural>
@@ -16,11 +16,10 @@
       <name>CLASSIFICATIONID</name>
     </entityField>
     <entityField>
-      <name>CLASSIFICATIONSCORE_ID</name>
+      <name>VALUE</name>
       <title>Selection</title>
       <consumer>ClassificationScores</consumer>
-      <titleProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationscore_id/titleProcess.js</titleProcess>
-      <displayValueProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationscore_id/displayValueProcess.js</displayValueProcess>
+      <displayValueProcess>%aditoprj%/entity/Classification_entity/entityfields/value/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityParameter>
       <name>ClassificationType_param</name>
@@ -42,6 +41,7 @@
     </entityParameter>
     <entityProvider>
       <name>Classifications</name>
+      <documentation>%aditoprj%/entity/Classification_entity/entityfields/classifications/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>6274acfa-3dbf-4a9b-8926-2a2d1ff80d6d</name>
@@ -59,6 +59,9 @@
     </entityProvider>
     <entityField>
       <name>CLASSIFICATIONTYPEID</name>
+      <title>Indicator</title>
+      <consumer>KeywordClassificationTypes</consumer>
+      <stateProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationtypeid/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationtypeid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -69,11 +72,6 @@
       <groupable v="true" />
       <mandatoryProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationgroup/mandatoryProcess.js</mandatoryProcess>
       <textInputAllowed v="true" />
-      <displayValueProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js</displayValueProcess>
-    </entityField>
-    <entityField>
-      <name>CLASSIFICATIONTYPE_ID</name>
-      <valueProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationtype_id/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>OBJECT_ROWID</name>
@@ -108,22 +106,13 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityField>
-      <name>CLASSIFICATIONTYPE</name>
-      <title>Usage</title>
-      <consumer>KeywordClassificationTypes</consumer>
-      <groupable v="true" />
-      <mandatory v="true" />
-      <stateProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationtype/stateProcess.js</stateProcess>
-      <valueProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationtype/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationtype/displayValueProcess.js</displayValueProcess>
-    </entityField>
     <entityField>
       <name>Info</name>
       <title>Rating</title>
       <contentType>HTML</contentType>
+      <groupable v="true" />
       <state>READONLY</state>
-      <valueProcess>%aditoprj%/entity/Classification_entity/entityfields/info/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Classification_entity/entityfields/info/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>SCORE_RESULTS</name>
@@ -145,7 +134,7 @@
     <entityField>
       <name>SCORETYPE</name>
       <title>Indicator</title>
-      <mandatory v="true" />
+      <mandatory v="false" />
       <displayValueProcess>%aditoprj%/entity/Classification_entity/entityfields/scoretype/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
@@ -160,7 +149,11 @@
       <useAggregates v="true" />
     </entityProvider>
     <entityField>
-      <name>CLASSIFICATIONGROUP_ID</name>
+      <name>SCOREPOINTS</name>
+      <title>Points</title>
+    </entityField>
+    <entityField>
+      <name>DISPLAYVALUE</name>
     </entityField>
   </entityFields>
   <recordContainers>
@@ -170,11 +163,15 @@
       <isFilterable v="true" />
       <isRequireContainerFiltering v="true" />
       <contentProcess>%aditoprj%/entity/Classification_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <hasDependentRecords v="true" />
       <onUpdate>%aditoprj%/entity/Classification_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
       <recordFieldMappings>
         <jDitoRecordFieldMapping>
           <name>UID.value</name>
         </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>CLASSIFICATIONTYPEID.value</name>
+        </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>CLASSIFICATIONID.value</name>
         </jDitoRecordFieldMapping>
@@ -185,37 +182,22 @@
           <name>CLASSIFICATIONGROUP.displayValue</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
-          <name>CLASSIFICATIONGROUP_ID.displayValue</name>
-        </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>CLASSIFICATIONSCORE_ID.value</name>
-        </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>CLASSIFICATIONSCORE_ID.displayValue</name>
-        </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>CLASSIFICATIONTYPEID.value</name>
-        </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>CLASSIFICATIONTYPE_ID.value</name>
-        </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>OBJECT_TYPE.value</name>
+          <name>CLASSIFICATIONTYPEID.displayValue</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
-          <name>OBJECT_ROWID.value</name>
+          <name>SCOREPOINTS.value</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
-          <name>SCORETYPE.value</name>
+          <name>VALUE.value</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
-          <name>CLASSIFICATIONTYPE.value</name>
+          <name>VALUE.displayValue</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
-          <name>SCORE_RESULTS.value</name>
+          <name>Info.displayValue</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
-          <name>GroupScore.value</name>
+          <name>Info.value</name>
         </jDitoRecordFieldMapping>
       </recordFieldMappings>
     </jDitoRecordContainer>
diff --git a/entity/Classification_entity/documentation.adoc b/entity/Classification_entity/documentation.adoc
index 6fb30333ca4369806f0dd63d76773d4e580df977..1b1f222e40d994f35f7f49536ffd465bb1853136 100644
--- a/entity/Classification_entity/documentation.adoc
+++ b/entity/Classification_entity/documentation.adoc
@@ -2,7 +2,7 @@
 
 Definition:
 
-    Offers the possibility to flexibly classify sales projects, organisations, or any other data. 
+    Offers the possibility to flexibly classify sales projects, organiations, or any other data. 
     The classification can be dynamically configured at runtime.
 
 Purpose:
@@ -10,7 +10,7 @@ Purpose:
     Classifications get stored in the Classification table with their own uid, the ids of the classification type, classification score, object_rowId and object_type.
 
     This entity displays the classification of an dataset in an treetable,
-    with the classification (classificationgroup), including the archieved and possible points and the resulting grading, as the groupfield.
+    with the classification (classificationgroup), including the achieved and possible points and the resulting grading, as the groupfield.
     And Columns for the indicators (classificationtype) and the selected values (selection).
 
     Example: 
@@ -27,6 +27,26 @@ Purpose:
 
 Particularities:
 
+    The classification datasets get persisted for performance reasons and can be flagged as outdated so they can be updated by the 
+    updateClassifications_serverProcess.
+    For further information how this works see also the documentation property of updateClassifications_serverProcess.
+    
+    The calculated ClassificationStrings (e.g. "ACD") get stored in "CLASSIFICATIONSTORAGE" with their own id, the object_type, object_rowId, 
+    and the 'outdated' flag (datatype Boolean, might be changed to a timestamp in the future).
+    This dataset get's inserted when opening the Classification context of the object for the first time. (otherwise we would have a lot of 
+    useless datasets for object's that are not getting classified in any way, which is also the reason why we are deleting them via the process 
+    if they only consist of '-', since there is no reason for storing those)
+    The 'outdated' flag get's set when editing the current object or a linked object of a dependency of the current object_type 
+    (dependencies have to be configured in the Dependency_lib)
+    
+    We also persist the classificationValues themselves (e.g. Industy - Service) with with their own id, the object_type, object_rowId, 
+    classificationtypeId, value(classificationScoreId) and the scorepoints.
+    Reason for that are the filters the admin can set for the classificationtypes which can make some classificationtypes irrelevant for certain objects.
+    If we had to always check those every time we would load the Classification conetext for example, the performance would suffer tremendously.
+    The solution to that Problem is persisting those the same way as the string (they get persisted the first time you open the context, 
+    which only results in poor performance only once)
+    This also means that we have to insert/delete those persisted once in the serverProcess when filters change.
+
     The Classification consists of the following entities:
     Classification_entity,
     ClassificationAdmin_entity,
diff --git a/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js b/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js
deleted file mode 100644
index d0b202c003896906849e53907d10e67333faf168..0000000000000000000000000000000000000000
--- a/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import("Sql_lib");
-import("Classification_lib");
-import("system.translate");
-import("system.result");
-import("system.vars");
-
-if (vars.getString("$field.CLASSIFICATIONGROUP"))
-{
-    var score = vars.getString("$field.GroupScore");
-    var group = vars.getString("$field.CLASSIFICATIONGROUP");
-    var groupName = vars.getString("$field.CLASSIFICATIONGROUP_ID.displayValue");
-    var res = ClassificationUtils.formatDisplaySummaryForGroup(score, group, groupName);
-    result.string(res);
-}
diff --git a/entity/Classification_entity/entityfields/classifications/documentation.adoc b/entity/Classification_entity/entityfields/classifications/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..622e58880338d8c9605a79aadf41c95b02a9db9b
--- /dev/null
+++ b/entity/Classification_entity/entityfields/classifications/documentation.adoc
@@ -0,0 +1,3 @@
+=Classifications provider
+Provider for all the modules that you want to use the classification for.
+The tree gets build using the ObjectRowId_param and ObjectType_param so you can see all the classifications for e.g organisation x or salesproject y.
\ No newline at end of file
diff --git a/entity/Classification_entity/entityfields/classificationscore_id/titleProcess.js b/entity/Classification_entity/entityfields/classificationscore_id/titleProcess.js
deleted file mode 100644
index 5f69ddae0ef78a61fc8be88201023c420f4dfb09..0000000000000000000000000000000000000000
--- a/entity/Classification_entity/entityfields/classificationscore_id/titleProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.neon");
-import("system.result");
-import("system.vars");
-import("system.translate");
-
-if (vars.get("$sys.recordstate") && vars.get("$sys.recordstate") != neon.OPERATINGSTATE_VIEW)
-{
-    result.string(translate.text(vars.get("$field.SCORETYPE")));
-}
diff --git a/entity/Classification_entity/entityfields/classificationtype/displayValueProcess.js b/entity/Classification_entity/entityfields/classificationtype/displayValueProcess.js
deleted file mode 100644
index 55fc33359a0fc8b9496e9dc12f56e15eb3a7b4ce..0000000000000000000000000000000000000000
--- a/entity/Classification_entity/entityfields/classificationtype/displayValueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-result.string(KeywordUtils.getViewValue($KeywordRegistry.classificationType(), vars.get("$field.OBJECT_TYPE")));
\ No newline at end of file
diff --git a/entity/Classification_entity/entityfields/classificationtype_id/valueProcess.js b/entity/Classification_entity/entityfields/classificationtype_id/valueProcess.js
deleted file mode 100644
index e294cffd162af0b88230b7052c38c407862add9e..0000000000000000000000000000000000000000
--- a/entity/Classification_entity/entityfields/classificationtype_id/valueProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-
-if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) 
-        && vars.get("$this.value") == null)
-    result.string(vars.get("$field.CLASSIFICATIONTYPEID"));
\ No newline at end of file
diff --git a/entity/Classification_entity/entityfields/classificationtype/stateProcess.js b/entity/Classification_entity/entityfields/classificationtypeid/stateProcess.js
similarity index 99%
rename from entity/Classification_entity/entityfields/classificationtype/stateProcess.js
rename to entity/Classification_entity/entityfields/classificationtypeid/stateProcess.js
index 2a616f4edfa3c6e68a81c8d99b17d08c353ceb69..d2c0dd18db355cc71410e59b8fae386dc591254e 100644
--- a/entity/Classification_entity/entityfields/classificationtype/stateProcess.js
+++ b/entity/Classification_entity/entityfields/classificationtypeid/stateProcess.js
@@ -4,6 +4,5 @@ import("system.vars");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
     result.string(neon.COMPONENTSTATE_EDITABLE);
-
 else
     result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/Classification_entity/entityfields/classificationtypeid/valueProcess.js b/entity/Classification_entity/entityfields/classificationtypeid/valueProcess.js
index 16c47d8b58490ac63829673a531ffce4e6896745..2bccd5eb7fbb2311971da0e6ae2ed3b56ed21268 100644
--- a/entity/Classification_entity/entityfields/classificationtypeid/valueProcess.js
+++ b/entity/Classification_entity/entityfields/classificationtypeid/valueProcess.js
@@ -1,10 +1,8 @@
-import("system.util");
 import("system.result");
 import("system.neon");
 import("system.vars");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
 {
-    var newId = util.getNewUUID();
-    result.string(newId);
+    result.string(vars.get("$param.ClassificationType_param"));
 }
\ No newline at end of file
diff --git a/entity/Classification_entity/entityfields/info/displayValueProcess.js b/entity/Classification_entity/entityfields/info/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8cc250e8c5e8bb966333b5dd0843cebbe01e2991
--- /dev/null
+++ b/entity/Classification_entity/entityfields/info/displayValueProcess.js
@@ -0,0 +1,26 @@
+import("system.translate");
+import("system.neon");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
+{
+    var classificationTypeId = vars.get("$field.CLASSIFICATIONTYPEID");
+    var value = vars.get("$field.VALUE");
+    if(classificationTypeId)
+    {
+        var select = newSelect(["CLASSIFICATIONSCORE.SCOREPERCENT/100*CLASSIFICATIONTYPE.SCOREPOINTS", 
+                                            newSelect("max(CLASSIFICATIONSCORE.SCOREPERCENT)/100*CLASSIFICATIONTYPE.SCOREPOINTS")
+                                                        .from("CLASSIFICATIONSCORE")
+                                                        .join("CLASSIFICATIONTYPE on CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID")
+                                                        .where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", classificationTypeId)
+                                                        .groupBy("CLASSIFICATIONTYPE.SCOREPOINTS").cell()])
+                                        .from("CLASSIFICATIONSCORE")
+                                        .join("CLASSIFICATIONTYPE on CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID")
+                                        .where("CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID", value)
+                                        .arrayRow();
+
+        result.string(Math.round(select[0] * 100) / 100 +"/"+Math.round(select[1] * 100) / 100 + " " +translate.text("Points"));
+    }
+}
\ No newline at end of file
diff --git a/entity/Classification_entity/entityfields/info/valueProcess.js b/entity/Classification_entity/entityfields/info/valueProcess.js
deleted file mode 100644
index 7030b6384f6e2a7e9dae80a5b931081a2583b7fd..0000000000000000000000000000000000000000
--- a/entity/Classification_entity/entityfields/info/valueProcess.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import("system.vars");
-import("system.db");
-import("system.translate");
-import("system.result");
-import("system.text");
-import("Sql_lib");
-
-var data = newSelect("TITLE, SCORE")   
-                .from("CLASSIFICATIONSCORE")
-                .orderBy("SORT")
-                .whereIfSet("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", "$field.CLASSIFICATIONTYPEID")
-                .table(true);
-
-var resultText = "";
-
-data.forEach(function(pScore)
-{
-    resultText += translate.text(pScore[0]) + " = " + text.formatDouble(pScore[1], "#,##0.00", true) + "<br>"
-});
-
-result.string(resultText);
\ No newline at end of file
diff --git a/entity/Classification_entity/entityfields/classificationscore_id/displayValueProcess.js b/entity/Classification_entity/entityfields/value/displayValueProcess.js
similarity index 81%
rename from entity/Classification_entity/entityfields/classificationscore_id/displayValueProcess.js
rename to entity/Classification_entity/entityfields/value/displayValueProcess.js
index 0b086fdea352f7d072715c805172bf2e4f680d0c..142bdf632c32fc623494dd125caca5f75abc104e 100644
--- a/entity/Classification_entity/entityfields/classificationscore_id/displayValueProcess.js
+++ b/entity/Classification_entity/entityfields/value/displayValueProcess.js
@@ -5,12 +5,12 @@ import("system.db");
 import("system.result");
 
 // no need to load, if no classificationscore exists
-if (vars.get("$field.CLASSIFICATIONSCORE_ID"))
+if (vars.get("$field.VALUE"))
 {
     // TODO: loadEntity / #Title
     result.string(translate.text(newSelect("TITLE")
                                     .from("CLASSIFICATIONSCORE")
-                                    .where("CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID", "$field.CLASSIFICATIONSCORE_ID")
+                                    .where("CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID", "$field.VALUE")
                                     .cell()));
 } 
 else
diff --git a/entity/Classification_entity/recordcontainers/jdito/contentProcess.js b/entity/Classification_entity/recordcontainers/jdito/contentProcess.js
index 78879bee92567449a5ca43c6ef616d91d236a62f..9012ad499cb17403800936f7ad257cca37b1d91b 100644
--- a/entity/Classification_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Classification_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,8 @@
+import("Context_lib");
+import("Util_lib");
+import("system.eMath");
+import("system.entities");
+import("Organisation_lib");
 import("system.text");
 import("Classification_lib");
 import("Contact_lib");
@@ -32,134 +37,527 @@ _UidEncoder.decode = function (pEncodedUid)
 
 var objectRowIdParam = vars.get("$param.ObjectRowid_param");
 var objectTypeParam = vars.get("$param.ObjectType_param");
-var scoresPerGroup = ClassificationUtils.getScoreAsObject(objectTypeParam, objectRowIdParam);
 
-var masking = new SqlMaskingUtils();
+var classificationTypeGroupDisplayCache = {};
+var gradingObject = {};
+var bestPossibleValuesObj = {};
+var achievedGroupScoresObj = {};
+var achievedGroupGradingsObj = {};
+var translatedClassificationTypesObj = {};
+var gradingTables = {};
+var maxScoresObj = {};
+
+var resultSet = [];
+var select;
+
+var classificationGroups = [];
 
-//store the content of $local.idValues depending on the provided type in the idvalues
-var filterClassificationIds = [];
-var filterClassificationTypeIds = [];
-// if the id starts with "C," it is a classificationId. If it starts with "T,", it is a classificationtypeId
 if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
 {
-    vars.get("$local.idvalues").forEach(function (pIdValue) {
-        var decodedId = _UidEncoder.decode(pIdValue);
-        filterClassificationTypeIds.push(decodedId.classifactionTypeId);
-    });
+    var decodedId = _UidEncoder.decode(vars.get("$local.idvalues"));
 }
 
-//this is the main select for the data
-var select = newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID \n\
-                    ,CLASSIFICATION.CLASSIFICATIONID, CLASSIFICATION.CLASSIFICATIONSCORE_ID, CLASSIFICATION.OBJECT_ROWID \n\
-                    ,CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID, CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONTYPE.SCORETYPE \n\
-                    ,CLASSIFICATIONSCORE.TITLE\n\
-                    ,CLASSIFICATIONGROUP.TITLE ")
-                .from("CLASSIFICATION")
-                .rightJoin("CLASSIFICATIONTYPE", newWhere()
-                    .and("CLASSIFICATION.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID")
-                    .andIfSet("CLASSIFICATION.OBJECT_TYPE", "$param.ObjectType_param")
-                    .andIfSet("CLASSIFICATION.OBJECT_ROWID", objectRowIdParam))
-                .join("CLASSIFICATIONGROUP", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
-                .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID")
-                .whereIfSet("CLASSIFICATIONTYPE.OBJECT_TYPE", "$param.ClassificationType_param")
-                .andIfSet(
-                        newWhereIfSet("CLASSIFICATION.CLASSIFICATIONID", filterClassificationIds, SqlBuilder.IN())
-                             .orIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", filterClassificationTypeIds, SqlBuilder.IN())
-                    )
-                .orderBy("CLASSIFICATIONGROUP.SORTING");
-
-
-if (filterClassificationIds.length == 0 && filterClassificationTypeIds.length == 0)//no idvalues for filtering
+if(decodedId)//data selected -> only one select has to be done with the classificationtype (which we get from the uuid) in the condition
 {
-    select.and(newWhereIfSet("CLASSIFICATION.OBJECT_TYPE", "$param.ObjectType_param")
-                    .or("CLASSIFICATION.OBJECT_TYPE is null"))
-            .and(newWhereIfSet("CLASSIFICATION.OBJECT_ROWID", objectRowIdParam)
-                    .or("CLASSIFICATION.OBJECT_ROWID is null"));
-}
+    select = newSelect(["CLASSIFICATION.CLASSIFICATIONID, CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONTYPE.SCORETYPE, \n\
+                            CLASSIFICATION.SCOREPOINTS, CLASSIFICATION.VALUE, CLASSIFICATIONSCORE.TITLE, CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", 
+                                    newSelect("max(CLASSIFICATIONSCORE.SCOREPERCENT)*CLASSIFICATIONTYPE.SCOREPOINTS")
+                                                .from("CLASSIFICATIONSCORE")
+                                                .join("CLASSIFICATIONTYPE on CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID")
+                                                .where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", decodedId["classifactionTypeId"])
+                                                .groupBy("CLASSIFICATIONTYPE.SCOREPOINTS").cell()])
+                                .from("CLASSIFICATIONSCORE")
+                                .join("CLASSIFICATION", "CLASSIFICATION.VALUE = CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID")
+                                .leftJoin("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATION.CLASSIFICATIONTYPE_ID")
+                                .leftJoin("CLASSIFICATIONGROUP", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
+                                .where("CLASSIFICATION.CLASSIFICATIONTYPE_ID", decodedId["classifactionTypeId"])
+                                .and("CLASSIFICATION.OBJECT_TYPE", decodedId["objectType"])
+                                .and("CLASSIFICATION.OBJECT_ROWID", decodedId["objectRowId"])
+                                .arrayRow();
+                                
+    if(select.length == 0)//different select needed if no classifications have been stored for the current object_rowId (otherwise problem with the from clause)
+    {
+        select = newSelect(["CLASSIFICATION.CLASSIFICATIONID, CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONTYPE.SCORETYPE, \n\
+                            CLASSIFICATION.SCOREPOINTS, CLASSIFICATION.VALUE"
+                            , SqlBuilder.caseWhen(newWhere("CLASSIFICATION.VALUE", ""))
+                                                            .thenString("")
+                                                            .elseValue("CLASSIFICATIONSCORE.TITLE")
+                                                            .toString()
+                            , "CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", 
+                                    newSelect("max(CLASSIFICATIONSCORE.SCOREPERCENT)*CLASSIFICATIONTYPE.SCOREPOINTS")
+                                                .from("CLASSIFICATIONSCORE")
+                                                .join("CLASSIFICATIONTYPE on CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID")
+                                                .where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", decodedId["classifactionTypeId"])
+                                                .groupBy("CLASSIFICATIONTYPE.SCOREPOINTS").cell()])
+                                .from("CLASSIFICATION")
+                                .leftJoin("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATION.CLASSIFICATIONTYPE_ID")
+                                .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID")
+                                .leftJoin("CLASSIFICATIONGROUP", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
+                                .where("CLASSIFICATION.CLASSIFICATIONTYPE_ID", decodedId["classifactionTypeId"])
+                                .and("CLASSIFICATION.OBJECT_TYPE", decodedId["objectType"])
+                                .and("CLASSIFICATION.OBJECT_ROWID", decodedId["objectRowId"])
+                                .arrayRow();
+    }
+                                
+                                
+    var groupId = select[6];        
+    _buildMaxScore(); //builds maxScoresObj
+    maxTypeScoreObj = {};
+    achievedScoresObj = {};
+    var maxPointsArray = newSelect("CLASSIFICATION.SCOREPOINTS, CLASSIFICATION.CLASSIFICATIONTYPE_ID, CLASSIFICATIONTYPE.SCOREPOINTS")
+                                    .from("CLASSIFICATION")
+                                    .join("CLASSIFICATIONTYPE", "CLASSIFICATION.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID")
+                                    .where("CLASSIFICATION.CLASSIFICATIONTYPE_ID",
+                                        newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID")
+                                        .from("CLASSIFICATIONTYPE")
+                                        .where("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", groupId), SqlBuilder.IN())
+                                    .and("CLASSIFICATION.OBJECT_ROWID", objectRowIdParam)
+                                    .table();
+    var maxScoreGroup = 0;
+    var achievedScoreGroup = 0;
+    for (let i = 0; i < maxPointsArray.length; i++) 
+    {
+        [achievedScore, classificationTypeId, maxScore] = maxPointsArray[i];
 
-_addLocalFilter();
-_updateScore();
 
-/* After loading the data from the database the data some preparation for the record container is done like translating display values into the 
- * correct locale or calculating some values
- */
-var classificationTypeGroupDisplayCache = {};
-var resultSet = [];
-//declaration needs to be separated because if declaration is done in the deconstructioning the IDE (designer) autocomplete does not work anymore
-var uid, classificationId, classificationScoreId, classificationObjectRowId, classificationTypeGroupId, classificationTypeId
-    , classificationTypeObjectType, classificationTypeScoreType, classificationScoreTitle, classificationGroupTitle;
-select.table().forEach(function (pRow){
-    //deconstructioning for easy access when the selected data changes
-    [uid, classificationId, classificationScoreId, classificationObjectRowId, classificationTypeGroupId, classificationTypeId
-    , classificationTypeObjectType, classificationTypeScoreType, classificationScoreTitle, classificationGroupTitle] = pRow;
+        maxScoreGroup = eMath.addDec(maxScoreGroup, (maxScoresObj[classificationTypeId]*maxScore));
+
+        achievedScoreGroup = eMath.addDec(achievedScore, achievedScoreGroup);
+    }
     
-    uid = _UidEncoder.encode(uid, objectRowIdParam, objectTypeParam);
-    if (classificationScoreTitle)
-        classificationScoreTitle = translate.text(classificationScoreTitle);
-    if (classificationGroupTitle)
-        classificationGroupTitle = translate.text(classificationGroupTitle);
+        gradingTables = newSelect("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID, CLASSIFICATIONGRADING.MINPERCENT, CLASSIFICATIONGRADING.GRADING")
+                                    .from("CLASSIFICATIONGRADING")
+                                    .where("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID", groupId)
+                                    .orderBy("CLASSIFICATIONGRADING.MINPERCENT asc")
+                                    .table();
+                                    
+    for (let i = 0; i < gradingTables.length; i++) 
+    {
+        [groupId, minPercent, grading] = gradingTables[i];
 
-    var currentGroupScore = scoresPerGroup[classificationTypeGroupId] || 0;
+        if(gradingObject[groupId] == undefined)
+            gradingObject[groupId] = [];
 
-    //display value is the same for every groupId, so let's cache it that we do not need to load it in every row  => better performance
-    if (classificationTypeGroupDisplayCache[classificationTypeGroupId] == undefined)
+        gradingObject[groupId].push([minPercent, grading]);
+    }
+    
+    displayString = ClassificationUtils.formatDisplaySummaryForGroup(achievedScoreGroup, maxScoreGroup, groupId, translate.text(select[1]),
+                                                ClassificationUtils.getGradingFromObject(gradingObject, groupId, achievedScoreGroup, maxScoreGroup))
+    
+    resultSet.push([vars.get("$local.idvalues")[0]
+                    , decodedId["classifactionTypeId"]
+                    , select[0]
+                    , groupId
+                    , displayString
+                    , translate.text(select[2])
+                    , select[3]
+                    , select[4]
+                    , translate.text(select[5])
+                    , Math.round(select[3] * 100) / 100 +"/"+Math.round(select[7]) / 100 + " " +translate.text("Points")//do this here instead of in the sql so we don't get a lot of zeros behind the comma
+                    , groupId
+                ]);
+                
+}   
+else//else -> build via stored classification datasets; if we don't have any: 1. we get all relevant classificationtypes (this can take some time due to the filters)
+{   //2. insert empty values for them and then 3. load the selected classificationtypes
+
+    // if the select that's done in _buildTreeFromPersistetData() doesnt't return any persisted classifications -> the context has never been opened 
+    // for this dataset before and we need to load all relevant classificationTypes and persist them and return the data
+    if(!_buildTreeFromPersistetData())
     {
-        classificationTypeGroupDisplayCache[classificationTypeGroupId] = ClassificationUtils.formatDisplaySummaryForGroup(currentGroupScore
-                , classificationTypeGroupId, classificationGroupTitle);
+        _buildMaxScore();
+
+        //get's all the the classificationtypes of the current objectType
+        var classificationTypeArray = newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID, \n\
+                                                    CLASSIFICATIONTYPE.SCORETYPE, CLASSIFICATIONTYPE.SCOREPOINTS, CLASSIFICATIONTYPE.FILTER")
+                                                    .from("CLASSIFICATIONTYPE")
+                                                    .join("CLASSIFICATIONGROUP", "CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID = CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID")
+                                                    .where("CLASSIFICATIONTYPE.OBJECT_TYPE", objectTypeParam)
+                                                    .orderBy("CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID")
+                                                    .table();
+
+        helperObject = {};
+        classificationTypeObj = {};
+        checkedFilterObj = {};
+        for (let i = 0; i < classificationTypeArray.length; i++) 
+        {
+            [groupId, classificationGroupTitle, typeId, classificationTypeScoreType, classificationTypeScorePoints, classificationTypeFilter] = classificationTypeArray[i];
+
+            if(!helperObject.hasOwnProperty(groupId)) //classificationGroup
+            {
+                classificationTypeObj[groupId] = {};
+                classificationGroups.push(groupId);
+                helperObject[groupId] = "";
+            }
+            if(!helperObject.hasOwnProperty(typeId)) //classificationType
+            {
+                if(_isRelevant())
+                {
+                    classificationTypeObj[groupId][typeId] = {  "classificationGroupTitle": classificationGroupTitle
+                                                                                                    ,"classificationTypeScoreType": classificationTypeScoreType
+                                                                                                    ,"classificationTypeMaxPoints": Math.round(classificationTypeScorePoints*maxScoresObj[typeId] * 100) / 100};
+                    if(bestPossibleValuesObj[groupId] == undefined)
+                        bestPossibleValuesObj[groupId] = 0;
+                    bestPossibleValuesObj[groupId] = eMath.addDec(bestPossibleValuesObj[groupId], classificationTypeScorePoints)
+                }
+                helperObject[typeId] = "";
+            }
+        }
+
+        var columns = ["CLASSIFICATION.CLASSIFICATIONID"
+                        , "CLASSIFICATION.VALUE"
+                        , "CLASSIFICATION.CLASSIFICATIONTYPE_ID"
+                        , "CLASSIFICATION.OBJECT_TYPE"
+                        , "CLASSIFICATION.OBJECT_ROWID"
+                        , "CLASSIFICATION.SCOREPOINTS"
+                       ];
+
+        
+        //we loop  trough all the relevant classificationtypes and insert classification datasets for every one of them.
+        //here we can easily build resultSet since we are already looping trough all the classificationTypes, so why not do it?
+        for (groupId in classificationTypeObj) 
+        {
+            for (var typeId in classificationTypeObj[groupId])
+            {
+                classificationId = util.getNewUUID();
+                var values = [classificationId
+                , " "
+                , typeId
+                , objectTypeParam
+                , objectRowIdParam
+                , "0"
+               ];
+                
+                db.insertData("CLASSIFICATION", columns, null, values);//insert into CLASSIFICATION for every relevant classificationtype
+                
+                //build resultSet:
+                uid = _UidEncoder.encode(typeId, objectRowIdParam, objectTypeParam);
+                resultSet.push([uid, typeId, classificationId, groupId, translate.text(classificationTypeObj[groupId][typeId]["classificationGroupTitle"]), 
+                    translate.text(classificationTypeObj[groupId][typeId]["classificationTypeScoreType"]), 
+                "0", "", "", classificationTypeObj[groupId][typeId]["classificationTypeMaxPoints"]+" "+translate.text("Points")]);
+            }
+        }
     }
-    var classificationTypeGroupDisplay = classificationTypeGroupDisplayCache[classificationTypeGroupId];
+    
+    // get displayvalues, and build the infoString using gradingObj (this is relevant for every way of loading data)
+    
+    gradingTables = newSelect("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID, CLASSIFICATIONGRADING.MINPERCENT, CLASSIFICATIONGRADING.GRADING")
+                                    .from("CLASSIFICATIONGRADING")
+                                    .where("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID", classificationGroups, SqlBuilder.IN())
+                                    .orderBy("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID, MINPERCENT asc")
+                                    .table();
+                                    
+    for (i = 0; i < gradingTables.length; i++) 
+    {
+        [groupId, minPercent, grading] = gradingTables[i];
 
-    //a field can only contain a string so format complex data into string
-    scoresPerGroupForPush = JSON.stringify(scoresPerGroup);
+        if(gradingObject[groupId] == undefined)
+            gradingObject[groupId] = [];
 
-    resultSet.push([uid, classificationId, classificationTypeGroupId, classificationTypeGroupDisplay, classificationGroupTitle
-        , classificationScoreId, classificationScoreTitle, classificationTypeId, classificationTypeId, classificationTypeObjectType
-        , objectRowIdParam, classificationTypeScoreType, classificationTypeObjectType, scoresPerGroupForPush, currentGroupScore]);
-});
+        gradingObject[groupId].push([minPercent, grading]);
+    }
 
-result.object(resultSet);
+    for (i = 0; i < classificationGroups.length; i++)
+    {
+        var classificatioGroupId = classificationGroups[i];
+        if(achievedGroupScoresObj[classificatioGroupId] == undefined)
+            achievedGroupScoresObj[classificatioGroupId] = 0;
+        
+        achievedGroupGradingsObj[classificatioGroupId] = ClassificationUtils.getGradingFromObject(gradingObject, classificatioGroupId, 
+                                                            achievedGroupScoresObj[classificatioGroupId], bestPossibleValuesObj[classificatioGroupId]);
+    }
 
-/* private helper functions for better readability are following now
- * variable scope is shared so there is no need to pass the values as parameters
- */
 
-/**
- * adds the $local.filter to the sql condition
- */
-function _addLocalFilter()
+    for (i = 0; i < resultSet.length; i++) {
+        groupId = resultSet[i][3];
+
+            //display value is the same for every groupId, so let's cache it that we do not need to load it in every row  => better performance
+        if (classificationTypeGroupDisplayCache[groupId] == undefined)
+        {
+            classificationTypeGroupDisplayCache[groupId] = ClassificationUtils.formatDisplaySummaryForGroup(achievedGroupScoresObj[groupId]
+                    ,bestPossibleValuesObj[groupId], groupId, resultSet[i][4], achievedGroupGradingsObj[groupId]);
+        }
+        resultSet[i][4] = classificationTypeGroupDisplayCache[groupId];
+        resultSet[i][9] = "";
+        resultSet[i][10] = "";
+    }
+    
+    
+}
+var newStorageString = "";
+var oldStorageString = newSelect("CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE")
+                                .from("CLASSIFICATIONSTORAGE")
+                                .where("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypeParam)
+                                .and("CLASSIFICATIONSTORAGE.OBJECT_ROWID", objectRowIdParam)
+                                .cell();
+                                
+for(var groupid in classificationTypeGroupDisplayCache)
 {
-    if (vars.exists("$local.filter") && vars.get("$local.filter"))
+    newStorageString += classificationTypeGroupDisplayCache[groupid].slice(classificationTypeGroupDisplayCache[groupid].length-1)
+}
+
+var update;
+if(newStorageString != oldStorageString && !decodedId)//update the old string if the new one differs
+{
+    update = newWhere("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypeParam)
+                            .and("CLASSIFICATIONSTORAGE.OBJECT_ROWID", objectRowIdParam)
+                            .updateData(true, "CLASSIFICATIONSTORAGE", ["CLASSIFICATIONVALUE"], null, [newStorageString]);//don't set the OUTDATED flag to false since even our new value could be outdated!
+    
+    if(update == 0)//update wasnt succesfull -> the storage dataset doesnt exist yet -> insert
+    {
+        db.insertData("CLASSIFICATIONSTORAGE", ["CLASSIFICATIONSTORAGEID", "CLASSIFICATIONVALUE", "OBJECT_ROWID", "OBJECT_TYPE", "OUTDATED"], null, 
+                                [util.getNewUUID(), newStorageString, objectRowIdParam, objectTypeParam, 0])
+    }
+}
+else if(decodedId)//different way of handling when data is selected since we can only check for the grading of the group of the current classificationtype
+{
+    var orderedGroups = newSelect("distinct CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONGROUP.SORTING")
+                                    .from("CLASSIFICATION")
+                                    .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATION.CLASSIFICATIONTYPE_ID")
+                                    .join("CLASSIFICATIONGROUP", "CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID = CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID")
+                                    .where("CLASSIFICATION.OBJECT_ROWID", objectRowIdParam)
+                                    .orderBy("CLASSIFICATIONGROUP.SORTING")
+                                    .table();
+    //get the of our grading in the string
+    var position = 0;
+    for (i = 0; i < orderedGroups.length; i++) {
+        if(orderedGroups[i][0] == groupId)
+        {
+            position = i;
+            break;
+        }
+    }
+    newStorageString = displayString.slice(displayString.length-1); //slice current grading from the displaystring
+    if(newStorageString != oldStorageString.slice(position, position+1)) // our letter/char/whatever differs from the one at the correct position of the storred string
     {
-        var filter = vars.get("$local.filter");
-        if (filter.filter)
-            select.andIfSet((JditoFilterUtils.getSqlCondition(filter.filter, "CLASSIFICATION", undefined, {
-                OBJECT_TYPE : "CLASSIFICATIONTYPE.OBJECT_TYPE"
-            })));
+        newStorageString = StringUtils.replaceAt(oldStorageString, position, newStorageString)
+        update = newWhere("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypeParam)
+                                .and("CLASSIFICATIONSTORAGE.OBJECT_ROWID", objectRowIdParam)
+                                .updateData(true, "CLASSIFICATIONSTORAGE", ["CLASSIFICATIONVALUE"], null, [newStorageString]);//don't set the OUTDATED flag to false since even our new value could be outdated!
+
+        if(update == 0)//update wasnt succesfull -> the storage dataset doesnt exist yet -> insert
+        {
+            db.insertData("CLASSIFICATIONSTORAGE", ["CLASSIFICATIONSTORAGEID", "CLASSIFICATIONVALUE", "OBJECT_ROWID", "OBJECT_TYPE", "OUTDATED"], null, 
+                                    [util.getNewUUID(), newStorageString, objectRowIdParam, objectTypeParam, 0])
+        }
     }
 }
 
+result.object(resultSet);
 
 /**
- * performs an update in  the precalculated classification-stoarge information if there is a missmatch between the IS-value and the SHOULD-BE-value
+ * Checks whether or not the classification is relevant for the current dataset
  */
-function _updateScore()
+function _isRelevant()
 {
-    var calculatedScore = ClassificationUtils.getScore(objectTypeParam, objectRowIdParam)
+    var cond = ((classificationTypeFilter == "" || classificationTypeFilter == undefined || classificationTypeFilter == null) 
+                    && checkedFilterObj[classificationTypeFilter] == undefined)
+                || (checkedFilterObj[classificationTypeFilter] != undefined && checkedFilterObj[classificationTypeFilter] != false);
+    if(!cond)// return true if we don't have an filter set or already checked the filter and it's true
+    {
+        if(checkedFilterObj[classificationTypeFilter] != false)
+        {
+            var selectRelevance, loadConfig, row, filterFields, filterableRow, value, filteredRecs;
+            var res = false;
+            var entityField = true;
+
+            parsedFilter = JSON.parse(classificationTypeFilter).filter;
+
+            if(parsedFilter["childs"]["0"] != undefined) // ignore empty filters
+            {
+                //no "." in the name means its a field of the entity itself: use entities.getRow and JditoFilterUtils.filterRecords 
+                //to check whether or not the Filter excludes this row
+                //else: currently a count is made whith the filtercondition as the where clause --> poor performance
+                if(parsedFilter["childs"]["0"]["name"].includes("."))
+                {
+                    entityField = false
+                    parsedFilter = JSON.stringify(parsedFilter);
+                }
+
+                if(objectTypeParam == "Organisation")
+                {
+                    if(entityField == true) 
+                    {
+                        filterFields = ["CUSTOMERCODE", "INFO", "LANGUAGE", "NAME", "STANDARD_CITY", "STANDARD_EMAIL_COMMUNICATION", "STANDARD_PHONE_COMMUNICATION", "STATUS", "TYPE"];
+                    }
+                    else
+                    {
+                      selectRelevance = newSelect("count(*)")
+                                                    .from("ORGANISATION")
+                                                    .join("CONTACT", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null")
+                                                    .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID")
+                                                    .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID")
+                                                    .where(db.toFilterCondition(parsedFilter, "Organisation_entity"))
+                                                    .and("ORGANISATION.ORGANISATIONID", OrgUtils.getPrivateOrganisationId(), SqlBuilder.NOT_EQUAL())
+                                                    .and("CONTACT.CONTACTID", objectRowIdParam)
+                    }
+                }
+                else if(objectTypeParam == "Salesproject")
+                {
+                    if(entityField == true)
+                    {
+                        filterFields = ["CONTACT_ID", "ENDDATE", "INFO", "PHASE", "PROBABILITY", "PROJECTCODE", "PROJECTTITLE", "REASONS", "STARTDATE", "STATUS", "VOLUME"];
+                    }
+                    else
+                    {
+                        selectRelevance = newSelect("count(*)")
+                                                    .from("Salesproject")
+                                                    .leftJoin("CONTACT", "SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID")
+                                                    .leftJoin("ORGANISATION", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID")
+                                                    .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SAALESPROJECTID") 
+                                                    .where(db.toFilterCondition(parsedFilter, "Salesproject_entity"))
+                                                    .and("SALESPROJECT.SALESPROJECTID", objectRowIdParam)
+                    }
+                }
+                else
+                {
+                    throw new Error("Classification_entity.jdito.contentProcess: objectType doesn't exist or is not implemented correctly, contact an administrator.");
+                }
 
-    var calculatedClassification = "";
-    for (let i = 0; i < calculatedScore.length; i++) {
-        calculatedClassification += ClassificationUtils.getClassifications(calculatedScore[i][0], calculatedScore[i][1]);
+                //if its a field of the entity itself: use entities.getRow and JditoFilterUtils.filterRecords to check whether or not the Filter excludes this row
+                if(entityField == true)
+                {   
+                    if(filterableRow == undefined)//filterableRow has only have to be done once per objectType -> cache for better performance
+                    {
+                        loadConfig = entities.createConfigForLoadingRows()
+                                                .entity(ContextUtils.getEntity(objectTypeParam))
+                                                .uid(objectRowIdParam)
+                                                .fields(filterFields)
+
+                        row = entities.getRow(loadConfig)
+
+                        filterableRow = filterFields.map(function (field){
+                        value = null;
+                        if (field in row)
+                            value = row[field];
+                        return value;
+                        });
+                    }
+                    //filter gets used after using entities.getRow and not in the loadconfig, since we can have multiple filters 
+                    //and don't want to do entities.getRow for every single one 
+                    filteredRecs = JditoFilterUtils.filterRecords(filterFields, [filterableRow], parsedFilter);
+                    if(filteredRecs.length > 0)
+                        res = true;
+                }
+                //else: currently a count is made whith the filtercondition as the where clause --> poor performance
+                else 
+                {
+                    selectRelevance = selectRelevance.cell();
+
+                    if(selectRelevance > 0)
+                        res = true;
+                }
+            }
+            if(res == true)
+            {
+                checkedFilterObj[classificationTypeFilter] = true;
+            }
+            else
+            {    
+                checkedFilterObj[classificationTypeFilter] = false;
+                res = false;
+            }
+        }
     }
+    else
+        res = true;
+        
+    return res;
+}
 
-    var storedClassification = newSelect("CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID, CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE ")
-    .from("CLASSIFICATIONSTORAGE")
-    .where("CLASSIFICATIONSTORAGE.OBJECT_ROWID", objectRowIdParam)
-    .arrayRow();
+/**
+ * Builds the Array using stored classification datasets;
+ * returns true after pushing into resultSet and false if there are no persistent datasets for the current object
+ */
+function _buildTreeFromPersistetData()
+{
+    var treeBuilt = false;
+    var maxPercents = newSelect("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID, max(CLASSIFICATIONSCORE.SCOREPERCENT)/100")
+                                .from("CLASSIFICATIONSCORE")
+                                .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID")
+                                .where("CLASSIFICATIONTYPE.OBJECT_TYPE", objectTypeParam)
+                                .groupBy("CLASSIFICATIONTYPE_ID")
+                                .table();
+
+
+    //this is the main select for the data
+    select = newSelect("CLASSIFICATION.CLASSIFICATIONTYPE_ID, CLASSIFICATION.CLASSIFICATIONID, CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, \n\
+                                CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONTYPE.SCORETYPE, CLASSIFICATION.SCOREPOINTS, CLASSIFICATION.VALUE, \n\
+                                CLASSIFICATIONSCORE.TITLE, CLASSIFICATIONTYPE.SCOREPOINTS")
+                            .from("CLASSIFICATIONTYPE")
+                            .leftJoin("CLASSIFICATION", "CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATION.CLASSIFICATIONTYPE_ID")
+                            .leftJoin("CLASSIFICATIONGROUP", "CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID = CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID")
+                            .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID = CLASSIFICATION.VALUE")
+                            .where("CLASSIFICATION.OBJECT_TYPE", objectTypeParam)
+                            .and("CLASSIFICATION.OBJECT_ROWID", objectRowIdParam)
+                            .orderBy("CLASSIFICATIONGROUP.SORTING, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID")
+
+
+
+    /* After loading the data from the database some preparation for the record container is done like translating display values into the 
+     * correct locale or calculating some values
+     */
+    //declaration needs to be separated because if declaration is done in the deconstructioning the IDE (designer) autocomplete does not work anymore
+    var typeId, classificationId, groupId, classificationGroupTitle, classificationTypeScoreType
+        , classificationScorePoints, classificationValue, valueDisplayValue, uid, classificationTypeScorePoints, maxValue;
+    select.table().forEach(function (pRow){
+        //deconstructioning for easy access when the selected data changes
+        [typeId, classificationId, groupId, classificationGroupTitle, classificationTypeScoreType, 
+            classificationScorePoints, classificationValue, valueDisplayValue, classificationTypeScorePoints] = pRow;
+
+        uid = _UidEncoder.encode(typeId, objectRowIdParam, objectTypeParam);
+
+        if(translatedClassificationTypesObj[typeId] == undefined)
+        {
+            translatedClassificationTypesObj[typeId] = translate.text(classificationTypeScoreType)
+        }
+        classificationTypeScoreType = translatedClassificationTypesObj[typeId];
+        
+        if (valueDisplayValue)
+            valueDisplayValue = translate.text(valueDisplayValue);
+        if (classificationGroupTitle)
+            classificationGroupTitle = translate.text(classificationGroupTitle);
 
-    var table = "CLASSIFICATIONSTORAGE";
-    var columns = ["CLASSIFICATIONVALUE"];
-    var values = [calculatedClassification];
+        for (i = 0; i < maxPercents.length; i++) {
+            if(typeId == maxPercents[i][0])
+            {
+                maxValue = classificationTypeScorePoints*maxPercents[i][1];
+                break;
+            }
+        }
+        if(bestPossibleValuesObj[groupId] == undefined)
+            bestPossibleValuesObj[groupId] = 0;
+        bestPossibleValuesObj[groupId] = eMath.addDec(bestPossibleValuesObj[groupId], maxValue)
 
-    if(storedClassification[1] != undefined && calculatedClassification != storedClassification[1]) //Update the stored classification if the freshly calculated one differs
-        newWhere("CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID", storedClassification[0]).updateData(true, table, columns, null, values);
+        if(achievedGroupScoresObj[groupId] == undefined)
+        {
+            achievedGroupScoresObj[groupId] = 0
+            classificationGroups.push(groupId)
+        }
+        if(classificationScorePoints != undefined || classificationScorePoints != "")
+            achievedGroupScoresObj[groupId] = eMath.addDec(Number(achievedGroupScoresObj[groupId]), Number(classificationScorePoints));
+        
+        treeBuilt = true;
+        resultSet.push([uid, typeId, classificationId, groupId, classificationGroupTitle, classificationTypeScoreType, 
+            classificationScorePoints, classificationValue, valueDisplayValue, maxValue]);
+    });
+    return treeBuilt;
+}
+
+/**
+ * selects maxScoresArray and builds maxScoresObj (maxScoresObj[classificationTypeId] = maxScorePercent)
+ */
+function _buildMaxScore()
+{
+    var maxScoresArray = newSelect("max(CLASSIFICATIONSCORE.SCOREPERCENT)/100, CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID")
+                                        .from("CLASSIFICATIONSCORE")
+                                        .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID")
+                                        .where("CLASSIFICATIONTYPE.OBJECT_TYPE", objectTypeParam)
+                                        .groupBy("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID")
+                                        .table();
+
+    for (i = 0; i < maxScoresArray.length; i++) 
+    {
+        maxScoresObj[maxScoresArray[i][1]] = maxScoresArray[i][0]; //build maxScoresObj using maxScoresArray (easier acces later)
+    }
 }
\ No newline at end of file
diff --git a/entity/Classification_entity/recordcontainers/jdito/onUpdate.js b/entity/Classification_entity/recordcontainers/jdito/onUpdate.js
index a8f0f8ad9849604d27646572f35229f8eb8c212d..cae77afa19642fa2f242928af66a796cb1141be7 100644
--- a/entity/Classification_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/Classification_entity/recordcontainers/jdito/onUpdate.js
@@ -1,35 +1,11 @@
-import("Classification_lib");
-import("system.neon");
-import("system.util");
 import("Sql_lib");
-import("system.db");
 import("system.vars");
 
 var changed = vars.get("$local.changed");
-
-// check if it already exists. Else it only exists as ScoreType but has no Classification-Entry
-if (vars.get("$field.CLASSIFICATIONID"))
-{
-    if (vars.get("$field.CLASSIFICATIONSCORE_ID"))
-    {
-        newWhere("CLASSIFICATION.CLASSIFICATIONID", "$field.CLASSIFICATIONID")
-            .updateFields({"CLASSIFICATIONSCORE_ID" : vars.get("$field.CLASSIFICATIONSCORE_ID")});
-    }
-    else
-    {
-        newWhere("CLASSIFICATION.CLASSIFICATIONID", "$field.CLASSIFICATIONID").deleteData();
-    }
-}
-else if (vars.get("$field.CLASSIFICATIONSCORE_ID"))
+if(changed)
 {
-    var newId = util.getNewUUID();
-    db.insertData("CLASSIFICATION", ["CLASSIFICATIONID", "OBJECT_TYPE", "OBJECT_ROWID", "CLASSIFICATIONTYPE_ID", "CLASSIFICATIONSCORE_ID"], null, [
-        newId,
-        vars.get("$field.OBJECT_TYPE"),
-        vars.get("$field.OBJECT_ROWID"),
-        vars.get("$field.CLASSIFICATIONTYPE_ID"),
-        vars.get("$field.CLASSIFICATIONSCORE_ID"),
-    ]);
-    
-    neon.setFieldValue("$field.CLASSIFICATIONID", newId);
+    newWhere("CLASSIFICATION.CLASSIFICATIONID", "$field.CLASSIFICATIONID")
+        .updateFields({"VALUE" : vars.get("$field.VALUE")
+                        ,"SCOREPOINTS" : vars.get("$field.Info.displayValue").slice(0, vars.get("$field.Info.displayValue").indexOf("/"))
+                        });
 }
\ No newline at end of file
diff --git a/entity/CommRestriction_Entity/CommRestriction_Entity.aod b/entity/CommRestriction_Entity/CommRestriction_Entity.aod
index 102c450de9e00d97a4f3e8329bc4d5b528787b1f..b1604aa94b0cfb68fd202ff113e3586b76268cfa 100644
--- a/entity/CommRestriction_Entity/CommRestriction_Entity.aod
+++ b/entity/CommRestriction_Entity/CommRestriction_Entity.aod
@@ -1,9 +1,11 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>CommRestriction_Entity</name>
+  <title>Advertising ban</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/CommRestriction_Entity/documentation.adoc</documentation>
-  <title>Advertising ban</title>
+  <contentTitleProcess>%aditoprj%/entity/CommRestriction_Entity/contentTitleProcess.js</contentTitleProcess>
+  <contentTitleProcess>%aditoprj%/entity/CommRestriction_Entity/contentTitleProcess.js</contentTitleProcess>
   <titlePlural>Advertising bans</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -67,8 +69,8 @@
           <expose v="false" />
         </entityParameter>
         <entityParameter>
-          <name>ExcludedKeyIdsSubquery_param</name>
-          <valueProcess>%aditoprj%/entity/CommRestriction_Entity/entityfields/commrestrictionmedium/children/excludedkeyidssubquery_param/valueProcess.js</valueProcess>
+          <name>BlacklistIds_param</name>
+          <valueProcess>%aditoprj%/entity/CommRestriction_Entity/entityfields/commrestrictionmedium/children/blacklistids_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -123,17 +125,11 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>d02c4bb0-c0aa-46fa-bf1b-4bcc44aeb012</name>
-          <tableName>COMMRESTRICTION</tableName>
-          <primaryKey>COMMRESTRICTIONID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <onDBInsert>%aditoprj%/entity/CommRestriction_Entity/recordcontainers/db/onDBInsert.js</onDBInsert>
+      <onDBUpdate>%aditoprj%/entity/CommRestriction_Entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
+      <onDBDelete>%aditoprj%/entity/CommRestriction_Entity/recordcontainers/db/onDBDelete.js</onDBDelete>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>COMMRESTRICTIONID.value</name>
@@ -168,6 +164,15 @@
           <expression>%aditoprj%/entity/CommRestriction_Entity/recordcontainers/db/recordfieldmappings/medium.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>d02c4bb0-c0aa-46fa-bf1b-4bcc44aeb012</name>
+          <tableName>COMMRESTRICTION</tableName>
+          <primaryKey>COMMRESTRICTIONID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/CommRestriction_Entity/contentTitleProcess.js b/entity/CommRestriction_Entity/contentTitleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b959e2abda60ee4ced3a7efe1281a0727eeff0f2
--- /dev/null
+++ b/entity/CommRestriction_Entity/contentTitleProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.vars");
+import("system.result");
+
+result.string(translate.text("Advertising ban") + " " + translate.text(vars.get("$field.MEDIUM")));
\ No newline at end of file
diff --git a/entity/CommRestriction_Entity/entityfields/commrestrictionmedium/children/blacklistids_param/valueProcess.js b/entity/CommRestriction_Entity/entityfields/commrestrictionmedium/children/blacklistids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c1f39ed63d29e2c0be655f3a075b7cd45cc6010b
--- /dev/null
+++ b/entity/CommRestriction_Entity/entityfields/commrestrictionmedium/children/blacklistids_param/valueProcess.js
@@ -0,0 +1,11 @@
+import("system.vars");
+import("Sql_lib");
+import("system.result");
+
+var alreadyUsedMediums = new SqlBuilder()
+    .select("MEDIUM")
+    .from("COMMRESTRICTION")
+    .where("COMMRESTRICTION.CONTACT_ID", vars.get("$field.CONTACT_ID"))
+    .arrayColumn();
+
+result.string(JSON.stringify(alreadyUsedMediums));
\ No newline at end of file
diff --git a/entity/CommRestriction_Entity/entityfields/commrestrictionmedium/children/excludedkeyidssubquery_param/valueProcess.js b/entity/CommRestriction_Entity/entityfields/commrestrictionmedium/children/excludedkeyidssubquery_param/valueProcess.js
deleted file mode 100644
index 50167db735b55a82144eadc0e440f38b57ce6de7..0000000000000000000000000000000000000000
--- a/entity/CommRestriction_Entity/entityfields/commrestrictionmedium/children/excludedkeyidssubquery_param/valueProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.question");
-import("system.vars");
-import("Sql_lib");
-import("system.result");
-
-var contactId = vars.get("$field.CONTACT_ID");
-var alreadyUsedMediums = new SqlBuilder().select("MEDIUM").from("COMMRESTRICTION").where("COMMRESTRICTION.CONTACT_ID", contactId);
-
-result.string(alreadyUsedMediums);
\ No newline at end of file
diff --git a/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js b/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js
index 4a714c57054e0ee4bd91998185d6157db848cb7f..035d01b5f3e1adb6f2dc0f6a9b1a46153cb5b327 100644
--- a/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js
+++ b/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js
@@ -4,5 +4,4 @@ import("Sql_lib");
 
 var cond = newWhereIfSet("COMMRESTRICTION.CONTACT_ID", "$param.ContactId_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/CommRestriction_Entity/recordcontainers/db/onDBDelete.js b/entity/CommRestriction_Entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ff91a5eb319120b527776868367d3cdb0f445f1
--- /dev/null
+++ b/entity/CommRestriction_Entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,3 @@
+import("Workflow_lib");
+
+WorkflowSignalSender.deleted();
\ No newline at end of file
diff --git a/entity/CommRestriction_Entity/recordcontainers/db/onDBInsert.js b/entity/CommRestriction_Entity/recordcontainers/db/onDBInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..54f0349c9f1ddaab6b25f85f758d52928df41847
--- /dev/null
+++ b/entity/CommRestriction_Entity/recordcontainers/db/onDBInsert.js
@@ -0,0 +1,3 @@
+import("Workflow_lib");
+
+WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/CommRestriction_Entity/recordcontainers/db/onDBUpdate.js b/entity/CommRestriction_Entity/recordcontainers/db/onDBUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..2e53f3cad9a9edf21cc5bbc6fdecc00c5001dfee
--- /dev/null
+++ b/entity/CommRestriction_Entity/recordcontainers/db/onDBUpdate.js
@@ -0,0 +1,3 @@
+import("Workflow_lib");
+
+WorkflowSignalSender.updated();
\ No newline at end of file
diff --git a/entity/Communication_entity/Communication_entity.aod b/entity/Communication_entity/Communication_entity.aod
index f931c15531a870c0828c7706d110e39542b74bbd..fa0187084e458d0756e6a7f8402b4504bba23bb5 100644
--- a/entity/Communication_entity/Communication_entity.aod
+++ b/entity/Communication_entity/Communication_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Communication_entity</name>
+  <title>Communication</title>
   <description>former Comm</description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Communication_entity/documentation.adoc</documentation>
-  <title>Communication</title>
   <contentTitleProcess>%aditoprj%/entity/Communication_entity/contentTitleProcess.js</contentTitleProcess>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -63,27 +63,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <name>AllCommunications</name>
       <documentation>%aditoprj%/entity/Communication_entity/entityfields/allcommunications/documentation.adoc</documentation>
       <recordContainer>db</recordContainer>
-      <children>
-        <entityParameter>
-          <name>CommCategory_param</name>
-          <expose v="true" />
-          <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
-        </entityParameter>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <expose v="true" />
-          <description>This parameter is used for specifing a related "CONTACTID" to a COMMUNICATION-entry. 
-Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description>
-        </entityParameter>
-        <entityParameter>
-          <name>Address_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>AdditionalContactIds_param</name>
-          <expose v="false" />
-        </entityParameter>
-      </children>
       <dependencies>
         <entityDependency>
           <name>070b2457-3766-4c8a-b43f-a2bf7c9ef638</name>
@@ -110,16 +89,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
-    </entityProvider>
-    <entityProvider>
-      <name>PhoneCommunications</name>
-      <documentation>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/documentation.adoc</documentation>
-      <recordContainer>db</recordContainer>
       <children>
         <entityParameter>
           <name>CommCategory_param</name>
-          <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/children/commcategory_param/valueProcess.js</valueProcess>
-          <expose v="false" />
+          <expose v="true" />
           <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
         </entityParameter>
         <entityParameter>
@@ -130,14 +103,18 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
         </entityParameter>
         <entityParameter>
           <name>Address_param</name>
-          <expose v="true" />
-          <mandatory v="false" />
+          <expose v="false" />
         </entityParameter>
         <entityParameter>
           <name>AdditionalContactIds_param</name>
           <expose v="false" />
         </entityParameter>
       </children>
+    </entityProvider>
+    <entityProvider>
+      <name>PhoneCommunications</name>
+      <documentation>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/documentation.adoc</documentation>
+      <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
           <name>7382242a-aa18-4a31-ab77-69a79f2b97b8</name>
@@ -152,16 +129,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
-    </entityProvider>
-    <entityProvider>
-      <name>EmailCommunications</name>
-      <documentation>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/documentation.adoc</documentation>
-      <recordContainer>db</recordContainer>
       <children>
         <entityParameter>
           <name>CommCategory_param</name>
-          <title></title>
-          <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/children/commcategory_param/valueProcess.js</valueProcess>
+          <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/children/commcategory_param/valueProcess.js</valueProcess>
           <expose v="false" />
           <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
         </entityParameter>
@@ -173,13 +144,19 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
         </entityParameter>
         <entityParameter>
           <name>Address_param</name>
-          <expose v="false" />
+          <expose v="true" />
+          <mandatory v="false" />
         </entityParameter>
         <entityParameter>
           <name>AdditionalContactIds_param</name>
           <expose v="false" />
         </entityParameter>
       </children>
+    </entityProvider>
+    <entityProvider>
+      <name>EmailCommunications</name>
+      <documentation>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/documentation.adoc</documentation>
+      <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
           <name>ecfbf518-fe92-4661-8ebe-e2d3c8d259e1</name>
@@ -206,6 +183,29 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
+      <children>
+        <entityParameter>
+          <name>CommCategory_param</name>
+          <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/children/commcategory_param/valueProcess.js</valueProcess>
+          <expose v="false" />
+          <title></title>
+          <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
+        </entityParameter>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <expose v="true" />
+          <description>This parameter is used for specifing a related "CONTACTID" to a COMMUNICATION-entry. 
+Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description>
+        </entityParameter>
+        <entityParameter>
+          <name>Address_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>AdditionalContactIds_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
     </entityProvider>
     <entityParameter>
       <name>CommCategory_param</name>
@@ -219,6 +219,11 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
     </entityParameter>
     <entityConsumer>
       <name>KeywordMediums</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
@@ -226,11 +231,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <expose v="false" />
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>USER_NEW</name>
@@ -289,28 +289,13 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Communication_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Communication_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBInsert>%aditoprj%/entity/Communication_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Communication_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
-      <linkInformation>
-        <linkInformation>
-          <name>5f6cd42e-34d5-4a1c-b9f0-8c87bf914f22</name>
-          <tableName>COMMUNICATION</tableName>
-          <primaryKey>COMMUNICATIONID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>fd493a1b-3ff1-4e7e-8d21-0f9f28824e9e</name>
-          <tableName>AB_KEYWORD_ENTRY</tableName>
-          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <onDBDelete>%aditoprj%/entity/Communication_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ADDR.value</name>
@@ -355,6 +340,22 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <recordfield>COMMUNICATION.DATE_EDIT</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>5f6cd42e-34d5-4a1c-b9f0-8c87bf914f22</name>
+          <tableName>COMMUNICATION</tableName>
+          <primaryKey>COMMUNICATIONID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>fd493a1b-3ff1-4e7e-8d21-0f9f28824e9e</name>
+          <tableName>AB_KEYWORD_ENTRY</tableName>
+          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Communication_entity/entityfields/addr/contentTypeProcess.js b/entity/Communication_entity/entityfields/addr/contentTypeProcess.js
index 25141c53776680b9c9c714926c752fda5419deaa..249c9ed0275f8f6dc97e9986016da4b85d48501f 100644
--- a/entity/Communication_entity/entityfields/addr/contentTypeProcess.js
+++ b/entity/Communication_entity/entityfields/addr/contentTypeProcess.js
@@ -4,7 +4,6 @@ import("system.vars");
 import("system.result");
 import("system.neon");
 
-//TODO: add constants for contentTypes #1022547
 var medium = vars.get("$field.MEDIUM_ID");
 var contentType;
 if (medium)
diff --git a/entity/Communication_entity/recordcontainers/db/conditionProcess.js b/entity/Communication_entity/recordcontainers/db/conditionProcess.js
index 39f447f1fe79e21b1235025d2c5859cee0a33c23..ec18465d42f9bcc87f5b557653b021a94438c14c 100644
--- a/entity/Communication_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Communication_entity/recordcontainers/db/conditionProcess.js
@@ -13,5 +13,4 @@ if (vars.getString("$param.CommMediumIds_param"))
     var mediumIds = JSON.parse(vars.getString("$param.CommMediumIds_param"));
     cond.andIfSet("COMMUNICATION.MEDIUM_ID", mediumIds, SqlBuilder.IN());
 }
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js b/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js
index 611aa890f7584912618700b429c0a1415e50cb6d..bafe6c4d6176c505dd8e202d89ae7544d0bd4bb9 100644
--- a/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js
+++ b/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js
@@ -1,8 +1,10 @@
-import("system.logging");
 import("Sql_lib");
 import("system.result");
 import("KeywordRegistry_basic");
 
-result.string("COMMUNICATION " + new SqlBuilder().leftJoin("AB_KEYWORD_ENTRY", newWhere("COMMUNICATION.MEDIUM_ID = AB_KEYWORD_ENTRY.KEYID")
-                                                                .and("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.communicationMedium()))
-                                                                .toString());
\ No newline at end of file
+result.string(new SqlBuilder()
+    .from("COMMUNICATION")
+    .leftJoin("AB_KEYWORD_ENTRY", newWhere("COMMUNICATION.MEDIUM_ID = AB_KEYWORD_ENTRY.KEYID")
+        .and("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.communicationMedium()))
+    .toString()
+);
\ No newline at end of file
diff --git a/entity/Communication_entity/recordcontainers/db/onDBDelete.js b/entity/Communication_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ff91a5eb319120b527776868367d3cdb0f445f1
--- /dev/null
+++ b/entity/Communication_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,3 @@
+import("Workflow_lib");
+
+WorkflowSignalSender.deleted();
\ No newline at end of file
diff --git a/entity/Communication_entity/recordcontainers/db/onDBInsert.js b/entity/Communication_entity/recordcontainers/db/onDBInsert.js
index bb0e24a57917452a50f6549918c678ceb98c2228..5497aac10e4c84e9d6f63bdd28012b0bfe75cc06 100644
--- a/entity/Communication_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Communication_entity/recordcontainers/db/onDBInsert.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("system.logging");
 import("system.util");
 import("system.db");
@@ -43,4 +44,6 @@ if (vars.exists("$param.AdditionalContactIds_param") && vars.get("$param.Additio
         new StandardObject("Communication", row[3][0], "Person", row[3][2])
             .onCommunicationInsert(row[3][3]);
     })
-}
\ No newline at end of file
+}
+
+WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/Communication_entity/recordcontainers/db/onDBUpdate.js b/entity/Communication_entity/recordcontainers/db/onDBUpdate.js
index d3d0371cec1d21f9cb927d351939dc5beac8cb99..da680f82c23c27da4f2cfb65488df9b1426b77bc 100644
--- a/entity/Communication_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Communication_entity/recordcontainers/db/onDBUpdate.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("DataPrivacy_lib");
 import("system.vars");
 import("StandardObject_lib");
@@ -10,4 +11,6 @@ if (rowdata["COMMUNICATION.CONTACT_ID"] != null)
     standard.onCommunicationUpdate(rowdata["COMMUNICATION.MEDIUM_ID"]);
 }
   
-DataPrivacyUtils.notifyNeedDataPrivacyUpdate(rowdata["COMMUNICATION.CONTACT_ID"], vars.get("$param.ShowDsgvoMessage_param"));
\ No newline at end of file
+DataPrivacyUtils.notifyNeedDataPrivacyUpdate(rowdata["COMMUNICATION.CONTACT_ID"], vars.get("$param.ShowDsgvoMessage_param"));
+
+WorkflowSignalSender.updated();
\ No newline at end of file
diff --git a/entity/Competition_entity/Competition_entity.aod b/entity/Competition_entity/Competition_entity.aod
index ac91f28ee4dbfaeaea563112aca8d9ae0bd288f3..bf268433896166578abaca1690ac9bf8828d0e21 100644
--- a/entity/Competition_entity/Competition_entity.aod
+++ b/entity/Competition_entity/Competition_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Competition_entity</name>
+  <title>Competition</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Competition_entity/documentation.adoc</documentation>
-  <title>Competition</title>
   <titlePlural>Competition</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -174,7 +174,7 @@
       <name>KeywordPhases</name>
       <dependency>
         <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
+        <entityName>ChecklistEntryValue_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
@@ -298,25 +298,9 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/Competition_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Competition_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>f9598278-9933-4976-85be-5db9c213bf6f</name>
-          <tableName>COMPETITION</tableName>
-          <primaryKey>COMPETITIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>d82df2c1-f8e7-4b78-b9d6-905ca653061c</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_CANCELLED.value</name>
@@ -374,15 +358,27 @@
           <name>PHASE.value</name>
           <recordfield>COMPETITION.PHASE</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>OBJECT_ROWID.displayValue</name>
-          <expression>%aditoprj%/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>COMPETITIONID.value</name>
           <recordfield>COMPETITION.COMPETITIONID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>f9598278-9933-4976-85be-5db9c213bf6f</name>
+          <tableName>COMPETITION</tableName>
+          <primaryKey>COMPETITIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>d82df2c1-f8e7-4b78-b9d6-905ca653061c</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtensionSet>
           <name>Attribute_filter</name>
diff --git a/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js
index 8b080bceea92c146a676b0f33cc7cb87d4e86b9d..95c4eea5367140dc2d81e470ba0607adf52f07c1 100644
--- a/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js
+++ b/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js
@@ -7,5 +7,5 @@ import("Context_lib");
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) {
     result.string("");
 } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
-    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
+    result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")));
 }
\ No newline at end of file
diff --git a/entity/Competition_entity/recordcontainers/db/conditionProcess.js b/entity/Competition_entity/recordcontainers/db/conditionProcess.js
index 7fdde447ee0c40d4ad260e0392be5c9efe6e345b..79b1357d5be15475ab5c0ec0b2f3b95e8b42d12b 100644
--- a/entity/Competition_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Competition_entity/recordcontainers/db/conditionProcess.js
@@ -6,5 +6,4 @@ var cond = newWhere()
             .andIfSet("COMPETITION.OBJECT_ROWID", "$param.ObjectRowId_param")
             .andIfSet("COMPETITION.OBJECT_TYPE", "$param.ObjectType_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
diff --git a/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
deleted file mode 100644
index fb69d484cfa8fc6aa1c45987d94b793c35efd20a..0000000000000000000000000000000000000000
--- a/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("Context_lib");
-
-result.string(ContextUtils.getNameSubselectSql("COMPETITION.OBJECT_TYPE", "COMPETITION.OBJECT_ROWID"))
\ No newline at end of file
diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod
index 41a386bd8dce1d009f4b1887e118adb79b9165cc..08a76c0db8ced7f5d5731edf0f5437bf788451e6 100644
--- a/entity/Contact_entity/Contact_entity.aod
+++ b/entity/Contact_entity/Contact_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Contact_entity</name>
+  <title>Contact</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Contact_entity/documentation.adoc</documentation>
-  <title>Contact</title>
   <grantCreateProcess>%aditoprj%/entity/Contact_entity/grantCreateProcess.js</grantCreateProcess>
   <grantUpdateProcess>%aditoprj%/entity/Contact_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/Contact_entity/grantDeleteProcess.js</grantDeleteProcess>
@@ -255,38 +255,41 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityConsumer>
+      <name>Attributes</name>
+      <onValidation>%aditoprj%/entity/Contact_entity/entityfields/attributes/onValidation.js</onValidation>
+      <children>
+        <entityParameter>
+          <name>ShowDsgvoMessage_param</name>
+          <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/attributes/children/showdsgvomessage_param/valueProcess.js</valueProcess>
+          <mandatory v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelation_entity</entityName>
+        <fieldName>AttributeRelations</fieldName>
+      </dependency>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/Contact_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Contact_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Contact_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBInsert>%aditoprj%/entity/Contact_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
+      <onDBUpdate>%aditoprj%/entity/Contact_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Contact_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>86ded52f-1b55-4d3d-b89d-23c465f20566</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>61f92ee5-db46-4e17-a90d-02223e0df942</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>e74fd752-ef38-414d-adda-11e21258c5d4</name>
-          <tableName>PERSON</tableName>
-          <primaryKey>PERSONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CONTACTID.value</name>
@@ -369,6 +372,29 @@
           <expression>%aditoprj%/entity/Contact_entity/recordcontainers/db/recordfieldmappings/department.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>86ded52f-1b55-4d3d-b89d-23c465f20566</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>61f92ee5-db46-4e17-a90d-02223e0df942</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>e74fd752-ef38-414d-adda-11e21258c5d4</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Contact_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js b/entity/Contact_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7b6137b4d105e9ba592cf8ef6e796fb838a32b09
--- /dev/null
+++ b/entity/Contact_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CONTACTID"));
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/attributes/children/objecttype_param/valueProcess.js b/entity/Contact_entity/entityfields/attributes/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..eabd0960cd32e6ab2deff9c9985df6453a55d82b
--- /dev/null
+++ b/entity/Contact_entity/entityfields/attributes/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string("Person");
diff --git a/entity/Contact_entity/entityfields/attributes/children/showdsgvomessage_param/valueProcess.js b/entity/Contact_entity/entityfields/attributes/children/showdsgvomessage_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fce9fde135bfde9221a9956f545862641098ff7c
--- /dev/null
+++ b/entity/Contact_entity/entityfields/attributes/children/showdsgvomessage_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+result.string(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW);
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/attributes/onValidation.js b/entity/Contact_entity/entityfields/attributes/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..48155ac1272fca45d78bbcd34dab4488bed86dea
--- /dev/null
+++ b/entity/Contact_entity/entityfields/attributes/onValidation.js
@@ -0,0 +1,6 @@
+import("Context_lib");
+import("system.vars");
+import("Attribute_lib");
+import("system.result");
+
+result.string(AttributeRelationUtils.validateAttributeCount(vars.get("$field.CONTACTID"), "Person", "Attributes"));
\ No newline at end of file
diff --git a/entity/Contact_entity/recordcontainers/db/conditionProcess.js b/entity/Contact_entity/recordcontainers/db/conditionProcess.js
index 6f1b0fc9fbbbe71f274f50189be2dfb360c306f2..80af2eaae28bdb8c9e2f0c707256a507acd83d67 100644
--- a/entity/Contact_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Contact_entity/recordcontainers/db/conditionProcess.js
@@ -7,5 +7,4 @@ var cond = newWhere()
             .andIfSet("CONTACT.CONTACTID", "$param.OwnContactId_param", SqlBuilder.NOT_EQUAL())
             .andIfSet("CONTACT.PERSON_ID", "$param.PersonId_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Contact_entity/recordcontainers/db/onDBInsert.js b/entity/Contact_entity/recordcontainers/db/onDBInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..54f0349c9f1ddaab6b25f85f758d52928df41847
--- /dev/null
+++ b/entity/Contact_entity/recordcontainers/db/onDBInsert.js
@@ -0,0 +1,3 @@
+import("Workflow_lib");
+
+WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/Contact_entity/recordcontainers/db/onDBUpdate.js b/entity/Contact_entity/recordcontainers/db/onDBUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..2e53f3cad9a9edf21cc5bbc6fdecc00c5001dfee
--- /dev/null
+++ b/entity/Contact_entity/recordcontainers/db/onDBUpdate.js
@@ -0,0 +1,3 @@
+import("Workflow_lib");
+
+WorkflowSignalSender.updated();
\ No newline at end of file
diff --git a/entity/Context_entity/Context_entity.aod b/entity/Context_entity/Context_entity.aod
index c82aab16b52506b32800ef2f9635b260fffa3d6b..96796bb96d331a2252b3414e454833e28b1c5732 100644
--- a/entity/Context_entity/Context_entity.aod
+++ b/entity/Context_entity/Context_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Context_entity</name>
+  <title>Private person</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Context_entity/documentation.adoc</documentation>
-  <title>Private person</title>
   <contentTitleProcess>%aditoprj%/entity/Context_entity/contentTitleProcess.js</contentTitleProcess>
   <titlePlural>Private persons</titlePlural>
   <recordContainer>jdito</recordContainer>
@@ -108,11 +108,6 @@
         </entityParameter>
       </children>
     </entityProvider>
-    <entityParameter>
-      <name>GetAllContexts_param</name>
-      <expose v="true" />
-      <description>PARAMETER</description>
-    </entityParameter>
     <entityParameter>
       <name>InvertBlacklist_param</name>
       <expose v="true" />
@@ -158,6 +153,12 @@
           <fieldName>Contexts</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>f69007c7-d495-42d2-9a12-6426c24771a4</name>
+          <entityName>Observation_entity</entityName>
+          <fieldName>Contexts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
     </entityProvider>
     <entityProvider>
diff --git a/entity/Context_entity/recordcontainers/jdito/contentProcess.js b/entity/Context_entity/recordcontainers/jdito/contentProcess.js
index 25682212551e2b430d137096dd04818e97fbfb5f..1bdca6e2fa31e0c1fb90a38136dbc6af182d38b0 100644
--- a/entity/Context_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Context_entity/recordcontainers/jdito/contentProcess.js
@@ -4,7 +4,6 @@ import("Context_lib");
 
 var blacklist
 var invertBlacklist
-var filterContexts = vars.get("$param.GetAllContexts_param") != "true";
 var whitelist;
 
 if (vars.get("$local.idvalues") && vars.get("$local.idvalues").length > 0)
@@ -23,4 +22,4 @@ else
     invertBlacklist = vars.get("$param.InvertBlacklist_param") == "true";
 }
 
-result.object(ContextUtils.getContexts(filterContexts, blacklist, invertBlacklist));
\ No newline at end of file
+result.object(ContextUtils.getContexts(blacklist, invertBlacklist));
\ No newline at end of file
diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod
index 273e731918f9e43fbd9259ff07c9dc9ec8123887..3e3262421190782abc4d26f6b958f51acb4dc26b 100644
--- a/entity/Contract_entity/Contract_entity.aod
+++ b/entity/Contract_entity/Contract_entity.aod
@@ -1,11 +1,12 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Contract_entity</name>
+  <title>Contract</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Contract_entity/documentation.adoc</documentation>
-  <title>Contract</title>
   <grantDeleteProcess>%aditoprj%/entity/Contract_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Contract_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/Contract_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <afterUiInit>%aditoprj%/entity/Contract_entity/afterUiInit.js</afterUiInit>
   <onValidation>%aditoprj%/entity/Contract_entity/onValidation.js</onValidation>
   <useFavorites v="true" />
@@ -14,6 +15,27 @@
   <titlePlural>Contracts</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Contract_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Contract_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityField>
       <name>CONTRACTCODE</name>
       <documentation>%aditoprj%/entity/Contract_entity/entityfields/contractcode/documentation.adoc</documentation>
@@ -101,6 +123,7 @@
     </entityField>
     <entityProvider>
       <name>Contracts</name>
+      <documentation>%aditoprj%/entity/Contract_entity/entityfields/contracts/documentation.adoc</documentation>
       <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
@@ -402,11 +425,16 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>DATE_NEW</name>
+    </entityField>
+    <entityField>
+      <name>ACTIVE</name>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <maximumDbRows v="0" />
       <fromClauseProcess>%aditoprj%/entity/Contract_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Contract_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
@@ -414,36 +442,7 @@
       <onDBInsert>%aditoprj%/entity/Contract_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Contract_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Contract_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>78925203-f1c5-4e7e-9424-1a23500c655d</name>
-          <tableName>CONTRACT</tableName>
-          <primaryKey>CONTRACTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>0637150d-c535-41ce-85f3-e9a6b980d195</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>9ba7de4b-999c-44cc-95ee-0dbdcc35bf0f</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>748d1280-6dd2-4ada-837e-b331166e78d3</name>
-          <tableName>PERSON</tableName>
-          <primaryKey>PERSONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CONTRACTCODE.value</name>
@@ -544,7 +543,45 @@
           <recordfield>CONTRACT.CONTRACTID</recordfield>
           <aggregateType>COUNT</aggregateType>
         </aggregateFieldDbMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>CONTRACT.CONTRACTSTART</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ACTIVE.value</name>
+          <expression>%aditoprj%/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>78925203-f1c5-4e7e-9424-1a23500c655d</name>
+          <tableName>CONTRACT</tableName>
+          <primaryKey>CONTRACTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>0637150d-c535-41ce-85f3-e9a6b980d195</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>9ba7de4b-999c-44cc-95ee-0dbdcc35bf0f</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>748d1280-6dd2-4ada-837e-b331166e78d3</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtensionSet>
           <name>Attribute_filter</name>
diff --git a/entity/Contract_entity/contentDescriptionProcess.js b/entity/Contract_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c1836a1fcb2ff3413849aca20c8bc8912de21a53
--- /dev/null
+++ b/entity/Contract_entity/contentDescriptionProcess.js
@@ -0,0 +1,16 @@
+import("system.translate");
+import("system.datetime");
+import("system.vars");
+import("system.result");
+
+var res = [translate.text("Payment method") + ": " + vars.get("$field.PAYMENT.displayValue")];
+
+if(vars.get("$field.CONTRACTDUE"))
+    res.push(translate.text("Next due date") + ": " + datetime.toDate(vars.get("$field.CONTRACTDUE"), translate.text("dd.MM.yyyy")));
+
+if(vars.get("$field.CONTRACTEND"))
+    res.push(translate.text("Contract expiry date") + ": " + datetime.toDate(vars.get("$field.CONTRACTEND"), translate.text("dd.MM.yyyy")))
+                      
+res.push(translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy")));
+
+result.string(res.join(" | "));
\ No newline at end of file
diff --git a/entity/Contract_entity/contentTitleProcess.js b/entity/Contract_entity/contentTitleProcess.js
index 302a1d406e496a03d1f78d114d81592e4cf79582..94a08f9ad5c27a46b15210f60b0b6e9f58cba875 100644
--- a/entity/Contract_entity/contentTitleProcess.js
+++ b/entity/Contract_entity/contentTitleProcess.js
@@ -1,4 +1,6 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.CONTRACTCODE_DISPLAY_fieldGroup"));
\ No newline at end of file
+var res = [vars.get("$field.CONTRACTCODE_DISPLAY_fieldGroup"), vars.get("$field.CONTRACTSTATUS.displayValue")];
+
+result.string(res.join(" | "));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contact_id/valueProcess.js b/entity/Contract_entity/entityfields/contact_id/valueProcess.js
index 1127220726ee436e1f878c4467fa29d976d6af80..0224ba1e7ab1fcf86c205e990ef2e3fd368c4218 100644
--- a/entity/Contract_entity/entityfields/contact_id/valueProcess.js
+++ b/entity/Contract_entity/entityfields/contact_id/valueProcess.js
@@ -1,7 +1,7 @@
 import("system.result");
 import("system.vars");
 
-if (vars.exists("$param.ContactId_param")) 
+if (vars.exists("$param.ContactId_param") && vars.get("$this.value") == null) 
 {
     result.string(vars.get("$param.ContactId_param"));
 }
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contracts/documentation.adoc b/entity/Contract_entity/entityfields/contracts/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..d329bb27a710b109b2a31416e72c432e1ac947ec
--- /dev/null
+++ b/entity/Contract_entity/entityfields/contracts/documentation.adoc
@@ -0,0 +1,3 @@
+= Contracts
+
+Provides the contracts that are linked with a contact.
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Contract_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/Contract_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Contract_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/Contract_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Contract_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/Contract_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Contract_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Contract_entity/recordcontainers/db/conditionProcess.js b/entity/Contract_entity/recordcontainers/db/conditionProcess.js
index 0fc49f960a068a0e10aa355fe661c104cb8db537..80390ca2afca4cb07cf9c4de21b819375b4601c6 100644
--- a/entity/Contract_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Contract_entity/recordcontainers/db/conditionProcess.js
@@ -5,5 +5,4 @@ import("Sql_lib");
 
 var cond = newWhereIfSet("CONTRACT.CONTACT_ID", "$param.ContactId_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString()); 
diff --git a/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..d788aeadb9234f464203300da1dac4661fcb9d11
--- /dev/null
+++ b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
@@ -0,0 +1,6 @@
+import("Context_lib");
+import("system.result");
+import("KeywordRegistry_basic");
+
+var activArr = [$KeywordRegistry.contractState$validLimited(), $KeywordRegistry.contractState$validUnlimited(), $KeywordRegistry.contractState$notSigned()];
+result.string(ContextUtils.buildActiveCaseWhen(activArr, "CONTRACT.CONTRACTSTATUS"));
\ No newline at end of file
diff --git a/entity/Countries_Entity/Countries_Entity.aod b/entity/Countries_Entity/Countries_Entity.aod
index 9a4408cb03cc9d0d4de39895c93611b24df313da..dd854efc611530e48d5e2dd0b2442754701db8fc 100644
--- a/entity/Countries_Entity/Countries_Entity.aod
+++ b/entity/Countries_Entity/Countries_Entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Countries_Entity</name>
+  <title>Countries</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Countries_Entity/documentation.adoc</documentation>
-  <title>Countries</title>
   <contentTitleProcess>%aditoprj%/entity/Countries_Entity/contentTitleProcess.js</contentTitleProcess>
   <iconId>VAADIN:FLAG</iconId>
   <recordContainer>db</recordContainer>
@@ -101,20 +101,11 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="false" />
       <orderClauseProcess>%aditoprj%/entity/Countries_Entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <alias>Data_alias</alias>
       <cacheType>GLOBAL</cacheType>
       <cacheKeyProcess>%aditoprj%/entity/Countries_Entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>cc219004-43fd-4a3f-bee0-be5e732c61f1</name>
-          <tableName>AB_COUNTRYINFO</tableName>
-          <primaryKey>ISO2</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ADDR_FORMAT.value</name>
@@ -149,6 +140,15 @@
           <recordfield>AB_COUNTRYINFO.FLAG</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>cc219004-43fd-4a3f-bee0-be5e732c61f1</name>
+          <tableName>AB_COUNTRYINFO</tableName>
+          <primaryKey>ISO2</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod
index 9a090c1ee2cc636fcc7b1dfe8a5651482b51f376..674803b125b89af582baac331f6db7261ae087f6 100644
--- a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod
+++ b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DSGVOInfo_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DSGVOInfo_entity/documentation.adoc</documentation>
@@ -165,17 +165,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>23dd4eb2-0ac4-406e-92e3-031f1342bd05</name>
-          <tableName>DSGVOINFO</tableName>
-          <primaryKey>DSGVOINFOID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CONTACT_ID.value</name>
@@ -210,6 +201,15 @@
           <expression>%aditoprj%/entity/DSGVOInfo_entity/recordcontainers/db/recordfieldmappings/guarantee.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>23dd4eb2-0ac4-406e-92e3-031f1342bd05</name>
+          <tableName>DSGVOINFO</tableName>
+          <primaryKey>DSGVOINFOID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js b/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js
index 0135f590498ce6e715386047a43ac6219af36a35..14a93daf75f5f4b3c32a037f7a98840a32adaa66 100644
--- a/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js
@@ -2,6 +2,5 @@ import("system.db");
 import("system.result");
 import("Sql_lib");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(newWhere("DSGVOINFO.CONTACT_ID", "$param.ContactId_param").toString())
                
\ No newline at end of file
diff --git a/entity/DSGVOReport_entity/DSGVOReport_entity.aod b/entity/DSGVOReport_entity/DSGVOReport_entity.aod
index b96cb3a3dbc480499bb71e154509700ae34bb4f9..b3482dff7d057f512eef04d6dfe882eba55cfe24 100644
--- a/entity/DSGVOReport_entity/DSGVOReport_entity.aod
+++ b/entity/DSGVOReport_entity/DSGVOReport_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DSGVOReport_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DSGVOReport_entity/documentation.adoc</documentation>
@@ -20,9 +20,9 @@
     </entityParameter>
     <entityParameter>
       <name>DSGVOInfo_param</name>
-      <title></title>
       <expose v="true" />
       <mandatory v="false" />
+      <title></title>
       <description></description>
     </entityParameter>
     <entityField>
diff --git a/entity/DSGVO_entity/DSGVO_entity.aod b/entity/DSGVO_entity/DSGVO_entity.aod
index 19cefc3a19e90adbc2a12a91fe584c93032a6554..be47ef0d4009d01d94464151a2e7ecf970b46d83 100644
--- a/entity/DSGVO_entity/DSGVO_entity.aod
+++ b/entity/DSGVO_entity/DSGVO_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DSGVO_entity</name>
+  <title>Data Privacy</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DSGVO_entity/documentation.adoc</documentation>
   <icon>VAADIN:LOCK</icon>
-  <title>Data Privacy</title>
   <siblings>
     <element>Address_entity</element>
     <element>Communication_entity</element>
@@ -92,8 +92,8 @@
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
-          <title></title>
           <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/keyworddsgvopurpose/children/containername_param/valueProcess.js</valueProcess>
+          <title></title>
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod b/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod
index 7b0b1dd8ef9bc50a75c65fe7b422dc6d06d6a575..a5e20a92430010b0dc20174dabb6df69d5fbe5c2 100644
--- a/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod
+++ b/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DefaultAdminView_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DefaultAdminView_entity/documentation.adoc</documentation>
@@ -19,17 +19,17 @@
     <entityConsumer>
       <name>Rows</name>
       <state>READONLY</state>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AdminViewRow_entity</entityName>
+        <fieldName>AdminViewRows</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>Rows_param</name>
           <valueProcess>%aditoprj%/entity/DefaultAdminView_entity/entityfields/rows/children/rows_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>AdminViewRow_entity</entityName>
-        <fieldName>AdminViewRows</fieldName>
-      </dependency>
     </entityConsumer>
     <entityParameter>
       <name>Uid_param</name>
diff --git a/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod b/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod
index 83aa32b97318445d0891b35c2443d6452e929739..858fe5c982aebdceca1d11bf68ab048984c8b6f2 100644
--- a/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod
+++ b/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DescriptionTranslation_entity</name>
+  <title>Description</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DescriptionTranslation_entity/documentation.adoc</documentation>
-  <title>Description</title>
   <titlePlural>Descriptions</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -81,17 +81,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>b12c4b68-b868-45fe-9f72-aa914a19382a</name>
-          <tableName>DESCRIPTIONTRANSLATION</tableName>
-          <primaryKey>DESCRIPTIONTRANSLATIONID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DESCRIPTION.value</name>
@@ -118,6 +109,15 @@
           <expression>%aditoprj%/entity/DescriptionTranslation_entity/recordcontainers/db/recordfieldmappings/lang.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>b12c4b68-b868-45fe-9f72-aa914a19382a</name>
+          <tableName>DESCRIPTIONTRANSLATION</tableName>
+          <primaryKey>DESCRIPTIONTRANSLATIONID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js b/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js
index 9b60a2f7aecaea90d458fba6ecff1b8f6aa41a7b..daa85fa01b438eb9728e27f28be4c808d7b25040 100644
--- a/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js
@@ -4,6 +4,5 @@ import("Sql_lib");
 var cond = newWhere()
             .andIfSet("DESCRIPTIONTRANSLATION.OBJECT_TYPE", "$param.ObjectType_param")
             .andIfSet("DESCRIPTIONTRANSLATION.OBJECT_ROWID", "$param.ObjectRowid_param");
-                       
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
+
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/DistrictContact_entity.aod b/entity/DistrictContact_entity/DistrictContact_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..a8f9c248146913e119e15a9e5eafd0f9eaa113da
--- /dev/null
+++ b/entity/DistrictContact_entity/DistrictContact_entity.aod
@@ -0,0 +1,309 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>DistrictContact_entity</name>
+  <title>District Contact</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:GLOBE</icon>
+  <iconIdProcess>%aditoprj%/entity/DistrictContact_entity/iconIdProcess.js</iconIdProcess>
+  <image>VAADIN:GLOBE</image>
+  <titlePlural>Supervisors</titlePlural>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>CONTACT_ID</name>
+      <title>Company</title>
+      <consumer>Organisations</consumer>
+      <groupable v="true" />
+      <linkedContext>Organisation</linkedContext>
+      <state>EDITABLE</state>
+      <stateProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/contact_id/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/contact_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>DISTRICT_ID</name>
+      <title>{$DISTRICT}</title>
+      <consumer>Districts</consumer>
+      <groupable v="true" />
+      <linkedContext>District</linkedContext>
+      <valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/district_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/district_id/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>ADVISER_CONTACT_ID</name>
+      <title>Adviser contact</title>
+      <consumer>Advisers</consumer>
+      <groupable v="true" />
+      <linkedContext>Person</linkedContext>
+      <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/adviser_contact_id/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>ADVISER_ROLE</name>
+      <title>Adviser role</title>
+      <consumer>KeywordAdviserRoles</consumer>
+      <groupable v="true" />
+      <displayValueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/adviser_role/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>STATUS</name>
+      <title>Status</title>
+      <consumer>KeywordContactStates</consumer>
+      <groupable v="true" />
+      <valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/status/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>VALID_FROM</name>
+      <title>Valid from</title>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>VALID_UNTIL</name>
+      <title>Valid until</title>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>ORIGIN</name>
+      <title>Origin</title>
+      <consumer>KeywordDistrictOrigin</consumer>
+      <groupable v="true" />
+      <state>READONLY</state>
+      <valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/origin/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/origin/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>DISTRICTCONTACTID</name>
+    </entityField>
+    <entityConsumer>
+      <name>KeywordContactStates</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>BlacklistIds_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/keywordcontactstates/children/blacklistids_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>KeywordAdviserRoles</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/keywordadviserroles/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>KeywordDistrictOrigin</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/keyworddistrictorigin/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Organisations</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Organisation_entity</entityName>
+        <fieldName>Organisations</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Advisers</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>DistrictResponsible_entity</entityName>
+        <fieldName>DistrictResponsibleAdvisers</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>DistrictId_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/advisers/children/districtid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Districts</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>District_entity</entityName>
+        <fieldName>DistrictContacts</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityProvider>
+      <name>DistrictContacts</name>
+      <dependencies>
+        <entityDependency>
+          <name>6a15b92f-e0b6-459d-a106-615dcfac3dbd</name>
+          <entityName>District_entity</entityName>
+          <fieldName>DistrictContactUIDs</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>e33ae6f8-0a21-406c-950a-ab60f27026b3</name>
+          <entityName>Organisation_entity</entityName>
+          <fieldName>DistrictContacts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityParameter>
+      <name>DistrictId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>currentOrganisationId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>RowId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityActionGroup>
+      <name>setStatus</name>
+      <children>
+        <entityActionField>
+          <name>setActive</name>
+          <title>Set active</title>
+          <onActionProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/setstatus/children/setactive/onActionProcess.js</onActionProcess>
+          <isSelectionAction v="true" />
+          <iconId>VAADIN:THUMBS_UP</iconId>
+          <tooltip>Set status to active</tooltip>
+        </entityActionField>
+        <entityActionField>
+          <name>setInactive</name>
+          <title>Set inactive</title>
+          <onActionProcess>%aditoprj%/entity/DistrictContact_entity/entityfields/setstatus/children/setinactive/onActionProcess.js</onActionProcess>
+          <isSelectionAction v="true" />
+          <iconId>VAADIN:THUMBS_DOWN</iconId>
+          <tooltip>Set status to inactive</tooltip>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityParameter>
+      <name>isDashletView_param</name>
+      <expose v="true" />
+    </entityParameter>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <isPageable v="true" />
+      <isRequireContainerFiltering v="false" />
+      <hasDependentRecords v="true" />
+      <fromClauseProcess>%aditoprj%/entity/DistrictContact_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
+      <conditionProcess>%aditoprj%/entity/DistrictContact_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <alias>Data_alias</alias>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>ADVISER_CONTACT_ID.value</name>
+          <recordfield>DISTRICTCONTACT.ADVISER_CONTACT_ID</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ADVISER_ROLE.value</name>
+          <recordfield>DISTRICTCONTACT.ADVISER_ROLE</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CONTACT_ID.value</name>
+          <recordfield>DISTRICTCONTACT.CONTACT_ID</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DISTRICT_ID.value</name>
+          <recordfield>DISTRICTCONTACT.DISTRICT_ID</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ORIGIN.value</name>
+          <recordfield>DISTRICTCONTACT.ORIGIN</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>STATUS.value</name>
+          <recordfield>DISTRICTCONTACT.STATUS</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>VALID_FROM.value</name>
+          <recordfield>DISTRICTCONTACT.VALID_FROM</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>VALID_UNTIL.value</name>
+          <recordfield>DISTRICTCONTACT.VALID_UNTIL</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DISTRICTCONTACTID.value</name>
+          <recordfield>DISTRICTCONTACT.DISTRICTCONTACTID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ORIGIN.displayValue</name>
+          <expression>%aditoprj%/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/origin.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DISTRICT_ID.displayValue</name>
+          <expression>%aditoprj%/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/district_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>STATUS.displayValue</name>
+          <expression>%aditoprj%/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>dc5cbebc-a947-4196-937a-f665ee80cc31</name>
+          <tableName>DISTRICTCONTACT</tableName>
+          <primaryKey>DISTRICTCONTACTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>058abbb3-d92f-4fe1-b326-1320cfee90df</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/DistrictContact_entity/entityfields/adviser_contact_id/displayValueProcess.js b/entity/DistrictContact_entity/entityfields/adviser_contact_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e5831fd4418b333578ec210e784b82b3615dd772
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/adviser_contact_id/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Contact_lib");
+
+result.string(ContactUtils.getFullTitleByContactId(vars.get("$field.ADVISER_CONTACT_ID"), false));
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/adviser_role/displayValueProcess.js b/entity/DistrictContact_entity/entityfields/adviser_role/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e6a904ba6ddbb8708672c21cdf25313d4829841d
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/adviser_role/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.adviserRole(), vars.get("$field.ADVISER_ROLE")));
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/advisers/children/districtid_param/valueProcess.js b/entity/DistrictContact_entity/entityfields/advisers/children/districtid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a13a013fadcab4a35ad6a795015276b1fd16be0e
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/advisers/children/districtid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.DISTRICT_ID"));
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/contact_id/displayValueProcess.js b/entity/DistrictContact_entity/entityfields/contact_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0398a93e921deff9c9cf94e2468bdf1702bffa59
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/contact_id/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Contact_lib");
+
+result.string(ContactUtils.getFullTitleByContactId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/contact_id/stateProcess.js b/entity/DistrictContact_entity/entityfields/contact_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c23cd0ff4912e068826819e7a7b458b864616751
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/contact_id/stateProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+    
+if(vars.get("$param.currentOrganisationId_param"))
+    result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/contact_id/valueProcess.js b/entity/DistrictContact_entity/entityfields/contact_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..bd8d4f8447e67f798cc0b1429919e71dec4401ad
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/contact_id/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$param.currentOrganisationId_param"));
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/district_id/displayValueProcess.js b/entity/DistrictContact_entity/entityfields/district_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1f1a8b17e086f57385795d7e0fc0ee317cb59eda
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/district_id/displayValueProcess.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+
+if(vars.get("$field.DISTRICT_ID") != "" && vars.get("$field.DISTRICT_ID") != null)
+{
+    result.string(newSelect("DISTRICT_NAME").from("DISTRICT").where("DISTRICT.DISTRICTID", "$field.DISTRICT_ID").cell())
+    
+}
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/district_id/valueProcess.js b/entity/DistrictContact_entity/entityfields/district_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..bed0ee257efcc6af594fdae209b4e08c8b511ed0
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/district_id/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+    
+if(vars.get("$param.DistrictId_param") && vars.get("$this.value") == null)
+    result.string(vars.get("$param.DistrictId_param"))
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/keywordadviserroles/children/containername_param/valueProcess.js b/entity/DistrictContact_entity/entityfields/keywordadviserroles/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..113fe991296292ec901f2c92b5042d6d50e23890
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/keywordadviserroles/children/containername_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.adviserRole());
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/keywordcontactstates/children/blacklistids_param/valueProcess.js b/entity/DistrictContact_entity/entityfields/keywordcontactstates/children/blacklistids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cd35681842d8c289c2ee2ba1c460101807f63719
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/keywordcontactstates/children/blacklistids_param/valueProcess.js
@@ -0,0 +1,11 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("KeywordRegistry_basic");
+import("Sql_lib");
+
+if (vars.get("$sys.presentationmode") != neon.CONTEXT_PRESENTATIONMODE_FILTER)
+{
+    var excludedIds = $KeywordRegistry.contactStatus$inReview();
+    result.string(JSON.stringify(excludedIds));
+}
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js b/entity/DistrictContact_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f4d03edea3a8ff7253f793a4c8a3585f03db848
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.contactStatus());
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/keyworddistrictorigin/children/containername_param/valueProcess.js b/entity/DistrictContact_entity/entityfields/keyworddistrictorigin/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..80b7903c1997943568f289e076d5873d38ecd53b
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/keyworddistrictorigin/children/containername_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.districtOrigin());
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/origin/displayValueProcess.js b/entity/DistrictContact_entity/entityfields/origin/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..68465c76ce5c55e9f32ff20f8870c8a0e01b352c
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/origin/displayValueProcess.js
@@ -0,0 +1,15 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    var key = vars.get("$field.ORIGIN");
+    if (key)
+    {
+        var res = KeywordUtils.getViewValue($KeywordRegistry.districtOrigin(), key);
+        result.string(res);
+    }
+}
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/origin/valueProcess.js b/entity/DistrictContact_entity/entityfields/origin/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f8bb663630e34a07f9d3738151c3093c2a57c1b
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/origin/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("KeywordRegistry_basic");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+        result.string($KeywordRegistry.districtOrigin$manual());
+}
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/setstatus/children/setactive/onActionProcess.js b/entity/DistrictContact_entity/entityfields/setstatus/children/setactive/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..17bce8bda33cdd6cd2b0d5f01068040a6490c098
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/setstatus/children/setactive/onActionProcess.js
@@ -0,0 +1,11 @@
+import("system.util");
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.neon");
+import("District_lib");
+
+
+var arrIds = vars.get("$sys.selection");
+DistrictUtils.setDistrictContactStatus(arrIds, $KeywordRegistry.contactStatus$active());
+
+neon.refreshAll();
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/setstatus/children/setinactive/onActionProcess.js b/entity/DistrictContact_entity/entityfields/setstatus/children/setinactive/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..839605a11a4027adcf9cc8ce7a18a1d93601a763
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/setstatus/children/setinactive/onActionProcess.js
@@ -0,0 +1,9 @@
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.neon");
+import("District_lib");
+
+var arrIds = vars.get("$sys.selection");
+DistrictUtils.setDistrictContactStatus(arrIds, $KeywordRegistry.contactStatus$inactive());
+
+neon.refreshAll();
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/status/displayValueProcess.js b/entity/DistrictContact_entity/entityfields/status/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c22dac90dfb488ce3db5cb39424ebe85a8d2e488
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/status/displayValueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+
+var key = vars.get("$field.STATUS");
+
+var res = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), key);
+result.string(res);
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/entityfields/status/valueProcess.js b/entity/DistrictContact_entity/entityfields/status/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..13218c16514d81765c7e5dfd47c099996adfe063
--- /dev/null
+++ b/entity/DistrictContact_entity/entityfields/status/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("KeywordRegistry_basic");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string($KeywordRegistry.contactStatus$active());
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/iconIdProcess.js b/entity/DistrictContact_entity/iconIdProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..efad44f93980d3fdbd4e1830d667ce69f7090d71
--- /dev/null
+++ b/entity/DistrictContact_entity/iconIdProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+var res = "TEXT:" + vars.get("$field.CONTACT_ID.displayValue");
+result.string(res);
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/recordcontainers/db/conditionProcess.js b/entity/DistrictContact_entity/recordcontainers/db/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b8195ebfa8f2f08258f2c8dc98449b6ec7cc292c
--- /dev/null
+++ b/entity/DistrictContact_entity/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,41 @@
+import("KeywordRegistry_basic");
+import("Employee_lib");
+import("system.entities");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var isDashletView = vars.get("$param.isDashletView_param");
+var organisationID = vars.get("$param.currentOrganisationId_param");
+var districtID = vars.get("$param.DistrictId_param");
+var cond = newWhere();
+
+if (vars.exists("$param.RowId_param") && vars.get("$param.RowId_param") && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param"))
+{
+    cond.and("DISTRICTCONTACT.ADVISER_CONTACT_ID", newSelect("DISTRICTRESPONSIBLE.EMPLOYEE_CONTACT_ID")
+        .from("DISTRICTRESPONSIBLE")
+        .where("DISTRICTRESPONSIBLE.DISTRICTRESPONSIBLEID", "$param.RowId_param")
+        , SqlBuilder.IN());
+}
+if (organisationID)
+{
+    cond.and("DISTRICTCONTACT.CONTACT_ID", organisationID);
+} 
+
+var statusInReview = $KeywordRegistry.contactStatus$inReview();
+var districtOrigin = $KeywordRegistry.districtOrigin$auto();
+
+if(isDashletView)
+{
+    var currentContactId = EmployeeUtils.getCurrentContactId();
+    
+    cond.and("DISTRICTCONTACT.STATUS", statusInReview);
+    cond.and("DISTRICTCONTACT.ORIGIN", districtOrigin);
+    cond.and("DISTRICTCONTACT.ADVISER_CONTACT_ID", currentContactId);
+}
+
+if(districtID){    
+    cond.and("DISTRICTCONTACT.DISTRICT_ID", districtID);
+}
+
+result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/recordcontainers/db/fromClauseProcess.js b/entity/DistrictContact_entity/recordcontainers/db/fromClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..19a916d7f0b23cd1c832567ee33ea1d3c592f01f
--- /dev/null
+++ b/entity/DistrictContact_entity/recordcontainers/db/fromClauseProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+
+var res = "DISTRICTCONTACT \n\
+    left join CONTACT on (CONTACT.CONTACTID = DISTRICTCONTACT.CONTACT_ID)";
+result.string(res);
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/district_id.displayvalue/expression.js b/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/district_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..2b6b2fc2b784294d32c6ea947086bf1e62d5d9c3
--- /dev/null
+++ b/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/district_id.displayvalue/expression.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("Sql_lib");
+
+result.string(newSelect("DISTRICT.DISTRICT_NAME")
+                .from("DISTRICT")
+                .where("DISTRICT.DISTRICTID = DISTRICTCONTACT.DISTRICT_ID")
+                .toString());
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/origin.displayvalue/expression.js b/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/origin.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..a6e2a3e719d894bde6e9e71623b20bfc33ac1cac
--- /dev/null
+++ b/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/origin.displayvalue/expression.js
@@ -0,0 +1,6 @@
+import("KeywordRegistry_basic");
+import("system.result");
+import("Keyword_lib");
+
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.districtOrigin(), "DISTRICTCONTACT.ORIGIN");
+result.string(sql);
\ No newline at end of file
diff --git a/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..22b1e68d7238c6315da8b21edbb1fdae45744855
--- /dev/null
+++ b/entity/DistrictContact_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js
@@ -0,0 +1,6 @@
+import("KeywordRegistry_basic");
+import("system.result");
+import("Keyword_lib");
+
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contactStatus(), "DISTRICTCONTACT.STATUS");
+result.string(sql);
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod
index 4062bb8fd405fd3447584e1169ac5f9f8e15c83c..199213fe56c0a805961dce132a36b4a23269795f 100644
--- a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod
+++ b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod
@@ -1,31 +1,28 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DistrictResponsible_entity</name>
+  <title>District Responsible</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DistrictResponsible_entity/documentation.adoc</documentation>
   <icon>VAADIN:GLOBE</icon>
-  <title>District Responsible</title>
+  <grantDeleteProcess>%aditoprj%/entity/DistrictResponsible_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/DistrictResponsible_entity/contentTitleProcess.js</contentTitleProcess>
   <iconIdProcess>%aditoprj%/entity/DistrictResponsible_entity/iconIdProcess.js</iconIdProcess>
   <image>VAADIN:GLOBE</image>
+  <usePermissions v="false" />
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
     </entityProvider>
-    <entityField>
-      <name>DEPARTMENT_ATTRIBUTE_ID</name>
-      <title>Department</title>
-      <consumer>Departments</consumer>
-      <state>AUTO</state>
-      <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/department_attribute_id/valueProcess.js</valueProcess>
-    </entityField>
     <entityField>
       <name>EMPLOYEE_CONTACT_ID</name>
       <title>{$DISTRICT_RESPONSIBLE}</title>
-      <consumer>Employees</consumer>
+      <consumer>Persons</consumer>
       <linkedContext>Person</linkedContext>
+      <mandatory v="true" />
       <selectionMode>SINGLE</selectionMode>
+      <stateProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/employee_contact_id/stateProcess.js</stateProcess>
       <displayValueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/employee_contact_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
@@ -35,29 +32,6 @@
       <linkedContext>District</linkedContext>
       <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/district_id/valueProcess.js</valueProcess>
     </entityField>
-    <entityConsumer>
-      <name>Departments</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Attribute_entity</entityName>
-        <fieldName>SpecificAttribute</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ParentId_param</name>
-          <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/departments/children/parentid_param/valueProcess.js</valueProcess>
-          <description>parent id, this is used for filtering by the parent in the content process</description>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityConsumer>
-      <name>Employees</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Employee_entity</entityName>
-        <fieldName>Employees</fieldName>
-      </dependency>
-    </entityConsumer>
     <entityConsumer>
       <name>Districts</name>
       <dependency>
@@ -87,14 +61,13 @@
     </entityField>
     <entityProvider>
       <name>DistrictResponsibles</name>
-      <lookupIdfield>DISTRICTRESPONSIBLEID</lookupIdfield>
       <documentation>%aditoprj%/entity/DistrictResponsible_entity/entityfields/districtresponsibles/documentation.adoc</documentation>
       <titlePlural>Responsibles</titlePlural>
       <dependencies>
         <entityDependency>
-          <name>ef26fdb6-5fcf-416e-bcc8-380b5751b523</name>
+          <name>ae1dcbbe-b302-44df-ab4c-f7937d197cd5</name>
           <entityName>District_entity</entityName>
-          <fieldName>DistrictResponsibles</fieldName>
+          <fieldName>DistrictResponsibleUIDs</fieldName>
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
@@ -146,14 +119,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityField>
-      <name>departmentAttributeName</name>
-      <documentation>%aditoprj%/entity/DistrictResponsible_entity/entityfields/departmentattributename/documentation.adoc</documentation>
-      <title>Department</title>
-      <state>READONLY</state>
-      <stateProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/departmentattributename/stateProcess.js</stateProcess>
-      <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/departmentattributename/valueProcess.js</valueProcess>
-    </entityField>
     <entityProvider>
       <name>OrganisationResponsibles</name>
       <targetContextField>targetContext</targetContextField>
@@ -205,38 +170,106 @@
       <name>targetContext</name>
       <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/targetcontext/valueProcess.js</valueProcess>
     </entityField>
+    <entityConsumer>
+      <name>Persons</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Person_entity</entityName>
+        <fieldName>Contacts</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ExcludedContactIds_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/persons/children/excludedcontactids_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>ADVISER_ROLE</name>
+      <title>Adviser role</title>
+      <consumer>AdviserRoles</consumer>
+      <displayValueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/adviser_role/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>ADVISER_STATUS</name>
+      <title>Adviser status</title>
+      <consumer>AdviserStates</consumer>
+      <groupable v="true" />
+      <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/adviser_status/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/adviser_status/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>AdviserStates</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/adviserstates/children/containername_param/valueProcess.js</valueProcess>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludedKeyIdsSubquery_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/adviserstates/children/excludedkeyidssubquery_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>BlacklistIds_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/adviserstates/children/blacklistids_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>VALID_FROM</name>
+      <title>Valid from</title>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+    </entityField>
+    <entityField>
+      <name>VALID_UNTIL</name>
+      <title>Valid to</title>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+    </entityField>
+    <entityConsumer>
+      <name>AdviserRoles</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/adviserroles/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityProvider>
+      <name>DistrictResponsibleAdvisers</name>
+      <lookupIdfield>EMPLOYEE_CONTACT_ID</lookupIdfield>
+      <dependencies>
+        <entityDependency>
+          <name>ac067a2d-e313-44b7-b219-f834ef4a7629</name>
+          <entityName>DistrictContact_entity</entityName>
+          <fieldName>Advisers</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="false" />
       <fromClauseProcess>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <alias>Data_alias</alias>
       <cacheType>GLOBAL</cacheType>
       <cacheKeyProcess>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>d24296ec-5040-4b40-ad5b-668d3e02b4aa</name>
-          <tableName>DISTRICTRESPONSIBLE</tableName>
-          <primaryKey>DISTRICTRESPONSIBLEID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>86f9ab94-0d69-4a3a-9a04-615f61be2c23</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
       <recordFieldMappings>
-        <dbRecordFieldMapping>
-          <name>DEPARTMENT_ATTRIBUTE_ID.value</name>
-          <recordfield>DISTRICTRESPONSIBLE.DEPARTMENT_ATTRIBUTE_ID</recordfield>
-          <isFilterable v="true" />
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>DISTRICT_ID.value</name>
           <recordfield>DISTRICTRESPONSIBLE.DISTRICT_ID</recordfield>
@@ -272,10 +305,6 @@
           <recordfield>DISTRICTRESPONSIBLE.DATE_NEW</recordfield>
           <isFilterable v="true" />
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>DEPARTMENT_ATTRIBUTE_ID.displayValue</name>
-          <recordfield>DISTRICTRESPONSIBLE.DEPARTMENT_ATTRIBUTE_ID</recordfield>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>MAIL.value</name>
           <expression>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/mail.value/expression.js</expression>
@@ -284,15 +313,53 @@
           <name>PHONE.value</name>
           <expression>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/phone.value/expression.js</expression>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>DISTRICT_ID.displayValue</name>
-          <expression>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/district_id.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>EMPLOYEE_CONTACT_ID.displayValue</name>
           <expression>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ADVISER_ROLE.value</name>
+          <recordfield>DISTRICTRESPONSIBLE.ADVISER_ROLE</recordfield>
+          <isFilterable v="true" />
+          <isLookupFilter v="false" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ADVISER_STATUS.value</name>
+          <recordfield>DISTRICTRESPONSIBLE.ADVISER_STATUS</recordfield>
+          <isFilterable v="true" />
+          <isLookupFilter v="false" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>VALID_FROM.value</name>
+          <recordfield>DISTRICTRESPONSIBLE.VALID_FROM</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>VALID_UNTIL.value</name>
+          <recordfield>DISTRICTRESPONSIBLE.VALID_UNTIL</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DISTRICT_ID.displayValue</name>
+          <expression>%aditoprj%/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/district_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>d0fee359-92fb-4d5e-b50c-3e74251440d8</name>
+          <tableName>DISTRICTRESPONSIBLE</tableName>
+          <primaryKey>DISTRICTRESPONSIBLEID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>33f6c941-5245-4847-a8a3-3cbddc30a104</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/DistrictResponsible_entity/contentTitleProcess.js b/entity/DistrictResponsible_entity/contentTitleProcess.js
index 67d21cf41ffa951498384284c6ebdd2490f0a84e..1c40177f5576799fcf75787dac078c03a8553756 100644
--- a/entity/DistrictResponsible_entity/contentTitleProcess.js
+++ b/entity/DistrictResponsible_entity/contentTitleProcess.js
@@ -1,12 +1,11 @@
-import("system.logging");
 import("system.vars");
 import("system.result");
-import("Employee_lib");
+import("Contact_lib");
 
 var contactId = vars.get("$field.EMPLOYEE_CONTACT_ID");
 var res = "";
 
 if(contactId)
-    res = EmployeeUtils.getUsersDepartment(contactId, true);
+    res = ContactUtils.getFullTitleByContactId(contactId, false);
 
 result.string(res)
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/adviser_role/displayValueProcess.js b/entity/DistrictResponsible_entity/entityfields/adviser_role/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1c2626f024782f6d29c7b4f7fd225796acbd250a
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/adviser_role/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.adviserRole(), vars.get("$field.ADVISER_ROLE")));
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/adviser_status/displayValueProcess.js b/entity/DistrictResponsible_entity/entityfields/adviser_status/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7f7c5a4b070b3d79992eb80365eb4666affe452b
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/adviser_status/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), vars.get("$field.ADVISER_STATUS")));
diff --git a/entity/DistrictResponsible_entity/entityfields/adviser_status/valueProcess.js b/entity/DistrictResponsible_entity/entityfields/adviser_status/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..13218c16514d81765c7e5dfd47c099996adfe063
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/adviser_status/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("KeywordRegistry_basic");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string($KeywordRegistry.contactStatus$active());
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/adviserroles/children/containername_param/valueProcess.js b/entity/DistrictResponsible_entity/entityfields/adviserroles/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..113fe991296292ec901f2c92b5042d6d50e23890
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/adviserroles/children/containername_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.adviserRole());
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/adviserstates/children/blacklistids_param/valueProcess.js b/entity/DistrictResponsible_entity/entityfields/adviserstates/children/blacklistids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e8e04e223262820933a9e8ee95ed98788acc7c18
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/adviserstates/children/blacklistids_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("KeywordRegistry_basic");
+
+var excludedIds = [$KeywordRegistry.contactStatus$inReview()];
+result.string(JSON.stringify(excludedIds));
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/adviserstates/children/containername_param/valueProcess.js b/entity/DistrictResponsible_entity/entityfields/adviserstates/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f4d03edea3a8ff7253f793a4c8a3585f03db848
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/adviserstates/children/containername_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.contactStatus());
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/adviserstates/children/excludedkeyidssubquery_param/valueProcess.js b/entity/DistrictResponsible_entity/entityfields/adviserstates/children/excludedkeyidssubquery_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..15b73f9705dc456af35c5d5e144cf88c436a79eb
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/adviserstates/children/excludedkeyidssubquery_param/valueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("KeywordRegistry_basic");
+import("Sql_lib");
+
+var cond = newSelect("AB_KEYWORD_ENTRY.KEYID")
+.from("AB_KEYWORD_ENTRY")
+.where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.contactStatus())
+.and("AB_KEYWORD_ENTRY.KEYID", $KeywordRegistry.contactStatus$inReview(), SqlBuilder.LIKE());
+
+result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/department_attribute_id/valueProcess.js b/entity/DistrictResponsible_entity/entityfields/department_attribute_id/valueProcess.js
deleted file mode 100644
index 3474c5398a8b48f35e4cd6f82297fecafb9e8928..0000000000000000000000000000000000000000
--- a/entity/DistrictResponsible_entity/entityfields/department_attribute_id/valueProcess.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import("system.vars");
-import("system.result");
-import("system.tools");
-
-var employeesContactId = vars.get("$field.EMPLOYEE_CONTACT_ID");
-var departmentsAttrId = ""
-if (employeesContactId)
-{
-    departmentsAttrId = tools.getUsersByAttribute(tools.CONTACTID, [employeesContactId])[0][tools.PARAMS].department;
-}
-
-result.string(departmentsAttrId);
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/departmentattributename/documentation.adoc b/entity/DistrictResponsible_entity/entityfields/departmentattributename/documentation.adoc
deleted file mode 100644
index 5bfe0dc5113c1612653d080130a887af00c71a9b..0000000000000000000000000000000000000000
--- a/entity/DistrictResponsible_entity/entityfields/departmentattributename/documentation.adoc
+++ /dev/null
@@ -1 +0,0 @@
-Used in DistrictPreview_view and also in the contentProcess of the JDito RC from Member_entity.
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/departmentattributename/valueProcess.js b/entity/DistrictResponsible_entity/entityfields/departmentattributename/valueProcess.js
deleted file mode 100644
index 7fac5c4e3942f0e9442d679d78370ba7136b96d6..0000000000000000000000000000000000000000
--- a/entity/DistrictResponsible_entity/entityfields/departmentattributename/valueProcess.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import("system.logging");
-import("system.vars");
-import("system.result");
-import("Attribute_lib");
-
-
-var departmentAttrId = vars.get("$field.DEPARTMENT_ATTRIBUTE_ID");
-var departmentDisplayName = "";
-
-if (departmentAttrId) 
-{
-    departmentDisplayName = AttributeUtil.getSimpleAttributeName(departmentAttrId, true);
-}
-
-result.string(departmentDisplayName);
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/employee_contact_id/stateProcess.js b/entity/DistrictResponsible_entity/entityfields/employee_contact_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3c9d1932078931f687822baaaf60ed430583f27e
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/employee_contact_id/stateProcess.js
@@ -0,0 +1,16 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+import("system.db");
+
+var count = newSelect("COUNT(*)")
+    .from("DISTRICTCONTACT")
+    .join("DISTRICTRESPONSIBLE", "DISTRICTCONTACT.ADVISER_CONTACT_ID = DISTRICTRESPONSIBLE.EMPLOYEE_CONTACT_ID")
+    .where("DISTRICTRESPONSIBLE.EMPLOYEE_CONTACT_ID", vars.get("$field.EMPLOYEE_CONTACT_ID"))
+    .cell();
+
+if(count == 0)
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/persons/children/excludedcontactids_param/valueProcess.js b/entity/DistrictResponsible_entity/entityfields/persons/children/excludedcontactids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7cd92d81da369c1b7eae71a9e7bbec9f27666f7e
--- /dev/null
+++ b/entity/DistrictResponsible_entity/entityfields/persons/children/excludedcontactids_param/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.db");
+import("Sql_lib");
+
+result.string(JSON.stringify(newSelect("EMPLOYEE_CONTACT_ID")
+    .from("DISTRICTRESPONSIBLE")
+    .where("DISTRICTRESPONSIBLE.DISTRICT_ID", "$param.DistrictId_param")
+    .arrayColumn())
+);
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/grantDeleteProcess.js b/entity/DistrictResponsible_entity/grantDeleteProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7039de6df63613d5985e26ef10ab10e90161e5c9
--- /dev/null
+++ b/entity/DistrictResponsible_entity/grantDeleteProcess.js
@@ -0,0 +1,13 @@
+import("Context_lib");
+import("system.vars");
+import("system.result");
+import("Entity_lib");
+
+var rowId = vars.get("$field.DISTRICTRESPONSIBLEID");
+var currentContext = ContextUtils.getCurrentContextId();
+
+var canDelete = new HasLinkedObjectTester()
+    .andNoEntityRows("DistrictContact_entity", "DistrictContacts", {ObjectId_param : currentContext, RowId_param : rowId}) //District Contact
+    .validate();
+
+result.string(canDelete);
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/district_id.displayvalue/expression.js b/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/district_id.displayvalue/expression.js
index 2bd6b5d01756719a2e951069a73268a5bb488d9f..fc4de922e1d7f53ae4aaa5f8f91ec1dbe5382781 100644
--- a/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/district_id.displayvalue/expression.js
+++ b/entity/DistrictResponsible_entity/recordcontainers/db/recordfieldmappings/district_id.displayvalue/expression.js
@@ -4,4 +4,4 @@ import("Sql_lib");
 result.string(newSelect("DISTRICT.DISTRICT_NAME")
                 .from("DISTRICT")
                 .where("DISTRICT.DISTRICTID = DISTRICTRESPONSIBLE.DISTRICT_ID")
-                .toString());
+                .toString());
\ No newline at end of file
diff --git a/entity/District_entity/District_entity.aod b/entity/District_entity/District_entity.aod
index e775acd3c2243cada93f42afa935b6336bb8d256..b4db5c318c95ee20c8cabaef17c52de231c1897e 100644
--- a/entity/District_entity/District_entity.aod
+++ b/entity/District_entity/District_entity.aod
@@ -1,10 +1,12 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>District_entity</name>
+  <title>District definition</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/District_entity/documentation.adoc</documentation>
   <icon>VAADIN:GLOBE</icon>
-  <title>District definition</title>
+  <grantDelete v="false" />
+  <grantDeleteProcess>%aditoprj%/entity/District_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/District_entity/contentTitleProcess.js</contentTitleProcess>
   <iconIdProcess>%aditoprj%/entity/District_entity/iconIdProcess.js</iconIdProcess>
   <titlePlural></titlePlural>
@@ -109,20 +111,6 @@
         <fieldName>ISO3Name</fieldName>
       </dependency>
     </entityConsumer>
-    <entityConsumer>
-      <name>DistrictResponsibles</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>DistrictResponsible_entity</entityName>
-        <fieldName>DistrictResponsibles</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>DistrictId_param</name>
-          <valueProcess>%aditoprj%/entity/District_entity/entityfields/districtresponsibles/children/districtid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
     <entityField>
       <name>USER_NEW</name>
       <valueProcess>%aditoprj%/entity/District_entity/entityfields/user_new/valueProcess.js</valueProcess>
@@ -187,6 +175,12 @@
         <entityName>LogHistory_entity</entityName>
         <fieldName>LogHistoryProvider</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>tablenames_param</name>
+          <valueProcess>%aditoprj%/entity/District_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityField>
       <name>parentFilter</name>
@@ -243,6 +237,7 @@
       <children>
         <entityParameter>
           <name>DistrictsByContactId_param</name>
+          <valueProcess>%aditoprj%/entity/District_entity/entityfields/validparentdistricts/children/districtsbycontactid_param/valueProcess.js</valueProcess>
           <expose v="false" />
         </entityParameter>
       </children>
@@ -251,25 +246,92 @@
       <name>ExcludedDistrictIds_param</name>
       <expose v="true" />
     </entityParameter>
+    <entityConsumer>
+      <name>DistrictResponsibleUIDs</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>DistrictResponsible_entity</entityName>
+        <fieldName>DistrictResponsibles</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>DistrictId_param</name>
+          <valueProcess>%aditoprj%/entity/District_entity/entityfields/districtresponsibleuids/children/districtid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>DISTRICT_AUTOADD</name>
+      <title>Auto assignment</title>
+      <contentType>BOOLEAN</contentType>
+      <dropDownProcess>%aditoprj%/entity/District_entity/entityfields/district_autoadd/dropDownProcess.js</dropDownProcess>
+      <valueProcess>%aditoprj%/entity/District_entity/entityfields/district_autoadd/valueProcess.js</valueProcess>
+    </entityField>
+    <entityActionField>
+      <name>assignDistrict</name>
+      <title>Assign district</title>
+      <onActionProcess>%aditoprj%/entity/District_entity/entityfields/assigndistrict/onActionProcess.js</onActionProcess>
+    </entityActionField>
+    <entityActionGroup>
+      <name>ActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>assignAllActiveDistricts</name>
+          <title>Assign all selected districts</title>
+          <onActionProcess>%aditoprj%/entity/District_entity/entityfields/actiongroup/children/assignallactivedistricts/onActionProcess.js</onActionProcess>
+          <isObjectAction v="false" />
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityProvider>
+      <name>DistrictContacts</name>
+      <dependencies>
+        <entityDependency>
+          <name>d94c353f-c66d-489c-934b-72ca154ba37a</name>
+          <entityName>DistrictContact_entity</entityName>
+          <fieldName>Districts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>DistrictsByContactId_param</name>
+          <valueProcess>%aditoprj%/entity/District_entity/entityfields/districtcontacts/children/districtsbycontactid_param/valueProcess.js</valueProcess>
+          <expose v="true" />
+          <mandatory v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityConsumer>
+      <name>DistrictContactUIDs</name>
+      <selectionMode>MULTI</selectionMode>
+      <dependency>
+        <name>dependency</name>
+        <entityName>DistrictContact_entity</entityName>
+        <fieldName>DistrictContacts</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>DistrictId_param</name>
+          <valueProcess>%aditoprj%/entity/District_entity/entityfields/districtcontactuids/children/districtid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>ResponsibleDistrictsOfCurrentUser_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="false" />
       <conditionProcess>%aditoprj%/entity/District_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/District_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBDelete>%aditoprj%/entity/District_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
+      <alias>Data_alias</alias>
       <cacheType>GLOBAL</cacheType>
       <cacheKeyProcess>%aditoprj%/entity/District_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>b8398641-f97b-43e4-8f2c-beda8690ab2f</name>
-          <tableName>DISTRICT</tableName>
-          <primaryKey>DISTRICTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
@@ -355,7 +417,21 @@
           <name>totalTurnover.value</name>
           <isLookupFilter v="false" />
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DISTRICT_AUTOADD.value</name>
+          <recordfield>DISTRICT.DISTRICT_AUTOADD</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>b8398641-f97b-43e4-8f2c-beda8690ab2f</name>
+          <tableName>DISTRICT</tableName>
+          <primaryKey>DISTRICTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/District_entity/entityfields/actiongroup/children/assignallactivedistricts/onActionProcess.js b/entity/District_entity/entityfields/actiongroup/children/assignallactivedistricts/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..59461e56b39556b3fdcc50ed9e2257df8d240631
--- /dev/null
+++ b/entity/District_entity/entityfields/actiongroup/children/assignallactivedistricts/onActionProcess.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("system.question");
+import("system.translate");
+import("District_lib");
+
+var arrDistrictIds = vars.get("$sys.selection");
+question.showMessage(translate.text("Assignment for all selected districts will start now!"));
+
+DistrictUtils.assignDistrictOnServer(arrDistrictIds);
\ No newline at end of file
diff --git a/entity/District_entity/entityfields/appliedfilter/valueProcess.js b/entity/District_entity/entityfields/appliedfilter/valueProcess.js
index 253bd0712af0b47b35aaa72b8d027fc9d053526d..b4542e7e2d01943cfe47e2aa1364e5be3b411753 100644
--- a/entity/District_entity/entityfields/appliedfilter/valueProcess.js
+++ b/entity/District_entity/entityfields/appliedfilter/valueProcess.js
@@ -1,37 +1,7 @@
+import("District_lib");
 import("system.result");
 import("system.vars");
 
-var parentFilter = vars.get("$field.parentFilter");
-var districtFilter = vars.get("$field.DISTRICT_FILTER");
-
-var appliedFilter = {
-        entity: "Organisation_entity", 
-        filter: {
-            type: "group", 
-            operator: "AND", 
-            childs: []
-}};
-
-if (parentFilter)
-{
-    appliedFilter.filter.childs.push(JSON.parse(parentFilter).filter);
-}
-if (districtFilter)
-{
-    //appliedFilter = _getApplicableFilter(appliedFilter, districtFilter);
-    appliedFilter.filter.childs.push(JSON.parse(districtFilter).filter);
-}
-
-result.string(JSON.stringify(appliedFilter));
-
-filterArray = [];
-
-function _getApplicableFilter(pFilter, pAppendFilter){
-    
-    var applicableFilter = "";
-    var childFilter = JSON.parse(pFilter).filter;
-    
-    
-    
-    return applicableFilter;
-}
\ No newline at end of file
+//Aufbau des kompletten Filters über alle Hierarchie-Ebenen hinweg
+var appliedFilter = DistrictUtils.getAppliedFilter(vars.get("$field.DISTRICT_FILTER"), vars.get("$field.PARENTDISTRICT_DISTRICTID"));
+result.string(appliedFilter);
diff --git a/entity/District_entity/entityfields/assigndistrict/onActionProcess.js b/entity/District_entity/entityfields/assigndistrict/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f556ead9f64e28f01568cdff1828907b9db2dc14
--- /dev/null
+++ b/entity/District_entity/entityfields/assigndistrict/onActionProcess.js
@@ -0,0 +1,10 @@
+import("system.question");
+import("system.translate");
+import("District_lib");
+import("system.vars");
+
+var arrDistrictId = [vars.get("$field.DISTRICTID")];
+
+question.showMessage(translate.text("District assignment will start now!"));
+
+DistrictUtils.assignDistrictOnServer(arrDistrictId);
diff --git a/entity/District_entity/entityfields/customercounting/valueProcess.js b/entity/District_entity/entityfields/customercounting/valueProcess.js
index ccecd79603fe711a4705cd3fe0a6081a800986cc..e237bbef745d6c90b0c5b4e7bd58a592a28cca2d 100644
--- a/entity/District_entity/entityfields/customercounting/valueProcess.js
+++ b/entity/District_entity/entityfields/customercounting/valueProcess.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.vars");
 import("system.result");
 import("system.entities");
@@ -20,5 +19,4 @@ if (appliedFilter)
     rowCount = entities.getRowCount(conf);
 }
 
-
 result.string(rowCount);
\ No newline at end of file
diff --git a/entity/District_entity/entityfields/district_autoadd/dropDownProcess.js b/entity/District_entity/entityfields/district_autoadd/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e212979b8e77ec7c357dfbc0104882c01fcb7215
--- /dev/null
+++ b/entity/District_entity/entityfields/district_autoadd/dropDownProcess.js
@@ -0,0 +1,7 @@
+import("system.translate");
+import("system.result");
+
+result.object([
+    ["1", translate.text("Yes")]
+    ,["0", translate.text("No")]
+    ]);
\ No newline at end of file
diff --git a/entity/District_entity/entityfields/district_autoadd/valueProcess.js b/entity/District_entity/entityfields/district_autoadd/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c6c5c2d61991c8cf38ac7633b769b51fa200aec4
--- /dev/null
+++ b/entity/District_entity/entityfields/district_autoadd/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string("0");
\ No newline at end of file
diff --git a/entity/District_entity/entityfields/district_number/displayValueProcess.js b/entity/District_entity/entityfields/district_number/displayValueProcess.js
index 95a9d9d10972827b4d89b9f4ad7aa68161204049..af1a50e6fb3106b647f68b45106741f32ee4f494 100644
--- a/entity/District_entity/entityfields/district_number/displayValueProcess.js
+++ b/entity/District_entity/entityfields/district_number/displayValueProcess.js
@@ -1,10 +1,8 @@
 import("system.vars");
-import("system.logging");
 import("system.result");
 import("system.neon");
 import("Sql_lib");
 
-
 var districtNo = vars.get("$field.DISTRICT_NUMBER");
 
-result.string(districtNo.padStart(4, '0'));
+result.string(districtNo.padStart(4, '0'));
\ No newline at end of file
diff --git a/entity/District_entity/entityfields/districtcontacts/children/districtsbycontactid_param/valueProcess.js b/entity/District_entity/entityfields/districtcontacts/children/districtsbycontactid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..289f9107d46f3fabb9daf28ea42318b124ba98ea
--- /dev/null
+++ b/entity/District_entity/entityfields/districtcontacts/children/districtsbycontactid_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("$$$###ignore_param###$$$");//dummy value, for special treatment in the conditionProcess
\ No newline at end of file
diff --git a/entity/District_entity/entityfields/districtresponsibles/children/districtid_param/valueProcess.js b/entity/District_entity/entityfields/districtcontactuids/children/districtid_param/valueProcess.js
similarity index 98%
rename from entity/District_entity/entityfields/districtresponsibles/children/districtid_param/valueProcess.js
rename to entity/District_entity/entityfields/districtcontactuids/children/districtid_param/valueProcess.js
index d3d1d4b6cb94a84199fdc7783e0194a1a7255152..44ec9627c5e51edbe27130ba82db39ca269d2c07 100644
--- a/entity/District_entity/entityfields/districtresponsibles/children/districtid_param/valueProcess.js
+++ b/entity/District_entity/entityfields/districtcontactuids/children/districtid_param/valueProcess.js
@@ -1,5 +1,4 @@
 import("system.result");
 import("system.vars");
 
-
 result.string(vars.get("$field.DISTRICTID"));
\ No newline at end of file
diff --git a/entity/District_entity/entityfields/districtresponsibleuids/children/districtid_param/valueProcess.js b/entity/District_entity/entityfields/districtresponsibleuids/children/districtid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..44ec9627c5e51edbe27130ba82db39ca269d2c07
--- /dev/null
+++ b/entity/District_entity/entityfields/districtresponsibleuids/children/districtid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.DISTRICTID"));
\ No newline at end of file
diff --git a/entity/District_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js b/entity/District_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..92a62600733c4a0b3e48ba036628bb93f372dbf7
--- /dev/null
+++ b/entity/District_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+var res = [];
+res.push({id: vars.get("$field.DISTRICTID"), tableNames: ["DISTRICT"]});
+
+res = JSON.stringify(res);//currently only strings  can be passed as param
+result.object(res);
\ No newline at end of file
diff --git a/entity/District_entity/entityfields/parentfilter/valueProcess.js b/entity/District_entity/entityfields/parentfilter/valueProcess.js
index e1c0dfd89d6d147325bc77eb3fe1e1b452c6793e..7dd066de7e904e7528f28d0e03c65b459b534579 100644
--- a/entity/District_entity/entityfields/parentfilter/valueProcess.js
+++ b/entity/District_entity/entityfields/parentfilter/valueProcess.js
@@ -1,64 +1,7 @@
+import("District_lib");
 import("system.result");
 import("system.vars");
-import("system.neon");
-import("Sql_lib");
 
-var res = "";
-var parentDistrictId = vars.get("$field.PARENTDISTRICT_DISTRICTID");
-
-if (parentDistrictId)
-{
-    var completeParentFilter = _getParentFilter(parentDistrictId, null);
-    completeParentFilter.entity = "Organisation_entity";
-    res = completeParentFilter;
-}
-else
-{
-    var entity = "Organisation_entity";
-    var emptyFilter = {
-        entity: entity, 
-        filter: {
-            type: "group", 
-            operator: "AND", 
-            childs: []
-        }
-    };
-    
-    res = emptyFilter;
-}
-    
-result.string(JSON.stringify(res));
-
-
-function _getParentFilter(pParentDistrictId, pPreviousFilter)
-{
-    var resFilter;
-    
-    if (pPreviousFilter != null)
-    {
-        resFilter = pPreviousFilter;
-    } 
-
-    if (pParentDistrictId)
-    {
-        var parentDistrictFilter, grandParentDistrict;
-        [parentDistrictFilter, grandParentDistrict] = newSelect(["DISTRICT.DISTRICT_FILTER", "DISTRICT.PARENTDISTRICT_DISTRICTID"])
-                                                            .from("DISTRICT")
-                                                            .where("DISTRICT.DISTRICTID", pParentDistrictId)
-                                                            .arrayRow();
-
-        parentDistrictFilter = JSON.parse(parentDistrictFilter);
-
-        if (pPreviousFilter)
-            parentDistrictFilter.filter.childs.push(resFilter.filter);//todo: kommentar ergänzen was wir heir eigentlcih machen
-        
-        resFilter = parentDistrictFilter;
-
-        if (grandParentDistrict.length > 0)
-        {   
-            resFilter = _getParentFilter(grandParentDistrict, resFilter);
-        }
-    }
-
-    return resFilter;
-}
\ No newline at end of file
+//Aufbau des übergeordneten Filters 
+var res = DistrictUtils.getParentFilter(vars.get("$field.PARENTDISTRICT_DISTRICTID"));
+result.string(res);
diff --git a/entity/District_entity/entityfields/totalturnover/valueProcess.js b/entity/District_entity/entityfields/totalturnover/valueProcess.js
index 40d9732b34a8c3e73b89f860524abb9f55fd77ef..ced08cd465f6508f0641e4bcafa0872957d95865 100644
--- a/entity/District_entity/entityfields/totalturnover/valueProcess.js
+++ b/entity/District_entity/entityfields/totalturnover/valueProcess.js
@@ -2,7 +2,6 @@ import("system.text");
 import("Sql_lib");
 import("system.SQLTYPES");
 import("Date_lib");
-import("system.logging");
 import("system.vars");
 import("system.result");
 import("system.entities");
diff --git a/entity/District_entity/entityfields/validparentdistricts/children/districtsbycontactid_param/valueProcess.js b/entity/District_entity/entityfields/validparentdistricts/children/districtsbycontactid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..289f9107d46f3fabb9daf28ea42318b124ba98ea
--- /dev/null
+++ b/entity/District_entity/entityfields/validparentdistricts/children/districtsbycontactid_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("$$$###ignore_param###$$$");//dummy value, for special treatment in the conditionProcess
\ No newline at end of file
diff --git a/entity/District_entity/grantDeleteProcess.js b/entity/District_entity/grantDeleteProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..74e29836785f40313a3ff29d94ae95cf743007df
--- /dev/null
+++ b/entity/District_entity/grantDeleteProcess.js
@@ -0,0 +1,12 @@
+import("system.result");
+import("Sql_lib");
+import("system.vars");
+
+//Don't allow deletion if the district is a superordinate district
+var districtId = vars.get("$field.DISTRICTID");
+var count = newSelect("COUNT(*)")
+                    .from("DISTRICT")
+                    .where("DISTRICT.PARENTDISTRICT_DISTRICTID", districtId)
+                    .cell();   
+                                   
+result.string(count == 0);
diff --git a/entity/District_entity/recordcontainers/db/conditionProcess.js b/entity/District_entity/recordcontainers/db/conditionProcess.js
index 8329757ab9cf0a152de9c68fc67fcb16ffcb921e..309e53986efe9dbb08ce02ffa3f0e2db7f03115a 100644
--- a/entity/District_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/District_entity/recordcontainers/db/conditionProcess.js
@@ -1,8 +1,21 @@
+import("Employee_lib");
 import("system.result");
 import("system.vars");
 import("Sql_lib");
 
-var onlyResponsibleParam = vars.get("$param.DistrictsByContactId_param");
+
+var responsibleDistrictsOfCurrentUser = vars.get("$param.ResponsibleDistrictsOfCurrentUser_param");
+var onlyResponsibleParam;
+if(responsibleDistrictsOfCurrentUser == "true")
+{
+    onlyResponsibleParam = EmployeeUtils.getCurrentContactId();
+     
+}    
+else
+{    
+    onlyResponsibleParam = vars.get("$param.DistrictsByContactId_param");
+}
+
 var cond = newWhere();
 if (onlyResponsibleParam)
 {
diff --git a/entity/District_entity/recordcontainers/db/onDBDelete.js b/entity/District_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..7826987ae67e508518bb9c961baf11c6de5bf3ed
--- /dev/null
+++ b/entity/District_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,11 @@
+import("Sql_lib");
+import("system.vars");
+import("system.db");
+
+var districtId = vars.get("$field.DISTRICTID");
+
+//delete linked data
+db.deletes([
+    newWhere("DISTRICTCONTACT.DISTRICT_ID", districtId).buildDeleteStatement(),
+    newWhere("DISTRICTRESPONSIBLE.DISTRICT_ID", districtId).buildDeleteStatement()
+]);
\ No newline at end of file
diff --git a/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod b/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod
index e848d6cbed30ee763ef247d2b50de2b6a9fcd166..843d06ed290041280f020427f11738ff3dbe06d9 100644
--- a/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod
+++ b/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DocumentTemplateLink_entity</name>
+  <title>Attachment</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DocumentTemplateLink_entity/documentation.adoc</documentation>
-  <title>Attachment</title>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
@@ -59,8 +59,8 @@
       <children>
         <entityParameter>
           <name>DocumentTemplateType_param</name>
-          <title></title>
           <valueProcess>%aditoprj%/entity/DocumentTemplateLink_entity/entityfields/attachments/children/documenttemplatetype_param/valueProcess.js</valueProcess>
+          <title></title>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -111,25 +111,9 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/DocumentTemplateLink_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>05d25e85-1cd8-4897-be48-ecf699322b1f</name>
-          <tableName>DOCUMENTTEMPLATELINK</tableName>
-          <primaryKey>DOCUMENTTEMPLATELINKID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>34ca9c71-3de5-48ce-ade2-fa203360ebbd</name>
-          <tableName>DOCUMENTTEMPLATE</tableName>
-          <primaryKey>DOCUMENTTEMPLATEID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
@@ -160,6 +144,22 @@
           <recordfield>DOCUMENTTEMPLATELINK.USER_NEW</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>05d25e85-1cd8-4897-be48-ecf699322b1f</name>
+          <tableName>DOCUMENTTEMPLATELINK</tableName>
+          <primaryKey>DOCUMENTTEMPLATELINKID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>34ca9c71-3de5-48ce-ade2-fa203360ebbd</name>
+          <tableName>DOCUMENTTEMPLATE</tableName>
+          <primaryKey>DOCUMENTTEMPLATEID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js b/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js
index 72212f07978dfd9e4d0d8b8f670a0a3e08316621..0c634187ccb1d78964c27dccf2118f95aa72078d 100644
--- a/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js
@@ -4,5 +4,4 @@ import("Sql_lib");
 
 var cond = newWhereIfSet("DOCUMENTTEMPLATELINK.DOCUMENTTEMPLATE_ID_PARENT", "$param.DocumentId_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod b/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod
index 6db556011a3702c802f4b5a1c3ade5dcb8e172b2..4ac6764a9d7f53074eb326f85cd32142258de9d6 100644
--- a/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod
+++ b/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DocumentTemplatePlaceOfUse_entity</name>
+  <title>Documenttemplate Place Of Use</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/documentation.adoc</documentation>
-  <title>Documenttemplate Place Of Use</title>
   <titlePlural>Documenttemplate Places Of Useage</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -43,10 +43,6 @@
           <name>Blacklist_param</name>
           <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/blacklist_param/valueProcess.js</valueProcess>
         </entityParameter>
-        <entityParameter>
-          <name>GetAllContexts_param</name>
-          <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js</valueProcess>
-        </entityParameter>
       </children>
     </entityConsumer>
     <entityProvider>
@@ -63,14 +59,12 @@
       <children>
         <entityParameter>
           <name>DocumentTemplatePlaceOfUse_param</name>
-          <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js</valueProcess>
           <documentation>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/documentation.adoc</documentation>
         </entityParameter>
       </children>
     </entityProvider>
     <entityParameter>
       <name>DocumentTemplatePlaceOfUse_param</name>
-      <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js</valueProcess>
       <expose v="true" />
     </entityParameter>
     <entityProvider>
@@ -81,17 +75,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>df318337-f5d2-4046-989d-476f336b3fb4</name>
-          <tableName>DOCUMENTTEMPLATEPLACEOFUSE</tableName>
-          <primaryKey>DOCUMENTTEMPLATEPLACEOFUSEID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DOCUMENTTEMPLATE_ID.value</name>
@@ -106,6 +91,15 @@
           <recordfield>DOCUMENTTEMPLATEPLACEOFUSE.PLACEOFUSE</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>df318337-f5d2-4046-989d-476f336b3fb4</name>
+          <tableName>DOCUMENTTEMPLATEPLACEOFUSE</tableName>
+          <primaryKey>DOCUMENTTEMPLATEPLACEOFUSEID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js b/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js
deleted file mode 100644
index f786c8c7b183a2cf2240b9a314f499b55fcdf72c..0000000000000000000000000000000000000000
--- a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("system.vars");
-
-result.string(vars.get("$field.DOCUMENTTEMPLATEID"));
\ No newline at end of file
diff --git a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js b/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js
deleted file mode 100644
index f786c8c7b183a2cf2240b9a314f499b55fcdf72c..0000000000000000000000000000000000000000
--- a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("system.vars");
-
-result.string(vars.get("$field.DOCUMENTTEMPLATEID"));
\ No newline at end of file
diff --git a/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod b/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod
index bea4c1751d8494da143d1330f839615910e4cba6..cd4ef60ae543ee6cb2407d59bf510f368cb64f66 100644
--- a/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod
+++ b/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DocumentTemplateTypeCategory_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DocumentTemplateTypeCategory_entity/documentation.adoc</documentation>
@@ -55,18 +55,9 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>6cfa2424-b81b-4750-ae43-e3b1126eab0a</name>
-          <tableName>AB_KEYWORD_ENTRY</tableName>
-          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>AB_KEYWORD_ENTRYID.value</name>
@@ -81,6 +72,15 @@
           <recordfield>AB_KEYWORD_ENTRY.TITLE</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>6cfa2424-b81b-4750-ae43-e3b1126eab0a</name>
+          <tableName>AB_KEYWORD_ENTRY</tableName>
+          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js b/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js
index 42e83fc6e021aace37f74c3de356acc19c11a2d0..0cec405b433c9f43d6e536f471fb001b9da9ac43 100644
--- a/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js
@@ -19,5 +19,4 @@ if (usageFilter)
             , SqlBuilder.IN());
 }
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
index dbb9e49a3b635be85e5615422520d9f08d387aac..91281b4cfaa6c8b14ac125c4d9dda3ecb4825d64 100644
--- a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
+++ b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DocumentTemplate_entity</name>
+  <title>Document Template</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DocumentTemplate_entity/documentation.adoc</documentation>
   <icon>VAADIN:FILE_FONT</icon>
-  <title>Document Template</title>
   <contentTitleProcess>%aditoprj%/entity/DocumentTemplate_entity/contentTitleProcess.js</contentTitleProcess>
   <afterUiInit>%aditoprj%/entity/DocumentTemplate_entity/afterUiInit.js</afterUiInit>
   <onValidation>%aditoprj%/entity/DocumentTemplate_entity/onValidation.js</onValidation>
@@ -351,20 +351,11 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/DocumentTemplate_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <onDBInsert>%aditoprj%/entity/DocumentTemplate_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/DocumentTemplate_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/DocumentTemplate_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>982325b6-d12e-43f9-8ac2-c4b9f013aafd</name>
-          <tableName>DOCUMENTTEMPLATE</tableName>
-          <primaryKey>DOCUMENTTEMPLATEID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
@@ -423,6 +414,15 @@
           <expression>%aditoprj%/entity/DocumentTemplate_entity/recordcontainers/db/recordfieldmappings/kind.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>982325b6-d12e-43f9-8ac2-c4b9f013aafd</name>
+          <tableName>DOCUMENTTEMPLATE</tableName>
+          <primaryKey>DOCUMENTTEMPLATEID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtension>
           <name>Favorite_filter</name>
diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod
index cba9173b17cbedf17fc79b500cd69af232cb8c10..59b59b7355cf3724d716ce7eaee26ecc932722de 100644
--- a/entity/Document_entity/Document_entity.aod
+++ b/entity/Document_entity/Document_entity.aod
@@ -1,10 +1,12 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Document_entity</name>
+  <title>Document</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Document_entity/documentation.adoc</documentation>
-  <title>Document</title>
   <grantCreateProcess>%aditoprj%/entity/Document_entity/grantCreateProcess.js</grantCreateProcess>
+  <contentTitleProcess>%aditoprj%/entity/Document_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/Document_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <iconId>VAADIN:FILE</iconId>
   <titlePlural>Documents</titlePlural>
   <recordContainer>jdito</recordContainer>
@@ -57,7 +59,6 @@
       <name>BINDATA_UPLOAD</name>
       <title>File</title>
       <contentType>FILE</contentType>
-      <mandatory v="false" />
       <mandatoryProcess>%aditoprj%/entity/Document_entity/entityfields/bindata_upload/mandatoryProcess.js</mandatoryProcess>
       <onValueChange>%aditoprj%/entity/Document_entity/entityfields/bindata_upload/onValueChange.js</onValueChange>
       <onValueChangeTypes>
@@ -65,6 +66,7 @@
         <element>PROCESS</element>
         <element>PROCESS_SETVALUE</element>
       </onValueChangeTypes>
+      <onValidation>%aditoprj%/entity/Document_entity/entityfields/bindata_upload/onValidation.js</onValidation>
     </entityField>
     <entityActionGroup>
       <name>Document_actions</name>
@@ -143,27 +145,8 @@
     </entityActionField>
     <entityProvider>
       <name>Documents</name>
+      <documentation>%aditoprj%/entity/Document_entity/entityfields/documents/documentation.adoc</documentation>
       <recordContainer>jdito</recordContainer>
-      <children>
-        <entityParameter>
-          <name>AssignmentName_param</name>
-          <valueProcess>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/valueProcess.js</valueProcess>
-          <expose v="true" />
-          <documentation>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/documentation.adoc</documentation>
-        </entityParameter>
-        <entityParameter>
-          <name>AssignmentRowId_param</name>
-          <expose v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>AssignmentTable_param</name>
-          <expose v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>Keyword_param</name>
-          <expose v="true" />
-        </entityParameter>
-      </children>
       <dependencies>
         <entityDependency>
           <name>1eae1907-53ea-4d6f-bcf1-772052365020</name>
@@ -262,23 +245,12 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
-    </entityProvider>
-    <entityProvider>
-      <name>MainDocuments</name>
-      <recordContainer>jdito</recordContainer>
       <children>
-        <entityParameter>
-          <name>Keyword_param</name>
-          <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/keyword_param/valueProcess.js</valueProcess>
-          <expose v="true" />
-          <mandatory v="true" />
-          <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
-        </entityParameter>
         <entityParameter>
           <name>AssignmentName_param</name>
-          <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/valueProcess.js</valueProcess>
+          <valueProcess>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/valueProcess.js</valueProcess>
           <expose v="true" />
-          <documentation>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation>
+          <documentation>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/documentation.adoc</documentation>
         </entityParameter>
         <entityParameter>
           <name>AssignmentRowId_param</name>
@@ -289,10 +261,14 @@
           <expose v="true" />
         </entityParameter>
         <entityParameter>
-          <name>DisallowCreate_param</name>
-          <expose v="false" />
+          <name>Keyword_param</name>
+          <expose v="true" />
         </entityParameter>
       </children>
+    </entityProvider>
+    <entityProvider>
+      <name>MainDocuments</name>
+      <recordContainer>jdito</recordContainer>
       <dependencies>
         <entityDependency>
           <name>87d738a5-5d5e-425e-b013-007371475a38</name>
@@ -337,6 +313,33 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
+      <children>
+        <entityParameter>
+          <name>Keyword_param</name>
+          <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/keyword_param/valueProcess.js</valueProcess>
+          <expose v="true" />
+          <mandatory v="true" />
+          <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
+        </entityParameter>
+        <entityParameter>
+          <name>AssignmentName_param</name>
+          <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/valueProcess.js</valueProcess>
+          <expose v="true" />
+          <documentation>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation>
+        </entityParameter>
+        <entityParameter>
+          <name>AssignmentRowId_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>AssignmentTable_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>DisallowCreate_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
     </entityProvider>
     <entityParameter>
       <name>DisallowCreate_param</name>
@@ -346,6 +349,14 @@
     <entityProvider>
       <name>SingleDocument</name>
       <titlePlural>Document</titlePlural>
+      <dependencies>
+        <entityDependency>
+          <name>91f87622-d0e8-43c6-99a0-5f9cebf79aaf</name>
+          <entityName>SerialLetter_entity</entityName>
+          <fieldName>Documents</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
       <children>
         <entityParameter>
           <name>AssignmentName_param</name>
@@ -356,20 +367,38 @@
           <valueProcess>%aditoprj%/entity/Document_entity/entityfields/singledocument/children/disallowcreate_param/valueProcess.js</valueProcess>
           <expose v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>MSTTeamId_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
-      <dependencies>
-        <entityDependency>
-          <name>91f87622-d0e8-43c6-99a0-5f9cebf79aaf</name>
-          <entityName>SerialLetter_entity</entityName>
-          <fieldName>Documents</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
     </entityProvider>
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityActionGroup>
+      <name>MSTeam</name>
+      <title>MS Teams</title>
+      <stateProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/stateProcess.js</stateProcess>
+      <children>
+        <entityActionField>
+          <name>synchronizeDocuments</name>
+          <title>Synchronize documents</title>
+          <onActionProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:REFRESH</iconId>
+          <stateProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js</stateProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityParameter>
+      <name>MSTTeamId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>assignmentRowID</name>
+      <valueProcess>%aditoprj%/entity/Document_entity/entityfields/assignmentrowid/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
@@ -404,6 +433,9 @@
         <jDitoRecordFieldMapping>
           <name>KEYWORD.value</name>
         </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>assignmentRowID.value</name>
+        </jDitoRecordFieldMapping>
       </recordFieldMappings>
     </jDitoRecordContainer>
   </recordContainers>
diff --git a/entity/Document_entity/contentDescriptionProcess.js b/entity/Document_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..06a46eb63894622c07e5021280fbb098c3d4385c
--- /dev/null
+++ b/entity/Document_entity/contentDescriptionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.DESCRIPTION"));
\ No newline at end of file
diff --git a/entity/Document_entity/contentTitleProcess.js b/entity/Document_entity/contentTitleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..28fd67de270b497ba718dd4e91766bd22936f67e
--- /dev/null
+++ b/entity/Document_entity/contentTitleProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.NAME"));
\ No newline at end of file
diff --git a/entity/Document_entity/entityfields/assignmentrowid/valueProcess.js b/entity/Document_entity/entityfields/assignmentrowid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..00e8882d0d160871dd3a4482345307be2e9af9f4
--- /dev/null
+++ b/entity/Document_entity/entityfields/assignmentrowid/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+if (!vars.get("$this.value"))
+    result.string(vars.get("$param.AssignmentRowId_param"));
\ No newline at end of file
diff --git a/entity/Document_entity/entityfields/bindata_upload/mandatoryProcess.js b/entity/Document_entity/entityfields/bindata_upload/mandatoryProcess.js
index 9b10455db373f6515f4045f5c7095c39eecdc778..d250f4bf65f47b01e5e7af7afd0dda64fac4db98 100644
--- a/entity/Document_entity/entityfields/bindata_upload/mandatoryProcess.js
+++ b/entity/Document_entity/entityfields/bindata_upload/mandatoryProcess.js
@@ -3,6 +3,6 @@ import("system.vars");
 import("system.result");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string("true");
+    result.string(true);
 else
-    result.string("false");
+    result.string(false);
\ No newline at end of file
diff --git a/entity/Document_entity/entityfields/bindata_upload/onValidation.js b/entity/Document_entity/entityfields/bindata_upload/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..dae974a4822013dd32f88bfe3cc684a3fca1fcb7
--- /dev/null
+++ b/entity/Document_entity/entityfields/bindata_upload/onValidation.js
@@ -0,0 +1,10 @@
+import("system.translate");
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    if (!vars.get("$local.value"))
+        result.string(translate.text("No file selected."));
+}
\ No newline at end of file
diff --git a/entity/Document_entity/entityfields/bindata_upload/onValueChange.js b/entity/Document_entity/entityfields/bindata_upload/onValueChange.js
index c0b7a0db07072a7f30d5bfdd1afef3713e5a9d72..39737df167e2558f2fbc6bb3b6a2ca1607b21e7a 100644
--- a/entity/Document_entity/entityfields/bindata_upload/onValueChange.js
+++ b/entity/Document_entity/entityfields/bindata_upload/onValueChange.js
@@ -3,5 +3,5 @@ import("system.neon");
 import("Entity_lib");
 import("Document_lib");
 
-var uploadValue = vars.get("local.value");
+var uploadValue = vars.get("$local.value");
 neon.setFieldValue("$field.NAME", DocumentUtil.getFilenameFromUpload(uploadValue));
diff --git a/entity/Document_entity/entityfields/documents/documentation.adoc b/entity/Document_entity/entityfields/documents/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..e2c292d974ff694c3b44fef1fbb7d5da60cb7db0
--- /dev/null
+++ b/entity/Document_entity/entityfields/documents/documentation.adoc
@@ -0,0 +1,3 @@
+= Documents
+
+Provider for getting all documents linked to an object.
\ No newline at end of file
diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..aef50aebaf302304a699c6713ceeec227d70350b
--- /dev/null
+++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js
@@ -0,0 +1,9 @@
+import("system.neon");
+import("system.vars");
+
+neon.openContext("MSTeamsDocument", "MSTeamsDocumentEdit_view", null, neon.OPERATINGSTATE_VIEW, {
+    "MSTTeamId_param" : vars.get("$param.MSTTeamId_param"),
+    "ObjectRowId_param" : vars.get("$param.AssignmentRowId_param"),
+    "AssignmentName_param" : vars.get("$param.AssignmentName_param"),
+    "AssignmentTable_param" : vars.get("$param.AssignmentTable_param")
+});
diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0bd4c4c544c99f66a5a2ce914d8abd13910ad5c5
--- /dev/null
+++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js
@@ -0,0 +1,7 @@
+import("MSTeams_lib");
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+var isEnabled = MSTeamsUtils.isTeamsEnabled() && MSTeamsUtils.isTeamActive(vars.get("$param.MSTTeamId_param"));
+result.string(isEnabled ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_DISABLED);
\ No newline at end of file
diff --git a/entity/Document_entity/entityfields/msteam/stateProcess.js b/entity/Document_entity/entityfields/msteam/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cd16b0694665a45b7c95ff7aa35547fef4e4f633
--- /dev/null
+++ b/entity/Document_entity/entityfields/msteam/stateProcess.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+result.string(vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param")
+    ? neon.COMPONENTSTATE_EDITABLE
+    : neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Document_entity/recordcontainers/jdito/contentProcess.js b/entity/Document_entity/recordcontainers/jdito/contentProcess.js
index 1d34f32095204dab4a658272f9725848ba444e1e..139a1d284ebec853cbfb0d6eb6a0b9b1f1351019 100644
--- a/entity/Document_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Document_entity/recordcontainers/jdito/contentProcess.js
@@ -30,7 +30,7 @@ if(vars.exists("$param.AssignmentTable_param") &&
         var previewAvatar = metadata[i].preview || "VAADIN:FILE";
         documents.push( [metadata[i].id, metadata[i].filename, metadata[i].size, 
             metadata[i].edit, previewAvatar, metadata[i].mimetype, 
-            metadata[i].description, metadata[i].keyword]);
+            metadata[i].description, metadata[i].keyword, assignmentRowId]);
     }
 
     result.object(documents);
diff --git a/entity/Document_entity/recordcontainers/jdito/onDelete.js b/entity/Document_entity/recordcontainers/jdito/onDelete.js
index 74fe70263290d64f3566a2806e4b2dd25bd81cf4..8a2470d3de3c31639294f911d2a53078d96f1a09 100644
--- a/entity/Document_entity/recordcontainers/jdito/onDelete.js
+++ b/entity/Document_entity/recordcontainers/jdito/onDelete.js
@@ -1,2 +1,5 @@
+import("Workflow_lib");
 import("Document_lib");
 DocumentUtil.deleteCurrentDocument();
+
+WorkflowSignalSender.deleted();
diff --git a/entity/Document_entity/recordcontainers/jdito/onInsert.js b/entity/Document_entity/recordcontainers/jdito/onInsert.js
index 99bcdc3cb62d9a1f3c1830416e54b9a537026640..3f40dd1a2053a6cb5a202c82085fe3c51afda898 100644
--- a/entity/Document_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/Document_entity/recordcontainers/jdito/onInsert.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("system.db");
 import("system.vars");
 import("Document_lib");
@@ -21,3 +22,5 @@ if(bindata != '' && filename != ''){
         bindata, filename, description, keyword, alias, id);
     
 }
+
+WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/Document_entity/recordcontainers/jdito/onUpdate.js b/entity/Document_entity/recordcontainers/jdito/onUpdate.js
index 322511925adce14197428d398bd53320f3bd3d14..a4b360c42e9aa648f78c5a03e10b7d2b7e153629 100644
--- a/entity/Document_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/Document_entity/recordcontainers/jdito/onUpdate.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("system.vars");
 import("system.db");
 import("Document_lib");
@@ -22,4 +23,6 @@ if(vars.get("$field.IS_MAIN_DOCUMENT") == '1') {
 if(bindata != '')
     db.updateBinary(id, parentId, bindata, fileName, description, keyword, alias);
 else
-    db.updateBinaryMetadata(id, parentId, fileName, description, keyword, alias);
\ No newline at end of file
+    db.updateBinaryMetadata(id, parentId, fileName, description, keyword, alias);
+
+WorkflowSignalSender.updated();
\ No newline at end of file
diff --git a/entity/DuplicateScannerResultFieldConfig_entity/DuplicateScannerResultFieldConfig_entity.aod b/entity/DuplicateScannerResultFieldConfig_entity/DuplicateScannerResultFieldConfig_entity.aod
index 3297b0d171e13e5fdf8358941a420a4d3d65ca35..b336a59f809d6d5834741fc16f8a6034815597b2 100644
--- a/entity/DuplicateScannerResultFieldConfig_entity/DuplicateScannerResultFieldConfig_entity.aod
+++ b/entity/DuplicateScannerResultFieldConfig_entity/DuplicateScannerResultFieldConfig_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DuplicateScannerResultFieldConfig_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <recordContainer>recordContainer</recordContainer>
@@ -58,17 +58,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>recordContainer</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/DuplicateScannerResultFieldConfig_entity/recordcontainers/recordcontainer/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>f7126f94-9e4c-46a0-8dc9-9e52fda1c7c0</name>
-          <tableName>DUPLICATESCANNERRESULTFIELDCONFIG</tableName>
-          <primaryKey>ID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
@@ -99,6 +90,15 @@
           <recordfield>DUPLICATESCANNERRESULTFIELDCONFIG.DUPLICATESCANNER_ID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>f7126f94-9e4c-46a0-8dc9-9e52fda1c7c0</name>
+          <tableName>DUPLICATESCANNERRESULTFIELDCONFIG</tableName>
+          <primaryKey>ID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod b/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod
index fb343c9aa35db6794cf56f61fb5920617e799a91..450acf9d5e92b6abc27e9e244985db351737b6b9 100644
--- a/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod
+++ b/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DuplicateScanner_entity</name>
+  <title>Duplicate Configuration</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DuplicateScanner_entity/documentation.adoc</documentation>
-  <title>Duplicate Configuration</title>
   <grantCreate v="false" />
   <grantCreateProcess>%aditoprj%/entity/DuplicateScanner_entity/grantCreateProcess.js</grantCreateProcess>
   <grantDelete v="false" />
@@ -110,19 +110,10 @@
   <recordContainers>
     <dbRecordContainer>
       <name>DBRecordContainer</name>
-      <alias>Data_alias</alias>
       <onDBInsert>%aditoprj%/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>b61b26d3-e823-45ba-9ac5-12acaaa1ec15</name>
-          <tableName>DUPLICATESCANNER</tableName>
-          <primaryKey>ID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ENTITY_TO_SCAN_NAME.value</name>
@@ -165,6 +156,15 @@
           <recordfield>DUPLICATESCANNER.SCAN_PATTERN</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>b61b26d3-e823-45ba-9ac5-12acaaa1ec15</name>
+          <tableName>DUPLICATESCANNER</tableName>
+          <primaryKey>ID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js b/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js
index c8e53ac00d768ffab9c7f50553de8b2f3d327bed..c752ef5850f94d87e6353b5cace686dafb172353 100644
--- a/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js
+++ b/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js
@@ -1,3 +1,4 @@
+import("Sql_lib");
 import("system.vars");
 
 var rowdata = vars.get("$local.rowdata");
@@ -6,5 +7,6 @@ let scanPattern = JSON.parse(rowdata["DUPLICATESCANNER.SCAN_PATTERN"]);
 if (scanPattern.provider == undefined) 
 { 
     scanPattern.provider = "indexP";
-    vars.set("$field.SCAN_PATTERN", JSON.stringify(scanPattern));
+    newWhere("DUPLICATESCANNER.ID", vars.get("$local.uid"))
+    .updateData(true, "DUPLICATESCANNER", ["DUPLICATESCANNER.SCAN_PATTERN"], null,[JSON.stringify(scanPattern)]);
 }
\ No newline at end of file
diff --git a/entity/DuplicatesUnrelated_entity/DuplicatesUnrelated_entity.aod b/entity/DuplicatesUnrelated_entity/DuplicatesUnrelated_entity.aod
index eb93c9ccc92f196b47836d66919105f669b6e984..7d2241b72c2014a236b28f81f3f8a49060a1f768 100644
--- a/entity/DuplicatesUnrelated_entity/DuplicatesUnrelated_entity.aod
+++ b/entity/DuplicatesUnrelated_entity/DuplicatesUnrelated_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>DuplicatesUnrelated_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/DuplicatesUnrelated_entity/documentation.adoc</documentation>
diff --git a/entity/Duplicates_entity/Duplicates_entity.aod b/entity/Duplicates_entity/Duplicates_entity.aod
index 54ee932a3235f4e127feeb5112c9c11e3e7f2e47..fe9a19485083c678b01823430ae02631da122683 100644
--- a/entity/Duplicates_entity/Duplicates_entity.aod
+++ b/entity/Duplicates_entity/Duplicates_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Duplicates_entity</name>
+  <title>Duplicates</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Duplicates_entity/documentation.adoc</documentation>
-  <title>Duplicates</title>
   <siblings>
     <element>DuplicatesUnrelated_entity</element>
   </siblings>
@@ -54,8 +54,8 @@
         </entityParameter>
         <entityParameter>
           <name>ClusterId_param</name>
-          <title></title>
           <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/selfpersonduplicatesconsumer/children/clusterid_param/valueProcess.js</valueProcess>
+          <title></title>
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/Email_entity/Email_entity.aod b/entity/Email_entity/Email_entity.aod
index 3fae2a234bd2ebccb4ee178dd4c55cbdbacfb054..852de0f302412a156749687e8310926281b57465 100644
--- a/entity/Email_entity/Email_entity.aod
+++ b/entity/Email_entity/Email_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Email_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Email_entity/documentation.adoc</documentation>
diff --git a/entity/Email_entity/entityfields/recipient/displayValueProcess.js b/entity/Email_entity/entityfields/recipient/displayValueProcess.js
index 8e2f689eb15234549c8e1586c5aeba949ada2d62..ee4d3155ec9f2c715989a6c0a5d13d57fc0ab006 100644
--- a/entity/Email_entity/entityfields/recipient/displayValueProcess.js
+++ b/entity/Email_entity/entityfields/recipient/displayValueProcess.js
@@ -1,6 +1,14 @@
+import("Communication_lib");
 import("system.result");
-import("system.neon");
 import("system.vars");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.get("$field.RECIPIENT"));
\ No newline at end of file
+if(vars.get("$field.RECIPIENT"))
+{
+    var res = "";
+    if (vars.exists("$param.Recipient_param") && vars.get("$param.Recipient_param"))
+        res = vars.get("$param.Recipient_param");
+    else if (vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param"))
+        res = CommUtil.getStandardMail(vars.get("$param.ContactId_param"));
+    
+    result.string(res);
+}
\ No newline at end of file
diff --git a/entity/Email_entity/entityfields/recipient/valueProcess.js b/entity/Email_entity/entityfields/recipient/valueProcess.js
index 0b715605584a88bb3436e29a08fc69651eb5efc8..13f68a3ed37b6a9fb973117f5743750c34f2a3b1 100644
--- a/entity/Email_entity/entityfields/recipient/valueProcess.js
+++ b/entity/Email_entity/entityfields/recipient/valueProcess.js
@@ -1,16 +1,14 @@
 import("Communication_lib");
 import("system.result");
-import("system.neon");
 import("system.vars");
 
 if (vars.get("$this.value") == null)
 {
+    var res = "";
     if (vars.exists("$param.Recipient_param") && vars.get("$param.Recipient_param"))
-        result.string(vars.get("$param.Recipient_param"));
+        res = vars.get("$param.Recipient_param");
     else if (vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param"))
-        result.string(CommUtil.getStandardMail(vars.get("$param.ContactId_param")));
-}
-else if (!vars.get("$this.value").includes("@") && vars.get("$this.value") != "")
-    result.string(newSelect("ADDR")
-                        .from("COMMUNICATION")
-                        .where("COMMUNICATION.COMMUNICATIONID", vars.get("$this.value")).cell());
\ No newline at end of file
+        res = CommUtil.getStandardMail(vars.get("$param.ContactId_param"));
+    
+    result.string(res);
+}
\ No newline at end of file
diff --git a/entity/EmployeeRole_entity/EmployeeRole_entity.aod b/entity/EmployeeRole_entity/EmployeeRole_entity.aod
index 8bf5d69b2368ae1236e0d8eedd86745dbfa9927f..74475d9d45b11c221626176f114da280cd1c5fc4 100644
--- a/entity/EmployeeRole_entity/EmployeeRole_entity.aod
+++ b/entity/EmployeeRole_entity/EmployeeRole_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>EmployeeRole_entity</name>
+  <title>Role</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/EmployeeRole_entity/documentation.adoc</documentation>
-  <title>Role</title>
   <grantUpdate v="false" />
   <titlePlural>Roles</titlePlural>
   <recordContainer>jdito</recordContainer>
diff --git a/entity/EmployeeToken_entity/EmployeeToken_entity.aod b/entity/EmployeeToken_entity/EmployeeToken_entity.aod
index 0303a7a0bc5d1bd5989b3bdc68d335f64e921ad4..bb7b9740621ddec0a55a5603a430d09a1a83b760 100644
--- a/entity/EmployeeToken_entity/EmployeeToken_entity.aod
+++ b/entity/EmployeeToken_entity/EmployeeToken_entity.aod
@@ -1,8 +1,8 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>EmployeeToken_entity</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
   <title>User token</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
   <titlePlural>User tokens</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -85,17 +85,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>_____SYSTEMALIAS</alias>
       <conditionProcess>%aditoprj%/entity/EmployeeToken_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>98f70a7c-4e43-4984-ad69-44339150f1ee</name>
-          <tableName>ASYS_USERTOKEN</tableName>
-          <primaryKey>ID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>_____SYSTEMALIAS</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ID.value</name>
@@ -126,6 +117,15 @@
           <recordfield>ASYS_USERTOKEN.VALID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>98f70a7c-4e43-4984-ad69-44339150f1ee</name>
+          <tableName>ASYS_USERTOKEN</tableName>
+          <primaryKey>ID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Employee_entity/Employee_entity.aod b/entity/Employee_entity/Employee_entity.aod
index c6c1df49e89ca1dde5d9de14f50e8f38a120fe4c..bfd8058aad0b247a60cbaa1f25a8ffe947c08eb4 100644
--- a/entity/Employee_entity/Employee_entity.aod
+++ b/entity/Employee_entity/Employee_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Employee_entity</name>
+  <title>Employee</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Employee_entity/documentation.adoc</documentation>
-  <title>Employee</title>
   <siblings />
   <grantDeleteProcess>%aditoprj%/entity/Employee_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Employee_entity/contentTitleProcess.js</contentTitleProcess>
@@ -14,6 +14,27 @@
   <titlePlural>Employees</titlePlural>
   <recordContainer>jdito</recordContainer>
   <entityFields>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Employee_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Employee_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Employee_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityProvider>
       <name>#PROVIDER</name>
       <lookupIdfield>CONTACT_ID</lookupIdfield>
@@ -265,8 +286,14 @@
           <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
-          <name>e9a775ab-e63d-493d-94dc-6b27dfb77173</name>
-          <entityName>DistrictResponsible_entity</entityName>
+          <name>7e6bff46-4047-49da-a5ef-40510a8255a2</name>
+          <entityName>VisitRecommendation_entity</entityName>
+          <fieldName>Employees</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>14d61385-28fb-40b2-a31a-a5764a8da2f0</name>
+          <entityName>VisitPlanEmployeeWeek_entity</entityName>
           <fieldName>Employees</fieldName>
           <isConsumer v="false" />
         </entityDependency>
@@ -325,6 +352,12 @@
           <fieldName>Employees</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>c83ebe7a-5a3b-49ed-b40c-d667bb72f268</name>
+          <entityName>Observation_entity</entityName>
+          <fieldName>Users</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
     </entityProvider>
     <entityProvider>
@@ -410,6 +443,10 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityParameter>
+      <name>EmployeeContactIdWhitelist_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
diff --git a/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Employee_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/Employee_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Employee_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/Employee_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Employee_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/Employee_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Employee_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Employee_entity/recordcontainers/jdito/contentProcess.js b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js
index 42ea78f8cac66461da9ad093bf976729358f76db..8970fd6bd60fb0f744c14a2089ae5a213ef71702 100644
--- a/entity/Employee_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("Sql_lib");
 import("system.db");
 import("Attribute_lib");
@@ -12,6 +13,10 @@ import("Employee_lib");
 var users;
 if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
     users = tools.getUsersByAttribute(tools.NAME, vars.get("$local.idvalues"), tools.PROFILE_FULL);
+else if(vars.exists("$param.EmployeeContactIdWhitelist_param") && vars.get("$param.EmployeeContactIdWhitelist_param"))
+{
+    users = tools.getUsersByAttribute(tools.CONTACTID, JSON.parse(vars.get("$param.EmployeeContactIdWhitelist_param")), tools.PROFILE_DEFAULT);
+}
 else
 {
     var values = ["true", "false"];
diff --git a/entity/Employee_entity/recordcontainers/jdito/onInsert.js b/entity/Employee_entity/recordcontainers/jdito/onInsert.js
index 4ad2125ac50b2285f7a4b9e73c205c510004b7e1..fef358b7702ec286242ecb653dcbf02309db38b3 100644
--- a/entity/Employee_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/Employee_entity/recordcontainers/jdito/onInsert.js
@@ -1,30 +1,30 @@
-import("Workflow_lib");
-import("system.neon");
-import("system.vars");
-import("system.tools");
-import("Employee_lib");
-
-var rowdata = vars.get("$local.rowdata");
-
-var user = {};
-var params = []; //this has to be an array
-params[tools.EMAIL] = rowdata["EMAIL_ADDRESS.value"];
-params[tools.CALENDARID] = rowdata["EMAIL_ADDRESS.value"];
-params[tools.DESCRIPTION] = rowdata["DESCRIPTION.value"];
-params[tools.CONTACTID] = rowdata["CONTACT_ID.value"];
-params[tools.FIRSTNAME] = rowdata["FIRSTNAME.value"];
-params[tools.LASTNAME] = rowdata["LASTNAME.value"];
-params[tools.ISACTIVE] = rowdata["ISACTIVE.value"];
-params.department = rowdata["DEPARTMENT.value"];
-params[tools.PHONE_ADDRESS] = rowdata["PHONE_ADDRESS.value"];
-
-user[tools.TITLE] = rowdata["TITLE.value"];
-user[tools.PARAMS] = params;
-
-if (rowdata["PASSWORD.value"] && rowdata["PASSWORD.value"] == rowdata["CONFIRM_PASSWORD.value"])
-{
-    user[tools.PASSWORD] = rowdata["PASSWORD.value"];
-}
-tools.insertUser(user, rowdata["UID.value"]);
-
+import("Workflow_lib");
+import("system.neon");
+import("system.vars");
+import("system.tools");
+import("Employee_lib");
+
+var rowdata = vars.get("$local.rowdata");
+
+var user = {};
+var params = []; //this has to be an array
+params[tools.EMAIL] = rowdata["EMAIL_ADDRESS.value"];
+params[tools.CALENDARID] = rowdata["EMAIL_ADDRESS.value"];
+params[tools.DESCRIPTION] = rowdata["DESCRIPTION.value"];
+params[tools.CONTACTID] = rowdata["CONTACT_ID.value"];
+params[tools.FIRSTNAME] = rowdata["FIRSTNAME.value"];
+params[tools.LASTNAME] = rowdata["LASTNAME.value"];
+params[tools.ISACTIVE] = rowdata["ISACTIVE.value"];
+params.department = rowdata["DEPARTMENT.value"];
+params[tools.PHONE_ADDRESS] = rowdata["PHONE_ADDRESS.value"];
+
+user[tools.TITLE] = rowdata["TITLE.value"];
+user[tools.PARAMS] = params;
+
+if (rowdata["PASSWORD.value"] && rowdata["PASSWORD.value"] == rowdata["CONFIRM_PASSWORD.value"])
+{
+    user[tools.PASSWORD] = rowdata["PASSWORD.value"];
+}
+tools.insertUser(user, rowdata["UID.value"]);
+
 WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod b/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod
index e010ab9f6c122d2c7ece42f3c17cad5eb4ddae91..dc20a3f5bb9bec0c61d420246445af1ee6a8d848 100644
--- a/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod
+++ b/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ExportTemplateField_entity</name>
+  <title>Export Template Field</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ExportTemplateField_entity/documentation.adoc</documentation>
-  <title>Export Template Field</title>
   <titlePlural>Export Template Fields</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -41,16 +41,9 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
-      <children>
-        <entityParameter>
-          <name>ExportTemplateField_param</name>
-          <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
     </entityProvider>
     <entityParameter>
       <name>ExportTemplateField_param</name>
-      <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js</valueProcess>
       <expose v="true" />
     </entityParameter>
     <entityField>
@@ -69,20 +62,11 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="true" />
       <isReadOnly v="false" />
       <conditionProcess>%aditoprj%/entity/ExportTemplateField_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/ExportTemplateField_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>7236de85-f623-4f6a-9ff5-d9014a2f7a4c</name>
-          <tableName>EXPORTTEMPLATEFIELD</tableName>
-          <primaryKey>EXPORTTEMPLATEFIELDID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>EXPORTTEMPLATE_ID.value</name>
@@ -101,6 +85,15 @@
           <recordfield>EXPORTTEMPLATEFIELD.SORTING</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>7236de85-f623-4f6a-9ff5-d9014a2f7a4c</name>
+          <tableName>EXPORTTEMPLATEFIELD</tableName>
+          <primaryKey>EXPORTTEMPLATEFIELDID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js
deleted file mode 100644
index 3cbc49005642cf289c724b7b2de89a5db926e630..0000000000000000000000000000000000000000
--- a/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$field.EXPORTTEMPLATEID"));
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js
deleted file mode 100644
index 3cbc49005642cf289c724b7b2de89a5db926e630..0000000000000000000000000000000000000000
--- a/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$field.EXPORTTEMPLATEID"));
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod b/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod
index 0dc5e1fc3a6ba07fa7a4b83bf0525011d9a81f57..7689336446e654e8fe6101f83224fe07f7d6728c 100644
--- a/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod
+++ b/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ExportTemplatePlaceOfUse_entity</name>
+  <title>Place of Use</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/documentation.adoc</documentation>
-  <title>Place of Use</title>
   <titlePlural>Places of Usage</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -50,7 +50,6 @@
     </entityConsumer>
     <entityParameter>
       <name>ExportTemplatePlaceOfUse_param</name>
-      <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js</valueProcess>
       <expose v="true" />
     </entityParameter>
     <entityProvider>
@@ -67,7 +66,6 @@
       <children>
         <entityParameter>
           <name>ExportTemplatePlaceOfUse_param</name>
-          <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js</valueProcess>
           <expose v="true" />
         </entityParameter>
       </children>
@@ -80,17 +78,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>5e6f806e-c845-49ab-bfee-31b12e4c41f3</name>
-          <tableName>EXPORTTEMPLATEPLACEOFUSE</tableName>
-          <primaryKey>EXPORTTEMPLATEPLACEOFUSEID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>EXPORTTEMPLATE_ID.value</name>
@@ -105,6 +94,15 @@
           <recordfield>EXPORTTEMPLATEPLACEOFUSE.PLACEOFUSE</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>5e6f806e-c845-49ab-bfee-31b12e4c41f3</name>
+          <tableName>EXPORTTEMPLATEPLACEOFUSE</tableName>
+          <primaryKey>EXPORTTEMPLATEPLACEOFUSEID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js
deleted file mode 100644
index 3cbc49005642cf289c724b7b2de89a5db926e630..0000000000000000000000000000000000000000
--- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$field.EXPORTTEMPLATEID"));
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js
deleted file mode 100644
index 3cbc49005642cf289c724b7b2de89a5db926e630..0000000000000000000000000000000000000000
--- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$field.EXPORTTEMPLATEID"));
\ No newline at end of file
diff --git a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
index 2840322c0f7c58e64da8ab5f42cd09ded6c47426..f68f881f9ad028080e6c7a3d2e1bff49295b9e88 100644
--- a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
+++ b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ExportTemplateSelection_entity</name>
+  <title>Exporttempalte Selection</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ExportTemplateSelection_entity/documentation.adoc</documentation>
-  <title>Exporttempalte Selection</title>
   <contentTitleProcess>%aditoprj%/entity/ExportTemplateSelection_entity/contentTitleProcess.js</contentTitleProcess>
   <recordContainer>datalessRecordContainer</recordContainer>
   <entityFields>
diff --git a/entity/ExportTemplate_entity/ExportTemplate_entity.aod b/entity/ExportTemplate_entity/ExportTemplate_entity.aod
index a38388bbd5de723db021a3cb15d5d40cb1322e35..8fbadb06e1dd4ca130d3f21172629c2c4031a2db 100644
--- a/entity/ExportTemplate_entity/ExportTemplate_entity.aod
+++ b/entity/ExportTemplate_entity/ExportTemplate_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ExportTemplate_entity</name>
+  <title>Export Template</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ExportTemplate_entity/documentation.adoc</documentation>
   <icon>NEON:EXPORT</icon>
-  <title>Export Template</title>
   <grantCreate v="true" />
   <grantUpdate v="true" />
   <grantDelete v="true" />
@@ -61,6 +61,7 @@
     <entityField>
       <name>DESCRIPTION</name>
       <title>Description</title>
+      <contentType>LONG_TEXT</contentType>
     </entityField>
     <entityConsumer>
       <name>Languages</name>
@@ -153,22 +154,21 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityActionField>
+      <name>openAdminView</name>
+      <title>Open admin view</title>
+      <onActionProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CURLY_BRACKETS</iconId>
+      <stateProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js</stateProcess>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isReadOnly v="false" />
       <conditionProcess>%aditoprj%/entity/ExportTemplate_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>ce410f40-846b-43e6-9c30-150393cee43d</name>
-          <tableName>EXPORTTEMPLATE</tableName>
-          <primaryKey>EXPORTTEMPLATEID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <onDBDelete>%aditoprj%/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
@@ -229,6 +229,15 @@
           <recordfield>EXPORTTEMPLATE.FIELDDELIMITER</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>ce410f40-846b-43e6-9c30-150393cee43d</name>
+          <tableName>EXPORTTEMPLATE</tableName>
+          <primaryKey>EXPORTTEMPLATEID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtension>
           <name>Favorite_filter</name>
diff --git a/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js b/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a19f58f080757e5cb8ad9f147beee77a0edb6258
--- /dev/null
+++ b/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("Context_lib");
+
+AdminViewUtils.open("EXPORTTEMPLATEID", [
+    ["DATE_NEW", vars.get("$field.DATE_NEW"), "DATE"],
+    ["DATE_EDIT", vars.get("$field.DATE_EDIT"), "DATE"],
+    ["USER_NEW", vars.get("$field.USER_NEW"), "DATE"],
+    ["USER_EDIT", vars.get("$field.USER_EDIT"), "DATE"]
+]);
\ No newline at end of file
diff --git a/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js b/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..38f2298db7304b4d44a15fbad7f720558c02da99
--- /dev/null
+++ b/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js
@@ -0,0 +1,4 @@
+import("Context_lib");
+import("system.result");
+
+result.string(AdminViewUtils.getActionState());
\ No newline at end of file
diff --git a/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js b/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..571ed49a75e9c390650c56139d99139532a32649
--- /dev/null
+++ b/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("Sql_lib");
+
+var exportTemplateId = vars.get("$local.uid");
+
+newWhere("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATE_ID", exportTemplateId).deleteData();
+newWhere("EXPORTTEMPLATESELECTION.EXPORTTEMPLATE_ID", exportTemplateId).deleteData();
+newWhere("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", exportTemplateId).deleteData();
\ No newline at end of file
diff --git a/entity/Favorite_entity/Favorite_entity.aod b/entity/Favorite_entity/Favorite_entity.aod
index bb5ba3f508b3c517b43af5aa949aee70a4a19e76..1e0fbcad30170f3fe30ea9dcfa810ab10bef515a 100644
--- a/entity/Favorite_entity/Favorite_entity.aod
+++ b/entity/Favorite_entity/Favorite_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Favorite_entity</name>
+  <title>Favorite</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Favorite_entity/documentation.adoc</documentation>
   <icon>VAADIN:STAR</icon>
-  <title>Favorite</title>
   <siblings>
     <element>Organisation_entity</element>
   </siblings>
diff --git a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js
index 3bf9fefa02cb04a9da8583c410e0f8c4782fc974..b352d8c4163bbba3d533aa5d431fafa1b7393106 100644
--- a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js
+++ b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js
@@ -8,41 +8,61 @@ import("system.favorite");
 import("system.tools");
 import("system.entities");
 
+/*
+ *  loading favorites by id
+ */
 if(vars.get("$local.idvalues") && vars.get("$local.idvalues").length != 0)
 {
-    var selected = vars.get("$local.idvalues");
-    var selectedFavos = [];
+    var seekedByCore = vars.get("$local.idvalues");
+    var seekedByCoreFavos = [];
     
-    for(h = 0; h < selected.length; h++)
-        selectedFavos.push(buildFavoriteForDeletion(favorite.getFavorites(favorite.createGetFavoriteByIdConfig()
-                                                                                    .setId(selected[h]))[0]));
+    var config = favorite.createGetFavoriteByIdConfig().setIds(seekedByCore);
+    seekedByCoreFavos = buildFavoritesForDeletion(favorite.getFavorites(config));
 
-    result.object(selectedFavos);
+    result.object(seekedByCoreFavos);
 }
+
+/*
+ * loading and filtering by UI
+ */
 else
 {
-    
+    //save active filters and their logical operator
     var filters = vars.get("$local.filter");
     var activeFilters = [];
+    var logicalConnectionOperator;
     if(filters["filter"] != null)
+    {
+        logicalConnectionOperator = filters["filter"]["operator"];
         for(g = 0; g < filters["filter"]["childs"].length; g++)
             activeFilters.push(filters["filter"]["childs"][g])
+    }
     
     
     var finishedFavoritesForDisplay = [];
     
+    /*
+     * load all contexts and all favorites
+     */
     var allContexts = getAllFavoriteEnabledContexts();
+    var allFavorites = favorite.getFavorites(favorite.createGetFavoritesConfig().setUserId(tools.getCurrentUser()[tools.NAME]));
+    
+    /*
+     * complete-load (in buildFavorites) favorites by one context at a time
+     */
     for(i = 0; i < allContexts.length; i++)
     {
-        var allFavorites = favorite.getFavorites(favorite.createGetFavoritesConfig()
-                                                            .setUserId(tools.getCurrentUser()[tools.NAME])
-                                                            .setObjectType(allContexts[i]));
-        var builtFavos = buildFavorites(allFavorites, allContexts[i]);
+        var contextFavorites = [];
+        for(x = 0; x < allFavorites.length; x++)
+            if(allFavorites[x]["objecttype"] === allContexts[i])
+                contextFavorites.push(allFavorites[x])
+            
+        var builtFavos = buildFavorites(contextFavorites, allContexts[i]);
     
         for(let x = 0; x < builtFavos.length; x++)
         {
             var favo = builtFavos[x];
-            if(isFiltered(activeFilters, favo))
+            if(isFiltered(activeFilters, logicalConnectionOperator, favo))
                 finishedFavoritesForDisplay.push(favo);
         }
     }
@@ -50,44 +70,49 @@ else
     result.object(finishedFavoritesForDisplay);
 }
 
-function isFiltered(filters, fav)
+function isFiltered(filters, logicalConnectionOperator, fav)
 {
     var favoObjectType = fav[3];
     var favoGroupName = fav[1];
     var favoRowId = fav[5];
     var favoTitle = fav[6];
     
-    var isFiltered = true;
+    if(favoGroupName.equals("ewssync"))
+        return false;
+    
+    if(filters == null || filters.length == 0)
+        return true;
+    
+    var allFilterFulfilled = true;
+    var oneFilterFulfilled = false;
     
     for(let i = 0; i < filters.length; i++)
     {
+        var attributeValue = "";
         if(filters[i]["name"].includes("groupTypeExtension"))
-        {
-            if(!isValid(favoObjectType, filters[i]))
-            {
-                isFiltered = false;
-                break;
-            }
-        }
-        if(filters[i]["name"].includes("groupTitleExtension"))
-        {
-            if(!isValid(favoTitle, filters[i]))
-            {
-                isFiltered = false;
-                break;
-            }
-        }
-        if(filters[i]["name"].includes("groupGroupNameExtension"))
-        {
-            if(!isValid(favoGroupName, filters[i]))
-            {
-                isFiltered = false;
-                break;
-            }
-        }
+            attributeValue = favoObjectType;
+        else if(filters[i]["name"].includes("groupTitleExtension"))
+            attributeValue = favoTitle;
+        else if(filters[i]["name"].includes("groupGroupNameExtension"))
+            attributeValue = favoGroupName;
+
+        if(!isValid(attributeValue, filters[i]))
+            allFilterFulfilled = false;
+        else
+            oneFilterFulfilled = true;
     }
-        
-    return isFiltered;
+    
+    if(logicalConnectionOperator == "AND")
+        if(allFilterFulfilled)
+            return true;
+        else
+            return false;
+    
+    if(logicalConnectionOperator == "OR")
+        if(oneFilterFulfilled)
+            return true;
+        else
+            return false;
 }
 
 function isValid(value, filter)
@@ -127,10 +152,17 @@ function buildFavorites(favos, objecttype)
     loadConfig.uids(ids);
     loadConfig.count(200);
     loadConfig.fields(["#CONTENTTITLE", "#IMAGE", "#UID"]);
-    var loadedRows = entities.getRows(loadConfig);
     
-    for(z = 0; z < loadedRows.length; z++)
-        getFavoriteWith(loadedRows[z], builtFavos, favos, loadedRows[z]["#UID"], objecttype);
+    try {
+        var loadedRows = entities.getRows(loadConfig);
+
+        for(z = 0; z < loadedRows.length; z++)
+            getFavoriteWith(loadedRows[z], builtFavos, favos, loadedRows[z]["#UID"], objecttype);
+
+    } catch(e)
+    {
+        //maybe a missing permission for entity
+    }
     
     return builtFavos;
 }
@@ -186,29 +218,36 @@ function getAllFavoriteEnabledContexts()
     return permittedContexts;
 }
 
-function buildFavoriteForDeletion(favo)
-{        
-    var groupid = favo["group"]["groupid"];
-    var grouptitle = favo["group"]["grouptitle"];
-    var grouptype = favo["group"]["grouptype"];
-    var objecttype = favo["objecttype"];
-    var image = "";
-    var rowid = favo["rowid"];
-    var title = "";
-    var id = favo["id"];
-    var user = favo["group"]["groupuser"];
-    
-    return [
-        groupid,
-        grouptitle,
-        grouptype, 
-        objecttype, 
-        image,
-        rowid,
-        title,
-        id,
-        user
-    ];
+function buildFavoritesForDeletion(favos)
+{      
+    var results = [];
+    
+    for(i = 0; i < favos.length; i++)
+    {
+        var groupid = favos[i]["group"]["groupid"];
+        var grouptitle = favos[i]["group"]["grouptitle"];
+        var grouptype = favos[i]["group"]["grouptype"];
+        var objecttype = favos[i]["objecttype"];
+        var image = "";
+        var rowid = favos[i]["rowid"];
+        var title = "";
+        var id = favos[i]["id"];
+        var user = favos[i]["group"]["groupuser"];
+    
+        results.push([
+            groupid,
+            grouptitle,
+            grouptype, 
+            objecttype, 
+            image,
+            rowid,
+            title,
+            id,
+            user
+        ]);
+    }
+    
+    return results;
 }
 
 
diff --git a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/filterextensions/groupgroupnameextension/filterValuesProcess.js b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/filterextensions/groupgroupnameextension/filterValuesProcess.js
index f8a6e1919db15f11b8913cd741da51ba6a20c580..6f1d13dcff60b1ece1854c154836485c3ed906a1 100644
--- a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/filterextensions/groupgroupnameextension/filterValuesProcess.js
+++ b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/filterextensions/groupgroupnameextension/filterValuesProcess.js
@@ -12,10 +12,13 @@ var groupNames = (new SqlBuilder()).selectDistinct("ASYS_RECORDGROUP.TITLE")
                         .arrayColumn();
                         
 groupNames.forEach(element => {
-    if(element.equals("Default"))
-       allTypes.push([element, translate.text(element)]);
-    else
-       allTypes.push([element, element]); 
+    if(!element.equals("ewssync"))
+    {
+        if(element.equals("Default"))
+           allTypes.push([element, translate.text(element)]);
+        else
+           allTypes.push([element, element]); 
+    }
 });
 
 result.object(Array.from(allTypes));
diff --git a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/onDelete.js b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/onDelete.js
index 5c5ab2b521e59ad3ba0e1b71bb5c99b51044fdf3..70ac8f02ca1518b3ce375c2f4c5901d08d2c1d4f 100644
--- a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/onDelete.js
+++ b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/onDelete.js
@@ -1,4 +1,5 @@
 import("system.vars");
 import("system.favorite");
 
-favorite.remove(favorite.createRemoveByIdConfig().setFavoriteRecordId(vars.get("$local.uid")));
\ No newline at end of file
+var selected = vars.get("$local.uid");
+favorite.remove(favorite.createRemoveMultipleByIdConfig().setFavoriteRecordIds([selected]));
\ No newline at end of file
diff --git a/entity/Forecast_entity/Forecast_entity.aod b/entity/Forecast_entity/Forecast_entity.aod
index f553dde8f46895a3f1a215e1bcf33825610c8009..efc66cf89ead6dd57f9d06237f0cac89f56de0f5 100644
--- a/entity/Forecast_entity/Forecast_entity.aod
+++ b/entity/Forecast_entity/Forecast_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Forecast_entity</name>
+  <title>${FORECAST_ENGLISH}</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Forecast_entity/documentation.adoc</documentation>
-  <title>${FORECAST_ENGLISH}</title>
   <titlePlural>Forecasts</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -127,17 +127,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/Forecast_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>920ae11e-ae44-400f-9df0-fa879131a05c</name>
-          <tableName>FORECAST</tableName>
-          <primaryKey>FORECASTID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_START.value</name>
@@ -171,10 +162,6 @@
           <name>OBJECT_ROWID.value</name>
           <recordfield>FORECAST.OBJECT_ROWID</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>OBJECT_ROWID.displayValue</name>
-          <expression>%aditoprj%/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>OBJECT_TYPE.value</name>
           <recordfield>FORECAST.OBJECT_TYPE</recordfield>
@@ -184,6 +171,15 @@
           <recordfield>FORECAST.FORECASTID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>920ae11e-ae44-400f-9df0-fa879131a05c</name>
+          <tableName>FORECAST</tableName>
+          <primaryKey>FORECASTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js
index 8b080bceea92c146a676b0f33cc7cb87d4e86b9d..95c4eea5367140dc2d81e470ba0607adf52f07c1 100644
--- a/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js
+++ b/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js
@@ -7,5 +7,5 @@ import("Context_lib");
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) {
     result.string("");
 } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
-    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
+    result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")));
 }
\ No newline at end of file
diff --git a/entity/Forecast_entity/recordcontainers/db/conditionProcess.js b/entity/Forecast_entity/recordcontainers/db/conditionProcess.js
index a4ec94640015904a7560453161e2cab3a49c2320..0c0805ca63787abe761e25b34fa860f9cb5c820d 100644
--- a/entity/Forecast_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Forecast_entity/recordcontainers/db/conditionProcess.js
@@ -7,5 +7,4 @@ var cond = newWhere()
             .andIfSet("FORECAST.OBJECT_ROWID", "$param.ObjectRowId_param")
             .andIfSet("FORECAST.OBJECT_TYPE", "$param.ObjectType_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
deleted file mode 100644
index 856c1bb3cfff78abcc06bc817a49a40757e3529f..0000000000000000000000000000000000000000
--- a/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("Context_lib");
-
-result.string(ContextUtils.getNameSubselectSql("FORECAST.OBJECT_TYPE", "FORECAST.OBJECT_ROWID"))
\ No newline at end of file
diff --git a/entity/Gender_keyword/Gender_keyword.aod b/entity/Gender_keyword/Gender_keyword.aod
index 6c4c35a17b128754630433e0f0ab1aaec04cc865..17f5aa15fef8b6f6797172f4e04def1e4c823e99 100644
--- a/entity/Gender_keyword/Gender_keyword.aod
+++ b/entity/Gender_keyword/Gender_keyword.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Gender_keyword</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Gender_keyword/documentation.adoc</documentation>
diff --git a/entity/ImportField_Entity/ImportField_Entity.aod b/entity/ImportField_Entity/ImportField_Entity.aod
index cb5bb3fb6434c7a789b8d105cc18d40891bfd3f5..fb47af9cfe9e5cc16060f6155577916e6a0fd57b 100644
--- a/entity/ImportField_Entity/ImportField_Entity.aod
+++ b/entity/ImportField_Entity/ImportField_Entity.aod
@@ -1,8 +1,11 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ImportField_Entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ImportField_Entity/documentation.adoc</documentation>
+  <siblings>
+    <element>Leadimport_entity</element>
+  </siblings>
   <grantCreate v="false" />
   <grantDelete v="false" />
   <contentTitleProcess>%aditoprj%/entity/ImportField_Entity/contentTitleProcess.js</contentTitleProcess>
@@ -92,18 +95,9 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/ImportField_Entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/ImportField_Entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>12009263-3fca-4d30-ae79-2f8c0ef20e9e</name>
-          <tableName>IMPORTFIELD</tableName>
-          <primaryKey>IMPORTFIELDID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
@@ -142,6 +136,15 @@
           <isLookupFilter v="true" />
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>12009263-3fca-4d30-ae79-2f8c0ef20e9e</name>
+          <tableName>IMPORTFIELD</tableName>
+          <primaryKey>IMPORTFIELDID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/IndexSearchEntity/IndexSearchEntity.aod b/entity/IndexSearchEntity/IndexSearchEntity.aod
index d1274e4307d0d28a5c12f16f123d4ff145671ed4..4cd16dc36dd3f05e50987feed06cd763385031cf 100644
--- a/entity/IndexSearchEntity/IndexSearchEntity.aod
+++ b/entity/IndexSearchEntity/IndexSearchEntity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>IndexSearchEntity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/IndexSearchEntity/documentation.adoc</documentation>
diff --git a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod
index 81be338ad3887462424137b8445aaeef00347076..b5a77caf977897ec0e18eeab0f316384718fc55e 100644
--- a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod
+++ b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>KeywordAttributeRelation_entity</name>
+  <title>Keyword Attribute Values</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/KeywordAttributeRelation_entity/documentation.adoc</documentation>
-  <title>Keyword Attribute Values</title>
   <titlePlural>Keyword Attribute Values</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -124,19 +124,10 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="false" />
       <isRequireContainerFiltering v="false" />
       <conditionProcess>%aditoprj%/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>8e2938d2-e14b-403b-8ae5-875f70bc3f85</name>
-          <tableName>AB_KEYWORD_ATTRIBUTERELATION</tableName>
-          <primaryKey>AB_KEYWORD_ATTRIBUTERELATIONID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>AB_KEYWORD_ATTRIBUTERELATIONID.value</name>
@@ -171,6 +162,15 @@
           <recordfield>AB_KEYWORD_ATTRIBUTERELATION.LONG_CHAR_VALUE</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>8e2938d2-e14b-403b-8ae5-875f70bc3f85</name>
+          <tableName>AB_KEYWORD_ATTRIBUTERELATION</tableName>
+          <primaryKey>AB_KEYWORD_ATTRIBUTERELATIONID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js
index 88a371d623036551c0e883501e7ce2fbb7467852..08a73e065351292b94799258ed901ef6689197e1 100644
--- a/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js
@@ -6,5 +6,4 @@ import("Sql_lib");
 
 var cond = newWhereIfSet("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID", "$param.KeywordEntryId_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod
index 04c32328e4d29bbde35cdd310a067046e32be975..54661bb8ad6514599e6d987dad166764ff050f05 100644
--- a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod
+++ b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>KeywordAttribute_entity</name>
+  <title>Keyword Attribute</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/KeywordAttribute_entity/documentation.adoc</documentation>
-  <title>Keyword Attribute</title>
   <grantDeleteProcess>%aditoprj%/entity/KeywordAttribute_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/KeywordAttribute_entity/contentTitleProcess.js</contentTitleProcess>
   <iconId>VAADIN:KEY_O</iconId>
@@ -105,19 +105,10 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="false" />
       <conditionProcess>%aditoprj%/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <onDBDelete>%aditoprj%/entity/KeywordAttribute_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>bd113d67-34ab-4708-b0e5-60a44332e6b8</name>
-          <tableName>AB_KEYWORD_ATTRIBUTE</tableName>
-          <primaryKey>AB_KEYWORD_ATTRIBUTEID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>AB_KEYWORD_ATTRIBUTEID.value</name>
@@ -150,6 +141,15 @@
           <recordfield>AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_CATEGORY_ID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>bd113d67-34ab-4708-b0e5-60a44332e6b8</name>
+          <tableName>AB_KEYWORD_ATTRIBUTE</tableName>
+          <primaryKey>AB_KEYWORD_ATTRIBUTEID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js
index 823c3d4a9247760a8f02f2a715291b64e32315b4..15f1ee62a401226343c96a26c3a7b084e07a843b 100644
--- a/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js
@@ -16,5 +16,4 @@ if (entryIdForFilter)
                 SqlBuilder.NOT_IN())
 }
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index 330be19f921e7432673eddc52a57023533bf6191..433f55118e351a672872ba29e8914cdad5d279b5 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>KeywordEntry_entity</name>
+  <title>Keyword</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/KeywordEntry_entity/documentation.adoc</documentation>
-  <title>Keyword</title>
   <siblings />
   <grantDelete v="false" />
   <grantDeleteProcess>%aditoprj%/entity/KeywordEntry_entity/grantDeleteProcess.js</grantDeleteProcess>
@@ -31,6 +31,12 @@
           <fieldName>PrioKeywords</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>01b9bba5-3b65-4db0-b466-1e41061feb1a</name>
+          <entityName>Observation_entity</entityName>
+          <fieldName>PrioKeywords</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
     </entityProvider>
     <entityField>
@@ -100,6 +106,7 @@
     <entityProvider>
       <name>SpecificContainerKeywords</name>
       <lookupIdfield>KEYID</lookupIdfield>
+      <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc</documentation>
       <recordContainer>jDito</recordContainer>
       <dependencies>
         <entityDependency>
@@ -318,12 +325,6 @@
           <fieldName>KeywordStates</fieldName>
           <isConsumer v="false" />
         </entityDependency>
-        <entityDependency>
-          <name>3ca6d3c7-83d2-4761-bab4-50d2baecdbd6</name>
-          <entityName>Competition_entity</entityName>
-          <fieldName>KeywordPhases</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
         <entityDependency>
           <name>1053a90d-574a-4ca2-b41d-42b513db0fd2</name>
           <entityName>Task_entity</entityName>
@@ -594,6 +595,48 @@
           <fieldName>KeywordVisitRecommendationSource</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>10ced13f-78ae-4e99-a315-82f1f7389029</name>
+          <entityName>CampaignStep_entity</entityName>
+          <fieldName>KeywordStepMedium</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>f2719502-19e8-4a24-8f3f-e4aa4dd77e70</name>
+          <entityName>VisitPlanEntry_entity</entityName>
+          <fieldName>KeywordVisitPlanEntryStatusAppointment</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>edde64f8-8f71-4fa3-a807-b6b3af971446</name>
+          <entityName>DistrictContact_entity</entityName>
+          <fieldName>KeywordContactStates</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>146dc4e4-7e99-48da-9572-09f2a57ea7f6</name>
+          <entityName>DistrictContact_entity</entityName>
+          <fieldName>KeywordAdviserRoles</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>223e4198-157d-43b5-b31e-417eb6ebf39c</name>
+          <entityName>DistrictContact_entity</entityName>
+          <fieldName>KeywordDistrictOrigin</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>6f8ca40b-52bc-461f-8b97-083e1509c6fb</name>
+          <entityName>DistrictResponsible_entity</entityName>
+          <fieldName>AdviserStates</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>146306af-cb4e-4d60-8298-f298770e7efb</name>
+          <entityName>DistrictResponsible_entity</entityName>
+          <fieldName>AdviserRoles</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
@@ -609,7 +652,8 @@
     </entityProvider>
     <entityField>
       <name>TITLE_TRANSLATED</name>
-      <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js</valueProcess>
+      <state>INVISIBLE</state>
+      <displayValueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/title_translated/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityParameter>
       <name>OnlyActives_param</name>
@@ -637,7 +681,7 @@
       <name>ExcludedKeyIdsSubquery_param</name>
       <expose v="true" />
       <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc</documentation>
-      <description>PARAMETER</description>
+      <description>DEPRECATED!!! DO NOT USE!!!</description>
     </entityParameter>
     <entityParameter>
       <name>WhitelistIds_param</name>
@@ -659,6 +703,10 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityParameter>
+      <name>BlacklistIds_param</name>
+      <expose v="true" />
+    </entityParameter>
     <entityField>
       <name>AB_KEYWORD_CATEGORY_ID</name>
       <title>Container new</title>
@@ -723,22 +771,13 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="false" />
       <conditionProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBDelete>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
+      <alias>Data_alias</alias>
       <cacheType>GLOBAL</cacheType>
       <cacheKeyProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>52acbfe0-57f4-4614-83af-9882e168f431</name>
-          <tableName>AB_KEYWORD_ENTRY</tableName>
-          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>TITLE.value</name>
@@ -776,11 +815,26 @@
           <isFilterable v="true" />
           <isLookupFilter v="true" />
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TITLE_TRANSLATED.value</name>
+          <recordfield>AB_KEYWORD_ENTRY.TITLE</recordfield>
+          <isFilterable v="false" />
+          <isLookupFilter v="true" />
+        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>AB_KEYWORD_CATEGORY_ID.value</name>
           <recordfield>AB_KEYWORD_ENTRY.AB_KEYWORD_CATEGORY_ID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>52acbfe0-57f4-4614-83af-9882e168f431</name>
+          <tableName>AB_KEYWORD_ENTRY</tableName>
+          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
     <jDitoRecordContainer>
       <name>jDito</name>
diff --git a/entity/KeywordEntry_entity/contentTitleProcess.js b/entity/KeywordEntry_entity/contentTitleProcess.js
index bc531db79113dcc9bd32bf90b4f9a983768f25a1..ff69ed4c6247006fb67bd75e3a8523df44274575 100644
--- a/entity/KeywordEntry_entity/contentTitleProcess.js
+++ b/entity/KeywordEntry_entity/contentTitleProcess.js
@@ -1,4 +1,5 @@
+import("system.translate");
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.TITLE_TRANSLATED"));
\ No newline at end of file
+result.string(translate.text(vars.get("$field.TITLE_TRANSLATED")));
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc b/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc
index 55fde66fa9fdb8f3dfebb3341ea9f95471189c32..5992cb1957a8d69753478d3e19384a511371d90f 100644
--- a/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc
+++ b/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc
@@ -1,2 +1,5 @@
+DEPRECATED! This parameter does not work with caching, because if the result of the subquery changes while the subquery itself doesn't, the cached
+result won't be updated
+
 Can be filled with a subquery-string, which delivers KeyIds to exclude.
 The subquery is used insade a "KEYID not in(...)" 
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc b/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..0525588e240333d63a3e3b76b2c9bfb08d14dc54
--- /dev/null
+++ b/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc
@@ -0,0 +1,3 @@
+= SpecificContainerKeywords
+
+Delivers only keywords of a specific container for a keyword selection.
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js b/entity/KeywordEntry_entity/entityfields/title_translated/displayValueProcess.js
similarity index 75%
rename from entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js
rename to entity/KeywordEntry_entity/entityfields/title_translated/displayValueProcess.js
index f42668ae726a7ff4d9c852605ab948b7df4ad93e..fd4ebefae48c5d8c702efce11cf8f778e88ea7d0 100644
--- a/entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js
+++ b/entity/KeywordEntry_entity/entityfields/title_translated/displayValueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
-import("system.translate");
 import("system.result");
+import("system.translate");
+import("system.vars");
 
-var title = vars.get("$field.TITLE");
+var title = vars.get("$this.value");
 result.string(translate.text(title));
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/recordcontainers/db/cacheKeyProcess.js b/entity/KeywordEntry_entity/recordcontainers/db/cacheKeyProcess.js
index bd9e8c01354097c564fcb6fd65e3e5390fbb9f10..822b1e5a4479fd59faf95e148e48d34d917071e2 100644
--- a/entity/KeywordEntry_entity/recordcontainers/db/cacheKeyProcess.js
+++ b/entity/KeywordEntry_entity/recordcontainers/db/cacheKeyProcess.js
@@ -1,6 +1,6 @@
 import("CachedRecordContainer_lib");
 import("system.result")
 
-var res = CachedRecordContainerUtils.getCommonKey("$param.ContainerName_param", "$param.ExcludedKeyIdsSubquery_param", "$param.OnlyActives_param"
+var res = CachedRecordContainerUtils.getCommonKey("$param.ContainerName_param", "$param.BlacklistIds_param", "$param.OnlyActives_param"
     , "$param.WhitelistIds_param");
 result.string(res);
diff --git a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js
index 6fcb81de353b15da6987c4a057a54535f2d1fcbb..90f58744de34c09de3164a324889dc3d3bf03859 100644
--- a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js
@@ -1,3 +1,4 @@
+import("Util_lib");
 import("system.vars");
 import("system.db");
 import("system.result");
@@ -13,15 +14,16 @@ if (vars.get("$param.OnlyActives_param") == "true")
 if (vars.exists("$param.ExcludedKeyIdsSubquery_param") && vars.get("$param.ExcludedKeyIdsSubquery_param"))
     cond.and("AB_KEYWORD_ENTRY.KEYID not in (" + vars.get("$param.ExcludedKeyIdsSubquery_param") + ")");
 
-if (vars.getString("$param.WhitelistIds_param"))
+var whitelist = Utils.parseJSON(vars.get("$param.WhitelistIds_param"));
+var blacklist = Utils.parseJSON(vars.get("$param.BlacklistIds_param"));
+if (whitelist)
 {
-    var whitelist = JSON.parse(vars.getString("$param.WhitelistIds_param"));
-   
     if (whitelist.length > 0)
-        cond.and("AB_KEYWORD_ENTRY.KEYID", JSON.parse(vars.getString("$param.WhitelistIds_param")), SqlBuilder.IN());
+        cond.and("AB_KEYWORD_ENTRY.KEYID", whitelist, SqlBuilder.IN());
     else
         cond.noResult(); // force empty result if whitelist is empty
 }
+if (blacklist && blacklist.length > 0)
+    cond.and("AB_KEYWORD_ENTRY.KEYID", blacklist, SqlBuilder.NOT_IN());
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
diff --git a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod
index a5465f6d0a9fc19452bbd8ae4cae975e8c022634..ae567dde14c71703c4a112adbdf38ecc24896957 100644
--- a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod
+++ b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod
@@ -1,8 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>KnowledgeDiscussion_entity</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
   <title>Discussion</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/KnowledgeDiscussion_entity/documentation.adoc</documentation>
   <grantCreateProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantCreateProcess.js</grantCreateProcess>
   <grantUpdateProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantDeleteProcess.js</grantDeleteProcess>
@@ -61,6 +62,11 @@
     </entityField>
     <entityConsumer>
       <name>StatusKeyword</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
@@ -71,14 +77,10 @@
           <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
-      </dependency>
     </entityConsumer>
     <entityProvider>
       <name>ByKnowledgeId</name>
+      <documentation>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>fbacb136-2690-495a-82c5-b6ab1576d3f9</name>
@@ -94,7 +96,7 @@
     </entityParameter>
     <entityActionGroup>
       <name>Edit_ActionGroup</name>
-      <title>Bearbeiten</title>
+      <title>Edit</title>
       <children>
         <entityActionField>
           <name>addAnswer_action</name>
diff --git a/entity/KnowledgeDiscussion_entity/documentation.adoc b/entity/KnowledgeDiscussion_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..d2fa0a728ff196aa8dba9163da1aefd62fd12eb1
--- /dev/null
+++ b/entity/KnowledgeDiscussion_entity/documentation.adoc
@@ -0,0 +1,3 @@
+This entity manages the discussion "forum" which is linked to a knowledge entry
+It uses a JDito recordcontainer to build the tree.
+The tree is always sorted by latest action. So the dicussion where an answer was added last, is put on top
\ No newline at end of file
diff --git a/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc b/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..f57edf8c453eebabc900ee3944e040bccc7154f0
--- /dev/null
+++ b/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc
@@ -0,0 +1,3 @@
+This provider needs the id of a knowledge entry to deliver all discussions of it
+
+Always fill KnowledgeId_param
\ No newline at end of file
diff --git a/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod
index 81ffc1da3d81fde9f4aea3c88dd1ef664d8af182..b6d159ac4cf4fd8518c354cbee6bfb8d2e8ce82e 100644
--- a/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod
+++ b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod
@@ -1,8 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>KnowledgeLink_entity</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
   <title>Link</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/KnowledgeLink_entity/documentation.adoc</documentation>
   <iconIdProcess>%aditoprj%/entity/KnowledgeLink_entity/iconIdProcess.js</iconIdProcess>
   <titlePlural>Links</titlePlural>
   <recordContainer>db</recordContainer>
@@ -57,17 +58,17 @@
     </entityConsumer>
     <entityConsumer>
       <name>Objects</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>ObjectProxy_entity</entityName>
+        <fieldName>FilteredObjects</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>Entity_param</name>
           <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>ObjectProxy_entity</entityName>
-        <fieldName>FilteredObjects</fieldName>
-      </dependency>
     </entityConsumer>
     <entityParameter>
       <name>KnowledgeManagementId_param</name>
@@ -77,16 +78,7 @@
       <name>ByKnowledgeId</name>
       <targetContextField>OBJECT_TYPE</targetContextField>
       <targetIdField>ROW_ID</targetIdField>
-      <children>
-        <entityParameter>
-          <name>ObjectType_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>RowId_param</name>
-          <expose v="false" />
-        </entityParameter>
-      </children>
+      <documentation>%aditoprj%/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>c3ed10c1-db55-4e55-9c18-2b8d400df033</name>
@@ -95,14 +87,13 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
-    </entityProvider>
-    <entityProvider>
-      <name>ByLink</name>
-      <targetContextField>OBJECT_TYPE</targetContextField>
-      <targetIdField>ROW_ID</targetIdField>
       <children>
         <entityParameter>
-          <name>KnowledgeManagementId_param</name>
+          <name>ObjectType_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>RowId_param</name>
           <expose v="false" />
         </entityParameter>
       </children>
@@ -123,17 +114,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>aea9524a-589e-47df-87d7-5f79519eb135</name>
-          <tableName>KNOWLEDGELINK</tableName>
-          <primaryKey>KNOWLEDGELINKID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
@@ -168,6 +150,15 @@
           <recordfield>KNOWLEDGELINK.USER_NEW</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>aea9524a-589e-47df-87d7-5f79519eb135</name>
+          <tableName>KNOWLEDGELINK</tableName>
+          <primaryKey>KNOWLEDGELINKID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/KnowledgeLink_entity/documentation.adoc b/entity/KnowledgeLink_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..32310ca526d16e0c87a4db78a1ef86dfeb15b45d
--- /dev/null
+++ b/entity/KnowledgeLink_entity/documentation.adoc
@@ -0,0 +1 @@
+This entity is used to manage links to other objects, that are read from ObjectProxy_entity via a consumer
\ No newline at end of file
diff --git a/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc b/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..94bf48727d7cf920859494f4f7a35b058a4c90b1
--- /dev/null
+++ b/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc
@@ -0,0 +1 @@
+Delivers all links to other objects that are linked to a knowledge entry
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod b/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod
index c7b24df7f146ca735ea1aa07927aafbd8a298a67..ce3999d283e928e1d8f13079bf2738c3a5aba3ed 100644
--- a/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod
+++ b/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod
@@ -1,7 +1,8 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>KnowledgeManagementTagList_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/KnowledgeManagementTagList_entity/documentation.adoc</documentation>
   <contentTitleProcess>%aditoprj%/entity/KnowledgeManagementTagList_entity/contentTitleProcess.js</contentTitleProcess>
   <recordContainer>JDito_TagList</recordContainer>
   <entityFields>
@@ -16,6 +17,7 @@
     </entityField>
     <entityProvider>
       <name>CompleteList</name>
+      <documentation>%aditoprj%/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>85925baa-5edc-4908-804e-f7ec4c5a2a0c</name>
diff --git a/entity/KnowledgeManagementTagList_entity/documentation.adoc b/entity/KnowledgeManagementTagList_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..d2eef458abade304a5c07db9ebbdff5e83879704
--- /dev/null
+++ b/entity/KnowledgeManagementTagList_entity/documentation.adoc
@@ -0,0 +1 @@
+The entity provides a complete list of all existing tags and is consumed where tags can be chosen
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc b/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..d26c90a04d79b44a90c99cc2fdbafb008ea7fcbe
--- /dev/null
+++ b/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc
@@ -0,0 +1 @@
+provides a complete list of all possible tags, so they can be chosen when you add tags
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod
index 552ce5d4c60ec37bc0accaf3ae5b4f1dc9f4d98e..3047fb341eae892c2ca271f2fd24f24aec096ac1 100644
--- a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod
+++ b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod
@@ -1,7 +1,8 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>KnowledgeManagementTags_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/KnowledgeManagementTags_entity/documentation.adoc</documentation>
   <recordContainer>JDito_KnowledgeManagementKeywords</recordContainer>
   <entityFields>
     <entityProvider>
@@ -13,12 +14,7 @@
     </entityParameter>
     <entityProvider>
       <name>ByKnowledgeManagementId</name>
-      <children>
-        <entityParameter>
-          <name>KnowledgeManagementId_param</name>
-          <mandatory v="true" />
-        </entityParameter>
-      </children>
+      <documentation>%aditoprj%/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>8d86a61b-0fe3-44c4-a512-e044c990fded</name>
@@ -27,6 +23,12 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
+      <children>
+        <entityParameter>
+          <name>KnowledgeManagementId_param</name>
+          <mandatory v="true" />
+        </entityParameter>
+      </children>
     </entityProvider>
     <entityField>
       <name>TAG</name>
@@ -47,18 +49,6 @@
         <fieldName>CompleteList</fieldName>
       </dependency>
     </entityConsumer>
-    <entityActionField>
-      <name>ActionField1</name>
-      <title>a1</title>
-    </entityActionField>
-    <entityActionField>
-      <name>ActionField2</name>
-      <title>a2</title>
-    </entityActionField>
-    <entityActionField>
-      <name>ActionField3</name>
-      <title>a3</title>
-    </entityActionField>
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
diff --git a/entity/KnowledgeManagementTags_entity/documentation.adoc b/entity/KnowledgeManagementTags_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..ca20973196d16e0261b5acb7b6f4af869f56b496
--- /dev/null
+++ b/entity/KnowledgeManagementTags_entity/documentation.adoc
@@ -0,0 +1,5 @@
+This entity represents the tags of a knowledge entry and handles adding, editing and deleting of linked tags
+
+If a tag, which doesn't exist yet is entered, the tag is created and then added to the knowledge entry
+
+Always fill KnowledgeManagementId_param
\ No newline at end of file
diff --git a/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc b/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..76bdf00546188f3a4331b2508e472c51b94cb94b
--- /dev/null
+++ b/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc
@@ -0,0 +1,3 @@
+This provider delivers the list of tags of a knowledge entry
+
+KnowledgeManagementId_param has to be filled, otherwise it won't work
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod
index c65093499e823c8705bef2c4130ee6ffcb08cc3a..f3636542e0fcd54330d94ef590f6e7049adce027 100644
--- a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod
+++ b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod
@@ -1,29 +1,21 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>KnowledgeManagement_entity</name>
+  <title>Knowledge</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/KnowledgeManagement_entity/documentation.adoc</documentation>
   <icon>VAADIN:ACADEMY_CAP</icon>
-  <title>Knowledge</title>
   <grantUpdateProcess>%aditoprj%/entity/KnowledgeManagement_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/KnowledgeManagement_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/KnowledgeManagement_entity/contentTitleProcess.js</contentTitleProcess>
   <afterOperatingState>%aditoprj%/entity/KnowledgeManagement_entity/afterOperatingState.js</afterOperatingState>
   <useFavorites v="true" />
   <iconIdProcess>%aditoprj%/entity/KnowledgeManagement_entity/iconIdProcess.js</iconIdProcess>
-  <usePermissions v="true" />
   <titlePlural>Knowledge entries</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
-      <dependencies>
-        <entityDependency>
-          <name>40cf66ca-421f-47f6-8ecc-8360657e0640</name>
-          <entityName>KnowledgeNewsFeed_entity</entityName>
-          <fieldName>Consumer</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
     </entityProvider>
     <entityField>
       <name>KNOWLEDGEMANAGEMENTID</name>
@@ -109,35 +101,36 @@
       <refreshParent v="true" />
       <state>EDITABLE</state>
       <onValidation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js</onValidation>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KnowledgeManagementTags_entity</entityName>
+        <fieldName>ByKnowledgeManagementId</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>KnowledgeManagementId_param</name>
           <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KnowledgeManagementTags_entity</entityName>
-        <fieldName>ByKnowledgeManagementId</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>DiscussionsByKnowledgeId</name>
       <refreshParent v="true" />
+      <dependency>
+        <name>dependency</name>
+        <entityName>KnowledgeDiscussion_entity</entityName>
+        <fieldName>ByKnowledgeId</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>KnowledgeId_param</name>
           <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KnowledgeDiscussion_entity</entityName>
-        <fieldName>ByKnowledgeId</fieldName>
-      </dependency>
     </entityConsumer>
     <entityProvider>
       <name>Provider</name>
+      <documentation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc</documentation>
     </entityProvider>
     <entityConsumer>
       <name>PersonContacts</name>
@@ -149,37 +142,42 @@
     </entityConsumer>
     <entityConsumer>
       <name>KeywordKnowledgeType</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
           <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>KeywordPublish</name>
       <dependency>
         <name>dependency</name>
         <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>KeywordPublish</name>
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
           <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>indexTag</name>
     </entityField>
     <entityConsumer>
       <name>LinkedDocuments</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Document_entity</entityName>
+        <fieldName>Documents</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>AssignmentTable_param</name>
@@ -190,11 +188,6 @@
           <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Document_entity</entityName>
-        <fieldName>Documents</fieldName>
-      </dependency>
     </entityConsumer>
     <entityActionField>
       <name>openEntryAsMail</name>
@@ -207,17 +200,17 @@
     <entityConsumer>
       <name>LinksByKnowledgeId</name>
       <refreshParent v="true" />
+      <dependency>
+        <name>dependency</name>
+        <entityName>KnowledgeLink_entity</entityName>
+        <fieldName>ByKnowledgeId</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>KnowledgeManagementId_param</name>
           <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KnowledgeLink_entity</entityName>
-        <fieldName>ByKnowledgeId</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>LastChange</name>
@@ -226,17 +219,17 @@
     </entityField>
     <entityConsumer>
       <name>LogHistories</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>LogHistory_entity</entityName>
+        <fieldName>LogHistoryProvider</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>tablenames_param</name>
           <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>LogHistory_entity</entityName>
-        <fieldName>LogHistoryProvider</fieldName>
-      </dependency>
     </entityConsumer>
     <entityActionField>
       <name>exportHTML_action</name>
@@ -278,6 +271,11 @@
       <name>KnowledgeRoles</name>
       <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js</stateProcess>
       <onValidation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js</onValidation>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KnowledgeRole_entity</entityName>
+        <fieldName>KnowledgeRole</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>KnowledgeManagement_param</name>
@@ -289,14 +287,14 @@
           <expose v="true" />
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KnowledgeRole_entity</entityName>
-        <fieldName>KnowledgeRole</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>Tasks</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Task_entity</entityName>
+        <fieldName>Tasks</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ObjectId_param</name>
@@ -311,11 +309,6 @@
           <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Task_entity</entityName>
-        <fieldName>Tasks</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>RESPONSIBLE_CONTACT_ID</name>
@@ -329,6 +322,7 @@
       <name>PUBLISH</name>
       <title>Publishing level</title>
       <consumer>KeywordPublish</consumer>
+      <state>INVISIBLE</state>
       <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/publish/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/publish/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -336,21 +330,12 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isRequireContainerFiltering v="true" />
       <conditionProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBInsert>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
-      <linkInformation>
-        <linkInformation>
-          <name>9d4a7198-a4d1-45b3-867f-bf12cd558274</name>
-          <tableName>KNOWLEDGEMANAGEMENT</tableName>
-          <primaryKey>KNOWLEDGEMANAGEMENTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>AUTHOR_CONTACT_ID.value</name>
@@ -447,6 +432,15 @@
           <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/publish.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>9d4a7198-a4d1-45b3-867f-bf12cd558274</name>
+          <tableName>KNOWLEDGEMANAGEMENT</tableName>
+          <primaryKey>KNOWLEDGEMANAGEMENTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtension>
           <name>TagFilter</name>
diff --git a/entity/KnowledgeManagement_entity/documentation.adoc b/entity/KnowledgeManagement_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..db9002b6103f2b1f3c04f5b55d9b2e457ee0ef17
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/documentation.adoc
@@ -0,0 +1,3 @@
+The main entity of the knowledgemanagement
+
+manages the content and consumes discussions, links, log history, documents 
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc b/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..d72ef5f67309fa7a7091cbe6e102116e123f64ea
--- /dev/null
+++ b/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc
@@ -0,0 +1 @@
+This provider is used by dashlets which set isDashlet_param
\ No newline at end of file
diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js
index b13c3cdc15dd6b79ec1ecc332a3113a40f8399ae..29d30e242c27ba5f0c73e988eb1e365e3e130b67 100644
--- a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js
+++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js
@@ -12,13 +12,13 @@ var sql = newSelect([
                     .join("KNOWLEDGETAGLINK", "KNOWLEDGEMANAGEMENTID = KNOWLEDGEMANAGEMENT_ID")
                     .join("KNOWLEDGETAG", "KNOWLEDGETAGID = KNOWLEDGETAG_ID")
                     .where("KNOWLEDGETAG.TAG", "News")
-                    .and("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = km1.KNOWLEDGEMANAGEMENTID"))
+                    .and("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = km1.KNOWLEDGEMANAGEMENTID"), SqlBuilder.EXISTS())
                 .thenString("News")
-            .when(newWhere("GITPATH is null").and("TYPE = 1"))
+            .when(newWhere("TYPE = '1'"))
                 .thenString("Knowledgebase")
-            .when(newWhere("GITPATH is not null").and("TYPE = 2"))
+            .when(newWhere("TYPE = '2'"))
                 .thenString("Editorial")
-            .when("TYPE = 3")
+            .when(newWhere("TYPE = '3'"))
                 .thenString("Business process"),
         "''"
     ]).from("KNOWLEDGEMANAGEMENT", "km1")
diff --git a/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod b/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod
index aa197ca8d2a1e231c8296d8cf579cc435fc5a060..044c654b107b2bcf87397e6bb3559dd3b6848081 100644
--- a/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod
+++ b/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>KnowledgeNewsFeed_entity</name>
+  <title>Feed</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/KnowledgeNewsFeed_entity/documentation.adoc</documentation>
-  <title>Feed</title>
   <recordContainer>recordContainer</recordContainer>
   <entityFields>
     <entityProvider>
diff --git a/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod
index eb1b5a2d876b1162a4115a44c8ee8b6230a43ffe..a3aa8d298eaa34a733a08787263629302027f518 100644
--- a/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod
+++ b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod
@@ -1,8 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>KnowledgeRole_entity</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
   <title>Knowledge Role</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/KnowledgeRole_entity/documentation.adoc</documentation>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
@@ -16,21 +17,22 @@
     </entityField>
     <entityConsumer>
       <name>NewsRole</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Role_entity</entityName>
+        <fieldName>FilterRolesWithoutPermission</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ExcludeRoles_param</name>
           <valueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Role_entity</entityName>
-        <fieldName>FilterRolesWithoutPermission</fieldName>
-      </dependency>
     </entityConsumer>
     <entityProvider>
       <name>KnowledgeRole</name>
       <lookupIdfield>ROLES</lookupIdfield>
+      <documentation>%aditoprj%/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc</documentation>
       <titlePlural>KnowledgeRoles</titlePlural>
       <recordContainer>db</recordContainer>
       <dependencies>
@@ -73,19 +75,10 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <hasDependentRecords v="true" />
       <conditionProcess>%aditoprj%/entity/KnowledgeRole_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <alias>Data_alias</alias>
       <title>Knowledge Roles</title>
-      <linkInformation>
-        <linkInformation>
-          <name>16e6127e-67c6-4dce-b2e9-4b2b951dbcd4</name>
-          <tableName>KNOWLEDGEROLES</tableName>
-          <primaryKey>KNOWLEDGEROLESID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ROLES.value</name>
@@ -106,6 +99,15 @@
           <expression>%aditoprj%/entity/KnowledgeRole_entity/recordcontainers/db/recordfieldmappings/roles.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>16e6127e-67c6-4dce-b2e9-4b2b951dbcd4</name>
+          <tableName>KNOWLEDGEROLES</tableName>
+          <primaryKey>KNOWLEDGEROLESID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/KnowledgeRole_entity/documentation.adoc b/entity/KnowledgeRole_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..6b291538809455a2847b23e14f93cbec08598048
--- /dev/null
+++ b/entity/KnowledgeRole_entity/documentation.adoc
@@ -0,0 +1,5 @@
+This entity handles the roles, that are linked to a knowledge entry
+The roles are used to create notifications and newsfeed entries for specific roles when the switches are set
+
+KnowledgeManagement_param needs the id of a knowledge entry
+PublishLevelRoles_param takes an array of role names which get excluded from the role list
\ No newline at end of file
diff --git a/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc b/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..781e59c75976c40ab98ceb4e76b174e38d31a69e
--- /dev/null
+++ b/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc
@@ -0,0 +1,2 @@
+KnowledgeManagement_param needs the id of a knowledge entry
+PublishLevelRoles_param takes an array of role names which get excluded from the role list
\ No newline at end of file
diff --git a/entity/Language_entity/Language_entity.aod b/entity/Language_entity/Language_entity.aod
index 2afefb3f30bcad00355211100c7b648e58118ddf..888dbe48467d0d61107d0e9ebe84a683d50fc2be 100644
--- a/entity/Language_entity/Language_entity.aod
+++ b/entity/Language_entity/Language_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Language_entity</name>
+  <title>Language</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Language_entity/documentation.adoc</documentation>
-  <title>Language</title>
   <contentTitleProcess>%aditoprj%/entity/Language_entity/contentTitleProcess.js</contentTitleProcess>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -22,6 +22,7 @@
     </entityField>
     <entityField>
       <name>NAME_LATIN</name>
+      <displayValueProcess>%aditoprj%/entity/Language_entity/entityfields/name_latin/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>ISACTIVE</name>
@@ -133,20 +134,11 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isPageable v="false" />
       <conditionProcess>%aditoprj%/entity/Language_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <alias>Data_alias</alias>
       <cacheType>GLOBAL</cacheType>
       <cacheKeyProcess>%aditoprj%/entity/Language_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>3cd06d7c-16c3-49e5-87cd-672a7222e613</name>
-          <tableName>AB_LANGUAGE</tableName>
-          <primaryKey>ISO3</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ISACTIVE.value</name>
@@ -175,6 +167,15 @@
           <isLookupFilter v="false" />
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>3cd06d7c-16c3-49e5-87cd-672a7222e613</name>
+          <tableName>AB_LANGUAGE</tableName>
+          <primaryKey>ISO3</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Language_entity/entityfields/name_latin/displayValueProcess.js b/entity/Language_entity/entityfields/name_latin/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..60728b855572f3068a1d7296e2a9e23550eb97d5
--- /dev/null
+++ b/entity/Language_entity/entityfields/name_latin/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.vars");
+import("system.result");
+
+result.string(translate.text(vars.get("$this.value")));
\ No newline at end of file
diff --git a/entity/Language_entity/recordcontainers/db/conditionProcess.js b/entity/Language_entity/recordcontainers/db/conditionProcess.js
index 9e0e3a69ce20255f94f5f90179b9dbc93ac2c006..f36ae3e0f8d6f0cd9d8ae5df3c1dbce72112dfad 100644
--- a/entity/Language_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Language_entity/recordcontainers/db/conditionProcess.js
@@ -10,5 +10,4 @@ if (vars.getString("$param.ExcludedIds_param"))
     cond.andIfSet("AB_LANGUAGE.ISO3", JSON.parse(vars.getString("$param.ExcludedIds_param")), SqlBuilder.NOT_IN())
 }
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString())
\ No newline at end of file
diff --git a/entity/LeadLog_entity/LeadLog_entity.aod b/entity/LeadLog_entity/LeadLog_entity.aod
index ca424a627c7dd8b54e6c90a2383f372981e6c5d3..60e321526ff8163355ca475842c04ef2ff6af8aa 100644
--- a/entity/LeadLog_entity/LeadLog_entity.aod
+++ b/entity/LeadLog_entity/LeadLog_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>LeadLog_entity</name>
   <description></description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -89,18 +89,9 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/LeadLog_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/LeadLog_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>0c8cdc60-c8dd-4d03-9878-8312ebca21f9</name>
-          <tableName>LEADLOG</tableName>
-          <primaryKey>LEADLOGID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>LEADLOGID.value</name>
@@ -143,6 +134,15 @@
           <isLookupFilter v="true" />
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>0c8cdc60-c8dd-4d03-9878-8312ebca21f9</name>
+          <tableName>LEADLOG</tableName>
+          <primaryKey>LEADLOGID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/LeadTemp_entity/LeadTemp_entity.aod b/entity/LeadTemp_entity/LeadTemp_entity.aod
index 51582fefafa728a3a3296b4e8b9de55ce4c74062..b8ae307bfe5693e730a607c25c2f74d9f6cbce4d 100644
--- a/entity/LeadTemp_entity/LeadTemp_entity.aod
+++ b/entity/LeadTemp_entity/LeadTemp_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>LeadTemp_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/LeadTemp_entity/documentation.adoc</documentation>
@@ -172,18 +172,9 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/LeadTemp_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/LeadTemp_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>d7b0d323-5516-4e53-a29f-57f708545ba1</name>
-          <tableName>LEADTEMP</tableName>
-          <primaryKey>LEADTEMPID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>COLUMN01.value</name>
@@ -386,6 +377,15 @@
           <isLookupFilter v="true" />
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>d7b0d323-5516-4e53-a29f-57f708545ba1</name>
+          <tableName>LEADTEMP</tableName>
+          <primaryKey>LEADTEMPID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Lead_entity/Lead_entity.aod b/entity/Lead_entity/Lead_entity.aod
index 6a8a9fed94965be2a51c7c27cef30ed371dc7631..f4f73b84ea74b558b60dc4df4fc0f0a4993ac336 100644
--- a/entity/Lead_entity/Lead_entity.aod
+++ b/entity/Lead_entity/Lead_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Lead_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Lead_entity/documentation.adoc</documentation>
@@ -129,17 +129,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/Lead_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>c4a59fcc-2c94-4944-ae57-790a4adcca30</name>
-          <tableName>LEAD</tableName>
-          <primaryKey>LEADID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>LEAD_ADDRESS.value</name>
@@ -220,6 +211,15 @@
           <recordfield>LEAD.ORGANISATION_ID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>c4a59fcc-2c94-4944-ae57-790a4adcca30</name>
+          <tableName>LEAD</tableName>
+          <primaryKey>LEADID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod b/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod
index f985150a0e1cb55d7858aa3540456b609937f07d..1d52cd2f81549670b246a953ec4836f1cc769230 100644
--- a/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod
+++ b/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>LeadimportMappingAssistant_entity</name>
+  <title>Mapping</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/LeadimportMappingAssistant_entity/documentation.adoc</documentation>
-  <title>Mapping</title>
   <titlePlural>Mappings</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -54,6 +54,7 @@
     </entityField>
     <entityProvider>
       <name>LeadimportMapping</name>
+      <documentation>%aditoprj%/entity/LeadimportMappingAssistant_entity/entityfields/leadimportmapping/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>89a94a8b-9447-47a6-94c7-240e25aff7a8</name>
@@ -90,18 +91,9 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/LeadimportMappingAssistant_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/LeadimportMappingAssistant_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>61a456d3-b7b5-4042-ae4c-6245d420da3b</name>
-          <tableName>LEADIMPORTMAPPINGASSISTANT</tableName>
-          <primaryKey>LEADIMPORTMAPPINGASSISTANTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
@@ -140,6 +132,15 @@
           <recordfield>LEADIMPORTMAPPINGASSISTANT.USER_NEW</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>61a456d3-b7b5-4042-ae4c-6245d420da3b</name>
+          <tableName>LEADIMPORTMAPPINGASSISTANT</tableName>
+          <primaryKey>LEADIMPORTMAPPINGASSISTANTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/LeadimportMappingAssistant_entity/entityfields/leadimportmapping/documentation.adoc b/entity/LeadimportMappingAssistant_entity/entityfields/leadimportmapping/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..1de79a30c2cbfcfd954c9178e93d7a211cb5fd9c
--- /dev/null
+++ b/entity/LeadimportMappingAssistant_entity/entityfields/leadimportmapping/documentation.adoc
@@ -0,0 +1 @@
+Provides the LeadimportMappings of the passed Leadimport.
\ No newline at end of file
diff --git a/entity/Leadimport_entity/Leadimport_entity.aod b/entity/Leadimport_entity/Leadimport_entity.aod
index e5241d647c840387bb8afa77a68ae3282a8532b1..1f79a0d182c36726786038ae468c2f973dd8066f 100644
--- a/entity/Leadimport_entity/Leadimport_entity.aod
+++ b/entity/Leadimport_entity/Leadimport_entity.aod
@@ -1,22 +1,55 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Leadimport_entity</name>
+  <title>Lead Import</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Leadimport_entity/documentation.adoc</documentation>
   <icon>NEON:IMPORT</icon>
-  <title>Lead Import</title>
+  <siblings>
+    <element>ImportField_Entity</element>
+  </siblings>
   <grantUpdate v="true" />
   <grantUpdateProcess>%aditoprj%/entity/Leadimport_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDelete v="true" />
   <grantDeleteProcess>%aditoprj%/entity/Leadimport_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Leadimport_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/Leadimport_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <iconId>NEON:IMPORT</iconId>
   <imageProcess>%aditoprj%/entity/Leadimport_entity/imageProcess.js</imageProcess>
   <titlePlural>Lead Imports</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityProvider>
       <name>#PROVIDER</name>
+      <dependencies>
+        <entityDependency>
+          <name>451f0237-27f9-4018-a165-9bb4857d6565</name>
+          <entityName>Object_entity</entityName>
+          <fieldName>Leadimports</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
     </entityProvider>
     <entityField>
       <name>NAME</name>
@@ -35,6 +68,7 @@
       <name>STATUS</name>
       <title>Status</title>
       <consumer>KeywordImportStatus</consumer>
+      <groupable v="true" />
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/status/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
@@ -44,6 +78,7 @@
       <title>Import date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <groupable v="false" />
       <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadimport_date/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -67,6 +102,7 @@
       <isObjectAction v="false" />
       <isSelectionAction v="false" />
       <iconId>VAADIN:INBOX</iconId>
+      <stateProcess>%aditoprj%/entity/Leadimport_entity/entityfields/transferdata/stateProcess.js</stateProcess>
     </entityActionField>
     <entityField>
       <name>SENTENCESEPARATOR</name>
@@ -74,6 +110,7 @@
       <mandatory v="true" />
       <dropDownProcess>%aditoprj%/entity/Leadimport_entity/entityfields/sentenceseparator/dropDownProcess.js</dropDownProcess>
       <textInputAllowed v="true" />
+      <displayValueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/sentenceseparator/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>FIELDSEPARATOR</name>
@@ -81,6 +118,7 @@
       <mandatory v="true" />
       <dropDownProcess>%aditoprj%/entity/Leadimport_entity/entityfields/fieldseparator/dropDownProcess.js</dropDownProcess>
       <textInputAllowed v="true" />
+      <displayValueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/fieldseparator/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>FIELDDELIMITERS</name>
@@ -88,10 +126,12 @@
       <mandatory v="true" />
       <dropDownProcess>%aditoprj%/entity/Leadimport_entity/entityfields/fielddelimiters/dropDownProcess.js</dropDownProcess>
       <textInputAllowed v="true" />
+      <displayValueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/fielddelimiters/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>IMPORTSOURCE</name>
       <title>Import source</title>
+      <groupable v="true" />
       <mandatory v="true" />
     </entityField>
     <entityConsumer>
@@ -134,6 +174,7 @@
     </entityField>
     <entityProvider>
       <name>ImportField</name>
+      <documentation>%aditoprj%/entity/Leadimport_entity/entityfields/importfield/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>ae9f958f-b816-4826-8579-9f01362e0596</name>
@@ -145,6 +186,7 @@
     </entityProvider>
     <entityConsumer>
       <name>ImportFieldID</name>
+      <onValidation>%aditoprj%/entity/Leadimport_entity/entityfields/importfieldid/onValidation.js</onValidation>
       <dependency>
         <name>dependency</name>
         <entityName>ImportField_Entity</entityName>
@@ -327,23 +369,21 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityActionField>
+      <name>ReloadTransferdData</name>
+      <title>Search for new Entries</title>
+      <onActionProcess>%aditoprj%/entity/Leadimport_entity/entityfields/reloadtransferddata/onActionProcess.js</onActionProcess>
+      <isObjectAction v="false" />
+      <iconId>VAADIN:REFRESH</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <onDBInsert>%aditoprj%/entity/Leadimport_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Leadimport_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Leadimport_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>afe18957-2a28-433c-9cce-515dad875ca0</name>
-          <tableName>LEADIMPORT</tableName>
-          <primaryKey>LEADIMPORTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>LEADIMPORTID.value</name>
@@ -414,6 +454,15 @@
           <isLookupFilter v="false" />
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>afe18957-2a28-433c-9cce-515dad875ca0</name>
+          <tableName>LEADIMPORT</tableName>
+          <primaryKey>LEADIMPORTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Leadimport_entity/contentDescriptionProcess.js b/entity/Leadimport_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5fa0cb58bc2af5ffc2520ddbfde0595a93c67cb9
--- /dev/null
+++ b/entity/Leadimport_entity/contentDescriptionProcess.js
@@ -0,0 +1,5 @@
+import("system.datetime");
+import("system.vars");
+import("system.result");
+import("system.translate");
+result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy")));
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/fielddelimiters/displayValueProcess.js b/entity/Leadimport_entity/entityfields/fielddelimiters/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..60728b855572f3068a1d7296e2a9e23550eb97d5
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/fielddelimiters/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.vars");
+import("system.result");
+
+result.string(translate.text(vars.get("$this.value")));
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/fieldseparator/displayValueProcess.js b/entity/Leadimport_entity/entityfields/fieldseparator/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..60728b855572f3068a1d7296e2a9e23550eb97d5
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/fieldseparator/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.vars");
+import("system.result");
+
+result.string(translate.text(vars.get("$this.value")));
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/importfield/documentation.adoc b/entity/Leadimport_entity/entityfields/importfield/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..863a0f3680d76280d15fca556ff172a61f4c0029
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/importfield/documentation.adoc
@@ -0,0 +1 @@
+Provides all Leadimports.
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/importfieldid/onValidation.js b/entity/Leadimport_entity/entityfields/importfieldid/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..f4d8315e3d6836e3388712be79c8fbcd701ee311
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/importfieldid/onValidation.js
@@ -0,0 +1,60 @@
+import("system.translate");
+import("system.result");
+import("Sql_lib");
+import("system.vars");
+
+var attributeChanges = {
+    "LASTNAME" : [],
+    "NAME" : []
+};
+
+var attributeChangesKeys = Object.keys(attributeChanges);
+
+var idMapping = {};
+var consumerField = "ImportFieldID";
+var changedRows = vars.get("$field." + consumerField + ".changedRows");
+
+var importdata = newSelect(["IMPORTFIELD.MAPPINGFIELD", "IMPORTFIELD.IMPORTFIELDID"])
+    .from("IMPORTFIELD")
+    .where("IMPORTFIELD.LEADIMPORT_ID", vars.get("$field.LEADIMPORTID"))
+    .and("IMPORTFIELD.MAPPINGFIELD", attributeChangesKeys, SqlBuilder.IN())
+    .table();
+importdata.forEach(function (row) {
+    _addNewID(row[0], row[1]);
+});
+        
+if (changedRows)
+{
+    changedRows.forEach(function (row)
+    {
+        if (!idMapping[row.IMPORTFIELDID])
+        {
+            _addNewID(row.MAPPINGFIELD, row.IMPORTFIELDID);
+        }
+        else
+        {
+            var index = attributeChanges[idMapping[row.IMPORTFIELDID]].indexOf(row.IMPORTFIELDID);
+            if (index > -1)
+            {
+                attributeChanges[idMapping[row.IMPORTFIELDID]].splice(index, 1);
+                _addNewID(row.MAPPINGFIELD, row.IMPORTFIELDID);
+            }
+        }
+        
+    });
+}
+
+if (!attributeChanges.NAME.length && !attributeChanges.LASTNAME.length && changedRows.length)
+{
+    result.string(translate.text("The Import Fields \"Lastname\" or \"Organisation\" have to be mapped!"));
+}
+
+function _addNewID (pMappingField, pImportId) 
+{
+    if (attributeChanges[pMappingField])
+    {
+        attributeChanges[pMappingField].push(pImportId);
+        idMapping[pImportId] = pMappingField;
+    }
+}
+    
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/reloadtransferddata/onActionProcess.js b/entity/Leadimport_entity/entityfields/reloadtransferddata/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..859ea6ca00cc4430746641e87e886e9c0bfa073c
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/reloadtransferddata/onActionProcess.js
@@ -0,0 +1,2 @@
+import("system.neon");
+neon.refresh();
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/sentenceseparator/displayValueProcess.js b/entity/Leadimport_entity/entityfields/sentenceseparator/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..60728b855572f3068a1d7296e2a9e23550eb97d5
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/sentenceseparator/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.vars");
+import("system.result");
+
+result.string(translate.text(vars.get("$this.value")));
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/sentenceseparator/dropDownProcess.js b/entity/Leadimport_entity/entityfields/sentenceseparator/dropDownProcess.js
index b955dae75d3b2e600f98bdae783e378cff727af3..6ba802190fa0bc641f9a6c53aa6b8fdf9f1250c7 100644
--- a/entity/Leadimport_entity/entityfields/sentenceseparator/dropDownProcess.js
+++ b/entity/Leadimport_entity/entityfields/sentenceseparator/dropDownProcess.js
@@ -1,4 +1,6 @@
 import("system.translate");
 import("system.result");
 
-result.object([["carriage return and line feed", translate.text("carriage return and line feed")]])
\ No newline at end of file
+result.object([
+    ["carriage return and line feed", translate.text("carriage return and line feed")]
+]);
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/transferdata/onActionProcess.js b/entity/Leadimport_entity/entityfields/transferdata/onActionProcess.js
index 030b5064fd4b0f485c28ae2841dfed08842b14b1..39d636748fcfa10af516a8688fb96ac3c5ee97a9 100644
--- a/entity/Leadimport_entity/entityfields/transferdata/onActionProcess.js
+++ b/entity/Leadimport_entity/entityfields/transferdata/onActionProcess.js
@@ -1,3 +1,4 @@
+import("system.translate");
 import("ExportTemplate_lib");
 import("Leadimport_lib");
 import("system.question");
@@ -10,44 +11,57 @@ import("system.db");
 import("system.vars");
 import("system.neon");
 
-var binMetadatas = db.getBinaryMetadata("LEADIMPORT", "IMPORTFILE", vars.get("$field.LEADIMPORTID"), false, SqlUtils.getBinariesAlias(), "");
-
-if (binMetadatas.length > 0)
+var execute = true;
+var logCount = newSelect("count(*)")
+                        .from("LEADLOG")
+                        .where("LEADLOG.LEADIMPORT_ID", vars.get("$field.LEADIMPORTID"))
+                        .cell();
+if(logCount > 0)
+{
+    execute = question.askYesNo("Leadimport", translate.text("The data of this Leadimport has already been transfered. Do you want to transfer it again?"), false);
+}
+if(execute)
 {
-    var binId = binMetadatas[0].id;
-    
-    var assignmentRowId = vars.get("$field.LEADIMPORTID");
-    var name = vars.get("$field.NAME");
-    var user = vars.get("$sys.user");
-    
-    var fieldSep = ExportTemplateUtils.getFieldSeparator(vars.get("$field.FIELDSEPARATOR"));
-    var fieldLimit = ExportTemplateUtils.getFieldDeLimiter(vars.get("$field.FIELDDELIMITERS"));
-    var recordSep = ExportTemplateUtils.getSentenceSeparator(vars.get("$field.SENTENCESEPARATOR"));
-    var currDate = vars.get("$sys.date");
+    var binMetadatas = db.getBinaryMetadata("LEADIMPORT", "IMPORTFILE", vars.get("$field.LEADIMPORTID"), false, SqlUtils.getBinariesAlias(), "");
 
-    var params = 
+    if (binMetadatas.length > 0)
     {
-        importdefid: vars.get("$field.LEADIMPORTID"),
-        assignmentRowId: assignmentRowId,
-        binId: binId,
-        recordSep: recordSep,
-        fieldSep: fieldSep, 
-        fieldLimit: fieldLimit,
-        user: user,
-        source: vars.getString("$field.IMPORTSOURCE"),
-        currDate:  currDate,
-        userId: EmployeeUtils.getCurrentUserId(),
-        importName: name
-    }
+        var binId = binMetadatas[0].id;
+
+        var assignmentRowId = vars.get("$field.LEADIMPORTID");
+        var name = vars.get("$field.NAME");
+        var user = vars.get("$sys.user");
 
-    //process.execute("importLead_serverProcess", params);
-    var processConfig = process.createStartAsyncConfig().setName("importLead_serverProcess")
-                                                        .setLocalVariables(params)
-                                                        .setShowErrorDialog(false)
-                                                        .setUser(user)
-                                                        .setThreadPriority(process.THREADPRIORITY_LOW)
-                                                        .setTimerType(process.TIMERTYPE_SERVER);
-    process.startAsync(processConfig);
-} else {
-    question.showMessage("Error: The Importfile could not be found anymore.");
+        var fieldSep = ExportTemplateUtils.getFieldSeparator(vars.get("$field.FIELDSEPARATOR"));
+        var fieldLimit = ExportTemplateUtils.getFieldDeLimiter(vars.get("$field.FIELDDELIMITERS"));
+        var recordSep = ExportTemplateUtils.getSentenceSeparator(vars.get("$field.SENTENCESEPARATOR"));
+        var currDate = vars.get("$sys.date");
+
+        var params = 
+        {
+            importdefid: vars.get("$field.LEADIMPORTID"),
+            assignmentRowId: assignmentRowId,
+            binId: binId,
+            recordSep: recordSep,
+            fieldSep: fieldSep, 
+            fieldLimit: fieldLimit,
+            user: user,
+            source: vars.getString("$field.IMPORTSOURCE"),
+            currDate:  currDate,
+            userId: user,
+            importName: name
+        }
+
+        //process.execute("importLead_serverProcess", params);
+        var processConfig = process.createStartAsyncConfig().setName("importLead_serverProcess")
+                                                            .setLocalVariables(params)
+                                                            .setShowErrorDialog(false)
+                                                            .setUser(user)
+                                                            .setThreadPriority(process.THREADPRIORITY_LOW)
+                                                            .setTimerType(process.TIMERTYPE_SERVER);
+        process.startAsync(processConfig);
+    } else
+    {
+        question.showMessage(translate.text("Error: The Importfile could not be found anymore."));
+    }
 }
\ No newline at end of file
diff --git a/entity/Leadimport_entity/entityfields/transferdata/stateProcess.js b/entity/Leadimport_entity/entityfields/transferdata/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed97ad26cf42805e0645ab99f863379278539ea2
--- /dev/null
+++ b/entity/Leadimport_entity/entityfields/transferdata/stateProcess.js
@@ -0,0 +1,19 @@
+import("Sql_lib");
+import("system.result");
+import("system.vars");
+import("Leadimport_lib");
+import("system.neon");
+
+let leadimportID = vars.get("$field.LEADIMPORTID");
+let count = newSelect(["count(*)"])
+            .from("IMPORTFIELD")
+            .where("IMPORTFIELD.LEADIMPORT_ID", leadimportID)
+            .and(
+                newWhere("IMPORTFIELD.MAPPINGFIELD", "LASTNAME")
+                .or("IMPORTFIELD.MAPPINGFIELD", "NAME")
+            ).cell();
+
+if (count > 0)
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else 
+    result.string(neon.COMPONENTSTATE_DISABLED);
\ No newline at end of file
diff --git a/entity/Leadimport_entity/recordcontainers/db/onDBDelete.js b/entity/Leadimport_entity/recordcontainers/db/onDBDelete.js
index 76cb3729e7370c9c2435b1fa433f64dcbec4bd4a..17ff5bbfc50c4ab8b2f59bfa43e530c9f6fbd6dd 100644
--- a/entity/Leadimport_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Leadimport_entity/recordcontainers/db/onDBDelete.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("Context_lib");
 import("Sql_lib");
 import("system.vars");
@@ -37,4 +38,6 @@ binMetadata.forEach(function(pMeta)
 });
 
 new AttributeRelationQuery(leadImportId, null, ContextUtils.getCurrentContextId())
-    .deleteAllAttributes();
\ No newline at end of file
+    .deleteAllAttributes();
+    
+WorkflowSignalSender.deleted();
\ No newline at end of file
diff --git a/entity/Leadimport_entity/recordcontainers/db/onDBInsert.js b/entity/Leadimport_entity/recordcontainers/db/onDBInsert.js
index 9335140ab1c5174408bc2300ee3ec2e263bd06e1..ff3f343de00e5495c0ed996a1ccb473aedc8705d 100644
--- a/entity/Leadimport_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Leadimport_entity/recordcontainers/db/onDBInsert.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("ExportTemplate_lib");
 import("Sql_lib");
 import("KeywordRegistry_basic");
@@ -25,4 +26,5 @@ if(bindata != '' && filename != '')
         var documentId = SingleBinaryUtils.insertMainDocument("LEADIMPORT", "IMPORTFILE", assignmentRowId, bindata, filename, "", SqlUtils.getBinariesAlias());
         LeadImportUtils.loadImportFile(documentId, fieldSep, fieldLimit, recordSep, assignmentRowId, false, true);
     }
-}
\ No newline at end of file
+}
+WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/Leadimport_entity/recordcontainers/db/onDBUpdate.js b/entity/Leadimport_entity/recordcontainers/db/onDBUpdate.js
index 9f19087232a89f6cab7046ac2ac4e36b53aadf3b..408e3da8f19a03687ee4d6292046c387cde1e56a 100644
--- a/entity/Leadimport_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Leadimport_entity/recordcontainers/db/onDBUpdate.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("ExportTemplate_lib");
 import("system.neon");
 import("Sql_lib");
@@ -5,40 +6,53 @@ import("KeywordRegistry_basic");
 import("Keyword_lib");
 import("Binary_lib");
 import("Leadimport_lib");
+import("ExportTemplate_lib");
+import("Binary_lib");
+import("Document_lib");
+import("Sql_lib");
 import("system.db");
 import("system.vars");
-import("system.util");
-import("Document_lib");
+
+
+var binId;
+var assignmentRowId = vars.get("$field.LEADIMPORTID");
+var binMetadata = db.getBinaryMetadata("LEADIMPORT", "IMPORTFILE", assignmentRowId, false, SqlUtils.getBinariesAlias(), "");
 
 // "FILE NOT CHANGED" is set in the value process of the field to indicate that the user didn't upload a new file
 if (vars.get("$field.bindata") != "FILE NOT CHANGED")
 {
-    var assignmentRowId = vars.get("$field.LEADIMPORTID");
-    var bindata = DocumentUtil.getBindataFromUpload(vars.get("$field.bindata"));
-    var filename = DocumentUtil.getFilenameFromUpload(vars.get("$field.bindata"));
-
-    var fieldSep = ExportTemplateUtils.getFieldSeparator(vars.get("$field.FIELDSEPARATOR"));
-    var fieldLimit = ExportTemplateUtils.getFieldDeLimiter(vars.get("$field.FIELDDELIMITERS"));
-    var recordSep = ExportTemplateUtils.getSentenceSeparator(vars.get("$field.SENTENCESEPARATOR"));
-
+    let bindata = DocumentUtil.getBindataFromUpload(vars.get("$field.bindata"));
+    let filename = DocumentUtil.getFilenameFromUpload(vars.get("$field.bindata"));
+    
     if(bindata != '' && filename != '')
     {
         var mimeType = DocumentUtil.getMimeTypeFromUpload(vars.get("$field.bindata"));
         if (mimeType == "application/vnd.ms-excel" || mimeType == "text/csv")
         {
-            
-            var binMetadata = db.getBinaryMetadata("LEADIMPORT", "IMPORTFILE", assignmentRowId, false, SqlUtils.getBinariesAlias(), "");
-            if (binMetadata.length > 0) {
+            if (binMetadata.length > 0)
+            {
                 db.updateBinary(binMetadata[0].id, "", bindata, filename, "", "MAINDOCUMENT", SqlUtils.getBinariesAlias());
-                LeadImportUtils.loadImportFile(binMetadata[0].id, fieldSep, fieldLimit, recordSep, assignmentRowId, true, true);
+                binId = binMetadata[0].id;
             }
             else
             {
-                var documentId = SingleBinaryUtils.insertMainDocument("LEADIMPORT", "IMPORTFILE", assignmentRowId, bindata, filename, "", SqlUtils.getBinariesAlias());
-                LeadImportUtils.loadImportFile(documentId, fieldSep, fieldLimit, recordSep, assignmentRowId, false, true);
+                binId = SingleBinaryUtils.insertMainDocument("LEADIMPORT", "IMPORTFILE", assignmentRowId, bindata, filename, "", SqlUtils.getBinariesAlias());
             }
         }
     }
+}
+else if (binMetadata.length > 0)
+{
+    binId = binMetadata[0].id;
+}
 
-    neon.refreshAll();
+if (binId)
+{
+    var fieldSep = ExportTemplateUtils.getFieldSeparator(vars.get("$field.FIELDSEPARATOR"));
+    var fieldLimit = ExportTemplateUtils.getFieldDeLimiter(vars.get("$field.FIELDDELIMITERS"));
+    var recordSep = ExportTemplateUtils.getSentenceSeparator(vars.get("$field.SENTENCESEPARATOR"));
+
+    LeadImportUtils.loadImportFile(binId, fieldSep, fieldLimit, recordSep, assignmentRowId, true, true);
 }
+
+WorkflowSignalSender.updated();
diff --git a/entity/LetterRecipient_entity/LetterRecipient_entity.aod b/entity/LetterRecipient_entity/LetterRecipient_entity.aod
index 63ec8c14576769c9f89e4cedc7152fb2fc92b02c..c69902cd77d808ef4787a6f2e0ec3de07a9494e9 100644
--- a/entity/LetterRecipient_entity/LetterRecipient_entity.aod
+++ b/entity/LetterRecipient_entity/LetterRecipient_entity.aod
@@ -1,11 +1,12 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>LetterRecipient_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/LetterRecipient_entity/documentation.adoc</documentation>
   <siblings>
     <element>Address_entity</element>
   </siblings>
+  <onValidation>%aditoprj%/entity/LetterRecipient_entity/onValidation.js</onValidation>
   <titlePlural>Recipients</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -105,43 +106,13 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/LetterRecipient_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/LetterRecipient_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/LetterRecipient_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBInsert>%aditoprj%/entity/LetterRecipient_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/LetterRecipient_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/LetterRecipient_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>0a41cbd3-c199-4191-af95-ba793e4f2554</name>
-          <tableName>LETTERRECIPIENT</tableName>
-          <primaryKey>LETTERRECIPIENTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>d2204511-72e8-4b58-80b0-39cb334e68f7</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>25149c4f-b158-48e6-b114-cc7e05ebe75b</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>d653cba9-df2f-4b78-8bf3-8e92d8965d36</name>
-          <tableName>PERSON</tableName>
-          <primaryKey>PERSONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CONTACT_ID.value</name>
@@ -186,6 +157,36 @@
           <recordfield>CONTACT.ADDRESS_ID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>0a41cbd3-c199-4191-af95-ba793e4f2554</name>
+          <tableName>LETTERRECIPIENT</tableName>
+          <primaryKey>LETTERRECIPIENTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>d2204511-72e8-4b58-80b0-39cb334e68f7</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>25149c4f-b158-48e6-b114-cc7e05ebe75b</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>d653cba9-df2f-4b78-8bf3-8e92d8965d36</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/LetterRecipient_entity/entityfields/icon/colorProcess.js b/entity/LetterRecipient_entity/entityfields/icon/colorProcess.js
index 2284141675c76efe4d00742da5cc858c9b3b97c9..25d65f8b52561d95c5e3d6879fd99d0fb9d85264 100644
--- a/entity/LetterRecipient_entity/entityfields/icon/colorProcess.js
+++ b/entity/LetterRecipient_entity/entityfields/icon/colorProcess.js
@@ -2,5 +2,5 @@ import("system.vars");
 import("system.result");
 import("system.neon");
 
-if (vars.get("$field.HASCOMMRESTRICTION") == "true" || !vars.get("$field.ADDRESS_ID.displayValue").trim())
+if (vars.get("$field.HASCOMMRESTRICTION") == "true" || vars.get("$field.ADDRESS_ID.displayValue").trim() == "-" || !vars.get("$field.ADDRESS_ID.displayValue").trim())
     result.string(neon.PRIORITY_HIGH_COLOR);
\ No newline at end of file
diff --git a/entity/LetterRecipient_entity/onValidation.js b/entity/LetterRecipient_entity/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..b165c8bd18fd2983e52e191b2ec9e71b404cbb7f
--- /dev/null
+++ b/entity/LetterRecipient_entity/onValidation.js
@@ -0,0 +1,16 @@
+import("system.translate");
+import("system.result");
+import("Sql_lib");
+import("system.vars");
+
+var contactId = vars.get("$field.CONTACT_ID");
+
+var standardAddress = newSelect("CONTACT.ADDRESS_ID")
+                                .from("CONTACT")
+                                .where("CONTACT.CONTACTID", contactId)
+                                .cell();
+
+if(!standardAddress)
+{
+    result.string(translate.text("The selected Contact doesn't have an address set."));
+}
\ No newline at end of file
diff --git a/entity/Letter_entity/Letter_entity.aod b/entity/Letter_entity/Letter_entity.aod
index 5e357ba666061841bd96270267b9be9f7dc091ca..1cd209bbe24e5d306cd48ea4ee0b2fe208fad318 100644
--- a/entity/Letter_entity/Letter_entity.aod
+++ b/entity/Letter_entity/Letter_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Letter_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Letter_entity/documentation.adoc</documentation>
diff --git a/entity/LogHistory_entity/LogHistory_entity.aod b/entity/LogHistory_entity/LogHistory_entity.aod
index 6499fc00e002942363effcb7f67696ae5849e409..059c91250db6c8663797945a0a537cc699c7307e 100644
--- a/entity/LogHistory_entity/LogHistory_entity.aod
+++ b/entity/LogHistory_entity/LogHistory_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>LogHistory_entity</name>
+  <title>Log</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/LogHistory_entity/documentation.adoc</documentation>
-  <title>Log</title>
   <grantUpdate v="false" />
   <grantDelete v="false" />
   <iconId>NEON:HISTORY</iconId>
@@ -125,6 +125,12 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
+      <children>
+        <entityParameter>
+          <name>tablenames_param</name>
+          <documentation>%aditoprj%/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc</documentation>
+        </entityParameter>
+      </children>
     </entityProvider>
     <entityParameter>
       <name>tablenames_param</name>
diff --git a/entity/LogHistory_entity/documentation.adoc b/entity/LogHistory_entity/documentation.adoc
index 20fa16faa475bdb8b0cd35d7ddb11fe847f73e0e..b38670d44b72f1f2236c7f594c3f1935458061a3 100644
--- a/entity/LogHistory_entity/documentation.adoc
+++ b/entity/LogHistory_entity/documentation.adoc
@@ -2,5 +2,92 @@
 
 Entity for the log entries in the individual modules.
 
-This entity is based on the `AB_LOGHISTORY`-table. Note that this database table has no primary key associated to it.
-This is because it is only a pit of log-record and not necessary.
\ No newline at end of file
+This entity is based on the `AB_LOGHISTORY`-table.
+
+== configure Loghistory
+
+:DATA_ALIAS: Data_alias
+:EDITOR_ALIAS_DEFINITION: AliasDefinition-Editor
+
+=== the concept
+//TODO: extend the concept description
+Stoarge: Database-table: `AB_LOGHISTORY`
+
+Collecting Data:
+----
+Audit -> process_audit -> Loghistory_lib: LogHistoryExecutor 
+----
+
+Data is collected and pre-translated. Therefor only one Language can be applied for logging.
+Because the loghistory is written via the auditing, only changes that are done with the proper Jdito-Methods will be logged.
+
+=== prerequisites
+
+Auditing has to be activated for all tables you want to log.
+
+.prerequisites of enabling Audit in general
+* Auditing has to be enabled in your Server
+* Auditing has to be enabled for your alias (default: +{DATA_ALIAS}+)
+* Tables that shall be logged need some configs in the _{EDITOR_ALIAS_DEFINITION}_
+** property `idColumn` has to be set (a primary key is needed therefore)
+** `auditMode` has to be set -Standard, -CLOB, or -BLOB (chosse the one you really need)
+
+
+=== activate writing into loghistory
+
+Assuming that the 
+
+* required database-tables exist 
+* JDito-processes already exist
+* audit has been activated in general
+
+you are ready to configure _which_ column shall be logged and _how_.
+
+==== configure columns for logging
+
+There are several properties (custom and pre-exisiting) that can be set for configuring the logging:
+
+.configuration options per column
+[options="header"]
+|=======
+|property |purpose |property-type
+|+title+ |text that is used to display which column has been modified|pre-exisiting
+|+log+ |defines whether a column needs to be logged or not; not exisisting equals `false` |custom: Booelan
+|+tableRef+ |references table for automatically grouping data. This is usefull for ForeignKeys, e.g. a +OFFERITEM.OFFER_ID+ column could have a +tableRef+ "OFFER"|custom: String
+|+primaryKey+ |this is not only used to enable auditing generally, but it's used to resolve +tableRef+ values correctly|pre-exisiting
+|+keyword+ |defines a keyword contianer that should be used to transform a +KEYID+ into a display value|custom: String
+|+autoMapTrueFalse4Log+ |if `true` the loghistory-executor tries to automatically translate a value into a "yes"/"no"-display value|custom: Booelan
+|+translate4Log+ |defines a process to transform a technical value into a display value |custom: JDito
+|=======
+
++translate4Log+ is a mighty possibility to translate a ID-value into a displayvalue. However, you should keep several important things in mind:
+
+* translate text if necessary via the locale-parameter
+* the process is called each time a change to that column is applied - keep it fast and simple
+
+.translate4Log example (skip imports for better readability)
+[source,javascript]
+----
+var params = Translate4LogParams.load();// <1>
+var countryName = CountryUtils.getLatinNameByIso2(params.value, params.locale); // <2>
+result.string(countryName);// <3>
+----
+<1> load the parameters in a easy and fail-proof way
+<2> locale is passed to the resolving function and in that function a translation is applied
+<3> always return a string
+
+==== configure a consumer for retrieving the loghistory
+
+.Example for the +tablenames_param+ process
+----
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+var res = [];
+res.push({id: vars.get("$field.CONTACTID"), tableNames: ["CONTACT", "COMMUNICATION", "ADDRESS", "AB_ATTRIBUTERELATION"]});
+res.push({id: vars.get("$field.PERSONID"), tableNames: ["PERSON"]});
+
+res = JSON.stringify(res);
+result.object(res);
+----
\ No newline at end of file
diff --git a/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc b/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..3051d2df3f9362543da5347d37f36446eb4a924f
--- /dev/null
+++ b/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc
@@ -0,0 +1,15 @@
+= tablenames_param
+
+.Example
+----
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+var res = [];
+res.push({id: vars.get("$field.CONTACTID"), tableNames: ["CONTACT", "COMMUNICATION", "ADDRESS", "AB_ATTRIBUTERELATION"]});
+res.push({id: vars.get("$field.PERSONID"), tableNames: ["PERSON"]});
+
+res = JSON.stringify(res);
+result.object(res);
+----
\ No newline at end of file
diff --git a/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc b/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc
index 2712d5d5c6d4ad5349fc4f6539190503d2efa92d..4088dd1c6fa530aa4a30a142f1eb47d5ce7a7c1e 100644
--- a/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc
+++ b/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc
@@ -1,3 +1,5 @@
+= LogHistoryProvider
+
 Generic provider for log history entries. 
 
 A filter for given _tablenames_ is applied, see the documentation of the parameters for an example.
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod b/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..3660a3783e7130d2d9c515823b0bf6dd58b9628f
--- /dev/null
+++ b/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod
@@ -0,0 +1,114 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>MSTTeamLink_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/MSTTeamLink_entity/documentation.adoc</documentation>
+  <siblings>
+    <element>Salesproject_entity</element>
+    <element>Member_entity</element>
+  </siblings>
+  <afterUiInit>%aditoprj%/entity/MSTTeamLink_entity/afterUiInit.js</afterUiInit>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>MST_TEAMLINKID</name>
+    </entityField>
+    <entityField>
+      <name>MST_TEAM_ID</name>
+      <title>Team</title>
+      <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>OBJECT_ROWID</name>
+      <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>OBJECT_TYPE</name>
+      <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>Teams</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>MSTTeam_entity</entityName>
+        <fieldName>TeamsByIdAndName</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityField>
+      <name>TEAMNAME</name>
+      <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>TEAM_ID_AND_NAME</name>
+      <documentation>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc</documentation>
+      <title>Team</title>
+      <consumer>Teams</consumer>
+      <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js</displayValueProcess>
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <fromClauseProcess>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
+      <conditionProcess>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <onDBInsert>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
+      <onDBUpdate>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
+      <alias>Data_alias</alias>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>MST_TEAMLINKID.value</name>
+          <recordfield>MST_TEAMLINK.MST_TEAMLINKID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>MST_TEAM_ID.value</name>
+          <recordfield>MST_TEAMLINK.MST_TEAM_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_ROWID.value</name>
+          <recordfield>MST_TEAMLINK.OBJECT_ROWID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_TYPE.value</name>
+          <recordfield>MST_TEAMLINK.OBJECT_TYPE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TEAMNAME.value</name>
+          <recordfield>MST_TEAM.TEAMNAME</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>178230f3-4ee4-4ec0-a7f6-4f4ddddbbb22</name>
+          <tableName>MST_TEAMLINK</tableName>
+          <primaryKey>MST_TEAMLINKID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>53378325-f195-4eb3-9e22-68fd769eef03</name>
+          <tableName>MST_TEAM</tableName>
+          <primaryKey>MST_TEAMID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/MSTTeamLink_entity/afterUiInit.js b/entity/MSTTeamLink_entity/afterUiInit.js
new file mode 100644
index 0000000000000000000000000000000000000000..bac4e960d87d6ae60ae5e5d5f2fc506fdd3d191b
--- /dev/null
+++ b/entity/MSTTeamLink_entity/afterUiInit.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.neon");
+import("system.entities");
+
+//reload the teams once, because the cache might not be up-to-date
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    entities.invalidateCache("MSTTeam_entity", "jdito");
+    entities.getRows(entities.createConfigForLoadingConsumerRows()
+        .consumer("Teams")
+        .fields(["UID", "TEAMNAME", "TEAMID_AND_NAME", "ISARCHIVED", "DESCRIPTION"])
+    );
+}
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/documentation.adoc b/entity/MSTTeamLink_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..55fcd72aba98ec0011c6562a4a81014327899e72
--- /dev/null
+++ b/entity/MSTTeamLink_entity/documentation.adoc
@@ -0,0 +1,3 @@
+= MSTTeamLink_entity
+
+This entity represents a relation between a MST team and an object (e. g. a Sales Project).
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8b66b4de6f181006ed9464bc5c730db279e5af42
--- /dev/null
+++ b/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("Util_lib");
+
+var teamIdAndName = Utils.parseJSON(vars.get("$field.TEAM_ID_AND_NAME"));
+if (teamIdAndName && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
+    result.string(teamIdAndName[0]);
\ No newline at end of file
diff --git a/entity/Classification_entity/entityfields/classificationtype/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js
similarity index 66%
rename from entity/Classification_entity/entityfields/classificationtype/valueProcess.js
rename to entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js
index 2bccd5eb7fbb2311971da0e6ae2ed3b56ed21268..53123b405da6e47e653fc29b6ea5b1d7ab0b7aba 100644
--- a/entity/Classification_entity/entityfields/classificationtype/valueProcess.js
+++ b/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js
@@ -1,8 +1,6 @@
-import("system.result");
 import("system.neon");
 import("system.vars");
+import("system.result");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-{
-    result.string(vars.get("$param.ClassificationType_param"));
-}
\ No newline at end of file
+    result.string(vars.get("$param.ObjectRowId_param"));
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7f34d7fdb9049c4c3427fb40b45a320b1585d5b0
--- /dev/null
+++ b/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$param.ObjectType_param"));
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ada1bccad1d8dba906a5f5db4d9289e0abf3f44f
--- /dev/null
+++ b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.TEAMNAME"));
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..7ef07b42d0e7f4ddef718cf1cf07362e36866b23
--- /dev/null
+++ b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc
@@ -0,0 +1,7 @@
+= TEAM_ID_AND_NAME
+
+This field is used for selecting a MST team for the teamLink. Because we need both the id and the name from the team, it can't be selected
+directly in the MST_TEAM_ID field, which contains only the id (and fetching the name afterwards using the id would be rather slow).
+
+In new- or edit-mode, the two fields MST_TEAM_ID and TEAMNAME pull their values from this field. In view-mode, this field gets the value
+from MST_TEAM_ID and TEAMNAME, because only these two fields are connected to the recordContainer.
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..94638c9fe9031b798104127c1426fc2d471dca36
--- /dev/null
+++ b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+//in view-mode, load the values from the fields that are connected to the recordcontainer
+if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$sys.recordstate") != neon.OPERATINGSTATE_EDIT)
+    result.string(JSON.stringify([vars.get("$field.MST_TEAM_ID"), vars.get("$field.TEAMNAME")]));
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d3f581dba2d01626cb9050634dac3abba981f6ab
--- /dev/null
+++ b/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("Util_lib");
+
+var teamIdAndName = Utils.parseJSON(vars.get("$field.TEAM_ID_AND_NAME"));
+if (teamIdAndName && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
+    result.string(teamIdAndName[1]);
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js b/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ad0a18104e1291790bd33463603537bce7c5914b
--- /dev/null
+++ b/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("Sql_lib");
+
+var condition = newWhereIfSet("MST_TEAMLINK.OBJECT_ROWID", "$param.ObjectRowId_param")
+    .andIfSet("MST_TEAMLINK.OBJECT_TYPE", "$param.ObjectType_param");
+
+result.string(condition.toString(SqlBuilder.NORESULT_CONDITION()));
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js b/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4457ba9b19fa0da6c133ce39565cb83164888cfb
--- /dev/null
+++ b/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("MST_TEAMLINK left join MST_TEAM on MST_TEAMLINK.MST_TEAM_ID = MST_TEAM.MST_TEAMID");
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js b/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..bf45fb336010b2db0a4ddc1e03a35ce009fb2c15
--- /dev/null
+++ b/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js
@@ -0,0 +1,12 @@
+import("system.vars");
+import("MSTeams_lib");
+
+var teamLinkId = vars.get("$local.uid");
+var rowData = vars.get("$local.rowdata");
+//if the linked context is configured to have just one teamLink but the object already has a teamLink, the old teamLink will be deleted
+MSTeamsUtils.purgeCorruptTeamLinks(rowData["MST_TEAMLINK.OBJECT_ROWID"], rowData["MST_TEAMLINK.OBJECT_TYPE"], teamLinkId);
+
+MSTeamsUtils.insertTeamIfMissing({
+    teamId: rowData["MST_TEAMLINK.MST_TEAM_ID"],
+    teamName: rowData["MST_TEAM.TEAMNAME"]
+});
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js b/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..61769345ec3f8bb71aad2e776267b4f5f009f185
--- /dev/null
+++ b/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("MSTeams_lib");
+
+var rowData = vars.get("$local.rowdata");
+
+MSTeamsUtils.insertTeamIfMissing({
+    teamId: rowData["MST_TEAMLINK.MST_TEAM_ID"],
+    teamName: rowData["MST_TEAM.TEAMNAME"]
+});
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..3c692264449930b67d31618a638c5c7aeb10245f
--- /dev/null
+++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod
@@ -0,0 +1,160 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>MSTTeamMember_entity</name>
+  <title>Member</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/MSTTeamMember_entity/documentation.adoc</documentation>
+  <siblings />
+  <titlePlural>Members</titlePlural>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+      <dependencies>
+        <entityDependency>
+          <name>335d30c4-7beb-4dcb-8a0f-de85108530a9</name>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityField>
+      <name>CONTACT_ID</name>
+      <title>Members</title>
+      <consumer>ProjectMembers</consumer>
+      <linkedContextProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess>
+      <mandatory v="true" />
+      <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js</stateProcess>
+      <displayValueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityParameter>
+      <name>UpnsOfMembers_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>MailsOfExtern_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>ProjectMembers</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Member_entity</entityName>
+        <fieldName>TeamMemberProvider</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>ISEXTERN</name>
+      <state>INVISIBLE</state>
+      <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>MEMBERNAME</name>
+    </entityField>
+    <entityParameter>
+      <name>MSTTeamId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>MembersOfTeam</name>
+      <documentation>%aditoprj%/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc</documentation>
+      <dependencies>
+        <entityDependency>
+          <name>37854fde-c4ae-4f56-82df-14385717f82e</name>
+          <entityName>MSTTeam_entity</entityName>
+          <fieldName>TeamMembers</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>ROLE</name>
+      <title>Role</title>
+      <mandatory v="true" />
+      <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js</mandatoryProcess>
+      <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js</dropDownProcess>
+      <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>INVITE</name>
+      <title>Invitation</title>
+      <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js</mandatoryProcess>
+      <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js</dropDownProcess>
+      <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/valueProcess.js</valueProcess>
+    </entityField>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>AZUREID</name>
+      <state>INVISIBLE</state>
+      <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>AZUREUPN</name>
+      <state>INVISIBLE</state>
+      <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>AZURE_DATA</name>
+      <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js</valueProcess>
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <hasDependentRecords v="true" />
+      <onInsert>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js</onInsert>
+      <onUpdate>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
+      <onDelete>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js</onDelete>
+      <recordFieldMappings>
+        <jDitoRecordFieldMapping>
+          <name>UID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>MEMBERNAME.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>ROLE.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>ROLE.displayValue</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>CONTACT_ID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>CONTACT_ID.displayValue</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>ISEXTERN.value</name>
+        </jDitoRecordFieldMapping>
+      </recordFieldMappings>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/MSTTeamMember_entity/documentation.adoc b/entity/MSTTeamMember_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..31059321e3f9951411240a778c077d89bda07fbc
--- /dev/null
+++ b/entity/MSTTeamMember_entity/documentation.adoc
@@ -0,0 +1,14 @@
+MSTTeamMember
+============
+
+== Overview ==
+MSTTeamMember is used to get all members of a MST team
+
+== A MSTTeamMember consists of some modules: ==
+- MSTTeamMember itself
+
+== BestPractice ==
+
+== FAQ ==
+
+
diff --git a/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2df756b62a28fb058c3cec8a2df5de3090bf9538
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js
@@ -0,0 +1,16 @@
+import("system.result");
+import("system.neon");
+import("system.tools");
+import("system.vars");
+import("Employee_lib");
+
+var contactId = vars.get("$field.CONTACT_ID");
+var user = EmployeeUtils.getUserByContactId(contactId);
+var azureId = user ? user[tools.PARAMS][tools.TEAMS_AZUREID] : "";
+var azureUpn = user ? user[tools.PARAMS][tools.TEAMS_AZUREUPN] : "";
+
+var azureData = {
+    azureId: azureId,
+    azureUpn: azureUpn
+};
+result.string(JSON.stringify(azureData));
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7744184c730b891e88e88ada811a017db109b03d
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("Util_lib");
+import("system.vars");
+
+var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA"));
+result.string(azureData ? azureData.azureId : "");
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..554d4e727325955acb211567d4ea1878a534128c
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("Util_lib");
+import("system.vars");
+
+var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA"));
+result.string(azureData ? azureData.azureUpn : "");
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js b/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e038c4ba3609a69417debdc9c43185e7051438ff
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+import("Contact_lib");
+
+if (vars.get("$field.MEMBERNAME"))
+    result.string(vars.get("$field.MEMBERNAME"));
+else 
+{
+    result.string(ContactUtils.getTitleByContactId(vars.get("$field.CONTACT_ID")));
+}
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js b/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c02451c808e121fce9dea7537331dc3fa0dd6e02
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+if (vars.get("$field.CONTACT_ID"))
+    result.string("Person");
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..53c48b1aa60c14977805717d383efb2668f5bd64
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+result.string(vars.get("$field.MEMBERNAME") ? neon.COMPONENTSTATE_READONLY : neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0a4ec38e3c77cac49e9a94b463d4c483a63715a7
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.translate");
+
+result.object([
+    ["true", translate.text("Invite")],
+    ["false", translate.text("Don't invite")]
+]);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..488ee5dc7e0ad5e6122271731fa275245d7057e6
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js
@@ -0,0 +1,5 @@
+import("Util_lib");
+import("system.vars");
+import("system.result");
+
+result.string(Utils.toBoolean(vars.get("$field.ISEXTERN")));
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..37feecaa37dcd3ffed35221ff2e9157477fa6f4e
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("system.neon");
+
+result.string(vars.get("$field.MEMBERNAME") || vars.get("$field.ISEXTERN") != "true" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/invite/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..516e09d60f21ed6d91e8f27b41593afec8f686ff
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/invite/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string(false);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c2bd7034a52ed887060a47de48959ab0db7792f5
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("Util_lib");
+import("system.vars");
+
+var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA"));
+result.string(!azureData || !(azureData.azureId || azureData.azureUpn));
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc b/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..f9cc1fa6dc82eea3b61b20c766c074e38ac518f1
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc
@@ -0,0 +1,3 @@
+Provider MembersOfTeam
+
+Provides the members of a team
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f21aa5c2a735e552ff099c71fed0cd5fd88cbca1
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+
+var rowId = vars.get("$param.ObjectRowId_param");
+if (!rowId)
+{
+    rowId = newSelect("OBJECT_ROWID")
+        .from("MST_TEAMLINK")
+        .where("MST_TEAMLINK.MST_TEAM_ID", "$param.MSTTeamId_param")
+        .cell();
+}
+result.string(rowId);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..95c8514f3bbc2804547c47b50ec222c09aec3f59
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.ObjectType_param"));
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..97558334115b6199684018810a38d54788a0e56b
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.translate");
+
+result.object([
+    ["owner", translate.text("Owner")],
+    ["member", translate.text("Member")]
+]);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..79bef7b2ca07a9f35c95021eedcee8f89d68f873
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js
@@ -0,0 +1,5 @@
+import("Util_lib");
+import("system.vars");
+import("system.result");
+
+result.string(!Utils.toBoolean(vars.get("$field.ISEXTERN")));
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f76be28d47e7adee58f41d88a7a7993bda575de0
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js
@@ -0,0 +1,15 @@
+import("system.result");
+import("system.vars");
+import("system.neon");
+import("system.logging")
+
+var state = neon.COMPONENTSTATE_EDITABLE;
+if (vars.get("$field.ISEXTERN") == "true")
+{
+    if (!vars.get("$field.MEMBERNAME"))
+        state = neon.COMPONENTSTATE_INVISIBLE;
+    else
+        state = neon.COMPONENTSTATE_READONLY;
+}
+
+result.string(state);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/role/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/role/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d79978a6cbc07884ec953adb3be3de3d78997b78
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/role/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string("member");
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4f615a675a9df54c018305fd39293403cd7f852f
--- /dev/null
+++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,44 @@
+import("system.translate");
+import("system.teams");
+import("system.result");
+import("system.vars");
+import("MSTeams_lib");
+
+var teamId = vars.get("$param.MSTTeamId_param");
+var allMembers = teamId ? teams.getAllMembers(teamId) : {};
+var impersoAzureId = MSTeamsUtils.getImpersoAzureId();
+if (impersoAzureId in allMembers) //don't display the imperso user
+    delete allMembers[impersoAzureId];
+    
+var memberIds = vars.get("$local.idvalues") || Object.keys(allMembers);
+var owners = teamId ? teams.getAllOwners(teamId) : {};
+var memberContactIds = MSTeamsUtils.getContactIdsByAzureIds(memberIds);
+var memberArray = [];
+
+memberArray = memberIds.map(function (memberId) 
+{
+    var role = "guest";
+    var roleName = translate.text("Guest");
+    if (memberId in owners)
+    {
+        role = "owner";
+        roleName = translate.text("Owner");
+    }
+    else if (memberId in memberContactIds)
+    {
+        role = "member";
+        roleName = translate.text("Member");
+    }
+    
+    return [
+        memberId, 
+        allMembers[memberId] || "", 
+        role,
+        roleName,
+        memberContactIds[memberId] || "",
+        allMembers[memberId] || "",
+        !(memberId in memberContactIds)
+    ];
+});   
+
+result.object(memberArray);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..03dee90e18e2a92a7f745165aedf7168e54e7f60
--- /dev/null
+++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js
@@ -0,0 +1,2 @@
+//deletion is done in the MSTTeam_entity
+var e = "e";
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..c776217e3402eab8c1c1dceed828a5cc17e1d380
--- /dev/null
+++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js
@@ -0,0 +1,2 @@
+//inserting is done in the MSTTeam_entity
+var dummy = "dummy";
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..1df92b6ad9e44d0f84ee47f4e96b94fffa54721f
--- /dev/null
+++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js
@@ -0,0 +1,2 @@
+//updating is done in the MSTTeam_entity
+var dummy = "dummy";
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..16929c27f7d6349825f5f3cfb85851fb493da0b5
--- /dev/null
+++ b/entity/MSTTeam_entity/MSTTeam_entity.aod
@@ -0,0 +1,159 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>MSTTeam_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/MSTTeam_entity/documentation.adoc</documentation>
+  <grantUpdateProcess>%aditoprj%/entity/MSTTeam_entity/grantUpdateProcess.js</grantUpdateProcess>
+  <grantDeleteProcess>%aditoprj%/entity/MSTTeam_entity/grantDeleteProcess.js</grantDeleteProcess>
+  <contentTitleProcess>%aditoprj%/entity/MSTTeam_entity/contentTitleProcess.js</contentTitleProcess>
+  <afterUiInit>%aditoprj%/entity/MSTTeam_entity/afterUiInit.js</afterUiInit>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityField>
+      <name>TEAMNAME</name>
+      <title>Name</title>
+      <mandatory v="true" />
+      <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DESCRIPTION</name>
+      <title>Description</title>
+      <contentType>LONG_TEXT</contentType>
+      <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/description/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/description/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>TeamName_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>Description_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>TeamMembers</name>
+      <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js</stateProcess>
+      <onValidation>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js</onValidation>
+      <dependency>
+        <name>dependency</name>
+        <entityName>MSTTeamMember_entity</entityName>
+        <fieldName>MembersOfTeam</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>MSTTeamId_param</name>
+          <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>TEAMID_AND_NAME</name>
+    </entityField>
+    <entityField>
+      <name>ISARCHIVED</name>
+      <title>Archived</title>
+      <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js</dropDownProcess>
+    </entityField>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>Channels</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>MSTeamsChannel_entity</entityName>
+        <fieldName>ChannelsForTeam</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>TeamId_param</name>
+          <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityParameter>
+      <name>SalesprojectCode_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>TeamsByIdAndName</name>
+      <lookupIdfield>TEAMID_AND_NAME</lookupIdfield>
+      <documentation>%aditoprj%/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc</documentation>
+      <dependencies>
+        <entityDependency>
+          <name>e48136a2-5f66-4399-903a-cd1363fa30c6</name>
+          <entityName>MSTTeamLink_entity</entityName>
+          <fieldName>Teams</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>UseCache_param</name>
+          <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js</valueProcess>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>UseCache_param</name>
+      <expose v="true" />
+    </entityParameter>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <isFilterable v="true" />
+      <isRequireContainerFiltering v="true" />
+      <contentProcess>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <onInsert>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js</onInsert>
+      <onUpdate>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
+      <onDelete>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js</onDelete>
+      <cacheType>SESSION</cacheType>
+      <cacheKeyProcess>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js</cacheKeyProcess>
+      <recordFieldMappings>
+        <jDitoRecordFieldMapping>
+          <name>UID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>TEAMNAME.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>TEAMID_AND_NAME.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>DESCRIPTION.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>ISARCHIVED.value</name>
+        </jDitoRecordFieldMapping>
+      </recordFieldMappings>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/MSTTeam_entity/afterUiInit.js b/entity/MSTTeam_entity/afterUiInit.js
new file mode 100644
index 0000000000000000000000000000000000000000..018d0a4733e5cbbe12c222b5dad06af43196a371
--- /dev/null
+++ b/entity/MSTTeam_entity/afterUiInit.js
@@ -0,0 +1,20 @@
+import("system.entities");
+import("system.vars");
+import("system.neon");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    var memberLoadConfig = entities.createConfigForLoadingRows()
+        .fields(["CONTACT_ID"])
+        .entity("Member_entity")
+        .provider("Links")
+        .addParameter("ObjectRowId_param", vars.get("$param.ObjectRowId_param"))
+        .addParameter("ObjectType_param", vars.get("$param.ObjectType_param"));
+        
+    entities.getRows(memberLoadConfig).forEach(function (member)
+    {
+        neon.addRecord("TeamMembers", {
+            "CONTACT_ID": member["CONTACT_ID"]
+        });
+    })
+}
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/contentTitleProcess.js b/entity/MSTTeam_entity/contentTitleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ada1bccad1d8dba906a5f5db4d9289e0abf3f44f
--- /dev/null
+++ b/entity/MSTTeam_entity/contentTitleProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.TEAMNAME"));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/documentation.adoc b/entity/MSTTeam_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..1d8ddac0f359514ccb2d7bef6dc161e4227d6036
--- /dev/null
+++ b/entity/MSTTeam_entity/documentation.adoc
@@ -0,0 +1,14 @@
+MSTTeam
+============
+
+== Overview ==
+MSTTeam is used to display the linked team. create a team, edit a team
+
+== A MSTTeam consists of some modules: ==
+- MSTTeam itself
+
+== BestPractice ==
+
+== FAQ ==
+
+
diff --git a/entity/PermissionMetaData_entity/entityfields/permissiondetails/children/entitytitle_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js
similarity index 96%
rename from entity/PermissionMetaData_entity/entityfields/permissiondetails/children/entitytitle_param/valueProcess.js
rename to entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js
index 2c71e53a498b1ad3d5a0f915aacb4a836b81657f..16c85500b5355a72548030867e3d300661e9d4aa 100644
--- a/entity/PermissionMetaData_entity/entityfields/permissiondetails/children/entitytitle_param/valueProcess.js
+++ b/entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js
@@ -1,4 +1,4 @@
-import("system.vars");
-import("system.result");
-
+import("system.vars");
+import("system.result");
+
 result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/description/stateProcess.js b/entity/MSTTeam_entity/entityfields/description/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..18f779e6910541c7a8e75facfe14a54cfc74458b
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/description/stateProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("system.neon");
+
+result.string(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/description/valueProcess.js b/entity/MSTTeam_entity/entityfields/description/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..561cefe7b56371783c388b4e0c233197a6a96d73
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/description/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.Description_param") && vars.get("$this.value") == null)
+    result.string(vars.get("$param.Description_param"));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f77d640ef1d32a67d4fd3e8da7bcff5531277f05
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.translate");
+
+result.object([
+    ["true", translate.text("Yes")],
+    ["false", translate.text("No")]
+]);
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7b7daa293fe35f6acc203b39e6cb67bb7a987151
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$field.TEAMID_AND_NAME"))
+    result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc0d70ccbe710b96a2f13dfac668a5b705e5aae1
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.ObjectRowId_param"));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..95c8514f3bbc2804547c47b50ec222c09aec3f59
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.ObjectType_param"));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js b/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab18aabd0ba1fb0f4c2d93a91aa191b29ba2c352
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js
@@ -0,0 +1,23 @@
+import("system.vars");
+import("system.entities");
+import("Entity_lib");
+import("system.result");
+import("system.translate");
+
+//this is a workaround, EntityConsumerRowsHelper.getCurrentConsumerRows should be used here
+var loadRowsConfig = entities.createConfigForLoadingRows()
+    .entity("MSTTeamMember_entity")
+    .provider("MembersOfTeam")
+    .fields(["#UID", "ROLE"])
+    .addParameter("MSTTeamId_param", vars.get("$field.UID"));
+var savedRows = entities.getRows(loadRowsConfig);
+var members = new EntityConsumerRowsHelper(savedRows)
+    .consumer("TeamMembers")
+    .applyConsumerRowChanges()
+    .getRows();
+var hasOwner = members.some(function (member)
+{
+    return member["ROLE"] == "owner";
+});
+if (!hasOwner)
+    result.string(translate.text("The team must have at least one owner"));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1c53ca6a0df2f0f9fe9edc13efa4226f1b936c5f
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js
@@ -0,0 +1,6 @@
+import("Util_lib");
+import("system.result");
+import("system.vars");
+import("system.neon");
+
+result.string(Utils.toBoolean(vars.get("$field.ISARCHIVED")) ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js b/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..18f779e6910541c7a8e75facfe14a54cfc74458b
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("system.neon");
+
+result.string(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js b/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..31b659fe1728c550134884ef7bdbf98fed4110d2
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.TeamName_param") && vars.get("$this.value") == null)
+    result.string(vars.get("$param.TeamName_param"));
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js
similarity index 100%
rename from entity/Attribute_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js
rename to entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js
diff --git a/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc b/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..84522789b1b5dd1e014bd0db3e6c4c7b740f7b3a
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc
@@ -0,0 +1,4 @@
+= TeamsByIdAndName
+
+The provider uses a JSON containing [teamId, teamName] as the lookupIdField for cases when both values are needed.
+Because the request that loads the MST teams can be slow, the records will be cached if this provider is used.
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/grantDeleteProcess.js b/entity/MSTTeam_entity/grantDeleteProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3fad7d06d00a3a204f60e7ef811caa4e1fd000c5
--- /dev/null
+++ b/entity/MSTTeam_entity/grantDeleteProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("MSTeams_lib");
+
+result.string(vars.get("$field.TEAMID_AND_NAME") && vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID")));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/grantUpdateProcess.js b/entity/MSTTeam_entity/grantUpdateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3fad7d06d00a3a204f60e7ef811caa4e1fd000c5
--- /dev/null
+++ b/entity/MSTTeam_entity/grantUpdateProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("MSTeams_lib");
+
+result.string(vars.get("$field.TEAMID_AND_NAME") && vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID")));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js b/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f9c2f6bbd9ddf14c6cd10228138b52546d0184b7
--- /dev/null
+++ b/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.vars");
+import("Util_lib");
+import("CachedRecordContainer_lib");
+
+if (Utils.toBoolean(vars.get("$param.UseCache_param")))
+    result.string(CachedRecordContainerUtils.getCommonKey("$param.UseCache_param"));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dccb70e0330c7d584be6a0786ea150e8eb508396
--- /dev/null
+++ b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,65 @@
+import("system.teams");
+import("system.result");
+import("system.vars");
+import("JditoFilter_lib");
+
+var lookupFilter = new FilterConditionGroup(vars.get("$local.filter")).getRow("$$$LOOKUPFIELD$$$");
+var searchValue = lookupFilter ? lookupFilter.key : null;
+
+var allTeams = teams.getAllTeams(searchValue || null);
+var teamsArray = [];
+
+if (vars.get("$local.idvalues"))
+{
+    var teamInfoLoader = {
+        normalTeams : allTeams,
+        archivedTeams : null,
+        getTeamInfo : function (pTeamId)
+        {
+            if (pTeamId in this.normalTeams)
+            {
+                return {
+                    name : this.normalTeams[pTeamId],
+                    isArchived : false
+                };
+            }
+            
+            if (this.archivedTeams == null)
+                this.archivedTeams = teams.getAllArchivedTeams(null);
+            
+            return {
+                name : this.archivedTeams[pTeamId] || "",
+                isArchived : pTeamId in this.archivedTeams
+            };
+        }
+    };
+    
+    teamsArray = vars.get("$local.idvalues").map(function (teamId) 
+    {
+        var teamInfo = teamInfoLoader.getTeamInfo(teamId);
+        var idAndName = JSON.stringify([teamId, teamInfo.name]);
+        return [
+            teamId, 
+            teamInfo.name, 
+            idAndName, 
+            "", 
+            teamInfo.isArchived
+        ];
+    });   
+}
+else
+{
+    for (let teamId in allTeams)
+    {
+        var idAndName = JSON.stringify([teamId, allTeams[teamId]]);
+        teamsArray.push([
+            teamId, 
+            allTeams[teamId], 
+            idAndName, 
+            "", 
+            false
+        ]);
+    }
+}
+
+result.object(teamsArray);
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js b/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed8e457d4a824e1d4029b7640fea9804d41463cb
--- /dev/null
+++ b/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.teams");
+import("Sql_lib");
+
+var teamId = vars.get("$field.UID");
+teams.archiveTeam(teamId);
+newWhere("MST_TEAM.MST_TEAMID", teamId)
+   .updateFields({"IS_ARCHIVED" : "1"});
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..8a1c6e0c83d6d16ef62ed23cb2594be121eb5a0f
--- /dev/null
+++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js
@@ -0,0 +1,66 @@
+import("Util_lib");
+import("Communication_lib");
+import("Sql_lib");
+import("system.vars");
+import("system.teams");
+import("system.tools");
+import("Employee_lib");
+import("MSTeams_lib");
+
+var rowData = vars.get("$local.rowdata");
+var teamName = rowData["TEAMNAME.value"];
+var description = rowData["DESCRIPTION.value"];
+var teamMembers = vars.get("$field.TeamMembers.insertedRows");
+
+var ownerIds = [];
+var internalMembers = [];
+var externalMembers = [];
+teamMembers.forEach(function (teamMember)
+{
+    var contactId = teamMember["CONTACT_ID"];
+    var isExtern = Utils.toBoolean(teamMember["ISEXTERN"]);
+    var isInvite = Utils.toBoolean(teamMember["INVITE"]);
+    if (isExtern)
+    {
+        var memberEmail = CommUtil.getStandardMail(contactId);
+        if (memberEmail)
+        {
+            externalMembers.push(
+                teams.createExternalUserConfig(memberEmail)
+                    .sendInvitation(isInvite)
+            );
+        }
+        return;
+    }
+    var memberAzureId = teamMember["AZUREID"];
+    var memberUpn = teamMember["AZUREUPN"];
+    var isOwner = teamMember["ROLE"] == "owner";
+    if (!memberAzureId && memberUpn)
+        memberAzureId = teams.getInternalAzureId(memberUpn);
+    if (memberAzureId)
+    {
+        if (isOwner)
+            ownerIds.push(memberAzureId);
+        else
+            internalMembers.push(teams.createInternalUserConfig(memberAzureId));
+    }
+});
+
+var mailNickName = StringUtils.toLowerCamelCase(teamName);  //mailNickName = teamName in camel case
+mailNickName = mailNickName + vars.get("$param.SalesprojectCode_param");
+
+var groupConfig = teams.createGroupConfig(teamName, mailNickName, ownerIds);
+if (description)
+    groupConfig.setDescription(description);
+var teamConfig = teams.createTeamConfig();
+
+var mstTeam = teams.createTeam(groupConfig, teamConfig);
+
+if (internalMembers.length !== 0)
+    teams.addInternalMembers(mstTeam.teamId, internalMembers);
+
+if (externalMembers.length !== 0)
+    teams.addExternalMembers(mstTeam.teamId, externalMembers);
+
+MSTeamsUtils.insertTeamIfMissing(mstTeam);
+MSTeamsUtils.createTeamLink(mstTeam.teamId, vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param"));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..54e7ab9ab6b4e76d9a767db9d8314b6cbb3d2dc5
--- /dev/null
+++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js
@@ -0,0 +1,77 @@
+import("Communication_lib");
+import("Sql_lib");
+import("system.vars");
+import("system.teams");
+import("system.tools");
+import("Employee_lib");
+
+var rowData = vars.get("$local.rowdata");
+var teamId = rowData["UID.value"];
+var teamName = rowData["TEAMNAME.value"];
+var description = rowData["DESCRIPTION.value"];
+var insertedTeamMembers = vars.get("$field.TeamMembers.insertedRows");
+var changedTeamMembers = vars.get("$field.TeamMembers.changedRows");
+var deletedTeamMembers = vars.get("$field.TeamMembers.deletedRows");
+
+var internalMembers = [];
+var externalMembers = [];
+insertedTeamMembers.forEach(function (teamMember)
+{
+    var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]);
+    if (!memberUser)
+    {
+        var memberEmail = CommUtil.getStandardMail(teamMember["CONTACT_ID"]);
+        if (memberEmail)
+        {
+            externalMembers.push(
+                teams.createExternalUserConfig(memberEmail)
+                    .sendInvitation(teamMember["INVITE"] == "true")
+            );
+        }
+        return;
+    }
+    var internalUserConfigToAdd = _getTeamsInternalUserConfig(memberUser, teamMember["ROLE"] == "owner");
+    if (internalUserConfigToAdd)
+        internalMembers.push(internalUserConfigToAdd);
+});
+
+if (internalMembers.length !== 0)
+    teams.addInternalMembers(teamId, internalMembers);
+
+if (externalMembers.length !== 0)
+    teams.addExternalMembers(teamId, externalMembers);
+
+changedTeamMembers.forEach(function (teamMember)
+{
+    var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]);
+    if (!memberUser)
+        return;
+    
+    var internalUserConfigToChange = _getTeamsInternalUserConfig(memberUser, teamMember["ROLE"] == "owner");
+    if (internalUserConfigToChange)
+        teams.changeRole(teamId, internalUserConfigToChange);
+});
+
+
+var owners = teams.getAllOwners(teamId);
+var removeMembers = deletedTeamMembers.map(function (member)
+{
+    var isOwner = member["#UID"] in owners;
+    return teams.createInternalUserConfig(member["#UID"]).setOwner(isOwner);
+});
+
+if (removeMembers.length !== 0)
+    teams.removeInternalMembers(teamId, removeMembers);
+
+function _getTeamsInternalUserConfig(pUserObject, pAsOwner)
+{
+    var memberAzureId = pUserObject[tools.PARAMS][tools.TEAMS_AZUREID];
+    var memberUpn = pUserObject[tools.PARAMS][tools.TEAMS_AZUREUPN];
+    if (!memberAzureId && memberUpn)
+        memberAzureId = teams.getInternalAzureId(memberUpn);
+    if (memberAzureId)
+    {
+        return teams.createInternalUserConfig(memberAzureId).setOwner(pAsOwner);
+    }
+    return null;
+}
\ No newline at end of file
diff --git a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..5a3b3cc6b813e48b8674a6acb8e1000a42f4f4a6
--- /dev/null
+++ b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod
@@ -0,0 +1,93 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>MSTeamsActivityImport_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/MSTeamsActivityImport_entity/documentation.adoc</documentation>
+  <siblings />
+  <afterUiInit>%aditoprj%/entity/MSTeamsActivityImport_entity/afterUiInit.js</afterUiInit>
+  <recordContainer>dataless</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityConsumer>
+      <name>Messages</name>
+      <selectionMode>MULTI</selectionMode>
+      <dependency>
+        <name>dependency</name>
+        <entityName>MSTeamsMessage_entity</entityName>
+        <fieldName>Messages</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>Channel_param</name>
+          <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>TeamId_param</name>
+          <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>LoadNext_param</name>
+          <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>CHANNEL_ID</name>
+      <title>Channel</title>
+      <consumer>Channels</consumer>
+      <state>EDITABLE</state>
+    </entityField>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>TEAM_ID</name>
+      <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js</valueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>Channels</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>MSTeamsChannel_entity</entityName>
+        <fieldName>ChannelsForTeam</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>TeamId_param</name>
+          <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityActionField>
+      <name>loadNextMessages</name>
+      <title>Load older messages</title>
+      <onActionProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CLOCK</iconId>
+    </entityActionField>
+    <entityField>
+      <name>LOAD_ID</name>
+    </entityField>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>TeamMessages</name>
+      <consumer>Messages</consumer>
+      <selectionMode>MULTI</selectionMode>
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <datalessRecordContainer>
+      <name>dataless</name>
+      <alias>Data_alias</alias>
+    </datalessRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/MSTeamsActivityImport_entity/afterUiInit.js b/entity/MSTeamsActivityImport_entity/afterUiInit.js
new file mode 100644
index 0000000000000000000000000000000000000000..9357f9cbc246dd684cda414ee905e0e5586e4cb7
--- /dev/null
+++ b/entity/MSTeamsActivityImport_entity/afterUiInit.js
@@ -0,0 +1,8 @@
+import("system.entities");
+
+//load the channels into the cache when opening the dialog, so the user doesn't have to wait when opening the lookup
+entities.invalidateCache("MSTeamsChannel_entity", "jdito");
+entities.getRows(entities.createConfigForLoadingConsumerRows()
+    .consumer("Channels")
+    .fields(["UID", "CHANNELNAME"])
+);
\ No newline at end of file
diff --git a/entity/MSTeamsActivityImport_entity/documentation.adoc b/entity/MSTeamsActivityImport_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..e9a7b4eadedbbcc63946070f941eecaa515905cd
--- /dev/null
+++ b/entity/MSTeamsActivityImport_entity/documentation.adoc
@@ -0,0 +1,12 @@
+MSTTeamsActivityImport
+============
+
+== Overview ==
+MSTTeamsActivityImport is used to import messages from MST  
+
+== A MSTTeamsActivityImport consists of some modules: ==
+- MSTTeamsActivityImport itself
+
+== BestPractice ==
+
+== FAQ ==
\ No newline at end of file
diff --git a/entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e6f0ee80bb8afc2a1d41e693e8a433805743e014
--- /dev/null
+++ b/entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.TEAM_ID"));
\ No newline at end of file
diff --git a/entity/MSTeamsActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..05f69f965eba54557bac6aed07227f6d8ff716a0
--- /dev/null
+++ b/entity/MSTeamsActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js
@@ -0,0 +1,5 @@
+import("system.neon");
+import("system.util");
+
+//set a new random ID to reload the messages consumer
+neon.setFieldValue("$field.LOAD_ID", util.getNewUUID());
\ No newline at end of file
diff --git a/entity/MSTeamsActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2385cda828f2a88ccb21220449e36a1b09b1db91
--- /dev/null
+++ b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CHANNEL_ID"));
\ No newline at end of file
diff --git a/entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f83604cf16728a3863ed3f26751100c6a947b6eb
--- /dev/null
+++ b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.LOAD_ID"));
\ No newline at end of file
diff --git a/entity/MSTeamsActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9eed48618458976b1838543de6ba1c7719f79911
--- /dev/null
+++ b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.TEAM_ID"));
\ No newline at end of file
diff --git a/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c431bd3ac3e9bc6fa97d0b85729ed1c4f9b203b0
--- /dev/null
+++ b/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("MSTeams_lib");
+import("system.result");
+import("Sql_lib");
+
+result.string(MSTeamsUtils.getLinkedTeam(vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param")) || "");
\ No newline at end of file
diff --git a/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..88467d44647314dcfe53fa5d31f47142bf79944d
--- /dev/null
+++ b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod
@@ -0,0 +1,80 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>MSTeamsChannel_entity</name>
+  <title>Channel</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/MSTeamsChannel_entity/documentation.adoc</documentation>
+  <siblings />
+  <contentTitleProcess>%aditoprj%/entity/MSTeamsChannel_entity/contentTitleProcess.js</contentTitleProcess>
+  <titlePlural>Channels</titlePlural>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>CHANNELNAME</name>
+      <title>Channel Name</title>
+    </entityField>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityProvider>
+      <name>ChannelsForTeam</name>
+      <documentation>%aditoprj%/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc</documentation>
+      <dependencies>
+        <entityDependency>
+          <name>a784ee43-b2ef-4d55-a092-9c7f822905fa</name>
+          <entityName>MSTeamsActivityImport_entity</entityName>
+          <fieldName>Channels</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>c2b60ab3-3edd-4571-b9aa-766826f561fd</name>
+          <entityName>MSTTeam_entity</entityName>
+          <fieldName>Channels</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityParameter>
+      <name>TeamId_param</name>
+      <expose v="true" />
+      <mandatory v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>ChannelsByName</name>
+      <lookupIdfield>CHANNELNAME</lookupIdfield>
+      <documentation>%aditoprj%/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc</documentation>
+      <dependencies>
+        <entityDependency>
+          <name>3dfb5be2-d956-4e8a-9aec-4c80b81e0527</name>
+          <entityName>MSTeamsDocument_entity</entityName>
+          <fieldName>Channels</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <cacheType>SESSION</cacheType>
+      <cacheKeyProcess>%aditoprj%/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js</cacheKeyProcess>
+      <recordFieldMappings>
+        <jDitoRecordFieldMapping>
+          <name>UID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>CHANNELNAME.value</name>
+        </jDitoRecordFieldMapping>
+      </recordFieldMappings>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/MSTeamsChannel_entity/contentTitleProcess.js b/entity/MSTeamsChannel_entity/contentTitleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..678b5f5e99791cb0d6158d3bb6b7e01f0450fd37
--- /dev/null
+++ b/entity/MSTeamsChannel_entity/contentTitleProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CHANNELNAME"));
\ No newline at end of file
diff --git a/entity/MSTeamsChannel_entity/documentation.adoc b/entity/MSTeamsChannel_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..84851137bfe4a7a9bbd4b774b01bb719b904ed06
--- /dev/null
+++ b/entity/MSTeamsChannel_entity/documentation.adoc
@@ -0,0 +1,14 @@
+MSTeamsChannel
+============
+
+== Overview ==
+MSTeamsChannel is used to get all channels of a MST Team 
+
+== A MSTeamsChannel consists of some modules: ==
+- MSTeamsChannel itself
+
+== BestPractice ==
+
+== FAQ ==
+
+
diff --git a/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc b/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..276b88812f25badc1678f208ee47a4d156d0089e
--- /dev/null
+++ b/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc
@@ -0,0 +1,3 @@
+Provider ChannelsByName
+
+Gets all channels by their names
\ No newline at end of file
diff --git a/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc b/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..c8c3ce9e5628a6d5e656abb9f9babc3167fe1ca1
--- /dev/null
+++ b/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc
@@ -0,0 +1,3 @@
+Provider ChannelsForTeam
+
+Gets all channels for the specific team
\ No newline at end of file
diff --git a/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js b/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ee4f6d2376080e71d86c3fa327113b15ce3e25a2
--- /dev/null
+++ b/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("CachedRecordContainer_lib");
+
+result.string(CachedRecordContainerUtils.getCommonKey("$param.TeamId_param"));
\ No newline at end of file
diff --git a/entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e687b04b480eb8244dda328b5388cb40ddab1bf3
--- /dev/null
+++ b/entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,33 @@
+import("system.teams");
+import("system.result");
+import("system.vars");
+import("JditoFilter_lib");
+
+var searchValue = null;
+JditoFilterUtils.filterRecords(["$$$LOOKUPFIELD$$$"], [["dummy"]], vars.get("$local.filter").filter, {
+    "$$$LOOKUPFIELD$$$" : function (recordValue, filterValue)
+    {
+        searchValue = filterValue;
+        return true;
+    }
+});
+
+var allChannels = teams.getAllChannels(vars.get("$param.TeamId_param"), searchValue || null);
+var channels = [];
+
+if (vars.get("$local.idvalues"))
+{
+    channels = vars.get("$local.idvalues").map(function (channelId) 
+    {
+        return [channelId, allChannels[channelId]];
+    });   
+}
+else
+{
+    for (let channelId in allChannels)
+    {
+        channels.push([channelId, allChannels[channelId]]);
+    }
+}
+
+result.object(channels);
\ No newline at end of file
diff --git a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..8c8435662510366d7903876fd67e9fff1eae08d7
--- /dev/null
+++ b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod
@@ -0,0 +1,76 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>MSTeamsDocument_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/MSTeamsDocument_entity/documentation.adoc</documentation>
+  <siblings />
+  <recordContainer>dataless</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>DOCUMENTS</name>
+      <title>Documents</title>
+      <dropDownProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js</dropDownProcess>
+      <selectionMode>MULTI</selectionMode>
+      <state>EDITABLE</state>
+    </entityField>
+    <entityField>
+      <name>CHANNEL</name>
+      <title>Channel</title>
+      <consumer>Channels</consumer>
+      <mandatory v="true" />
+      <state>EDITABLE</state>
+    </entityField>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityParameter>
+      <name>AssignmentTable_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>AssignmentName_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>Channels</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>MSTeamsChannel_entity</entityName>
+        <fieldName>ChannelsByName</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>TeamId_param</name>
+          <valueProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>MSTTeamId_param</name>
+      <expose v="true" />
+      <mandatory v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityActionField>
+      <name>importDocuments</name>
+      <title>Import Documents</title>
+      <onActionProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js</onActionProcess>
+    </entityActionField>
+  </entityFields>
+  <recordContainers>
+    <datalessRecordContainer>
+      <name>dataless</name>
+      <alias>Data_alias</alias>
+    </datalessRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/MSTeamsDocument_entity/documentation.adoc b/entity/MSTeamsDocument_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..e751b842c923ed49543f07c8af2a3203628ad8b2
--- /dev/null
+++ b/entity/MSTeamsDocument_entity/documentation.adoc
@@ -0,0 +1,14 @@
+MSTeamsDocument
+============
+
+== Overview ==
+MSTeamsDocument is used to synchronize all MST Documents with ADITO 
+
+== A MSTeamsDocument consists of some modules: ==
+- MSTeamsDocument itself
+
+== BestPractice ==
+
+== FAQ ==
+
+
diff --git a/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js b/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9036fa977855169ff3de7b568364d5073791d72a
--- /dev/null
+++ b/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$param.MSTTeamId_param"));
\ No newline at end of file
diff --git a/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js b/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d46e42f287a77be32c587b85fc7a475cfa87a348
--- /dev/null
+++ b/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js
@@ -0,0 +1,20 @@
+import("system.result");
+import("system.teams");
+import("system.vars");
+import("system.logging");
+import("Sql_lib");
+
+var channelName = vars.get("$field.CHANNEL");
+if (channelName)
+{
+    var teamId = vars.get("$param.MSTTeamId_param");
+    
+    var documents = teams.getAllDocuments(teamId, channelName);
+    documents = documents.map(function (document)
+    {
+        return [JSON.stringify([document.downloadUrl, document.name]), document.name];
+    });
+    result.object(documents);
+}
+else
+    result.object([]);
\ No newline at end of file
diff --git a/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js b/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..23dcd6873c5979acde3412cd24bc618244881c17
--- /dev/null
+++ b/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js
@@ -0,0 +1,26 @@
+import("system.text");
+import("system.vars");
+import("system.db");
+import("system.util");
+import("Sql_lib");
+import("system.net");
+import("system.neon");
+
+var documents = text.decodeMS(vars.get("$field.DOCUMENTS"));
+
+documents.forEach(function (document)
+{
+    var [downloadUrl, documentName] = JSON.parse(document);
+    var file = net.getURLContent(downloadUrl, false, null, null, null, false);
+    
+    var assignmentTable = vars.get("$param.AssignmentTable_param");
+    var assignmentName = vars.get("$param.AssignmentName_param");
+    var assignmentRowId = vars.get("$param.ObjectRowId_param");
+    var alias = SqlUtils.getBinariesAlias();
+    
+    db.insertBinary(assignmentTable, assignmentName, assignmentRowId, null, 
+        file, documentName, "", "", alias, util.getNewUUID());    
+});
+
+neon.closeImage(vars.get("$sys.currentimage"), true);
+neon.refreshAll();
\ No newline at end of file
diff --git a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..eb9b4954def6f93d5f51650148618ae46813bae6
--- /dev/null
+++ b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod
@@ -0,0 +1,99 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>MSTeamsMessage_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/MSTeamsMessage_entity/documentation.adoc</documentation>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>FROM</name>
+      <title>Author</title>
+    </entityField>
+    <entityField>
+      <name>MESSAGE</name>
+      <title>Message</title>
+    </entityField>
+    <entityField>
+      <name>CREATED_DATE_TIME</name>
+      <title>Creation date</title>
+      <contentType>DATE</contentType>
+    </entityField>
+    <entityProvider>
+      <name>Messages</name>
+      <documentation>%aditoprj%/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc</documentation>
+      <recordContainer>jdito</recordContainer>
+      <dependencies>
+        <entityDependency>
+          <name>89048e4d-32bc-4531-9b45-b0c0d9de82b1</name>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>c79dc4f8-df40-47ba-9baa-b6a64c00f46c</name>
+          <entityName>MSTeamsActivityImport_entity</entityName>
+          <fieldName>Messages</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityParameter>
+      <name>Channel_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>TeamId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>LoadNext_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityActionField>
+      <name>importMessages</name>
+      <title>Import</title>
+      <onActionProcess>%aditoprj%/entity/MSTeamsMessage_entity/entityfields/importmessages/onActionProcess.js</onActionProcess>
+      <iconId>NEON:IMPORT</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>loadNext</name>
+      <title>Next</title>
+      <iconId>VAADIN:ARROWS_LONG_RIGHT</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>loadPrevious</name>
+      <title>Prev</title>
+      <iconId>VAADIN:ARROW_LONG_LEFT</iconId>
+    </entityActionField>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <title>Messages</title>
+      <recordFieldMappings>
+        <jDitoRecordFieldMapping>
+          <name>UID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>FROM.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>MESSAGE.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>CREATED_DATE_TIME.value</name>
+        </jDitoRecordFieldMapping>
+      </recordFieldMappings>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/MSTeamsMessage_entity/documentation.adoc b/entity/MSTeamsMessage_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..739a9e5de3c0c179690583b7d534b85203990865
--- /dev/null
+++ b/entity/MSTeamsMessage_entity/documentation.adoc
@@ -0,0 +1,14 @@
+MSTeamsMessage
+============
+
+== Overview ==
+MSTeamsMessage is used to get the messages written in MST 
+
+== A MSTeamsMessage consists of some modules: ==
+- MSTeamsMessage itself
+
+== BestPractice ==
+
+== FAQ ==
+
+
diff --git a/entity/MSTeamsMessage_entity/entityfields/importmessages/onActionProcess.js b/entity/MSTeamsMessage_entity/entityfields/importmessages/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8b5a94d660b9cbd5ef4a49457965ad8bd4767f0e
--- /dev/null
+++ b/entity/MSTeamsMessage_entity/entityfields/importmessages/onActionProcess.js
@@ -0,0 +1,23 @@
+import("Sql_lib");
+import("system.datetime");
+import("system.neon");
+import("Util_lib");
+import("system.vars");
+
+var messages = vars.get("$sys.selection");
+var description = messages.map(function (id)
+{
+    var [user, date, message] = JSON.parse(id);
+    date = Date.parse(date).valueOf();
+    return "[" + datetime.toDate(date, "dd.MM.yyyy HH:mm") + "] " + user + "<br>" + message + "<br>";
+}).join("<br>");
+
+var links = newSelect(["OBJECT_TYPE", "OBJECT_ROWID"])
+    .from("MST_TEAMLINK")
+    .where("MST_TEAMLINK.MST_TEAM_ID", vars.get("$param.TeamId_param"))
+    .table();
+
+neon.openContext("Activity", "ActivityEdit_view", null, neon.OPERATINGSTATE_NEW, {
+    "Info_param": description,
+    "PresetLinks_param": JSON.stringify(links)
+});
\ No newline at end of file
diff --git a/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc b/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..6bcca7fb1e986c54ce197ca8a4134ad98c23e51c
--- /dev/null
+++ b/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc
@@ -0,0 +1,3 @@
+Provider Messages
+
+Provides the messages for other entities
\ No newline at end of file
diff --git a/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0007cf9a2d5994cbbf002e496d12620d49ee358c
--- /dev/null
+++ b/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,41 @@
+import("Sql_lib");
+import("system.teams");
+import("system.result");
+import("system.util");
+import("system.vars");
+import("system.neon");
+
+var loadNextMessages = vars.exists("$param.LoadNext_param") && vars.get("$param.LoadNext_param");
+var messageAmount = 10;
+var channelMessages;
+var messages = [];
+
+if (loadNextMessages)
+{
+    var nextLink = vars.exists("$context.nextLink") ? vars.get("$context.nextLink") : null;
+    if(nextLink)
+    {
+       channelMessages = teams.getNextChannelMessages(nextLink, messageAmount);
+       messages = channelMessages.messages;
+       vars.set("$context.nextLink", channelMessages.nextLink || null);
+    }
+}
+else if (vars.get("$param.TeamId_param") && vars.get("$param.Channel_param"))
+{
+    channelMessages = teams.getChannelMessages(vars.get("$param.TeamId_param"), vars.get("$param.Channel_param"), messageAmount);
+    messages = channelMessages.messages;
+    
+    vars.set("$context.nextLink", channelMessages.nextLink || null);
+}
+
+messages = messages.map(function (message)
+{
+    return [
+        JSON.stringify([message.author.userName, message.createdDateTime, message.message.message]), 
+        message.author.userName, 
+        message.message.message, 
+        Date.parse(message.createdDateTime).toString()
+    ];
+});
+
+result.object(messages);
diff --git a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod
index 791b08d72b2e85a807d11a6c47284056ae16a977..272d727e2b88e8dba72f92d5d0cfc8fbb446b988 100644
--- a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod
+++ b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod
@@ -1,8 +1,8 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>MarketingWorkflowLauncher_entity</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
   <title>Marketing workflow</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
   <recordContainer>dataLess</recordContainer>
   <entityFields>
     <entityProvider>
diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js
index cca5f0e8d7ce5b6b8bb2ad60f3ffb068c4c6f1a1..1bfc02a3f326e8e82420c38d5f60d1faee9cdf6b 100644
--- a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js
+++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js
@@ -1,3 +1,4 @@
+import("Sql_lib");
 import("Util_lib");
 import("system.vars");
 import("system.result");
@@ -7,11 +8,36 @@ var context = vars.get("$param.ObjectType_param");
 var targets = Utils.parseJSON(vars.get("$param.ObjectIds_param"));
 var filter = Utils.parseJSON(vars.get("$param.ObjectFilter_param"));
 
-targets = FilterViewActionUtils.getUidsBySelectionOrFilter(context, targets, filter).map(function (targetId)
+var personContactIds = [];
+
+targets = FilterViewActionUtils.getUidsBySelectionOrFilter(context, targets, filter).map(function (target)
 {
-    if (Utils.isString(targetId))
-        return [targetId, context]; //todo: context dynamic (eg for participants)
-    return targetId;
+    if (Utils.isString(target))
+        target = [target, context];
+    if (target[1] == "Person")
+        personContactIds.push(target[0]);
+    return target;
 });
 
+if (personContactIds.length !== 0)
+{
+    var orgContactIds = newSelect(["anyContact.CONTACTID", "orgContact.CONTACTID"])
+        .from("CONTACT", "orgContact")
+        .join("CONTACT", "anyContact.ORGANISATION_ID = orgContact.ORGANISATION_ID and orgContact.PERSON_ID is null", "anyContact")
+        .where(["CONTACT", "CONTACTID", "anyContact"], personContactIds, SqlBuilder.IN())
+        .table();
+    var contactIdMap = new Map(orgContactIds);
+    targets.forEach(function ([targetId, targetContext, variables], i, allTargets)
+    {
+        if (contactIdMap.has(targetId))
+        {
+            if (!variables)
+                variables = {};
+            variables.attributeRowId = contactIdMap.get(targetId);
+            variables.attributeContext = "Organisation";
+            allTargets[i][2] = variables;
+        }
+    });
+}
+
 result.string(JSON.stringify(targets));
\ No newline at end of file
diff --git a/entity/MemberRoles_entity/MemberRoles_entity.aod b/entity/MemberRoles_entity/MemberRoles_entity.aod
index 2871a36c5d9a4d53641f4e2a6788e31f3a2ca46f..c373bff12a3a9f3f8b5d98c7af1f0c03edaaa0d4 100644
--- a/entity/MemberRoles_entity/MemberRoles_entity.aod
+++ b/entity/MemberRoles_entity/MemberRoles_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>MemberRoles_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/MemberRoles_entity/documentation.adoc</documentation>
@@ -43,17 +43,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/MemberRoles_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>26c8ba40-981a-400b-9502-b561e8007b17</name>
-          <tableName>AB_KEYWORD_ENTRY</tableName>
-          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>AB_KEYWORD_ENTRID.value</name>
@@ -68,6 +59,15 @@
           <recordfield>AB_KEYWORD_ENTRY.TITLE</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>26c8ba40-981a-400b-9502-b561e8007b17</name>
+          <tableName>AB_KEYWORD_ENTRY</tableName>
+          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod
index 23a14e5ebe902ca5f5fcda22532dae26cc4b2c17..f23b992662fc5e5a3e3fdbd5051297a8a4b2b55d 100644
--- a/entity/Member_entity/Member_entity.aod
+++ b/entity/Member_entity/Member_entity.aod
@@ -1,11 +1,16 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Member_entity</name>
+  <title>${SALESPROJECT_MEMBER}</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Member_entity/documentation.adoc</documentation>
-  <title>${SALESPROJECT_MEMBER}</title>
+  <siblings>
+    <element>MSTTeam_entity</element>
+    <element>MSTTeamLink_entity</element>
+  </siblings>
   <grantUpdateProcess>%aditoprj%/entity/Member_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/Member_entity/grantDeleteProcess.js</grantDeleteProcess>
+  <contentTitleProcess>%aditoprj%/entity/Member_entity/contentTitleProcess.js</contentTitleProcess>
   <iconId>VAADIN:FILE_SOUND</iconId>
   <titlePlural>${SALESPROJECT_MEMBER}</titlePlural>
   <recordContainer>db</recordContainer>
@@ -203,60 +208,111 @@
     <entityProvider>
       <name>WithDistrictResponsibles</name>
       <recordContainer>jdito</recordContainer>
+    </entityProvider>
+    <entityField>
+      <name>UID</name>
+      <documentation>%aditoprj%/entity/Member_entity/entityfields/uid/documentation.adoc</documentation>
+    </entityField>
+    <entityActionGroup>
+      <name>MSTeamsActionGroup</name>
+      <title>MS Teams</title>
+      <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js</stateProcess>
+      <children>
+        <entityActionField>
+          <name>createTeam</name>
+          <title>Create Team</title>
+          <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js</onActionProcess>
+          <isSelectionAction v="false" />
+          <iconId>NEON:PLUS</iconId>
+          <state>EDITABLE</state>
+          <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js</stateProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>editTeam</name>
+          <title>Edit Team</title>
+          <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js</onActionProcess>
+          <iconId>NEON:PENCIL</iconId>
+          <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js</stateProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>addApp</name>
+          <title>Add app</title>
+          <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:MOBILE</iconId>
+          <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js</stateProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>chooseTeam</name>
+          <title>Choose Team</title>
+          <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js</onActionProcess>
+          <iconId>NEON:GROUP_APPOINTMENT</iconId>
+          <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js</stateProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>restoreTeam</name>
+          <title>Restore Team</title>
+          <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:ARROW_BACKWARD</iconId>
+          <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js</stateProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>openMSTeams</name>
+          <title>Open Teams</title>
+          <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EXTERNAL_LINK</iconId>
+          <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js</stateProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>deleteTeam</name>
+          <title>Delete Team</title>
+          <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js</onActionProcess>
+          <iconId>NEON:TRASH</iconId>
+          <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js</stateProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityProvider>
+      <name>TeamMemberProvider</name>
+      <lookupIdfield>CONTACT_ID</lookupIdfield>
       <dependencies>
         <entityDependency>
-          <name>6f90b6c6-118c-485e-9a41-365bdc325f9b</name>
-          <entityName>Salesproject_entity</entityName>
-          <fieldName>Members</fieldName>
+          <name>373a0c5c-dff5-4a6d-9a1f-68d7b73804ce</name>
+          <entityName>MSTTeamMember_entity</entityName>
+          <fieldName>ProjectMembers</fieldName>
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
     </entityProvider>
+    <entityParameter>
+      <name>MSTTeamId_param</name>
+      <valueProcess>%aditoprj%/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+    </entityParameter>
     <entityField>
-      <name>UID</name>
-      <documentation>%aditoprj%/entity/Member_entity/entityfields/uid/documentation.adoc</documentation>
+      <name>MST_MEMBERROLE</name>
+      <title>Team role</title>
+      <stateProcess>%aditoprj%/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js</stateProcess>
     </entityField>
+    <entityParameter>
+      <name>EnableMSTeams_param</name>
+      <expose v="true" />
+    </entityParameter>
     <entityField>
       <name>recordType</name>
       <documentation>%aditoprj%/entity/Member_entity/entityfields/recordtype/documentation.adoc</documentation>
     </entityField>
+    <entityParameter>
+      <name>SalesprojectCode_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/Member_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Member_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>b14ff9f6-97cc-4353-b19b-8acd50d56d5c</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>85599074-129e-4de8-b2b3-464bcfa8fb40</name>
-          <tableName>PERSON</tableName>
-          <primaryKey>PERSONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>ae87b90e-b40d-4472-9bd0-08c080da7f7c</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>1455636c-66c8-4100-892d-80e6a37ccd4d</name>
-          <tableName>OBJECTMEMBER</tableName>
-          <primaryKey>OBJECTMEMBERID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ORGANISATION_NAME.value</name>
@@ -326,10 +382,6 @@
           <name>OBJECTMEMBERID.value</name>
           <recordfield>OBJECTMEMBER.OBJECTMEMBERID</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>OBJECT_ROWID.displayValue</name>
-          <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>MEMBERROLE.displayValue</name>
           <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/memberrole.displayvalue/expression.js</expression>
@@ -344,12 +396,47 @@
           <name>recordType.value</name>
           <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/recordtype.value/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>MST_MEMBERROLE.value</name>
+          <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>b14ff9f6-97cc-4353-b19b-8acd50d56d5c</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>85599074-129e-4de8-b2b3-464bcfa8fb40</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>ae87b90e-b40d-4472-9bd0-08c080da7f7c</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>1455636c-66c8-4100-892d-80e6a37ccd4d</name>
+          <tableName>OBJECTMEMBER</tableName>
+          <primaryKey>OBJECTMEMBERID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
     <jDitoRecordContainer>
       <name>jdito</name>
       <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
       <isFilterable v="true" />
+      <isSortable v="true" />
       <contentProcess>%aditoprj%/entity/Member_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
       <onInsert>%aditoprj%/entity/Member_entity/recordcontainers/jdito/onInsert.js</onInsert>
       <onUpdate>%aditoprj%/entity/Member_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
@@ -424,6 +511,9 @@
         <jDitoRecordFieldMapping>
           <name>recordType.value</name>
         </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>MST_MEMBERROLE.value</name>
+        </jDitoRecordFieldMapping>
       </recordFieldMappings>
     </jDitoRecordContainer>
   </recordContainers>
diff --git a/entity/Member_entity/contentTitleProcess.js b/entity/Member_entity/contentTitleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e2e9200a47926fc38af5a2534902d2741ed04877
--- /dev/null
+++ b/entity/Member_entity/contentTitleProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.PERSON_FULL_NAME"));
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js b/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0d9f56400af9597e47b8cd95b2d2060881eaa30e
--- /dev/null
+++ b/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+import("MSTeams_lib");
+
+result.string(MSTeamsUtils.isTeamsEnabled() && vars.get("$param.EnableMSTeams_param") == "true" 
+    ? neon.COMPONENTSTATE_READONLY 
+    : neon.COMPONENTSTATE_INVISIBLE
+);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f53cd7c87d173497b7b8fd5bcbb4ba4212bac637
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js
@@ -0,0 +1,7 @@
+import("system.teams");
+import("system.project");
+import("system.vars");
+
+var appId = project.getInstanceConfigValue("teamsAppId", null);
+if (appId)
+    teams.addApp(vars.get("$param.MSTTeamId_param"), appId);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f1febe96416f12e029c6de6537cf96e5c7f4d5db
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js
@@ -0,0 +1,16 @@
+import("MSTeams_lib");
+import("system.vars");
+import("system.neon");
+import("system.result");
+import("Sql_lib");
+
+var res = neon.COMPONENTSTATE_DISABLED;
+var teamId = vars.get("$param.MSTTeamId_param");
+if (teamId && MSTeamsUtils.isTeamsEnabled())
+{    
+    var teamInfo = MSTeamsUtils.getTeamInfo(teamId);
+    if (teamInfo && !teamInfo.isArchived && !teamInfo.serviceUrl)
+        res = neon.COMPONENTSTATE_EDITABLE;
+}
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f5761f78639c0a8b2fc209d0fe50d47ccbb390e2
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js
@@ -0,0 +1,4 @@
+import("MSTeams_lib");
+import("system.vars");
+
+MSTeamsUtils.changeTeamsLink(vars.get("$field.OBJECT_ROWID"), vars.get("$field.OBJECT_TYPE"));
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..82ce3fae3fb447579e492f43ad7158f1d8bd0182
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+result.string(vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param") 
+    ? neon.COMPONENTSTATE_DISABLED 
+    : neon.COMPONENTSTATE_EDITABLE
+);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..611e6d3926780aa4e436f626508e3b1f7a8a4cbc
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js
@@ -0,0 +1,24 @@
+import("system.vars");
+import("system.neon");
+import("system.teams");
+import("Sql_lib");
+
+var rowId = vars.get("$param.ObjectRowId_param");
+var objectType = vars.get("$param.ObjectType_param");
+var params = {
+    "ObjectRowId_param": rowId,
+    "ObjectType_param": objectType
+};
+
+if (objectType === "Salesproject")
+{
+    var [teamName, description] = newSelect("PROJECTTITLE, INFO")
+        .from("SALESPROJECT")
+        .where("SALESPROJECT.SALESPROJECTID", rowId)
+        .arrayRow();
+    params["TeamName_param"] = teamName;
+    params["Description_param"] = description;
+    params["SalesprojectCode_param"] = vars.get("$param.SalesprojectCode_param");
+}
+
+neon.openContext("MSTTeam", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..82ce3fae3fb447579e492f43ad7158f1d8bd0182
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+result.string(vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param") 
+    ? neon.COMPONENTSTATE_DISABLED 
+    : neon.COMPONENTSTATE_EDITABLE
+);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..02a6be4eecfffc75564fb7841470f50c0d00d7b1
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js
@@ -0,0 +1,13 @@
+import("system.teams");
+import("Sql_lib");
+import("system.vars");
+import("system.neon");
+
+var teamId = vars.get("$param.MSTTeamId_param");
+if (teamId)
+{
+    teams.archiveTeam(teamId);
+    newWhere("MST_TEAM.MST_TEAMID", teamId)
+       .updateFields({"IS_ARCHIVED" : "1"});
+    neon.refreshAll();
+}
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dcaec1cc02ac3718197fd77a80e966630bdc0e1d
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js
@@ -0,0 +1,15 @@
+import("MSTeams_lib");
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+var res = neon.COMPONENTSTATE_DISABLED;
+var teamId = vars.get("$param.MSTTeamId_param");
+if (teamId && MSTeamsUtils.isTeamsEnabled())
+{    
+    var teamInfo = MSTeamsUtils.getTeamInfo(teamId);
+    if (teamInfo && !teamInfo.isArchived && !teamInfo.serviceUrl && MSTeamsUtils.isUserTeamOwner(teamId))
+        res = neon.COMPONENTSTATE_EDITABLE;
+}
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8f072bc03d016ca70df4643d9f32d8c29c8523e5
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.neon");
+
+neon.openContext("MSTTeam", "MSTTeamEditMembers_view", [vars.get("$param.MSTTeamId_param")], neon.OPERATINGSTATE_EDIT, {
+    "ObjectRowId_param": vars.get("$param.ObjectRowId_param"),
+    "ObjectType_param": vars.get("$param.ObjectType_param")
+});
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7aa4197a0d2f1be51667f68696e2ecf18cbf3bc1
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js
@@ -0,0 +1,13 @@
+import("MSTeams_lib");
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+var res = neon.COMPONENTSTATE_DISABLED;
+var teamId = vars.get("$param.MSTTeamId_param");
+if (teamId && MSTeamsUtils.isTeamsEnabled() && MSTeamsUtils.isTeamActive(teamId) && MSTeamsUtils.isUserTeamOwner(teamId))
+{
+    res = neon.COMPONENTSTATE_EDITABLE;
+}
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dd6293385c56357965b6ddd53fa1f5611b6bcf72
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js
@@ -0,0 +1,8 @@
+import("MSTeams_lib");
+import("system.vars");
+import("system.neon");
+
+var teamInfo = MSTeamsUtils.getTeamInfo(vars.get("$param.MSTTeamId_param"));
+
+if (teamInfo && teamInfo.webUrl)
+    neon.openUrl(teamInfo.webUrl, true);
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ce25c1feb1a1c2247dc19707bd447b5096e04184
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js
@@ -0,0 +1,14 @@
+import("MSTeams_lib");
+import("system.vars");
+import("system.neon");
+import("system.result");
+import("Sql_lib");
+
+var res = neon.COMPONENTSTATE_DISABLED;
+var teamId = vars.get("$param.MSTTeamId_param");
+if (teamId && MSTeamsUtils.isTeamsEnabled() && MSTeamsUtils.isTeamActive(teamId))
+{    
+    res = neon.COMPONENTSTATE_EDITABLE;
+}
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6a3f91dd3284c696644915699f39cd83512a74a6
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js
@@ -0,0 +1,13 @@
+import("system.teams");
+import("Sql_lib");
+import("system.vars");
+import("system.neon");
+
+var teamId = vars.get("$param.MSTTeamId_param");
+if (teamId)
+{
+    teams.unarchiveTeam(teamId);
+    newWhere("MST_TEAM.MST_TEAMID", teamId)
+       .updateFields({"IS_ARCHIVED" : "0"});
+    neon.refreshAll();
+}
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..45ca08b1622ea01f75c5029fbb125be25fba87c5
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js
@@ -0,0 +1,16 @@
+import("MSTeams_lib");
+import("system.vars");
+import("system.neon");
+import("system.result");
+import("Sql_lib");
+
+var res = neon.COMPONENTSTATE_DISABLED;
+var teamId = vars.get("$param.MSTTeamId_param");
+if (teamId && MSTeamsUtils.isTeamsEnabled())
+{   
+    var teamInfo = MSTeamsUtils.getTeamInfo(teamId);
+    if (teamInfo && teamInfo.isArchived)
+        res = neon.COMPONENTSTATE_EDITABLE;
+}
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c05618702e36bfc821bfcd8ebefe57722f7f29dd
--- /dev/null
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+import("MSTeams_lib");
+
+var isTeamsEnabled = vars.get("$param.EnableMSTeams_param") == "true" && MSTeamsUtils.isTeamsEnabled();
+result.string(isTeamsEnabled ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js b/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..566da0b330d91a6b956f6a40c0517ce03f795a91
--- /dev/null
+++ b/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+import("MSTeams_lib");
+
+var objectType = vars.get("$param.ObjectType_param");
+if (objectType in MSTeamsUtils.getTeamLinkContexts())
+    result.string(MSTeamsUtils.getLinkedTeam(vars.get("$param.ObjectRowId_param"), objectType) || "");
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js
index 8b080bceea92c146a676b0f33cc7cb87d4e86b9d..95c4eea5367140dc2d81e470ba0607adf52f07c1 100644
--- a/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js
+++ b/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js
@@ -7,5 +7,5 @@ import("Context_lib");
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) {
     result.string("");
 } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
-    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
+    result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")));
 }
\ No newline at end of file
diff --git a/entity/Member_entity/recordcontainers/db/conditionProcess.js b/entity/Member_entity/recordcontainers/db/conditionProcess.js
index 8ea033217e401e458c462cc899184bf4f8b24cd1..ce742b4d37acd1af594044cc09f317b8279ad3ee 100644
--- a/entity/Member_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Member_entity/recordcontainers/db/conditionProcess.js
@@ -6,5 +6,4 @@ var cond = newWhere()
             .andIfSet("OBJECTMEMBER.OBJECT_ROWID", "$param.ObjectRowId_param")
             .andIfSet("OBJECTMEMBER.OBJECT_TYPE", "$param.ObjectType_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js b/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..2296cd85fe7663014d2f6724534e21d1e2de81d9
--- /dev/null
+++ b/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("MSTeams_lib");
+
+result.string(MSTeamsUtils.getTeamRoleSubSql(vars.get("$param.MSTTeamId_param"), "OBJECTMEMBER.CONTACT_ID"));
\ No newline at end of file
diff --git a/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
deleted file mode 100644
index a5d62617bee8630b78204e4bc85c851dba3b10df..0000000000000000000000000000000000000000
--- a/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("system.vars");
-import("system.result");
-import("Context_lib");
-
-//TODO: refactor:
-//whenever we want to shrink data for a single object it's not needed to resolve the objects name where we're from
-if (vars.get("$param.ObjectType_param") == null)
-    result.string(ContextUtils.getNameSubselectSql("OBJECTMEMBER.OBJECT_TYPE", "OBJECTMEMBER.OBJECT_ROWID"));
-else
-    result.string("'OBJECT_ROWID.displayValue not loaded'");
\ No newline at end of file
diff --git a/entity/Member_entity/recordcontainers/jdito/contentProcess.js b/entity/Member_entity/recordcontainers/jdito/contentProcess.js
index e4d4225eebe44cebd4e0d39c0acb38313d53162f..48b27281c4ebadf918be03ac5c907c41683d133a 100644
--- a/entity/Member_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Member_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("Util_lib");
 import("system.translate");
 import("system.result");
 import("system.vars");
@@ -16,7 +17,7 @@ var memberLoadingConfig = entities.createConfigForLoadingRows()
                                                 "MEMBERROLE", "MEMBERROLE.displayValue", "OBJECT_ROWID", "OBJECT_TYPE",
                                                 "OBJECTMEMBERID", "ORG_ORGID", "ORGANISATION_NAME", "PERSON_FIRSTNAME", "PERSON_FULL_NAME", 
                                                 "PERSON_LASTNAME", "PERSON_PERSID", "PERSON_SALUTATION", "PERSON_TITLE", "POSITION", "TARGETCONTEXT",
-                                                "recordType"]);
+                                                "recordType", "MST_MEMBERROLE"]);
 
 if (idValues)
 {
@@ -29,90 +30,122 @@ if (filter && filter.filter != null)
 }
 
 var memberRows = entities.getRows(memberLoadingConfig);
+memberRows = memberRows.map(function(row)
+{
+    return [
+        row["#UID"], 
+        row["OBJECTMEMBERID"], 
+        row["CONTACT_ID"], 
+        row["CONTACT_ID.displayValue"], 
+        row["CONTACTROLE"], 
+        row["DEPARTMENT"], 
+        row["ICON"],
+        row["IMAGE"], 
+        row["MEMBERROLE"], 
+        row["MEMBERROLE.displayValue"], 
+        row["OBJECT_ROWID"], 
+        row["OBJECT_TYPE"], 
+        row["ORG_ORGID"], 
+        row["ORGANISATION_NAME"], 
+        row["PERSON_FIRSTNAME"], 
+        row["PERSON_FULL_NAME"], 
+        row["PERSON_LASTNAME"], 
+        row["PERSON_PERSID"], 
+        row["PERSON_SALUTATION"], 
+        row["PERSON_TITLE"], 
+        row["POSITION"], 
+        row["TARGETCONTEXT"], 
+        row["recordType"], 
+        row["MST_MEMBERROLE"]
+    ];
+});
 
-if (vars.get("$param.ObjectType_param") == "Salesproject" && vars.get("$param.ObjectRowId_param") != null)
+if (Utils.isNullOrEmpty(idValues) || memberRows.length === 0)
 {
-    var orgContactId = newSelect("SALESPROJECT.CONTACT_ID")
-                        .from("SALESPROJECT")
-                        .where("SALESPROJECT.SALESPROJECTID", "$param.ObjectRowId_param")
-                        .cell();
-    
-    var districtLoadingConfig = entities.createConfigForLoadingRows()
-                                            .entity("DistrictResponsible_entity")
-                                            .provider("OrganisationResponsibles")
-                                            .addParameter("OrgUid_param", orgContactId)
-                                            .fields(["#UID","DISTRICTRESPONSIBLEID", "DISTRICT_ID", "EMPLOYEE_CONTACT_ID", 
-                                                        "EMPLOYEE_CONTACT_ID.displayValue", "USER_EDIT", "USER_NEW", 
-                                                        "departmentAttributeName", "DATE_EDIT", "DATE_NEW"]);
-    
-    var districtRows = entities.getRows(districtLoadingConfig);
-    
-    
-    districtRows = districtRows.map(function(row)
+    if (vars.get("$param.ObjectType_param") == "Salesproject" && vars.get("$param.ObjectRowId_param") != null)
     {
-        return [row["#UID"], row["DISTRICTRESPONSIBLEID"], row["DISTRICT_ID"], row["EMPLOYEE_CONTACT_ID"], row["EMPLOYEE_CONTACT_ID.displayValue"], 
-            row["USER_EDIT"], row["USER_NEW"], row["departmentAttributeName"], row["DATE_EDIT"], row["DATE_NEW"]];
-    });
-}
+        var orgContactId = newSelect("SALESPROJECT.CONTACT_ID")
+                            .from("SALESPROJECT")
+                            .where("SALESPROJECT.SALESPROJECTID", "$param.ObjectRowId_param")
+                            .cell();
 
+        var districtLoadingConfig = entities.createConfigForLoadingRows()
+            .entity("DistrictResponsible_entity")
+            .provider("OrganisationResponsibles")
+            .addParameter("OrgUid_param", orgContactId)
+            .fields(["#UID","DISTRICTRESPONSIBLEID", "DISTRICT_ID", "EMPLOYEE_CONTACT_ID", 
+                        "EMPLOYEE_CONTACT_ID.displayValue", "USER_EDIT", "USER_NEW", 
+                        "departmentAttributeName", "DATE_EDIT", "DATE_NEW"]);
 
-memberRows = memberRows.map(function(row)
-{
-    return [row["#UID"], row["OBJECTMEMBERID"], row["CONTACT_ID"], row["CONTACT_ID.displayValue"], row["CONTACTROLE"], row["DEPARTMENT"], row["ICON"],
-                row["IMAGE"], row["MEMBERROLE"], row["MEMBERROLE.displayValue"], row["OBJECT_ROWID"], 
-                row["OBJECT_TYPE"], row["ORG_ORGID"], row["ORGANISATION_NAME"], row["PERSON_FIRSTNAME"], 
-                row["PERSON_FULL_NAME"], row["PERSON_LASTNAME"], row["PERSON_PERSID"], row["PERSON_SALUTATION"], row["PERSON_TITLE"], 
-                row["POSITION"], row["TARGETCONTEXT"], row["recordType"]];
-});
+        var districtRows = entities.getRows(districtLoadingConfig);
 
-var responsibleUids = [];
+        districtRows = districtRows.map(function(row)
+        {
+            return [
+                row["#UID"], 
+                row["DISTRICTRESPONSIBLEID"], 
+                row["DISTRICT_ID"], 
+                row["EMPLOYEE_CONTACT_ID"], 
+                row["EMPLOYEE_CONTACT_ID.displayValue"], 
+                row["USER_EDIT"],
+                row["USER_NEW"], 
+                row["departmentAttributeName"], 
+                row["DATE_EDIT"], 
+                row["DATE_NEW"]
+            ];
+        });
+    }
 
-districtRows.forEach(function(row){
-    responsibleUids.push(row[3]);
-});
+    var responsibleUids = [];
 
-var loadingConfPers = entities.createConfigForLoadingRows()
-                                    .entity("Person_entity")
-                                    .uids(responsibleUids)
-                                    .fields(["ORGANISATION_ID", "ORGANISATION_NAME", "CONTACTROLE", "POSITION", 
-                                                "FIRSTNAME", "LASTNAME", "SALUTATION", "TITLE"]);
+    districtRows.forEach(function(row){
+        responsibleUids.push(row[3]);
+    });
 
-var persRows = entities.getRows(loadingConfPers);
+    var loadingConfPers = entities.createConfigForLoadingRows()
+                                        .entity("Person_entity")
+                                        .uids(responsibleUids)
+                                        .fields(["ORGANISATION_ID", "ORGANISATION_NAME", "CONTACTROLE", "POSITION", 
+                                                    "FIRSTNAME", "LASTNAME", "SALUTATION", "TITLE"]);
 
-persRows = persRows.map(function(row){
-    return [row["SALUTATION"], row["TITLE"], row["FIRSTNAME"], row["LASTNAME"],
-                row["ORGANISATION_NAME"], row["ORGANISATION_ID"], row["CONTACTROLE"],
-                row["POSITION"], row["PERSONID"]];
-});
+    var persRows = entities.getRows(loadingConfPers);
 
+    persRows = persRows.map(function(row){
+        return [row["SALUTATION"], row["TITLE"], row["FIRSTNAME"], row["LASTNAME"],
+                    row["ORGANISATION_NAME"], row["ORGANISATION_ID"], row["CONTACTROLE"],
+                    row["POSITION"], row["PERSONID"]];
+    });
 
-districtRows.forEach(function(row, counter){
-    
-    memberRows.push(
-        [row[0],
-        null,
-        row[3],
-        row[4],
-        persRows[counter][6],
-        row[7],
-        "VAADIN:GLOBE",
-        "TEXT:" + row[4].substring(row[4].indexOf(" ", 0)+1, row[4].length),
-        "MEMBERROLEDISTRICTRESPONSIBLE",
-        translate.text("District Responsible"),
-        vars.get("$param.ObjectRowId_param"),
-        vars.get("$param.ObjectType_param"),
-        persRows[counter][5],
-        persRows[counter][4],
-        persRows[counter][2],
-        row[4],
-        persRows[counter][3], 
-        persRows[counter][8], 
-        persRows[counter][0], 
-        persRows[counter][1], 
-        persRows[counter][7],
-        null, 
-        "DistrictResponsible"
-    ]);
-});
+
+    districtRows.forEach(function(row, counter){
+
+        memberRows.push(
+            [row[0],
+            null,
+            row[3],
+            row[4],
+            persRows[counter][6],
+            row[7],
+            "VAADIN:GLOBE",
+            "TEXT:" + row[4].substring(row[4].indexOf(" ", 0)+1, row[4].length),
+            "MEMBERROLEDISTRICTRESPONSIBLE",
+            translate.text("District Responsible"),
+            vars.get("$param.ObjectRowId_param"),
+            vars.get("$param.ObjectType_param"),
+            persRows[counter][5],
+            persRows[counter][4],
+            persRows[counter][2],
+            row[4],
+            persRows[counter][3], 
+            persRows[counter][8], 
+            persRows[counter][0], 
+            persRows[counter][1], 
+            persRows[counter][7],
+            null, 
+            "DistrictResponsible",
+            ""
+        ]);
+    });
+}
 
 result.object(memberRows);
\ No newline at end of file
diff --git a/entity/ModuleTree_entity/ModuleTree_entity.aod b/entity/ModuleTree_entity/ModuleTree_entity.aod
index 576d1171a8410d0c8fc1a15614a746438582b1c0..f799c2ef9b653646252b369d8a81e6996a4471a9 100644
--- a/entity/ModuleTree_entity/ModuleTree_entity.aod
+++ b/entity/ModuleTree_entity/ModuleTree_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ModuleTree_entity</name>
+  <title>History</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ModuleTree_entity/documentation.adoc</documentation>
-  <title>History</title>
   <recordContainer>jdito</recordContainer>
   <entityFields>
     <entityProvider>
diff --git a/entity/Notification_entity/Notification_entity.aod b/entity/Notification_entity/Notification_entity.aod
index cf3203213ac627ef13ec8064010448a7db4a5970..f6805634c1275210bc82da9034e9d0d69677ed3e 100644
--- a/entity/Notification_entity/Notification_entity.aod
+++ b/entity/Notification_entity/Notification_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Notification_entity</name>
+  <title>Notifications</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Notification_entity/documentation.adoc</documentation>
-  <title>Notifications</title>
   <initFilterProcess>%aditoprj%/entity/Notification_entity/initFilterProcess.js</initFilterProcess>
   <iconId>VAADIN:BELL</iconId>
   <titlePlural>Notifications</titlePlural>
@@ -79,7 +79,9 @@
     </entityField>
     <entityField>
       <name>LINKCONTEXT</name>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Notification_entity/entityfields/linkcontext/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Notification_entity/entityfields/linkcontext/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>LINKID</name>
@@ -170,32 +172,21 @@
       <outputFormat>dd.MM.yyyy</outputFormat>
       <inputFormat>dd.MM.yyyy</inputFormat>
     </entityField>
+    <entityField>
+      <name>SUBCATEGORY</name>
+      <title>Subcategory</title>
+      <groupable v="true" />
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>_____SYSTEMALIAS</alias>
       <isPageable v="true" />
       <fromClauseProcess>%aditoprj%/entity/Notification_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Notification_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Notification_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBDelete>%aditoprj%/entity/Notification_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>3061f3b4-a5d1-4436-9c4d-28415363a056</name>
-          <tableName>ASYS_NOTIFICATIONCONTENTS</tableName>
-          <primaryKey>CONTENTID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>c4e34b96-6081-4d04-8377-040a8ed3e14c</name>
-          <tableName>ASYS_NOTIFICATIONS</tableName>
-          <primaryKey>ID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>_____SYSTEMALIAS</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>BACKPACK.value</name>
@@ -281,7 +272,29 @@
           <name>CREATEDAY.value</name>
           <recordfield>ASYS_NOTIFICATIONCONTENTS.CREATEDATE</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>SUBCATEGORY.value</name>
+          <recordfield>ASYS_NOTIFICATIONCONTENTS.SUBCATEGORY</recordfield>
+          <isFilterable v="true" />
+          <isLookupFilter v="true" />
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>3061f3b4-a5d1-4436-9c4d-28415363a056</name>
+          <tableName>ASYS_NOTIFICATIONCONTENTS</tableName>
+          <primaryKey>CONTENTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>c4e34b96-6081-4d04-8377-040a8ed3e14c</name>
+          <tableName>ASYS_NOTIFICATIONS</tableName>
+          <primaryKey>ID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Notification_entity/entityfields/linkcontext/displayValueProcess.js b/entity/Notification_entity/entityfields/linkcontext/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..21c6c6ec6981e201e5aefde8d34996c3b0955128
--- /dev/null
+++ b/entity/Notification_entity/entityfields/linkcontext/displayValueProcess.js
@@ -0,0 +1,9 @@
+import("Context_lib");
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+let type = vars.get("$this.value");
+
+if (type)
+    result.string(translate.text(ContextUtils.getContextName(type)));
\ No newline at end of file
diff --git a/entity/Notification_entity/recordcontainers/db/onDBDelete.js b/entity/Notification_entity/recordcontainers/db/onDBDelete.js
index 54618e0f77334d441107ac955591986a7540f4d0..ecd41a4a7a4731ed092c070714bad37a909deccf 100644
--- a/entity/Notification_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Notification_entity/recordcontainers/db/onDBDelete.js
@@ -4,4 +4,4 @@ import("system.notification");
 // Deletes notificationContents from its table, if there are no user notification left
 // Only AppointmentContents need to stay, because they would appear again after every deletion.
 if(vars.get("$field.TYPECODE") != "_____SYSTEM_NOTIFICATION_APPOINTMENT")
-    notification.deleteContentIfOrphan(vars.get("$field.ID"), vars.get("$field.CONTENTID"));
\ No newline at end of file
+    notification.deleteMultipleContentsIfOrphan([vars.get("$field.CONTENTID")]);
\ No newline at end of file
diff --git a/entity/ObjectProxy_entity/ObjectProxy_entity.aod b/entity/ObjectProxy_entity/ObjectProxy_entity.aod
index e197c4de792ba0f970f0db5ece17bb62131cd944..71ef1a617e9be009da686d4da8c5d16f587760b3 100644
--- a/entity/ObjectProxy_entity/ObjectProxy_entity.aod
+++ b/entity/ObjectProxy_entity/ObjectProxy_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ObjectProxy_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ObjectProxy_entity/documentation.adoc</documentation>
@@ -18,6 +18,7 @@
     <entityProvider>
       <name>FilteredObjects</name>
       <targetConsumerProcess>%aditoprj%/entity/ObjectProxy_entity/entityfields/filteredobjects/targetConsumerProcess.js</targetConsumerProcess>
+      <documentation>%aditoprj%/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>92e21c48-19aa-402c-b75f-96cad75d8a14</name>
@@ -31,6 +32,12 @@
           <fieldName>LinkedObject</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>ccc805b6-14ea-457c-956d-8c025e178936</name>
+          <entityName>Observation_entity</entityName>
+          <fieldName>ObjectProxyConsumer</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
         <entityDependency>
           <name>9d75842d-0f91-4ddf-bd94-d8f092f17224</name>
           <entityName>KnowledgeLink_entity</entityName>
diff --git a/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc b/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..1c4b46dd5e5b005c54afe5060159e4897799d352
--- /dev/null
+++ b/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc
@@ -0,0 +1,3 @@
+= FilteredObjects
+
+This provider can retrieve objects of the given entity, the results can be filtered.
\ No newline at end of file
diff --git a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod
index a2a47eb12c23e662e6c4e789dd4f4b5ae4d032a0..e35ca31e89ad4216d7a2953ac883e5e0bfe7c662 100644
--- a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod
+++ b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ObjectRelationType_entity</name>
+  <title>Relation Type</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ObjectRelationType_entity/documentation.adoc</documentation>
   <icon>VAADIN:SPLIT</icon>
-  <title>Relation Type</title>
   <grantDeleteProcess>%aditoprj%/entity/ObjectRelationType_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/ObjectRelationType_entity/contentTitleProcess.js</contentTitleProcess>
   <iconId>VAADIN:SPLIT</iconId>
diff --git a/entity/ObjectTree_entity/ObjectTree_entity.aod b/entity/ObjectTree_entity/ObjectTree_entity.aod
index 4266919a6b46eca1ea8ba194b849935a8c606e23..f3a46c5839d338501ef343806fcf249244a0490a 100644
--- a/entity/ObjectTree_entity/ObjectTree_entity.aod
+++ b/entity/ObjectTree_entity/ObjectTree_entity.aod
@@ -1,12 +1,13 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>ObjectTree_entity</name>
+  <title>Object relation</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ObjectTree_entity/documentation.adoc</documentation>
-  <title>Object relation</title>
   <grantUpdate v="true" />
   <grantUpdateProcess>%aditoprj%/entity/ObjectTree_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/ObjectTree_entity/grantDeleteProcess.js</grantDeleteProcess>
+  <contentTitleProcess>%aditoprj%/entity/ObjectTree_entity/contentTitleProcess.js</contentTitleProcess>
   <titlePlural>Relations</titlePlural>
   <recordContainer>jdito</recordContainer>
   <entityFields>
@@ -134,8 +135,8 @@
       <children>
         <entityParameter>
           <name>ObjectType_param</name>
-          <title></title>
           <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess>
+          <title></title>
         </entityParameter>
         <entityParameter>
           <name>ExcludedObjectIds_param</name>
diff --git a/entity/ObjectTree_entity/contentTitleProcess.js b/entity/ObjectTree_entity/contentTitleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..94f61859cc64100bb6a6dcd445efc67835002c1a
--- /dev/null
+++ b/entity/ObjectTree_entity/contentTitleProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.TITLE"));
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js b/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js
index 700dc7461b5f61b17ead3d2735ef8fd2eb7ac6f6..cd4083fad2fbb15ab6da846ce70808957582da6a 100644
--- a/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js
+++ b/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js
@@ -5,5 +5,9 @@ import("ObjectRelation_lib");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
 {
-    result.string(ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"))[6]);
+    var relationType = ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"));
+    if(relationType[3] == "reverse")
+        result.string(ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"))[5]);
+    else
+        result.string(ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"))[6]);
 }
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js b/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js
index d074689525fa0fc64cc41002e883c2c8cd5579f3..81438bdcb9fc7b302aebf1c0fdcf797bef0334c3 100644
--- a/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js
+++ b/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js
@@ -6,5 +6,5 @@ import("Context_lib");
 
 if (vars.get("$field.TARGET_ID") && vars.get("$field.TARGET_CONTEXT"))
 {
-    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.TARGET_CONTEXT"), vars.get("$field.TARGET_ID"))));
+    result.string(ContextUtils.getTitleByContext(vars.get("$field.TARGET_CONTEXT"), vars.get("$field.TARGET_ID")));
 }
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
index d1d925c81b4e8fbd86046d8211e7366524b23882..b56971288c6698b3255dfafab871cd784de0680b 100644
--- a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
@@ -84,6 +84,14 @@ else
             _loadObjectRelationTree.call(tree, originalObjectIds[i], originalObjectTypes[i], selectedRelationType);
         }
     }
+    else if (!vars.exists("$param.ObjectIds_param") && uidParam) 
+    {
+        newSelect("OBJECT" + (pObjectRelationId ? myNum : otherNum) + "_ROWID, AB_OBJECTRELATIONID, OBJECT_TYPE, RELATION_TITLE, INFO, AB_OBJECTRELATIONTYPEID")
+        .from("AB_OBJECTRELATION")
+        .join("AB_OBJECTRELATIONTYPE", onConditionForRelationTypeJoin)
+        .whereIfSet("AB_OBJECTRELATION.AB_OBJECTRELATIONID", pObjectRelationId || null) // set id to null, as only null works with .andIfSet
+        .table();
+    }
     if (uidParam) //workaround! 
         tree = tree.filter(function (row) {return JSON.parse(row[0])[UID.objectRelationId] == uidParam});
 }
@@ -298,7 +306,7 @@ function _insertEntry(pTree, pEntryData, pNodeId, pLayer, pObjectType, pNewRelat
     pEntryData.forEach(function ([objectId, objectRelationId, objectType, relationTitle, info, objectRelationTypeId], i)
     {
         //TODO: entities.getRow, check if this is possible with fewer queries
-        var display = db.cell(ContextUtils.getNameSql(pObjectType, objectId));
+        var display = ContextUtils.getTitleByContext(pObjectType, objectId);
         // TODO: Icon                       
         var uid = [objectId, i, objectRelationTypeId, pObjectType, pNodeId, objectType, objectRelationId, pHierarchy];
 
diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/onDelete.js b/entity/ObjectTree_entity/recordcontainers/jdito/onDelete.js
index 6541f935b87fc18c6d06480e84f365f647b42c24..c0b52c0e41fb5d2587f877afcf93b0792050f63c 100644
--- a/entity/ObjectTree_entity/recordcontainers/jdito/onDelete.js
+++ b/entity/ObjectTree_entity/recordcontainers/jdito/onDelete.js
@@ -1,6 +1,9 @@
+import("Workflow_lib");
 import("system.vars");
 import("Sql_lib");
 
 var objectRelationId = vars.get("$local.rowdata")["OBJECTRELATIONID.value"];
 
-newWhereIfSet("AB_OBJECTRELATION.AB_OBJECTRELATIONID", objectRelationId).deleteData();
\ No newline at end of file
+newWhereIfSet("AB_OBJECTRELATION.AB_OBJECTRELATIONID", objectRelationId).deleteData();
+
+WorkflowSignalSender.deleted();
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/onInsert.js b/entity/ObjectTree_entity/recordcontainers/jdito/onInsert.js
index 4ff38cdf98c122625cf196a8ad0d0fbf8647b782..799e7985e6eb1457f964bade7b8a1bc64ddca3ae 100644
--- a/entity/ObjectTree_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/ObjectTree_entity/recordcontainers/jdito/onInsert.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("Contact_lib");
 import("system.util");
 import("ObjectRelation_lib");
@@ -39,4 +40,6 @@ if (selectedObjectRelationTypeId)
             info || ""
         ]);
     }
-}
\ No newline at end of file
+}
+
+WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/onUpdate.js b/entity/ObjectTree_entity/recordcontainers/jdito/onUpdate.js
index eeb63ca799b10d70e54f1e522cb2d941942dc8a0..b60a3b50c4b94a9ce260613afc93b48a253fa203 100644
--- a/entity/ObjectTree_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/ObjectTree_entity/recordcontainers/jdito/onUpdate.js
@@ -1,3 +1,4 @@
+import("Workflow_lib");
 import("system.vars");
 import("Sql_lib");
 
@@ -7,3 +8,5 @@ if (vars.get("$local.changed").indexOf("INFO.value") !== -1)
     newWhereIfSet("AB_OBJECTRELATION.AB_OBJECTRELATIONID", rowdata["OBJECTRELATIONID.value"])
         .updateFields({"INFO" : rowdata["INFO.value"]});
 }
+
+WorkflowSignalSender.updated();
\ No newline at end of file
diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod
index 1a571fad307eb9e7e768bdfa12c553247e3ec376..860935ef74c48b42e5dc6379fd4c7b76d3c8fac1 100644
--- a/entity/Object_entity/Object_entity.aod
+++ b/entity/Object_entity/Object_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Object_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Object_entity/documentation.adoc</documentation>
@@ -283,6 +283,14 @@
         <fieldName>#PROVIDER</fieldName>
       </dependency>
     </entityConsumer>
+    <entityConsumer>
+      <name>Leadimports</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Leadimport_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
diff --git a/entity/Object_entity/recordcontainers/jdito/contentProcess.js b/entity/Object_entity/recordcontainers/jdito/contentProcess.js
index 27b0b7e83a11771b4ea8be2716a3fd61d1c5a6a7..bf77eb9a2d0f0df969843311c18f5bc4eb29738b 100644
--- a/entity/Object_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Object_entity/recordcontainers/jdito/contentProcess.js
@@ -19,7 +19,7 @@ if (vars.get("$param.ObjectType_param"))
     if (vars.exists("$param.ContactId") && vars.get("$param.ContactId"))
         contactId = vars.get("$param.ContactId");
     
-    result.object(db.table(ContextUtils.getContextDataSql(objectType, contactId, false, undefined, false, null, null, excludedIds)))
+    result.object(ContextUtils.loadContent(ContextUtils.getEntity(objectType), [contactId], ["#UID", "#CONTENTTITLE"], excludedIds))
 }
 else
 {
diff --git a/entity/Observation_entity/Observation_entity.aod b/entity/Observation_entity/Observation_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..922b0821dabcf343dbd703ba79a717c4d490dd6f
--- /dev/null
+++ b/entity/Observation_entity/Observation_entity.aod
@@ -0,0 +1,325 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>Observation_entity</name>
+  <title>Observation</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/Observation_entity/documentation.adoc</documentation>
+  <titlePlural>Observations</titlePlural>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>OBSERVATIONID</name>
+      <title>ObservationID</title>
+      <mandatory v="true" />
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <title>Date new</title>
+      <contentType>DATE</contentType>
+      <resolution>SECOND</resolution>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <title>Date Edit</title>
+      <contentType>DATE</contentType>
+      <resolution>SECOND</resolution>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>OBSERVER</name>
+      <title>Observer</title>
+      <consumer>Users</consumer>
+      <groupable v="true" />
+      <mandatory v="true" />
+      <stateProcess>%aditoprj%/entity/Observation_entity/entityfields/observer/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/observer/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Observation_entity/entityfields/observer/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>OBJECT_TYPE</name>
+      <title>Object Type</title>
+      <consumer>Contexts</consumer>
+      <groupable v="false" />
+      <mandatory v="true" />
+      <stateProcess>%aditoprj%/entity/Observation_entity/entityfields/object_type/stateProcess.js</stateProcess>
+      <displayValueProcess>%aditoprj%/entity/Observation_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess>
+      <onValueChange>%aditoprj%/entity/Observation_entity/entityfields/object_type/onValueChange.js</onValueChange>
+    </entityField>
+    <entityField>
+      <name>OBJECT_ID</name>
+      <title>Dataset</title>
+      <consumer>ObjectProxyConsumer</consumer>
+      <linkedContextProcess>%aditoprj%/entity/Observation_entity/entityfields/object_id/linkedContextProcess.js</linkedContextProcess>
+      <stateProcess>%aditoprj%/entity/Observation_entity/entityfields/object_id/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/object_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Observation_entity/entityfields/object_id/displayValueProcess.js</displayValueProcess>
+      <onValueChange>%aditoprj%/entity/Observation_entity/entityfields/object_id/onValueChange.js</onValueChange>
+    </entityField>
+    <entityConsumer>
+      <name>PrioKeywords</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/priokeywords/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Users</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Employee_entity</entityName>
+        <fieldName>EmployeesByUserId</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>ObjectProxyConsumer</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>ObjectProxy_entity</entityName>
+        <fieldName>FilteredObjects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>Entity_param</name>
+          <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/objectproxyconsumer/children/entity_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>TRIGGEREVENTUPDATE</name>
+      <title>Update</title>
+      <contentType>BOOLEAN</contentType>
+      <groupable v="false" />
+      <dropDownProcess>%aditoprj%/entity/Observation_entity/entityfields/triggereventupdate/dropDownProcess.js</dropDownProcess>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/triggereventupdate/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>TRIGGEREVENTINSERT</name>
+      <title>Insert</title>
+      <contentType>BOOLEAN</contentType>
+      <groupable v="false" />
+      <dropDownProcess>%aditoprj%/entity/Observation_entity/entityfields/triggereventinsert/dropDownProcess.js</dropDownProcess>
+      <stateProcess>%aditoprj%/entity/Observation_entity/entityfields/triggereventinsert/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/triggereventinsert/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>TRIGGEREVENTDELETE</name>
+      <title>Delete</title>
+      <contentType>BOOLEAN</contentType>
+      <groupable v="false" />
+      <dropDownProcess>%aditoprj%/entity/Observation_entity/entityfields/triggereventdelete/dropDownProcess.js</dropDownProcess>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/triggereventdelete/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>OBJECT_FILTER</name>
+      <title>Filter</title>
+      <contentType>FILTER_TREE</contentType>
+      <stateProcess>%aditoprj%/entity/Observation_entity/entityfields/object_filter/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/object_filter/valueProcess.js</valueProcess>
+      <onValueChange>%aditoprj%/entity/Observation_entity/entityfields/object_filter/onValueChange.js</onValueChange>
+    </entityField>
+    <entityField>
+      <name>OBJECT_FIELD</name>
+      <title>Fields</title>
+      <contentType>TEXT</contentType>
+      <dropDownProcess>%aditoprj%/entity/Observation_entity/entityfields/object_field/dropDownProcess.js</dropDownProcess>
+      <selectionMode>MULTI</selectionMode>
+      <stateProcess>%aditoprj%/entity/Observation_entity/entityfields/object_field/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/object_field/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>OnlyMyObservations_param</name>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/onlymyobservations_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>Observer_param</name>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/observer_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>MyObservation</name>
+      <children>
+        <entityParameter>
+          <name>Observer_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OnlyMyObservations_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityField>
+      <name>observationType</name>
+      <title>Observation Type</title>
+      <groupable v="false" />
+      <displayValueProcess>%aditoprj%/entity/Observation_entity/entityfields/observationtype/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>Contexts</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Context_entity</entityName>
+        <fieldName>Exclusive</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>Blacklist_param</name>
+          <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/contexts/children/blacklist_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>InvertBlacklist_param</name>
+          <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>OBSERVATION_ID</name>
+      <groupable v="false" />
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/observation_id/valueProcess.js</valueProcess>
+    </entityField>
+    <entityActionGroup>
+      <name>FilterActions</name>
+      <children>
+        <entityActionField>
+          <name>addDependency</name>
+          <title>Add Dependency</title>
+          <onActionProcess>%aditoprj%/entity/Observation_entity/entityfields/filteractions/children/adddependency/onActionProcess.js</onActionProcess>
+          <isSelectionAction v="true" />
+          <stateProcess>%aditoprj%/entity/Observation_entity/entityfields/filteractions/children/adddependency/stateProcess.js</stateProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityParameter>
+      <name>Observation_id_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>NOTIFICATION_PRIO</name>
+      <title>Priority</title>
+      <consumer>PrioKeywords</consumer>
+      <valueProcess>%aditoprj%/entity/Observation_entity/entityfields/notification_prio/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Observation_entity/entityfields/notification_prio/displayValueProcess.js</displayValueProcess>
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <isPageable v="false" />
+      <hasDependentRecords v="true" />
+      <conditionProcess>%aditoprj%/entity/Observation_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/Observation_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBDelete>%aditoprj%/entity/Observation_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
+      <alias>Data_alias</alias>
+      <cacheType>GLOBAL</cacheType>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>OBSERVATION.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>OBSERVATION.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_ID.value</name>
+          <recordfield>OBSERVATION.OBJECT_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_TYPE.value</name>
+          <recordfield>OBSERVATION.OBJECT_TYPE</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBSERVATIONID.value</name>
+          <recordfield>OBSERVATION.OBSERVATIONID</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>OBSERVATION.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>OBSERVATION.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBSERVER.value</name>
+          <recordfield>OBSERVATION.OBSERVER</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TRIGGEREVENTDELETE.value</name>
+          <recordfield>OBSERVATION.TRIGGEREVENTDELETE</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TRIGGEREVENTINSERT.value</name>
+          <recordfield>OBSERVATION.TRIGGEREVENTINSERT</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TRIGGEREVENTUPDATE.value</name>
+          <recordfield>OBSERVATION.TRIGGEREVENTUPDATE</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_FIELD.value</name>
+          <recordfield>OBSERVATION.OBJECT_FIELD</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_FILTER.value</name>
+          <recordfield>OBSERVATION.OBJECT_FILTER</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>observationType.value</name>
+          <expression>%aditoprj%/entity/Observation_entity/recordcontainers/db/recordfieldmappings/observationtype.value/expression.js</expression>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBSERVATION_ID.value</name>
+          <recordfield>OBSERVATION.OBSERVATION_ID</recordfield>
+          <isFilterable v="true" />
+          <isLookupFilter v="true" />
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>NOTIFICATION_PRIO.value</name>
+          <recordfield>OBSERVATION.NOTIFICATION_PRIO</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>013ae123-fbb0-42c1-b57a-0d6fcbf21477</name>
+          <tableName>OBSERVATION</tableName>
+          <primaryKey>OBSERVATIONID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/Observation_entity/documentation.adoc b/entity/Observation_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..7ecfc5a25ee243668153799dfbc20d77c4caade5
--- /dev/null
+++ b/entity/Observation_entity/documentation.adoc
@@ -0,0 +1,16 @@
+= Observation
+
+This entity is responsible for the administration of the observations and their dependencies.
+
+
+It is possible to set observations for different entities that are triggered based on changes in a data set 
+that is being observed directly or is contained in a filter. Fields that are not relevant for the observer 
+can be excluded. In addition, the user can decide whether he would like to know when a data record is 
+inserted, updated or deleted.
+
+=== Things for Observable Entities required
+
+* The entity had to trigger the Workflow in the onInsert, onUpdate and onDelete Processes
+* The entity had to have a content Title
+* The entity had to be customizing in the Blacklist_param of the Context Consumer if its not an dependency. Otherwise it had to be customizing in the Dependency_lib with the "isObservable" option
+* The entityfields which should not be displayed must also be customized
diff --git a/entity/Observation_entity/entityfields/contexts/children/blacklist_param/valueProcess.js b/entity/Observation_entity/entityfields/contexts/children/blacklist_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dbd58f3a427a81168f0db636cb951787858c430f
--- /dev/null
+++ b/entity/Observation_entity/entityfields/contexts/children/blacklist_param/valueProcess.js
@@ -0,0 +1,28 @@
+import("Observation_lib");
+import("system.vars");
+import("system.result");
+import("Sql_lib")
+
+if (vars.get("$field.OBSERVATION_ID"))
+{
+    result.object(Observation.getAllDependencyValue(newSelect("OBSERVATION.OBJECT_TYPE").from("OBSERVATION").where("OBSERVATION.OBSERVATIONID", vars.get("$field.OBSERVATION_ID")).cell()));
+} 
+else 
+{
+    result.object([
+    "Activity",
+    "Campaign",
+    "Contract",
+    "Employee",
+    // "Favorite", TODO: Fix errors in favorites dependencies and then remove the comment
+    "Leadimport",
+    "Offer",
+    "Order",
+    "Organisation",
+    "Person",
+    "Product",
+    "Salesproject",
+    "SupportTicket",
+    "Task"
+]);
+}
diff --git a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js b/entity/Observation_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js
similarity index 100%
rename from entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js
rename to entity/Observation_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js
diff --git a/entity/Observation_entity/entityfields/date_edit/valueProcess.js b/entity/Observation_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8d41a64d6993f71d00e0879f5eb4aed0aa0b866d
--- /dev/null
+++ b/entity/Observation_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/date_new/valueProcess.js b/entity/Observation_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ee28e84edb9930de54975f81e8cb5a13c9aa02f
--- /dev/null
+++ b/entity/Observation_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/filteractions/children/adddependency/onActionProcess.js b/entity/Observation_entity/entityfields/filteractions/children/adddependency/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3f1d0c11b35d36ecaf864732aac6a84ee3dc449c
--- /dev/null
+++ b/entity/Observation_entity/entityfields/filteractions/children/adddependency/onActionProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.entities");
+import("Observation_lib");
+import("system.neon");
+
+let selectedUIDs = vars.get("$sys.selection");
+
+if (selectedUIDs.length === 1){
+    let params = {
+        "Observation_id_param" : selectedUIDs[0]
+    }
+    neon.openContext("Observation", "ObservationEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+}
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/filteractions/children/adddependency/stateProcess.js b/entity/Observation_entity/entityfields/filteractions/children/adddependency/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2a13adbf563e621b559ce419dc5290a1701ddb90
--- /dev/null
+++ b/entity/Observation_entity/entityfields/filteractions/children/adddependency/stateProcess.js
@@ -0,0 +1,11 @@
+import("Context_lib");
+import("system.result");
+import("system.vars");
+import("system.neon");
+let selectedUIDs = vars.get("$sys.selection");
+ContextUtils.getContextId("Observation_entity");
+
+if (selectedUIDs.length !== 1 || vars.get("$field.OBSERVATION_ID"))
+    result.string(neon.COMPONENTSTATE_DISABLED);
+else 
+    result.string(neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/notification_prio/displayValueProcess.js b/entity/Observation_entity/entityfields/notification_prio/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f475486d679f56d4a977f7e00a5cdb544331bbf
--- /dev/null
+++ b/entity/Observation_entity/entityfields/notification_prio/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.notificationPriority(), vars.get("$this.value")));
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/notification_prio/valueProcess.js b/entity/Observation_entity/entityfields/notification_prio/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..efe3d0935078133f3da505a8e13e8b5a36a732a1
--- /dev/null
+++ b/entity/Observation_entity/entityfields/notification_prio/valueProcess.js
@@ -0,0 +1,6 @@
+import("KeywordRegistry_basic");
+import("system.result");
+import("system.vars");
+
+if (!vars.get("$this.value"))
+    result.string($KeywordRegistry.notificationPriority$normal());
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/object_field/dropDownProcess.js b/entity/Observation_entity/entityfields/object_field/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b0d5277bc58c7f968310c549db58fa67fa61e917
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_field/dropDownProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+
+result.object(Observation.getAllPosibleFields(vars.get("$field.OBJECT_TYPE")));
diff --git a/entity/Observation_entity/entityfields/object_field/stateProcess.js b/entity/Observation_entity/entityfields/object_field/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..95baf534c8ea447534f59933ddd965ae053e7d19
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_field/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$field.OBJECT_TYPE"))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
diff --git a/entity/Observation_entity/entityfields/object_field/valueProcess.js b/entity/Observation_entity/entityfields/object_field/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..99147fd1e3f393ceaf6053ba8d320411a66ac717
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_field/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("Observation_lib");
+import("system.result");
+import("system.neon");
+
+if (!vars.get("$this.value") && vars.get("$field.OBJECT_TYPE") && (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT))
+    result.string(Observation.getAllFieldValue(vars.get("$field.OBJECT_TYPE")));
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/object_filter/onValueChange.js b/entity/Observation_entity/entityfields/object_filter/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..55c74d79ec6e955417f2dbe7176b0d1480bc8358
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_filter/onValueChange.js
@@ -0,0 +1,4 @@
+import("system.vars");
+
+if (vars.get("$this.value") && JSON.parse(vars.get("$this.value")).filter.childs.length > 0)
+    vars.set("$field.OBJECT_ID", null);
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/object_filter/stateProcess.js b/entity/Observation_entity/entityfields/object_filter/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5e0b2ea0ea55e6962770bc343dc5471b105420a7
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_filter/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$field.OBJECT_TYPE") && !vars.get("$field.OBJECT_ID"))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
diff --git a/entity/Observation_entity/entityfields/object_filter/valueProcess.js b/entity/Observation_entity/entityfields/object_filter/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e1eab777e321453398af0f07b195fe48287fe6ff
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_filter/valueProcess.js
@@ -0,0 +1,8 @@
+import("Observation_lib");
+import("Context_lib");
+import("system.vars");
+import("system.result");
+
+if ((vars.get("$this.value") == null || vars.get("$this.value") == "") && vars.get("$field.OBJECT_TYPE") && !vars.get("$field.OBJECT_ID")) {
+    result.string(Observation.getContextFilter(vars.get("$field.OBJECT_TYPE"), null));
+}
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/object_id/displayValueProcess.js b/entity/Observation_entity/entityfields/object_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7980bda1dde583895008c0a6cdd922077878ae53
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_id/displayValueProcess.js
@@ -0,0 +1,14 @@
+import("system.vars");
+import("system.entities");
+import("system.result");
+import("Employee_lib")
+
+if (vars.get("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_ID"))
+{
+    var loadConfig = entities.createConfigForLoadingRows()
+    .entity(vars.get("$field.OBJECT_TYPE") + "_entity")
+    .fields(["#CONTENTTITLE"])
+    .uid(vars.get("$field.OBJECT_ID"))
+        
+    result.string(entities.getRow(loadConfig)["#CONTENTTITLE"]);
+}
diff --git a/entity/Observation_entity/entityfields/object_id/linkedContextProcess.js b/entity/Observation_entity/entityfields/object_id/linkedContextProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c0f139c434895f76ce4180c889efc953c74bfdb
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_id/linkedContextProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+if (vars.get("$field.OBJECT_ID"))
+    result.string(vars.get("$field.OBJECT_TYPE"));
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/object_id/onValueChange.js b/entity/Observation_entity/entityfields/object_id/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..058703b23436c4742aadbf71ec710e220f21e65d
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_id/onValueChange.js
@@ -0,0 +1,11 @@
+import("Context_lib");
+import("Observation_lib");
+import("system.vars");
+
+if (vars.get("$this.value"))
+{
+    vars.set("$field.OBJECT_FILTER", null);
+    vars.set("$field.TRIGGEREVENTINSERT", 0);
+}
+else 
+    vars.set("$field.TRIGGEREVENTINSERT", 1);
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/object_id/stateProcess.js b/entity/Observation_entity/entityfields/object_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..09e42012ed6ff88e18ac1c12ce9fa660eaeb3bfc
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_id/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$field.OBJECT_TYPE") && !(vars.get("$field.OBJECT_FILTER") && JSON.parse(vars.get("$field.OBJECT_FILTER")).filter.childs.length > 0))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
diff --git a/entity/Observation_entity/entityfields/object_id/valueProcess.js b/entity/Observation_entity/entityfields/object_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0d548d4da42d78867153de937258b1388ee775ec
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_id/valueProcess.js
@@ -0,0 +1,8 @@
+import("Employee_lib");
+import("system.vars");
+import("system.result");
+
+let value = vars.get("$this.value");
+
+if (vars.get("$this.value"))
+    result.string(vars.get("$field.OBJECT_TYPE") == "Employee" && value.length == 36  ? EmployeeUtils.prefixUserId(value) : value);
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/object_type/displayValueProcess.js b/entity/Observation_entity/entityfields/object_type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1805b1860acb81fa6e80120a160b3f6cb1351c14
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_type/displayValueProcess.js
@@ -0,0 +1,9 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Context_lib");
+
+let type = vars.get("$field.OBJECT_TYPE");
+
+if (type)
+    result.string(translate.text(ContextUtils.getContextName(type)));
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/object_type/onValueChange.js b/entity/Observation_entity/entityfields/object_type/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..9bcd9261bdd4b363f261de9b5e1edad733a7b9ea
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_type/onValueChange.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("Observation_lib");
+import("system.vars");
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+    vars.set("$field.OBJECT_FIELD",null);
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/object_type/stateProcess.js b/entity/Observation_entity/entityfields/object_type/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..643741ad3220ee883606474ee01ebcbbbf5ad208
--- /dev/null
+++ b/entity/Observation_entity/entityfields/object_type/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_EDIT)
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/objectproxyconsumer/children/entity_param/valueProcess.js b/entity/Observation_entity/entityfields/objectproxyconsumer/children/entity_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..574d469f847e371987a6b404c575b8e6c2b4d415
--- /dev/null
+++ b/entity/Observation_entity/entityfields/objectproxyconsumer/children/entity_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Context_lib")
+
+result.string(ContextUtils.getEntity(vars.get("$field.OBJECT_TYPE")));
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/observation_id/valueProcess.js b/entity/Observation_entity/entityfields/observation_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a8558e58cad26d101cdb073a9b68d3b5ead61ef2
--- /dev/null
+++ b/entity/Observation_entity/entityfields/observation_id/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+if (vars.exists("$param.Observation_id_param") && vars.getString("$param.Observation_id_param"))
+{
+    result.string(vars.getString("$param.Observation_id_param"));
+}
diff --git a/entity/Observation_entity/entityfields/observationtype/displayValueProcess.js b/entity/Observation_entity/entityfields/observationtype/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7c3584c65dbe3d112d03467516ed92a7b061c519
--- /dev/null
+++ b/entity/Observation_entity/entityfields/observationtype/displayValueProcess.js
@@ -0,0 +1,15 @@
+import("system.result");
+import("system.entities");
+import("system.vars");
+
+if (vars.get("$this.value") && vars.get("$this.value") != "FILTER" )
+{
+    var loadConfig = entities.createConfigForLoadingRows()
+    .entity(vars.get("$field.OBJECT_TYPE") + "_entity")
+    .fields(["#CONTENTTITLE"])
+    .uid(vars.get("$this.value"))
+        
+    result.string(entities.getRow(loadConfig)["#CONTENTTITLE"]);
+} else {
+    result.string("Filter");
+}
diff --git a/entity/Observation_entity/entityfields/observer/displayValueProcess.js b/entity/Observation_entity/entityfields/observer/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cb2f2d2c69db5f0e82ae95bfa6b8f8090c8de433
--- /dev/null
+++ b/entity/Observation_entity/entityfields/observer/displayValueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.logging");
+import("system.vars");
+import("system.tools");
+
+var user = tools.getUserByAttribute(tools.NAME, vars.get("$field.OBSERVER"), tools.PROFILE_DEFAULT);
+if (user)
+    result.string((user.params.firstname + " " + user.params.lastname).trim());
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/observer/stateProcess.js b/entity/Observation_entity/entityfields/observer/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e930c613bf00b043822b8deda3fb50fffc555121
--- /dev/null
+++ b/entity/Observation_entity/entityfields/observer/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_EDIT && vars.get("$param.OnlyMyObservations_param") != "true")
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/observer/valueProcess.js b/entity/Observation_entity/entityfields/observer/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9643850fd4816576b543c3fefb624575d6957e1e
--- /dev/null
+++ b/entity/Observation_entity/entityfields/observer/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.vars")
+
+if (!vars.get("$this.value") && vars.get("$param.Observer_param"))
+    result.string(vars.get("$param.Observer_param"));
+    
+    
diff --git a/entity/Observation_entity/entityfields/observer_param/valueProcess.js b/entity/Observation_entity/entityfields/observer_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3bc7f5cd1797ce903128a6d074df6ee4cc34dd18
--- /dev/null
+++ b/entity/Observation_entity/entityfields/observer_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("Employee_lib");
+import("system.result");
+
+
+result.string( EmployeeUtils.getCurrentUserId());
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/onlymyobservations_param/valueProcess.js b/entity/Observation_entity/entityfields/onlymyobservations_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..599bfc35195077f2fb171156ddaf1faddd9b3254
--- /dev/null
+++ b/entity/Observation_entity/entityfields/onlymyobservations_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string(true)
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/priokeywords/children/containername_param/valueProcess.js b/entity/Observation_entity/entityfields/priokeywords/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1a1a50c90c786f687c2ed3833d696dc022b3d4d0
--- /dev/null
+++ b/entity/Observation_entity/entityfields/priokeywords/children/containername_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+
+
+result.string("NotificationPriority");
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js b/entity/Observation_entity/entityfields/triggereventdelete/dropDownProcess.js
similarity index 100%
rename from entity/CampaignParticipant_entity/entityfields/hasadvertisingban/dropDownProcess.js
rename to entity/Observation_entity/entityfields/triggereventdelete/dropDownProcess.js
diff --git a/entity/Observation_entity/entityfields/triggereventdelete/valueProcess.js b/entity/Observation_entity/entityfields/triggereventdelete/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..72e22f0a52f1d6439b67df5abc59a66280df8fd4
--- /dev/null
+++ b/entity/Observation_entity/entityfields/triggereventdelete/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string("1");
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/triggereventinsert/dropDownProcess.js b/entity/Observation_entity/entityfields/triggereventinsert/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3373b8a886df7267c9205c206442cb2e091128fb
--- /dev/null
+++ b/entity/Observation_entity/entityfields/triggereventinsert/dropDownProcess.js
@@ -0,0 +1,7 @@
+import("system.translate");
+import("system.result");
+
+result.object([
+    ["1", translate.text("Yes")],
+    ["0", translate.text("No")]
+]);
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/triggereventinsert/stateProcess.js b/entity/Observation_entity/entityfields/triggereventinsert/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..af9cbe9f36d002960c26b820a9d5cf02f5f6ee36
--- /dev/null
+++ b/entity/Observation_entity/entityfields/triggereventinsert/stateProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$field.OBJECT_ID") && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
diff --git a/entity/Observation_entity/entityfields/triggereventinsert/valueProcess.js b/entity/Observation_entity/entityfields/triggereventinsert/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..72e22f0a52f1d6439b67df5abc59a66280df8fd4
--- /dev/null
+++ b/entity/Observation_entity/entityfields/triggereventinsert/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string("1");
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/triggereventupdate/dropDownProcess.js b/entity/Observation_entity/entityfields/triggereventupdate/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3373b8a886df7267c9205c206442cb2e091128fb
--- /dev/null
+++ b/entity/Observation_entity/entityfields/triggereventupdate/dropDownProcess.js
@@ -0,0 +1,7 @@
+import("system.translate");
+import("system.result");
+
+result.object([
+    ["1", translate.text("Yes")],
+    ["0", translate.text("No")]
+]);
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/triggereventupdate/valueProcess.js b/entity/Observation_entity/entityfields/triggereventupdate/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..72e22f0a52f1d6439b67df5abc59a66280df8fd4
--- /dev/null
+++ b/entity/Observation_entity/entityfields/triggereventupdate/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string("1");
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/user_edit/valueProcess.js b/entity/Observation_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..90383c071316dc55fe51d43a93dd7db75551842e
--- /dev/null
+++ b/entity/Observation_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/user_new/valueProcess.js b/entity/Observation_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dda83cfd00e13df5c6da64151f5d1e6d932a681e
--- /dev/null
+++ b/entity/Observation_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Observation_entity/recordcontainers/db/conditionProcess.js b/entity/Observation_entity/recordcontainers/db/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..759cf5066513e03d38f993d73c8d40bb31398393
--- /dev/null
+++ b/entity/Observation_entity/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,9 @@
+import("Employee_lib");
+import("system.vars");
+import("Sql_lib");
+import("system.result");
+
+var cond = newWhere();
+if (vars.get("$param.OnlyMyObservations_param") == "true")
+    cond.andIfSet("OBSERVATION.OBSERVER", vars.get("$param.Observer_param"));
+result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Observation_entity/recordcontainers/db/onDBDelete.js b/entity/Observation_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..61647984def3293cbba0ec6e7f594bebe2f431ee
--- /dev/null
+++ b/entity/Observation_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,5 @@
+import("Sql_lib");
+import("system.vars");
+
+newWhere("OBSERVATION.OBSERVATION_ID" , vars.get("$local.uid"))
+.deleteData(true, "OBSERVATION");
\ No newline at end of file
diff --git a/entity/Observation_entity/recordcontainers/db/orderClauseProcess.js b/entity/Observation_entity/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..058d334e7b904ddbba221fdb96df9ec9f5a6e0cc
--- /dev/null
+++ b/entity/Observation_entity/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.db");
+
+result.object({"OBSERVATION.OBSERVATION_ID": db.DESCENDING});
\ No newline at end of file
diff --git a/entity/Observation_entity/recordcontainers/db/recordfieldmappings/observationtype.value/expression.js b/entity/Observation_entity/recordcontainers/db/recordfieldmappings/observationtype.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..c70fa3937d7c97f9abfd5aa72e03abc85f77caa1
--- /dev/null
+++ b/entity/Observation_entity/recordcontainers/db/recordfieldmappings/observationtype.value/expression.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("CASE WHEN OBSERVATION.OBJECT_ID IS NOT NULL THEN OBSERVATION.OBJECT_ID ELSE 'FILTER' END");
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index 0491466e0b6a47b54b5d0c67d48d8d4b7a891d31..383a977d17ed82ee6e5a67a58fbbf88d2b2fc32b 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -1,15 +1,16 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Offer_entity</name>
+  <title>Offer</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Offer_entity/documentation.adoc</documentation>
-  <title>Offer</title>
   <siblings>
     <element>Offeritem_entity</element>
   </siblings>
   <grantUpdateProcess>%aditoprj%/entity/Offer_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/Offer_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Offer_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/Offer_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <afterUiInit>%aditoprj%/entity/Offer_entity/afterUiInit.js</afterUiInit>
   <useFavorites v="true" />
   <iconId>VAADIN:CART</iconId>
@@ -17,6 +18,27 @@
   <titlePlural>Offers</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Offer_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Offer_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityProvider>
       <name>#PROVIDER</name>
       <dependencies>
@@ -97,6 +119,7 @@
       <contentType>NUMBER</contentType>
       <inputFormat>#,##0.00</inputFormat>
       <state>READONLY</state>
+      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/vat/stateProcess.js</stateProcess>
       <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/vat/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
@@ -149,6 +172,10 @@
           <name>Language_param</name>
           <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offeritems/children/language_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>Discount_param</name>
+          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offeritems/children/discount_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityActionField>
@@ -163,7 +190,7 @@
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00</outputFormat>
       <inputFormat>#,##0.00</inputFormat>
-      <groupable v="true" />
+      <groupable v="false" />
       <state>READONLY</state>
       <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/net/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -317,7 +344,6 @@
       <onValueChange>%aditoprj%/entity/Offer_entity/entityfields/chosenaddress/onValueChange.js</onValueChange>
       <onValueChangeTypes>
         <element>MASK</element>
-        <element>PROCESS</element>
       </onValueChangeTypes>
     </entityField>
     <entityConsumer>
@@ -1052,11 +1078,52 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>ACTIVE</name>
+    </entityField>
+    <entityField>
+      <name>DISCOUNT</name>
+      <title>Discount</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>0.00'%'</outputFormat>
+      <inputFormat>0.00</inputFormat>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/discount/valueProcess.js</valueProcess>
+      <onValueChange>%aditoprj%/entity/Offer_entity/entityfields/discount/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+      </onValueChangeTypes>
+      <onValidation>%aditoprj%/entity/Offer_entity/entityfields/discount/onValidation.js</onValidation>
+    </entityField>
+    <entityField>
+      <name>DISCOUNTED_NET</name>
+      <title>discounted Price</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00</outputFormat>
+      <inputFormat>#,##0.00</inputFormat>
+      <state>READONLY</state>
+      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/discounted_net/stateProcess.js</stateProcess>
+      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/discounted_net/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityParameter>
+      <name>Discount_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityField>
+      <name>DiscountChanged</name>
+    </entityField>
+    <entityField>
+      <name>DISCOUNTED_VAT</name>
+      <title>discounted Vat</title>
+      <contentType>NUMBER</contentType>
+      <inputFormat>#,##0.00</inputFormat>
+      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/discounted_vat/stateProcess.js</stateProcess>
+      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/discounted_vat/displayValueProcess.js</displayValueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <maximumDbRows v="0" />
       <fromClauseProcess>%aditoprj%/entity/Offer_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Offer_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
@@ -1064,43 +1131,7 @@
       <onDBInsert>%aditoprj%/entity/Offer_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Offer_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Offer_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>69b62a9f-95bf-48be-8891-b6c2524f6ea1</name>
-          <tableName>OFFER</tableName>
-          <primaryKey>OFFERID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>d2334c28-1be0-4377-b13a-062bb1613c5a</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>16e5d66a-f156-4855-9da4-b9dee497c3f3</name>
-          <tableName>SALESPROJECT</tableName>
-          <primaryKey>SALESPROJECTID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>6b708a89-8864-433b-bdec-4edcedb3d7d1</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>4cdfe047-48d0-409e-8b01-e2c1312e8a5b</name>
-          <tableName>PERSON</tableName>
-          <primaryKey>PERSONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CURRENCY.value</name>
@@ -1139,6 +1170,8 @@
         <dbRecordFieldMapping>
           <name>PROBABILITY.value</name>
           <recordfield>OFFER.PROBABILITY</recordfield>
+          <isFilterable v="true" />
+          <isLookupFilter v="false" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>STATUS.value</name>
@@ -1243,10 +1276,6 @@
           <name>OBJECT_TYPE.value</name>
           <recordfield>OFFER.OBJECT_TYPE</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>OBJECT_ROWID.displayValue</name>
-          <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>CONTACT_ID.value</name>
           <recordfield>OFFER.CONTACT_ID</recordfield>
@@ -1256,6 +1285,7 @@
         <dbRecordFieldMapping>
           <name>LETTERSALUTATION.value</name>
           <recordfield>OFFER.LETTERSALUTATION</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>CONTACT_ORG_ID.displayValue</name>
@@ -1304,7 +1334,60 @@
           <name>OFFER_ID.value</name>
           <recordfield>OFFER.OFFER_ID</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ACTIVE.value</name>
+          <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DISCOUNTED_NET.value</name>
+          <recordfield>OFFER.DISCOUNTED_NET</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DISCOUNT.value</name>
+          <recordfield>OFFER.DISCOUNT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DISCOUNTED_VAT.value</name>
+          <recordfield>OFFER.DISCOUNTED_VAT</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>69b62a9f-95bf-48be-8891-b6c2524f6ea1</name>
+          <tableName>OFFER</tableName>
+          <primaryKey>OFFERID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>d2334c28-1be0-4377-b13a-062bb1613c5a</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>16e5d66a-f156-4855-9da4-b9dee497c3f3</name>
+          <tableName>SALESPROJECT</tableName>
+          <primaryKey>SALESPROJECTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>6b708a89-8864-433b-bdec-4edcedb3d7d1</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>4cdfe047-48d0-409e-8b01-e2c1312e8a5b</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtensionSet>
           <name>Attribute_filter</name>
diff --git a/entity/Offer_entity/contentDescriptionProcess.js b/entity/Offer_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f1afab18db7ad38a661329de19f0554dac92285c
--- /dev/null
+++ b/entity/Offer_entity/contentDescriptionProcess.js
@@ -0,0 +1,12 @@
+import("Util_lib");
+import("system.eMath");
+import("system.translate");
+import("system.datetime");
+import("system.vars");
+import("system.result");
+
+var res = [translate.text("Total gross") + ": " + vars.get("$field.TotalGross.displayValue"), 
+           translate.text("Probability") + ": " + vars.get("$field.PROBABILITY.displayValue"),
+           translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))];
+
+result.string(res.join(" | "));
\ No newline at end of file
diff --git a/entity/Offer_entity/contentTitleProcess.js b/entity/Offer_entity/contentTitleProcess.js
index 98f9e420320b5614344632935f8bb864a240052e..e90d32e0f10a837286539bbe79d4558449dd6b19 100644
--- a/entity/Offer_entity/contentTitleProcess.js
+++ b/entity/Offer_entity/contentTitleProcess.js
@@ -1,4 +1,6 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.OfferCode_VersNr_fieldgroup"));
\ No newline at end of file
+var res = [vars.get("$field.OfferCode_VersNr_fieldgroup"), vars.get("$field.STATUS.displayValue")]
+
+result.string(res.join(" | "));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/address/valueProcess.js b/entity/Offer_entity/entityfields/address/valueProcess.js
index 160f9518edab8b5ed593d921661aada906512ee4..e7878513e8aaa088d2ba5623aac2c49be81f73ab 100644
--- a/entity/Offer_entity/entityfields/address/valueProcess.js
+++ b/entity/Offer_entity/entityfields/address/valueProcess.js
@@ -1,7 +1,7 @@
 import("system.result");
 import("system.vars");
 
-if (vars.exists("$param.OfferAddress_param")) 
+if (vars.get("$param.OfferAddress_param") && vars.get("$this.value") == null) 
 {
     result.string(vars.get("$param.OfferAddress_param"));
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js b/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js
index d610943f3409687827462179063e28df0aa3dde8..1b596584b051bec97da19e07429f38fecb1a9894 100644
--- a/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js
@@ -1,8 +1,8 @@
 import("system.vars");
+import("system.neon");
 import("Offer_lib");
 
 var offerId = vars.getString("$field.OFFERID");
-
 var fieldValues = {
     contactId: vars.getString("$field.CONTACT_ID"),
     language: vars.getString("$field.ISOLANGUAGE"),
@@ -12,7 +12,9 @@ var fieldValues = {
     deliveryTerm: vars.getString("$field.DELIVERYTERMS"),
     paymentTerm: vars.getString("$field.PAYMENTTERMS"),
     objectRowId: vars.getString("$field.OBJECT_ROWID"),
-    objectType: vars.getString("$field.OBJECT_TYPE")
+    objectType: vars.getString("$field.OBJECT_TYPE"),
+    discount: vars.getString("$field.DISCOUNT")
+    
 };
 
 OfferUtils.copyOffer(offerId, fieldValues);
diff --git a/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js b/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js
index ff143a3b866db9b739ae9532997d6dd4041b5a89..58333ceee85c85ca43b36ec1a03d4d3067f6a9a9 100644
--- a/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js
+++ b/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js
@@ -11,7 +11,7 @@ if (vars.exists("$param.OfferDeliveryTerm_param") && vars.get("$param.OfferDeliv
 {
     result.string(vars.get("$param.OfferDeliveryTerm_param"));
 } 
-else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID"))
 {
     var presetValue = "";
     var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID"))
diff --git a/entity/Offer_entity/entityfields/discount/onValidation.js b/entity/Offer_entity/entityfields/discount/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..595a5d9aae549242aaa2246e2e4b6e6d602249a0
--- /dev/null
+++ b/entity/Offer_entity/entityfields/discount/onValidation.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+import("Util_lib");
+import("Entity_lib");
+
+var value = vars.get("local.value");
+var validationResult = NumberUtils.validateIsBetweenFloat("Discount", value, 0, 100);
+
+if (validationResult)
+    result.string(validationResult);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/discount/onValueChange.js b/entity/Offer_entity/entityfields/discount/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..5fc7651884946ad0f59a3f5c51b5bb93f0505c30
--- /dev/null
+++ b/entity/Offer_entity/entityfields/discount/onValueChange.js
@@ -0,0 +1,5 @@
+import("system.neon");
+import("system.vars");
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon. OPERATINGSTATE_EDIT){
+    neon.setFieldValue("$field.DiscountChanged", "true");
+}
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/discount/valueProcess.js b/entity/Offer_entity/entityfields/discount/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fa96d16798f8258f091583613760f918dc4a8126
--- /dev/null
+++ b/entity/Offer_entity/entityfields/discount/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+    
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.Discount_param")
+    && vars.get("$param.Discount_param")){
+    result.string(vars.get("$param.Discount_param"));
+}
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/discounted_net/displayValueProcess.js b/entity/Offer_entity/entityfields/discounted_net/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c7473e812c66616164442674dc87bdd5282dc50d
--- /dev/null
+++ b/entity/Offer_entity/entityfields/discounted_net/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("Util_lib");
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+result.string(NumberUtils.formatWithCurrency(vars.get("$field.DISCOUNTED_NET"), translate.text("#,##0.00"), vars.get("$field.CURRENCY")));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/discounted_net/stateProcess.js b/entity/Offer_entity/entityfields/discounted_net/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7443b0c0dcb6c9e38045968ddaa64b5763dfd85e
--- /dev/null
+++ b/entity/Offer_entity/entityfields/discounted_net/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+var discount = vars.get("$field.DISCOUNT");
+
+if(parseInt(discount) == parseInt("0") || !discount)
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+else 
+    result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/discounted_vat/displayValueProcess.js b/entity/Offer_entity/entityfields/discounted_vat/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..730396f16084a8c954d9cd54640efdd758e8cb52
--- /dev/null
+++ b/entity/Offer_entity/entityfields/discounted_vat/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("Util_lib");
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+result.string(NumberUtils.formatWithCurrency(vars.get("$field.DISCOUNTED_VAT"), translate.text("#,##0.00"), vars.get("$field.CURRENCY")));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/discounted_vat/stateProcess.js b/entity/Offer_entity/entityfields/discounted_vat/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7443b0c0dcb6c9e38045968ddaa64b5763dfd85e
--- /dev/null
+++ b/entity/Offer_entity/entityfields/discounted_vat/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+var discount = vars.get("$field.DISCOUNT");
+
+if(parseInt(discount) == parseInt("0") || !discount)
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+else 
+    result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js b/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
index 5a7493c41130f53a5a877ad0823f5783c8c80c02..02f67ef9c37049f446df6879107ff67b6032e91e 100644
--- a/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
@@ -15,6 +15,7 @@ var params = {
     "OfferHeader_param" : vars.get("$field.HEADER"),
     "OfferFooter_param" : vars.get("$field.FOOTER"),
     "OfferDeliveryTerm_param" : vars.get("$field.DELIVERYTERMS"),
-    "OfferPaymentTerm_param" : vars.get("$field.PAYMENTTERMS")
+    "OfferPaymentTerm_param" : vars.get("$field.PAYMENTTERMS"),
+    "Discount_param": vars.get("$field.DISCOUNT")
 }
 neon.openContext("Offer", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js
index fe2b7c72502d9937add9b539ed38483e6ca4bd51..8074aca46e2680d0b0d19060e41f370b84830fa1 100644
--- a/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js
+++ b/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js
@@ -7,5 +7,5 @@ import("Context_lib");
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$field.OBJECT_ROWID") == null) {
     result.string("");
 } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
-    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
+    result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")));
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Offer_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/Offer_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Offer_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/Offer_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Offer_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/Offer_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Offer_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/offeritems/children/discount_param/valueProcess.js b/entity/Offer_entity/entityfields/offeritems/children/discount_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..67b63c37f044f7d1f4e807d7a863457a78552701
--- /dev/null
+++ b/entity/Offer_entity/entityfields/offeritems/children/discount_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.DISCOUNT"));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js b/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js
index 0f003f4454eb7dc65386ea75080398e1070aef56..820659874926c9870e401c3898695443e6c2a075 100644
--- a/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js
@@ -11,7 +11,7 @@ import("MimeType_lib");
 
 var offerReport = {}
 var attachmentArray = [];
-var updateStatements = [["OFFER", ["STATUS"], db.getColumnTypes("OFFER", ["STATUS"]), [$KeywordRegistry.offerStatus$sent()], newWhere("OFFER.OFFERID", vars.get("$field.OFFERID")).build()]];
+var updateStatements = [["OFFER", ["STATUS"], null, [$KeywordRegistry.offerStatus$sent()], newWhere("OFFER.OFFERID", vars.get("$field.OFFERID")).build()]];
 var notificationMsg = translate.text("The status of the offer was changed to \"sent\".");
 var contactId = vars.get("$field.CONTACT_ID");
 var arrayReport = OfferUtils.buildOfferReport(vars.get("$field.OFFERID"));
diff --git a/entity/Offer_entity/entityfields/openadminview/onActionProcess.js b/entity/Offer_entity/entityfields/openadminview/onActionProcess.js
index 9257ff40784f0d506f2b68484ae292b951c069bd..a6781db7db09cfa1e51de183d2f14ed06cba737e 100644
--- a/entity/Offer_entity/entityfields/openadminview/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/openadminview/onActionProcess.js
@@ -6,8 +6,8 @@ result.string(AdminViewUtils.open("OFFERID", [
     ["CONTACT_ID", vars.get("$field.CONTACT_ID")],
     ["CONTACT_ORG_ID", vars.get("$field.CONTACT_ORG_ID")],
     ["CONTACT_PERSON_ID", vars.get("$field.CONTACT_PERSON_ID")],
-    ["DATE_NEW", vars.get("$field.DATE_NEW")],
-    ["DATE_EDIT", vars.get("$field.DATE_EDIT")],
+    ["DATE_NEW", vars.get("$field.DATE_NEW"), "DATE"],
+    ["DATE_EDIT", vars.get("$field.DATE_EDIT"), "DATE"],
     ["USER_NEW", vars.get("$field.USER_NEW")],
     ["USER_EDIT", vars.get("$field.USER_EDIT")]
 ]));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/paymentterms/valueProcess.js b/entity/Offer_entity/entityfields/paymentterms/valueProcess.js
index 4b13796a10e4c66b70d7abe004fa7369b3c515b3..b9fd6cd7aee19dcfa86cb5e4625f9998548efd02 100644
--- a/entity/Offer_entity/entityfields/paymentterms/valueProcess.js
+++ b/entity/Offer_entity/entityfields/paymentterms/valueProcess.js
@@ -11,7 +11,7 @@ if (vars.exists("$param.OfferPaymentTerm_param") && vars.get("$param.OfferPaymen
 {
     result.string(vars.get("$param.OfferPaymentTerm_param"));
 }
-else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID"))
 {
     var presetValue = "";
     var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID"))
diff --git a/entity/Offer_entity/entityfields/totalgross/valueProcess.js b/entity/Offer_entity/entityfields/totalgross/valueProcess.js
index 6e374c8f50a610ed0f50b89319726224167631d0..9d6a6c9330d2fd3eb57fa5f5102e55ad5eb0ef3b 100644
--- a/entity/Offer_entity/entityfields/totalgross/valueProcess.js
+++ b/entity/Offer_entity/entityfields/totalgross/valueProcess.js
@@ -2,7 +2,8 @@ import("system.result");
 import("system.vars");
 import("system.eMath");
 
-var netValue = vars.get("$field.NET");
-var vatValue = vars.get("$field.VAT");
+var discount = vars.get("$field.DISCOUNT");
+var netValue = discount && parseInt(discount) != parseInt("0")  ? vars.get("$field.DISCOUNTED_NET") : vars.get("$field.NET")
+var vatValue =  discount && parseInt(discount) != parseInt("0") ? vars.get("$field.DISCOUNTED_VAT") : vars.get("$field.VAT");
 
 result.string( eMath.addDec(netValue, vatValue) );
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/vat/stateProcess.js b/entity/Offer_entity/entityfields/vat/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..42a2d8e6788a09e0c2c8b410c5e4eadb7bfeb115
--- /dev/null
+++ b/entity/Offer_entity/entityfields/vat/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+var discount = vars.get("$field.DISCOUNT");
+
+if(discount && parseInt(discount) != parseInt("0")){
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
+else 
+    result.string(neon.COMPONENTSTATE_READONLY)
\ No newline at end of file
diff --git a/entity/Offer_entity/recordcontainers/db/conditionProcess.js b/entity/Offer_entity/recordcontainers/db/conditionProcess.js
index 001612ec1946c47b24fee4e07a2273b60586162e..eabc7f2454152f89cb58b7cd582e76dc41cdcdd6 100644
--- a/entity/Offer_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Offer_entity/recordcontainers/db/conditionProcess.js
@@ -14,5 +14,4 @@ else {
 
 cond.andIfSet("OFFER.STATUS", "$param.OfferStatus_param")
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Offer_entity/recordcontainers/db/onDBInsert.js b/entity/Offer_entity/recordcontainers/db/onDBInsert.js
index da551808a8c82e05a35c7aecf40d283434b2f4c0..c7d3c3336eadfb5bc6b41deaec997081f23c491b 100644
--- a/entity/Offer_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Offer_entity/recordcontainers/db/onDBInsert.js
@@ -1,17 +1,20 @@
 import("Context_lib");
 import("system.workflow");
 import("Workflow_lib");
+import("system.db");
 import("system.datetime");
+import("system.util");
 import("system.neon");
 import("system.vars");
 import("Offer_lib");
-import("Sql_lib");
 
+var rowdata = vars.get("$local.rowdata");
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
 {
     var offerId = vars.get("$local.uid");
-    if (vars.exists("$param.OfferOriginal_Id_param"))
-        OfferUtils.copyOfferItems(vars.getString("$param.OfferOriginal_Id_param"), offerId);
+    var discount = rowdata["OFFER.DISCOUNT"];
+    if (vars.exists("$param.OfferOriginal_Id_param") && vars.get("$param.OfferOriginal_Id_param"))
+        OfferUtils.copyOfferItems(vars.getString("$param.OfferOriginal_Id_param"), offerId, discount);
     
     var activityId = vars.get("$param.ActivityId_param");
     if (activityId)
diff --git a/entity/Offer_entity/recordcontainers/db/onDBUpdate.js b/entity/Offer_entity/recordcontainers/db/onDBUpdate.js
index 2e53f3cad9a9edf21cc5bbc6fdecc00c5001dfee..866c488632bc1e0629e2bfd4b4681a8f3baad6a5 100644
--- a/entity/Offer_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Offer_entity/recordcontainers/db/onDBUpdate.js
@@ -1,3 +1,38 @@
+import("system.entities");
+import("Offer_lib");
+import("system.vars");
 import("Workflow_lib");
 
+var rowdata = vars.get("$local.rowdata");
+var oid = rowdata["OFFER.OFFERID"];
+if(vars.get("$field.DiscountChanged") == "true" && oid){
+    var discount = rowdata["OFFER.DISCOUNT"];
+    var oiUtils = new OfferItemUtils(oid);  
+    
+    var vals = oiUtils.getNetAndVat();
+    var discountedVals = OfferItemUtils.getDiscountedNet(null, oid, discount);
+    
+    let config = entities.createConfigForUpdatingRows();
+    config.entity("Offer_entity");
+    if(discountedVals){
+        config.fieldValues({
+            "NET": vals[0],
+            "VAT": vals[1],
+            "DISCOUNTED_NET": discountedVals[0],
+            "DISCOUNTED_VAT": discountedVals[1]
+        });
+    }
+    else 
+    {
+        config.fieldValues({
+            "NET": vals[0],
+            "VAT": vals[1]
+        });
+    }
+
+    config.uid(oid);
+    entities.updateRow(config);
+
+}
+
 WorkflowSignalSender.updated();
\ No newline at end of file
diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..6da46407ad55e7e624304130313492b538a2d012
--- /dev/null
+++ b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
@@ -0,0 +1,6 @@
+import("Context_lib");
+import("system.result");
+import("KeywordRegistry_basic");
+
+var activArr = [$KeywordRegistry.offerStatus$open(), $KeywordRegistry.offerStatus$checked(), $KeywordRegistry.offerStatus$sent()];
+result.string(ContextUtils.buildActiveCaseWhen(activArr, "OFFER.STATUS"));
\ No newline at end of file
diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
deleted file mode 100644
index c0332af5cb599a99d062e3828f354ebfd005273f..0000000000000000000000000000000000000000
--- a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("Context_lib");
-
-result.string(ContextUtils.getNameSubselectSql("OFFER.OBJECT_TYPE", "OFFER.OBJECT_ROWID"))
\ No newline at end of file
diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod
index a900e6473e8d7ded55a0ca946aa0798296bf657e..b9d486bcdccd446792dce5f470ae44b376b3e960 100644
--- a/entity/Offeritem_entity/Offeritem_entity.aod
+++ b/entity/Offeritem_entity/Offeritem_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Offeritem_entity</name>
+  <title>Offeritem</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Offeritem_entity/documentation.adoc</documentation>
-  <title>Offeritem</title>
   <siblings>
     <element>Offer_entity</element>
   </siblings>
@@ -23,6 +23,8 @@
       <name>DISCOUNT</name>
       <title>Discount</title>
       <contentType>NUMBER</contentType>
+      <maxValue v="100" />
+      <minValue v="0" />
       <outputFormat>0.00'%'</outputFormat>
       <inputFormat>0.00</inputFormat>
       <onValidation>%aditoprj%/entity/Offeritem_entity/entityfields/discount/onValidation.js</onValidation>
@@ -93,6 +95,7 @@
       <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/documentation.adoc</documentation>
       <title>Quantity</title>
       <contentType>NUMBER</contentType>
+      <minValue v="1" />
       <outputFormat>#</outputFormat>
       <inputFormat>#</inputFormat>
       <mandatory v="true" />
@@ -190,8 +193,8 @@
         </entityParameter>
         <entityParameter>
           <name>Language_param</name>
-          <title></title>
           <expose v="true" />
+          <title></title>
         </entityParameter>
       </children>
     </entityProvider>
@@ -248,11 +251,14 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityParameter>
+      <name>Discount_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <maximumDbRows v="0" />
       <hasDependentRecords v="true" />
       <conditionProcess>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
@@ -260,15 +266,7 @@
       <onDBInsert>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>1894a7fa-bc31-43c2-9ba9-d432892efdaa</name>
-          <tableName>OFFERITEM</tableName>
-          <primaryKey>OFFERITEMID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ASSIGNEDTO.value</name>
@@ -365,6 +363,15 @@
           <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>1894a7fa-bc31-43c2-9ba9-d432892efdaa</name>
+          <tableName>OFFERITEM</tableName>
+          <primaryKey>OFFERITEMID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js b/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js
index 82c536561aaac4f8a876433b2311a932cc7b50f4..ee1e6cbd8479673064d2d5aa2350046f148b9102 100644
--- a/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js
@@ -5,5 +5,4 @@ import("system.vars");
 
 var cond = newWhereIfSet("OFFERITEM.OFFER_ID", "$param.OfferId_param")
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js b/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js
index 88f823f4fb90b6fcbd3e10b059a1bbf3df190dc0..283d1cb7a7cdb0568b117c1f8001fe4f7a2ef796 100644
--- a/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js
@@ -1,3 +1,4 @@
+import("system.entities");
 import("system.neon");
 import("system.vars");
 import("system.db");
@@ -8,6 +9,7 @@ var oid = vars.get("$field.OFFER_ID");
 if(oid != "")
 {
     var oiid = vars.get("$field.OFFERITEMID");
+    var discount = vars.exists("$param.Discount_param") ? vars.get("$param.Discount_param"): "";
     var oiUtils = new OfferItemUtils(oid);
     var deletedIds = oiUtils.deletePartsList(oiid);
     oiUtils.reOrgItems();
@@ -15,8 +17,27 @@ if(oid != "")
     deletedIds.push(oiid);
     var cols = ["NET", "VAT"];
     
-    var vals = oiUtils.getNetAndVat(deletedIds);
+    var vals = oiUtils.getNetAndVat(deletedIds);    
+    var discountedVals = OfferItemUtils.getDiscountedNet(deletedIds, oid, discount);
     
-    newWhere("OFFER.OFFERID", oid)
-        .updateData(true, "OFFER", cols, null, vals)
+    let config = entities.createConfigForUpdatingRows()
+    config.entity("Offer_entity");
+    
+    if(discountedVals){
+        config.fieldValues({
+            "NET": vals[0],
+            "VAT": vals[1],
+            "DISCOUNTED_NET": discountedVals[0],
+            "DISCOUNTED_VAT": discountedVals[1]
+        });
+    }
+    else{
+        config.fieldValues({
+            "NET": vals[0],
+            "VAT": vals[1]
+        });
+    }
+    config.uid(oid);
+    entities.updateRow(config);
+
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js b/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
index 473b49850845193bb86ddee243f668ae206617e4..f7e305e7c5ecac3ab334df84828152e91e3e9d30 100644
--- a/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
@@ -1,3 +1,4 @@
+import("system.entities");
 import("system.datetime");
 import("system.neon");
 import("system.vars");
@@ -14,14 +15,34 @@ if(oid != "")
 {
     var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : "";
     var contactid = vars.exists("$param.ContactId_param") ? vars.get("$param.ContactId_param") : "";
+    var discount = vars.exists("$param.Discount_param") ? vars.get("$param.Discount_param"): "";
     var oiUtils = new OfferItemUtils(rowdata["OFFERITEM.OFFER_ID"]);    
     oiUtils.insertPartsList(rowdata["OFFERITEM.PRODUCT_ID"], vars.get("$local.uid"), curr, contactid, vars.get("$param.Language_param"));
     oiUtils.reOrgItems();
     
     //update offer price
     var vals = oiUtils.getNetAndVat();
-    var cols = ["NET", "VAT"];
+    var discountedVals = OfferItemUtils.getDiscountedNet(null, oid,  discount);
+    
+    let config = entities.createConfigForUpdatingRows()
+    config.entity("Offer_entity");
+
+    if(discountedVals){
+        config.fieldValues({
+            "NET": vals[0],
+            "VAT": vals[1],
+            "DISCOUNTED_NET": discountedVals[0],
+            "DISCOUNTED_VAT": discountedVals[1]
+        });
+    }
+    else{
+        config.fieldValues({
+            "NET": vals[0],
+            "VAT": vals[1]
+        });
+
+    }
+    config.uid(oid);
+    entities.updateRow(config);
 
-    newWhere("OFFER.OFFERID", oid)
-        .updateData(true, "OFFER", cols, null, vals);    
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js b/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
index a1e94cd51186a9e57ee45df344263e3cc26d79b9..a004c7c8b6e4ca57eb19c52f75ef55dafded35b8 100644
--- a/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
@@ -1,3 +1,4 @@
+import("system.entities");
 import("system.vars");
 import("system.db");
 import("system.neon");
@@ -7,9 +8,30 @@ import("Sql_lib");
 var oid = vars.get("$field.OFFER_ID");
 if(oid != "")
 {
+    var discount = vars.exists("$param.Discount_param") ? vars.get("$param.Discount_param"): "";
     var cols = ["NET", "VAT"];    
     var oiUtils = new OfferItemUtils(oid);
+    var vals = oiUtils.getNetAndVat();
+    var discountedVals = OfferItemUtils.getDiscountedNet(null, oid, discount);
     
-    newWhere("OFFER.OFFERID", oid)
-        .updateData(true, "OFFER", cols, null, oiUtils.getNetAndVat());    
+    let config = entities.createConfigForUpdatingRows()
+    config.entity("Offer_entity");
+    
+    if(discountedVals){
+        config.fieldValues({
+            "NET": vals[0],
+            "VAT": vals[1],
+            "DISCOUNTED_NET": discountedVals[0],
+            "DISCOUNTED_VAT": discountedVals[1]
+        });
+    }
+    else{
+        config.fieldValues({
+            "NET": vals[0],
+            "VAT": vals[1]
+        });
+    }
+    config.uid(oid);
+    entities.updateRow(config);
+ 
 }
\ No newline at end of file
diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod
index ae39a7c436493de461a6b378849dbaee88d57bc2..b45fc39902e82eef36859ced53c37250421ab5fa 100644
--- a/entity/Order_entity/Order_entity.aod
+++ b/entity/Order_entity/Order_entity.aod
@@ -1,11 +1,12 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Order_entity</name>
+  <title>Receipt</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Order_entity/documentation.adoc</documentation>
-  <title>Receipt</title>
   <grantDeleteProcess>%aditoprj%/entity/Order_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Order_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/Order_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <afterUiInit>%aditoprj%/entity/Order_entity/afterUiInit.js</afterUiInit>
   <useFavorites v="true" />
   <iconId>VAADIN:DOLLAR</iconId>
@@ -13,6 +14,27 @@
   <titlePlural>Receipts</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Order_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Order_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityProvider>
       <name>#PROVIDER</name>
       <dependencies>
@@ -28,6 +50,12 @@
           <fieldName>Orders</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>bfc738ad-8af3-4d2b-9ed5-b3ca2212bb9e</name>
+          <entityName>Person_entity</entityName>
+          <fieldName>Orders</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
     </entityProvider>
     <entityField>
@@ -70,6 +98,7 @@
       <linkedContextProcess>%aditoprj%/entity/Order_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess>
       <mandatory v="true" />
       <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
+      <onValueChange>%aditoprj%/entity/Order_entity/entityfields/contact_id/onValueChange.js</onValueChange>
       <onValueChangeTypes>
         <element>MASK</element>
       </onValueChangeTypes>
@@ -100,6 +129,11 @@
     <entityConsumer>
       <name>Orderitems</name>
       <description></description>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Orderitem_entity</entityName>
+        <fieldName>Orderitems</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>OrderId_param</name>
@@ -125,11 +159,6 @@
           <mandatory v="true" />
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Orderitem_entity</entityName>
-        <fieldName>Orderitems</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>NET</name>
@@ -191,6 +220,11 @@
     <entityConsumer>
       <name>Documents</name>
       <selectionMode>MULTI</selectionMode>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Document_entity</entityName>
+        <fieldName>Documents</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>AssignmentRowId_param</name>
@@ -201,15 +235,15 @@
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Document_entity</entityName>
-        <fieldName>Documents</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>MainDocuments</name>
       <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Document_entity</entityName>
+        <fieldName>MainDocuments</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>AssignmentRowId_param</name>
@@ -220,28 +254,28 @@
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Document_entity</entityName>
-        <fieldName>MainDocuments</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>Salesprojects</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Salesproject_entity</entityName>
+        <fieldName>Salesprojects</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ContactId_param</name>
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Salesproject_entity</entityName>
-        <fieldName>Salesprojects</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>KeywordCurrencies</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
@@ -249,14 +283,14 @@
           <expose v="false" />
         </entityParameter>
       </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>KeywordStates</name>
       <dependency>
         <name>dependency</name>
         <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>KeywordStates</name>
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
@@ -264,11 +298,6 @@
           <expose v="false" />
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>Languages</name>
@@ -287,6 +316,11 @@
     </entityParameter>
     <entityConsumer>
       <name>Activities</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Activity_entity</entityName>
+        <fieldName>LinkedObjects</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>RowId_param</name>
@@ -301,11 +335,6 @@
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Activity_entity</entityName>
-        <fieldName>LinkedObjects</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>OFFER_ID</name>
@@ -319,6 +348,11 @@
     <entityConsumer>
       <name>Tasks</name>
       <stateProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/stateProcess.js</stateProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Task_entity</entityName>
+        <fieldName>Tasks</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>RowId_param</name>
@@ -333,15 +367,15 @@
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Task_entity</entityName>
-        <fieldName>Tasks</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>Attributes</name>
       <onValidation>%aditoprj%/entity/Order_entity/entityfields/attributes/onValidation.js</onValidation>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelation_entity</entityName>
+        <fieldName>AttributeRelations</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ObjectRowId_param</name>
@@ -352,15 +386,15 @@
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>AttributeRelation_entity</entityName>
-        <fieldName>AttributeRelations</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>AttributeTree</name>
       <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelation_entity</entityName>
+        <fieldName>TreeProvider</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ObjectType_param</name>
@@ -371,25 +405,20 @@
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>AttributeRelation_entity</entityName>
-        <fieldName>TreeProvider</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>LogHistories</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>LogHistory_entity</entityName>
+        <fieldName>LogHistoryProvider</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>tablenames_param</name>
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>LogHistory_entity</entityName>
-        <fieldName>LogHistoryProvider</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>ORDERTYPE</name>
@@ -467,31 +496,31 @@
     </entityField>
     <entityConsumer>
       <name>KeywordOrderTypes</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordordertypes/children/containername_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>KeywordDunningLevels</name>
       <dependency>
         <name>dependency</name>
         <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>KeywordDunningLevels</name>
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddunninglevels/children/containername_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>OBJECT_ROWID</name>
@@ -519,6 +548,11 @@
     </entityField>
     <entityConsumer>
       <name>Objects</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Object_entity</entityName>
+        <fieldName>FilteredObjects</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ContactId_param</name>
@@ -529,14 +563,14 @@
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Object_entity</entityName>
-        <fieldName>FilteredObjects</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>Contexts</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Context_entity</entityName>
+        <fieldName>Exclusive</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>Blacklist_param</name>
@@ -547,11 +581,6 @@
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Context_entity</entityName>
-        <fieldName>Exclusive</fieldName>
-      </dependency>
     </entityConsumer>
     <entityParameter>
       <name>PossibleConnectionTypes</name>
@@ -604,46 +633,46 @@
     </entityField>
     <entityConsumer>
       <name>KeywordPaymentTerms</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordpaymentterms/children/containername_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>KeywordDeliveryTerms</name>
       <dependency>
         <name>dependency</name>
         <entityName>KeywordEntry_entity</entityName>
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>KeywordDeliveryTerms</name>
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddeliveryterms/children/containername_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>PossibleAddresses</name>
       <documentation>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/documentation.adoc</documentation>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Address_entity</entityName>
+        <fieldName>OrganisationAndContactAddresses</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ContactId_param</name>
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Address_entity</entityName>
-        <fieldName>OrganisationAndContactAddresses</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>NOTICE</name>
@@ -660,20 +689,25 @@
     </entityField>
     <entityConsumer>
       <name>Offers</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Offer_entity</entityName>
+        <fieldName>ContactOffers</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>ContactId_param</name>
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Offer_entity</entityName>
-        <fieldName>ContactOffers</fieldName>
-      </dependency>
     </entityConsumer>
     <entityConsumer>
       <name>DocumentTemplateTexHeader</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>DocumentTemplate_entity</entityName>
+        <fieldName>DocumentTemplateProvider</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>DocumentTemplateType_param</name>
@@ -684,14 +718,14 @@
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexheader/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>DocumentTemplateTexFooter</name>
       <dependency>
         <name>dependency</name>
         <entityName>DocumentTemplate_entity</entityName>
         <fieldName>DocumentTemplateProvider</fieldName>
       </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>DocumentTemplateTexFooter</name>
       <children>
         <entityParameter>
           <name>DocumentTemplateType_param</name>
@@ -702,11 +736,6 @@
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>DocumentTemplate_entity</entityName>
-        <fieldName>DocumentTemplateProvider</fieldName>
-      </dependency>
     </entityConsumer>
     <entityField>
       <name>ChosenTexHeader</name>
@@ -727,7 +756,6 @@
       <documentation>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/documentation.adoc</documentation>
       <title>Choose payment address</title>
       <consumer>PossibleAddresses</consumer>
-      <valueProcess>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/displayValueProcess.js</displayValueProcess>
       <onValueChange>%aditoprj%/entity/Order_entity/entityfields/chosenpaymentaddress/onValueChange.js</onValueChange>
       <onValueChangeTypes>
@@ -741,7 +769,6 @@
       <documentation>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/documentation.adoc</documentation>
       <title>Choose delivery address</title>
       <consumer>PossibleAddresses</consumer>
-      <valueProcess>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/displayValueProcess.js</displayValueProcess>
       <onValueChange>%aditoprj%/entity/Order_entity/entityfields/chosendeliveryaddress/onValueChange.js</onValueChange>
       <onValueChangeTypes>
@@ -913,16 +940,27 @@
         </entityActionField>
       </children>
     </entityActionGroup>
+    <entityField>
+      <name>INFO</name>
+      <title>Info</title>
+      <contentType>LONG_TEXT</contentType>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+    </entityField>
+    <entityField>
+      <name>ACTIVE</name>
+    </entityField>
     <entityParameter>
       <name>SourceOrderId_param</name>
       <expose v="true" />
-      <description></description>
     </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <maximumDbRows v="0" />
       <fromClauseProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Order_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
@@ -930,36 +968,7 @@
       <onDBInsert>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Order_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>43290f18-46fb-4d1f-b653-60f39f1fe3fb</name>
-          <tableName>SALESORDER</tableName>
-          <primaryKey>SALESORDERID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>3f8c21b4-a81e-4405-8b4f-346ff724b8a5</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>0131be90-6232-4dda-9036-bbde951eded5</name>
-          <tableName>PERSON</tableName>
-          <primaryKey>PERSONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>0efeab02-efaf-4155-9312-0aee1f7f5535</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CURRENCY.value</name>
@@ -970,14 +979,17 @@
         <dbRecordFieldMapping>
           <name>FOOTER.value</name>
           <recordfield>SALESORDER.FOOTER</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>HEADER.value</name>
           <recordfield>SALESORDER.HEADER</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>NET.value</name>
           <recordfield>SALESORDER.NET</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>SALESORDERCODE.value</name>
@@ -988,6 +1000,7 @@
         <dbRecordFieldMapping>
           <name>SALESORDERDATE.value</name>
           <recordfield>SALESORDER.SALESORDERDATE</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>SALESORDERID.value</name>
@@ -996,6 +1009,7 @@
         <dbRecordFieldMapping>
           <name>VAT.value</name>
           <recordfield>SALESORDER.VAT</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>CONTACT_ID.value</name>
@@ -1036,14 +1050,17 @@
         <dbRecordFieldMapping>
           <name>CANCELLATION.value</name>
           <recordfield>SALESORDER.CANCELLATION</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>DUNNINGDATE.value</name>
           <recordfield>SALESORDER.DUNNINGDATE</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>DUNNINGLEVEL.value</name>
           <recordfield>SALESORDER.DUNNINGLEVEL</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>ORDERSTATUS.value</name>
@@ -1059,6 +1076,7 @@
         <dbRecordFieldMapping>
           <name>PAID.value</name>
           <recordfield>SALESORDER.PAID</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>PAYDATE.value</name>
@@ -1069,19 +1087,12 @@
         <dbRecordFieldMapping>
           <name>PAYDUEDATE.value</name>
           <recordfield>SALESORDER.PAYDUEDATE</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>OBJECT_ROWID.value</name>
           <recordfield>SALESORDER.OBJECT_ROWID</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>OBJECT_ROWID.displayValue</name>
-          <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>OFFER_ID.displayValue</name>
-          <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>OBJECT_TYPE.value</name>
           <recordfield>SALESORDER.OBJECT_TYPE</recordfield>
@@ -1101,18 +1112,22 @@
         <dbRecordFieldMapping>
           <name>DELIVERYADDRESS.value</name>
           <recordfield>SALESORDER.DELIVERYADDRESS</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>PAYMENTADDRESS.value</name>
           <recordfield>SALESORDER.PAYMENTADDRESS</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>NOTICE.value</name>
           <recordfield>SALESORDER.NOTICE</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>DUNNINGTEXT.value</name>
           <recordfield>SALESORDER.DUNNINGTEXT</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>DELIVERYTERMS.displayValue</name>
@@ -1141,7 +1156,50 @@
           <recordfield>SALESORDER.SALESORDERID</recordfield>
           <aggregateType>COUNT</aggregateType>
         </aggregateFieldDbMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>SALESORDER.SALESORDERDATE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ACTIVE.value</name>
+          <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>INFO.value</name>
+          <recordfield>SALESORDER.INFO</recordfield>
+          <isFilterable v="true" />
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>43290f18-46fb-4d1f-b653-60f39f1fe3fb</name>
+          <tableName>SALESORDER</tableName>
+          <primaryKey>SALESORDERID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>3f8c21b4-a81e-4405-8b4f-346ff724b8a5</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>0131be90-6232-4dda-9036-bbde951eded5</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>0efeab02-efaf-4155-9312-0aee1f7f5535</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtension>
           <name>Favorite_filter</name>
diff --git a/entity/Order_entity/contentDescriptionProcess.js b/entity/Order_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..bd351d26e62473bda001b51a8393d3ed4f2cdb19
--- /dev/null
+++ b/entity/Order_entity/contentDescriptionProcess.js
@@ -0,0 +1,19 @@
+import("system.logging");
+import("system.translate");
+import("system.datetime");
+import("system.vars");
+import("system.result");
+import("KeywordRegistry_basic");
+
+var orderstatus = vars.get("$field.ORDERSTATUS") == "1" ? translate.text("Yes"): translate.text("No")
+
+var res = [translate.text("Sent") + ": " + orderstatus, 
+           translate.text("Total gross") + ": " + vars.get("$field.TotalGross.displayValue")]
+
+if(vars.get("$field.PAYDATE"))
+    res.push(translate.text("Pay date") + ": " + datetime.toDate(vars.get("$field.PAYDATE"), translate.text("dd.MM.yyyy")))
+
+
+res.push(translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy")));
+    
+result.string(res.join(" | "));
\ No newline at end of file
diff --git a/entity/Order_entity/contentTitleProcess.js b/entity/Order_entity/contentTitleProcess.js
index efca7174f4eba418870382ab3a958d1428e7d247..376625c4943175ab2b0f7f9b5da3a2e7c9d66f4f 100644
--- a/entity/Order_entity/contentTitleProcess.js
+++ b/entity/Order_entity/contentTitleProcess.js
@@ -4,4 +4,9 @@ import("system.translate");
 import("system.vars");
 import("system.result");
 
-result.string(KeywordUtils.getViewValue($KeywordRegistry.orderType(), vars.get("$field.ORDERTYPE")) +" - "+ vars.get("$field.SALESORDERCODE"));
+var res = [vars.get("$field.SALESORDERCODE")];
+
+if(vars.get("$field.CANCELLATION") == "1")
+    res.push(translate.text("${ORDER_CANCELLED}"));
+
+result.string(res.join(" | "));
diff --git a/entity/Order_entity/entityfields/chosendeliveryaddress/displayValueProcess.js b/entity/Order_entity/entityfields/chosendeliveryaddress/displayValueProcess.js
index 0c813a182c67edfa8cad70ef3f3ce43d0b06c126..6edd38999f3754199fb568bb13f3da9b9275ce10 100644
--- a/entity/Order_entity/entityfields/chosendeliveryaddress/displayValueProcess.js
+++ b/entity/Order_entity/entityfields/chosendeliveryaddress/displayValueProcess.js
@@ -2,4 +2,4 @@ import("system.vars");
 import("PostalAddress_lib");
 import("system.result");
 
-result.string(AddressUtils.getFormattedOnlineAddressById(vars.get("$field.ChosenPaymentAddress")))
\ No newline at end of file
+result.string(AddressUtils.getFormattedOnlineAddressById(vars.get("$field.ChosenDeliveryAddress")))
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/chosendeliveryaddress/onValueChange.js b/entity/Order_entity/entityfields/chosendeliveryaddress/onValueChange.js
index 0af12a93e35e4df8221666d3c95d483b44b38aeb..44c16bd3e5047c572ec2bcbc3f9e15ce215be9ac 100644
--- a/entity/Order_entity/entityfields/chosendeliveryaddress/onValueChange.js
+++ b/entity/Order_entity/entityfields/chosendeliveryaddress/onValueChange.js
@@ -8,4 +8,5 @@ var newAddressId = vars.get("$local.value");
 if (newAddressId)
 {
     neon.setFieldValue("$field.DELIVERYADDRESS", AddressUtils.getAddressById(newAddressId));
+    
 }
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/chosendeliveryaddress/valueProcess.js b/entity/Order_entity/entityfields/chosendeliveryaddress/valueProcess.js
deleted file mode 100644
index f0b227bdb4b0fe3afa8e9542ce9f10af4630d3b9..0000000000000000000000000000000000000000
--- a/entity/Order_entity/entityfields/chosendeliveryaddress/valueProcess.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import("Contact_lib");
-import("system.result");
-import("system.neon");
-import("system.vars");
-
-if (((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) && vars.get("$this.value") == null))
-{
-    if (vars.get("$field.DELIVERYADDRESS")) //case when a receipt is made from an offer i.e. the address is already set
-    {
-    result.string(null);
-    }
-    else 
-        {
-    var defaultAddressId = ContactUtils.getDefaultAddressId(vars.get("$field.CONTACT_ID")); //otherwise get the default address
-    if (defaultAddressId)
-        result.string(defaultAddressId);
-        }
-}
-else //(i.e this.value!=null)
-{
- var defaultAddressId2 = ContactUtils.getDefaultAddressId(vars.get("$field.CONTACT_ID")); //if the user changes the contact and project again, get the address of the new contact
-    if (defaultAddressId2)
-        result.string(defaultAddressId2);   
-}
diff --git a/entity/Order_entity/entityfields/chosenpaymentaddress/onValueChange.js b/entity/Order_entity/entityfields/chosenpaymentaddress/onValueChange.js
index e30268bc6a8cb9585934bdd8bcbcdbb29a9d7efa..939aea52612434f5450d2f2a56cafdb07de0f079 100644
--- a/entity/Order_entity/entityfields/chosenpaymentaddress/onValueChange.js
+++ b/entity/Order_entity/entityfields/chosenpaymentaddress/onValueChange.js
@@ -8,6 +8,7 @@ var newAddressId = vars.get("$local.value");
 if (newAddressId)
 {
     neon.setFieldValue("$field.PAYMENTADDRESS", AddressUtils.getAddressById(newAddressId));
-    neon.setFieldValue("$field.ChosenDeliveryAddress", AddressUtils.getAddressById(newAddressId));
+    neon.setFieldValue("$field.ChosenDeliveryAddress", newAddressId);
     neon.setFieldValue("$field.DELIVERYADDRESS", AddressUtils.getAddressById(newAddressId));
+    
 }
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/chosenpaymentaddress/valueProcess.js b/entity/Order_entity/entityfields/chosenpaymentaddress/valueProcess.js
deleted file mode 100644
index 5520b6f007660f1ce62e6216c5b587c5e3bbdaf6..0000000000000000000000000000000000000000
--- a/entity/Order_entity/entityfields/chosenpaymentaddress/valueProcess.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import("Contact_lib");
-import("system.result");
-import("system.neon");
-import("system.vars");
-
-if (((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) && vars.get("$this.value") == null))
-{
-    if (vars.get("$field.PAYMENTADDRESS")) //case when a receipt is made from an offer i.e. the address is already set
-    {
-    result.string(null);
-    }
-    else 
-        {
-    var defaultAddressId = ContactUtils.getDefaultAddressId(vars.get("$field.CONTACT_ID")); //otherwise get the default address
-    if (defaultAddressId)
-        result.string(defaultAddressId);
-        }
-}
-else //(i.e this.value!=null)
-{
- var defaultAddressId2 = ContactUtils.getDefaultAddressId(vars.get("$field.CONTACT_ID")); //if the user changes the contact and project again, get the address of the new contact
-    if (defaultAddressId2)
-        result.string(defaultAddressId2);   
-}
diff --git a/entity/Order_entity/entityfields/contact_id/onValueChange.js b/entity/Order_entity/entityfields/contact_id/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..b0695547e1c2b02e41ad59aa861999bd9747ca51
--- /dev/null
+++ b/entity/Order_entity/entityfields/contact_id/onValueChange.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.vars");
+import("Contact_lib");
+
+
+neon.setFieldValue("$field.ChosenPaymentAddress", ContactUtils.getDefaultAddressId(vars.get("local.value")));
+neon.setFieldValue("$field.ChosenDeliveryAddress", ContactUtils.getDefaultAddressId(vars.get("local.value")));
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/deliveryterms/valueProcess.js b/entity/Order_entity/entityfields/deliveryterms/valueProcess.js
index 8e6fb1be5bc999ff98be26570bbd8ff5d5233ff1..ed78d05852c8a088d333cf55307036313541b3e1 100644
--- a/entity/Order_entity/entityfields/deliveryterms/valueProcess.js
+++ b/entity/Order_entity/entityfields/deliveryterms/valueProcess.js
@@ -9,7 +9,7 @@ import("Contact_lib");
 
 
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID"))
 {
     var presetValue = "";
     var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID"));
diff --git a/entity/Order_entity/entityfields/dunningdate/valueProcess.js b/entity/Order_entity/entityfields/dunningdate/valueProcess.js
index d5ae1be32b21e27a07049d1388af7d1feab5f678..ae262c3cac6b62c6d2deb314b0a67fe451575747 100644
--- a/entity/Order_entity/entityfields/dunningdate/valueProcess.js
+++ b/entity/Order_entity/entityfields/dunningdate/valueProcess.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.neon");
 import("system.vars");
 import("system.result");
diff --git a/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js
index 8b080bceea92c146a676b0f33cc7cb87d4e86b9d..95c4eea5367140dc2d81e470ba0607adf52f07c1 100644
--- a/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js
+++ b/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js
@@ -7,5 +7,5 @@ import("Context_lib");
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) {
     result.string("");
 } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
-    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
+    result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")));
 }
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Order_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/Order_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Order_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/Order_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Order_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/Order_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Order_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js b/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js
index 7b92c1bb14aa08001b7d5738111337ab7e81f4cc..cf4b6cd38a6154032bc3607894ce054e4754a062 100644
--- a/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js
+++ b/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js
@@ -1,10 +1,4 @@
 import("system.result");
 import("system.vars");
-import("Contact_lib");
 
-if (vars.get("$field.CONTACT_ID"))
-{
-    var ids = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID"));
-    if (ids.length >= 3 && ids[2])
-        result.string(ids[2]);
-}
\ No newline at end of file
+result.string(vars.get("$field.CONTACT_ID"));
diff --git a/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js b/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js
index 44cf00055adb79b0f8a573e12ded26e954c36f73..53225e7adf9f1876a1494a42cda2bf08e726f5b0 100644
--- a/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js
+++ b/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js
@@ -8,7 +8,7 @@ import("Sql_lib");
 
 var orderReport = {};
 var attachmentArray = [];
-var updateStatements = [["SALESORDER", ["ORDERSTATUS"], db.getColumnTypes("SALESORDER", ["ORDERSTATUS"]), ["1"], newWhere("SALESORDER.SALESORDERID", vars.get("$field.SALESORDERID")).build()]];
+var updateStatements = [["SALESORDER", ["ORDERSTATUS"], null, ["1"], newWhere("SALESORDER.SALESORDERID", vars.get("$field.SALESORDERID")).build()]];
 var notificationMsg = translate.text("The status of the order was changed to \"sent\".");
 var contactId = vars.get("$field.CONTACT_ID");
 var orgContactId = vars.get("$field.CONTACT_ORG_ID");
diff --git a/entity/Order_entity/entityfields/paydate/valueProcess.js b/entity/Order_entity/entityfields/paydate/valueProcess.js
index d5ae1be32b21e27a07049d1388af7d1feab5f678..ae262c3cac6b62c6d2deb314b0a67fe451575747 100644
--- a/entity/Order_entity/entityfields/paydate/valueProcess.js
+++ b/entity/Order_entity/entityfields/paydate/valueProcess.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.neon");
 import("system.vars");
 import("system.result");
diff --git a/entity/Order_entity/entityfields/paymentterms/valueProcess.js b/entity/Order_entity/entityfields/paymentterms/valueProcess.js
index 7501b966d14bf76fa1fc2ded5b655a8f0e3e9129..8cf77fdb2b60bc5b819d97a770b3b3c3e8cd8199 100644
--- a/entity/Order_entity/entityfields/paymentterms/valueProcess.js
+++ b/entity/Order_entity/entityfields/paymentterms/valueProcess.js
@@ -7,23 +7,23 @@ import("system.result");
 import("system.vars");
 import("Attribute_lib");
 
-if (vars.get("$this.value") == null) {
-    if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID"))
+{
+    var presetValue = "";
+    var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID"));
+    if (contactIds.length >= 3 && contactIds[2])
     {
-        var presetValue = "";
-        var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID"));
-        if (contactIds.length >= 3 && contactIds[2])
-        {
-            var orgContactId = ContactUtils.getOrgContactId(contactIds[2]);
-            if (orgContactId)
-            { 
-                presetValue = new AttributeRelationQuery(orgContactId, $AttributeRegistry.paymentTerm()).getSingleAttributeValue();
-            }
+        var orgContactId = ContactUtils.getOrgContactId(contactIds[2]);
+        if (orgContactId)
+        { 
+            presetValue = new AttributeRelationQuery(orgContactId, $AttributeRegistry.paymentTerm()).getSingleAttributeValue();
         }
-
-        if (presetValue)
-            result.string(presetValue);
-        else
-            result.string(KeywordUtils.getFirst($KeywordRegistry.paymentTerm()));
     }
+
+    if (presetValue)
+        result.string(presetValue);
+    else
+        result.string(KeywordUtils.getFirst($KeywordRegistry.paymentTerm()));
 }
+
diff --git a/entity/Order_entity/recordcontainers/db/conditionProcess.js b/entity/Order_entity/recordcontainers/db/conditionProcess.js
index d799cf12382ac030ddeeb35b7e61e891c2a07f6e..572d8249ded4490fb35322640e28b49764831b3f 100644
--- a/entity/Order_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Order_entity/recordcontainers/db/conditionProcess.js
@@ -11,5 +11,4 @@ else {
     cond.andIfSet("SALESORDER.OBJECT_ROWID", "$param.ObjectRowId_param")
         .andIfSet("SALESORDER.OBJECT_TYPE", "$param.ObjectType_param");
 }
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..b6235593124a2fa09d7432f19455a4dc4cc42dda
--- /dev/null
+++ b/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
@@ -0,0 +1,6 @@
+import("Context_lib");
+import("system.result");
+import("KeywordRegistry_basic");
+
+var activArr = [0, 1];
+result.string(ContextUtils.buildActiveCaseWhen(activArr, "SALESORDER.ORDERSTATUS"));
\ No newline at end of file
diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
deleted file mode 100644
index bbe883a82964ab9693ce6c4fca792a9c27e01363..0000000000000000000000000000000000000000
--- a/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("Context_lib");
-
-result.string(ContextUtils.getNameSubselectSql("SALESORDER.OBJECT_TYPE", "SALESORDER.OBJECT_ROWID"))
\ No newline at end of file
diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js
deleted file mode 100644
index cb7fa7682e14113a60f86371e225422c41d088bf..0000000000000000000000000000000000000000
--- a/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("Context_lib");
-import("system.db");
-
-result.string(db.translateStatement(ContextUtils.getNameSql("Offer", null, "SALESORDER.OFFER_ID")));
\ No newline at end of file
diff --git a/entity/Orderitem_entity/Orderitem_entity.aod b/entity/Orderitem_entity/Orderitem_entity.aod
index 888a453225876d3097dfbf65f250e8a3576e83b5..6603d77440c439f7786a33448df64c226b884c21 100644
--- a/entity/Orderitem_entity/Orderitem_entity.aod
+++ b/entity/Orderitem_entity/Orderitem_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Orderitem_entity</name>
+  <title>Orderitem</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Orderitem_entity/documentation.adoc</documentation>
-  <title>Orderitem</title>
   <siblings>
     <element>Order_entity</element>
   </siblings>
@@ -247,7 +247,6 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <maximumDbRows v="0" />
       <hasDependentRecords v="true" />
       <conditionProcess>%aditoprj%/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
@@ -255,15 +254,7 @@
       <onDBInsert>%aditoprj%/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Orderitem_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>cb0f1bfa-92eb-4ee9-bb02-8ac0ef3f987d</name>
-          <tableName>SALESORDERITEM</tableName>
-          <primaryKey>SALESORDERITEMID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ASSIGNEDTO.value</name>
@@ -348,6 +339,15 @@
           <isLookupFilter v="true" />
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>cb0f1bfa-92eb-4ee9-bb02-8ac0ef3f987d</name>
+          <tableName>SALESORDERITEM</tableName>
+          <primaryKey>SALESORDERITEMID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js b/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js
index 5957207757012e79cce2cff0ed3316c780d85fec..6794f43bc98a7ee4099be70e2d1ce4215cccab26 100644
--- a/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js
@@ -5,5 +5,4 @@ import("system.vars");
 
 var cond = newWhereIfSet("SALESORDERITEM.SALESORDER_ID", "$param.OrderId_param")
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index 50afcd2e32295cc01c67e21a154d33520e99a7ce..3923d173bd75cf88133639410306b38ea7ac26f2 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -1,13 +1,15 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Organisation_entity</name>
+  <title>Company</title>
   <description>former Org</description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Organisation_entity/documentation.adoc</documentation>
-  <title>Company</title>
   <grantDeleteProcess>%aditoprj%/entity/Organisation_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Organisation_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/Organisation_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <afterUiInit>%aditoprj%/entity/Organisation_entity/afterUiInit.js</afterUiInit>
+  <afterSave>%aditoprj%/entity/Organisation_entity/afterSave.js</afterSave>
   <initFilterProcess>%aditoprj%/entity/Organisation_entity/initFilterProcess.js</initFilterProcess>
   <useFavorites v="true" />
   <iconId>VAADIN:BUILDING</iconId>
@@ -151,6 +153,12 @@
           <fieldName>Organisations</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>b64b29e6-59c5-4250-9bc7-b08c85976e7e</name>
+          <entityName>DistrictContact_entity</entityName>
+          <fieldName>Organisations</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
@@ -181,6 +189,18 @@
           <name>DuplicateCurrentContactId_param</name>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>MapViewAdditionalFeatures_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLat_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLon_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityConsumer>
@@ -208,6 +228,11 @@
       <consumer>Addresses</consumer>
       <state>AUTO</state>
       <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/address_id/displayValueProcess.js</displayValueProcess>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
     </entityField>
     <entityConsumer>
       <name>Communications</name>
@@ -263,7 +288,6 @@
     </entityConsumer>
     <entityProvider>
       <name>#PROVIDER</name>
-      <sortingField>NAME</sortingField>
       <dependencies>
         <entityDependency>
           <name>1a472ca0-4d27-453c-8de5-a046b86f22fb</name>
@@ -377,8 +401,8 @@
       <children>
         <entityParameter>
           <name>ObjectRowId_param</name>
-          <title></title>
           <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess>
+          <title></title>
         </entityParameter>
         <entityParameter>
           <name>ObjectType_param</name>
@@ -610,9 +634,9 @@
       <children>
         <entityParameter>
           <name>ExcludeOrganisationsByPersonId</name>
-          <title></title>
           <expose v="true" />
           <mandatory v="true" />
+          <title></title>
         </entityParameter>
         <entityParameter>
           <name>WithPrivate_param</name>
@@ -638,6 +662,18 @@
           <name>DuplicateCurrentContactId_param</name>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>MapViewAdditionalFeatures_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLat_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLon_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityParameter>
@@ -697,6 +733,18 @@
           <name>DuplicateCurrentContactId_param</name>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>MapViewAdditionalFeatures_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLat_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLon_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityParameter>
@@ -918,6 +966,22 @@
       <title>Serial Actions</title>
       <iconId>NEON:GROUP_APPOINTMENT</iconId>
       <children>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
         <entityActionField>
           <name>addToCampaignFromTable</name>
           <title>Add to Campaign</title>
@@ -1030,6 +1094,18 @@
           <name>ExcludeOrganisationsByPersonId</name>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>MapViewAdditionalFeatures_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLat_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLon_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityParameter>
@@ -1054,6 +1130,8 @@
           <name>IntegrateSelectedIntoCurrentAction</name>
           <title>Integrate selected into current contact</title>
           <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
           <isSelectionAction v="true" />
           <iconId>NEON:IMPORT</iconId>
           <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/stateProcess.js</stateProcess>
@@ -1062,6 +1140,8 @@
           <name>IntegrateCurrentIntoSelectedAction</name>
           <title>Integrate current into selected contact</title>
           <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/onActionProcess.js</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
           <isSelectionAction v="true" />
           <iconId>NEON:EXPORT</iconId>
           <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/stateProcess.js</stateProcess>
@@ -1070,6 +1150,8 @@
           <name>IgnoreDuplicate</name>
           <title>Ignore Duplicate</title>
           <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignoreduplicate/onActionProcess.js</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
           <isSelectionAction v="true" />
           <iconId>VAADIN:CLOSE</iconId>
           <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignoreduplicate/stateProcess.js</stateProcess>
@@ -1078,6 +1160,7 @@
           <name>IgnoreWholeCluster</name>
           <title>Ignore whole Cluster</title>
           <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignorewholecluster/onActionProcess.js</onActionProcess>
+          <isObjectAction v="false" />
           <iconId>VAADIN:CLOSE</iconId>
           <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignorewholecluster/stateProcess.js</stateProcess>
         </entityActionField>
@@ -1106,8 +1189,8 @@
         </entityParameter>
         <entityParameter>
           <name>DuplicateCurrentContactId_param</name>
-          <title></title>
           <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/duplicatecurrentcontactid_param/valueProcess.js</valueProcess>
+          <title></title>
         </entityParameter>
         <entityParameter>
           <name>OnlyShowContactIds_param</name>
@@ -1139,13 +1222,6 @@
       <color>$priority-high-color</color>
       <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/commrestrictions_active/displayValueProcess.js</displayValueProcess>
     </entityField>
-    <entityActionField>
-      <name>startWorkflow</name>
-      <title>Start workflow</title>
-      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/startworkflow/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:PLAY</iconId>
-      <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/startworkflow/stateProcess.js</stateProcess>
-    </entityActionField>
     <entityField>
       <name>STANDARD_ADDRESS</name>
     </entityField>
@@ -1163,26 +1239,6 @@
       <name>ORGANISATION_REPORT_DATA</name>
       <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/organisation_report_data/valueProcess.js</valueProcess>
     </entityField>
-    <entityActionField>
-      <name>newVisitRecommendation</name>
-      <title>New Visit Recommendation</title>
-      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/newvisitrecommendation/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:CALENDAR</iconId>
-      <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/newvisitrecommendation/stateProcess.js</stateProcess>
-    </entityActionField>
-    <entityActionField>
-      <name>newVisitPlanEntry</name>
-      <title>New Weekplanentry</title>
-      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/newvisitplanentry/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:CAR</iconId>
-      <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/newvisitplanentry/stateProcess.js</stateProcess>
-    </entityActionField>
-    <entityActionField>
-      <name>openLocation</name>
-      <title>Open Location</title>
-      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/openlocation/onActionProcess.js</onActionProcess>
-      <iconId>NEON:TACKED</iconId>
-    </entityActionField>
     <entityConsumer>
       <name>Classifications</name>
       <refreshParent v="true" />
@@ -1277,18 +1333,20 @@
           <name>WithPrivate_param</name>
           <expose v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>MapViewAdditionalFeatures_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLat_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLon_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
-    <entityActionField>
-      <name>openAroundLocation</name>
-      <documentation>%aditoprj%/entity/Organisation_entity/entityfields/openaroundlocation/documentation.adoc</documentation>
-      <title>Radius Search</title>
-      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/openaroundlocation/onActionProcess.js</onActionProcess>
-      <isSelectionAction v="true" />
-      <iconId>VAADIN:LOCATION_ARROW_CIRCLE_O</iconId>
-      <state>DISABLED</state>
-      <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/openaroundlocation/stateProcess.js</stateProcess>
-    </entityActionField>
     <entityField>
       <name>STANDARD_LAT</name>
     </entityField>
@@ -1344,6 +1402,18 @@
           <name>OrganisationType_param</name>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>MapViewAdditionalFeatures_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLat_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLon_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityConsumer>
@@ -1396,8 +1466,57 @@
           <name>OnlyOwnSupervised_param</name>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>MapViewAdditionalFeatures_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLon_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>MapViewCenterLat_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
+    <entityActionField>
+      <name>startWorkflow</name>
+      <title>Start workflow</title>
+      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/startworkflow/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:PLAY</iconId>
+      <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/startworkflow/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>newVisitRecommendation</name>
+      <title>New Visit Recommendation</title>
+      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/newvisitrecommendation/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CALENDAR</iconId>
+      <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/newvisitrecommendation/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>newVisitPlanEntry</name>
+      <title>New Weekplanentry</title>
+      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/newvisitplanentry/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CAR</iconId>
+      <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/newvisitplanentry/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>openLocation</name>
+      <title>Open Location</title>
+      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/openlocation/onActionProcess.js</onActionProcess>
+      <iconId>NEON:TACKED</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>openAroundLocation</name>
+      <documentation>%aditoprj%/entity/Organisation_entity/entityfields/openaroundlocation/documentation.adoc</documentation>
+      <title>Radius Search</title>
+      <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/openaroundlocation/onActionProcess.js</onActionProcess>
+      <isSelectionAction v="true" />
+      <iconId>VAADIN:LOCATION_ARROW_CIRCLE_O</iconId>
+      <state>DISABLED</state>
+      <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/openaroundlocation/stateProcess.js</stateProcess>
+    </entityActionField>
     <entityActionGroup>
       <name>orgReportDispatch</name>
       <children>
@@ -1429,47 +1548,60 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityParameter>
+      <name>OnlyActive_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>MAP_CONFIG</name>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/map_config/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>MAP_FEATURE_COLLECTION</name>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/map_feature_collection/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>MapViewAdditionalFeatures_param</name>
+      <expose v="true" />
+      <documentation>%aditoprj%/entity/Organisation_entity/entityfields/mapviewadditionalfeatures_param/documentation.adoc</documentation>
+    </entityParameter>
+    <entityParameter>
+      <name>MapViewCenterLat_param</name>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/mapviewcenterlat_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+      <documentation>%aditoprj%/entity/Organisation_entity/entityfields/mapviewcenterlat_param/documentation.adoc</documentation>
+    </entityParameter>
+    <entityParameter>
+      <name>MapViewCenterLon_param</name>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/mapviewcenterlon_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+      <documentation>%aditoprj%/entity/Organisation_entity/entityfields/mapviewcenterlon_param/documentation.adoc</documentation>
+    </entityParameter>
+    <entityConsumer>
+      <name>DistrictContacts</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>DistrictContact_entity</entityName>
+        <fieldName>DistrictContacts</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>currentOrganisationId_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/districtcontacts/children/currentorganisationid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBInsert>%aditoprj%/entity/Organisation_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Organisation_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Organisation_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>f63d7d1a-118a-4cc1-9963-495f57468f8d</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>3cca93ac-fb3b-4dae-933e-0ee1e8c84260</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>c0bcece8-306a-47ac-a406-7e42014fa4d7</name>
-          <tableName>ADDRESS</tableName>
-          <primaryKey>ADDRESSID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>c00213e6-4f5d-41df-a5f3-fd751a46e94b</name>
-          <tableName>CLASSIFICATIONSTORAGE</tableName>
-          <primaryKey>CLASSIFICATIONSTORAGEID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ADDRESS_ID.value</name>
@@ -1663,12 +1795,44 @@
           <recordfield>ADDRESS.LON</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>f63d7d1a-118a-4cc1-9963-495f57468f8d</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>3cca93ac-fb3b-4dae-933e-0ee1e8c84260</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>c0bcece8-306a-47ac-a406-7e42014fa4d7</name>
+          <tableName>ADDRESS</tableName>
+          <primaryKey>ADDRESSID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>c00213e6-4f5d-41df-a5f3-fd751a46e94b</name>
+          <tableName>CLASSIFICATIONSTORAGE</tableName>
+          <primaryKey>CLASSIFICATIONSTORAGEID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtensionSet>
           <name>Attribute_filter</name>
           <filterFieldsProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess>
           <filterValuesProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess>
           <filterConditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess>
+          <isGroupable v="true" />
+          <groupQueryProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js</groupQueryProcess>
           <filtertype>BASIC</filtertype>
         </filterExtensionSet>
         <filterExtensionSet>
@@ -1697,6 +1861,14 @@
           <filterConditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/favorites_filter/filterConditionProcess.js</filterConditionProcess>
           <filtertype>BASIC</filtertype>
         </filterExtension>
+        <filterExtension>
+          <name>ResponsibleAssignment</name>
+          <title>Supervisor assignment</title>
+          <contentType>TEXT</contentType>
+          <filterValuesProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterValuesProcess.js</filterValuesProcess>
+          <filterConditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterConditionProcess.js</filterConditionProcess>
+          <filtertype>EXTENDED</filtertype>
+        </filterExtension>
       </filterExtensions>
     </dbRecordContainer>
     <indexRecordContainer>
@@ -1798,6 +1970,9 @@
           <indexFieldType>ADDRESS</indexFieldType>
           <isGlobalSearchField v="false" />
         </indexRecordFieldMapping>
+        <indexRecordFieldMapping>
+          <name>PICTURE.value</name>
+        </indexRecordFieldMapping>
       </indexFieldMappings>
     </indexRecordContainer>
   </recordContainers>
diff --git a/entity/Organisation_entity/afterSave.js b/entity/Organisation_entity/afterSave.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e40d8d824716c3690bb87b0f774ea3895246b3d
--- /dev/null
+++ b/entity/Organisation_entity/afterSave.js
@@ -0,0 +1,11 @@
+import("system.logging");
+import("system.vars");
+import("District_lib");
+import("system.neon");
+
+if (vars.get("$local.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    //Assign this new organisation to all according districts with auto assignment is true
+    //2nd parameter "undefined" means, that the current user is determined in the function
+    DistrictUtils.assignDistrictOnServer([], undefined, vars.get("$local.entitydata")["CONTACTID"])
+}
\ No newline at end of file
diff --git a/entity/Organisation_entity/contentDescriptionProcess.js b/entity/Organisation_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b07a72fe7cc543e3bedc5d5604f12f28769ffb6b
--- /dev/null
+++ b/entity/Organisation_entity/contentDescriptionProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.datetime");
+import("system.vars");
+import("system.result");
+result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy")));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/districtcontacts/children/currentorganisationid_param/valueProcess.js b/entity/Organisation_entity/entityfields/districtcontacts/children/currentorganisationid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..70a1c0fcc1293fa4bf37109294829055704eeaea
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/districtcontacts/children/currentorganisationid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.CONTACTID"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js b/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js
index 1f3a9e3ddfca04ca5911fd70b734115ff1f60291..6bb5f4cde7193d3a4171b6d613cbfb0bfee097c8 100644
--- a/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js
+++ b/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js
@@ -16,5 +16,8 @@ if(mergeSuccess)
     if(currentContactId == null)
         currentContactId = "";
     DuplicateScannerUtils.createMergeSuccessActivity(sourceContactId, targetContactId, currentContactId, "Organisation");
-    neon.refreshAll();
+    //neon.refresh() with no fields will refresh the current image (and all sub images) but NOT the preview. neon.refreshAll() would refresh both,
+    //why it would lead to an error because it's trying to load the already opened preview of the duplicateContact which just got deleted 
+    //and does not exist any more which results in an exception
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/onActionProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/stateProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/titleProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/onActionProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/stateProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/titleProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/map_config/valueProcess.js b/entity/Organisation_entity/entityfields/map_config/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b5c60bd2e238e1e5e3478f33dffe0becdb6a71aa
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/map_config/valueProcess.js
@@ -0,0 +1,56 @@
+import("system.translate");
+import("system.vars");
+import("system.util");
+import("system.fileIO");
+import("system.result");
+
+/* !WARNING! This openstreetmap TileLayer Server is only used for demonstration purposes and to show how this map template configuration works.
+ * From the tile-usage-policy: 
+ * "Heavy use (e.g. distributing an app that uses tiles from openstreetmap.org) is forbidden without prior permission"
+ * See more about the openstreetmap policy here:
+ * https://operations.osmfoundation.org/policies/tiles/
+ *
+ * This means you have to change the following tile source for using the MapViewTemplate in any real scenario (Dev-Serers, Test-Servers, 
+ * Production-Servers and so on).
+ */
+var licenseCaption = translate.text("License");
+var contributionCaption = translate.text("Contribute map data");
+var selectedTile = {
+    title: "Open Street Map",
+    url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
+    attribution: translate.withArguments("Map data © %0 contributors | %1 | %2", [
+        "<a href=\"https://openstreetmap.org\">OpenStreetMap</a>", 
+        "<a href=\"https://www.openstreetmap.org/copyright\">" + licenseCaption + "</a>", 
+        "<a href=\"https://www.openstreetmap.org/fixthemap\">" + contributionCaption + "</a>"])
+};
+
+
+var config = {
+    startingCenterPosition : {
+        lat: parseFloat(vars.get("$param.MapViewCenterLat_param")),
+        lon: parseFloat(vars.get("$param.MapViewCenterLon_param")),
+        zoomLevel: 5,
+        //but let's try to locate the users posistion for a better view
+        autoLocate: true
+    },
+    boundaries: {
+        minZoom: 0,
+        maxZoom: 20
+    },
+    tiles: [
+        /*add more tile layer sources here*/
+    ]
+};
+
+//when opening the AroundLocation view we do want to have the source organisation as center, so let's not overwrite the starting center position by 
+//looking for the users current location
+if (vars.get("$param.MapViewAdditionalFeatures_param"))
+{
+   config.startingCenterPosition.zoomLevel = 10;//max amount of km is 100, so let's zoom in
+   config.startingCenterPosition.autoLocate = false;
+}
+
+config.tiles.push(selectedTile);//the last tile layer will be always selected by leaflet, so let's push it here
+
+var res = JSON.stringify(config);
+result.string(res);
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/map_feature_collection/valueProcess.js b/entity/Organisation_entity/entityfields/map_feature_collection/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..609c09148d65619d0ba26d0d72146dea6c533c80
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/map_feature_collection/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+var additionalMapFeatures = vars.get("$param.MapViewAdditionalFeatures_param");
+
+if (additionalMapFeatures)//additionalMapFeatures is already a stringified object
+    result.string("[" + additionalMapFeatures + "]");
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/mapviewadditionalfeatures_param/documentation.adoc b/entity/Organisation_entity/entityfields/mapviewadditionalfeatures_param/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..ec5cbf7e00db1b0c02945e69debc6b60975bb6ad
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/mapviewadditionalfeatures_param/documentation.adoc
@@ -0,0 +1,5 @@
+You may provide a `GeoJSON` `FeatureCollection` that will be display in the `MapViewTemplate` of the `OrganisationFilter_view` here.
+This is usefull for the "AroundLocation"-Search. 
+
+If this param is passed the map view will not autolocate your position and center the view based on the parameters `MapViewCenterLat_param` and 
+`MapViewCenterLon_param`
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/mapviewcenterlat_param/documentation.adoc b/entity/Organisation_entity/entityfields/mapviewcenterlat_param/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..f92fe01e05c83b2494bda29e055703b4c0361734
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/mapviewcenterlat_param/documentation.adoc
@@ -0,0 +1,2 @@
+Pass a valid default decimal (or string-decimal) latitude-value to set the default center position of the Map-view which is based on the parameters 
+`MapViewCenterLat_param` and `MapViewCenterLon_param`.
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/mapviewcenterlat_param/valueProcess.js b/entity/Organisation_entity/entityfields/mapviewcenterlat_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..75f0dea1eb7137a40bac5eccca2c2e06bcc753d8
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/mapviewcenterlat_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string("50.989791");
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/mapviewcenterlon_param/documentation.adoc b/entity/Organisation_entity/entityfields/mapviewcenterlon_param/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..ede2490bd8ba1bca620a1802bebb2d0c441748fc
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/mapviewcenterlon_param/documentation.adoc
@@ -0,0 +1,2 @@
+Pass a valid default decimal (or string-decimal) longitude-value to set the default center position of the Map-view which is based on the parameters 
+`MapViewCenterLat_param` and `MapViewCenterLon_param`.
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/mapviewcenterlon_param/valueProcess.js b/entity/Organisation_entity/entityfields/mapviewcenterlon_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2cdca40931a3a2e532a2d0d1d13bc70c7d955238
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/mapviewcenterlon_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string("4.772377");
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/newvisitplanentry/onActionProcess.js b/entity/Organisation_entity/entityfields/newvisitplanentry/onActionProcess.js
index a4b75c65374cd0c2b158597b4afc565669916962..3c74f21974a25e4f2437b5721c8cc56fe1a93548 100644
--- a/entity/Organisation_entity/entityfields/newvisitplanentry/onActionProcess.js
+++ b/entity/Organisation_entity/entityfields/newvisitplanentry/onActionProcess.js
@@ -4,6 +4,7 @@ import("system.vars");
 var params = {};
 
 params["NoVisitPlanEmployeeWeek_param"] = true;
+params["ContactId_param"] = vars.get("$field.CONTACTID");
 params["OrganisationId_param"] = vars.get("$field.CONTACTID");
 
 neon.openContext("VisitPlanEntry", "VisitPlanEntryEdit_view", null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/openadminview/onActionProcess.js b/entity/Organisation_entity/entityfields/openadminview/onActionProcess.js
index 8a1b220f1e40e5d36f51e6d5afec394b6d9f8b52..dead60a3cae8657e02ea12b39ca0226f6a427755 100644
--- a/entity/Organisation_entity/entityfields/openadminview/onActionProcess.js
+++ b/entity/Organisation_entity/entityfields/openadminview/onActionProcess.js
@@ -4,9 +4,9 @@ import("Context_lib");
 AdminViewUtils.open("CONTACTID", [
     ["ORGANISATION_ID", vars.get("$field.ORGANISATION_ID")],
     ["ADDRESS_ID", vars.get("$field.ADDRESS_ID")],
-    ["DATE_NEW", vars.get("$field.DATE_NEW")],
-    ["DATE_EDIT", vars.get("$field.DATE_EDIT")],
-    ["DATE_NEW_CONTACT", vars.get("$field.DATE_NEW_CONTACT")],
+    ["DATE_NEW", vars.get("$field.DATE_NEW"), "DATE"],
+    ["DATE_EDIT", vars.get("$field.DATE_EDIT"), "DATE"],
+    ["DATE_NEW_CONTACT", vars.get("$field.DATE_NEW_CONTACT"), "DATE"],
     ["USER_NEW", vars.get("$field.USER_NEW")],
     ["USER_EDIT", vars.get("$field.USER_EDIT")],
     ["USER_NEW_CONTACT", vars.get("$field.USER_NEW_CONTACT")],
diff --git a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js
index 7ef4fdefa4f6e4dcb25f9b97086b5a1e943e0dda..284a5df816a268ac7887194caf4624a6579541ec 100644
--- a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js
@@ -1,3 +1,4 @@
+import("KeywordRegistry_basic");
 import("Employee_lib");
 import("AttributeRegistry_basic");
 import("Attribute_lib");
@@ -40,7 +41,9 @@ if (vars.exists("$param.ExcludedContactIds_param") && vars.get("$param.ExcludedC
     var excludedContacts = JSON.parse(vars.getString("$param.ExcludedContactIds_param"));
     cond.andIfSet("CONTACT.CONTACTID", excludedContacts, SqlBuilder.NOT_IN())
 }
-
+if (vars.exists("$param.OnlyActive_param") && vars.get("$param.OnlyActive_param"))
+    cond.and("CONTACT.STATUS", $KeywordRegistry.contactStatus$active())
+    
 cond.andIfSet("ORGANISATION.KIND", "$param.OrganisationType_param");
 cond.andIfSet("CONTACT.CONTACTID", onlyShowContactIds, SqlBuilder.IN())
 
@@ -55,5 +58,4 @@ if (vars.exists("$param.OnlyOwnSupervised_param") && vars.get("$param.OnlyOwnSup
         SqlBuilder.EXISTS()
     );
 }
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..03fd2fb9213fbcb64981815207d65e37e1c00e3e
--- /dev/null
+++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("AttributeFilter_lib");
+
+var sqlCond = AttributeFilterExtensionMaker.makeFilterGroupQuery("ORGANISATION \n\
+    join CONTACT on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null)\n\
+    left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)\n\
+    left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID)");
+result.string(sqlCond);
\ No newline at end of file
diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js
index a4e9edc5b2c7f90da86619beb5d4d968bb0a392b..bffcdb6a1e0be8fb6cc55de23fc79701ba3d660d 100644
--- a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js
+++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js
@@ -18,7 +18,7 @@ var sql = newSelect(isCount ? "1" : columns)
                     .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATION.OBJECT_ROWID = CONTACT.CONTACTID")
                         .and("CLASSIFICATION.OBJECT_TYPE", "Organisation")
                         .and("CLASSIFICATION.CLASSIFICATIONTYPE_ID", classificationId))
-                    .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID")
+                    .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCOREID = CLASSIFICATION.VALUE")
                     .whereIfSet(condition.trim())
                     .groupBy(groupedColumns);
 
diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterConditionProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterConditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dec63bfd984d6224a90a64f10a70daaaa670f011
--- /dev/null
+++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterConditionProcess.js
@@ -0,0 +1,38 @@
+import("Employee_lib");
+import("KeywordRegistry_basic");
+import("Sql_lib");
+import("system.vars");
+import("system.result");
+
+var operator = vars.get("$local.operator");
+var rawvalue = vars.get("$local.rawvalue");
+var operator2 = vars.get("$local.operator2");
+var sqlCond = "";
+
+rawvalue = (rawvalue == "true");
+
+
+if(operator == "1" && rawvalue ||  operator == "2" && !rawvalue )
+    operator2 = SqlBuilder.IN();
+else if(operator == "1" && !rawvalue ||  operator == "2" && rawvalue)
+    operator2 = SqlBuilder.NOT_IN();
+else 
+    sqlCond = "1=1";
+
+
+
+if (sqlCond == "")
+    sqlCond = new SqlBuilder().where("CONTACT.CONTACTID", 
+            newSelect("DISTRICTCONTACT.CONTACT_ID")
+            .from("DISTRICTCONTACT")
+            .where("DISTRICTCONTACT.ADVISER_CONTACT_ID", EmployeeUtils.getCurrentContactId())
+            .and(
+                newWhere(
+                    newWhere("current_date >= cast(DISTRICTCONTACT.VALID_FROM as DATE)")
+                    .and("current_date <= cast(DISTRICTCONTACT.VALID_UNTIL as DATE)"))
+                .or(newWhere("current_date >= cast(DISTRICTCONTACT.VALID_FROM as DATE)")
+                    .and("DISTRICTCONTACT.VALID_UNTIL is null")))
+            .and("DISTRICTCONTACT.STATUS", $KeywordRegistry.contactStatus$active()), operator2).toString();
+            
+
+result.string(sqlCond);
\ No newline at end of file
diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterValuesProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterValuesProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4462144da5638267f7c76cce0c779305ae80c089
--- /dev/null
+++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/responsibleassignment/filterValuesProcess.js
@@ -0,0 +1,4 @@
+import("system.translate");
+import("system.result");
+
+result.object([["true", translate.text("Yes")], ["false", translate.text("No")]]);
\ No newline at end of file
diff --git a/entity/Organisation_entity/recordcontainers/db/onDBDelete.js b/entity/Organisation_entity/recordcontainers/db/onDBDelete.js
index 730c29c8f1984d5ebc75d045a5ee75779f13a204..00e50690d485216c4b4956f416b688ab433e68a8 100644
--- a/entity/Organisation_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Organisation_entity/recordcontainers/db/onDBDelete.js
@@ -16,5 +16,6 @@ newWhere("COMMUNICATION.CONTACT_ID", contactId).deleteData();
 newWhere("ADDRESS.CONTACT_ID", contactId).deleteData();
 newWhere("COMMRESTRICTION.CONTACT_ID", contactId).deleteData();
 newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", vars.get("$field.CONTACTID")).deleteData();
+newWhere("CLASSIFICATION.OBJECT_ROWID", vars.get("$field.CONTACTID")).deleteData();
 
 WorkflowSignalSender.deleted();
\ No newline at end of file
diff --git a/entity/Organisation_entity/recordcontainers/db/onDBInsert.js b/entity/Organisation_entity/recordcontainers/db/onDBInsert.js
index 434601a60b8df854ee2910909a9c22d187266dd9..60299cd7d4eda2ceed743571cec9cbda912ad318 100644
--- a/entity/Organisation_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Organisation_entity/recordcontainers/db/onDBInsert.js
@@ -1,13 +1,6 @@
 import("system.vars");
-import("Classification_lib");
 import("Workflow_lib");
 
-
-var uid = vars.get("$sys.uid");
-var contextname = vars.get("$sys.currentcontextname");
-
-ClassificationUtils.insertEmptyClassification(uid, contextname);
-
 //start the execution in afterOperatingState, because here the dataset is not yet inserted
 vars.set("$context.workflowQueue", {});
 WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/Organisation_entity/recordcontainers/db/onDBUpdate.js b/entity/Organisation_entity/recordcontainers/db/onDBUpdate.js
index 1f1a45acc4ec6c3e34db3bdba54fdfab62ad32ca..9f0337793c84207f61013809345f829d1f874671 100644
--- a/entity/Organisation_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Organisation_entity/recordcontainers/db/onDBUpdate.js
@@ -1,3 +1,4 @@
+import("Employee_lib");
 import("Sql_lib");
 import("system.vars");
 import("Organisation_lib");
diff --git a/entity/Organisation_entity/recordcontainers/index/query.js b/entity/Organisation_entity/recordcontainers/index/query.js
index ee0f4bb6cea37016e4a159e5b65aac515a7991ad..c2b15cd1890eac332871fee390b5c4137359adec 100644
--- a/entity/Organisation_entity/recordcontainers/index/query.js
+++ b/entity/Organisation_entity/recordcontainers/index/query.js
@@ -39,10 +39,10 @@ var querySelect = newSelect([
         "ADDRESS.CITY",
         "standardEmail.ADDR",
         "standardPhone.ADDR",
-        sqlHelper.conconcatWithSeparatorcat([sqlHelper.concatWithSeparator(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO"])
+        sqlHelper.concatWithSeparator([sqlHelper.concatWithSeparator(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO"])
             ,sqlHelper.concatWithSeparator(["standardAddress.COUNTRY", "standardAddress.ZIP", "standardAddress.CITY"])
         ], " - ")
-    ])
+    , "ORGANISATION.PICTURE"])
     .from("ORGANISATION")
     .join("CONTACT", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID and CONTACT.PERSON_ID is null")
     .leftJoin("ADDRESS", "standardAddress.ADDRESSID = CONTACT.ADDRESS_ID", "standardAddress")
diff --git a/entity/PermissionAction_entity/PermissionAction_entity.aod b/entity/PermissionAction_entity/PermissionAction_entity.aod
index ff1497fcaa30b1b0ccc00ddf5a03bffa290d137f..dc33aff6f6f00543fe24e16daee87b59094b507e 100644
--- a/entity/PermissionAction_entity/PermissionAction_entity.aod
+++ b/entity/PermissionAction_entity/PermissionAction_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>PermissionAction_entity</name>
+  <title>Action</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/PermissionAction_entity/documentation.adoc</documentation>
-  <title>Action</title>
   <onValidation>%aditoprj%/entity/PermissionAction_entity/onValidation.js</onValidation>
   <titlePlural>Actions</titlePlural>
   <recordContainer>jDito</recordContainer>
diff --git a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod
index 6fd9cfebf50492e7de30e44e050a9e60450778b5..c21dd398145e59c0b1391486cfd18f2540199db6 100644
--- a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod
+++ b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>PermissionCalendar_entity</name>
+  <title>Calendar Permission</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/PermissionCalendar_entity/documentation.adoc</documentation>
-  <title>Calendar Permission</title>
   <grantCreate v="true" />
   <grantDelete v="true" />
   <contentTitleProcess>%aditoprj%/entity/PermissionCalendar_entity/contentTitleProcess.js</contentTitleProcess>
@@ -247,17 +247,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>permissionCalendarDb</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/PermissionCalendar_entity/recordcontainers/permissioncalendardb/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>6df4271e-d95f-4526-bdcc-7f127f0f1b31</name>
-          <tableName>AB_PERMISSIONCALENDAR</tableName>
-          <primaryKey>AB_PERMISSIONCALENDARID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>AB_PERMISSIONCALENDARID.value</name>
@@ -308,6 +299,15 @@
           <recordfield>AB_PERMISSIONCALENDAR.PERMISSIONDEALER_ROWID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>6df4271e-d95f-4526-bdcc-7f127f0f1b31</name>
+          <tableName>AB_PERMISSIONCALENDAR</tableName>
+          <primaryKey>AB_PERMISSIONCALENDARID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/PermissionDetail_entity/PermissionDetail_entity.aod b/entity/PermissionDetail_entity/PermissionDetail_entity.aod
index e18801ffb9cab3450e4dc8c5dbe77069c76add1b..39f346f5c668b7003d1499b74960e4e98842687b 100644
--- a/entity/PermissionDetail_entity/PermissionDetail_entity.aod
+++ b/entity/PermissionDetail_entity/PermissionDetail_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>PermissionDetail_entity</name>
+  <title>Permission Detail</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/PermissionDetail_entity/documentation.adoc</documentation>
-  <title>Permission Detail</title>
   <siblings>
     <element>PermissionOverview_entity</element>
   </siblings>
@@ -110,7 +110,7 @@
       </dependencies>
     </entityProvider>
     <entityParameter>
-      <name>RoleTitle_param</name>
+      <name>RoleName_param</name>
       <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
@@ -133,7 +133,7 @@
       </dependency>
     </entityConsumer>
     <entityParameter>
-      <name>EntityTitle_param</name>
+      <name>EntityId_param</name>
       <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
diff --git a/entity/PermissionDetail_entity/contentTitleProcess.js b/entity/PermissionDetail_entity/contentTitleProcess.js
index 327e3f48bfe87797eb4f122b038302ea716de517..4ab83eef7bd698f6e11166a888ecbf502ba578bb 100644
--- a/entity/PermissionDetail_entity/contentTitleProcess.js
+++ b/entity/PermissionDetail_entity/contentTitleProcess.js
@@ -6,18 +6,21 @@ import("system.result");
 
 var res = "";
 var entityName = vars.get("$field.ENTITY");
+var roleName = vars.get("$field.ROLE");
+var accesstype = vars.get("$field.ACCESSTYPE");
+var cond = vars.get("$field.CONDITION");
 var emptyCond = PermissionUtil.getEmptyCondString(entityName);
 
-switch (vars.get("$field.ACCESSTYPE")) {
+switch (accesstype) {
     case "E":
-        if (vars.get("$param.RoleTitle_param") && vars.get("$field.ENTITY") != "") {
-            res += vars.get("$field.ENTITY");
-        } else if (vars.get("$param.EntityTitle_param") && vars.get("$field.ROLE") != "") {
-            res += vars.get("$field.ROLE");
-        } else if (vars.get("$field.ROLE") != "") {
-            res += vars.get("$field.ROLE");
-        } else if (vars.get("$field.ENTITY") != "") {
-            res += vars.get("$field.ENTITY");
+        if (vars.get("$param.RoleName_param") && entityName != "") {
+            res += entityName;
+        } else if (vars.get("$param.EntityId_param") && roleName != "") {
+            res += roleName;
+        } else if (roleName != "") {
+            res += roleName;
+        } else if (entityName != "") {
+            res += entityName;
         }
         break;
     case "R":
@@ -31,8 +34,8 @@ switch (vars.get("$field.ACCESSTYPE")) {
         break;
 }
 
-if (vars.get("$field.ACCESSTYPE") != "E") {
-    if (vars.get("$field.CONDITION") != emptyCond && vars.get("$field.CONDITION") != "") {
+if (accesstype != "E") {
+    if (cond != emptyCond && cond != "") {
         res += " - conditional";
     } else {
         res += " - default";
diff --git a/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js b/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js
index 366a3b45d7d89260fedc3f340331ff5d67f22f55..a559d0e548e50f9100892d4f684a222c0477f25d 100644
--- a/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js
@@ -10,7 +10,11 @@ var roleName = vars.get("$field.ROLE");
 var entity = vars.get("$field.ENTITY");
 var accesstype = vars.get("$field.ACCESSTYPE");
 
-if (operatingState == neon.OPERATINGSTATE_SEARCH || operatingState == neon.OPERATINGSTATE_VIEW) {
+if (
+    operatingState == neon.OPERATINGSTATE_SEARCH ||
+    operatingState == neon.OPERATINGSTATE_VIEW ||
+    operatingState == neon.OPERATINGSTATE_EDIT
+    ) {
     switch (accesstype) {
         case "E":
             result.string(translate.text("Entity"));
@@ -23,7 +27,7 @@ if (operatingState == neon.OPERATINGSTATE_SEARCH || operatingState == neon.OPERA
             break;
     }
 } else {
-    // editing/creating a new permission
+    // creating a new permission
     // if there is no permission set for a given role-entity-combination or only one with condtype 0 -> permission has to be Entity
     // otherwise Record
     // if $field.FIELD is filled, then its a permission on Field access level
diff --git a/entity/PermissionDetail_entity/entityfields/entity/displayValueProcess.js b/entity/PermissionDetail_entity/entityfields/entity/displayValueProcess.js
index d6e5c24e75eed9d70d14526054b11a129a22f83b..9af4d04f98f855a4ac508c84de3efe76fa26ecdc 100644
--- a/entity/PermissionDetail_entity/entityfields/entity/displayValueProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/entity/displayValueProcess.js
@@ -5,8 +5,8 @@ import("system.neon");
 var recordstate = vars.get("$sys.recordstate");
 var entity = "";
 
-if(vars.exists("$param.EntityTitle_param") && recordstate == neon.OPERATINGSTATE_NEW) {
-    entity = vars.get("$param.EntityTitle_param"); 
+if(vars.exists("$param.EntityId_param") && recordstate == neon.OPERATINGSTATE_NEW) {
+    entity = vars.get("$param.EntityId_param"); 
 } else {
     entity = vars.get("$field.ENTITY");
 }
diff --git a/entity/PermissionDetail_entity/entityfields/entity/stateProcess.js b/entity/PermissionDetail_entity/entityfields/entity/stateProcess.js
index 943bb0881702bf7d6a70344f64c3d99834e6834b..81377c2374ab5fb09010365597bd8ea59d280baf 100644
--- a/entity/PermissionDetail_entity/entityfields/entity/stateProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/entity/stateProcess.js
@@ -2,7 +2,7 @@ import("system.result");
 import("system.vars");
 import("system.neon");
 
-var entityTitle = vars.get("$param.EntityTitle_param");
+var entityTitle = vars.get("$param.EntityId_param");
 
 if (entityTitle != undefined && entityTitle != null && entityTitle != "") {
     result.string(neon.COMPONENTSTATE_READONLY);
diff --git a/entity/PermissionDetail_entity/entityfields/entity/valueProcess.js b/entity/PermissionDetail_entity/entityfields/entity/valueProcess.js
index d6e5c24e75eed9d70d14526054b11a129a22f83b..9af4d04f98f855a4ac508c84de3efe76fa26ecdc 100644
--- a/entity/PermissionDetail_entity/entityfields/entity/valueProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/entity/valueProcess.js
@@ -5,8 +5,8 @@ import("system.neon");
 var recordstate = vars.get("$sys.recordstate");
 var entity = "";
 
-if(vars.exists("$param.EntityTitle_param") && recordstate == neon.OPERATINGSTATE_NEW) {
-    entity = vars.get("$param.EntityTitle_param"); 
+if(vars.exists("$param.EntityId_param") && recordstate == neon.OPERATINGSTATE_NEW) {
+    entity = vars.get("$param.EntityId_param"); 
 } else {
     entity = vars.get("$field.ENTITY");
 }
diff --git a/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js b/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js
index 531be41df5558d08f05b6f5ff71d5966d69ac31e..7b6b21e95324e385275e8450f172b15dd6092b52 100644
--- a/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/field/dropDownProcess.js
@@ -9,7 +9,7 @@ if (entityTitle != undefined && entityTitle != null && entityTitle != "") {
 
     for (var field in entityStructure.fields) { 
         field = entityStructure.fields[field];
-        if (field.usePermissions == true) {
+        if (field.usePermissions == true && field.fieldType != "ACTION") {
             var name = field.name;
             var title = field.title;
             if (title != undefined && title != null && title != "") {
diff --git a/entity/PermissionDetail_entity/entityfields/role/displayValueProcess.js b/entity/PermissionDetail_entity/entityfields/role/displayValueProcess.js
index 2451eaf8b61ddfb81691af626c0e388f80b07cc1..dd624541a8d9d3bc51548ef10d3d536cd41f7f4a 100644
--- a/entity/PermissionDetail_entity/entityfields/role/displayValueProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/role/displayValueProcess.js
@@ -6,8 +6,8 @@ import("system.neon");
 var recordstate = vars.get("$sys.recordstate");
 var role = "";
 
-if (vars.exists("$param.RoleTitle_param") && recordstate == neon.OPERATINGSTATE_NEW) {
-    role = vars.get("$param.RoleTitle_param");
+if (vars.exists("$param.RoleName_param") && recordstate == neon.OPERATINGSTATE_NEW) {
+    role = vars.get("$param.RoleName_param");
 } else {
     role = vars.get("$this.value"); // this.value is already role title - role name gets converted to role title in contentProcess
 }
diff --git a/entity/PermissionDetail_entity/entityfields/role/stateProcess.js b/entity/PermissionDetail_entity/entityfields/role/stateProcess.js
index f5fec84a8c27d08002a0d7e50ab9aa4839078944..2a216166d092e128f9b3d2d8f544b6a8c8c7ddad 100644
--- a/entity/PermissionDetail_entity/entityfields/role/stateProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/role/stateProcess.js
@@ -2,7 +2,7 @@ import("system.result");
 import("system.vars");
 import("system.neon");
 
-var roleTitle = vars.get("$param.RoleTitle_param");
+var roleTitle = vars.get("$param.RoleName_param");
 
 if (roleTitle != undefined && roleTitle != null && roleTitle != "") {
     result.string(neon.COMPONENTSTATE_READONLY);
diff --git a/entity/PermissionDetail_entity/entityfields/role/valueProcess.js b/entity/PermissionDetail_entity/entityfields/role/valueProcess.js
index 83a1eb4e203e560ee9f4be26a3e1fed3886bbe8e..a085bf7a670d5f99bee99966ea01e134a3af6e8e 100644
--- a/entity/PermissionDetail_entity/entityfields/role/valueProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/role/valueProcess.js
@@ -6,8 +6,8 @@ import("system.neon");
 var recordstate = vars.get("$sys.recordstate");
 var role = "";
 
-if (vars.exists("$param.RoleTitle_param") && recordstate == neon.OPERATINGSTATE_NEW) {
-    role = vars.get("$param.RoleTitle_param");
+if (vars.exists("$param.RoleName_param") && recordstate == neon.OPERATINGSTATE_NEW) {
+    role = vars.get("$param.RoleName_param");
 } else {
     role = PermissionUtil.resolveRoleTitle(vars.get("$this.value"));
 }
diff --git a/entity/PermissionDetail_entity/iconIdProcess.js b/entity/PermissionDetail_entity/iconIdProcess.js
index a1d937f1db6a42a70921758a3cf759f1701701ad..a52fc0e601bfdae5f3d3676d6ca0ec9b3e9ceff1 100644
--- a/entity/PermissionDetail_entity/iconIdProcess.js
+++ b/entity/PermissionDetail_entity/iconIdProcess.js
@@ -3,9 +3,9 @@ import("system.result");
 
 switch (vars.get("$field.ACCESSTYPE")) {
     case "E":
-        if (vars.exists("$param.RoleTitle_param") && vars.get("$param.RoleTitle_param")) {
+        if (vars.exists("$param.RoleName_param") && vars.get("$param.RoleName_param")) {
             result.string("VAADIN:CONNECT");
-        } else if (vars.exists("$param.EntityTitle_param") && vars.get("$param.EntityTitle_param")) {
+        } else if (vars.exists("$param.EntityId_param") && vars.get("$param.EntityId_param")) {
             result.string("VAADIN:USER_CHECK");
         }
         break;
diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
index af8f904bf6b375b2f4ffd304214a0879a3f6d5cf..64e6cf96666fb928990c9c5b01372351b4050c4e 100644
--- a/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
@@ -52,10 +52,10 @@ else if (entitiesUsePermFlagSet.length > 0)
     querySelect.and(newWhereIfSet("ASYS_PERMISSIONSET.FIELD_ID", fieldsUsePermFlagSet, SqlBuilder.IN(), undefined, alias)
                               .or("FIELD_ID is NULL"));
     
-    if (vars.get("$param.RoleTitle_param")) {
-        querySelect.and("ASYS_PERMISSIONSET.ROLE_ID", "$param.RoleTitle_param")
-    } else if (vars.get("$param.EntityTitle_param")) {
-        querySelect.and("ASYS_PERMISSIONSET.ENTITY_ID", "$param.EntityTitle_param")
+    if (vars.get("$param.RoleName_param")) {
+        querySelect.and("ASYS_PERMISSIONSET.ROLE_ID", "$param.RoleName_param")
+    } else if (vars.get("$param.EntityId_param")) {
+        querySelect.and("ASYS_PERMISSIONSET.ENTITY_ID", "$param.EntityId_param")
     }
     
     // get all permissions which are already in db
@@ -206,7 +206,7 @@ function sortResultsByCondition(a, b) {
 }
 
 function sortResultByTitleAlphabetically(a, b) {
-    if (vars.get("$param.RoleTitle_param")) {
+    if (vars.get("$param.RoleName_param")) {
         if (a[1] < b[1]) return -1;
         if (a[1] > b[1]) return 1;
         return 0;
diff --git a/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod b/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod
index b2006b9d74a349c0fd3b27a7ceca370802b5c8d6..c611be5a933d6bf1bae16636842e63a4bbf2ae4e 100644
--- a/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod
+++ b/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>PermissionMetaData_entity</name>
+  <title>Permission</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/PermissionMetaData_entity/documentation.adoc</documentation>
   <icon>VAADIN:CONNECT</icon>
-  <title>Permission</title>
   <grantCreate v="false" />
   <grantUpdate v="false" />
   <grantDelete v="false" />
@@ -57,8 +57,8 @@
       </dependency>
       <children>
         <entityParameter>
-          <name>EntityTitle_param</name>
-          <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/permissionoverviews/children/entitytitle_param/valueProcess.js</valueProcess>
+          <name>EntityId_param</name>
+          <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/permissionoverviews/children/entityid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -72,8 +72,8 @@
       </dependency>
       <children>
         <entityParameter>
-          <name>EntityTitle_param</name>
-          <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/permissiondetails/children/entitytitle_param/valueProcess.js</valueProcess>
+          <name>EntityId_param</name>
+          <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/permissiondetails/children/entityid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/PermissionMetaData_entity/entityfields/permissionoverviews/children/entitytitle_param/valueProcess.js b/entity/PermissionMetaData_entity/entityfields/permissiondetails/children/entityid_param/valueProcess.js
similarity index 96%
rename from entity/PermissionMetaData_entity/entityfields/permissionoverviews/children/entitytitle_param/valueProcess.js
rename to entity/PermissionMetaData_entity/entityfields/permissiondetails/children/entityid_param/valueProcess.js
index 2c71e53a498b1ad3d5a0f915aacb4a836b81657f..16c85500b5355a72548030867e3d300661e9d4aa 100644
--- a/entity/PermissionMetaData_entity/entityfields/permissionoverviews/children/entitytitle_param/valueProcess.js
+++ b/entity/PermissionMetaData_entity/entityfields/permissiondetails/children/entityid_param/valueProcess.js
@@ -1,4 +1,4 @@
-import("system.vars");
-import("system.result");
-
+import("system.vars");
+import("system.result");
+
 result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/PermissionMetaData_entity/entityfields/permissionoverviews/children/entityid_param/valueProcess.js b/entity/PermissionMetaData_entity/entityfields/permissionoverviews/children/entityid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..16c85500b5355a72548030867e3d300661e9d4aa
--- /dev/null
+++ b/entity/PermissionMetaData_entity/entityfields/permissionoverviews/children/entityid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/PermissionOverview_entity/PermissionOverview_entity.aod b/entity/PermissionOverview_entity/PermissionOverview_entity.aod
index 70dfee92a9a3555047c7503b3f829a8ff6be0df7..16c9910812240e9439516b2d3daa4d37ca83f36c 100644
--- a/entity/PermissionOverview_entity/PermissionOverview_entity.aod
+++ b/entity/PermissionOverview_entity/PermissionOverview_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>PermissionOverview_entity</name>
+  <title>Permission Overview</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/PermissionOverview_entity/documentation.adoc</documentation>
-  <title>Permission Overview</title>
   <siblings>
     <element>PermissionDetail_entity</element>
   </siblings>
@@ -76,12 +76,12 @@
       </dependencies>
     </entityProvider>
     <entityParameter>
-      <name>RoleTitle_param</name>
+      <name>RoleName_param</name>
       <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
     <entityParameter>
-      <name>EntityTitle_param</name>
+      <name>EntityId_param</name>
       <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
diff --git a/entity/PermissionOverview_entity/entityfields/entity/titleProcess.js b/entity/PermissionOverview_entity/entityfields/entity/titleProcess.js
index 4dc06d1921917b2bf4fbad084eed77af247ba273..5973b8dab2349f1dc0538156f49abdb96e65740e 100644
--- a/entity/PermissionOverview_entity/entityfields/entity/titleProcess.js
+++ b/entity/PermissionOverview_entity/entityfields/entity/titleProcess.js
@@ -2,8 +2,8 @@ import("system.result");
 import("system.vars");
 import("system.translate");
 
-if (vars.exists("$param.RoleTitle_param") && vars.get("$param.RoleTitle_param")) {
+if (vars.exists("$param.RoleName_param") && vars.get("$param.RoleName_param")) {
     result.string(translate.text("Entity"));
-} else if (vars.exists("$param.EntityTitle_param") && vars.get("$param.EntityTitle_param")) {
+} else if (vars.exists("$param.EntityId_param") && vars.get("$param.EntityId_param")) {
     result.string(translate.text("Role"));
 }
\ No newline at end of file
diff --git a/entity/PermissionOverview_entity/iconIdProcess.js b/entity/PermissionOverview_entity/iconIdProcess.js
index df51be0f8f1a0e175ed2c78421459b46cc76721d..48a0dccaacf8b151c0628908159a1ad5899e4fa3 100644
--- a/entity/PermissionOverview_entity/iconIdProcess.js
+++ b/entity/PermissionOverview_entity/iconIdProcess.js
@@ -1,8 +1,8 @@
 import("system.vars");
 import("system.result");
 
-if (vars.exists("$param.RoleTitle_param") && vars.get("$param.RoleTitle_param")) {
+if (vars.exists("$param.RoleName_param") && vars.get("$param.RoleName_param")) {
     result.string("VAADIN:CONNECT");
-} else if (vars.exists("$param.EntityTitle_param") && vars.get("$param.EntityTitle_param")) {
+} else if (vars.exists("$param.EntityId_param") && vars.get("$param.EntityId_param")) {
     result.string("VAADIN:USER_CHECK");
 }
\ No newline at end of file
diff --git a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js
index 293144a2513456337e2e290106ec4020e21269a3..684c606088bd42f9ffb9db28f4f24b22afb32ac0 100644
--- a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js
@@ -10,7 +10,6 @@ var res = [];
 var roleName = "";
 var entityName = "";
 let alias = SqlUtils.getSystemAlias();
-var roleInternalEveryone = "INTERNAL_EVERYONE";
 
 var entitiesMetaData = project.getDataModels(project.DATAMODEL_KIND_ENTITY);
 var entitiesUsePermFlagSet = []; // array, which contains ids of entities with usePermission flag set
@@ -25,26 +24,13 @@ for each (let entityMetaData in entitiesMetaData) {
 var rolesOrEntitiesSelect = new SqlBuilder(alias).where();
 var rolesOrEntities = [];
 
-if (vars.exists("$param.RoleTitle_param") && vars.get("$param.RoleTitle_param")) {
-    roleName = vars.getString("$param.RoleTitle_param");
-    if (roleName == roleInternalEveryone) {
-        var counter = 0;
-        for each (let entityUsePermFlagSet in entitiesUsePermFlagSet) {
-            if (PermissionUtil.getNumberOfPermissions(entityUsePermFlagSet, roleName) == 0) {
-                // no permissions for INTERNAL_EVERYONE found -> display X's for all actions
-                res.push(["NOREALPERMINDB" + counter++, entityUsePermFlagSet, "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE"]);
-            }
-        }
-    }
+if (vars.exists("$param.RoleName_param") && vars.get("$param.RoleName_param")) {
+    roleName = vars.getString("$param.RoleName_param");
     rolesOrEntitiesSelect.select("distinct ASYS_PERMISSIONSET.ENTITY_ID")
         .from("ASYS_PERMISSIONSET")
         .and("ASYS_PERMISSIONSET.ROLE_ID", roleName);
-} else if (vars.exists("$param.EntityTitle_param") && vars.get("$param.EntityTitle_param")) {
-    entityName = vars.getString("$param.EntityTitle_param");
-    if (PermissionUtil.getNumberOfPermissions(entityName, roleInternalEveryone) == 0) {
-        // no permissions for INTERNAL_EVERYONE found -> display X's for all actions
-        res.push(["NOREALPERMINDB", roleInternalEveryone, "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE"]);
-    }
+} else if (vars.exists("$param.EntityId_param") && vars.get("$param.EntityId_param")) {
+    entityName = vars.getString("$param.EntityId_param");
     rolesOrEntitiesSelect.select("distinct ASYS_PERMISSIONSET.ROLE_ID")
         .from("ASYS_PERMISSIONSET")
         .and("ASYS_PERMISSIONSET.ENTITY_ID", entityName);
@@ -56,9 +42,9 @@ rolesOrEntities = rolesOrEntitiesSelect
 
 var entityPermSetId = "";
 for each (var entry in rolesOrEntities) { // entry contains either a role or an entity, depending on which param exists
-    if (vars.exists("$param.RoleTitle_param") && vars.get("$param.RoleTitle_param")) {
+    if (vars.exists("$param.RoleName_param") && vars.get("$param.RoleName_param")) {
         entityPermSetId = PermissionUtil.getSetRoot(roleName, entry);
-    } else if (vars.exists("$param.EntityTitle_param") && vars.get("$param.EntityTitle_param")) {
+    } else if (vars.exists("$param.EntityId_param") && vars.get("$param.EntityId_param")) {
         entityPermSetId = PermissionUtil.getSetRoot(entry, entityName);
     }
     var recordPermSetId = newSelect("ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID", alias)
@@ -71,11 +57,11 @@ for each (var entry in rolesOrEntities) { // entry contains either a role or an
     if (entityPermSetId)
     {
         recordPermSetId = new SqlBuilder(alias)
-                                .select("ASYS_PERMISSIONSETID")
-                                .from("ASYS_PERMISSIONSET")
-                                .where("ASYS_PERMISSIONSET.ASYS_PERMISSIONSET_ID", entityPermSetId)
-                                .and("ASYS_PERMISSIONSET.ACCESSTYPE", "R")
-                                .arrayColumn();
+            .select("ASYS_PERMISSIONSETID")
+            .from("ASYS_PERMISSIONSET")
+            .where("ASYS_PERMISSIONSET.ASYS_PERMISSIONSET_ID", entityPermSetId)
+            .and("ASYS_PERMISSIONSET.ACCESSTYPE", "R")
+            .arrayColumn();
 
         currOverview = [entityPermSetId, entry, "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE"];
 
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index 42f436e7093dbe2303fabd9df2a098fc792ca049..fe9f61c2f7b5a8cbe9b2647379015e641ea96be1 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -1,12 +1,13 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Person_entity</name>
+  <title>Contact</title>
   <description>former Pers</description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Person_entity/documentation.adoc</documentation>
-  <title>Contact</title>
   <siblings>
     <element>Address_entity</element>
+    <element>Contact_entity</element>
   </siblings>
   <grantDeleteProcess>%aditoprj%/entity/Person_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Person_entity/contentTitleProcess.js</contentTitleProcess>
@@ -62,6 +63,7 @@
       <title>Salutation</title>
       <consumer>Salutations</consumer>
       <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/salutation/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>TITLE</name>
@@ -719,6 +721,12 @@
           <fieldName>Persons</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>6854e035-f459-41b2-84f8-9f5cca5dbe80</name>
+          <entityName>DistrictResponsible_entity</entityName>
+          <fieldName>Persons</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
@@ -731,7 +739,7 @@
         </entityParameter>
         <entityParameter>
           <name>OrgId_param</name>
-          <expose v="false" />
+          <expose v="true" />
         </entityParameter>
         <entityParameter>
           <name>OnlyShowContactIds_param</name>
@@ -822,8 +830,8 @@
     </entityField>
     <entityParameter>
       <name>AdditionalActivityTaskLinks_param</name>
-      <title></title>
       <valueProcess>%aditoprj%/entity/Person_entity/entityfields/additionalactivitytasklinks_param/valueProcess.js</valueProcess>
+      <title></title>
       <description>PARAMETER</description>
     </entityParameter>
     <entityField>
@@ -1009,6 +1017,206 @@
         </entityParameter>
       </children>
     </entityProvider>
+    <entityParameter>
+      <name>OnlyShowContactIds_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>SelfDuplicates</name>
+      <documentation>%aditoprj%/entity/Person_entity/entityfields/selfduplicates/documentation.adoc</documentation>
+      <titlePlural>Duplicates</titlePlural>
+      <children>
+        <entityParameter>
+          <name>OnlyShowContactIds_param</name>
+          <mandatory v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>OnlyActive_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OrgId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OnlyOwnSupervised_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityField>
+      <name>IndexCommunication</name>
+    </entityField>
+    <entityField>
+      <name>IndexAddress</name>
+    </entityField>
+    <entityField>
+      <name>IndexCountry</name>
+      <groupable v="false" />
+    </entityField>
+    <entityField>
+      <name>IndexZIP</name>
+      <groupable v="false" />
+    </entityField>
+    <entityField>
+      <name>IndexCity</name>
+      <groupable v="false" />
+    </entityField>
+    <entityParameter>
+      <name>OnlyOwnSupervised_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>IndexPhoneticLastname</name>
+    </entityField>
+    <entityField>
+      <name>IndexPhoneticFirstname</name>
+    </entityField>
+    <entityProvider>
+      <name>IdFilteredActiveContacts</name>
+      <documentation>%aditoprj%/entity/Person_entity/entityfields/idfilteredactivecontacts/documentation.adoc</documentation>
+      <dependencies>
+        <entityDependency>
+          <name>511f3e4c-7493-4a31-a136-0ba80ba2ec85</name>
+          <entityName>Member_entity</entityName>
+          <fieldName>Contacts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>ExcludedContactIds_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>DuplicateActionsControl_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OnlyOwnSupervised_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OrgId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OnlyShowContactIds_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OnlyActive_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>DuplicateCurrentContactId_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityField>
+      <name>COUNT</name>
+      <title>Count</title>
+      <contentType>NUMBER</contentType>
+    </entityField>
+    <entityAggregateField>
+      <name>COUNT_aggregate</name>
+      <parentField>COUNT</parentField>
+      <title>Count</title>
+    </entityAggregateField>
+    <entityProvider>
+      <name>indexP</name>
+      <documentation>%aditoprj%/entity/Person_entity/entityfields/indexp/documentation.adoc</documentation>
+      <recordContainer>index</recordContainer>
+      <children>
+        <entityParameter>
+          <name>DuplicateActionsControl_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityField>
+      <name>PERSON_OBJECTTYPE</name>
+      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/person_objecttype/valueProcess.js</valueProcess>
+    </entityField>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityConsumer>
+      <name>Districts</name>
+      <state>INVISIBLE</state>
+      <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districts/stateProcess.js</stateProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>District_entity</entityName>
+        <fieldName>ResponsibleDistricts</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>DistrictsByContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districts/children/districtsbycontactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityProvider>
+      <name>NonselfDuplicates</name>
+      <documentation>%aditoprj%/entity/Person_entity/entityfields/nonselfduplicates/documentation.adoc</documentation>
+      <dependencies>
+        <entityDependency>
+          <name>3a4352e2-9686-4c52-9d01-dbfad8c68ea7</name>
+          <entityName>Duplicates_entity</entityName>
+          <fieldName>DuplicatePersonsConsumer</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>DuplicateCurrentContactId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OnlyShowContactIds_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>OrgId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OnlyOwnSupervised_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityConsumer>
+      <name>DistrictResponsibles</name>
+      <state>INVISIBLE</state>
+      <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/stateProcess.js</stateProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>DistrictResponsible_entity</entityName>
+        <fieldName>OrganisationResponsibles</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>OrgUid_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
     <entityActionField>
       <name>openEditDefaultsView</name>
       <title>Edit defaults</title>
@@ -1108,6 +1316,22 @@
           <isObjectAction v="false" />
           <iconId>VAADIN:ENVELOPES</iconId>
         </entityActionField>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
       </children>
     </entityActionGroup>
     <entityActionGroup>
@@ -1120,6 +1344,8 @@
           <name>IntegrateSelectedIntoCurrentAction</name>
           <title>Integrate selected into current contact</title>
           <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
           <isSelectionAction v="true" />
           <iconId>NEON:IMPORT</iconId>
           <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/stateProcess.js</stateProcess>
@@ -1128,6 +1354,8 @@
           <name>IntegrateCurrentIntoSelectedAction</name>
           <title>Integrate current into selected contact</title>
           <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/onActionProcess.js</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
           <isSelectionAction v="true" />
           <iconId>NEON:EXPORT</iconId>
           <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/stateProcess.js</stateProcess>
@@ -1136,6 +1364,8 @@
           <name>IgnoreDuplicate</name>
           <title>Ignore Duplicate</title>
           <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignoreduplicate/onActionProcess.js</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
           <isSelectionAction v="true" />
           <iconId>VAADIN:CLOSE</iconId>
           <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignoreduplicate/stateProcess.js</stateProcess>
@@ -1144,6 +1374,7 @@
           <name>IgnoreWholeCluster</name>
           <title>Ignore whole cluster</title>
           <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignorewholecluster/onActionProcess.js</onActionProcess>
+          <isObjectAction v="false" />
           <iconId>VAADIN:CLOSE</iconId>
           <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignorewholecluster/stateProcess.js</stateProcess>
         </entityActionField>
@@ -1185,65 +1416,13 @@
       <iconId>VAADIN:CURLY_BRACKETS</iconId>
       <stateProcess>%aditoprj%/entity/Person_entity/entityfields/openadminview/stateProcess.js</stateProcess>
     </entityActionField>
-    <entityParameter>
-      <name>OnlyShowContactIds_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityProvider>
-      <name>SelfDuplicates</name>
-      <documentation>%aditoprj%/entity/Person_entity/entityfields/selfduplicates/documentation.adoc</documentation>
-      <titlePlural>Duplicates</titlePlural>
-      <children>
-        <entityParameter>
-          <name>OnlyShowContactIds_param</name>
-          <mandatory v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>OnlyActive_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>OrgId_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>OnlyOwnSupervised_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityProvider>
-    <entityField>
-      <name>IndexCommunication</name>
-    </entityField>
-    <entityField>
-      <name>IndexAddress</name>
-    </entityField>
-    <entityField>
-      <name>IndexCountry</name>
-      <groupable v="false" />
-    </entityField>
-    <entityField>
-      <name>IndexZIP</name>
-      <groupable v="false" />
-    </entityField>
-    <entityField>
-      <name>IndexCity</name>
-      <groupable v="false" />
-    </entityField>
-    <entityParameter>
-      <name>OnlyOwnSupervised_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityField>
-      <name>IndexPhoneticLastname</name>
-    </entityField>
-    <entityField>
-      <name>IndexPhoneticFirstname</name>
-    </entityField>
+    <entityActionField>
+      <name>newVisitrecommendation</name>
+      <title>New Visit Recommendation</title>
+      <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/newvisitrecommendation/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CALENDAR</iconId>
+      <stateProcess>%aditoprj%/entity/Person_entity/entityfields/newvisitrecommendation/stateProcess.js</stateProcess>
+    </entityActionField>
     <entityActionField>
       <name>newVisitPlanEntry</name>
       <title>New Weekplanentry</title>
@@ -1252,8 +1431,7 @@
       <stateProcess>%aditoprj%/entity/Person_entity/entityfields/newvisitplanentry/stateProcess.js</stateProcess>
     </entityActionField>
     <entityProvider>
-      <name>IdFilteredActiveContacts</name>
-      <documentation>%aditoprj%/entity/Person_entity/entityfields/idfilteredactivecontacts/documentation.adoc</documentation>
+      <name>ebdb88f5-f030-426c-b261-9f3828d19356</name>
       <dependencies>
         <entityDependency>
           <name>511f3e4c-7493-4a31-a136-0ba80ba2ec85</name>
@@ -1262,177 +1440,49 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
-      <children>
-        <entityParameter>
-          <name>ExcludedContactIds_param</name>
-          <expose v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>DuplicateActionsControl_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>OnlyOwnSupervised_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>OrgId_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>OnlyShowContactIds_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>OnlyActive_param</name>
-          <expose v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>DuplicateCurrentContactId_param</name>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityProvider>
-    <entityField>
-      <name>COUNT</name>
-      <title>Count</title>
-      <contentType>NUMBER</contentType>
-    </entityField>
-    <entityAggregateField>
-      <name>COUNT_aggregate</name>
-      <parentField>COUNT</parentField>
-      <title>Count</title>
-    </entityAggregateField>
-    <entityProvider>
-      <name>indexP</name>
-      <documentation>%aditoprj%/entity/Person_entity/entityfields/indexp/documentation.adoc</documentation>
-      <recordContainer>index</recordContainer>
-      <children>
-        <entityParameter>
-          <name>DuplicateActionsControl_param</name>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityProvider>
-    <entityField>
-      <name>PERSON_OBJECTTYPE</name>
-      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/person_objecttype/valueProcess.js</valueProcess>
-    </entityField>
-    <entityProvider>
-      <name>#PROVIDER_AGGREGATES</name>
-      <useAggregates v="true" />
     </entityProvider>
     <entityConsumer>
-      <name>Districts</name>
-      <state>INVISIBLE</state>
-      <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districts/stateProcess.js</stateProcess>
+      <name>Orders</name>
+      <documentation>%aditoprj%/entity/Person_entity/entityfields/orders/documentation.adoc</documentation>
       <dependency>
         <name>dependency</name>
-        <entityName>District_entity</entityName>
-        <fieldName>ResponsibleDistricts</fieldName>
+        <entityName>Order_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
       </dependency>
-      <children>
-        <entityParameter>
-          <name>DistrictsByContactId_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districts/children/districtsbycontactid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityProvider>
-      <name>NonselfDuplicates</name>
-      <documentation>%aditoprj%/entity/Person_entity/entityfields/nonselfduplicates/documentation.adoc</documentation>
-      <dependencies>
-        <entityDependency>
-          <name>3a4352e2-9686-4c52-9d01-dbfad8c68ea7</name>
-          <entityName>Duplicates_entity</entityName>
-          <fieldName>DuplicatePersonsConsumer</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
       <children>
         <entityParameter>
           <name>ContactId_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>DuplicateCurrentContactId_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>OnlyShowContactIds_param</name>
-          <expose v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>OrgId_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>OnlyOwnSupervised_param</name>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityProvider>
-    <entityConsumer>
-      <name>DistrictResponsibles</name>
-      <state>INVISIBLE</state>
-      <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/stateProcess.js</stateProcess>
-      <dependency>
-        <name>dependency</name>
-        <entityName>DistrictResponsible_entity</entityName>
-        <fieldName>OrganisationResponsibles</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>OrgUid_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityActionField>
+      <name>deleteFunction</name>
+      <title>Delete this Function</title>
+      <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/deletefunction/onActionProcess.js</onActionProcess>
+      <iconId>NEON:TRASH</iconId>
+      <stateProcess>%aditoprj%/entity/Person_entity/entityfields/deletefunction/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityField>
+      <name>BIRTHDAY</name>
+      <title>Birthday</title>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <outputFormat>dd.MM.</outputFormat>
+      <inputFormat>dd.MM.</inputFormat>
+      <state>READONLY</state>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBInsert>%aditoprj%/entity/Person_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Person_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Person_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>bfc9ae0b-bd68-4913-b26e-64fcfdae835d</name>
-          <tableName>PERSON</tableName>
-          <primaryKey>PERSONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>53ce95ab-08a3-4763-8540-8f3074f13d1f</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>e9124a94-cc1b-4967-84ec-e315a7565ce0</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>0b6ca3ff-31f7-4dcd-99f6-bb8f64948cb0</name>
-          <tableName>ADDRESS</tableName>
-          <primaryKey>ADDRESSID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>PERSONID.value</name>
@@ -1686,13 +1736,51 @@
           <name>STATUS.displayValue</name>
           <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>BIRTHDAY.value</name>
+          <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/birthday.value/expression.js</expression>
+          <isFilterable v="true" />
+          <isLookupFilter v="false" />
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>bfc9ae0b-bd68-4913-b26e-64fcfdae835d</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>53ce95ab-08a3-4763-8540-8f3074f13d1f</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>e9124a94-cc1b-4967-84ec-e315a7565ce0</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>0b6ca3ff-31f7-4dcd-99f6-bb8f64948cb0</name>
+          <tableName>ADDRESS</tableName>
+          <primaryKey>ADDRESSID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtensionSet>
           <name>Attribute_filter</name>
           <filterFieldsProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess>
           <filterValuesProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess>
           <filterConditionProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess>
+          <isGroupable v="true" />
+          <groupQueryProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js</groupQueryProcess>
           <filtertype>BASIC</filtertype>
         </filterExtensionSet>
         <filterExtension>
@@ -1703,6 +1791,14 @@
           <filterConditionProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/favorites_filter/filterConditionProcess.js</filterConditionProcess>
           <filtertype>BASIC</filtertype>
         </filterExtension>
+        <filterExtension>
+          <name>SupervisorAssignment</name>
+          <title>Supervisor assignment</title>
+          <contentType>TEXT</contentType>
+          <filterValuesProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterValuesProcess.js</filterValuesProcess>
+          <filterConditionProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterConditionProcess.js</filterConditionProcess>
+          <filtertype>BASIC</filtertype>
+        </filterExtension>
       </filterExtensions>
     </dbRecordContainer>
     <indexRecordContainer>
@@ -1812,6 +1908,9 @@
           </additionalFieldNameAliases>
           <isMultiValued v="true" />
         </indexRecordFieldMapping>
+        <indexRecordFieldMapping>
+          <name>PICTURE.value</name>
+        </indexRecordFieldMapping>
       </indexFieldMappings>
     </indexRecordContainer>
   </recordContainers>
diff --git a/entity/Person_entity/entityfields/deletefunction/onActionProcess.js b/entity/Person_entity/entityfields/deletefunction/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..083e2d8b0d3d0649e0984e06b3947a6ae709fd3e
--- /dev/null
+++ b/entity/Person_entity/entityfields/deletefunction/onActionProcess.js
@@ -0,0 +1,40 @@
+import("system.entities");
+import("system.neon");
+import("Workflow_lib");
+import("Context_lib");
+import("DuplicateScanner_lib");
+import("Sql_lib");
+import("system.vars");
+
+var personId = vars.get("$field.PERSONID");
+
+var contactIds = newSelect("count(CONTACT.CONTACTID)")
+                            .from("CONTACT")
+                            .join("PERSON", "CONTACT.PERSON_ID = PERSON.PERSONID")
+                            .where("PERSON.PERSONID", personId)
+                            .cell();
+if(contactIds > 1)
+{
+    var contactId = vars.get("$field.CONTACTID");
+
+    var config = entities.createConfigForDeletingRows().entity("Contact_entity").uid(contactId);
+    
+    entities.deleteRow(config);
+    
+    DuplicateScannerUtils.deleteCachedDuplicate(contactId);
+
+    new AttributeRelationQuery(contactId, null, ContextUtils.getCurrentContextId())
+        .deleteAllAttributes();
+
+    newWhere("COMMUNICATION.CONTACT_ID", contactId).deleteData();
+    newWhere("ADDRESS.CONTACT_ID", contactId).deleteData();
+    newWhere("COMMRESTRICTION.CONTACT_ID", contactId).deleteData();
+    newWhere("AB_APPOINTMENTLINK.OBJECT_TYPE", "Person")
+    .and("AB_APPOINTMENTLINK.OBJECT_ROWID", contactId).deleteData();
+    newWhere("AB_ATTRIBUTERELATION.OBJECT_TYPE", "Person")
+    .and("AB_ATTRIBUTERELATION.OBJECT_ROWID", contactId).deleteData();
+
+    WorkflowSignalSender.deleted();
+    
+    neon.closeImage(vars.get("$sys.currentimage"), true); //ToDo: #1070797 This should probably not be necessary 
+}
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/deletefunction/stateProcess.js b/entity/Person_entity/entityfields/deletefunction/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d1b946d06bd61d13e75b51286466d8fbcd8d9f41
--- /dev/null
+++ b/entity/Person_entity/entityfields/deletefunction/stateProcess.js
@@ -0,0 +1,20 @@
+import("system.result");
+import("system.neon");
+import("Sql_lib");
+import("system.vars");
+
+var res = neon.COMPONENTSTATE_DISABLED;
+
+var personId = vars.get("$field.PERSONID");
+
+var contactIds = newSelect("count(CONTACT.CONTACTID)")
+                            .from("CONTACT")
+                            .join("PERSON", "CONTACT.PERSON_ID = PERSON.PERSONID")
+                            .where("PERSON.PERSONID", personId)
+                            .cell();
+if(contactIds > 1)
+{
+    res = neon.COMPONENTSTATE_EDITABLE;
+}
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js b/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js
index 2930a65370d53abee83d106cae30b08daf67146d..6a9f2ac39a7238d7dd5fbaec53e41c57eabec241 100644
--- a/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js
+++ b/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js
@@ -26,7 +26,8 @@ if(mergeSuccess)
     if(currentContactId == null)
         currentContactId = "";
     DuplicateScannerUtils.createMergeSuccessActivity(sourceContactId, targetContactId, currentContactId, "Person");
-// openContext due to the fact, that openContext will lead to an error 'due'cause it's trying to load the already opened preview 
-// of the duplicateContact which just got deleted = nullpointException
-    neon.openContext("Person", null, [targetContactId], neon.OPERATINGSTATE_VIEW, null, null);
+    //neon.refresh() with no fields will refresh the current image (and all sub images) but NOT the preview. neon.refreshAll() would refresh both,
+    //why it would lead to an error because it's trying to load the already opened preview of the duplicateContact which just got deleted 
+    //and does not exist any more which results in an exception
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/onActionProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/stateProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/titleProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/onActionProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/stateProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/titleProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/newvisitplanentry/onActionProcess.js b/entity/Person_entity/entityfields/newvisitplanentry/onActionProcess.js
index f32b45bbbf4dcad4715cdee536fa1326f7bb3ae3..3c74f21974a25e4f2437b5721c8cc56fe1a93548 100644
--- a/entity/Person_entity/entityfields/newvisitplanentry/onActionProcess.js
+++ b/entity/Person_entity/entityfields/newvisitplanentry/onActionProcess.js
@@ -5,5 +5,6 @@ var params = {};
 
 params["NoVisitPlanEmployeeWeek_param"] = true;
 params["ContactId_param"] = vars.get("$field.CONTACTID");
+params["OrganisationId_param"] = vars.get("$field.CONTACTID");
 
 neon.openContext("VisitPlanEntry", "VisitPlanEntryEdit_view", null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/newvisitrecommendation/onActionProcess.js b/entity/Person_entity/entityfields/newvisitrecommendation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..20eba0e1aca21c0349ba3eb04313ac6985330162
--- /dev/null
+++ b/entity/Person_entity/entityfields/newvisitrecommendation/onActionProcess.js
@@ -0,0 +1,15 @@
+import("system.logging");
+import("Sql_lib");
+import("system.neon");
+import("system.vars");
+
+var personContactId = vars.getString("$field.CONTACTID");
+var params = {};
+
+var orgId = newSelect("CONTACT.ORGANISATION_ID").from("CONTACT").where("CONTACT.CONTACTID", personContactId).cell();
+var orgContactId = newSelect("CONTACT.CONTACTID").from("CONTACT").where("CONTACT.ORGANISATION_ID", orgId).and("CONTACT.PERSON_ID is null").cell();
+
+params["ContactIdPerson_param"] = personContactId;
+params["ContactId_param"] = orgContactId;
+
+neon.openContext("VisitRecommendation", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/newvisitrecommendation/stateProcess.js b/entity/Person_entity/entityfields/newvisitrecommendation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..aefbc6e8f76f99c4281890f3461553c49562d5b9
--- /dev/null
+++ b/entity/Person_entity/entityfields/newvisitrecommendation/stateProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("KeywordRegistry_basic");
+
+if (vars.get("$field.STATUS") == $KeywordRegistry.contactStatus$inactive())
+    result.string(neon.COMPONENTSTATE_DISABLED);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/openadminview/onActionProcess.js b/entity/Person_entity/entityfields/openadminview/onActionProcess.js
index b56b52a65ff35e86346bb7966b3cca71e3bed711..8d0d6178c38495c99041a7f7bbc5859000549aae 100644
--- a/entity/Person_entity/entityfields/openadminview/onActionProcess.js
+++ b/entity/Person_entity/entityfields/openadminview/onActionProcess.js
@@ -5,9 +5,9 @@ AdminViewUtils.open("CONTACTID", [
     ["PERSON_ID", vars.get("$field.PERSON_ID")],
     ["ORGANISATION_ID", vars.get("$field.ORGANISATION_ID")],
     ["ADDRESS_ID", vars.get("$field.ADDRESS_ID")],
-    ["DATE_NEW", vars.get("$field.DATE_NEW")],
-    ["DATE_EDIT", vars.get("$field.DATE_EDIT")],
-    ["DATE_NEW_CONTACT", vars.get("$field.DATE_NEW_CONTACT")],
+    ["DATE_NEW", vars.get("$field.DATE_NEW"), "DATE"],
+    ["DATE_EDIT", vars.get("$field.DATE_EDIT"), "DATE"],
+    ["DATE_NEW_CONTACT", vars.get("$field.DATE_NEW_CONTACT"), "DATE"],
     ["USER_NEW", vars.get("$field.USER_NEW")],
     ["USER_EDIT", vars.get("$field.USER_EDIT")],
     ["USER_NEW_CONTACT", vars.get("$field.USER_NEW_CONTACT")],
diff --git a/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js b/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7b6137b4d105e9ba592cf8ef6e796fb838a32b09
--- /dev/null
+++ b/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CONTACTID"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/orders/documentation.adoc b/entity/Person_entity/entityfields/orders/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..cadb57b42a557960231861bfd0aa547cd54677f4
--- /dev/null
+++ b/entity/Person_entity/entityfields/orders/documentation.adoc
@@ -0,0 +1 @@
+Consumer for loading a contacts related Orders. This is for example used to verify if the Person-row can be deleted.
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/salutation/displayValueProcess.js b/entity/Person_entity/entityfields/salutation/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..275e5fb9a51310d5d2b8e0d427aec3415a2b6c73
--- /dev/null
+++ b/entity/Person_entity/entityfields/salutation/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+if(vars.get("$field.SALUTATION"))
+    result.string(vars.get("$field.SALUTATION"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/title/displayValueProcess.js b/entity/Person_entity/entityfields/title/displayValueProcess.js
index 3682b56b29c28eb54083e5d08025f851591aed2c..9023d1aa7e54c97980047d0aed8f9fdc50e1b157 100644
--- a/entity/Person_entity/entityfields/title/displayValueProcess.js
+++ b/entity/Person_entity/entityfields/title/displayValueProcess.js
@@ -1,9 +1,5 @@
 import("system.result");
-import("system.neon");
 import("system.vars");
 
-if((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
-{
-    if (!vars.get("$field.TITLE"))
-        result.string("")
-}
\ No newline at end of file
+if (vars.get("$field.TITLE"))
+    result.string(vars.get("$field.TITLE"));
diff --git a/entity/Person_entity/grantDeleteProcess.js b/entity/Person_entity/grantDeleteProcess.js
index 876b00bdb6a168033f3c0e5bfc587b8fff02a973..36866c88c8b760c3a8e009714d49ebfb2c9674f3 100644
--- a/entity/Person_entity/grantDeleteProcess.js
+++ b/entity/Person_entity/grantDeleteProcess.js
@@ -29,7 +29,7 @@ if(personCount == 1)
         .andNoEntityRows("Contract_entity", "Contracts", {ContactId_param : contactId}) //Contracts
         .andNoEntityRows("ObjectTree_entity", "TreeProvider", {ObjectIds_param : JSON.stringify([contactId, vars.get("$field.PERSON_ID")]), ObjectTypes_param : JSON.stringify([currentContext, "PrivatePerson"])})
         .andNoEntityRows("CampaignParticipant_entity", "CampaignParticipantsProvider", {ContactId_param : contactId})
-        .andNoEntityRows("Order_entity", "OrderProvider", {ContactId_param : contactId})
+        .andNoEntityRows("Order_entity", "#PROVIDER", {ContactId_param : contactId})
         .validate();
 }
 else if (personCount == 0) //special case in QuickEntry where it should be possible to remove a new Person that is not saved in the db yet
diff --git a/entity/Person_entity/recordcontainers/db/conditionProcess.js b/entity/Person_entity/recordcontainers/db/conditionProcess.js
index 04f984cbc56a2705edaf17cc7f00819a4d4526e9..338811158360900835c45a56b055904518f65ed6 100644
--- a/entity/Person_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Person_entity/recordcontainers/db/conditionProcess.js
@@ -41,5 +41,4 @@ if (vars.exists("$param.OnlyOwnSupervised_param") && vars.get("$param.OnlyOwnSup
     );
 }
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cd1075a6aca75cc0b77eb7be5f7f83886c9eeb85
--- /dev/null
+++ b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("AttributeFilter_lib");
+
+var sqlCond = AttributeFilterExtensionMaker.makeFilterGroupQuery("PERSON \n\
+    join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID) \n\
+    join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID) \n\
+    left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)");
+result.string(sqlCond);
\ No newline at end of file
diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterConditionProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterConditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9b9b11b65c2fe1c8206d87c6ccc85a9b8c9e7d04
--- /dev/null
+++ b/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterConditionProcess.js
@@ -0,0 +1,40 @@
+import("Employee_lib");
+import("KeywordRegistry_basic");
+import("Sql_lib");
+import("system.vars");
+import("system.result");
+
+var operator = vars.get("$local.operator");
+var rawvalue = vars.get("$local.rawvalue");
+var operator2 = vars.get("$local.operator2");
+var sqlCond = "";
+
+rawvalue = (rawvalue == "true");
+
+
+if(operator == "1" && rawvalue ||  operator == "2" && !rawvalue )
+    operator2 = SqlBuilder.IN();
+else if(operator == "1" && !rawvalue ||  operator == "2" && rawvalue)
+    operator2 = SqlBuilder.NOT_IN();
+else 
+    sqlCond = "1=1";
+
+
+
+if (sqlCond == "")
+    sqlCond = new SqlBuilder().where("CONTACT.CONTACTID", 
+            newSelect("pers.CONTACTID")
+            .from("DISTRICTCONTACT")
+            .join("CONTACT", "DISTRICTCONTACT.CONTACT_ID = org.CONTACTID", "org")
+            .join("CONTACT", "pers.ORGANISATION_ID = org.ORGANISATION_ID and pers.PERSON_ID is not null", "pers")
+            .where("DISTRICTCONTACT.ADVISER_CONTACT_ID", EmployeeUtils.getCurrentContactId())
+            .and(
+                newWhere(
+                    newWhere("current_date >= cast(DISTRICTCONTACT.VALID_FROM as DATE)")
+                    .and("current_date <= cast(DISTRICTCONTACT.VALID_UNTIL as DATE)"))
+                .or(newWhere("current_date >= cast(DISTRICTCONTACT.VALID_FROM as DATE)")
+                    .and("DISTRICTCONTACT.VALID_UNTIL is null")))
+            .and("DISTRICTCONTACT.STATUS", $KeywordRegistry.contactStatus$active()), operator2).toString();
+
+
+result.string(sqlCond);
\ No newline at end of file
diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterValuesProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterValuesProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4462144da5638267f7c76cce0c779305ae80c089
--- /dev/null
+++ b/entity/Person_entity/recordcontainers/db/filterextensions/supervisorassignment/filterValuesProcess.js
@@ -0,0 +1,4 @@
+import("system.translate");
+import("system.result");
+
+result.object([["true", translate.text("Yes")], ["false", translate.text("No")]]);
\ No newline at end of file
diff --git a/entity/Person_entity/recordcontainers/db/recordfieldmappings/birthday.value/expression.js b/entity/Person_entity/recordcontainers/db/recordfieldmappings/birthday.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..f85e341424a1558d5de59cd048fa408511e89812
--- /dev/null
+++ b/entity/Person_entity/recordcontainers/db/recordfieldmappings/birthday.value/expression.js
@@ -0,0 +1,11 @@
+import("system.result");
+import("Sql_lib");
+import("system.SQLTYPES");
+
+var maskingUtils = new SqlMaskingUtils();
+var year = new Date().getFullYear().toString();
+var month = maskingUtils.monthFromDate("PERSON.DATEOFBIRTH");
+var day = maskingUtils.dayFromDate("PERSON.DATEOFBIRTH");
+var dateSql = maskingUtils.makeDate(year, month, day);
+var timeSql = maskingUtils.cast(dateSql, SQLTYPES.TIMESTAMP);
+result.string("case when PERSON.DATEOFBIRTH is null then null else " + timeSql + " end");
diff --git a/entity/Person_entity/recordcontainers/index/query.js b/entity/Person_entity/recordcontainers/index/query.js
index e5c704e81ad9981791035100cf08dade778bc713..61ec0a66cbf788e47523eaa832bedf9fcb12e562 100644
--- a/entity/Person_entity/recordcontainers/index/query.js
+++ b/entity/Person_entity/recordcontainers/index/query.js
@@ -38,7 +38,8 @@ var querySelect = newSelect([
         "ADDRESS.ZIP",
         "ADDRESS.CITY",
         "COMMUNICATION.ADDR",
-        "PHONE.ADDR" 
+        "PHONE.ADDR",
+        "PERSON.PICTURE"
     ])
     .from("PERSON")
     .join("CONTACT", "CONTACT.PERSON_ID = PERSON.PERSONID")
diff --git a/entity/PrivatePerson_entity/PrivatePerson_entity.aod b/entity/PrivatePerson_entity/PrivatePerson_entity.aod
index e3cc784be65ee3ec69e37b8921bdc7fa2076e089..67d65775c2f3ffe527aa14ef30497695aa3f7316 100644
--- a/entity/PrivatePerson_entity/PrivatePerson_entity.aod
+++ b/entity/PrivatePerson_entity/PrivatePerson_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>PrivatePerson_entity</name>
+  <title>Private person</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/PrivatePerson_entity/documentation.adoc</documentation>
-  <title>Private person</title>
   <contentTitleProcess>%aditoprj%/entity/PrivatePerson_entity/contentTitleProcess.js</contentTitleProcess>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -84,18 +84,9 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/PrivatePerson_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>b2ae9c8c-c6de-46b7-ae10-e6823576f1ff</name>
-          <tableName>PERSON</tableName>
-          <primaryKey>PERSONID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
@@ -140,6 +131,15 @@
           <recordfield>PERSON.SALUTATION</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>b2ae9c8c-c6de-46b7-ae10-e6823576f1ff</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js b/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js
index d7230024504ab503e79b5b4c306b41c2a4c3d35e..69206e0479d58423e19c04113145f595ada8bd87 100644
--- a/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js
@@ -11,5 +11,4 @@ if (vars.get("$param.ExcludedPersonIds_param"))
     cond.andIfSet("PERSON.PERSONID", excludedPersons, SqlBuilder.NOT_IN());
 }
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Prod2prod_entity/Prod2prod_entity.aod b/entity/Prod2prod_entity/Prod2prod_entity.aod
index 824ac6d55edafc5cacd1bee2233dc435a517f290..43e4260abfb036e0823a9b6633566211352a9fd8 100644
--- a/entity/Prod2prod_entity/Prod2prod_entity.aod
+++ b/entity/Prod2prod_entity/Prod2prod_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Prod2prod_entity</name>
+  <title>Parts list</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Prod2prod_entity/documentation.adoc</documentation>
-  <title>Parts list</title>
   <titlePlural>Parts list</titlePlural>
   <recordContainer>jdito</recordContainer>
   <entityFields>
diff --git a/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js b/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js
index bbca20492052f0f34e6997a999c968dca4ab821e..ca417dc781a55e926604703a6d21915be43e0af3 100644
--- a/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js
+++ b/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js
@@ -31,7 +31,6 @@ else
 
 result.object(excludeIDs);
 
-// TODO: remove code duplication, better param naming and using SqlBuilder
 function _getParentID(pID, pIDs)
 {
     //Ermitteln welche Produkte ausgeschlossen werden müssen.
diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod
index 2a6662b6f7d6e80914a53eddd2bdf2b74607ffa4..efb013f5cdcba22abc918fdef8c12724361d9968 100644
--- a/entity/Product_entity/Product_entity.aod
+++ b/entity/Product_entity/Product_entity.aod
@@ -1,26 +1,47 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Product_entity</name>
+  <title>Product</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Product_entity/documentation.adoc</documentation>
-  <title>Product</title>
   <siblings>
     <element>Productprice_entity</element>
   </siblings>
   <grantDeleteProcess>%aditoprj%/entity/Product_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Product_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/Product_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <afterUiInit>%aditoprj%/entity/Product_entity/afterUiInit.js</afterUiInit>
   <useFavorites v="true" />
   <iconId>VAADIN:HAMMER</iconId>
   <imageProcess>%aditoprj%/entity/Product_entity/imageProcess.js</imageProcess>
-  <usePermissions v="true" />
   <titlePlural>Products</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Product_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Product_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Product_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityField>
       <name>ADVERTISING</name>
       <title>Advertising material</title>
-      <contentType>BOOLEAN</contentType>
+      <contentType>TEXT</contentType>
       <dropDownProcess>%aditoprj%/entity/Product_entity/entityfields/advertising/dropDownProcess.js</dropDownProcess>
       <valueProcess>%aditoprj%/entity/Product_entity/entityfields/advertising/valueProcess.js</valueProcess>
     </entityField>
@@ -481,7 +502,6 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <maximumDbRows v="0" />
       <fromClauseProcess>%aditoprj%/entity/Product_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Product_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
@@ -489,29 +509,7 @@
       <onDBInsert>%aditoprj%/entity/Product_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Product_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Product_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>0c8977f6-8d3d-4377-adb4-3ddde463ab1a</name>
-          <tableName>PRODUCT</tableName>
-          <primaryKey>PRODUCTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>6d77303b-6d0f-4636-b230-bb498470eec7</name>
-          <tableName>CONTACT</tableName>
-          <primaryKey>CONTACTID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>a4cc4ee2-e913-4c1a-bfe8-bdd83ccb3b5e</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ADVERTISING.value</name>
@@ -607,6 +605,29 @@
           <aggregateType>COUNT</aggregateType>
         </aggregateFieldDbMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>0c8977f6-8d3d-4377-adb4-3ddde463ab1a</name>
+          <tableName>PRODUCT</tableName>
+          <primaryKey>PRODUCTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>6d77303b-6d0f-4636-b230-bb498470eec7</name>
+          <tableName>CONTACT</tableName>
+          <primaryKey>CONTACTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>a4cc4ee2-e913-4c1a-bfe8-bdd83ccb3b5e</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtensionSet>
           <name>Attribute_filter</name>
diff --git a/entity/Product_entity/contentDescriptionProcess.js b/entity/Product_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b07a72fe7cc543e3bedc5d5604f12f28769ffb6b
--- /dev/null
+++ b/entity/Product_entity/contentDescriptionProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.datetime");
+import("system.vars");
+import("system.result");
+result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy")));
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/contact_id/displayValueProcess.js b/entity/Product_entity/entityfields/contact_id/displayValueProcess.js
index 660715572aed4cf5db65f233b769c2c9ffa2bdf4..d29e2e1026670cc941752ee8c806c0fa4d730465 100644
--- a/entity/Product_entity/entityfields/contact_id/displayValueProcess.js
+++ b/entity/Product_entity/entityfields/contact_id/displayValueProcess.js
@@ -3,4 +3,4 @@ import("system.vars");
 import("system.result");
 import("Context_lib");
 
-result.string(db.cell(ContextUtils.getNameSql("Organisation", vars.get("$field.CONTACT_ID"))));
\ No newline at end of file
+result.string(ContextUtils.getTitleByContext("Organisation", vars.get("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Product_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/Product_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Product_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/Product_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Product_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/Product_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Product_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/openadminview/onActionProcess.js b/entity/Product_entity/entityfields/openadminview/onActionProcess.js
index f3bc924625a437b26dbcb3a019d95a4535c99637..7506bf94163c4b2c8e915acc21932da4ee548889 100644
--- a/entity/Product_entity/entityfields/openadminview/onActionProcess.js
+++ b/entity/Product_entity/entityfields/openadminview/onActionProcess.js
@@ -3,8 +3,8 @@ import("Context_lib");
 
 AdminViewUtils.open("PRODUCTID", [
     ["CONTACT_ID", vars.get("$field.CONTACT_ID")],
-    ["DATE_NEW", vars.get("$field.DATE_NEW")],
-    ["DATE_EDIT", vars.get("$field.DATE_EDIT")],
-    ["USER_NEW", vars.get("$field.USER_NEW")],
-    ["USER_EDIT", vars.get("$field.USER_EDIT")]
+    ["DATE_NEW", vars.get("$field.DATE_NEW"), "DATE"],
+    ["DATE_EDIT", vars.get("$field.DATE_EDIT"), "DATE"],
+    ["USER_NEW", vars.get("$field.USER_NEW"), "DATE"],
+    ["USER_EDIT", vars.get("$field.USER_EDIT"), "DATE"]
 ]);
\ No newline at end of file
diff --git a/entity/Product_entity/recordcontainers/db/conditionProcess.js b/entity/Product_entity/recordcontainers/db/conditionProcess.js
index 3602fca8eb08a457b21fdd77bfd58ab4f43be1d3..d2f79f17d279ce0c07f88dab88f93455d1ffe5bb 100644
--- a/entity/Product_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Product_entity/recordcontainers/db/conditionProcess.js
@@ -11,5 +11,4 @@ if (vars.exists("$param.ExcludedProducts_param") && vars.get("$param.ExcludedPro
     productCond.andIfSet("PRODUCT.PRODUCTID", excludedIds, SqlBuilder.NOT_IN());
 }
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(productCond.toString());
\ No newline at end of file
diff --git a/entity/Product_entity/recordcontainers/db/onDBUpdate.js b/entity/Product_entity/recordcontainers/db/onDBUpdate.js
index 01a6d02f7e5b6172f857181ce2b51be666d4cf8c..2e53f3cad9a9edf21cc5bbc6fdecc00c5001dfee 100644
--- a/entity/Product_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Product_entity/recordcontainers/db/onDBUpdate.js
@@ -1,14 +1,3 @@
 import("Workflow_lib");
-import("system.vars");
-import("Product_lib");
-import("Entity_lib");
-
-// TODO: this is a workaround for missing possibility to react on changes of fields not connected to record Contqainer #1030023
-FieldChanges.assimilateChangeAndDispose("$field.IMAGE", function(state, value){
-    if (state == FieldChanges.STATE_CHANGED())
-        ProductUtils.setImage(vars.get("$local.uid"), value);
-    else
-        ProductUtils.removeImage(vars.get("$local.uid"));
-});
 
 WorkflowSignalSender.updated();
\ No newline at end of file
diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod
index 61bf5454ab35395bca8b5fb61db8ee6d5996cfba..b28ece7b968231503e48f774f9d7a5531da15b59 100644
--- a/entity/Productprice_entity/Productprice_entity.aod
+++ b/entity/Productprice_entity/Productprice_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Productprice_entity</name>
+  <title>Prices</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Productprice_entity/documentation.adoc</documentation>
   <icon>VAADIN:MONEY</icon>
-  <title>Prices</title>
   <siblings>
     <element>Product_entity</element>
   </siblings>
@@ -242,19 +242,10 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <hasDependentRecords v="true" />
       <conditionProcess>%aditoprj%/entity/Productprice_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Productprice_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>85fd1bcf-499f-4708-ad8e-18f5a0f5337d</name>
-          <tableName>PRODUCTPRICE</tableName>
-          <primaryKey>PRODUCTPRICEID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>BUYSELL.value</name>
@@ -333,6 +324,15 @@
           <expression>%aditoprj%/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>85fd1bcf-499f-4708-ad8e-18f5a0f5337d</name>
+          <tableName>PRODUCTPRICE</tableName>
+          <primaryKey>PRODUCTPRICEID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtension>
           <name>FavoriteFilter</name>
diff --git a/entity/Productprice_entity/recordcontainers/db/conditionProcess.js b/entity/Productprice_entity/recordcontainers/db/conditionProcess.js
index a68cf9891b46dc2d7e584e8f64da30aa40bf8543..869e14a88e9e1d32ca76dc75de6262413477ccb5 100644
--- a/entity/Productprice_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Productprice_entity/recordcontainers/db/conditionProcess.js
@@ -5,5 +5,4 @@ var cond = newWhere()
                 .andIfSet("PRODUCTPRICE.PRODUCT_ID", "$param.ProductId_param")
                 .andIfSet("PRODUCTPRICE.CONTACT_ID", "$param.ContactId_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/QuickEntry_entity/QuickEntry_entity.aod b/entity/QuickEntry_entity/QuickEntry_entity.aod
index fe83641faf97bfc9c0ccc2d595d9105d5ff1b3d2..9ce66331b3242cbbba9001036cd3e65dc920d156 100644
--- a/entity/QuickEntry_entity/QuickEntry_entity.aod
+++ b/entity/QuickEntry_entity/QuickEntry_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>QuickEntry_entity</name>
+  <title>Quick entry</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/QuickEntry_entity/documentation.adoc</documentation>
-  <title>Quick entry</title>
   <onValidation>%aditoprj%/entity/QuickEntry_entity/onValidation.js</onValidation>
   <iconId>VAADIN:BOLT</iconId>
   <recordContainer>jdito</recordContainer>
diff --git a/entity/QuickEntry_entity/entityfields/activities/children/insertlinks_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/activities/children/insertlinks_param/valueProcess.js
index 5d1e594fc0428daa3f2703390270052ffe3d6c77..3f6e93c8d5f4cc6891f50a7cad1de4c637738234 100644
--- a/entity/QuickEntry_entity/entityfields/activities/children/insertlinks_param/valueProcess.js
+++ b/entity/QuickEntry_entity/entityfields/activities/children/insertlinks_param/valueProcess.js
@@ -4,6 +4,10 @@ import("system.result");
 var links = [
     ["Organisation", vars.get("$field.UID")]
 ];
+if(vars.get("$field.LASTNAME")) {
+    links.push(["Person", vars.get("$field.PERSON_CONTACT_ID")]);
+}
+
 //TODO: verify if only insertedRows are really relevant
 var contactLinks = vars.get("$field.Contacts.insertedRows").map(function (row)
 {
diff --git a/entity/QuickEntry_entity/entityfields/leadquickacquisition/onValueChange.js b/entity/QuickEntry_entity/entityfields/leadquickacquisition/onValueChange.js
index cda8298ccbbe68e0a66a3fb3ff8f40e08b08e467..b947b83417f285ad03738e8fd67ba59f1dd07162 100644
--- a/entity/QuickEntry_entity/entityfields/leadquickacquisition/onValueChange.js
+++ b/entity/QuickEntry_entity/entityfields/leadquickacquisition/onValueChange.js
@@ -43,10 +43,10 @@ if(vars.get("$local.value"))
             };
             
             var getRowsConfig = entities.createConfigForLoadingRows()
-                                            .entity("AddressValidation_entity")
-                                            .provider("FullAddressValidation")
-                                            .fields(["CITY", "ZIP", "STREET"])
-                                            .addParameter("CurrentValue_param", response.address);
+            .entity("AddressValidation_entity")
+            .provider("FullAddressValidation")
+            .fields(["CITY", "ZIP", "STREET"])
+            .addParameter("CurrentValue_param", response.address);
                 
             var rows = entities.getRows(getRowsConfig);
             
@@ -103,7 +103,7 @@ if(vars.get("$local.value"))
         {
             neon.addRecord("Communications", {
                 "MEDIUM_ID" : $KeywordRegistry.communicationMedium$linkedin(),
-                "ADDR" : response.linkedInUrl
+                "ADDR" : _formatLinkaddress(response.linkedInUrl)
             });
         }
     
@@ -111,7 +111,7 @@ if(vars.get("$local.value"))
         {
             neon.addRecord("Communications", {
                 "MEDIUM_ID" : $KeywordRegistry.communicationMedium$internet(),
-                "ADDR" : response.website
+                "ADDR" : _formatLinkaddress(response.website)
             });
         }
     
@@ -121,4 +121,19 @@ if(vars.get("$local.value"))
         if(response.lastName) neon.setFieldValue("$field.LASTNAME", response.lastName);
     }
 
+}
+
+/**
+ * Adds "https://" if the address begins not with it or with "http://".
+ * 
+ * @param {String} [pAddr] the link
+ * @return {String}
+ */
+function _formatLinkaddress (pAddr) 
+{
+    if (!pAddr.startsWith("https://") && !pAddr.startsWith("http://"))
+    {
+        return ("https://" + pAddr).toString();
+    }
+    return pAddr.toString();
 }
\ No newline at end of file
diff --git a/entity/QuickEntry_entity/recordcontainers/jdito/onInsert.js b/entity/QuickEntry_entity/recordcontainers/jdito/onInsert.js
index aa0f51c76fd12f0f2b68af5357d04ea7f1303952..d356c25a42ac666f57272596da429d9afa741fd1 100644
--- a/entity/QuickEntry_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/QuickEntry_entity/recordcontainers/jdito/onInsert.js
@@ -25,7 +25,7 @@ if (rowdata["ORGANISATION_NAME.value"])
         "USER_NEW_CONTACT": userNew,
         "DATE_NEW_CONTACT" : dateNew,
         "STATUS" : $KeywordRegistry.contactStatus$active(),
-        "ISOLANGUAGE" : rowdata["ISOLANGUAGE.value"]
+        "LANGUAGE" : rowdata["ISOLANGUAGE.value"]
     });
     
     entities.createRow(configOrg);
@@ -55,7 +55,7 @@ if (rowdata["LASTNAME.value"])
         "CONTACTID": rowdata["PERSON_CONTACT_ID.value"],
         "ORGANISATION_ID": organisationId,
         "STATUS" : $KeywordRegistry.contactStatus$active(),
-        "ISOLANGUAGE": rowdata["ISOLANGUAGE.value"]
+        "LANGUAGE": rowdata["ISOLANGUAGE.value"]
     });
     
     entities.createRow(configPer);
diff --git a/entity/RoleChildren_entity/RoleChildren_entity.aod b/entity/RoleChildren_entity/RoleChildren_entity.aod
index 89c17291b48f25526ea7a47de2b33a46a6a09bed..353284819b7f5f9730cfcb8e16e6d7748ccc204c 100644
--- a/entity/RoleChildren_entity/RoleChildren_entity.aod
+++ b/entity/RoleChildren_entity/RoleChildren_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>RoleChildren_entity</name>
+  <title>Child Role</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/RoleChildren_entity/documentation.adoc</documentation>
-  <title>Child Role</title>
   <titlePlural>Child Roles</titlePlural>
   <recordContainer>jDito</recordContainer>
   <entityFields>
diff --git a/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js b/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js
index a76ad51dc5d86201281871b40f73bcd967bf8c44..9a225fe5bc38edbdec6a301f5a51f87e68e2a7dc 100644
--- a/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js
@@ -4,6 +4,8 @@ import("system.db");
 import("system.vars");
 import("system.result");
 import("system.util");
+import("Permission_lib");
+import("system.logging");
 
 var alias = SqlUtils.getSystemAlias();
 var selectedRoleName = vars.exists("$param.RoleId_param") && vars.get("$param.RoleId_param");
@@ -17,10 +19,7 @@ if (selectedRoleType == "" && selectedRoleName != "") {
 
 // roles can only be assigned to CUSTOM roles -> selected role has to be a viable CUSTOM role
 if (selectedRoleName && selectedRoleType == "CUSTOM") {
-    var childRoles = newSelect("ID, CHILD_ROLE", alias)
-        .from("ASYS_ROLES_CHILDREN")
-        .where("ASYS_ROLES_CHILDREN.PARENT_ROLE", selectedRoleName)
-        .table();
+    var childRoles = PermissionUtil.getChildRoles(selectedRoleName);
     
     for each (let childRole in childRoles) {
         children.push([childRole[0], childRole[1], selectedRoleName]);
diff --git a/entity/RoleParent_entity/RoleParent_entity.aod b/entity/RoleParent_entity/RoleParent_entity.aod
index a48ffa5d0dcbad43da264927c486add10341c1fa..86b569290664d1f362b0a808d39fe4a669ce07e5 100644
--- a/entity/RoleParent_entity/RoleParent_entity.aod
+++ b/entity/RoleParent_entity/RoleParent_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>RoleParent_entity</name>
+  <title>Parent Role</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/RoleParent_entity/documentation.adoc</documentation>
-  <title>Parent Role</title>
   <titlePlural>Parent Roles</titlePlural>
   <recordContainer>jDito</recordContainer>
   <entityFields>
diff --git a/entity/Role_entity/Role_entity.aod b/entity/Role_entity/Role_entity.aod
index 6bff89e164df6c4a4c4d6da1120d2496db260384..be60cf34577c7c96a6ac4fcb2feae87075a4f7e2 100644
--- a/entity/Role_entity/Role_entity.aod
+++ b/entity/Role_entity/Role_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Role_entity</name>
+  <title>Roles</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Role_entity/documentation.adoc</documentation>
   <icon>VAADIN:USER_CHECK</icon>
-  <title>Roles</title>
   <grantUpdateProcess>%aditoprj%/entity/Role_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/Role_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Role_entity/contentTitleProcess.js</contentTitleProcess>
@@ -48,7 +48,8 @@
       </dependency>
       <children>
         <entityParameter>
-          <name>RoleTitle_param</name>
+          <name>RoleName_param</name>
+          <valueProcess>%aditoprj%/entity/Role_entity/entityfields/theirpermissions/children/roletitle_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -61,7 +62,7 @@
       </dependency>
       <children>
         <entityParameter>
-          <name>RoleTitle_param</name>
+          <name>RoleName_param</name>
           <valueProcess>%aditoprj%/entity/Role_entity/entityfields/permissionoverviews/children/roletitle_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
diff --git a/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod b/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod
index 3c35c7cf03086585c3973d2112236a060fc1d1c7..153d97d7307a0475640a7ed9cbb61dee68cdb2ba 100644
--- a/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod
+++ b/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>SalesprojectAnalyses_entity</name>
+  <title>Sales Project Analyses</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/SalesprojectAnalyses_entity/documentation.adoc</documentation>
-  <title>Sales Project Analyses</title>
   <iconId>VAADIN:PIE_CHART</iconId>
   <recordContainer>jdito</recordContainer>
   <entityFields>
@@ -56,18 +56,22 @@
     <entityActionField>
       <name>openSalesprojects</name>
       <onActionProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/opensalesprojects/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:BOOK_DOLLAR</iconId>
     </entityActionField>
     <entityActionField>
       <name>sentOffers</name>
       <onActionProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/sentoffers/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CART</iconId>
     </entityActionField>
     <entityActionField>
       <name>openForecast</name>
       <onActionProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/openforecast/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:BAR_CHART_H</iconId>
     </entityActionField>
     <entityActionField>
       <name>openTurnover</name>
       <onActionProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/openturnover/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CHART</iconId>
     </entityActionField>
     <entityField>
       <name>MY_FORECAST</name>
diff --git a/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod b/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod
index e7474ae27a84b2eb23c98236397328ac396df494..834661f182666bfb72d744ba2a9e67ae4185900f 100644
--- a/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod
+++ b/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>SalesprojectConversionRate_entity</name>
+  <title>Conversion Rate</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/SalesprojectConversionRate_entity/documentation.adoc</documentation>
-  <title>Conversion Rate</title>
   <initFilterProcess>%aditoprj%/entity/SalesprojectConversionRate_entity/initFilterProcess.js</initFilterProcess>
   <iconId>VAADIN:PIE_CHART</iconId>
   <recordContainer>jdito</recordContainer>
@@ -18,23 +18,27 @@
     <entityField>
       <name>AB_KEYWORD_ENTRYID_TITLE</name>
       <title>Phase</title>
-      <displayValueProcess>%aditoprj%/entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js</displayValueProcess>
+      <groupable v="false" />
     </entityField>
     <entityActionField>
       <name>openSalesprojects</name>
       <onActionProcess>%aditoprj%/entity/SalesprojectConversionRate_entity/entityfields/opensalesprojects/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:BOOK_DOLLAR</iconId>
     </entityActionField>
     <entityActionField>
       <name>sentOffers</name>
       <onActionProcess>%aditoprj%/entity/SalesprojectConversionRate_entity/entityfields/sentoffers/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CART</iconId>
     </entityActionField>
     <entityActionField>
       <name>openForecast</name>
       <onActionProcess>%aditoprj%/entity/SalesprojectConversionRate_entity/entityfields/openforecast/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:BAR_CHART_H</iconId>
     </entityActionField>
     <entityActionField>
       <name>openTurnover</name>
       <onActionProcess>%aditoprj%/entity/SalesprojectConversionRate_entity/entityfields/openturnover/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CHART</iconId>
     </entityActionField>
     <entityField>
       <name>AB_KEYWORD_ENTRYID_KEYID</name>
@@ -76,6 +80,11 @@
           <name>AB_KEYWORD_ENTRYID_TITLE.value</name>
         </jDitoRecordFieldMapping>
       </recordFieldMappings>
+      <aggregateFieldMappings>
+        <jDitoRecordFieldMapping>
+          <name>conversionRate_aggregate.value</name>
+        </jDitoRecordFieldMapping>
+      </aggregateFieldMappings>
       <filterExtensions>
         <filterExtension>
           <name>Year</name>
diff --git a/entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js b/entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js
deleted file mode 100644
index dc763b0c6156aa6fa4a2e293886ff75fc6cd7e20..0000000000000000000000000000000000000000
--- a/entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-import("system.vars");
-import("system.translate");
-import("system.result");
-
-// It's important to translate twice, because there are Phase with an extra translation.
-result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(), vars.get("$field.AB_KEYWORD_ENTRYID_TITLE")));
\ No newline at end of file
diff --git a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js
index 2f3dad2864f82b5ebd688e2ffea700eec78eaa78..32a839f38d92337f1f7acd8cf64fc5ba961cd529 100644
--- a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js
@@ -1,71 +1,49 @@
-import("JditoFilter_lib");
-import("Salesproject_lib");
-import("system.datetime");
-import("system.translate");
 import("system.result");
-import("system.vars");
+import("JditoFilter_lib");
 import("Sql_lib");
 import("KeywordRegistry_basic");
-import("system.neon");
+import("Salesproject_lib");
+import("system.vars");
 
-let sqlHelper = new SqlMaskingUtils();
 let filter = vars.get("$local.filters");
-let dateStartYear = sqlHelper.yearFromDate("SALESPROJECT_MILESTONE.DATE_START");
-let dateStartMonth = sqlHelper.monthFromDate("SALESPROJECT_MILESTONE.DATE_START");
-let isFirstPhase = true;
-let data = [];
+let gruppingFields = SalesprojectConversionRate.groupMapping(false);
+var filterPhasenIDs = [];
 
-    
-let  gruppingFields =  {
-    "AB_KEYWORD_ENTRYID_KEYID": ["AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE", "AB_KEYWORD_ENTRY.SORTING"], 
-    "#EXTENSION.Year.Year#NUMBER" : [dateStartYear, dateStartYear, dateStartYear], 
-    "#EXTENSION.Month.Month#NUMBER" : [dateStartMonth, dateStartMonth, dateStartMonth]
-};
+var phasenManager = new SalesprojectConversionRate();
 
-let sql = new SqlBuilder()
+var sql = new SqlBuilder()
 .from("AB_KEYWORD_ENTRY")
 .where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase())
 .and("AB_KEYWORD_ENTRY.KEYID", $KeywordRegistry.salesprojectPhase$nego(), SqlBuilder.NOT_EQUAL());
 
 if (filter != null)
 {
-    if (JSON.stringify(filter).indexOf("AB_KEYWORD_ENTRYID_KEYID") > -1)
+    if (JSON.stringify(filter).indexOf("AB_KEYWORD_ENTRYID_KEYID") > -1 && vars.exists("$local.grouped"))
     {
-        let phasenFilter = filter.childs.filter(function (child) {
+        var phasenFilter = filter.childs.filter(function (child) {
             return (child.childs.filter(function (child) {
                 return child.name == "AB_KEYWORD_ENTRYID_KEYID";
             })).length > 0
-        })[0];
-        phasenFilter.operator = "OR";
-        let pre = newSelect("PRE.KEYID")
-            .from("AB_KEYWORD_ENTRY")
-            .join("AB_KEYWORD_ENTRY", "AB_KEYWORD_ENTRY.SORTING -1 = PRE.SORTING", "PRE")
-            .where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase())
-            .and(["AB_KEYWORD_ENTRY", "CONTAINER", "PRE"], $KeywordRegistry.salesprojectPhase())
-            .and("AB_KEYWORD_ENTRY.KEYID", phasenFilter.childs[0].value)
-            .cell()
-        if (pre != "") {
-            let temp = JSON.parse(JSON.stringify(phasenFilter.childs[0]));
-            temp.value = temp.key  = pre;
-            phasenFilter.childs.push(temp);
-            isFirstPhase = false;
-        }
+        });
+        
+        phasenFilter.forEach(function (pFilter) {
+            filterPhasenIDs = filterPhasenIDs.concat(pFilter.childs.map(function (child) { return child.key;}));
+            pFilter.childs = [];
+        });
     }
+    else 
+        filterPhasenIDs = null;
     
     let filterCondition = JditoFilterUtils.getSqlCondition(filter, "AB_KEYWORD_ENTRY", null, SalesprojectConversionRate.filterMapping(null));
     sql.andIfSet(filterCondition);
 }
 
-
-
 if (vars.exists("$local.grouped"))
 {
     let groupedfield = vars.get("$local.grouped");
     sql.join("SALESPROJECT_MILESTONE", newWhere("SALESPROJECT_MILESTONE.MILESTONEVALUE = AB_KEYWORD_ENTRY.KEYID"))
         // COUNT, ID, TITLE
-        .select(["COUNT(*)", gruppingFields[groupedfield][0], gruppingFields[groupedfield][1]])
-        .groupBy(["AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.SORTING", gruppingFields[groupedfield][0], gruppingFields[groupedfield][1], gruppingFields[groupedfield][2]])
-        .orderBy([gruppingFields[groupedfield][2], "AB_KEYWORD_ENTRY.SORTING"]);
+        .select(["SALESPROJECT_MILESTONE.SALESPROJECT_ID", "SALESPROJECT_MILESTONE.MILESTONEVALUE", gruppingFields[groupedfield][0]]);
         
     if (filter != null)
     {
@@ -73,60 +51,11 @@ if (vars.exists("$local.grouped"))
         sql.andIfSet(filterCondition);
     }
     
-    let sqlData = sql.table();
-    let row = {
-        "id": "", 
-        "title": "",
-        "sumRate": 0.0, 
-        "sumCount": 0,
-        "count" : 0,
-        "getTitle": function (pGroupedField) {
-            if (pGroupedField == "#EXTENSION.Month.Month#NUMBER" )
-            {
-                // When convert the Number of the Month to the Month name it doesn't matter which Year is used, so here is the Year 2020 hard-coded.
-                let monthDate = new Date(2020, parseInt(this.title)-1);
-                return translate.text(datetime.toDate(monthDate.getTime(), "MMMM", "UTC"));
-            }
-            return translate.text(translate.text(this.title));
-        }
-    };
-    let pre = -1;
-    
-    for (let i = 0; i <= sqlData.length; i++){
-        if (i == sqlData.length || sqlData[i][1] != row.id) 
-        {
-            if (row.id != "")
-                data.push([row.sumCount + "", row.id, row.getTitle(groupedfield), row.sumRate / row.count]);
-            
-            if (i == sqlData.length)
-                break;
-            
-            row.id = sqlData[i][1];
-            row.title = sqlData[i][2];
-            row.sumRate = 0;
-            row.sumCount = 0;
-            row.count =  0;
-            
-            if (groupedfield != "AB_KEYWORD_ENTRYID_KEYID") {
-                pre = -1;
-            }
-        }
-        
-        if (pre != -1)
-            row.sumRate += (parseFloat(sqlData[i][0]) / pre);
-        
-        if (isFirstPhase || pre != -1)
-        {
-            row.count++;
-            row.sumCount += parseInt(sqlData[i][0]);
-        }
-            
-        
-        pre = parseFloat(sqlData[i][0]);
-        
-        
-    }
-    result.object(data);
+    sql.table().forEach(function (row) {
+        phasenManager.insertMilestone(row[0], row[1],groupedfield == "AB_KEYWORD_ENTRYID_KEYID" ? null :row[2] ); // TODO: Gruppingfield 
+    });
+
+    result.object(phasenManager.getConversionRates(filterPhasenIDs));
 } 
 else 
 {
diff --git a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js
index 8615399a3833200e8f55e5e176fd493458a417ab..f30b4775d6c3f4356b76028e7faa2a488a3a2d66 100644
--- a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js
+++ b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js
@@ -1,32 +1,65 @@
-import("KeywordRegistry_basic");
-import("system.vars");
 import("system.result");
-import("Sql_lib");
 import("JditoFilter_lib");
+import("Sql_lib");
+import("KeywordRegistry_basic");
 import("Salesproject_lib");
+import("system.vars");
 
-var groupMapping = SalesprojectConversionRate.groupMapping(true);
-var phases = new SqlBuilder().select(["COUNT(*)"]).from("AB_KEYWORD_ENTRY")
-.join("SALESPROJECT_MILESTONE", "AB_KEYWORD_ENTRY.KEYID = SALESPROJECT_MILESTONE.MILESTONEVALUE")
+let filter = vars.get("$local.filters");
+let gruppingFields = SalesprojectConversionRate.groupMapping(false);
+var filterPhasenIDs = [];
+
+var phasenManager = new SalesprojectConversionRate();
+
+var sql = new SqlBuilder()
+.from("AB_KEYWORD_ENTRY")
 .where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase())
 .and("AB_KEYWORD_ENTRY.KEYID", $KeywordRegistry.salesprojectPhase$nego(), SqlBuilder.NOT_EQUAL());
 
-var filter = vars.get("$local.filters");
-
 if (filter != null)
 {
-    var filterCondition = JditoFilterUtils.getSqlCondition(vars.get("$local.filters"), "AB_KEYWORD_ENTRY", null, SalesprojectConversionRate.filterMapping("SALESPROJECT_MILESTONE.DATE_START", true));
-    phases.andIfSet(filterCondition);
+    if (JSON.stringify(filter).indexOf("AB_KEYWORD_ENTRYID_KEYID") > -1 && vars.exists("$local.grouped"))
+    {
+        var phasenFilter = filter.childs.filter(function (child) {
+            return (child.childs.filter(function (child) {
+                return child.name == "AB_KEYWORD_ENTRYID_KEYID";
+            })).length > 0
+        });
+        
+        phasenFilter.forEach(function (pFilter) {
+            filterPhasenIDs = filterPhasenIDs.concat(pFilter.childs.map(function (child) { return child.key;}));
+            pFilter.childs = [];
+        });
+    }
+    else 
+        filterPhasenIDs = null;
+    
+    let filterCondition = JditoFilterUtils.getSqlCondition(filter, "AB_KEYWORD_ENTRY", null, SalesprojectConversionRate.filterMapping(null));
+    sql.andIfSet(filterCondition);
 }
 
 if (vars.exists("$local.grouped"))
 {
-    var groupedfield = vars.get("$local.grouped")
-    phases.groupBy([groupMapping[groupedfield]]);
+    let groupedfield = vars.get("$local.grouped");
+    sql.join("SALESPROJECT_MILESTONE", newWhere("SALESPROJECT_MILESTONE.MILESTONEVALUE = AB_KEYWORD_ENTRY.KEYID"))
+        // COUNT, ID, TITLE
+        .select(["SALESPROJECT_MILESTONE.SALESPROJECT_ID", "SALESPROJECT_MILESTONE.MILESTONEVALUE", gruppingFields[groupedfield][0]]);
+        
+    if (filter != null)
+    {
+        filterCondition = JditoFilterUtils.getSqlCondition(filter, "SALESPROJECT_MILESTONE", null, SalesprojectConversionRate.filterMapping("SALESPROJECT_MILESTONE.DATE_START", false, "SALESPROJECT_MILESTONE"));
+        sql.andIfSet(filterCondition);
+    }
+    
+    sql.table().forEach(function (row) {
+        phasenManager.insertMilestone(row[0], row[1],groupedfield == "AB_KEYWORD_ENTRYID_KEYID" ? null :row[2] ); // TODO: Gruppingfield 
+    });
+
+    result.object(phasenManager.getConversionRates(filterPhasenIDs).length);
 } 
 else 
 {
-    phases.groupBy(["AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", "AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE", "AB_KEYWORD_ENTRY.SORTING"]);
-}
-
-result.string(phases.arrayColumn().length);
\ No newline at end of file
+    sql.select(["AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", "AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE"])
+        .orderBy("AB_KEYWORD_ENTRY.SORTING");
+    result.object(sql.table().length);
+}
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod
index b1183b77d06223b47e856ca9f4a9c8b62fd65808..9b33104d183410e5faf5ea980bc1ced20093efd5 100644
--- a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod
+++ b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>SalesprojectMilestone_entity</name>
+  <title></title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/SalesprojectMilestone_entity/documentation.adoc</documentation>
-  <title></title>
   <grantCreate v="false" />
   <grantUpdate v="false" />
   <grantDelete v="false" />
@@ -60,10 +60,6 @@
       <name>SalesprojectMilestones</name>
       <recordContainer>db</recordContainer>
       <children>
-        <entityParameter>
-          <name>SalesprojectId_param</name>
-          <expose v="true" />
-        </entityParameter>
         <entityParameter>
           <name>Kind_param</name>
           <expose v="false" />
@@ -155,20 +151,11 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBUpdate>%aditoprj%/entity/SalesprojectMilestone_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
+      <alias>Data_alias</alias>
       <title></title>
-      <linkInformation>
-        <linkInformation>
-          <name>464f1fd7-e5b6-4cfc-92f8-4873d4e10ce3</name>
-          <tableName>SALESPROJECT_MILESTONE</tableName>
-          <primaryKey>SALESPROJECT_MILESTONEID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_END.value</name>
@@ -201,6 +188,15 @@
           <isLookupFilter v="true" />
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>464f1fd7-e5b6-4cfc-92f8-4873d4e10ce3</name>
+          <tableName>SALESPROJECT_MILESTONE</tableName>
+          <primaryKey>SALESPROJECT_MILESTONEID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/SalesprojectMilestone_entity/contentTitleProcess.js b/entity/SalesprojectMilestone_entity/contentTitleProcess.js
index 474d304708cb9ee5be375f81044a2529c335641a..27695c3f691e8b1c5ac7e41181b80737355fc514 100644
--- a/entity/SalesprojectMilestone_entity/contentTitleProcess.js
+++ b/entity/SalesprojectMilestone_entity/contentTitleProcess.js
@@ -2,9 +2,9 @@ import("system.vars");
 import("system.translate");
 import("system.result");
 
-if (vars.exists("$field.TYPE") && vars.get("$field.TYPE"))
+if (vars.get("$field.KIND"))
 {
-    result.string(translate.text("Milestones") + " " + translate.text(vars.get("$field.TYPE")));
+    result.string(translate.text("Milestones") + " " + translate.text(vars.get("$field.KIND")));
 }
 else
     result.string(translate.text("Milestones"));
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js
index 1b532aec63043fba84acf422369129fb9706bc12..ff40ad745a0a2d0676d08287e93bad6602a0b35b 100644
--- a/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js
+++ b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.TYPE"));
\ No newline at end of file
+result.string(vars.get("$field.KIND"));
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js b/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js
index f02879713e48f2970f9de7b2e423bb1b329e40cd..38663022e20ea6ef8cbaedf0f49a27f94d93faaf 100644
--- a/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js
+++ b/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js
@@ -2,9 +2,9 @@ import("system.vars");
 import("system.translate");
 import("system.result");
 
-if (vars.exists("$field.TYPE") && vars.get("$field.TYPE"))
+if (vars.get("$field.KIND"))
 {
-    result.string(translate.text(vars.get("$field.TYPE")));
+    result.string(translate.text(vars.get("$field.KIND")));
 }
 else
     result.string(translate.text("Milestones"));
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js
index 9a21e39ea75ecfa1a1d8989379141d381f361144..06315b6b320bd3388370dccb3c501946043083c7 100644
--- a/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js
@@ -5,5 +5,4 @@ var cond = newWhere()
             .andIfSet("SALESPROJECT_MILESTONE.SALESPROJECT_ID", "$param.SalesprojectId_param")
             .andIfSet("SALESPROJECT_MILESTONE.KIND", "$param.Kind_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseDefinition_entity/SalesprojectPhaseDefinition_entity.aod b/entity/SalesprojectPhaseDefinition_entity/SalesprojectPhaseDefinition_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..45e202711ccfea29c3cb7b2998bd17d41cf6c287
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/SalesprojectPhaseDefinition_entity.aod
@@ -0,0 +1,158 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>SalesprojectPhaseDefinition_entity</name>
+  <title>Salesproject phases</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:LIST_UL</icon>
+  <siblings />
+  <iconIdProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/iconIdProcess.js</iconIdProcess>
+  <imageProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/imageProcess.js</imageProcess>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>SALESPROJECTPHASETRAITDEFINITIONID</name>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>PHASE</name>
+      <title>Phase</title>
+      <mandatory v="true" />
+      <dropDownProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/phase/dropDownProcess.js</dropDownProcess>
+      <displayValueProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/phase/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/phase/onValidation.js</onValidation>
+    </entityField>
+    <entityParameter>
+      <name>SalesprojectUid_param</name>
+      <expose v="false" />
+    </entityParameter>
+    <entityParameter>
+      <name>SalesprojectPhaseId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>SalesprojectPhaseDefinitions</name>
+      <lookupIdfield>SALESPROJECTPHASETRAITDEFINITIONID</lookupIdfield>
+      <dependencies>
+        <entityDependency>
+          <name>1d8760d0-186d-411d-a84e-dc82556ad722</name>
+          <entityName>SalesprojectPhaseTrait_entity</entityName>
+          <fieldName>SalesprojectPhaseDefinitions</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityFieldGroup>
+      <name>SalesprojectPhaseFullname</name>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/salesprojectphasefullname/valueProcess.js</valueProcess>
+      <fields>
+        <element>PHASE</element>
+      </fields>
+    </entityFieldGroup>
+    <entityConsumer>
+      <name>ChecklistEntries</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>ChecklistEntry_entity</entityName>
+        <fieldName>ChecklistEntries</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ChecklistUid_param</name>
+          <valueProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/checklistentries/children/checklistuid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>CHECKLIST_ID</name>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/checklist_id/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>traitCount</name>
+      <title>Traits</title>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/traitcount/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/entityfields/traitcount/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>DESCRIPTION</name>
+      <title>Description</title>
+      <contentType>LONG_TEXT</contentType>
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <onDBInsert>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
+      <alias>Data_alias</alias>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>CHECKLIST_ID.value</name>
+          <recordfield>SALESPROJECTPHASEDEFINITION.CHECKLIST_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>SALESPROJECTPHASEDEFINITION.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>SALESPROJECTPHASEDEFINITION.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DESCRIPTION.value</name>
+          <recordfield>SALESPROJECTPHASEDEFINITION.DESCRIPTION</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PHASE.value</name>
+          <recordfield>SALESPROJECTPHASEDEFINITION.PHASE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PHASE.displayValue</name>
+          <recordfield>SALESPROJECTPHASEDEFINITION.PHASE</recordfield>
+          <expression>%aditoprj%/entity/SalesprojectPhaseDefinition_entity/recordcontainers/db/recordfieldmappings/phase.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>SALESPROJECTPHASETRAITDEFINITIONID.value</name>
+          <recordfield>SALESPROJECTPHASEDEFINITION.SALESPROJECTPHASEDEFINITIONID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>SALESPROJECTPHASEDEFINITION.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>SALESPROJECTPHASEDEFINITION.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>6b48c807-5948-41ff-a5b5-b1556db01c3e</name>
+          <tableName>SALESPROJECTPHASEDEFINITION</tableName>
+          <primaryKey>SALESPROJECTPHASEDEFINITIONID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/SalesprojectPhaseDefinition_entity/entityfields/checklist_id/valueProcess.js b/entity/SalesprojectPhaseDefinition_entity/entityfields/checklist_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4d1a3077043fd3b0444e1f1a87839cc1d5844519
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/entityfields/checklist_id/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("system.result");
+import("system.util");
+
+
+if (!vars.get("$field.CHECKLIST_ID")) 
+{
+    result.string(util.getNewUUID());
+}
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseDefinition_entity/entityfields/checklistentries/children/checklistuid_param/valueProcess.js b/entity/SalesprojectPhaseDefinition_entity/entityfields/checklistentries/children/checklistuid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..91d7fc39bc8d5ad5a55eb72f53dff893886aac9e
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/entityfields/checklistentries/children/checklistuid_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+
+result.string(vars.get("$field.CHECKLIST_ID"));
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseDefinition_entity/entityfields/date_edit/valueProcess.js b/entity/SalesprojectPhaseDefinition_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4b3fffc0c63f47083ae49e08b9b746227c628443
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+
+var currentDate = null;
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
+{
+    currentUser = vars.get("$sys.date");
+}
+
+result.string(currentDate);
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseDefinition_entity/entityfields/date_new/valueProcess.js b/entity/SalesprojectPhaseDefinition_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b4e0581883113b47c4aa2ecf96fcb2258bf87768
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+
+var currentDate = null;
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    currentUser = vars.get("$sys.date");
+}
+
+result.string(currentDate);
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/status/displayValueProcess.js b/entity/SalesprojectPhaseDefinition_entity/entityfields/phase/displayValueProcess.js
similarity index 50%
rename from entity/Campaign_entity/entityfields/status/displayValueProcess.js
rename to entity/SalesprojectPhaseDefinition_entity/entityfields/phase/displayValueProcess.js
index 2b82fe77f1e59332c6adfbfa9398714a6b7b2566..909b87ff774205c98165542547d1286c455092f8 100644
--- a/entity/Campaign_entity/entityfields/status/displayValueProcess.js
+++ b/entity/SalesprojectPhaseDefinition_entity/entityfields/phase/displayValueProcess.js
@@ -1,6 +1,6 @@
 import("system.result");
 import("system.vars");
-import("Keyword_lib");
 import("KeywordRegistry_basic");
+import("Keyword_lib");
 
-result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignState(), vars.get("$field.STATUS")));
\ No newline at end of file
+result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(), vars.get("$field.PHASE")));
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseDefinition_entity/entityfields/phase/dropDownProcess.js b/entity/SalesprojectPhaseDefinition_entity/entityfields/phase/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..268d3b2dc5db832a404d50b25a958a9e216b8d27
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/entityfields/phase/dropDownProcess.js
@@ -0,0 +1,27 @@
+import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("Sql_lib");
+
+
+var salesprojectPhases = KeywordUtils.getEntryNamesAndIdsByContainer($KeywordRegistry.salesprojectPhase());
+var dropDownEntries = [];
+var counter = 0;
+
+var exisitingPhases = newSelect("PHASE")
+                        .from("SALESPROJECTPHASEDEFINITION")
+                        .arrayColumn();
+
+salesprojectPhases.forEach(function(pSalesprojectPhase){
+    
+    var isExistent = exisitingPhases.includes(pSalesprojectPhase[0]);
+    
+    if (!isExistent || (vars.get("$field.PHASE") == pSalesprojectPhase[0])) {
+        dropDownEntries[counter] = [pSalesprojectPhase[0], pSalesprojectPhase[1]];
+    }
+    
+    counter++;
+});
+
+result.object(dropDownEntries);
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseDefinition_entity/entityfields/phase/onValidation.js b/entity/SalesprojectPhaseDefinition_entity/entityfields/phase/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..61a58a68724cade1ca65ed289ed9a56594c2ab5c
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/entityfields/phase/onValidation.js
@@ -0,0 +1,24 @@
+import("system.vars");
+import("system.result");
+import("system.translate");
+import("system.neon");
+import("Sql_lib");
+
+
+var thisValue = vars.get("$this.value");
+
+if(thisValue != null && thisValue != "" && 
+    vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW &&
+    thisValue != vars.get("$field.PHASE"))
+{
+   var isExistent = newSelect("COUNT(*)")
+                    .from("SALESPROJECTPHASEDEFINITION")
+                    .where("SALESPROJECTPHASEDEFINITION.SALESPROJECTPHASE", localValue)
+                    .cell();
+    
+    if (isExistent > 0)
+    {
+        result.string(translate.text("For this salesproject phase are already traits defined."));
+    }
+}
+                    
diff --git a/entity/SalesprojectPhaseDefinition_entity/entityfields/salesprojectphasefullname/valueProcess.js b/entity/SalesprojectPhaseDefinition_entity/entityfields/salesprojectphasefullname/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..75192dbbe5da1c412c31fb25d1849b2b6572b455
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/entityfields/salesprojectphasefullname/valueProcess.js
@@ -0,0 +1,36 @@
+import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+
+
+var salesprojectPhase = vars.get("$field.PHASE");
+var longForm = "";
+
+switch(salesprojectPhase){
+    case $KeywordRegistry.salesprojectPhase$mal():
+        longForm = "Marketing Accepted Lead";
+        break;
+    case $KeywordRegistry.salesprojectPhase$mql():
+        longForm = "Marketing Qualified Lead";
+        break;
+    case $KeywordRegistry.salesprojectPhase$nego():
+        longForm = "Negotiation";
+        break;
+    case $KeywordRegistry.salesprojectPhase$nqc():
+        longForm = "Non Qualified Contact";
+        break;
+    case $KeywordRegistry.salesprojectPhase$offer():
+        longForm = "Offer";
+        break;
+    case $KeywordRegistry.salesprojectPhase$sal():
+        longForm = "Sales Accepted Lead";
+        break;
+    case $KeywordRegistry.salesprojectPhase$sqo():
+        longForm = "Sales Qualified Offer";
+        break;
+    case $KeywordRegistry.salesprojectPhase$mqc():
+        longForm = "Marketing Qualified Contact";
+        break;
+}
+
+result.string(longForm);
diff --git a/entity/SalesprojectPhaseDefinition_entity/entityfields/traitcount/valueProcess.js b/entity/SalesprojectPhaseDefinition_entity/entityfields/traitcount/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b2430c974f84383660f14bef9d6b4a6d943eae10
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/entityfields/traitcount/valueProcess.js
@@ -0,0 +1,11 @@
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+
+var traitCounting = newSelect("COUNT(*)")
+                        .from("CHECKLISTENTRY")
+                        .where("CHECKLISTENTRY.CHECKLIST_ID", vars.get("$field.CHECKLIST_ID"))
+                        .cell();
+
+result.string(traitCounting);
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseDefinition_entity/entityfields/user_edit/valueProcess.js b/entity/SalesprojectPhaseDefinition_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a55cb327464d6def9b94735913c25ffb5e4328ef
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+
+var currentUser = null;
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
+{
+    currentUser = vars.get("$sys.user");
+}
+
+result.string(currentUser);
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseDefinition_entity/entityfields/user_new/valueProcess.js b/entity/SalesprojectPhaseDefinition_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1411b9ac93e217a76a876371a2609ff9464f4997
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+
+var currentUser = null;
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    currentUser = vars.get("$sys.user");
+}
+
+result.string(currentUser);
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseDefinition_entity/iconIdProcess.js b/entity/SalesprojectPhaseDefinition_entity/iconIdProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b647759848390c03032e49219e04c68b5f8cf93f
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/iconIdProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string("TEXT:" + vars.getString("$field.PHASE").substr(vars.getString("$field.PHASE").indexOf("PHASE",0)+5, vars.getString("$field.PHASE").length).trim());
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseDefinition_entity/recordcontainers/db/onDBInsert.js b/entity/SalesprojectPhaseDefinition_entity/recordcontainers/db/onDBInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..c2501480abe5308c33ececdd86eb5f91ab7c59ed
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/recordcontainers/db/onDBInsert.js
@@ -0,0 +1,12 @@
+import("system.vars");
+import("system.entities");
+
+var rowData = vars.get("$local.rowdata");
+var creatingConf = entities.createConfigForAddingRows()
+                                .entity("Checklist_entity")
+                                .fieldValues({
+                                    "CHECKLISTID" : rowData["SALESPROJECTPHASEDEFINITION.CHECKLIST_ID"],
+                                    "USER_NEW" : vars.get("$sys.user"),
+                                    "DATE_NEW" : vars.get("$sys.date")
+                                });
+entities.createRow(creatingConf);
diff --git a/entity/SalesprojectPhaseDefinition_entity/recordcontainers/db/recordfieldmappings/phase.displayvalue/expression.js b/entity/SalesprojectPhaseDefinition_entity/recordcontainers/db/recordfieldmappings/phase.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..c566f14a5d945b383ff38cbe41f3b3dc01cb1c9f
--- /dev/null
+++ b/entity/SalesprojectPhaseDefinition_entity/recordcontainers/db/recordfieldmappings/phase.displayvalue/expression.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+import("Sql_lib");
+
+var resolvingSql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectPhase(), "SALESPROJECTPHASEDEFINITION.SALESPROJECTPHASE");
+//var sql = "case when SALESPROJECT_PHASE = '" + $KeywordRegistry.salesprojectPhase$offer() + "' THEN 'Offer' ELSE (" + resolvingSql.toString() + ") end";
+
+result.string(resolvingSql);
diff --git a/entity/SalesprojectPhaseTrait_entity/SalesprojectPhaseTrait_entity.aod b/entity/SalesprojectPhaseTrait_entity/SalesprojectPhaseTrait_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..4531ef3cf55f9dc68eec7692d8b0f65c1a8507e8
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/SalesprojectPhaseTrait_entity.aod
@@ -0,0 +1,148 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>SalesprojectPhaseTrait_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>NEON:PUZZLE</icon>
+  <siblings />
+  <titlePlural>Traits</titlePlural>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+      <lookupIdfield>SALESPROJECTPHASETRAITID</lookupIdfield>
+      <dependencies>
+        <entityDependency>
+          <name>0fdad3f9-2d6e-42a5-8257-9ca14b635ec3</name>
+          <entityName>Salesproject_entity</entityName>
+          <fieldName>SalesprojectPhaseTraits</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>SALESPROJECTPHASETRAITID</name>
+    </entityField>
+    <entityField>
+      <name>TRAIT</name>
+      <title>Trait</title>
+      <dropDownProcess>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/trait/dropDownProcess.js</dropDownProcess>
+      <displayValueProcess>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/trait/displayValueProcess.js</displayValueProcess>
+      <onValueChange>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/trait/onValueChange.js</onValueChange>
+      <onValidation>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/trait/onValidation.js</onValidation>
+    </entityField>
+    <entityField>
+      <name>VALUE</name>
+      <documentation>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/value/documentation.adoc</documentation>
+      <title>Value</title>
+      <state>INVISIBLE</state>
+      <stateProcess>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/value/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/value/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>salesprojectPhaseId</name>
+    </entityField>
+    <entityConsumer>
+      <name>SalesprojectPhaseDefinitions</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>SalesprojectPhaseDefinition_entity</entityName>
+        <fieldName>SalesprojectPhaseDefinitions</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityProvider>
+      <name>SalesprojectPhaseTraits</name>
+      <lookupIdfield>SALESPROJECTPHASETRAITID</lookupIdfield>
+    </entityProvider>
+    <entityField>
+      <name>SALESPROJECTPHASEDEFINITION_ID</name>
+      <consumer>SalesprojectPhaseDefinitions</consumer>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/salesprojectphasedefinition_id/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>SalesprojectPhaseDefinitionUid_param</name>
+      <expose v="true" />
+      <mandatory v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>IsManualTrait_param</name>
+    </entityParameter>
+    <entityField>
+      <name>IS_FULFILLED</name>
+    </entityField>
+    <entityField>
+      <name>TYPE</name>
+      <title>Type</title>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhaseTrait_entity/entityfields/type/valueProcess.js</valueProcess>
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <conditionProcess>%aditoprj%/entity/SalesprojectPhaseTrait_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <alias>Data_alias</alias>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>SALESPROJECTPHASETRAITID.value</name>
+          <recordfield>SALESPROJECTPHASETRAIT.SALESPROJECTPHASETRAITID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TRAIT.value</name>
+          <recordfield>SALESPROJECTPHASETRAIT.TRAIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>VALUE.value</name>
+          <recordfield>SALESPROJECTPHASETRAIT.VALUE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>SALESPROJECTPHASETRAIT.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>SALESPROJECTPHASETRAIT.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>SALESPROJECTPHASETRAIT.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>SALESPROJECTPHASETRAIT.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>SALESPROJECTPHASEDEFINITION_ID.value</name>
+          <recordfield>SALESPROJECTPHASETRAIT.SALESPROJECTPHASEDEFINITION_ID</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>6a0311f9-8c94-42fd-a12a-420f986e88b4</name>
+          <tableName>SALESPROJECTPHASETRAIT</tableName>
+          <primaryKey>SALESPROJECTPHASETRAITID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/date_edit/valueProcess.js b/entity/SalesprojectPhaseTrait_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b4e0581883113b47c4aa2ecf96fcb2258bf87768
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+
+var currentDate = null;
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    currentUser = vars.get("$sys.date");
+}
+
+result.string(currentDate);
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/date_new/valueProcess.js b/entity/SalesprojectPhaseTrait_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b4e0581883113b47c4aa2ecf96fcb2258bf87768
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+
+var currentDate = null;
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    currentUser = vars.get("$sys.date");
+}
+
+result.string(currentDate);
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/salesprojectphasedefinition_id/valueProcess.js b/entity/SalesprojectPhaseTrait_entity/entityfields/salesprojectphasedefinition_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cc3f78e43441a3f148523bfe4e152ca4a6cce810
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/salesprojectphasedefinition_id/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+
+result.string(vars.get("$param.SalesprojectPhaseDefinitionUid_param"));
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/salesprojectphasedefinitions/children/salesprojectphasetraituid/valueProcess.js b/entity/SalesprojectPhaseTrait_entity/entityfields/salesprojectphasedefinitions/children/salesprojectphasetraituid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7bcfa15b270992d3d55b6a8d971901c38457d7c3
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/salesprojectphasedefinitions/children/salesprojectphasetraituid/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.SALESPROJECTPHASETRAITID"));
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/trait/displayValueProcess.js b/entity/SalesprojectPhaseTrait_entity/entityfields/trait/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7028cba4c9080c7ff7358700b795dea452c11476
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/trait/displayValueProcess.js
@@ -0,0 +1,58 @@
+import("system.logging");
+import("system.translate");
+import("system.result");
+import("system.vars");
+
+
+var value = vars.get("$field.TRAIT");
+var displayValue = "";
+
+if (value != null && value != "")
+{
+    switch (value){
+        case "TOUCHPOINT":
+            displayValue = translate.text("Touchpoint");
+            break;
+        case "PROJECTEAMROLE_PROJECTMANAGER":
+            displayValue = translate.text("Project team: \"Project manager\"");
+            break;
+        case "VOLUME":
+            displayValue = translate.text("Volume");
+            break;
+        case "PROJECTSTART":
+            displayValue = translate.text("Project start");
+            break;
+        case "CLASSIFICATIONFIELDS":
+            displayValue = translate.text("Classification fields");
+            break;
+        case "PROJECTEAMROLE_INTERNALDISTRIBUTION":
+            displayValue = translate.text("Project team: \"Internal distribution\"");
+            break;
+        case "PROJECTTEAMROLES":
+            displayValue = translate.text("Project team roles");
+            break;
+        case "OFFEREXISTS":
+            displayValue = translate.text("Offer exists");
+            break;
+        case "PROJECTSTART12MONTHS":
+            displayValue = translate.text("Project start within next 12 months");
+            break;
+        case "OFFERSENT":
+            displayValue = translate.text("Offer sent");
+            break;
+        case "PROBABILITY100":
+            displayValue = translate.text("Probability: 100%");
+            break;
+        case "STATUSWON":
+            displayValue = translate.text("Status: \"won\"");
+            break;
+        case "CONTRACT":
+            displayValue = translate.text("Contract");
+            break;
+        case "MANUALLY":
+            displayValue = translate.text(vars.get("$field.VALUE"));
+            break;
+    }
+    
+    result.string(displayValue);
+}
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/trait/dropDownProcess.js b/entity/SalesprojectPhaseTrait_entity/entityfields/trait/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9e66c7c5e8622edca85f9a3faafc5985ab4bb3e6
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/trait/dropDownProcess.js
@@ -0,0 +1,26 @@
+import("system.logging");
+import("system.neon");
+import("system.result");
+import("system.project");
+import("system.translate");
+import("KeywordRegistry_basic");
+
+
+var dropDownEntries = [
+    ["TOUCHPOINT",translate.text("Touchpoint")],
+    ["PROJECTEAMROLE_PROJECTMANAGER", translate.text("Project team: \"Project manager\"")],
+    ["VOLUME", translate.text("Volume")],
+    ["PROJECTSTART", translate.text("Project start")],
+    ["CLASSIFICATIONFIELDS", translate.text("Classification fields")],
+    ["PROJECTEAMROLE_INTERNALDISTRIBUTION", translate.text("Project team: \"Internal distribution\"")],
+    ["PROJECTTEAMROLES", translate.text("Project team roles")],
+    ["OFFEREXISTS", translate.text("Offer exists")],
+    ["PROJECTSTART12MONTHS", translate.text("Project start within next 12 months")],
+    ["OFFERSENT", translate.text("Offer sent")],
+    ["PROBABILITY100", translate.text("Probablity: 100%")],
+    ["STATUSWON", translate.text("Status: \"won\"")],
+    ["CONTRACT", translate.text("Contract")],
+    ["MANUALLY", translate.text("Manually")]
+];
+
+result.object(dropDownEntries);
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/trait/onValidation.js b/entity/SalesprojectPhaseTrait_entity/entityfields/trait/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ac38f73a27bc884f247828ac59350918a99f51d
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/trait/onValidation.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.translate");
+
+if (!vars.exists("$field.salesprojectPhaseId") && vars.get("$field.salesprojectPhaseId"))
+{
+    result.string(translate.text("Please select a salesproject phase."));
+}
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/trait/onValueChange.js b/entity/SalesprojectPhaseTrait_entity/entityfields/trait/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..c0ee6521359f88dd8b757f0ae2320abeec2f2ba3
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/trait/onValueChange.js
@@ -0,0 +1,14 @@
+import("system.vars");
+import("system.project");
+import("system.result");
+import("system.neon");
+
+
+if (vars.get("$this.value") == "MANUALLY")
+{
+    neon.setFieldValue("$param.IsManualTrait_param", "true");
+}
+else
+{
+    neon.setFieldValue("$param.IsManualTrait_param", "false");
+}
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/type/valueProcess.js b/entity/SalesprojectPhaseTrait_entity/entityfields/type/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/user_edit/valueProcess.js b/entity/SalesprojectPhaseTrait_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a55cb327464d6def9b94735913c25ffb5e4328ef
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+
+var currentUser = null;
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
+{
+    currentUser = vars.get("$sys.user");
+}
+
+result.string(currentUser);
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/user_new/valueProcess.js b/entity/SalesprojectPhaseTrait_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1411b9ac93e217a76a876371a2609ff9464f4997
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+
+var currentUser = null;
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+{
+    currentUser = vars.get("$sys.user");
+}
+
+result.string(currentUser);
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/value/stateProcess.js b/entity/SalesprojectPhaseTrait_entity/entityfields/value/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f20028d4ca452c626349b54ea79caf6938865409
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/value/stateProcess.js
@@ -0,0 +1,11 @@
+import("system.result");
+import("system.vars");
+import("system.neon");
+import("Util_lib");
+
+
+if (Utils.toBoolean(vars.get("$param.IsManualTrait_param")) 
+        || (vars.exists("$field.TRAIT") && vars.get("$field.TRAIT") == "MANUALLY"))
+{
+    result.object(neon.COMPONENTSTATE_EDITABLE);
+}
\ No newline at end of file
diff --git a/entity/SalesprojectPhaseTrait_entity/entityfields/value/valueProcess.js b/entity/SalesprojectPhaseTrait_entity/entityfields/value/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b39acf3dfeecc8f83c216e597c4b00066d2f615c
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/entityfields/value/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.logging");
+import("system.vars");
+
+var value = vars.get("$field.VALUE");
+
+logging.log(value);
diff --git a/entity/SalesprojectPhaseTrait_entity/recordcontainers/db/conditionProcess.js b/entity/SalesprojectPhaseTrait_entity/recordcontainers/db/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f84fd822a534ec0515961adb507c3e4cc2983b9c
--- /dev/null
+++ b/entity/SalesprojectPhaseTrait_entity/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,12 @@
+import("system.result");
+import("system.vars");
+import("system.logging");
+import("Sql_lib");
+
+
+if (vars.exists("$param.SalesprojectPhaseDefinitionUid_param") 
+    && vars.get("$param.SalesprojectPhaseDefinitionUid_param") != null)
+{
+    result.string(newWhere("SALESPROJECTPHASETRAIT.SALESPROJECTPHASEDEFINITION_ID",
+                    vars.get("$param.SalesprojectPhaseDefinitionUid_param")).toString())
+}
\ No newline at end of file
diff --git a/entity/SalesprojectPhase_entity/SalesprojectPhase_entity.aod b/entity/SalesprojectPhase_entity/SalesprojectPhase_entity.aod
index fe5610bd1313ceb3c056d46f83d887e6f38e752f..f2dc2a9c0e82235935524652e02bc1be3549d897 100644
--- a/entity/SalesprojectPhase_entity/SalesprojectPhase_entity.aod
+++ b/entity/SalesprojectPhase_entity/SalesprojectPhase_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>SalesprojectPhase_entity</name>
+  <title>Phase</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/SalesprojectPhase_entity/documentation.adoc</documentation>
-  <title>Phase</title>
   <siblings>
     <element>SalesprojectMilestone_entity</element>
   </siblings>
@@ -27,6 +27,7 @@
     <entityField>
       <name>ICON</name>
       <contentType>IMAGE</contentType>
+      <valueProcess>%aditoprj%/entity/SalesprojectPhase_entity/entityfields/icon/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>STATE</name>
@@ -52,6 +53,14 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityParameter>
+      <name>DisabledPhases_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>SalesprojectUid_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
diff --git a/entity/SalesprojectPhase_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectPhase_entity/recordcontainers/jdito/contentProcess.js
index a961d29c0531224c6213dc70ecd0eb509faa3e23..c66d85815d3f52def5b26491e9e6ccaff853f137 100644
--- a/entity/SalesprojectPhase_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/SalesprojectPhase_entity/recordcontainers/jdito/contentProcess.js
@@ -1,12 +1,16 @@
-import("Sql_lib");
 import("system.db");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
 import("system.result");
 import("system.vars");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("Sql_lib");
+import("Util_lib");
 
-var steps = KeywordUtils.getEntryNamesAndIdsByContainer($KeywordRegistry.salesprojectPhase());
+
+var res = [];
 var ids = vars.get("$local.idvalues");
+var disabledPhases = JSON.parse(vars.get("$param.DisabledPhases_param")) || [];
+var steps = KeywordUtils.getEntryNamesAndIdsByContainer($KeywordRegistry.salesprojectPhase());
 var selected = vars.exists("$param.CurrentPhase_param") && vars.get("$param.CurrentPhase_param");
 
 // filter only for steps reqested by the system
@@ -23,14 +27,18 @@ if (ids)
     })
 }
 
-var res = [];
 steps.forEach(function ([stepId, title])
 {
-    if (ids)
-        res.push([stepId, ids.indexOf(stepId) > -1  ? "ACTIVE" : "EDITABLE", title, _getIcon(stepId)]);
-    else
-        res.push([stepId, stepId === selected ? "ACTIVE" : "EDITABLE", title, _getIcon(stepId)]);
+    var stepState = "DISABLED";
+    if (stepId === selected)
+        stepState = "ACTIVE";
+    else if (!disabledPhases.includes(stepId))
+        stepState = "EDITABLE";
+
+    var resStep = [stepId, stepState, title, _getIcon(stepId)];
+    res.push(resStep);
 });
+
 result.object(res);
 
 function _getIcon (pPhase)
diff --git a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
index 21cf70bfb8d0e24b533bbc970d3f2ef96d272d1a..6621e3295e7e4c328cb55dee2b6b35decccc78e2 100644
--- a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
+++ b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>SalesprojectSource_entity</name>
+  <title>Touchpoint</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/SalesprojectSource_entity/documentation.adoc</documentation>
-  <title>Touchpoint</title>
   <iconId>VAADIN:HANDSHAKE</iconId>
   <titlePlural>Touchpoints</titlePlural>
   <recordContainer>db</recordContainer>
@@ -22,12 +22,6 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
-      <children>
-        <entityParameter>
-          <name>SalesprojectId_param</name>
-          <expose v="true" />
-        </entityParameter>
-      </children>
     </entityProvider>
     <entityParameter>
       <name>SalesprojectId_param</name>
@@ -92,17 +86,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>fa43b303-700e-43ea-a755-7db8aceffa0f</name>
-          <tableName>SALESPROJECT_TOUCHPOINT</tableName>
-          <primaryKey>SALESPROJECT_TOUCHPOINTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ENTRYDATE.value</name>
@@ -135,6 +120,15 @@
           <recordfield>SALESPROJECT_TOUCHPOINT.SALESPROJECT_TOUCHPOINTID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>fa43b303-700e-43ea-a755-7db8aceffa0f</name>
+          <tableName>SALESPROJECT_TOUCHPOINT</tableName>
+          <primaryKey>SALESPROJECT_TOUCHPOINTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js b/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js
index bad867525a17aebb0ecc286db4afeadc7f846b7f..ab13b330a620c500e29ccd63c8c4fad58ba3fcfe 100644
--- a/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js
@@ -4,5 +4,4 @@ import("Sql_lib");
 
 var cond = newWhereIfSet("SALESPROJECT_TOUCHPOINT.SALESPROJECT_ID", "$param.SalesprojectId_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index 1191ebd36bedf99364471aedad4a2bf9660934f0..5300b1def470341719ee94cd6b833668fef55fbe 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -1,14 +1,18 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Salesproject_entity</name>
+  <title>Sales Project</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Salesproject_entity/documentation.adoc</documentation>
-  <title>Sales Project</title>
   <siblings>
     <element>SalesprojectMilestone_entity</element>
+    <element>Member_entity</element>
+    <element>MSTTeam_entity</element>
+    <element>MSTTeamLink_entity</element>
   </siblings>
   <grantDeleteProcess>%aditoprj%/entity/Salesproject_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Salesproject_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/Salesproject_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <afterUiInit>%aditoprj%/entity/Salesproject_entity/afterUiInit.js</afterUiInit>
   <onValidation>%aditoprj%/entity/Salesproject_entity/onValidation.js</onValidation>
   <useFavorites v="true" />
@@ -17,6 +21,27 @@
   <titlePlural>Salesprojects</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityProvider>
       <name>#PROVIDER</name>
       <dependencies>
@@ -254,6 +279,7 @@
     </entityConsumer>
     <entityConsumer>
       <name>Members</name>
+      <refreshParent v="true" />
       <dependency>
         <name>dependency</name>
         <entityName>Member_entity</entityName>
@@ -270,6 +296,18 @@
           <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/objecttype_param/valueProcess.js</valueProcess>
           <expose v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>MSTTeamId_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>EnableMSTeams_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>SalesprojectCode_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityActionField>
@@ -335,6 +373,10 @@
           <name>AssignmentTable_param</name>
           <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>MSTTeamId_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityConsumer>
@@ -373,9 +415,9 @@
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
-          <title></title>
           <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/valueProcess.js</valueProcess>
           <expose v="false" />
+          <title></title>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -469,6 +511,10 @@
           <name>PresetTitle_param</name>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>PhaseRequirementsFulfilled_parm</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityActionField>
@@ -519,6 +565,10 @@
           <name>PresetTitle_param</name>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>PhaseRequirementsFulfilled_parm</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityParameter>
@@ -664,6 +714,14 @@
           <name>CurrentPhase_param</name>
           <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>SalesprojectUid_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/salesprojectuid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>DisabledPhases_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/disabledphases_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityField>
@@ -694,8 +752,8 @@
       </dependency>
       <children>
         <entityParameter>
-          <name>ObjectType_param</name>
-          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/projecttypeattribute/children/objecttype_param/valueProcess.js</valueProcess>
+          <name>ParentId_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/projecttypeattribute/children/parentid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -709,6 +767,12 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
+      <children>
+        <entityParameter>
+          <name>PhaseRequirementsFulfilled_parm</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
     </entityProvider>
     <entityParameter>
       <name>PresetTitle_param</name>
@@ -732,6 +796,14 @@
       <name>SALESPROJECT_OBJECTTYPE</name>
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesproject_objecttype/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>MST_TEAM_ID</name>
+      <title>Team</title>
+      <linkedContext>MSTTeam</linkedContext>
+      <state>INVISIBLE</state>
+      <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js</stateProcess>
+      <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js</displayValueProcess>
+    </entityField>
     <entityField>
       <name>COUNT</name>
       <title>Count</title>
@@ -751,47 +823,68 @@
       <title>Classification</title>
       <groupable v="true" />
     </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+    </entityField>
+    <entityField>
+      <name>ACTIVE</name>
+    </entityField>
+    <entityConsumer>
+      <name>ChecklistEntryValues</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>ChecklistEntryValue_entity</entityName>
+        <fieldName>ChecklistEntryValues</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/checklistentryvalues/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/checklistentryvalues/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ChecklistId_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/checklistentryvalues/children/checklistid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>PhaseDisabledUids_param</name>
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/phasedisableduids_param/valueProcess.js</valueProcess>
+      <documentation>%aditoprj%/entity/Salesproject_entity/entityfields/phasedisableduids_param/documentation.adoc</documentation>
+    </entityParameter>
+    <entityParameter>
+      <name>PhaseRequirementsFulfilled_parm</name>
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/phaserequirementsfulfilled_parm/valueProcess.js</valueProcess>
+      <expose v="true" />
+      <documentation>%aditoprj%/entity/Salesproject_entity/entityfields/phaserequirementsfulfilled_parm/documentation.adoc</documentation>
+      <title></title>
+    </entityParameter>
+    <entityProvider>
+      <name>NoPhaseRequirementLoading</name>
+      <documentation>%aditoprj%/entity/Salesproject_entity/entityfields/nophaserequirementloading/documentation.adoc</documentation>
+      <children>
+        <entityParameter>
+          <name>PhaseRequirementsFulfilled_parm</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/nophaserequirementloading/children/phaserequirementsfulfilled_parm/valueProcess.js</valueProcess>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBInsert>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>75cc0cd9-09fc-46a8-b25d-369c4e9c0fd7</name>
-          <tableName>SALESPROJECT</tableName>
-          <primaryKey>SALESPROJECTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>a7b7adf3-c2fd-4688-9970-0000841712d7</name>
-          <tableName>ORGANISATION</tableName>
-          <primaryKey>ORGANISATIONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>b14de4fd-28a8-4503-9c29-0c4dd8b31607</name>
-          <tableName>AB_KEYWORD_ENTRY</tableName>
-          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-        <linkInformation>
-          <name>1c73b0de-0e70-421e-a8aa-660dbd177f81</name>
-          <tableName>CLASSIFICATIONSTORAGE</tableName>
-          <primaryKey>CLASSIFICATIONSTORAGEID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ENDDATE.value</name>
@@ -892,6 +985,10 @@
           <isFilterable v="true" />
           <isLookupFilter v="true" />
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>MST_TEAM_ID.value</name>
+          <recordfield>MST_TEAM.MST_TEAMID</recordfield>
+        </dbRecordFieldMapping>
         <aggregateFieldDbMapping>
           <name>COUNT_aggregate.value</name>
           <recordfield>SALESPROJECT.SALESPROJECTID</recordfield>
@@ -902,13 +999,64 @@
           <recordfield>CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE</recordfield>
           <isFilterable v="true" />
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>MST_TEAM_ID.displayValue</name>
+          <recordfield>MST_TEAM.TEAMNAME</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>SALESPROJECT.STARTDATE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ACTIVE.value</name>
+          <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>75cc0cd9-09fc-46a8-b25d-369c4e9c0fd7</name>
+          <tableName>SALESPROJECT</tableName>
+          <primaryKey>SALESPROJECTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>a7b7adf3-c2fd-4688-9970-0000841712d7</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>b14de4fd-28a8-4503-9c29-0c4dd8b31607</name>
+          <tableName>AB_KEYWORD_ENTRY</tableName>
+          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>1c73b0de-0e70-421e-a8aa-660dbd177f81</name>
+          <tableName>CLASSIFICATIONSTORAGE</tableName>
+          <primaryKey>CLASSIFICATIONSTORAGEID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+        <linkInformation>
+          <name>44fba381-e477-4a92-ba82-fc22c3d98c23</name>
+          <tableName>MST_TEAM</tableName>
+          <primaryKey>MST_TEAMID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtensionSet>
           <name>Attribute_filter</name>
           <filterFieldsProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess>
           <filterValuesProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess>
           <filterConditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess>
+          <isGroupable v="true" />
+          <groupQueryProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js</groupQueryProcess>
           <filtertype>BASIC</filtertype>
         </filterExtensionSet>
         <filterExtensionSet>
@@ -952,6 +1100,7 @@
     <indexRecordContainer>
       <name>index</name>
       <configMode>INDEXGROUP_DEFINITION</configMode>
+      <searchIndexGroups />
       <indexRecordAlias>Data_alias</indexRecordAlias>
       <query>%aditoprj%/entity/Salesproject_entity/recordcontainers/index/query.js</query>
       <affectedTables>
diff --git a/entity/Salesproject_entity/contentDescriptionProcess.js b/entity/Salesproject_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3e00d9c6738bf8df48a424143dcf200df3fece54
--- /dev/null
+++ b/entity/Salesproject_entity/contentDescriptionProcess.js
@@ -0,0 +1,14 @@
+import("Keyword_lib");
+import("system.translate");
+import("system.datetime");
+import("system.vars");
+import("system.result");
+import("KeywordRegistry_basic");
+
+var res = [translate.text("Phase") + ": " + KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(), vars.get("$field.PHASE")), 
+           translate.text("Classification: ") + vars.get("$field.CLASSIFICATIONVALUE"),
+           translate.text("Volume") + ": " + vars.get("$field.VOLUME.displayValue"),
+           translate.text("Probability") + ": " + vars.get("$field.PROBABILITY.displayValue"),
+           translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))];
+
+result.string(res.join(" | "));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/contentTitleProcess.js b/entity/Salesproject_entity/contentTitleProcess.js
index 5465ff4efe7615371cc39ef88551a10e36412f4c..dd3706b77cb1d6e5b485855656abd40eff8a5133 100644
--- a/entity/Salesproject_entity/contentTitleProcess.js
+++ b/entity/Salesproject_entity/contentTitleProcess.js
@@ -1,4 +1,6 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.PROJECTTITLE"));
\ No newline at end of file
+var res = [vars.get("$field.PROJECTCODE"), vars.get("$field.PROJECTTITLE"), vars.get("$field.STATUS.displayValue")];
+
+result.string(res.join(" | "));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/checklistentryvalues/children/checklistid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/checklistentryvalues/children/checklistid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7d139bbd2167e2965f317440302f3484f608b65e
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/checklistentryvalues/children/checklistid_param/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+import("Sql_lib");
+
+
+var checklistId = newSelect("CHECKLIST_ID")
+                        .from("SALESPROJECTPHASEDEFINITION")
+                        .where("SALESPROJECTPHASEDEFINITION.PHASE", vars.get("$field.PHASE"))
+                        .cell();
+
+result.string(checklistId);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/checklistentryvalues/children/objectrowid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/checklistentryvalues/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35c86fce60207e00936f99096038f1ee1f4519e9
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/checklistentryvalues/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+
+result.string(vars.get("$field.SALESPROJECTID"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8be21737ac0e517ee8a34c4aa62b253ffb0bada9
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.MST_TEAM_ID"));
\ No newline at end of file
diff --git a/entity/KnowledgeNewsFeed_entity/entityfields/consumer/children/isdashlet_param/valueProcess.js b/entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js
similarity index 100%
rename from entity/KnowledgeNewsFeed_entity/entityfields/consumer/children/isdashlet_param/valueProcess.js
rename to entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js
diff --git a/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8be21737ac0e517ee8a34c4aa62b253ffb0bada9
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.MST_TEAM_ID"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js b/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..598d579e335bcff49a488b488728055a608e6da4
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.PROJECTCODE"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js b/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..14271e0911152fe467c4283f2b8a6245288c0bc7
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js
@@ -0,0 +1,15 @@
+import("MSTeams_lib");
+import("system.result");
+import("Sql_lib");
+
+var res;
+
+if (MSTeamsUtils.isTeamsEnabled())
+    res = newSelect("TEAMNAME")
+        .from("MST_TEAM")
+        .whereIfSet("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID")
+        .cell(true);
+else
+    res = "";
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js b/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0a84b37c599e80e8b1295c2cd50f2aa0c548041b
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js
@@ -0,0 +1,11 @@
+import("MSTeams_lib");
+import("system.result");
+import("system.vars");
+import("system.neon");
+
+var res = neon.COMPONENTSTATE_INVISIBLE;
+var recordState = vars.get("$sys.recordstate");
+if (MSTeamsUtils.isTeamsEnabled() && recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT)
+    res = neon.COMPONENTSTATE_READONLY;
+    
+result.string(res);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/nophaserequirementloading/children/phaserequirementsfulfilled_parm/valueProcess.js b/entity/Salesproject_entity/entityfields/nophaserequirementloading/children/phaserequirementsfulfilled_parm/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..aa48a92d7c004d71e1191445a5c1f6766c8b7a37
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/nophaserequirementloading/children/phaserequirementsfulfilled_parm/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+
+//overwrite the value in the providers parameter so that the default parameter value will not be calculated
+result.string(false);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/nophaserequirementloading/documentation.adoc b/entity/Salesproject_entity/entityfields/nophaserequirementloading/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/phase/valueProcess.js b/entity/Salesproject_entity/entityfields/phase/valueProcess.js
index 7ff3aa7c6b2ad21f43934b9e4ff5131980b35005..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/entity/Salesproject_entity/entityfields/phase/valueProcess.js
+++ b/entity/Salesproject_entity/entityfields/phase/valueProcess.js
@@ -1,7 +0,0 @@
-import("KeywordRegistry_basic");
-import("system.neon");
-import("system.vars");
-import("system.result");
-
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
-    result.string($KeywordRegistry.salesprojectPhase$nqc());
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/phasedisableduids_param/documentation.adoc b/entity/Salesproject_entity/entityfields/phasedisableduids_param/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..50c7caa62a1b01ac720b798474a4309a556a5cd8
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/phasedisableduids_param/documentation.adoc
@@ -0,0 +1,5 @@
+Contains a stingified array of all IDs of the phases that are gonna be disabled by the stepper component.
+There are two reasons why a single step (phase) is disabled:
+
+. Only the next step to current selected step is available
+. The next step is not available when all pre conditions (the checklist items) are no fulfilled
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/phasedisableduids_param/valueProcess.js b/entity/Salesproject_entity/entityfields/phasedisableduids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f6c858840ee253227282c53265a3474d5a9044fb
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/phasedisableduids_param/valueProcess.js
@@ -0,0 +1,28 @@
+import("Keyword_lib");
+import("system.result");
+import("KeywordRegistry_basic");
+import("system.vars");
+import("Util_lib");
+
+var currentPhase = vars.get("$field.PHASE");
+var allPhasesInOrder = KeywordUtils.getEntryNamesAndIdsByContainer($KeywordRegistry.salesprojectPhase()).map(function (row){
+    return row[0];
+});
+
+var res = JSON.stringify(_getDisabledPhases(currentPhase));
+result.string(res);
+
+function _getDisabledPhases(pPhase)
+{
+    var phases = [];
+    var startIdx = allPhasesInOrder.indexOf(pPhase) + 1;//+1 to skip "ourself"
+    var requirementsForNextPhaseFulfilled = Utils.toBoolean(vars.get("$param.PhaseRequirementsFulfilled_parm"));
+    if (requirementsForNextPhaseFulfilled)
+        startIdx++;//skip the next phase to be able switch to the next phase
+    for (var i = startIdx; i < allPhasesInOrder.length; i++) 
+    {
+        phases.push(allPhasesInOrder[i]);
+    }
+    
+    return phases;
+}
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/phaserequirementsfulfilled_parm/documentation.adoc b/entity/Salesproject_entity/entityfields/phaserequirementsfulfilled_parm/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..1650b2a2441f3b1d421ef2f1b7cc23ed245867ac
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/phaserequirementsfulfilled_parm/documentation.adoc
@@ -0,0 +1,2 @@
+This param determines if all precondition have been fulfilled of the current phases checklist or not.
+Returns a boolean.
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/phaserequirementsfulfilled_parm/valueProcess.js b/entity/Salesproject_entity/entityfields/phaserequirementsfulfilled_parm/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d1da1efd8bcd5651e9609f671aca9ad902d1871c
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/phaserequirementsfulfilled_parm/valueProcess.js
@@ -0,0 +1,33 @@
+import("system.vars");
+import("system.result");
+import("system.entities");
+import("KeywordRegistry_basic");
+import("Sql_lib");
+
+var currentPhase = vars.get("$field.PHASE");
+
+result.string(_requirementsFulfilled(currentPhase));
+
+function _requirementsFulfilled(pPhase)
+{    
+    var fulFilled = true;    
+    var checklistId = newSelect("CHECKLIST_ID")
+        .from("SALESPROJECTPHASEDEFINITION")
+        .where("SALESPROJECTPHASEDEFINITION.PHASE", pPhase)
+        .cell();
+    var salesprojectId = vars.get("$field.SALESPROJECTID");
+    var loadingConf = entities.createConfigForLoadingRows()
+        .entity("ChecklistEntryValue_entity")
+        .fields(["IS_FULFILLED"])
+        .provider("ChecklistEntryValues")
+        .addParameter("ChecklistId_param", checklistId)
+        .addParameter("ObjectRowId_param", salesprojectId);
+
+    var rows = entities.getRows(loadingConf);
+    
+    rows.some(function(pRow){
+        if (pRow["IS_FULFILLED"] == 0) fulFilled = false;
+    });
+        
+    return fulFilled;
+}
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/projecttypeattribute/children/objecttype_param/valueProcess.js b/entity/Salesproject_entity/entityfields/projecttypeattribute/children/objecttype_param/valueProcess.js
deleted file mode 100644
index cc6924394ae950c43386275dda2c8db5d7a9c0ed..0000000000000000000000000000000000000000
--- a/entity/Salesproject_entity/entityfields/projecttypeattribute/children/objecttype_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("Context_lib");
-import("system.result");
-
-result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
diff --git a/entity/DistrictResponsible_entity/entityfields/departments/children/parentid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/projecttypeattribute/children/parentid_param/valueProcess.js
similarity index 53%
rename from entity/DistrictResponsible_entity/entityfields/departments/children/parentid_param/valueProcess.js
rename to entity/Salesproject_entity/entityfields/projecttypeattribute/children/parentid_param/valueProcess.js
index 246beece1e0537e3649fa0eeda40218eaa852864..ced111e47d6e67cf16c54610df4b5eb6b893961a 100644
--- a/entity/DistrictResponsible_entity/entityfields/departments/children/parentid_param/valueProcess.js
+++ b/entity/Salesproject_entity/entityfields/projecttypeattribute/children/parentid_param/valueProcess.js
@@ -1,4 +1,4 @@
 import("AttributeRegistry_basic");
 import("system.result");
 
-result.string($AttributeRegistry.departments());
\ No newline at end of file
+result.string($AttributeRegistry.salesprojectType());
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js
index 7d27814e727ef51078645ba0c65fa52b22dc4a3d..5c51a518dd93510c15eeb34fefb2b348853b5fd0 100644
--- a/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js
+++ b/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js
@@ -1,4 +1,5 @@
-import("system.vars");
 import("system.result");
+import("system.vars");
 
+        
 result.string(vars.get("$field.PHASE"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/disabledphases_param/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/disabledphases_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..bc33444f52e2367d42bf3b55176855a684b69dc1
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/disabledphases_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.PhaseDisabledUids_param"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/salesprojectuid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/salesprojectuid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35c86fce60207e00936f99096038f1ee1f4519e9
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/salesprojectuid_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+
+result.string(vars.get("$field.SALESPROJECTID"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js b/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js
index 507cd54e83ac2facada8bc80dae5fd6d8cbc9237..94792e060541b80096169073281f4bde6e365f2b 100644
--- a/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js
@@ -3,7 +3,6 @@ import("system.result");
 import("system.vars");
 import("Sql_lib");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(newWhereIfSet("SALESPROJECT.CONTACT_ID", "$param.ContactId_param")
                 .andIfSet("SALESPROJECT.STATUS", "$param.Status_param")
                 .toString());
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2db6219c71582c8d5d3fd91e4a8c1196fe87470b
--- /dev/null
+++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("AttributeFilter_lib");
+
+var sqlCond = AttributeFilterExtensionMaker.makeFilterGroupQuery("SALESPROJECT \n\
+    left join CONTACT on (SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID) \n\
+    left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)\n\
+    left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)\n\
+    left join MST_TEAMLINK on (SALESPROJECT.SALESPROJECTID = MST_TEAMLINK.OBJECT_ROWID and MST_TEAMLINK.OBJECT_TYPE = 'Salesproject')\n\
+    left join MST_TEAM on (MST_TEAM.MST_TEAMID = MST_TEAMLINK.MST_TEAM_ID)");
+result.string(sqlCond);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js
index cf3462e69ddf08a90ec5e2a230b1c0d8bcdd3856..2120bd1a538559a9c50f8af3831405f0471cfb70 100644
--- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js
+++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js
@@ -16,7 +16,7 @@ var sql = newSelect(isCount ? "1" : columns)
     .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATION.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID")
         .and("CLASSIFICATION.OBJECT_TYPE", "Salesproject")
         .and("CLASSIFICATION.CLASSIFICATIONTYPE_ID", classificationId))
-    .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID")
+    .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID = CLASSIFICATION.VALUE")
     .whereIfSet(condition.trim())
     .groupBy(groupedColumns);
 
diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js
index 341994efdf214b16a3c8dc9ba3e222c61f1323f8..308e821efaad27ef7cc947f8fcd0710229304998 100644
--- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js
+++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js
@@ -25,7 +25,7 @@ else
 {
     stmt.select([groupedList , KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectPhase(),"AB_KEYWORD_ENTRY.KEYID"), "count(*)", "count(*)"])
     if (order != null)
-        stmt.orderBy("AB_KEYWORD_ENTRY.SORTING, " +order);
+        stmt.orderBy("AB_KEYWORD_ENTRY.SORTING, " + order);
 }
 
 result.string(stmt.toString());
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js
index 435ef5659c496dabc83c5ec578c05a94d5b4ed6a..5532af0f5da27e0cb1351373a063ca94cf02f786 100644
--- a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js
+++ b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js
@@ -6,4 +6,6 @@ import("KeywordRegistry_basic");
 result.string("SALESPROJECT \n\
     left join CONTACT on (SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID) \n\
     left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)\n\
-    left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)");
\ No newline at end of file
+    left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)\n\
+    left join MST_TEAMLINK on (SALESPROJECT.SALESPROJECTID = MST_TEAMLINK.OBJECT_ROWID and MST_TEAMLINK.OBJECT_TYPE = 'Salesproject')\n\
+    left join MST_TEAM on (MST_TEAM.MST_TEAMID = MST_TEAMLINK.MST_TEAM_ID)");
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js
index 38fe9698031dd654c3a8a1e3a37aa506cbb72a8e..ac292d8633e479eb892884d9d62652463b34c980 100644
--- a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js
@@ -1,4 +1,3 @@
-import("Classification_lib");
 import("Workflow_lib");
 import("Context_lib");
 import("Attribute_lib");
@@ -17,11 +16,6 @@ if (vars.get("$field.PROJECTTYPE"))
         .insertAttribute(vars.get("$field.PROJECTTYPE"), true);
 }
 
-var salesprojectId = vars.get("$field.SALESPROJECTID");
-var contextname = vars.get("$sys.currentcontextname");
-
-ClassificationUtils.insertEmptyClassification(salesprojectId, contextname);
-
 //start the execution in afterOperatingState, because here the dataset is not yet inserted
 vars.set("$context.workflowQueue", {});
 WorkflowSignalSender.inserted();
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
index e08b7fd3e83a3071c963aaf2bca074bd9bfaf3f7..b81c1dd9c2cada650eca9c3555eb0c6cb51416aa 100644
--- a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
@@ -9,6 +9,7 @@ import("system.db");
 import("system.question");
 import("KeywordRegistry_basic");
 import("Keyword_lib");
+import("system.teams");
 
 var needToUpdateForecast = null;
 var rowdata = vars.get("$local.rowdata");
@@ -97,20 +98,26 @@ vars.get("$local.changed").forEach(function(fieldName) {
     }
 });
 
+var [serviceUrl, channelId] = newSelect(["SERVICE_URL", "GENERAL_CHANNELID"])
+    .from("MST_TEAM")
+    .where("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID")
+    .arrayRow();
+
+if (serviceUrl)
+    teams.sendNotification(serviceUrl, channelId, "Etwas hat sich im Projekt "+ vars.get("$field.PROJECTTITLE") +" geaendert");
+
 if (needToUpdateForecast)
     Salesproject.notifyToUpdateForecast();
 
 WorkflowSignalSender.updated();
 
-neon.refreshAll();
-
 function _updateReasons()
 {
     var reasons = rowdata["SALESPROJECT.REASONS"];
     if(reasons)
     {
-        newWhere("SALESPROJECT.SALESPROJECTID", vars.getString("$local.uid"))
-                        .updateData(true, "SALESPROJECT", ["REASONS"], null, [reasons]);
+        newWhere("SALESPROJECT.SALESPROJECTID", "$local.uid")
+            .updateFields({"REASONS": reasons});
     }
 }
 
@@ -118,7 +125,7 @@ function _clearReasons(pReallyClear)
 {
     if (pReallyClear)
     {
-        newWhere("SALESPROJECT.SALESPROJECTID", vars.getString("$local.uid"))
-                        .updateData(true, "SALESPROJECT", ["REASONS"], null, [""]);
+        newWhere("SALESPROJECT.SALESPROJECTID", "$local.uid")
+            .updateFields({"REASONS": ""});
     }
 }
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..d91a07968d0c061d1891c1479802d377dc7f2167
--- /dev/null
+++ b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
@@ -0,0 +1,6 @@
+import("Context_lib");
+import("system.result");
+import("KeywordRegistry_basic");
+
+var activArr = [$KeywordRegistry.salesprojectState$open(), $KeywordRegistry.salesprojectState$postponed()];
+result.string(ContextUtils.buildActiveCaseWhen(activArr, "SALESPROJECT.STATUS"));
\ No newline at end of file
diff --git a/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod
index bacd4cd101bf6204fbe070899602d47442afcd16..b3181e070d98eda13c99a61241dd4c8bb9a8e7e2 100644
--- a/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod
+++ b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>SalutationDistinct_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/SalutationDistinct_entity/documentation.adoc</documentation>
diff --git a/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod
index e23ed314f9c293c89abced5dd2aad800d5deddd9..967342e884d3c8323471238a7e58b891b08dde4b 100644
--- a/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod
+++ b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>SalutationTitleDistinct_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/SalutationTitleDistinct_entity/documentation.adoc</documentation>
diff --git a/entity/Salutation_entity/Salutation_entity.aod b/entity/Salutation_entity/Salutation_entity.aod
index 48def7ff858d71be38bba90a5da0a11ae0c556a1..09ab3134e33c28818a418c5219f9f8ffbea238b8 100644
--- a/entity/Salutation_entity/Salutation_entity.aod
+++ b/entity/Salutation_entity/Salutation_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Salutation_entity</name>
+  <title>Salutation</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Salutation_entity/documentation.adoc</documentation>
-  <title>Salutation</title>
   <iconId>VAADIN:COMMENT_ELLIPSIS</iconId>
   <titlePlural>Salutations</titlePlural>
   <recordContainer>db</recordContainer>
@@ -87,17 +87,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <orderClauseProcess>%aditoprj%/entity/Salutation_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>4cbc9860-9a09-4250-8540-7017c7d22545</name>
-          <tableName>SALUTATION</tableName>
-          <primaryKey>SALUTATIONID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>HEADLINE.value</name>
@@ -150,6 +141,15 @@
           <expression>%aditoprj%/entity/Salutation_entity/recordcontainers/db/recordfieldmappings/isolanguage.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>4cbc9860-9a09-4250-8540-7017c7d22545</name>
+          <tableName>SALUTATION</tableName>
+          <primaryKey>SALUTATIONID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod
index a72c0501c5a9c495afa42ec2453e1b715c50867c..6109b0da0af9beceaa48ca285e4190ba1745554e 100644
--- a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod
+++ b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>SerialLetterAddRecipients_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/SerialLetterAddRecipients_entity/documentation.adoc</documentation>
diff --git a/entity/SerialLetter_entity/SerialLetter_entity.aod b/entity/SerialLetter_entity/SerialLetter_entity.aod
index 315503bad3d29396d5daeabbf8bff267ab8147d1..0162e4d6232909de3ec02279274008a632cec774 100644
--- a/entity/SerialLetter_entity/SerialLetter_entity.aod
+++ b/entity/SerialLetter_entity/SerialLetter_entity.aod
@@ -1,10 +1,10 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>SerialLetter_entity</name>
+  <title>Serial Letter</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/SerialLetter_entity/documentation.adoc</documentation>
   <icon>VAADIN:ENVELOPES</icon>
-  <title>Serial Letter</title>
   <grantDeleteProcess>%aditoprj%/entity/SerialLetter_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/SerialLetter_entity/contentTitleProcess.js</contentTitleProcess>
   <onValidation>%aditoprj%/entity/SerialLetter_entity/onValidation.js</onValidation>
@@ -213,27 +213,11 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/SerialLetter_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <onDBInsert>%aditoprj%/entity/SerialLetter_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/SerialLetter_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>5d9c983a-b129-437a-ae9d-203fb8ad03ec</name>
-          <tableName>SERIALLETTER</tableName>
-          <primaryKey>SERIALLETTERID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>bc81b1c3-ce99-4581-ac70-4e24bebb0c75</name>
-          <tableName>DOCUMENTTEMPLATE</tableName>
-          <primaryKey>DOCUMENTTEMPLATEID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DOCUMENTTEMPLATE_ID.value</name>
@@ -272,6 +256,22 @@
           <expression>%aditoprj%/entity/SerialLetter_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>5d9c983a-b129-437a-ae9d-203fb8ad03ec</name>
+          <tableName>SERIALLETTER</tableName>
+          <primaryKey>SERIALLETTERID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>bc81b1c3-ce99-4581-ac70-4e24bebb0c75</name>
+          <tableName>DOCUMENTTEMPLATE</tableName>
+          <primaryKey>DOCUMENTTEMPLATEID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/SerialLetter_entity/onValidation.js b/entity/SerialLetter_entity/onValidation.js
index d0d694d8f85e0251a0d1ee7ebfd767e45e529ac3..f2f4506feaf95743c3ecd8e90f1e051043e7ed56 100644
--- a/entity/SerialLetter_entity/onValidation.js
+++ b/entity/SerialLetter_entity/onValidation.js
@@ -2,7 +2,15 @@ import("system.neon");
 import("system.result");
 import("system.vars");
 import("DocumentTemplate_lib");
+import("Document_lib");
 
-[content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$field.DOCUMENTTEMPLATE_ID"), new FileUpload(vars.get("$field.bindata")));
-if (type != DocumentTemplate.types.ODT && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
+var templateId = vars.get("$field.DOCUMENTTEMPLATE_ID");
+var upload = new FileUpload(vars.get("$field.bindata"));
+var template;
+if (upload.isFilled())
+    template = DocumentTemplate.fromUpload(upload);
+else if (templateId)
+    template = DocumentTemplateUtils.getTemplate(templateId);
+
+if (template && template.type != DocumentTemplate.types.ODT)
     result.string(DocumentTemplate.getSerialLetterODTOnlyMessage());
\ No newline at end of file
diff --git a/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js b/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js
index 9b94cb43201f9ff942608adfb3f3a694a5a555b6..20c7fc0a0ddd70bb3075f0f5c90bd95d19e01233 100644
--- a/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js
@@ -18,8 +18,6 @@ var template = DocumentTemplate.fromUpload(bindata);
 if (template.content)
 {
     SingleBinaryUtils.set("SERIALLETTER", "DOCUMENT", letterId, template.content, template.filename, "");
-    
-    neon.refresh(["$field.content"]);
 }
 
 WorkflowSignalSender.updated();
\ No newline at end of file
diff --git a/entity/SingleObject_entity/SingleObject_entity.aod b/entity/SingleObject_entity/SingleObject_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..c6b3b52e6d48e650d3b579fe99f38b6ddc2e84f4
--- /dev/null
+++ b/entity/SingleObject_entity/SingleObject_entity.aod
@@ -0,0 +1,46 @@
+<?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.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
+  <name>SingleObject_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>TARGET_CONTEXT</name>
+    </entityField>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityParameter>
+      <name>TargetContext_param</name>
+      <expose v="true" />
+      <mandatory v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>TargetId_param</name>
+      <expose v="true" />
+      <mandatory v="true" />
+    </entityParameter>
+    <entityProvider>
+      <name>OneObject</name>
+      <targetContextField>TARGET_CONTEXT</targetContextField>
+      <targetIdField>UID</targetIdField>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <recordFieldMappings>
+        <jDitoRecordFieldMapping>
+          <name>UID.value</name>
+        </jDitoRecordFieldMapping>
+      </recordFieldMappings>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/Social_entity/Social_entity.aod b/entity/Social_entity/Social_entity.aod
index 41ff421fb24975e2ac5117cc70209fbb641ce1e8..1f3883abe85bdf5d1de98470cae7fb076cc4b905 100644
--- a/entity/Social_entity/Social_entity.aod
+++ b/entity/Social_entity/Social_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Social_entity</name>
+  <title>Social Media</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Social_entity/documentation.adoc</documentation>
-  <title>Social Media</title>
   <entityFields>
     <entityField>
       <name>TWITTER_TIMELINE</name>
@@ -25,9 +25,9 @@
     </entityField>
     <entityParameter>
       <name>Account_param</name>
-      <title>User</title>
       <expose v="true" />
       <mandatory v="true" />
+      <title>User</title>
       <description>User</description>
     </entityParameter>
     <entityProvider>
diff --git a/entity/Stock_entity/Stock_entity.aod b/entity/Stock_entity/Stock_entity.aod
index 79a929f5a6b9403a98d9b9d03c1d6c07c7401b98..d41f642e3ef523e7714df230e050a4e4b1891007 100644
--- a/entity/Stock_entity/Stock_entity.aod
+++ b/entity/Stock_entity/Stock_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Stock_entity</name>
+  <title>Stock</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Stock_entity/documentation.adoc</documentation>
-  <title>Stock</title>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityField>
@@ -116,19 +116,10 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <maximumDbRows v="0" />
       <conditionProcess>%aditoprj%/entity/Stock_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Stock_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>d291e552-0b6a-48e1-a830-1558beb5f58e</name>
-          <tableName>STOCK</tableName>
-          <primaryKey>STOCKID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>ENTRYDATE.value</name>
@@ -163,6 +154,15 @@
           <expression>%aditoprj%/entity/Stock_entity/recordcontainers/db/recordfieldmappings/warehouse.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>d291e552-0b6a-48e1-a830-1558beb5f58e</name>
+          <tableName>STOCK</tableName>
+          <primaryKey>STOCKID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Stock_entity/recordcontainers/db/conditionProcess.js b/entity/Stock_entity/recordcontainers/db/conditionProcess.js
index eb881a660fe9112a6d7756fe734491ad20d45165..b0ca1d729b574c54f13543090012d62a9d8ca288 100644
--- a/entity/Stock_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Stock_entity/recordcontainers/db/conditionProcess.js
@@ -1,6 +1,5 @@
 import("system.result");
 import("Sql_lib");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(newWhereIfSet("STOCK.PRODUCT_ID", "$param.ProductId_param")
                 .toString());
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/SupportTicket_entity.aod b/entity/SupportTicket_entity/SupportTicket_entity.aod
index a289e1083cc46db17d59d4a393a87e5537cb64f2..18411b1b108aadcd8107ce353aed8febb31b5fc8 100644
--- a/entity/SupportTicket_entity/SupportTicket_entity.aod
+++ b/entity/SupportTicket_entity/SupportTicket_entity.aod
@@ -1,10 +1,11 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>SupportTicket_entity</name>
+  <title>Support Ticket</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/SupportTicket_entity/documentation.adoc</documentation>
-  <title>Support Ticket</title>
   <contentTitleProcess>%aditoprj%/entity/SupportTicket_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/SupportTicket_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <afterUiInit>%aditoprj%/entity/SupportTicket_entity/afterUiInit.js</afterUiInit>
   <onValidation>%aditoprj%/entity/SupportTicket_entity/onValidation.js</onValidation>
   <useFavorites v="true" />
@@ -13,6 +14,27 @@
   <titlePlural>Support Tickets</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityProvider>
       <name>#PROVIDER</name>
       <dependencies>
@@ -459,11 +481,16 @@
       <name>TASK_ICON_COLOR</name>
       <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/task_icon_color/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+    </entityField>
+    <entityField>
+      <name>ACTIVE</name>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <isRequireContainerFiltering v="true" />
       <fromClauseProcess>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
@@ -471,22 +498,7 @@
       <onDBInsert>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>512c662b-33f6-4491-bd24-a8b862f2de84</name>
-          <tableName>TICKET</tableName>
-          <primaryKey>TICKETID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>4e818524-bb9c-46e7-a336-e48da60c06d1</name>
-          <tableName>TASK</tableName>
-          <primaryKey>TASKID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>CODE.value</name>
@@ -597,7 +609,31 @@
           <recordfield>TICKET.TICKETID</recordfield>
           <aggregateType>COUNT</aggregateType>
         </aggregateFieldDbMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>TASK.START_DATE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ACTIVE.value</name>
+          <expression>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>512c662b-33f6-4491-bd24-a8b862f2de84</name>
+          <tableName>TICKET</tableName>
+          <primaryKey>TICKETID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>4e818524-bb9c-46e7-a336-e48da60c06d1</name>
+          <tableName>TASK</tableName>
+          <primaryKey>TASKID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
       <filterExtensions>
         <filterExtension>
           <name>Favorite_filter</name>
diff --git a/entity/SupportTicket_entity/contentDescriptionProcess.js b/entity/SupportTicket_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1d91623c4ae8f611109db99446b52adabd903dfd
--- /dev/null
+++ b/entity/SupportTicket_entity/contentDescriptionProcess.js
@@ -0,0 +1,18 @@
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.translate");
+import("system.datetime");
+import("system.vars");
+import("system.result");
+
+var res = [];
+
+if(vars.get("$field.TASK_EDITOR_CONTACT_ID"))
+    res = [translate.text("{$TICKET_EDITOR}") + ": " + vars.get("$field.TASK_EDITOR_CONTACT_ID.displayValue")];
+    
+  res.push(translate.text("Maturity") + ": " + datetime.toDate(vars.get("$field.TASK_MATURITY_DATE"), translate.text("dd.MM.yyyy")));
+  res.push(translate.text("Progress") + ": " + KeywordUtils.getViewValue($KeywordRegistry.taskProgress(), vars.get("$field.TASK_PROGRESS")));
+  res.push(translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy")));
+
+result.string(res.join(" | "));
+    
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/contentTitleProcess.js b/entity/SupportTicket_entity/contentTitleProcess.js
index aae1064b78ee311afec427a24872f4136046df42..626ec76cac0a3020000f229da4e128040bd21cd7 100644
--- a/entity/SupportTicket_entity/contentTitleProcess.js
+++ b/entity/SupportTicket_entity/contentTitleProcess.js
@@ -1,4 +1,9 @@
+import("KeywordRegistry_basic");
+import("Keyword_lib");
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.TASK_SUBJECT"))
\ No newline at end of file
+
+var res = [vars.get("$field.TASK_SUBJECT"), vars.get("$field.TASK_STATUS.displayValue")];
+
+result.string(res.join(" | "))
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js b/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js
index 1cc6eb48ac1da6603edbdb729d16af958c269aa5..058d0ec06940cfc36ccf27bfc13ed7dc8b315518 100644
--- a/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js
@@ -31,5 +31,4 @@ if (vars.get("$param.RowId_param") && vars.get("$param.ObjectId_param"))
 cond.andIfSet("TASK.PARENT_ID", "$param.ParentId_param");
 cond.andIfSet("TASK.PARENT_CONTEXT", "$param.ParentContext_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..26673fbc448c10ccc7ef9e1e6bc5fc11d1fed04d
--- /dev/null
+++ b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js
@@ -0,0 +1,7 @@
+import("Context_lib");
+import("system.result");
+import("KeywordRegistry_basic");
+
+var activArr = [$KeywordRegistry.taskStatus$new(), $KeywordRegistry.taskStatus$unassigned(),  $KeywordRegistry.taskStatus$assigned(),
+$KeywordRegistry.taskStatus$inProgress(), $KeywordRegistry.taskStatus$waiting(), $KeywordRegistry.taskStatus$customerChecks()];
+result.string(ContextUtils.buildActiveCaseWhen(activArr, "TASK.STATUS"));
\ No newline at end of file
diff --git a/entity/TaskLink_entity/TaskLink_entity.aod b/entity/TaskLink_entity/TaskLink_entity.aod
index 759282daf39bbcbd59b7a37223e1c9d4873dfaca..b78981407b37c38dbf1590f0f6e5f852109c2214 100644
--- a/entity/TaskLink_entity/TaskLink_entity.aod
+++ b/entity/TaskLink_entity/TaskLink_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>TaskLink_entity</name>
+  <title>Connection</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/TaskLink_entity/documentation.adoc</documentation>
-  <title>Connection</title>
   <titlePlural>Connections</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -95,17 +95,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>75141ff0-c6de-4dfd-ad35-6bf2fc931fb9</name>
-          <tableName>TASKLINK</tableName>
-          <primaryKey>TASKLINKID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>OBJECT_ROWID.value</name>
@@ -124,6 +115,15 @@
           <recordfield>TASKLINK.TASKLINKID</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>75141ff0-c6de-4dfd-ad35-6bf2fc931fb9</name>
+          <tableName>TASKLINK</tableName>
+          <primaryKey>TASKLINKID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js b/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js
index c87f4789fa9fd244ebff4881a6a8e59bffe58040..23f715a5e9d43ac6b18f2b7d009a7742eef77d34 100644
--- a/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js
+++ b/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js
@@ -6,5 +6,5 @@ import("Context_lib");
 
 if(vars.get("$field.OBJECT_ROWID") && vars.get("$field.OBJECT_TYPE"))
 {
-    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
+    result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")));
 }
\ No newline at end of file
diff --git a/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js b/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js
index 1b4535c9556a37f6e69084f7570ea2fde14e7e6d..2b98b257ac0a7f777b4ccfab082c730b8681128e 100644
--- a/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js
@@ -3,5 +3,4 @@ import("Sql_lib");
 
 var cond = newWhereIfSet("TASKLINK.TASK_ID", "$param.TaskId_param");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 0ed30f9267ac826ee8fa702c136cbdb52ddb1502..a1a958117bca2246373178815e0234116e0a4cb2 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -1,11 +1,12 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Task_entity</name>
+  <title>Task</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Task_entity/documentation.adoc</documentation>
-  <title>Task</title>
   <grantDeleteProcess>%aditoprj%/entity/Task_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Task_entity/contentTitleProcess.js</contentTitleProcess>
+  <contentDescriptionProcess>%aditoprj%/entity/Task_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <afterUiInit>%aditoprj%/entity/Task_entity/afterUiInit.js</afterUiInit>
   <onValidation>%aditoprj%/entity/Task_entity/onValidation.js</onValidation>
   <initFilterProcess>%aditoprj%/entity/Task_entity/initFilterProcess.js</initFilterProcess>
@@ -14,6 +15,27 @@
   <titlePlural>Tasks</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
     <entityProvider>
       <name>#PROVIDER</name>
       <recordContainer>db</recordContainer>
@@ -96,10 +118,10 @@
     </entityField>
     <entityField>
       <name>PROTECTIONLEVEL</name>
-      <title>Protected</title>
       <contentType>BOOLEAN</contentType>
       <contentTypeProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/contentTypeProcess.js</contentTypeProcess>
       <dropDownProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/dropDownProcess.js</dropDownProcess>
+      <titleProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/titleProcess.js</titleProcess>
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -503,25 +525,19 @@
       <name>ICON_COLOR</name>
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/icon_color/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBInsert>%aditoprj%/entity/Task_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Task_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Task_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
-      <linkInformation>
-        <linkInformation>
-          <name>6dfe6f25-2b83-413b-89e4-5c5b9839be2e</name>
-          <tableName>TASK</tableName>
-          <primaryKey>TASKID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DESCRIPTION.value</name>
@@ -626,6 +642,15 @@
           <aggregateType>COUNT</aggregateType>
         </aggregateFieldDbMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>6dfe6f25-2b83-413b-89e4-5c5b9839be2e</name>
+          <tableName>TASK</tableName>
+          <primaryKey>TASKID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Task_entity/contentDescriptionProcess.js b/entity/Task_entity/contentDescriptionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b07a72fe7cc543e3bedc5d5604f12f28769ffb6b
--- /dev/null
+++ b/entity/Task_entity/contentDescriptionProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.datetime");
+import("system.vars");
+import("system.result");
+result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy")));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/newoffer/onActionProcess.js b/entity/Task_entity/entityfields/newoffer/onActionProcess.js
index 7d951f8def4f9946c424f94ef6d137410da2c862..f80e61d2535e668b8afa4ad5ff2767e3ee068aaf 100644
--- a/entity/Task_entity/entityfields/newoffer/onActionProcess.js
+++ b/entity/Task_entity/entityfields/newoffer/onActionProcess.js
@@ -1,4 +1,20 @@
+import("Sql_lib");
 import("system.vars");
 import("Offer_lib");
 
-OfferUtils.createNewOffer();
+var links = newSelect("TASKLINK.OBJECT_TYPE, TASKLINK.OBJECT_ROWID")
+                                .from("TASKLINK")
+                                .where("TASKLINK.TASK_ID", vars.get("$field.TASKID"))
+                                .and("TASKLINK.OBJECT_TYPE", ["Person", "Organisation", "Salesproject"], SqlBuilder.IN())
+                                .table();
+
+//make a map from the 2d-array to easily access the ids by objectType
+var linkMap = new Map(links);
+
+//if we only have one Person: that person is the contact.
+//otherwise: we check for organisations: if we only have one then we use that one.
+//same logic for salesprojects: if we have only one: use that one
+var contactId = linkMap.get("Person") || linkMap.get("Organisation");
+var salesprojectId = linkMap.get("Salesproject");
+
+OfferUtils.createNewOffer("Salesproject", salesprojectId, contactId);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35102b677cbb52d1d4a9723a42cceaef3fd5ea03
--- /dev/null
+++ b/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.cancelAction();
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a0350f5edebe397b96a84766e7cdb8d99f77ee5
--- /dev/null
+++ b/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..87553a373a055879a524774695e4c18bcab617e9
--- /dev/null
+++ b/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Observation_lib");
+
+result.string(Observation.cancelActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/Task_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66cf7bc2991c142ee0753fec88e151d3dcf71141
--- /dev/null
+++ b/entity/Task_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
@@ -0,0 +1,3 @@
+import("Observation_lib");
+
+Observation.insertAction();
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/Task_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..461276ea5e1e98e967047207ac6d654225a1b1c6
--- /dev/null
+++ b/entity/Task_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("Observation_lib");
+import("system.neon");
+
+if (!Observation.countObservations())
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/Task_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abdfbd3d7c4aff7beba9ff22cbb39abc8d195a30
--- /dev/null
+++ b/entity/Task_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Observation_lib");
+import("system.vars");
+
+result.string(Observation.observeActionTitle(vars.get("$sys.selection")));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/priority/valueProcess.js b/entity/Task_entity/entityfields/priority/valueProcess.js
index 0639e8287e8797db0bd0a19c31781facd3409367..ee23436dbb536eaf7196891941f62bb15384741c 100644
--- a/entity/Task_entity/entityfields/priority/valueProcess.js
+++ b/entity/Task_entity/entityfields/priority/valueProcess.js
@@ -4,5 +4,7 @@ import("system.neon");
 import("system.vars");
 import("KeywordRegistry_basic");
 
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+{
     result.string($KeywordRegistry.taskPriority$low());
+}
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/protectionlevel/titleProcess.js b/entity/Task_entity/entityfields/protectionlevel/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c2997149287a6b22c3e22a5d4bc48d145b314f25
--- /dev/null
+++ b/entity/Task_entity/entityfields/protectionlevel/titleProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.translate");
+
+//We already changed this title serveral times
+//This will be the last time and it's called "Private". Period.
+//The reason why this is in a titleProcess and not in the title property is just to write this comment you're reading.
+//Note: Whithin a porject feel free to change the title
+result.string(translate.text("Private"));
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/conditionProcess.js b/entity/Task_entity/recordcontainers/db/conditionProcess.js
index d8acb4d11fe9b9f26e89c697f74bf887f928b04c..c74072623eb5c8a5bed06b76d70c73084a0815bd 100644
--- a/entity/Task_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Task_entity/recordcontainers/db/conditionProcess.js
@@ -48,6 +48,5 @@ else
     }
     cond.and(protectionLevelCondition);
   
-    //TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
     result.string(cond.toString());
 }
\ No newline at end of file
diff --git a/entity/Timetracking_entity/Timetracking_entity.aod b/entity/Timetracking_entity/Timetracking_entity.aod
index fc202492285ba2545d3502221077c49200a9f2cf..7801512b42160c39b811dd0b390d34a678aa0b96 100644
--- a/entity/Timetracking_entity/Timetracking_entity.aod
+++ b/entity/Timetracking_entity/Timetracking_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Timetracking_entity</name>
+  <title>Timetracking</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Timetracking_entity/documentation.adoc</documentation>
-  <title>Timetracking</title>
   <titlePlural>Timetracking entries</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -126,25 +126,9 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/Timetracking_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>56c74a11-cd33-44e3-9d41-da54d64a997c</name>
-          <tableName>TIMETRACKING</tableName>
-          <primaryKey>TIMETRACKINGID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>c2ef3832-61c5-4d49-8484-f3188b95e277</name>
-          <tableName>PERSON</tableName>
-          <primaryKey>PERSONID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>INFO.value</name>
@@ -179,6 +163,22 @@
           <recordfield>TIMETRACKING.TRACKINGMINUTES</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>56c74a11-cd33-44e3-9d41-da54d64a997c</name>
+          <tableName>TIMETRACKING</tableName>
+          <primaryKey>TIMETRACKINGID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+        <linkInformation>
+          <name>c2ef3832-61c5-4d49-8484-f3188b95e277</name>
+          <tableName>PERSON</tableName>
+          <primaryKey>PERSONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js b/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js
index 958be5716236ef7cd77321a1cd61ca0e15d31be5..9b3b9ce651860d82a5e85c54ee239ed3b615d424 100644
--- a/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js
@@ -3,7 +3,6 @@ import("system.db");
 import("system.result");
 import("Sql_lib");
 
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
 result.string(newWhereIfSet("TIMETRACKING.OBJECT_ID", "$param.ObjectId_param")
                 .andIfSet("TIMETRACKING.ROW_ID", "$param.RowId_param")
                 .toString());
diff --git a/entity/TurnoverTree_entity/TurnoverTree_entity.aod b/entity/TurnoverTree_entity/TurnoverTree_entity.aod
index d275ce95c96dde9bf3a79215960a2701d79a014d..dc19068f6d1d91e2fafb207c321293bf91982ff3 100644
--- a/entity/TurnoverTree_entity/TurnoverTree_entity.aod
+++ b/entity/TurnoverTree_entity/TurnoverTree_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>TurnoverTree_entity</name>
+  <title>Tree</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/TurnoverTree_entity/documentation.adoc</documentation>
-  <title>Tree</title>
   <iconId>NEON:LOGO</iconId>
   <recordContainer>jdito</recordContainer>
   <entityFields>
diff --git a/entity/Turnover_entity/Turnover_entity.aod b/entity/Turnover_entity/Turnover_entity.aod
index 0737e151be2ff946ccf52770b97fc832bbae30ea..5949a1679dc99db0137406414b81cb4b22c7d8e8 100644
--- a/entity/Turnover_entity/Turnover_entity.aod
+++ b/entity/Turnover_entity/Turnover_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Turnover_entity</name>
+  <title>Turnover</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Turnover_entity/documentation.adoc</documentation>
-  <title>Turnover</title>
   <siblings>
     <element>Forecast_entity</element>
   </siblings>
diff --git a/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod b/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod
index 1abb59ffc8bc30f70492cbe64475651d62da62a8..5965389eccc5606e7158e56a413b65b8fe3f5d39 100644
--- a/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod
+++ b/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>UniversalFileProcessor_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/UniversalFileProcessor_entity/documentation.adoc</documentation>
diff --git a/entity/UnlinkedMailMappingLink_entity/UnlinkedMailMappingLink_entity.aod b/entity/UnlinkedMailMappingLink_entity/UnlinkedMailMappingLink_entity.aod
index 32072b9ff371549124437be92adcfdb598f6be37..b769af088b5a4c8e5d959bcd29ed97aa951acb1f 100644
--- a/entity/UnlinkedMailMappingLink_entity/UnlinkedMailMappingLink_entity.aod
+++ b/entity/UnlinkedMailMappingLink_entity/UnlinkedMailMappingLink_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>UnlinkedMailMappingLink_entity</name>
+  <title>${UNLINKEDMAILMAPPING_ADDITIONAL_LINK}</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/UnlinkedMailMappingLink_entity/documentation.adoc</documentation>
-  <title>${UNLINKEDMAILMAPPING_ADDITIONAL_LINK}</title>
   <titlePlural>${UNLINKEDMAILMAPPING_ADDITIONAL_LINKS}</titlePlural>
   <recordContainer>jdito</recordContainer>
   <entityFields>
diff --git a/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod b/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod
index 42eb73a718ae614066df3597d25cc982dc96b69b..54532cd9c86648b4b23ca5242bbf2dd46f5ae71f 100644
--- a/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod
+++ b/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>UnlinkedMailMappingWrapper_entity</name>
+  <title>Link unlinked e-mail</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/documentation.adoc</documentation>
-  <title>Link unlinked e-mail</title>
   <recordContainer>dummyJdito</recordContainer>
   <entityFields>
     <entityProvider>
diff --git a/entity/UnlinkedMail_entity/UnlinkedMail_entity.aod b/entity/UnlinkedMail_entity/UnlinkedMail_entity.aod
index 7cc21c5dc1d1bc6760394038399e025abe51dc7d..3d3bf8f882d37350f1387d165d08824a0ceb3129 100644
--- a/entity/UnlinkedMail_entity/UnlinkedMail_entity.aod
+++ b/entity/UnlinkedMail_entity/UnlinkedMail_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>UnlinkedMail_entity</name>
+  <title>Unlinked e-mail</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/UnlinkedMail_entity/documentation.adoc</documentation>
-  <title>Unlinked e-mail</title>
   <grantCreate v="false" />
   <grantUpdate v="false" />
   <iconId>VAADIN:AT</iconId>
@@ -68,17 +68,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <orderClauseProcess>%aditoprj%/entity/UnlinkedMail_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>eb823408-6792-4374-b6c5-749ee836c47a</name>
-          <tableName>AB_UNLINKEDMAIL</tableName>
-          <primaryKey>AB_UNLINKEDMAILID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>AB_UNLINKEDMAILID.value</name>
@@ -105,6 +96,15 @@
           <recordfield>AB_UNLINKEDMAIL.SUBJECT</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>eb823408-6792-4374-b6c5-749ee836c47a</name>
+          <tableName>AB_UNLINKEDMAIL</tableName>
+          <primaryKey>AB_UNLINKEDMAILID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/UserhelpResources_entity/UserhelpResources_entity.aod b/entity/UserhelpResources_entity/UserhelpResources_entity.aod
index 32f253d41162e3e5c8b4e33f1bcba45bdc803965..39dd475719ae970e55ee4ecd00e9b0f05458f10d 100644
--- a/entity/UserhelpResources_entity/UserhelpResources_entity.aod
+++ b/entity/UserhelpResources_entity/UserhelpResources_entity.aod
@@ -1,5 +1,5 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>UserhelpResources_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/UserhelpResources_entity/documentation.adoc</documentation>
@@ -12,6 +12,11 @@
     </entityField>
     <entityConsumer>
       <name>Documents</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Document_entity</entityName>
+        <fieldName>Documents</fieldName>
+      </dependency>
       <children>
         <entityParameter>
           <name>AssignmentTable_param</name>
@@ -22,11 +27,6 @@
           <valueProcess>%aditoprj%/entity/UserhelpResources_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Document_entity</entityName>
-        <fieldName>Documents</fieldName>
-      </dependency>
     </entityConsumer>
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
diff --git a/entity/Usersettings_entity/Usersettings_entity.aod b/entity/Usersettings_entity/Usersettings_entity.aod
index 0214bb75b50a9467e503653a3f415170ae56a24c..2653396deac35232a2ca79f7464a20c9cbc99f1e 100644
--- a/entity/Usersettings_entity/Usersettings_entity.aod
+++ b/entity/Usersettings_entity/Usersettings_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>Usersettings_entity</name>
+  <title>Settings</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Usersettings_entity/documentation.adoc</documentation>
-  <title>Settings</title>
   <grantDelete v="false" />
   <afterUiInit>%aditoprj%/entity/Usersettings_entity/afterUiInit.js</afterUiInit>
   <titlePlural>Settings</titlePlural>
diff --git a/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod b/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod
index 63130c5f63deebc3bc36702245a2755785fe4a50..df9c843f9b51af26f4093e09c4b3cc78a37cd715 100644
--- a/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod
+++ b/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>VisitPlanEmployeeWeek_entity</name>
+  <title>Visitplan Weekly Overview</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/documentation.adoc</documentation>
-  <title>Visitplan Weekly Overview</title>
   <grantDeleteProcess>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/grantDeleteProcess.js</grantDeleteProcess>
   <iconId>VAADIN:CAR</iconId>
   <image>VAADIN:CAR</image>
@@ -18,15 +18,22 @@
     <entityField>
       <name>YEAR</name>
       <title>Year</title>
-      <resolution>YEAR</resolution>
+      <contentType>NUMBER</contentType>
+      <outputFormat>##00</outputFormat>
+      <inputFormat>##00</inputFormat>
+      <groupable v="true" />
+      <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/entityfields/year/valueProcess.js</valueProcess>
       <onValidation>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/entityfields/year/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>WEEK</name>
       <title>Week</title>
+      <groupable v="true" />
+      <mandatory v="true" />
       <dropDownProcess>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/entityfields/week/dropDownProcess.js</dropDownProcess>
       <valueProcess>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/entityfields/week/valueProcess.js</valueProcess>
+      <onValidation>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/entityfields/week/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>INFO</name>
@@ -35,8 +42,12 @@
     <entityField>
       <name>CONTACT_ID</name>
       <title>Employee</title>
-      <state>INVISIBLE</state>
+      <consumer>Employees</consumer>
+      <groupable v="true" />
+      <linkedContext>Person</linkedContext>
+      <state>AUTO</state>
       <valueProcess>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/entityfields/contact_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>icon</name>
@@ -99,22 +110,26 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityConsumer>
+      <name>Employees</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Employee_entity</entityName>
+        <fieldName>Employees</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>OnlyActives_param</name>
+          <valueProcess>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/entityfields/employees/children/onlyactives_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
-      <conditionProcess>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>3c138105-f800-4216-8b1e-42d08a20f1ae</name>
-          <tableName>VISITPLANEMPLOYEEWEEK</tableName>
-          <primaryKey>VISITPLANEMPLOYEEWEEKID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>VISITPLANEMPLOYEEWEEKID.value</name>
@@ -123,10 +138,12 @@
         <dbRecordFieldMapping>
           <name>YEAR.value</name>
           <recordfield>VISITPLANEMPLOYEEWEEK.VISITPLAN_YEAR</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>WEEK.value</name>
           <recordfield>VISITPLANEMPLOYEEWEEK.VISITPLAN_WEEK</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>INFO.value</name>
@@ -135,12 +152,22 @@
         <dbRecordFieldMapping>
           <name>CONTACT_ID.value</name>
           <recordfield>VISITPLANEMPLOYEEWEEK.CONTACT_ID</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>CONTACT_ID.displayValue</name>
-          <expression>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/recordcontainers/db/recordfieldmappings/person_id.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
+        <consumerMapping>
+          <name>Employees</name>
+          <isFilterable v="false" />
+        </consumerMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>3c138105-f800-4216-8b1e-42d08a20f1ae</name>
+          <tableName>VISITPLANEMPLOYEEWEEK</tableName>
+          <primaryKey>VISITPLANEMPLOYEEWEEKID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/VisitPlanEmployeeWeek_entity/entityfields/contact_id/displayValueProcess.js b/entity/VisitPlanEmployeeWeek_entity/entityfields/contact_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..edca7faf0b2b011d95ec2f010108b663eaf20d33
--- /dev/null
+++ b/entity/VisitPlanEmployeeWeek_entity/entityfields/contact_id/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("Contact_lib");
+import("system.result");
+
+result.string(ContactUtils.getFullTitleByContactId(vars.get("$field.CONTACT_ID"), false));
\ No newline at end of file
diff --git a/entity/VisitPlanEmployeeWeek_entity/entityfields/employees/children/onlyactives_param/valueProcess.js b/entity/VisitPlanEmployeeWeek_entity/entityfields/employees/children/onlyactives_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..599bfc35195077f2fb171156ddaf1faddd9b3254
--- /dev/null
+++ b/entity/VisitPlanEmployeeWeek_entity/entityfields/employees/children/onlyactives_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string(true)
\ No newline at end of file
diff --git a/entity/VisitPlanEmployeeWeek_entity/entityfields/week/onValidation.js b/entity/VisitPlanEmployeeWeek_entity/entityfields/week/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..b16c0d7eda66954a018dfe07f5d95dfb32a83577
--- /dev/null
+++ b/entity/VisitPlanEmployeeWeek_entity/entityfields/week/onValidation.js
@@ -0,0 +1,22 @@
+import("system.result");
+import("Sql_lib");
+import("system.neon");
+import("system.eMath");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    var year = eMath.absInt(vars.get("$field.YEAR"));
+    var week = vars.get("$local.value");
+    var user = vars.get("$field.CONTACT_ID");
+
+    var weekEntry = newSelect("VISITPLANEMPLOYEEWEEKID")
+                .from("VISITPLANEMPLOYEEWEEK")
+                .where("VISITPLANEMPLOYEEWEEK.VISITPLAN_YEAR", year)
+                .and("VISITPLANEMPLOYEEWEEK.VISITPLAN_WEEK", week)
+                .and("VISITPLANEMPLOYEEWEEK.CONTACT_ID", user)
+                .cell();
+
+    if(weekEntry)
+        result.string("Weekplan already exists!");
+}
\ No newline at end of file
diff --git a/entity/VisitPlanEmployeeWeek_entity/entityfields/year/onValidation.js b/entity/VisitPlanEmployeeWeek_entity/entityfields/year/onValidation.js
index efe1ad7a3f2a0e8f24c0d5243d9e5cf21e13163b..36df8e4197e4e63aededc90180b62d6ec83db7f0 100644
--- a/entity/VisitPlanEmployeeWeek_entity/entityfields/year/onValidation.js
+++ b/entity/VisitPlanEmployeeWeek_entity/entityfields/year/onValidation.js
@@ -4,7 +4,7 @@ import("system.translate");
 import("system.vars");
 import("system.result");
 
-var year = eMath.absInt(vars.get("$local.value"));                             //input
-var currentYear = eMath.absInt(datetime.toDate(vars.get("$sys.date"), "yyyy"));//2019
+var year = eMath.absInt(vars.get("$local.value"));
+var currentYear = eMath.absInt(datetime.toDate(vars.get("$sys.date"), "yyyy"));
 if(year < currentYear || year >= 10000 )
     result.string(translate.text("Invalid year!"));
diff --git a/entity/VisitPlanEmployeeWeek_entity/entityfields/year/valueProcess.js b/entity/VisitPlanEmployeeWeek_entity/entityfields/year/valueProcess.js
index c79b83acb5a542cb7b197d5e7eae812502f4a67f..f58c37080a73ef9fe822bc9bd0f75c1a32bf7f69 100644
--- a/entity/VisitPlanEmployeeWeek_entity/entityfields/year/valueProcess.js
+++ b/entity/VisitPlanEmployeeWeek_entity/entityfields/year/valueProcess.js
@@ -4,6 +4,5 @@ import("system.result");
 import("system.neon");
 import("system.vars");
 
-//use current year if recordstate = new and this field empty
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
     result.string(datetime.toDate(vars.get("$sys.date"), "yyyy"));
\ No newline at end of file
diff --git a/entity/VisitPlanEmployeeWeek_entity/recordcontainers/db/conditionProcess.js b/entity/VisitPlanEmployeeWeek_entity/recordcontainers/db/conditionProcess.js
deleted file mode 100644
index dfed3430a9ea724ab52316ad51e4bbf11129d2ae..0000000000000000000000000000000000000000
--- a/entity/VisitPlanEmployeeWeek_entity/recordcontainers/db/conditionProcess.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("system.logging");
-import("Sql_lib");
-import("Employee_lib");
-import("system.result");
-
-var cond = newWhere();
-
-cond.and("VISITPLANEMPLOYEEWEEK.CONTACT_ID", EmployeeUtils.getCurrentContactId());
-
-result.string(cond);
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
index f059c7a9862bda4da4b6708cac9b114e81fd9423..754652a4c4b6b58e593f926bdf873cff66a82949 100644
--- a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
+++ b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod
@@ -1,13 +1,14 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>VisitPlanEntry_entity</name>
+  <title>Weekplan</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/VisitPlanEntry_entity/documentation.adoc</documentation>
-  <title>Weekplan</title>
   <grantCreateProcess>%aditoprj%/entity/VisitPlanEntry_entity/grantCreateProcess.js</grantCreateProcess>
   <grantUpdateProcess>%aditoprj%/entity/VisitPlanEntry_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/VisitPlanEntry_entity/grantDeleteProcess.js</grantDeleteProcess>
   <onValidation>%aditoprj%/entity/VisitPlanEntry_entity/onValidation.js</onValidation>
+  <afterSave>%aditoprj%/entity/VisitPlanEntry_entity/afterSave.js</afterSave>
   <titlePlural></titlePlural>
   <recordContainer>jDito</recordContainer>
   <entityFields>
@@ -26,6 +27,7 @@
       <name>STATUS</name>
       <title>Status</title>
       <consumer>KeywordVisitPlanEntryStatus</consumer>
+      <state>INVISIBLE</state>
       <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/status/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -47,6 +49,15 @@
       <outputFormat>dd.MM.yyyy</outputFormat>
       <inputFormat>dd.MM.yyyy</inputFormat>
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/entrydate/valueProcess.js</valueProcess>
+      <onValueChange>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/entrydate/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+        <element>RECORD</element>
+      </onValueChangeTypes>
+      <onValidation>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/entrydate/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>END_TIME</name>
@@ -58,6 +69,11 @@
       <mandatory v="true" />
       <dropDownProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/end_time/dropDownProcess.js</dropDownProcess>
       <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/end_time/valueProcess.js</valueProcess>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
     </entityField>
     <entityField>
       <name>BEGIN_TIME</name>
@@ -69,6 +85,10 @@
       <mandatory v="true" />
       <dropDownProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/begin_time/dropDownProcess.js</dropDownProcess>
       <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/begin_time/valueProcess.js</valueProcess>
+      <onValueChange>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/begin_time/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+      </onValueChangeTypes>
     </entityField>
     <entityActionGroup>
       <name>entityActionGroup</name>
@@ -91,7 +111,7 @@
           <title>New Appointment</title>
           <onActionProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newappointment/onActionProcess.js</onActionProcess>
           <iconId>VAADIN:CALENDAR</iconId>
-          <state>AUTO</state>
+          <state>EDITABLE</state>
           <stateProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newappointment/stateProcess.js</stateProcess>
           <tooltip>Create new Appointment</tooltip>
           <tooltipProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newappointment/tooltipProcess.js</tooltipProcess>
@@ -115,6 +135,12 @@
         <entityName>Organisation_entity</entityName>
         <fieldName>Organisations</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>OnlyActive_param</name>
+          <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/organisations/children/onlyactive_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityConsumer>
       <name>KeywordVisitPlanEntryStatus</name>
@@ -162,6 +188,7 @@
     </entityField>
     <entityField>
       <name>VISITRECOMMENDATION_ID</name>
+      <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>APPOINTMENT_ID</name>
@@ -193,7 +220,8 @@
       </dependency>
       <children>
         <entityParameter>
-          <name>ExcludedContactIds_param</name>
+          <name>OrgId_param</name>
+          <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/persons/children/orgid_param/valueProcess.js</valueProcess>
           <expose v="true" />
         </entityParameter>
         <entityParameter>
@@ -222,6 +250,48 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityParameter>
+      <name>Entrydate_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>VISITPLANEMPLOYEEWEEK_INFO</name>
+      <title>Weekplan Info</title>
+      <color>priority-high-color</color>
+      <state>INVISIBLE</state>
+      <stateProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/visitplanemployeeweek_info/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/visitplanemployeeweek_info/valueProcess.js</valueProcess>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
+    </entityField>
+    <entityField>
+      <name>STATUS_APPOINTMENT</name>
+      <title>Status Appointment</title>
+      <consumer>KeywordVisitPlanEntryStatusAppointment</consumer>
+      <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/status_appointment/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/status_appointment/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>KeywordVisitPlanEntryStatusAppointment</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/keywordvisitplanentrystatusappointment/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>VisitrecommendationId_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
@@ -278,6 +348,15 @@
         <jDitoRecordFieldMapping>
           <name>STATUS.displayValue</name>
         </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>STATUS_APPOINTMENT.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>STATUS_APPOINTMENT.displayValue</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>VISITRECOMMENDATION_ID.value</name>
+        </jDitoRecordFieldMapping>
       </recordFieldMappings>
     </jDitoRecordContainer>
   </recordContainers>
diff --git a/entity/VisitPlanEntry_entity/afterSave.js b/entity/VisitPlanEntry_entity/afterSave.js
new file mode 100644
index 0000000000000000000000000000000000000000..0474f7803292e84fd36388734a67e8a568cefc41
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/afterSave.js
@@ -0,0 +1,46 @@
+import("Sql_lib");
+import("system.translate");
+import("system.eMath");
+import("system.datetime");
+import("Date_lib");
+import("system.logging");
+import("system.result");
+import("system.neon");
+import("system.calendars");
+import("system.util");
+import("system.vars");
+import("system.db");
+import("Calendar_lib");
+import("Communication_lib");
+
+var savedData = vars.get("$local.entitydata");
+
+if(savedData["VISITRECOMMENDATION_ID"])
+{
+    newWhere("VISITRECOMMENDATION.VISITRECOMMENDATIONID", savedData["VISITRECOMMENDATION_ID"])
+                            .updateData(true, "VISITRECOMMENDATION", ["STATUS"], null, ["PLANNED"]);
+}
+if(savedData["STATUS_APPOINTMENT"] == "VISITSTATUSAPPOINTMENTCONFIRMED")
+{
+    var summary = translate.text("Site visit") + " | " + savedData["CONTACT_ID.displayValue"];
+    var description = savedData["CONTACT_ID.displayValue"];
+    var standardMail = CommUtil.getStandardMail(savedData["CONTACT_ID"]); 
+    
+    var entryDate = datetime.toDate(savedData["ENTRYDATE"], "dd-MM-yyyy");
+    var startTime = entryDate + " " + datetime.toDate(savedData["BEGIN_TIME"], "HH:mm:ss.S");
+        startTime = datetime.toLong(startTime, "dd-MM-yyyy HH:mm:ss.S");
+    var endTime = savedData["END_TIME"];
+    var duration = eMath.subInt(endTime, startTime);
+    
+    var params = {};
+    params["Entry_param"] = JSON.stringify(CalendarUtil.createEntry(util.getNewUUID(), calendars.VEVENT, summary, description, false, null, null
+                                        , null, null, startTime, duration, null, null, null, null, [standardMail]));
+                                        
+    params["PresetLinks_param"] = JSON.stringify([
+            ["Organisation", savedData["ORGANISATION_CONTACT_ID"]], 
+            ["Person", savedData["CONTACT_ID"]]
+        ]);
+    
+    neon.openContext("Appointment", "AppointmentEdit_view", [vars.get("$field.UID")], neon.OPERATINGSTATE_NEW, params, null);
+    result.string(true);
+}
diff --git a/entity/VisitPlanEntry_entity/entityfields/begin_time/dropDownProcess.js b/entity/VisitPlanEntry_entity/entityfields/begin_time/dropDownProcess.js
index f5ef197dc6d959c10471831543b60f96634e9f9c..12411ad70b3b6d08ee98e1c841e860d8a53256a4 100644
--- a/entity/VisitPlanEntry_entity/entityfields/begin_time/dropDownProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/begin_time/dropDownProcess.js
@@ -12,13 +12,14 @@ for(var i = 0; i < 24; i++)
     i = i.toString();
     if(i.length == 1)
     {
-        values.push([datetime.toLong("0" + i + ":00", "HH:mm"), "0" + i + ":00"]);
-        values.push([datetime.toLong("0" + i + ":30", "HH:mm"), "0" + i + ":30"]);
+        values.push([datetime.toLong("0" + i + ":00", "HH:mm", "UTC"), "0" + i + ":00"]);
+        values.push([datetime.toLong("0" + i + ":30", "HH:mm", "UTC"), "0" + i + ":30"]);
     }
     else
     {
-        values.push([datetime.toLong(i + ":00", "HH:mm"), i + ":00"]);
-        values.push([datetime.toLong(i + ":30", "HH:mm"), i + ":30"]);
+        values.push([datetime.toLong(i + ":00", "HH:mm", "UTC"), i + ":00"]);
+        if(i != "23")
+            values.push([datetime.toLong(i + ":30", "HH:mm", "UTC"), i + ":30"]);
     }
 }
 
diff --git a/entity/VisitPlanEntry_entity/entityfields/begin_time/onValueChange.js b/entity/VisitPlanEntry_entity/entityfields/begin_time/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..7250691eb897d766a2c439be45dd7e9a05553581
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/begin_time/onValueChange.js
@@ -0,0 +1,9 @@
+import("system.datetime");
+import("system.vars");
+import("system.eMath");
+import("system.neon");
+
+if(datetime.toDate(vars.get("$this.value"), "HH:mm") == "23:00")
+    neon.setFieldValue("$field.END_TIME", eMath.absInt(vars.get("$this.value")) + datetime.ONE_MINUTE * 30);
+else
+    neon.setFieldValue("$field.END_TIME", eMath.absInt(vars.get("$this.value")) + datetime.ONE_HOUR);
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/begin_time/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/begin_time/valueProcess.js
index f320a45527c475f10db0d36dea1edc224a2ed3f9..052b11da3b9bbea6a4ab378f728c67806ea67b71 100644
--- a/entity/VisitPlanEntry_entity/entityfields/begin_time/valueProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/begin_time/valueProcess.js
@@ -4,7 +4,6 @@ import("system.neon");
 import("system.result");
 import("system.vars");
 
-// 7am as default value if field is empty and recordstate = new
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$this.value") == null)
 {
     result.string(datetime.toLong("07:00", "HH:mm"));
diff --git a/entity/VisitPlanEntry_entity/entityfields/end_time/dropDownProcess.js b/entity/VisitPlanEntry_entity/entityfields/end_time/dropDownProcess.js
index fad1ff9a83ebe192458c199e819f2a8a4186a6aa..fc6e5d4034f088b335e35322609771d3594ce05a 100644
--- a/entity/VisitPlanEntry_entity/entityfields/end_time/dropDownProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/end_time/dropDownProcess.js
@@ -12,13 +12,14 @@ for(var i = 0; i < 24; i++)
     i = i.toString();
     if(i.length == 1)
     {
-        values.push([datetime.toLong("0" + i + ":00", "HH:mm"), "0" + i + ":00"]);
-        values.push([datetime.toLong("0" + i + ":30", "HH:mm"), "0" + i + ":30"]);
+        if(i != "0")
+            values.push([datetime.toLong("0" + i + ":00", "HH:mm", "UTC"), "0" + i + ":00"]);
+        values.push([datetime.toLong("0" + i + ":30", "HH:mm", "UTC"), "0" + i + ":30"]);
     }
     else 
     {
-        values.push([datetime.toLong(i + ":00", "HH:mm"), i + ":00"]);
-        values.push([datetime.toLong(i + ":30", "HH:mm"), i + ":30"]);
+        values.push([datetime.toLong(i + ":00", "HH:mm", "UTC"), i + ":00"]);
+        values.push([datetime.toLong(i + ":30", "HH:mm", "UTC"), i + ":30"]);
     }
 }
 
diff --git a/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newactivity/onActionProcess.js b/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newactivity/onActionProcess.js
index 5fdb3779fc2b8699a502c17353bbf34ff9a59bb1..9c215fd3ee4f53ee55b7558fa704565a87ecffc3 100644
--- a/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newactivity/onActionProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newactivity/onActionProcess.js
@@ -19,27 +19,14 @@ var pointOfContact = newSelect("CONTACT.CONTACTID", db.getCurrentAlias())
                                 .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", $AttributeRegistry.visitPlanPointOfContact()) 
                                 .and("CONTACT.CONTACTID", vars.get("$field.ORGANISATION_CONTACT_ID"))
                                 .cell();
-var context;
 
 if(pointOfContact)
     links.push([ContactUtils.getContextByContactId(pointOfContact), pointOfContact]);
 else
 {
-    var contactId = vars.get("$field.ORGANISATION_CONTACT_ID");
-    context = ContactUtils.getContextByContactId(contactId);
-    if(context == 'Person')
-    {
-        var orgContactId = newSelect("CONTACTID")
-                                        .from("CONTACT")
-                                        .where("PERSON_ID is null")
-                                        .and("CONTACT.ORGANISATION_ID", newSelect("ORGANISATION_ID")
-                                                                            .from("CONTACT")
-                                                                            .where("CONTACT.CONTACTID", contactId)
-                                                                            .cell()).cell();
-        if(orgContactId)
-            links.push(["Organisation", orgContactId]);
-    }  
-    links.push([context, contactId]);
+    links.push(["Organisation", vars.get("$field.ORGANISATION_CONTACT_ID")]);
+    links.push(["Person", vars.get("$field.CONTACT_ID")]);
 }
 
 ActivityUtils.createNewActivity(null, links, null, null, null, null, $KeywordRegistry.activityDirection$outgoing(), null, $KeywordRegistry.activityCategory$visit(), vars.get("$field.ENTRYDATE"), vars.get("$field.UID"));
+
diff --git a/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newappointment/onActionProcess.js b/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newappointment/onActionProcess.js
index d5d0373503802bd20c6e17d52696af9a2ae87961..83d2148d4e05ea1d5c71a3b04cedc476baee492b 100644
--- a/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newappointment/onActionProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newappointment/onActionProcess.js
@@ -1,113 +1,46 @@
-import("Keyword_lib");
-import("Address_lib");
-import("Person_lib");
-import("Contact_lib");
-import("KeywordRegistry_basic");
-import("system.translate");
 import("Sql_lib");
-import("AttributeRegistry_basic");
-import("system.datetime");
-import("system.logging");
-import("Communication_lib");
+import("system.translate");
 import("system.db");
-import("system.vars");
-import("system.neon");
+import("Communication_lib");
+import("system.datetime");
+import("system.eMath");
 import("system.calendars");
-import("Calendar_lib");
-import("system.date");
-import("Context_lib");
 import("system.util");
-import("system.eMath");
-import("system.text");
-
-var params = {};
-var mailAffectedUser = [];
+import("Calendar_lib");
+import("system.vars");
+import("system.neon");
+import("system.result");
+import("Contact_lib")
 
 var selectionRowData = vars.get("$sys.selectionRows");
 
-var uid = selectionRowData[0].UID;
-var isGroup = selectionRowData[0].ISGROUP; //not Bool
-var entryDateAsLong = selectionRowData[0].ENTRYDATE;
-var entryDate = datetime.toDate(entryDateAsLong, "dd-MM-yyyy");
-var startTime = selectionRowData[0].BEGIN_TIME;
-var endTime = selectionRowData[0].END_TIME;
-var organisationContact_id = selectionRowData[0].ORGANISATION_CONTACT_ID;
-var organisationName = OrganisationUtils.getNameByContactId(organisationContact_id);
-var contact_id = selectionRowData[0].CONTACT_ID;
-var contactName = ContactUtils.getFullTitleByContactId(contact_id);
-var contactMail = CommUtil.getStandardSubSqlMail(contact_id)
-var contactData = newSelect("CONTACT.DEPARTMENT, CONTACT.CONTACTROLE")
-                            .from("CONTACT")
-                            .where("CONTACT.CONTACTID", contact_id)
-                            .arrayRow()
-var department = contactData[0];
-var contactRole = contactData[1];
-var addressId = newSelect("CONTACT.ADDRESS_ID")
-                            .from("CONTACT")
-                            .where("CONTACT.CONTACTID", organisationContact_id)
-                            .cell();
-var organisationAddress = new AddrObject(organisationContact_id);
-var organisationAddressFormatted = organisationAddress.getFormattedAddress(false, "{salutation_name}\n {street} {buildingno}\n {country_short} - {zip} {city}");
-var contactCommunication = newSelect("COMMUNICATION.MEDIUM_ID, COMMUNICATION.ADDR")
-                                        .from("COMMUNICATION")
-                                        .where("COMMUNICATION.CONTACT_ID", contact_id)
-                                        .table();
-if(contactCommunication.length > 0)
+if(selectionRowData[0].VISITRECOMMENDATION_ID)
 {
-    var communicationString;
-    for (let i = 0; i < contactCommunication.length; i++) 
-    {
-            communicationString += KeywordUtils.getViewValue($KeywordRegistry.communicationMedium(), contactCommunication[i][0]) + ": " 
-                                    + contactCommunication[i][1] + "</br>"
-    }
-    communicationString = communicationString.substring(9);
+    newWhere("VISITRECOMMENDATION.VISITRECOMMENDATIONID", selectionRowData[0].VISITRECOMMENDATION_ID)
+            .updateData(true, "VISITRECOMMENDATION", ["STATUS"], null, ["PLANNED"]);
 }
-var summary = translate.text("Visit") +  " " + contactName + " | "+  organisationName;
-var description = contactName + "</br>"
-                  + department + "</br>"
-                  + contactRole + "</br>"
-                  + communicationString + "</br>" + "</br>"
-                  + organisationName + "</br>"
-                  + organisationAddressFormatted;
 
-userMailto = [];
-userMailto.push("mailto:" + contactMail, "CN:" + contactMail);
-mailAffectedUser.push(text.encodeMS(userMailto));
+var fullName = ContactUtils.getFullTitleByContactId(selectionRowData[0].CONTACT_ID, true)
+var summary = translate.text("Site visit") + " || " + fullName;
+var description = fullName;
+var standardMail = CommUtil.getStandardMail(selectionRowData[0].CONTACT_ID); 
 
+var startTime = selectionRowData[0].BEGIN_TIME;
+var endTime = selectionRowData[0].END_TIME;
+var duration = eMath.subInt(endTime, startTime);
+var entryDate = datetime.toDate(selectionRowData[0].ENTRYDATE, "dd-MM-yyyy");
+startTime = entryDate + " " + datetime.toDate(selectionRowData[0].BEGIN_TIME, "HH:mm:ss.S");
+startTime = datetime.toLong(startTime, "dd-MM-yyyy HH:mm:ss.S");
 
-var startdate = entryDate + " " + datetime.toDate(startTime, "HH:mm:ss.S");
-startdate = datetime.toLong(startdate, "dd-MM-yyyy HH:mm:ss.S");
+var params = {};
+params["Entry_param"] = JSON.stringify(CalendarUtil.createEntry(util.getNewUUID(), calendars.VEVENT, summary, description, false, null, null
+                                    , null, null, startTime, duration, null, null, null, null, [standardMail]));
 
-var duration = eMath.subInt(endTime, startTime);
-    
-var entry = CalendarUtil.createEntry("", calendars.VEVENT, summary, description, false, false, false,
-                vars.get("$sys.user"), [vars.get("$sys.user")], startdate, duration, null, calendars.STATUS_TENTATIVE, null, null);
-            
-params["Entry_param"] = JSON.stringify(entry);
-var uidAppointment = calendars.insert([entry]);
-    
-var columns = ["AB_APPOINTMENTLINK_ID",
-            "APPOINTMENT_ID",
-            "OBJECT_TYPE",
-            "OBJECT_ROWID"]
-    
-var values = [util.getNewUUID(),
-          uidAppointment[0],
-          "Organisation",
-          organisationContact_id]
-db.insertData("AB_APPOINTMENTLINK", columns, null, values)
-    
-values = [util.getNewUUID(),
-          uidAppointment[0],
-          "Person",
-          contact_id]
-db.insertData("AB_APPOINTMENTLINK", columns, null, values)
-    
-values = [$KeywordRegistry.visitPlanEntryStatus$Appointmentarranged(), uidAppointment[0]];
-columns = ["STATUS", "APPOINTMENT_ID"];
-    
-newWhere("VISITPLANENTRY.VISITPLANENTRYID", uid)
-    .updateData(true, "VISITPLANENTRY", columns, null, values);
+params["PresetLinks_param"] = JSON.stringify([
+        ["Organisation", selectionRowData[0].ORGANISATION_CONTACT_ID], 
+        ["Person", selectionRowData[0].CONTACT_ID]
+    ]);
+
+neon.openContext("Appointment", "AppointmentEdit_view", [vars.get("$field.UID")], neon.OPERATINGSTATE_NEW, params, null);
+result.string(true);
 
-neon.setFieldValue("$field.STATUS", $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged());
-neon.refreshAll();
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newappointment/stateProcess.js b/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newappointment/stateProcess.js
index 00cae70329680cdd31c029965dc471e53f65d642..3f986eb99cdd8c56ea85788bc2ab0f547f172b25 100644
--- a/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newappointment/stateProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/entityactiongroup/children/newappointment/stateProcess.js
@@ -1,8 +1,10 @@
+import("system.logging");
 import("system.result");
 import("system.vars");
 import("system.neon");
 
-var state = neon.COMPONENTSTATE_DISABLED;
-if (vars.get("$field.ISGROUP") == "false" && vars.get("$sys.selectionRows") != "")
-    state = neon.COMPONENTSTATE_EDITABLE;
-result.string(state);
+if (vars.get("$field.ISGROUP") == "false" && vars.get("$sys.selectionRows") != "" 
+        && (vars.get("$field.STATUS") == "VISITSTATUSAPPPLANED"
+        || vars.get("$field.STATUS_APPOINTMENT") == "VISITSTATUSAPPOINTMENTCONFIRMED     "))
+    result.string(neon.COMPONENTSTATE_DISABLED);
+
diff --git a/entity/VisitPlanEntry_entity/entityfields/entrydate/onValueChange.js b/entity/VisitPlanEntry_entity/entityfields/entrydate/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..2e2ab9e1659616926f5721ca8640068c0b6bdf75
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/entrydate/onValueChange.js
@@ -0,0 +1,25 @@
+import("system.neon");
+import("system.logging");
+import("system.translate");
+import("system.result");
+import("Sql_lib");
+import("system.vars");
+import("system.datetime");
+import("Employee_lib");
+
+var user = EmployeeUtils.getCurrentContactId();
+var calendarWeek = datetime.toDate(vars.get("$field.ENTRYDATE"), "w");
+var calendarYear = datetime.toDate(vars.get("$field.ENTRYDATE"), "yyyy");
+var info = newSelect("INFO")
+                        .from("VISITPLANEMPLOYEEWEEK") 
+                        .where("VISITPLANEMPLOYEEWEEK.VISITPLAN_WEEK", calendarWeek)
+                        .and("VISITPLANEMPLOYEEWEEK.VISITPLAN_YEAR", calendarYear)
+                        .and("VISITPLANEMPLOYEEWEEK.CONTACT_ID", user)
+                        .cell();
+
+if(info)
+    neon.setFieldValue("$field.VISITPLANEMPLOYEEWEEK_INFO", "Calendar week: " + calendarWeek + " Info: " + info);
+else
+    neon.setFieldValue("$field.VISITPLANEMPLOYEEWEEK_INFO", "");
+
+
diff --git a/entity/VisitPlanEntry_entity/entityfields/entrydate/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/entrydate/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..459c622245d9f40641c694f9e11c1f157081cc87
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/entrydate/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.logging");
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && (vars.get("$this.value") == null || vars.get("$this.value") == undefined))
+    result.string(vars.get("$param.Entrydate_param"));
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/keywordvisitplanentrystatusappointment/children/containername_param/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/keywordvisitplanentrystatusappointment/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a796e1af63d2e67f15030524f185dd73b26c11cf
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/keywordvisitplanentrystatusappointment/children/containername_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result"); 
+import("Keyword_lib"); 
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.visitPlanEntryStatusAppointment());
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/organisation_contact_id/stateProcess.js b/entity/VisitPlanEntry_entity/entityfields/organisation_contact_id/stateProcess.js
index 832f94c08cd6b525fa8a549e6332eea384362f65..b8cad0c73fa5d1649c5a09e20f4e48fe27645ba8 100644
--- a/entity/VisitPlanEntry_entity/entityfields/organisation_contact_id/stateProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/organisation_contact_id/stateProcess.js
@@ -1,10 +1,6 @@
-import("system.logging");
 import("system.neon");
-import("system.result");
 import("system.vars");
+import("system.result");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null 
-    && vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param"))
-{
-    result.string(neon.COMPONENTSTATE_INVISIBLE);
-}
\ No newline at end of file
+if(vars.get("$param.VisitrecommendationId_param"))
+    result.string(neon.COMPONENTSTATE_READONLY)
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/organisation_contact_id/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/organisation_contact_id/valueProcess.js
index 8e22e5c11f08455e5f445c1fbd3d05e4a222cd75..2b90b668563cd3c022b2e3a32c9bab71c44f1783 100644
--- a/entity/VisitPlanEntry_entity/entityfields/organisation_contact_id/valueProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/organisation_contact_id/valueProcess.js
@@ -1,3 +1,4 @@
+import("Sql_lib");
 import("system.neon");
 import("system.result");
 import("system.vars");
@@ -5,5 +6,15 @@ import("system.vars");
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null 
     && vars.exists("$param.OrganisationId_param") && vars.get("$param.OrganisationId_param"))
 {
-    result.string(vars.get("$param.OrganisationId_param"));
+    
+    var OrgId = newSelect("CONTACT.ORGANISATION_ID").from("CONTACT")
+        .where("CONTACT.CONTACTID", vars.get("$param.OrganisationId_param"))
+        .cell()
+    
+    var contactIdWithoutPerson = newSelect("CONTACT.CONTACTID").from("CONTACT")
+        .where("CONTACT.ORGANISATION_ID", OrgId)
+        .and("CONTACT.PERSON_ID is null")
+        .cell()
+        
+    result.string(contactIdWithoutPerson);
 }
\ No newline at end of file
diff --git a/entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/organisations/children/onlyactive_param/valueProcess.js
similarity index 100%
rename from entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js
rename to entity/VisitPlanEntry_entity/entityfields/organisations/children/onlyactive_param/valueProcess.js
diff --git a/entity/VisitPlanEntry_entity/entityfields/persons/children/orgid_param/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/persons/children/orgid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c6e583e8bd66c32b6b8243af36cc6c2264c8ac18
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/persons/children/orgid_param/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.logging");
+import("Sql_lib");
+import("system.vars");
+import("system.result");
+
+var orgContactId = vars.get("$field.ORGANISATION_CONTACT_ID")
+var orgId = newSelect("CONTACT.ORGANISATION_ID").from("CONTACT").where("CONTACT.CONTACTID", orgContactId).cell();
+
+result.string(orgId);
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/status_appointment/displayValueProcess.js b/entity/VisitPlanEntry_entity/entityfields/status_appointment/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6da13f3303b3eb4dd4da2a507f9ea6ba6bdc71a9
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/status_appointment/displayValueProcess.js
@@ -0,0 +1,8 @@
+import("system.translate");
+import("system.logging");
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.visitPlanEntryStatusAppointment(), vars.get("$field.STATUS_APPOINTMENT")));
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/status_appointment/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/status_appointment/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..32f48a2b8d5ccab1d3ec284c2958e4ef14713430
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/status_appointment/valueProcess.js
@@ -0,0 +1,9 @@
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$this.value") == null)
+{
+    result.string($KeywordRegistry.visitPlanEntryStatusAppointment$requested());
+}
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/visitplanemployeeweek_info/stateProcess.js b/entity/VisitPlanEntry_entity/entityfields/visitplanemployeeweek_info/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c1b91b310592bd609d821e730603d5097a3d8439
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/visitplanemployeeweek_info/stateProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$field.ENTRYDATE"))
+    result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/entityfields/visitplanemployeeweek_info/valueProcess.js b/entity/VisitPlanEntry_entity/entityfields/visitplanemployeeweek_info/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8848cb05cb421139c05f93526854cbf0ca8fac01
--- /dev/null
+++ b/entity/VisitPlanEntry_entity/entityfields/visitplanemployeeweek_info/valueProcess.js
@@ -0,0 +1,20 @@
+import("system.logging");
+import("system.translate");
+import("system.result");
+import("Sql_lib");
+import("system.vars");
+import("system.datetime");
+import("Employee_lib");
+
+var user = EmployeeUtils.getCurrentContactId();
+var calendarWeek = datetime.toDate(vars.get("$field.ENTRYDATE"), "w");
+var calendarYear = datetime.toDate(vars.get("$field.ENTRYDATE"), "yyyy");
+var info = newSelect("INFO")
+                        .from("VISITPLANEMPLOYEEWEEK") 
+                        .where("VISITPLANEMPLOYEEWEEK.VISITPLAN_WEEK", calendarWeek)
+                        .and("VISITPLANEMPLOYEEWEEK.VISITPLAN_YEAR", calendarYear)
+                        .and("VISITPLANEMPLOYEEWEEK.CONTACT_ID", user)
+                        .cell();
+
+if(info)
+    result.string(info);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/contact_id/stateProcess.js b/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/valueProcess.js
similarity index 57%
rename from entity/VisitRecommendation_entity/entityfields/contact_id/stateProcess.js
rename to entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/valueProcess.js
index 5cc1152733bc77ebadb70d7da6bec021692745a0..dbfee2528ec4bfc6ac624c6e0751f4b2f983bb2a 100644
--- a/entity/VisitRecommendation_entity/entityfields/contact_id/stateProcess.js
+++ b/entity/VisitPlanEntry_entity/entityfields/visitrecommendation_id/valueProcess.js
@@ -3,5 +3,5 @@ import("system.neon");
 import("system.result");
 import("system.vars");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.ContactId_param") && vars.exists("$param.ContactId_param"))
-result.string(neon.COMPONENTSTATE_INVISIBLE)
\ No newline at end of file
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value")== null)
+    result.string(vars.get("$param.VisitrecommendationId_param"));
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/onValidation.js b/entity/VisitPlanEntry_entity/onValidation.js
index 15c1007b0a9286bb7512a4c9dc0d510e59350624..2b341575427fda464e3356d01061e405b7b75e30 100644
--- a/entity/VisitPlanEntry_entity/onValidation.js
+++ b/entity/VisitPlanEntry_entity/onValidation.js
@@ -1,3 +1,4 @@
+import("system.neon");
 import("system.eMath");
 import("Sql_lib");
 import("system.logging");
@@ -13,9 +14,10 @@ var begin_time = eMath.absInt(vars.get("$field.BEGIN_TIME"));
 if (endTime != "" && begin_time != "" && endTime < begin_time)
     result.string(translate.text("The endtime can't be before begintime!"));
 
-if(vars.get("$param.NoVisitPlanEmployeeWeek_param") != "true")
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$param.NoVisitPlanEmployeeWeek_param"))
 {
-        var week = newSelect("VISITPLAN_WEEK") 
+
+    var week = newSelect("VISITPLAN_WEEK") 
                                 .from("VISITPLANEMPLOYEEWEEK")
                                 .where("VISITPLANEMPLOYEEWEEK.VISITPLANEMPLOYEEWEEKID", vars.get("$field.VISITPLANEMPLOYEEWEEK_ID"))
                                 .cell();                
@@ -23,4 +25,5 @@ if(vars.get("$param.NoVisitPlanEmployeeWeek_param") != "true")
 
     if(week != weekEntrydate)
         result.string(translate.text("Entrydate has to be in the selected calendar week!"));
+    
 }
diff --git a/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js
index ae8d3918edde1c772c1f09bb3623506cce40cdc1..c2156fee4955f99b1bf8781a2d18a0aadadd8e07 100644
--- a/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js
@@ -16,7 +16,8 @@ var items = [];
 var group = [];
 var entryData = "";
 
-var entrySQL = newSelect("ENTRYDATE, VISITPLANENTRYID, BEGIN_TIME, END_TIME, ORGANISATION_CONTACT_ID, CONTACT_ID,STATUS, VISITPLANEMPLOYEEWEEK_ID, APPOINTMENT_ID")
+var entrySQL = newSelect("ENTRYDATE, VISITPLANENTRYID, BEGIN_TIME, END_TIME, ORGANISATION_CONTACT_ID, CONTACT_ID,STATUS, VISITPLANEMPLOYEEWEEK_ID"
+                        +", APPOINTMENT_ID, STATUS_APPOINTMENT, VISITRECOMMENDATION_ID")
                             .from("VISITPLANENTRY");
 
 if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
@@ -46,8 +47,8 @@ if(entryData.length > 0)
 {
     for(var i = 0; i < entryData.length; i++)
     {
-        var entryDateRaw, visitPlanEntryId, beginTime, endTime, organisationContactId, contactId, status, visitplanEmployeeWeekId, appointmentid;
-        [entryDateRaw, visitPlanEntryId, beginTime, endTime, organisationContactId, contactId, status, visitplanEmployeeWeekId, appointmentid] = entryData[i]
+        var entryDateRaw, visitPlanEntryId, beginTime, endTime, organisationContactId, contactId, status, visitplanEmployeeWeekId, appointmentid, statusAppointment, visitrecommendation_id;
+        [entryDateRaw, visitPlanEntryId, beginTime, endTime, organisationContactId, contactId, status, visitplanEmployeeWeekId, appointmentid, statusAppointment, visitrecommendation_id] = entryData[i]
         
         var contactname = ContactUtils.getTitleByContactId(contactId);
         var orgname = OrganisationUtils.getNameByContactId(organisationContactId);
@@ -55,16 +56,18 @@ if(entryData.length > 0)
         entryDate = datetime.toDate(entryDateRaw, "dd.MM.yyyy");
 
         var statusDisplay = KeywordUtils.getViewValue($KeywordRegistry.visitPlanEntryStatus(), status)
+        var statusAppointmentDisplay = KeywordUtils.getViewValue($KeywordRegistry.visitPlanEntryStatusAppointment(), statusAppointment)
         var alias = SqlUtils.getSystemAlias();
 
         items.push([visitPlanEntryId, false, parentName + "#" + entryDate, "",  beginTime
-            , endTime, organisationContactId, orgname, contactId, contactname, entryDateRaw, status, visitplanEmployeeWeekId, appointmentid, statusDisplay]);
+            , endTime, organisationContactId, orgname, contactId, contactname, entryDateRaw, status, visitplanEmployeeWeekId, appointmentid
+            , statusDisplay, statusAppointment, statusAppointmentDisplay, visitrecommendation_id]);
 
         if(!vars.get("$local.idvalues"))
         {
             if(group.indexOf(parentName + "#" + entryDate) == -1)
             {
-                items.push([parentName + "#" + entryDate, true, "", parentName + " " + entryDate, "", "",  "", "", "", "", "", "", "", "", ""]);
+                items.push([parentName + "#" + entryDate, true, "", parentName + " " + entryDate, "", "",  "", "", "", "", "", "", "", "", "", "", "", ""]);
                 group.push(parentName + "#" + entryDate);
             }
         }
diff --git a/entity/VisitPlanEntry_entity/recordcontainers/jdito/onDelete.js b/entity/VisitPlanEntry_entity/recordcontainers/jdito/onDelete.js
index a507271c6792ee838fad76db423cae2fb2209c8b..77424135ff0acd196f784311bbc6b6497a9f743e 100644
--- a/entity/VisitPlanEntry_entity/recordcontainers/jdito/onDelete.js
+++ b/entity/VisitPlanEntry_entity/recordcontainers/jdito/onDelete.js
@@ -5,6 +5,10 @@ import("Sql_lib");
 import("system.db");
 
 var id = vars.get("$field.APPOINTMENT_ID") //deletes appointmententries (+ the linked Objects) if an appointment has been made
+var recommendationId = vars.get("$field.VISITRECOMMENDATION_ID");
+
+newWhere("VISITRECOMMENDATION.VISITRECOMMENDATIONID", recommendationId)
+    .updateData(true, "VISITRECOMMENDATION", ["STATUS"], null, [""]);
 
 new SqlBuilder(SqlUtils.getSystemAlias()).whereIfSet("ASYS_CALENDARBACKEND.ELEMENTUID", id)
     .deleteData();
@@ -13,4 +17,5 @@ newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", id)
     .deleteData();
 
 newWhereIfSet("VISITPLANENTRY.VISITPLANENTRYID", "$field.UID")
-    .deleteData();
\ No newline at end of file
+    .deleteData();
+    
diff --git a/entity/VisitPlanEntry_entity/recordcontainers/jdito/onInsert.js b/entity/VisitPlanEntry_entity/recordcontainers/jdito/onInsert.js
index 513409e05735c092c8170ae3dc7184dc1c7e0933..c9f89a1065270df5b8602b0a086d052662774858 100644
--- a/entity/VisitPlanEntry_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/VisitPlanEntry_entity/recordcontainers/jdito/onInsert.js
@@ -50,7 +50,8 @@ else
 }
 
 var rowData = vars.get("$local.rowdata");
-
+//logging.log("rowData: " + rowData["VISITRECOMMENDATION_ID.value"]);
+//logging.log("field: " +vars.get("$field.VISITRECOMMENDATION_ID"));
 var valuesEntry = [
     rowData["UID.value"],
     rowData["ENTRYDATE.value"],
@@ -59,7 +60,9 @@ var valuesEntry = [
     rowData["ORGANISATION_CONTACT_ID.value"],
     rowData["CONTACT_ID.value"],
     visitPlanEmployeeWeekID,
-    rowData["STATUS.value"]
+    rowData["STATUS.value"],
+    rowData["STATUS_APPOINTMENT.value"],
+    rowData["VISITRECOMMENDATION_ID.value"] || ""
 ];
 
 var columnsEntry = [
@@ -70,7 +73,9 @@ var columnsEntry = [
     "ORGANISATION_CONTACT_ID",
     "CONTACT_ID",
     "VISITPLANEMPLOYEEWEEK_ID",
-    "STATUS"
+    "STATUS",
+    "STATUS_APPOINTMENT",
+    "VISITRECOMMENDATION_ID"
 ];
 
 insertData.push(["VISITPLANENTRY", columnsEntry, null, valuesEntry])
diff --git a/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js b/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js
index c22eeca42034c0676686e931650daeb0b22b5bb1..d5c991243c8c5ab3fd254ea668979b2d147de171 100644
--- a/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js
@@ -1,3 +1,6 @@
+import("Employee_lib");
+import("system.util");
+import("system.datetime");
 import("Sql_lib");
 import("system.logging");
 import("system.neon");
@@ -5,13 +8,49 @@ import("system.db");
 import("system.vars");
 
 var rowData = vars.get("$local.rowdata");
+var user = EmployeeUtils.getCurrentContactId()
+var calendarWeek = datetime.toDate(rowData["ENTRYDATE.value"], "w");
+var calendarYear = datetime.toDate(rowData["ENTRYDATE.value"], "yyyy");
+var weekId = newSelect("VISITPLANEMPLOYEEWEEKID")
+                        .from("VISITPLANEMPLOYEEWEEK") 
+                        .where("VISITPLANEMPLOYEEWEEK.VISITPLAN_WEEK", calendarWeek)
+                        .and("VISITPLANEMPLOYEEWEEK.VISITPLAN_YEAR", calendarYear)
+                        .and("VISITPLANEMPLOYEEWEEK.CONTACT_ID", user)
+                        .cell();
+
+if(weekId)
+    visitPlanEmployeeWeekID = weekId;
+else
+{
+    var newWeekId = util.getNewUUID();
+
+    var valuesWeek = [
+        newWeekId,
+        calendarWeek,
+        calendarYear,
+        user
+    ];
+
+    var columnsWeek = [
+        "VISITPLANEMPLOYEEWEEKID",
+        "VISITPLAN_WEEK",
+        "VISITPLAN_YEAR",
+        "CONTACT_ID",
+    ];
+
+    db.insertData("VISITPLANEMPLOYEEWEEK", columnsWeek, null, valuesWeek);
+
+    visitPlanEmployeeWeekID = newWeekId;
+}    
 
 var values = [
     rowData["ENTRYDATE.value"],
     rowData["BEGIN_TIME.value"],
     rowData["END_TIME.value"],
     rowData["ORGANISATION_CONTACT_ID.value"],
-    rowData["STATUS"]
+    rowData["STATUS.value"],
+    rowData["STATUS_APPOINTMENT.value"],
+    visitPlanEmployeeWeekID
 ];
 
 var columns = [
@@ -19,7 +58,9 @@ var columns = [
     "BEGIN_TIME",
     "END_TIME",
     "ORGANISATION_CONTACT_ID",
-    "STATUS"
+    "STATUS",
+    "STATUS_APPOINTMENT",
+    "VISITPLANEMPLOYEEWEEK_ID"
 ];
 
 var cond = newWhere("VISITPLANENTRY.VISITPLANENTRYID", vars.get("$field.UID")).toString();
diff --git a/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod b/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod
index 6010af8787908086fb34aeabc91e2b53396345e4..150a4ab576ca8d3da3f3031e07d92070bd33121e 100644
--- a/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod
+++ b/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod
@@ -1,12 +1,14 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>VisitRecommendation_entity</name>
+  <title>Visit Recommendation</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/VisitRecommendation_entity/documentation.adoc</documentation>
-  <title>Visit Recommendation</title>
+  <iconProcess>%aditoprj%/entity/VisitRecommendation_entity/iconProcess.js</iconProcess>
   <grantCreate v="true" />
   <grantUpdateProcess>%aditoprj%/entity/VisitRecommendation_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/VisitRecommendation_entity/grantDeleteProcess.js</grantDeleteProcess>
+  <initFilterProcess>%aditoprj%/entity/VisitRecommendation_entity/initFilterProcess.js</initFilterProcess>
   <iconId>VAADIN:BRIEFCASE</iconId>
   <image>VAADIN:BRIEFCASE</image>
   <titlePlural>Visit Recommendations</titlePlural>
@@ -15,7 +17,7 @@
     <entityProvider>
       <name>#PROVIDER</name>
       <targetContextField>TARGET_CONTEXT</targetContextField>
-      <targetIdField>CONTACT_ID</targetIdField>
+      <targetIdField>TARGET_ID</targetIdField>
       <documentation>%aditoprj%/entity/VisitRecommendation_entity/entityfields/#provider/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
@@ -29,10 +31,13 @@
     <entityField>
       <name>CONTACT_ID</name>
       <documentation>%aditoprj%/entity/VisitRecommendation_entity/entityfields/contact_id/documentation.adoc</documentation>
-      <title>Customer</title>
+      <title>Organisation</title>
       <consumer>OrganisationConsumer</consumer>
-      <stateProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/contact_id/stateProcess.js</stateProcess>
+      <groupable v="false" />
+      <linkedContext>Organisation</linkedContext>
+      <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/contact_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>UID</name>
@@ -40,11 +45,8 @@
     </entityField>
     <entityField>
       <name>ORGANISATION_NAME</name>
-      <title>Customer</title>
-    </entityField>
-    <entityField>
-      <name>ORGANISATION_POINT_OF_CONTACT</name>
-      <title>Organisation point Of Contact</title>
+      <title>Organisation</title>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>ORGANISATION_ADDRESS</name>
@@ -54,13 +56,16 @@
       <name>PRIORITY</name>
       <title>Priority</title>
       <consumer>KeywordVisitRecommendationPriority</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/priority/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/priority/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>PRIORITY_SOURCE</name>
       <title>Priority Source</title>
       <consumer>KeywordVisitRecommendationSource</consumer>
+      <groupable v="true" />
       <displayValueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/priority_source/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
@@ -70,21 +75,14 @@
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
       <inputFormat>dd.MM.yyyy</inputFormat>
+      <groupable v="true" />
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/due_date/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>INFO</name>
       <title>Info</title>
-    </entityField>
-    <entityField>
-      <name>DATE_PLANNED</name>
-      <title>Date Planned</title>
-      <contentType>DATE</contentType>
-      <resolution>DAY</resolution>
-    </entityField>
-    <entityField>
-      <name>USER_PLANNED</name>
-      <title>Planned By</title>
+      <contentType>LONG_TEXT</contentType>
     </entityField>
     <entityConsumer>
       <name>KeywordVisitRecommendationPriority</name>
@@ -109,6 +107,12 @@
         <entityName>Organisation_entity</entityName>
         <fieldName>Organisations</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>OnlyActive_param</name>
+          <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/organisationconsumer/children/onlyactive_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityConsumer>
       <name>PersonConsumer</name>
@@ -123,6 +127,15 @@
           <expose v="true" />
           <mandatory v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>OrgId_param</name>
+          <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/personconsumer/children/orgid_param/valueProcess.js</valueProcess>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>OnlyActive_param</name>
+          <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/personconsumer/children/onlyactive_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityParameter>
@@ -136,28 +149,42 @@
       <children>
         <entityActionField>
           <name>NewVisitPlaneEntry</name>
-          <documentation>%aditoprj%/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/documentation.adoc</documentation>
           <title>New Weekplanentry</title>
           <onActionProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/onActionProcess.js</onActionProcess>
           <iconId>NEON:EXPORT</iconId>
           <state>AUTO</state>
           <stateProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/stateProcess.js</stateProcess>
-          <tooltip>Create New Weekplanentry</tooltip>
-          <tooltipProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/tooltipProcess.js</tooltipProcess>
         </entityActionField>
       </children>
     </entityActionGroup>
     <entityField>
-      <name>PRIORITY_ICON</name>
+      <name>ICON</name>
       <title></title>
-      <colorProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/priority_icon/colorProcess.js</colorProcess>
+      <colorProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/icon/colorProcess.js</colorProcess>
       <contentType>IMAGE</contentType>
-      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/priority_icon/valueProcess.js</valueProcess>
+      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/icon/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>TARGET_CONTEXT</name>
       <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/target_context/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <title>Created from</title>
+      <consumer>Employees</consumer>
+      <groupable v="true" />
+      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>CONTACT_PERSON_ID</name>
+      <title>Contact</title>
+      <description></description>
+      <consumer>PersonConsumer</consumer>
+      <groupable v="true" />
+      <linkedContext>Person</linkedContext>
+      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/contact_person_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/contact_person_id/displayValueProcess.js</displayValueProcess>
+    </entityField>
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
@@ -176,9 +203,58 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityParameter>
+      <name>ContactIdPerson_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>RESPONSIBLE</name>
+      <title>Responsible</title>
+      <consumer>Employees</consumer>
+      <groupable v="true" />
+      <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/responsible/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/responsible/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>Employees</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Employee_entity</entityName>
+        <fieldName>Employees</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>OnlyActives_param</name>
+          <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/employees/children/onlyactives_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
     <entityField>
-      <name>ADDRESS_ZIP</name>
-      <title>Zip</title>
+      <name>STREET</name>
+      <title>Street</title>
+    </entityField>
+    <entityField>
+      <name>COUNTRY</name>
+      <title>Country</title>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>ZIP</name>
+      <title>ZIP</title>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>CITY</name>
+      <title>City</title>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>STATUS</name>
+    </entityField>
+    <entityField>
+      <name>TARGET_ID</name>
+      <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/target_id/valueProcess.js</valueProcess>
     </entityField>
   </entityFields>
   <recordContainers>
@@ -186,6 +262,8 @@
       <name>jDito</name>
       <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
       <isFilterable v="true" />
+      <isGroupable v="true" />
+      <isSortable v="true" />
       <contentProcess>%aditoprj%/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
       <onInsert>%aditoprj%/entity/VisitRecommendation_entity/recordcontainers/jdito/onInsert.js</onInsert>
       <onUpdate>%aditoprj%/entity/VisitRecommendation_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
@@ -196,41 +274,76 @@
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>ORGANISATION_NAME.value</name>
+          <isFilterable v="false" />
+          <isLookupFilter v="false" />
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>STREET.value</name>
           <isFilterable v="true" />
-          <isLookupFilter v="true" />
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
-          <name>ORGANISATION_POINT_OF_CONTACT.value</name>
+          <name>COUNTRY.value</name>
+          <isFilterable v="true" />
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
-          <name>ORGANISATION_ADDRESS.value</name>
+          <name>ZIP.value</name>
+          <isFilterable v="true" />
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>CITY.value</name>
+          <isFilterable v="true" />
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>PRIORITY.value</name>
           <isFilterable v="true" />
-          <isLookupFilter v="true" />
+          <isLookupFilter v="false" />
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>PRIORITY_SOURCE.value</name>
+          <isFilterable v="true" />
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>PRIORITY.displayValue</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>DUE_DATE.value</name>
+          <isFilterable v="true" />
+          <isLookupFilter v="false" />
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>INFO.value</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>CONTACT_ID.value</name>
+          <isFilterable v="true" />
+          <isLookupFilter v="true" />
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>PRIORITY_SOURCE.displayValue</name>
         </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
-          <name>ADDRESS_ZIP.value</name>
+          <name>USER_NEW.displayValue</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>USER_NEW.value</name>
           <isFilterable v="true" />
+          <isLookupFilter v="true" />
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>CONTACT_PERSON_ID.displayValue</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>CONTACT_PERSON_ID.value</name>
+          <isFilterable v="true" />
+          <isLookupFilter v="true" />
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>RESPONSIBLE.displayValue</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>RESPONSIBLE.value</name>
+          <isFilterable v="true" />
+          <isLookupFilter v="true" />
         </jDitoRecordFieldMapping>
       </recordFieldMappings>
       <filterExtensions>
diff --git a/entity/VisitRecommendation_entity/entityfields/contact_id/displayValueProcess.js b/entity/VisitRecommendation_entity/entityfields/contact_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e91b48435345a0dad841873c3199e8f9f1fd5ad6
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/contact_id/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("Contact_lib");
+import("system.result");
+
+result.string(ContactUtils.getFullTitleByContactId(vars.get("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/contact_id/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/contact_id/valueProcess.js
index 683ba24292b07fb95f063e4d5e7a2c25bcfe1807..f816ac54f7ec6f78adcdabf383dbb4b13faddb27 100644
--- a/entity/VisitRecommendation_entity/entityfields/contact_id/valueProcess.js
+++ b/entity/VisitRecommendation_entity/entityfields/contact_id/valueProcess.js
@@ -3,5 +3,5 @@ import("system.neon");
 import("system.result");
 import("system.vars");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && (vars.get("$this.value") == null || vars.get("$this.value") == undefined))
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
     result.string(vars.get("$param.ContactId_param"));
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/contact_person_id/displayValueProcess.js b/entity/VisitRecommendation_entity/entityfields/contact_person_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2b20cde46f73e3abf1d2d2a1fdf5d9380639900b
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/contact_person_id/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("Contact_lib");
+import("system.result");
+
+result.string(ContactUtils.getFullTitleByContactId(vars.get("$field.CONTACT_PERSON_ID")));
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/contact_person_id/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/contact_person_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a00c3df76bc3df83ed648214e443d6cdf4fb1a68
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/contact_person_id/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.logging");
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && (vars.get("$this.value") == null || vars.get("$this.value") == undefined))
+    result.string(vars.get("$param.ContactIdPerson_param"));
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/due_date/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/due_date/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d7a1644833767138c6693baa5090f9d41247257
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/due_date/valueProcess.js
@@ -0,0 +1,36 @@
+import("system.datetime");
+import("Sql_lib");
+import("Employee_lib");
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+{
+    var contactidResp = vars.get("$field.RESPONSIBLE")
+    var maturity = newSelect("AB_ATTRIBUTE.ATTRIBUTE_NAME")
+                        .from("AB_ATTRIBUTERELATION")
+                        .join("AB_ATTRIBUTE", "AB_ATTRIBUTE.AB_ATTRIBUTEID = AB_ATTRIBUTERELATION.ID_VALUE")
+                        .where("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", "e8770b60-160c-466e-af57-4f90bd6e02d7")
+                        .and("AB_ATTRIBUTERELATION.OBJECT_ROWID", contactidResp)
+                        .cell();
+    
+    var due_date = new Date();
+    switch(maturity)
+    {
+        case "2 Weeks":
+            due_date =due_date.setDate(due_date.getDate() +  14);
+            break;
+        case "1 Month":
+            due_date = due_date.setMonth(due_date.getMonth() + 1);
+            break;
+        case "6 Months":
+            due_date = due_date.setMonth(due_date.getMonth() +  6);
+            break;
+        case "12 Months":
+            due_date = due_date.setMonth(due_date.getMonth() +  12);
+            break;
+    }
+    result.string(due_date);
+}
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/employees/children/onlyactives_param/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/employees/children/onlyactives_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..40effa0178464da0c7850912345f19c7fa95975a
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/employees/children/onlyactives_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string(true);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/priority_icon/colorProcess.js b/entity/VisitRecommendation_entity/entityfields/icon/colorProcess.js
similarity index 82%
rename from entity/VisitRecommendation_entity/entityfields/priority_icon/colorProcess.js
rename to entity/VisitRecommendation_entity/entityfields/icon/colorProcess.js
index ab4b8c5257b11b9cb7bd3dc359c767708096fec2..024b512f4ab73e7b68f250c62a934b403432666f 100644
--- a/entity/VisitRecommendation_entity/entityfields/priority_icon/colorProcess.js
+++ b/entity/VisitRecommendation_entity/entityfields/icon/colorProcess.js
@@ -5,20 +5,17 @@ import("system.neon");
 
 switch(vars.getString("$field.PRIORITY"))
 {
-    case $KeywordRegistry.taskPriority$none():
-        result.string(neon.PRIORITY_NONE_COLOR);
-        break;
     case $KeywordRegistry.visitRecommendationPriority$low():
-        result.string(neon.PRIORITY_LOW_COLOR);
+        result.string(neon.PRIORITY_NONE_COLOR);
         break;
     case $KeywordRegistry.visitRecommendationPriority$medium():
-        result.string(neon.PRIORITY_MEDIUM_COLOR);
+        result.string(neon.PRIORITY_LOW_COLOR);
         break;
     case $KeywordRegistry.visitRecommendationPriority$high():
-        result.string(neon.PRIORITY_HIGH_COLOR);
+        result.string(neon.PRIORITY_MEDIUM_COLOR);
         break;
     case $KeywordRegistry.visitRecommendationPriority$veryHigh():
-        result.string(neon.PRIORITY_HIGH_COLOR);
+        result.string(neon.PRIORITY_MEDIUM_COLOR);
         break;
     case $KeywordRegistry.visitRecommendationPriority$critical():
         result.string(neon.PRIORITY_HIGH_COLOR);
diff --git a/entity/VisitRecommendation_entity/entityfields/icon/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/icon/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a854c12a8ace3163b6711ad66fb7c0b6de60095
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/icon/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.logging");
+import("system.vars");
+import("Keyword_lib");
+import("ActivityTask_lib");
+import("KeywordRegistry_basic");
+import("system.result");
+
+var source = vars.get("$field.PRIORITY_SOURCE");
+if(source== "MANUAL")
+    result.string("NEON:CONVERSATION_PLANNING_MANUAL");
+else if(source== "VISITFREQUENCY")
+    result.string("NEON:CONVERSATION_PLANNING_FREQUENCY");
diff --git a/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/documentation.adoc b/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/documentation.adoc
deleted file mode 100644
index cb90b44b24aeaa10d2a2516a74821433c31c6fae..0000000000000000000000000000000000000000
--- a/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/documentation.adoc
+++ /dev/null
@@ -1 +0,0 @@
-Creates a new Weekplanentry
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/onActionProcess.js b/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/onActionProcess.js
index 18fed0aa2bf4948e022c030e7276e08d780977bd..e5ac707432897a4fca32c7d98e93f4deea37f655 100644
--- a/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/onActionProcess.js
+++ b/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/onActionProcess.js
@@ -7,5 +7,8 @@ var params = {};
 params["OrganisationId_param"] = vars.get("$field.CONTACT_ID")
 params["NoVisitPlanEmployeeWeek_param"] = true;
 params["ComingFromRecommendation_param"] = true;
+params["ContactId_param"] = vars.get("$field.CONTACT_PERSON_ID");
+params["Entrydate_param"] = vars.get("$field.DUE_DATE");
+params["VisitrecommendationId_param"] = vars.get("$field.UID");
 
 neon.openContext("VisitPlanEntry", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/tooltipProcess.js b/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/tooltipProcess.js
deleted file mode 100644
index 13967e50f1a7555e4a856ac9dde648b9501d5a4f..0000000000000000000000000000000000000000
--- a/entity/VisitRecommendation_entity/entityfields/newentrygroup/children/newvisitplaneentry/tooltipProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.translate");
-import("system.result");
-
-result.string(translate.text("Create New Weekplanentry"));
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/organisationconsumer/children/onlyactive_param/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/organisationconsumer/children/onlyactive_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..40effa0178464da0c7850912345f19c7fa95975a
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/organisationconsumer/children/onlyactive_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string(true);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/personconsumer/children/onlyactive_param/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/personconsumer/children/onlyactive_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..40effa0178464da0c7850912345f19c7fa95975a
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/personconsumer/children/onlyactive_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string(true);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/personconsumer/children/orgid_param/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/personconsumer/children/orgid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e954cbeb0d367090f994ec596ab42d068a912cfd
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/personconsumer/children/orgid_param/valueProcess.js
@@ -0,0 +1,9 @@
+import("Sql_lib");
+import("system.vars");
+import("system.result");
+
+if(vars.get("$field.CONTACT_ID"))
+{
+    orgid = newSelect("CONTACT.ORGANISATION_ID").from("CONTACT").where("CONTACT.CONTACTID", vars.get("$field.CONTACT_ID")).cell();
+    result.string(orgid);
+}
diff --git a/entity/VisitRecommendation_entity/entityfields/priority/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/priority/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cbdf0752457c49ae5a0da79ccefde5d978056b3c
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/priority/valueProcess.js
@@ -0,0 +1,10 @@
+import("system.logging");
+import("system.neon");
+import("system.vars");
+import("KeywordRegistry_basic");
+import("system.result");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string($KeywordRegistry.visitRecommendationPriority$medium());
+
+    
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/priority_icon/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/priority_icon/valueProcess.js
deleted file mode 100644
index e966de8384cdb82778eb0d4ac5be2e27f7d129ae..0000000000000000000000000000000000000000
--- a/entity/VisitRecommendation_entity/entityfields/priority_icon/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("ActivityTask_lib");
-import("KeywordRegistry_basic");
-import("system.result");
-
-result.string(TaskUtils.getStatusIcon($KeywordRegistry.taskStatus$new));
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/responsible/displayValueProcess.js b/entity/VisitRecommendation_entity/entityfields/responsible/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..46777a8ba61d19bf3a9f8b3dfe737b8bc15744dc
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/responsible/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("Contact_lib");
+import("system.result");
+
+
+result.string(ContactUtils.getFullTitleByContactId(vars.get("$field.RESPONSIBLE"), false));
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/responsible/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/responsible/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f5a6569b2823a8bf027f16e51ebda3a2c25d383d
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/responsible/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.vars");
+import("Employee_lib");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+    result.string(EmployeeUtils.getCurrentContactId())
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/target_context/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/target_context/valueProcess.js
index a16a18c5851a7581712372aa29616de6b8ea61af..2899d9fff95bf928083f552f5b71d35327b7009b 100644
--- a/entity/VisitRecommendation_entity/entityfields/target_context/valueProcess.js
+++ b/entity/VisitRecommendation_entity/entityfields/target_context/valueProcess.js
@@ -1,3 +1,7 @@
+import("system.vars");
 import("system.result");
 
-result.string("Organisation")
\ No newline at end of file
+if(vars.get("$field.CONTACT_PERSON_ID"))
+    result.string("Person")
+else
+    result.string("Organisation")
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/target_id/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/target_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b68d32e6889172a4a1710a2ea1a45875faadf869
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/target_id/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.vars");
+
+if(vars.get("$field.CONTACT_PERSON_ID"))
+    result.string(vars.get("$field.CONTACT_PERSON_ID"))
+else
+    result.string(vars.get("$field.CONTACT_ID"))
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/entityfields/user_new/valueProcess.js b/entity/VisitRecommendation_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..23de8e21545009a5333ff42b4d9d67e2c3afbf9a
--- /dev/null
+++ b/entity/VisitRecommendation_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,7 @@
+import("Employee_lib");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && (vars.get("$this.value") == null || vars.get("$this.value") == undefined))
+    result.string(EmployeeUtils.getCurrentContactId());
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/initFilterProcess.js b/entity/VisitRecommendation_entity/initFilterProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66870117e5c56c7922c951a7242e4d4829a977f3
--- /dev/null
+++ b/entity/VisitRecommendation_entity/initFilterProcess.js
@@ -0,0 +1,37 @@
+import("Contact_lib");
+import("system.neon");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+import("system.result");
+import("Employee_lib");
+
+var res;
+if (vars.get("$sys.presentationmode") === neon.CONTEXT_PRESENTATIONMODE_FILTER) 
+{
+    var sourceKey = $KeywordRegistry.visitRecommendationPrioSource$manual()
+    filter = {
+        type: "group",
+        operator: "OR",
+        childs: [{
+            type: "row",
+            name: "RESPONSIBLE",
+            operator: "EQUAL",
+            contenttype: "TEXT",
+            key: EmployeeUtils.getCurrentContactId(),
+            value: ContactUtils.getFullTitleByContactId(EmployeeUtils.getCurrentContactId(), false)
+        },
+        {
+            type: "row",
+            name: "RESPONSIBLE",
+            operator: "ISNULL",
+            contenttype: "TEXT",
+            key: ""
+        }
+    ]
+    };
+    res = JSON.stringify(filter);
+}
+
+if (res)
+    result.string(res);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
index 42fecc4e3d198603e333edf0c71beed523ff615a..b81300d798fe257ccabdec92ab27e71394fc5f2b 100644
--- a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
@@ -1,4 +1,4 @@
-import("system.SQLTYPES");
+import("JditoFilter_lib");
 import("system.eMath");
 import("system.tools");
 import("PostalAddress_lib");
@@ -17,288 +17,258 @@ import("AttributeRegistry_basic");
 import("KeywordRegistry_basic");
 import("Util_lib");
 import("Address_lib");
-import("JditoFilter_lib");
 
-var sqlMasker = new SqlMaskingUtils();
+var recommendationData = [];
+var tmpData = [];
+var activitySubQuery = "";
+var recommendationSQLData = newSelect(
+                            [
+                                "VISITRECOMMENDATIONID",                //0
+                                "VISITRECOMMENDATION.CONTACT_ID",       //1
+                                "PRIORITY",                             //2
+                                "DUE_DATE",                             //3
+                                "SOURCE",                               //4
+                                "INFO",                                 //5
+                                "ADDRESS.ADDRESS",                      //6
+                                "ADDRESS.COUNTRY",                      //7
+                                "ADDRESS.ZIP",                          //8
+                                "ADDRESS.CITY",                         //9
+                                "VISITRECOMMENDATION.USER_NEW",         //10
+                                "VISITRECOMMENDATION.CONTACT_PERSON_ID",//11
+                                "VISITRECOMMENDATION.RESPONSIBLE",      //12
+                            ]) 
+                            .from("VISITRECOMMENDATION")
+                            .join("CONTACT", "coalesce(VISITRECOMMENDATION.CONTACT_PERSON_ID, VISITRECOMMENDATION.CONTACT_ID) = CONTACT.CONTACTID")
+                            .leftJoin("ADDRESS", "CONTACT.ADDRESS_ID = ADDRESS.ADDRESSID")
+                            .where("VISITRECOMMENDATION.STATUS is null")
 
-var activitySubQuery = newSelect("max(ENTRYDATE)")
-                                .from("ACTIVITY")
-                                .join("ACTIVITYLINK", "ACTIVITYID = ACTIVITY_ID")
-                                .where("ACTIVITYLINK.OBJECT_ROWID = org.ORGANISATIONID")
-                                .and("ACTIVITY.CATEGORY", "VISIT")
 
-var idValues = null;
+var idValues = false;
 if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
-    idValues = vars.get("$local.idvalues");
+    idValues = true;
 
-//dynamic Recommendations
-//recommended Organisations containing the attribute Visit Frequency
+if(idValues == true)
+    recommendationSQLData.and("VISITRECOMMENDATION.VISITRECOMMENDATIONID", vars.get("$local.idvalues"), SqlBuilder.IN())
 
-if (!idValues)
-{
-    var visitFrequencyData = newSelect([
-            "org.ORGANISATIONID", 
-            "NAME", 
-            newSelect("CONTACT.CONTACTID")
-                .from("CONTACT")
-                .leftJoin("AB_ATTRIBUTERELATION", "CONTACT.CONTACTID = AB_ATTRIBUTERELATION.OBJECT_ROWID")
-                .leftJoin("AB_ATTRIBUTE", "AB_ATTRIBUTE.AB_ATTRIBUTEID = AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID")
-                .leftJoin("ORGANISATION", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID")
-                .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", $AttributeRegistry.visitPlanPointOfContact()), 
-            AddressUtils.formatOnelineSql(), 
-            "visitPlanFrequency.ID_VALUE", 
-            "'" + $KeywordRegistry.visitRecommendationPrioSource$visitFrequency()+"'" , 
-            activitySubQuery, 
-            "CONTACTID",
-            newSelect("min(ENTRYDATE)")
-                .from("VISITPLANENTRY") 
-                .where("CONTACT.CONTACTID", "VISITPLANENTRY.ORGANISATION_CONTACT_ID") 
-                .and(newWhere("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$planned())
-                    .or("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged()))
-                .and("VISITPLANENTRY.ENTRYDATE", newSelect("min(vp.ENTRYDATE)")
-                    .from("VISITPLANENTRY", "vp")
-                    .where(["VISITPLANENTRY", "ORGANISATION_CONTACT_ID", "vp"], "visitplanentry.ORGANISATION_CONTACT_ID")
-                    .and(["VISITPLANENTRY", "ENTRYDATE", "vp"], datetime.today())
-                    .and(newWhere(["VISITPLANENTRY", "STATUS", "vp"], 
-                    $KeywordRegistry.visitPlanEntryStatus$planned())
-                    .or(["VISITPLANENTRY", "STATUS", "vp"], 
-                    $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged()))
-                    .cell()),
-            "ADDRESS.ZIP"
-        ])
-        .from("CONTACT")
-        .join("ORGANISATION", "CONTACT.ORGANISATION_ID = org.ORGANISATIONID", "org")
-        .leftJoin("PERSON", "PERSON.PERSONID = CONTACT.PERSON_ID")
-        .leftJoin("ADDRESS", "ADDRESS_ID = ADDRESSID")
-        .join("AB_ATTRIBUTERELATION", "visitPlanFrequency.OBJECT_ROWID = CONTACT.CONTACTID", "visitPlanFrequency")
-        .where(["AB_ATTRIBUTERELATION", "AB_ATTRIBUTE_ID", "visitPlanFrequency"], $AttributeRegistry.visitPlanFrequency())
-        .table();
-        
-    
- }
+recommendationSQLData = recommendationSQLData.table();
 
-var prioSubSql = _getPrioByDueDateSubSql("VISITRECOMMENDATION.DUE_DATE", "VISITRECOMMENDATION.PRIORITY");
-
-var recommendationSQLData = newSelect([
-    "VISITRECOMMENDATIONID", 
-    "VISITRECOMMENDATION.CONTACT_ID", 
-    "ORGANISATION.NAME", 
-    prioSubSql, 
-    "VISITRECOMMENDATION.DUE_DATE", 
-    "VISITRECOMMENDATION.SOURCE", 
-    "VISITRECOMMENDATION.INFO", 
-    AddressUtils.formatOnelineSql(), 
-    newSelect("CONTACT.CONTACTID")
-                .from("CONTACT")
-                .leftJoin("AB_ATTRIBUTERELATION", "CONTACT.CONTACTID = AB_ATTRIBUTERELATION.OBJECT_ROWID")
-                .leftJoin("AB_ATTRIBUTE", "AB_ATTRIBUTE.AB_ATTRIBUTEID = AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID")
-                .leftJoin("ORGANISATION", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID")
-                .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", $AttributeRegistry.visitPlanPointOfContact())
-                .and("CONTACT.CONTACTID", "VISITRECOMMENDATION.CONTACT_ID")
-                .cell(),
-                
-    newSelect("min(ENTRYDATE)")
-                .from("VISITPLANENTRY")
-                .where("VISITPLANENTRY.ORGANISATION_CONTACT_ID", "VISITRECOMMENDATION.CONTACT_ID")
-                .and("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$planned())
-                .or("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged())
-                .and("VISITPLANENTRY.entrydate", datetime.today(), SqlBuilder.GREATER())
-                .cell(),
-                
-    newSelect("VISITRECOMMENDATION.CONTACT_ID")
-                .from("VISITPLANEMPLOYEEWEEK, VISITPLANENTRY")
-                .where("VISITPLANENTRY.VISITPLANEMPLOYEEWEEK_ID", "VISITPLANEMPLOYEEWEEK.VISITPLANEMPLOYEEWEEKID")
-                .and("VISITRECOMMENDATION.CONTACT_ID", "VISITPLANENTRY.ORGANISATION_CONTACT_ID")
-                .and(newWhere("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$planned())
-                .or("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged()))
-                .and("VISITPLANENTRY.entrydate", newSelect("min(vp.entrydate)")
-                                                                .from("visitplanentry", "VP")
-                                                                .where(["VISITPLANENTRY", "entrydate", "vp"], datetime.today(), SqlBuilder.GREATER())
-                                                                .and(["VISITPLANENTRY", "STATUS", "vp"], $KeywordRegistry.visitPlanEntryStatus$planned())
-                                                                .or(["VISITPLANENTRY", "STATUS", "vp"], $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged()).cell()),
-    "ADDRESS.ZIP"
-])
-        .from("VISITRECOMMENDATION")
-        .join("CONTACT", "VISITRECOMMENDATION.CONTACT_ID = CONTACT.CONTACTID")
-        .leftJoin("ORGANISATION", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID")
-        .join("ADDRESS", "CONTACT.ADDRESS_ID = ADDRESS.ADDRESSID")
-        .whereIfSet("VISITRECOMMENDATION.VISITRECOMMENDATIONID", idValues, SqlBuilder.IN());
-
-var filterCond = new FilterSqlTranslator(vars.get("$local.filter"), "VISITRECOMMENDATION")
-    .addSqlFieldMapping("ORGANISATION_NAME", "ORGANISATION.NAME")
-    .addSqlFieldMapping("ADDRESS_ZIP", "ADDRESS.ZIP")
-    .addSpecialFieldConditionFn("PRIORITY", function (pFilterValue, pOperator)
-    {
-        switch (pOperator)
-        {
-            case "EQUAL":
-                return [prioSubSql[0] + " = ?", prioSubSql[1].concat([[pFilterValue, SQLTYPES.VARCHAR]])];
-            case "NOT_EQUAL":
-                return [prioSubSql[0] + " != ?", prioSubSql[1].concat([[pFilterValue, SQLTYPES.VARCHAR]])];
-            case "ISNULL":
-                return [prioSubSql[0] + " is null", prioSubSql[1]];
-            case "ISNOTNULL":
-                return [prioSubSql[0] + " is not null", prioSubSql[1]];
-            default:
-                return false;
-        }
-    })
-    .getSqlCondition();
-
-recommendationSQLData = recommendationSQLData.andIfSet(filterCond).table();
-
-var recommendationData = recommendationSQLData.map(function ([uid, contactId, organisationName, priority, dueDate, prioSource, info, address, what, plannedDate, visitContact, addressZip])
+for( let i = 0; i < recommendationSQLData.length; i++)
 {
-    var title = "";
-    if(visitContact)
-    {
-        var user = tools.getUserByAttribute(tools.CONTACTID, visitContact);
-        title = user[tools.TITLE]
-    }
-    
-    return [
-        uid,
-        organisationName,
-        plannedDate,
-        address,
-        priority,
-        prioSource,
-        KeywordUtils.getViewValue($KeywordRegistry.visitRecommendationPrioSource(), prioSource), //Source of Priority (displayvalue)
-        dueDate,
-        info,
-        contactId,
-        "",
-        addressZip
+    if(recommendationSQLData[i][2])
+        var prio = recommendationSQLData[i][2];
+    else if(recommendationSQLData[i][3])
+        prio = getPrioByDueDate(recommendationSQLData[i][3]);
+    else
+        prio = $KeywordRegistry.visitRecommendationPriority$low();  
+
+    tmpData = [
+        recommendationSQLData[i][0], //UID.value
+        ContactUtils.getFullTitleByContactId(recommendationSQLData[i][1]), //ORGANISATION_NAME.value
+        recommendationSQLData[i][6], //STREET.value
+        recommendationSQLData[i][7], //COUNTRY.value
+        recommendationSQLData[i][8], //ZIP.value
+        recommendationSQLData[i][9], //CITY.value
+        prio, //PRIORITY.value
+        recommendationSQLData[i][4], //PRIORITY_SOURCE.value
+        KeywordUtils.getViewValue($KeywordRegistry.visitRecommendationPriority(), prio), //PRIORITY.displayValue
+        recommendationSQLData[i][3], //DUE_DATE.value
+        recommendationSQLData[i][5], //INFO.value
+        recommendationSQLData[i][1], //CONTACT_ID.value
+        KeywordUtils.getViewValue($KeywordRegistry.visitRecommendationPrioSource(), recommendationSQLData[i][4]), //PRIORITY_SOURCE.displayValue
+        ContactUtils.getFullTitleByContactId(recommendationSQLData[i][10], false), //USER_NEW.displayvalue
+        recommendationSQLData[i][10], //USER_NEW.value
+        ContactUtils.getFullTitleByContactId(recommendationSQLData[i][11], false), //CONTACT_PERSON_ID.displayvalue
+        recommendationSQLData[i][11], //CONTACT_PERSON_ID.value
+        ContactUtils.getFullTitleByContactId(recommendationSQLData[i][12], false), //RESPONSIBLE.displayvalue
+        recommendationSQLData[i][12] //RESPONSIBLE.value
     ];
-});
 
+    recommendationData.push(tmpData);
+}
+
+//===========Visitfrequency============
 var monthly = parseInt(datetime.ONE_DAY * 31);
 var semiannually = parseInt(datetime.ONE_DAY * 183);
 var quarterly = parseInt(datetime.ONE_DAY * 93);
 var yearly = parseInt(datetime.ONE_DAY * 365);
 
-if (!idValues)
+//dynamic Recommendations
+//recommended Organisations containing the attribute Visit Frequency
+if(idValues == false)
 {
-    var frequencyData = [];
+    
+    activitySubQuery = newSelect("max(ENTRYDATE)")
+                        .from("ACTIVITY")
+                        .join("ACTIVITYLINK", "ACTIVITYID = ACTIVITY_ID")
+                        .where("ACTIVITYLINK.OBJECT_ROWID = CONTACT.CONTACTID")
+                        .and("ACTIVITY.CATEGORY", "VISIT")
+
+    var visitFrequencyData = newSelect(["''"    //0
+                                        , "CONTACT.CONTACTID" //1
+                                        , "(" + newSelect("CONTACT.CONTACTID")
+                                                .from("CONTACT")
+                                                .leftJoin("AB_ATTRIBUTERELATION", "CONTACT.CONTACTID = AB_ATTRIBUTERELATION.OBJECT_ROWID")
+                                                .leftJoin("AB_ATTRIBUTE", "AB_ATTRIBUTE.AB_ATTRIBUTEID = AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID")
+                                                .leftJoin("ORGANISATION", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID")
+                                                .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", $AttributeRegistry.visitPlanPointOfContact())
+                                                + 
+                                            ")"            //2
+                                        ,"ADDRESS.ADDRESS" //3
+                                        ,"ADDRESS.COUNTRY" //4
+                                        ,"ADDRESS.ZIP"     //5
+                                        ,"ADDRESS.CITY"    //6
+                                        , "visitPlanFrequency.ID_VALUE"//7
+                                        , activitySubQuery //8
+                                        , "org.NAME" //9
+                                        , "PERSON.PERSONID" //10
+                                ])
+                            .from("CONTACT")
+                            .join("ORGANISATION", "CONTACT.ORGANISATION_ID = org.ORGANISATIONID", "org")
+                            .leftJoin("PERSON", "PERSON.PERSONID = CONTACT.PERSON_ID")
+                            .leftJoin("ADDRESS", "ADDRESS_ID = ADDRESSID")
+                            .join("AB_ATTRIBUTERELATION", "visitPlanFrequency.OBJECT_ROWID = CONTACT.CONTACTID", "visitPlanFrequency")
+                            .where(["AB_ATTRIBUTERELATION", "AB_ATTRIBUTE_ID", "visitPlanFrequency"], $AttributeRegistry.visitPlanFrequency())
+                            .table()
+     
     for (var i = 0; i < visitFrequencyData.length; i++)
     {
-        let title = "";
-
-        if(visitFrequencyData[i][10])
-        {
-            let user = tools.getUserByAttribute(tools.CONTACTID, visitFrequencyData[i][9]);
-            title = user[tools.TITLE]
-        }
-        
-        let tmpData = [
-            visitFrequencyData[i][0],                 //UID
-            visitFrequencyData[i][1],                 //Organisation Name
-            visitFrequencyData[i][2],                 //point of contact
-            visitFrequencyData[i][3],                 //Address
-            "",                                       //prio
-            visitFrequencyData[i][5],                 //Source of Priority (Id)
-            "",                                       //Source of Priority (displayvalue)
-            "",                                       //dueDate
-            "",                                       //info
-            visitFrequencyData[i][7],                 //ContactId
-            "",
-            visitFrequencyData[i][9]
-        ];
+        var isPersonContact = visitFrequencyData[i][10] != ""
         var dueDate = "";
-        var lastVisitDate = visitFrequencyData[i][8];
-
-        if (!lastVisitDate)
+        var lastVisitDate = "";
+        var today = datetime.date();
+        if((visitFrequencyData[i][8]).length == 0)
         {
-            dueDate = datetime.date();
+            dueDate = today;
         }
         else
         {
-            switch(visitFrequencyData[i][4])
+            lastVisitDate = visitFrequencyData[i][8];
+            switch(visitFrequencyData[i][7])
             {
                 case $AttributeRegistry.visitPlanFrequency$monthly():
-                {
                     dueDate = eMath.addInt(lastVisitDate, monthly);
                     break;
-                }
                 case $AttributeRegistry.visitPlanFrequency$quarterly():
-                {
                     dueDate = eMath.addInt(lastVisitDate, quarterly);
                     break;
-                }
                 case $AttributeRegistry.visitPlanFrequency$semiannually():
-                {
                     dueDate = eMath.addInt(lastVisitDate, semiannually);
                     break;
-                }
                 case $AttributeRegistry.visitPlanFrequency$yearly():
-                {
                     dueDate = eMath.addInt(lastVisitDate, yearly);
                     break;
-                }
                 default:
-                {
                     break;
-                }
-
             }
         }
-        tmpData[7] = dueDate;                                       //Due Date
-        tmpData[4] = getPrioByDueDate(dueDate);                     //Priority
-
-        frequencyData.push(tmpData);
+        
+        tmpData = [
+            visitFrequencyData[i][1], //UID.value
+            visitFrequencyData[i][9], //ORGANISATION_NAME.value
+            visitFrequencyData[i][3], //STREET.value
+            visitFrequencyData[i][4], //COUNTRY.value
+            visitFrequencyData[i][5], //ZIP.value
+            visitFrequencyData[i][6], //CITY.value
+            getPrioByDueDate(dueDate), //PRIORITY.value
+            $KeywordRegistry.visitRecommendationPrioSource$visitFrequency(), //PRIORITY_SOURCE.value
+            KeywordUtils.getViewValue($KeywordRegistry.visitRecommendationPriority(), getPrioByDueDate(dueDate)), //PRIORITY.displayValue
+            dueDate, //DUE_DATE.value
+            "", //INFO.value
+            visitFrequencyData[i][1], //CONTACT_ID.value
+            KeywordUtils.getViewValue($KeywordRegistry.visitRecommendationPrioSource(), $KeywordRegistry.visitRecommendationPrioSource$visitFrequency()), //PRIORITY_SOURCE.displayValue
+            "", //USER_NEW.displayValue
+            "", //USER_NEW.value
+            ContactUtils.getFullTitleByContactId(visitFrequencyData[i][1], false), //CONTACT_PERSON_ID.displayValue
+            isPersonContact ? visitFrequencyData[i][1]: "", //CONTACT_PERSON_ID.value
+            "", //RESPONSIBLE.displayValue
+            "" //RESPONSIBLE.value
+        ];
+        
+        
+        var manualRec = newSelect("VISITRECOMMENDATION.VISITRECOMMENDATIONID")
+        .from("VISITRECOMMENDATION")
+        .where("VISITRECOMMENDATION.CONTACT_ID", tmpData[0])
+        .or("VISITRECOMMENDATION.CONTACT_PERSON_ID", tmpData[0])
+        .cell()
+        
+        var visitEntry = newSelect("VISITPLANENTRY.VISITPLANENTRYID")
+        .from("VISITPLANENTRY")
+        .where(newWhere("VISITPLANENTRY.CONTACT_ID", tmpData[0])
+            .or("VISITPLANENTRY.ORGANISATION_CONTACT_ID", tmpData[0]))
+        
+       var visitEntryExists = visitEntry.cell();
+       
+       visitEntry = visitEntry.and(newWhere("VISITPLANENTRY.ENTRYDATE", eMath.subInt(vars.get("$sys.today"), datetime.ONE_DAY * 7), SqlBuilder.LESS_OR_EQUAL())
+            .and("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated(), SqlBuilder.NOT_EQUAL()))
+            .or("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated(), SqlBuilder.EQUAL()).cell()
+       
+       if(!manualRec) //if manual Record was created, visitfrequency is not relevant
+       {
+           //!visitEntryExists - if no visitplanentry for the organisation/person from recommendation was created -> show recommendation so it can be planned
+           if(!visitEntryExists || visitEntry)
+           {    
+               recommendationData.push(tmpData);
+           }
+       }
     }
-    var recordFilter = vars.get("$local.filter");
-    if (recordFilter && recordFilter.filter)
-        frequencyData = JditoFilterUtils.filterRecords(["UID", "ORGANISATION_NAME", "", "ORGANISATION_ADDRESS", "PRIORITY", "", "", "DUE_DATE", "INFO", "CONTACT_ID", "", "ADDRESS_ZIP"], 
-            frequencyData, recordFilter.filter);
-    recommendationData = recommendationData.concat(frequencyData);
 }
 
+var filter = vars.get("$local.filter"); 
+//TODO: this is a workaround that filters the records manually, it should be possible to filter the users with a tools.* method
+var filterFields = ["", "ORGANISATION_NAME", "STREET", "COUNTRY" , "ZIP", "CITY", "PRIORITY", "PRIORITY_SOURCE", "", "DUE_DATE", "INFO", "CONTACT_ID"
+    , "", "", "USER_NEW", "", "CONTACT_PERSON_ID", "", "RESPONSIBLE"];
+var filterFns = {
+    "$$$LOOKUPFIELD$$$" : function (pRecordValue, pFilterValue, pOperator, pRow)
+    {
+        if (pOperator == "CONTAINS")
+        {
+            pRow = [pRow[1], pRow[3], pRow[4], pRow[5]];
+            var filterValues = pFilterValue.split(" ").filter(function (val) {return val.trim();});
+            return filterValues.every(function (filterValue)
+            {
+                return pRow.some(function (fieldValue)
+                {
+                    return (new RegExp(filterValue, "i")).test(fieldValue);
+                });
+            });
+        }
+        return false;
+    }
+};
+recommendationData = JditoFilterUtils.filterRecords(filterFields, recommendationData, filter.filter, filterFns);
 
-//add Display Value for Priority and PrioritySource
-for (let i = 0; i < recommendationData.length; i++)
-{
-    recommendationData[i][6] = KeywordUtils.getViewValue($KeywordRegistry.visitRecommendationPriority(), recommendationData[i][4])
-    recommendationData[i][10] = KeywordUtils.getViewValue($KeywordRegistry.visitRecommendationPrioSource(), recommendationData[i][5])
-}
-
-//sort Array by priority; highest priority first
-ArrayUtils.sort2d(recommendationData, 4, true)
 
-result.object(recommendationData);
+var order = vars.get("$local.order");
 
-function _getPrioByDueDateSubSql (pDueDateField, pPriorityField)
+var columnOrder = {
+    "ORGANISATION_NAME.value": 1, 
+    "STREET.value": 2,
+    "COUNTRY.value": 3, 
+    "ZIP.value": 4, 
+    "CITY.value": 5, 
+    "PRIORITY.value": 6, 
+    "PRIORITY_SOURCE.value": 7, 
+    "DUE_DATE.value": 9,
+    "USER_NEW.displayValue": 13,
+    "CONTACT_PERSON_ID.displayValue": 15,
+    "RESPONSIBLE.displayValue": 17
+};
+var sortOrder = [];
+for (let field in order)
 {
-    var currentDate = datetime.date();
-    var sqlMasker = new SqlMaskingUtils();
-    //!SqlBuilder
-    var subSql = "case when " + pDueDateField + " < ? then '" + $KeywordRegistry.visitRecommendationPriority$critical()
-        + "' when " + pDueDateField + " < ? then '" + $KeywordRegistry.visitRecommendationPriority$veryHigh()
-        + "' when " + pDueDateField + " < ? then '" + $KeywordRegistry.visitRecommendationPriority$high()
-        + "' when " + pDueDateField + " < ? then '" + $KeywordRegistry.visitRecommendationPriority$medium()
-        + "' else '" + $KeywordRegistry.visitRecommendationPriority$low() + "' end";
-    
-    var [table, field] = pDueDateField.split(".");
-    var dateFieldType = db.getColumnTypes(table, [field])[0];
-    
-    var dateDiffs = [
-        0,                      //critical
-        datetime.ONE_DAY * 3,   //very high
-        datetime.ONE_WEEK,      //high
-        datetime.ONE_WEEK * 2   //medium
-    ];
-    
-    var preparedValues = dateDiffs.map(function (dateDiff)
+    if (field in columnOrder)
     {
-        return [(currentDate + dateDiff).toString(), dateFieldType];
-    });
-    
-    if (pPriorityField)
-        subSql = sqlMasker.isNull(pPriorityField, "(" + subSql + ")");
-    
-    return [subSql, preparedValues];
+        sortOrder.push(columnOrder[field]);
+        sortOrder.push(order[field] == "DOWN");
+    }
 }
 
+if (!sortOrder.length) 
+    sortOrder = [9, false]; //default sort by duedate
+
+ArrayUtils.sortMulti(recommendationData, sortOrder);
+result.object(recommendationData);
+
 function getPrioByDueDate(pDueDate)
 {
     var prio = "";
diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/onInsert.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/onInsert.js
index 1da186c5ef681fd19c07d840b01e23304d33dba9..39eb6a4365c275ec35467aa8f880cf570f1acef0 100644
--- a/entity/VisitRecommendation_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/onInsert.js
@@ -3,16 +3,18 @@ import("system.db");
 import("system.vars");
 
 var rowData = vars.get("$local.rowdata");
-var contact_id = rowData["CONTACT_ID.value"];
 var source = $KeywordRegistry.visitRecommendationPrioSource$manual();
 
 var values = [
     rowData["UID.value"],
-    contact_id,
+    rowData["CONTACT_ID.value"],
     rowData["DUE_DATE.value"],
     rowData["PRIORITY.value"],
     source,
-    vars.get("$field.INFO")
+    rowData["INFO.value"] || '',
+    rowData["CONTACT_PERSON_ID.value"] || '',
+    vars.get("$field.USER_NEW"),
+    vars.get("$field.RESPONSIBLE")
 ];
 
 var columns = [
@@ -21,7 +23,10 @@ var columns = [
     "DUE_DATE",
     "PRIORITY",
     "SOURCE",
-    "INFO"
+    "INFO",
+    "CONTACT_PERSON_ID",
+    "USER_NEW",
+    "RESPONSIBLE"
 ];
 
 db.insertData("VISITRECOMMENDATION", columns, null, values);
\ No newline at end of file
diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/onUpdate.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/onUpdate.js
index b27ed4d0483f8515f6552defc190addbb70cf8b1..bf266e7b7780d5313d1b544cd2c0a8731dec2a08 100644
--- a/entity/VisitRecommendation_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/onUpdate.js
@@ -5,11 +5,15 @@ import("system.vars");
 var rowdata = vars.get("$local.rowdata");
 var dbFields = {
     "ORGANISATION_NAME.value": "ORGANISATION_NAME",
+    "CONTACT_ID.value": "CONTACT_ID",
     "ORGANISATION_POINT_OF_CONTACT.value": "ORGANISATION_POINT_OF_CONTACT",
     "ORGANISATION_ADDRESS.value" : "ORGANISATION_ADDRESS",
     "PRIORITY.value" : "PRIORITY",
     "DUE_DATE.value": "DUE_DATE",
-    "INFO.value": "INFO"
+    "INFO.value": "INFO",
+    "CONTACT_PERSON_ID.value": "CONTACT_PERSON_ID",
+    "USER_NEW.value": "USER_NEW",
+    "RESPONSIBLE.value": "RESPONSIBLE"
 };
 var fieldValues = {};
 vars.get("$local.changed").forEach(function (field)
diff --git a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
index ab10357478fbae31e30b3f5762444275d68cb28d..36ddaa0af572c19bf19bdb0eb61a2feeb2731e62 100644
--- a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
+++ b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>WorkflowDefinition_entity</name>
+  <title>Workflow Definition</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/WorkflowDefinition_entity/documentation.adoc</documentation>
-  <title>Workflow Definition</title>
   <grantCreateProcess>%aditoprj%/entity/WorkflowDefinition_entity/grantCreateProcess.js</grantCreateProcess>
   <grantDelete v="false" />
   <contentTitleProcess>%aditoprj%/entity/WorkflowDefinition_entity/contentTitleProcess.js</contentTitleProcess>
@@ -153,6 +153,7 @@
     </entityConsumer>
     <entityProvider>
       <name>WorkflowVersions</name>
+      <documentation>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc</documentation>
       <titlePlural>Other versions</titlePlural>
       <children>
         <entityParameter>
diff --git a/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc b/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..3ea3eb5f375dd862f274e73030cd1c6a8124f24b
--- /dev/null
+++ b/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc
@@ -0,0 +1,4 @@
+= WorkflowVersions
+
+Loads all other versions of a workflow definition to show the version history. For that, the process key (ProcessDefinitionKey_param) is required and
+the CurrentVersion_param can be used for excluding the currently opened version from the list.
\ No newline at end of file
diff --git a/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod b/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod
index 8c35ddbe8c30a3772342c03d9a04d3f9c1b60dd4..2ca484e8dd1742dd952588ea6501469843056906 100644
--- a/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod
+++ b/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>WorkflowInstanceHistory_entity</name>
+  <title>History</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/WorkflowInstanceHistory_entity/documentation.adoc</documentation>
-  <title>History</title>
   <grantCreate v="false" />
   <grantUpdate v="false" />
   <grantDelete v="false" />
@@ -51,6 +51,7 @@
       <name>HistoryForWorkflowInstance</name>
       <targetContextField>TARGET_CONTEXT</targetContextField>
       <targetIdField>TASK_ID</targetIdField>
+      <documentation>%aditoprj%/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc</documentation>
       <titlePlural>History</titlePlural>
       <dependencies>
         <entityDependency>
diff --git a/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc b/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..8e0c3662b7605dd70bfacb74cf74d55afa61d099
--- /dev/null
+++ b/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc
@@ -0,0 +1,3 @@
+= HistoryForWorkflowInstance
+
+Provides a history of the given workflow instance. This includes all the finished activities and tasks of that workflow.
\ No newline at end of file
diff --git a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod
index 566506952d10531e4a485461d611e30d6eea4e6a..ecdc057e397f87bea6051e6797f820fb170545b2 100644
--- a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod
+++ b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>WorkflowInstance_entity</name>
+  <title>Workflow instance</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/WorkflowInstance_entity/documentation.adoc</documentation>
-  <title>Workflow instance</title>
   <contentTitleProcess>%aditoprj%/entity/WorkflowInstance_entity/contentTitleProcess.js</contentTitleProcess>
   <initFilterProcess>%aditoprj%/entity/WorkflowInstance_entity/initFilterProcess.js</initFilterProcess>
   <titlePlural>Workflow instances</titlePlural>
@@ -18,6 +18,7 @@
     </entityField>
     <entityProvider>
       <name>InstancesOfWorkflow</name>
+      <documentation>%aditoprj%/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>96f047cf-7f3b-417e-ac08-9dc231c5d0ac</name>
diff --git a/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc b/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..41f9fecfaece367623551c7bfbb8e010271017c8
--- /dev/null
+++ b/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc
@@ -0,0 +1,3 @@
+= InstancesOfWorkflow
+
+Provider for all workflow instances started from a specific workflow definition
\ No newline at end of file
diff --git a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod
index e5749fe5101007e83c45d26c9f24bd15561458b1..f33bea3edcaa3205f2f185b9d33422e940fbd82a 100644
--- a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod
+++ b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod
@@ -1,7 +1,8 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>WorkflowLauncher_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/WorkflowLauncher_entity/documentation.adoc</documentation>
   <recordContainer>dataLess</recordContainer>
   <entityFields>
     <entityProvider>
diff --git a/entity/WorkflowLauncher_entity/documentation.adoc b/entity/WorkflowLauncher_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..2b9731f8a4e9eb04904c5ee2bd479878bdbd39b4
--- /dev/null
+++ b/entity/WorkflowLauncher_entity/documentation.adoc
@@ -0,0 +1,3 @@
+= WorkflowLauncher_entity
+
+An entity with dataless recordcontainer to create a dialog that starts workflow instances.
\ No newline at end of file
diff --git a/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js b/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js
index 7e0756271a92383e5130ad6aeb18ef79a715b0af..71d4a69dc83979fcc497fddddee58f56273c8f59 100644
--- a/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js
+++ b/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js
@@ -17,10 +17,9 @@ if (!Utils.isNullOrEmpty(startFormResult))
 
 targets.forEach(function ([targetId, targetContext, processVariables])
 {
-    /* Caution: If 'variables' is used, then 'processVariables' is only a reference to 'variables'. 
-       Currently that's fine, but keep it in mind when you change this code. */
     if (!processVariables)
-        processVariables = variables;
+        processVariables = {};
+    Object.assign(processVariables, variables);
     processVariables[WorkflowVariables.TARGET_ID()] = targetId;
     processVariables[WorkflowVariables.TARGET_CONTEXT()] = targetContext || context;
 
diff --git a/entity/WorkflowModel_entity/WorkflowModel_entity.aod b/entity/WorkflowModel_entity/WorkflowModel_entity.aod
index 73b8d4ebc7888490bfb767a15e59fe1fddf44f94..674696c52739d76ac96b4dd2ccd79a59e54d53bf 100644
--- a/entity/WorkflowModel_entity/WorkflowModel_entity.aod
+++ b/entity/WorkflowModel_entity/WorkflowModel_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>WorkflowModel_entity</name>
+  <title>Workflow Model</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/WorkflowModel_entity/documentation.adoc</documentation>
-  <title>Workflow Model</title>
   <contentTitleProcess>%aditoprj%/entity/WorkflowModel_entity/contentTitleProcess.js</contentTitleProcess>
   <afterSave>%aditoprj%/entity/WorkflowModel_entity/afterSave.js</afterSave>
   <recordContainer>jdito</recordContainer>
diff --git a/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod b/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod
index 0482a952cde7ed445aa8048cbb38c08eaee58570..a64a66745a095455ea7bfa4a3134cd0fe135b180 100644
--- a/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod
+++ b/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>WorkflowSignal_entity</name>
+  <title>Signal</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/WorkflowSignal_entity/documentation.adoc</documentation>
-  <title>Signal</title>
   <titlePlural>Signals</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -79,6 +79,7 @@
     </entityConsumer>
     <entityProvider>
       <name>ProcessDefinitionSignals</name>
+      <documentation>%aditoprj%/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>f08ff63c-296a-4b1f-8264-b6b1e6c1d748</name>
@@ -116,17 +117,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/WorkflowSignal_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>f6162cb6-c209-4607-8d67-0d630b28feab</name>
-          <tableName>WORKFLOWSIGNAL</tableName>
-          <primaryKey>WORKFLOWSIGNALID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>WORKFLOWSIGNALID.value</name>
@@ -163,6 +155,15 @@
           <recordfield>WORKFLOWSIGNAL.VARIABLES</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>f6162cb6-c209-4607-8d67-0d630b28feab</name>
+          <tableName>WORKFLOWSIGNAL</tableName>
+          <primaryKey>WORKFLOWSIGNALID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc b/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..7d279f26c91439041be487d34adf21ab2f4d322a
--- /dev/null
+++ b/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc
@@ -0,0 +1,3 @@
+= ProcessDefinitionSignals
+
+Provides all signals defined in the given workflow definition.
\ No newline at end of file
diff --git a/entity/WorkflowSignal_entity/entityfields/variables/dropDownProcess.js b/entity/WorkflowSignal_entity/entityfields/variables/dropDownProcess.js
index 9df9881e4fae360b6fd3c520402d6c852d240a0e..388bf3d042ac37136d25201c1f6f6dc5968c5b09 100644
--- a/entity/WorkflowSignal_entity/entityfields/variables/dropDownProcess.js
+++ b/entity/WorkflowSignal_entity/entityfields/variables/dropDownProcess.js
@@ -2,9 +2,7 @@ import("Workflow_lib");
 import("system.translate");
 import("system.result");
 
-var targetIdVar = WorkflowVariables.TARGET_ID();
-var targetContextVar = WorkflowVariables.TARGET_CONTEXT();
-result.object([
-    [targetIdVar, targetIdVar],
-    [targetContextVar, targetContextVar]
-]);
\ No newline at end of file
+let variables = WorkflowVariables.getAllVariablesName().map(function (v) {
+    return [v, v]
+});
+result.object(variables);
\ No newline at end of file
diff --git a/entity/WorkflowSignal_entity/entityfields/variables/valueProcess.js b/entity/WorkflowSignal_entity/entityfields/variables/valueProcess.js
index 49817c094590da7680ccf4644a6aad0feda26844..5f7cdc6027bf012af5facf2d5c124858b1795ac4 100644
--- a/entity/WorkflowSignal_entity/entityfields/variables/valueProcess.js
+++ b/entity/WorkflowSignal_entity/entityfields/variables/valueProcess.js
@@ -5,4 +5,4 @@ import("system.vars");
 import("system.result");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
-    result.string(text.encodeMS([WorkflowVariables.TARGET_ID(), WorkflowVariables.TARGET_CONTEXT()]));
\ No newline at end of file
+    result.string(text.encodeMS(WorkflowVariables.getAllVariablesName()));
\ No newline at end of file
diff --git a/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod b/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod
index beafceffdfe067862b2781e806816b8aaf9ef50d..dde2a612a51ebc947a7c5f96d59effd665d91992 100644
--- a/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod
+++ b/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>WorkflowStartConfig_entity</name>
+  <title>Usage</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/WorkflowStartConfig_entity/documentation.adoc</documentation>
-  <title>Usage</title>
   <imageProcess>%aditoprj%/entity/WorkflowStartConfig_entity/imageProcess.js</imageProcess>
   <titlePlural>Usage</titlePlural>
   <recordContainer>db</recordContainer>
@@ -63,10 +63,6 @@
           <name>InvertBlacklist_param</name>
           <valueProcess>%aditoprj%/entity/WorkflowStartConfig_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess>
         </entityParameter>
-        <entityParameter>
-          <name>GetAllContexts_param</name>
-          <valueProcess>%aditoprj%/entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js</valueProcess>
-        </entityParameter>
       </children>
     </entityConsumer>
     <entityConsumer>
@@ -91,17 +87,8 @@
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/WorkflowStartConfig_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>abfd68be-ace3-4db3-940c-c81bc86ad1c6</name>
-          <tableName>WORKFLOWSTARTCONFIG</tableName>
-          <primaryKey>WORKFLOWSTARTCONFIGID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
+      <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>WORKFLOWSTARTCONFIGID.value</name>
@@ -132,6 +119,15 @@
           <expression>%aditoprj%/entity/WorkflowStartConfig_entity/recordcontainers/db/recordfieldmappings/trigger_event.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>abfd68be-ace3-4db3-940c-c81bc86ad1c6</name>
+          <tableName>WORKFLOWSTARTCONFIG</tableName>
+          <primaryKey>WORKFLOWSTARTCONFIGID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/WorkflowTask_entity/WorkflowTask_entity.aod b/entity/WorkflowTask_entity/WorkflowTask_entity.aod
index 96272fe5f1d9bb562efd850639fc9254cccf61e6..f686333ba78f732e4a59061abd44b4c146be7a75 100644
--- a/entity/WorkflowTask_entity/WorkflowTask_entity.aod
+++ b/entity/WorkflowTask_entity/WorkflowTask_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>WorkflowTask_entity</name>
+  <title>Task</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/WorkflowTask_entity/documentation.adoc</documentation>
-  <title>Task</title>
   <grantCreate v="false" />
   <grantUpdateProcess>%aditoprj%/entity/WorkflowTask_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDelete v="false" />
@@ -76,6 +76,7 @@
     </entityField>
     <entityProvider>
       <name>InstanceTasks</name>
+      <documentation>%aditoprj%/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>5913327f-1bb4-48b8-846e-639274290cee</name>
@@ -183,6 +184,7 @@
     </entityParameter>
     <entityProvider>
       <name>FinishedInstanceTasks</name>
+      <documentation>%aditoprj%/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>d5d39281-0183-42fa-960a-01347cddc85a</name>
diff --git a/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc b/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..9c6e27a4c533764cf77525c919d49975460d37a4
--- /dev/null
+++ b/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc
@@ -0,0 +1,3 @@
+= FinishedInstanceTasks
+
+Provides all finished tasks for one process instance.
\ No newline at end of file
diff --git a/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc b/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..1d64bc1c9b05d07e6da7b2687f01784fceed7a69
--- /dev/null
+++ b/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc
@@ -0,0 +1,3 @@
+= InstanceTasks
+
+Provides all active tasks for one workflow instance.
\ No newline at end of file
diff --git a/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod b/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod
index df6d2af4a4fbaaefe03d95087d1f7062bfbb4ff3..76e08b7ad6b6eb6e33adab9d93c38e2fc5b8701a 100644
--- a/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod
+++ b/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod
@@ -1,9 +1,9 @@
 <?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
   <name>WorkflowVariableValue_entity</name>
+  <title>Variable</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/WorkflowVariableValue_entity/documentation.adoc</documentation>
-  <title>Variable</title>
   <titlePlural>Variables</titlePlural>
   <recordContainer>jdito</recordContainer>
   <entityFields>
@@ -31,6 +31,7 @@
     </entityParameter>
     <entityProvider>
       <name>VariablesOfInstance</name>
+      <documentation>%aditoprj%/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>b10924d7-0ba4-4268-8b2f-383e7cf6045c</name>
diff --git a/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc b/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..a65691e2574d4bcb759568834d2154665042a0a9
--- /dev/null
+++ b/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc
@@ -0,0 +1,3 @@
+= VariablesOfInstance
+
+Provides all variables contained in a specific workflow instance.
\ No newline at end of file
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 55f7497ad1ec5a7115e2f660c6bf618a0d6304b8..c4b93fcd0a8601dc1b1c02fcad307d82e1495d59 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -4971,18 +4971,12 @@
     <entry>
       <key>Has sales approved this step?</key>
     </entry>
-    <entry>
-      <key>"</key>
-    </entry>
     <entry>
       <key>Import Date</key>
     </entry>
     <entry>
       <key>Import Data</key>
     </entry>
-    <entry>
-      <key>;</key>
-    </entry>
     <entry>
       <key>Standard mail</key>
     </entry>
@@ -7359,6 +7353,615 @@
     <entry>
       <key>Toggle status</key>
     </entry>
+    <entry>
+      <key>Add app</key>
+    </entry>
+    <entry>
+      <key>Open Teams</key>
+    </entry>
+    <entry>
+      <key>Choose Team</key>
+    </entry>
+    <entry>
+      <key>Delete Team</key>
+    </entry>
+    <entry>
+      <key>Restore Team</key>
+    </entry>
+    <entry>
+      <key>Create Team</key>
+    </entry>
+    <entry>
+      <key>Team role</key>
+    </entry>
+    <entry>
+      <key>Edit Team</key>
+    </entry>
+    <entry>
+      <key>Sales Project</key>
+    </entry>
+    <entry>
+      <key>Channels</key>
+    </entry>
+    <entry>
+      <key>Private</key>
+    </entry>
+    <entry>
+      <key>Rechnungsbetrag</key>
+    </entry>
+    <entry>
+      <key>[TEST] Sql_lib - SqlMaskingUtils</key>
+    </entry>
+    <entry>
+      <key>Knowledgebase</key>
+    </entry>
+    <entry>
+      <key>Marketing workflow</key>
+    </entry>
+    <entry>
+      <key>Token</key>
+    </entry>
+    <entry>
+      <key>Edited by</key>
+    </entry>
+    <entry>
+      <key>Sales Project Analyses</key>
+    </entry>
+    <entry>
+      <key>Sales Project Id</key>
+    </entry>
+    <entry>
+      <key>Sales Project Convertion Rates</key>
+    </entry>
+    <entry>
+      <key>Set Campaign Step</key>
+    </entry>
+    <entry>
+      <key>Member</key>
+    </entry>
+    <entry>
+      <key>Tags</key>
+    </entry>
+    <entry>
+      <key>[TEST] Sql_lib - SqlBuilder</key>
+    </entry>
+    <entry>
+      <key>Feed</key>
+    </entry>
+    <entry>
+      <key>[TEST] KeywordAttribute_lib</key>
+    </entry>
+    <entry>
+      <key>Messages</key>
+    </entry>
+    <entry>
+      <key>Channel Name</key>
+    </entry>
+    <entry>
+      <key>Sales Project Phases</key>
+    </entry>
+    <entry>
+      <key>Start workflows</key>
+    </entry>
+    <entry>
+      <key>edited</key>
+    </entry>
+    <entry>
+      <key>Channel</key>
+    </entry>
+    <entry>
+      <key>Import from Teams</key>
+    </entry>
+    <entry>
+      <key>Invitation</key>
+    </entry>
+    <entry>
+      <key>send as mail</key>
+    </entry>
+    <entry>
+      <key>User token</key>
+    </entry>
+    <entry>
+      <key>Team name</key>
+    </entry>
+    <entry>
+      <key>Knowledge Roles</key>
+    </entry>
+    <entry>
+      <key>Valid</key>
+    </entry>
+    <entry>
+      <key>Audit Logs</key>
+    </entry>
+    <entry>
+      <key>Editorial</key>
+    </entry>
+    <entry>
+      <key>KnowledgeRoles</key>
+    </entry>
+    <entry>
+      <key>Remove from Campaign</key>
+    </entry>
+    <entry>
+      <key>Message</key>
+    </entry>
+    <entry>
+      <key>Add members</key>
+    </entry>
+    <entry>
+      <key>[TEST] .All</key>
+    </entry>
+    <entry>
+      <key>Newsfeed (Complete Article)</key>
+    </entry>
+    <entry>
+      <key>Notification</key>
+    </entry>
+    <entry>
+      <key>Load older messages</key>
+    </entry>
+    <entry>
+      <key>Newsletter</key>
+    </entry>
+    <entry>
+      <key>Adds an answer to the selected discussion</key>
+    </entry>
+    <entry>
+      <key>LinkedIn (Person)</key>
+    </entry>
+    <entry>
+      <key>Newsfeed Timeline</key>
+    </entry>
+    <entry>
+      <key>MS Teams</key>
+    </entry>
+    <entry>
+      <key>User tokens</key>
+    </entry>
+    <entry>
+      <key>[TEST] Keyword_lib</key>
+    </entry>
+    <entry>
+      <key>News</key>
+    </entry>
+    <entry>
+      <key>Sales Projects</key>
+    </entry>
+    <entry>
+      <key>Team</key>
+    </entry>
+    <entry>
+      <key>Created by</key>
+    </entry>
+    <entry>
+      <key>Employee count</key>
+    </entry>
+    <entry>
+      <key>Toggles the status of  selected discussion between open and closed</key>
+    </entry>
+    <entry>
+      <key>Synchronize documents</key>
+    </entry>
+    <entry>
+      <key>AuditLogs</key>
+    </entry>
+    <entry>
+      <key>Audit Log</key>
+    </entry>
+    <entry>
+      <key>Admin</key>
+    </entry>
+    <entry>
+      <key>Show all audits</key>
+    </entry>
+    <entry>
+      <key>Sales Project milestone Id</key>
+    </entry>
+    <entry>
+      <key>LinkedIn (Organisation)</key>
+    </entry>
+    <entry>
+      <key>[TEST] UnitTest_lib</key>
+    </entry>
+    <entry>
+      <key>Exports the knowledge entry as a html file</key>
+    </entry>
+    <entry>
+      <key>The max participants count can not be equal or less then 0</key>
+    </entry>
+    <entry>
+      <key>Illegal Parent Operator in buildFilterObj-Function:</key>
+    </entry>
+    <entry>
+      <key>My campaigns</key>
+    </entry>
+    <entry>
+      <key>Subcategory</key>
+    </entry>
+    <entry>
+      <key>Campaign costs</key>
+    </entry>
+    <entry>
+      <key>Verantwortlicher</key>
+    </entry>
+    <entry>
+      <key>Marketing Workflow</key>
+    </entry>
+    <entry>
+      <key>Traits</key>
+    </entry>
+    <entry>
+      <key>Salesproject Phase</key>
+    </entry>
+    <entry>
+      <key>Document template</key>
+    </entry>
+    <entry>
+      <key>Kontext</key>
+    </entry>
+    <entry>
+      <key>Checklist</key>
+    </entry>
+    <entry>
+      <key>Trait</key>
+    </entry>
+    <entry>
+      <key>Salesproject phase</key>
+    </entry>
+    <entry>
+      <key>Status: \"won\"</key>
+    </entry>
+    <entry>
+      <key>Project team roles</key>
+    </entry>
+    <entry>
+      <key>Offer sent</key>
+    </entry>
+    <entry>
+      <key>Classification fields</key>
+    </entry>
+    <entry>
+      <key>Project start within next 12 months</key>
+    </entry>
+    <entry>
+      <key>Project team: \"Internal distribution\"</key>
+    </entry>
+    <entry>
+      <key>Probablity: 100%</key>
+    </entry>
+    <entry>
+      <key>Project team: \"Project manager\"</key>
+    </entry>
+    <entry>
+      <key>Offer exists</key>
+    </entry>
+    <entry>
+      <key>Its not allowed to step over some salesproject phases.</key>
+    </entry>
+    <entry>
+      <key>Salesproject phases</key>
+    </entry>
+    <entry>
+      <key>Not all prerequisites are fulfilled.</key>
+    </entry>
+    <entry>
+      <key>To skip a salesproject phase isn't allowed.</key>
+    </entry>
+    <entry>
+      <key>No Restrictions</key>
+    </entry>
+    <entry>
+      <key>Gradings in Percent</key>
+    </entry>
+    <entry>
+      <key>Max Points</key>
+    </entry>
+    <entry>
+      <key>Are you sure you want to reload all classifications using the current classificationgradings?</key>
+    </entry>
+    <entry>
+      <key>Filter set</key>
+    </entry>
+    <entry>
+      <key>The team must have at least one owner</key>
+    </entry>
+    <entry>
+      <key>Delete this Function</key>
+    </entry>
+    <entry>
+      <key>Automatically</key>
+    </entry>
+    <entry>
+      <key>Checklist entries</key>
+    </entry>
+    <entry>
+      <key>Communication strategy designed</key>
+    </entry>
+    <entry>
+      <key>Probability checked and eventually readjusted</key>
+    </entry>
+    <entry>
+      <key>Contract have been signed</key>
+    </entry>
+    <entry>
+      <key>Communication strategy introduced</key>
+    </entry>
+    <entry>
+      <key>Workshop for project-realization planned</key>
+    </entry>
+    <entry>
+      <key>Risk audit performed</key>
+    </entry>
+    <entry>
+      <key>Appointment for offer-agreement occured</key>
+    </entry>
+    <entry>
+      <key>Follow-up appointment(s) exists (e.g.: for workshops..)</key>
+    </entry>
+    <entry>
+      <key>Subtotal</key>
+    </entry>
+    <entry>
+      <key>incl. Vat</key>
+    </entry>
+    <entry>
+      <key>Invoice Discount</key>
+    </entry>
+    <entry>
+      <key>discounted Vat</key>
+    </entry>
+    <entry>
+      <key>discounted Price</key>
+    </entry>
+    <entry>
+      <key>The selected Contact doesn't have an address set.</key>
+    </entry>
+    <entry>
+      <key>Set completed</key>
+    </entry>
+    <entry>
+      <key>without Vat</key>
+    </entry>
+    <entry>
+      <key>Object Filter</key>
+    </entry>
+    <entry>
+      <key>Insert</key>
+    </entry>
+    <entry>
+      <key>Observation Type</key>
+    </entry>
+    <entry>
+      <key>Shows all your Observations</key>
+    </entry>
+    <entry>
+      <key>Add Dependency</key>
+    </entry>
+    <entry>
+      <key>Fields</key>
+    </entry>
+    <entry>
+      <key>ObservationID</key>
+    </entry>
+    <entry>
+      <key>Observe</key>
+    </entry>
+    <entry>
+      <key>Observer</key>
+    </entry>
+    <entry>
+      <key>Observation</key>
+    </entry>
+    <entry>
+      <key>Observations</key>
+    </entry>
+    <entry>
+      <key>was set to</key>
+    </entry>
+    <entry>
+      <key>The data of this Leadimport has already been transfered. Do you want to transfer it again?</key>
+    </entry>
+    <entry>
+      <key>Observe ID</key>
+    </entry>
+    <entry>
+      <key>Cancel IDs Observation</key>
+    </entry>
+    <entry>
+      <key>has</key>
+    </entry>
+    <entry>
+      <key>Cancel ID Observation</key>
+    </entry>
+    <entry>
+      <key>inserted</key>
+    </entry>
+    <entry>
+      <key>INSERT</key>
+    </entry>
+    <entry>
+      <key>Site visit</key>
+    </entry>
+    <entry>
+      <key>Observe Filter</key>
+    </entry>
+    <entry>
+      <key>and</key>
+    </entry>
+    <entry>
+      <key>Observe IDs</key>
+    </entry>
+    <entry>
+      <key>deleted</key>
+    </entry>
+    <entry>
+      <key>DELETE</key>
+    </entry>
+    <entry>
+      <key>Cancel Filter Observation</key>
+    </entry>
+    <entry>
+      <key>changed</key>
+    </entry>
+    <entry>
+      <key>Date Edit</key>
+    </entry>
+    <entry>
+      <key>Import</key>
+    </entry>
+    <entry>
+      <key>Percent</key>
+    </entry>
+    <entry>
+      <key>Prev</key>
+    </entry>
+    <entry>
+      <key>Focus</key>
+    </entry>
+    <entry>
+      <key>Next</key>
+    </entry>
+    <entry>
+      <key>Import Documents</key>
+    </entry>
+    <entry>
+      <key>Adviser Contact</key>
+    </entry>
+    <entry>
+      <key>Office Duty</key>
+    </entry>
+    <entry>
+      <key>Adviser Role</key>
+    </entry>
+    <entry>
+      <key>District Contacts</key>
+    </entry>
+    <entry>
+      <key>Area Manager</key>
+    </entry>
+    <entry>
+      <key>Auto assignment</key>
+    </entry>
+    <entry>
+      <key>Field Service</key>
+    </entry>
+    <entry>
+      <key>Sales Manager</key>
+    </entry>
+    <entry>
+      <key>Region Manager</key>
+    </entry>
+    <entry>
+      <key>District Contact</key>
+    </entry>
+    <entry>
+      <key>Supervisors</key>
+    </entry>
+    <entry>
+      <key>Supervisor assignment</key>
+    </entry>
+    <entry>
+      <key>Supervisor</key>
+    </entry>
+    <entry>
+      <key>My responsible Districts</key>
+    </entry>
+    <entry>
+      <key>It lists all areas that the user has to take care of.</key>
+    </entry>
+    <entry>
+      <key>Assignment for all selected districts will start now!</key>
+    </entry>
+    <entry>
+      <key>Set status to active</key>
+    </entry>
+    <entry>
+      <key>Assign all selected districts</key>
+    </entry>
+    <entry>
+      <key>Set active</key>
+    </entry>
+    <entry>
+      <key>%0 companies were newley assigned. \n%1 companies are no longer assigned (these assignments got the status 'review'). \n%2 valid assignments were unchanged.\nThe Process took %3 seconds.</key>
+    </entry>
+    <entry>
+      <key>Adviser role</key>
+    </entry>
+    <entry>
+      <key>Error: The Importfile could not be found anymore.</key>
+    </entry>
+    <entry>
+      <key>Assign district</key>
+    </entry>
+    <entry>
+      <key>Set inactive</key>
+    </entry>
+    <entry>
+      <key>My district assignments to check</key>
+    </entry>
+    <entry>
+      <key>Assignment of district \"%0\" is completed!</key>
+    </entry>
+    <entry>
+      <key>Set status to inactive</key>
+    </entry>
+    <entry>
+      <key>District assignment status</key>
+    </entry>
+    <entry>
+      <key>District assignment will start now!</key>
+    </entry>
+    <entry>
+      <key>Adviser contact</key>
+    </entry>
+    <entry>
+      <key>Assignment of all selected districts is completed!</key>
+    </entry>
+    <entry>
+      <key>The Value has to be in the 0-100% range</key>
+    </entry>
+    <entry>
+      <key>Only Integers allowed</key>
+    </entry>
+    <entry>
+      <key>No file selected.</key>
+    </entry>
+    <entry>
+      <key>auto</key>
+    </entry>
+    <entry>
+      <key>District assigned</key>
+    </entry>
+    <entry>
+      <key>District Responsibles</key>
+    </entry>
+    <entry>
+      <key>Show my district assignments with status review</key>
+    </entry>
+    <entry>
+      <key>Payment Address</key>
+    </entry>
+    <entry>
+      <key>manual</key>
+    </entry>
+    <entry>
+      <key>Adviser status</key>
+    </entry>
+    <entry>
+      <key>Checklist entry</key>
+    </entry>
+    <entry>
+        <key>Automatically</key>
+    </entry>
+    <entry>
+      <key>License</key>
+    </entry>
+    <entry>
+      <key>Contribute map data</key>
+    </entry>
+    <entry>
+      <key>Map data © %0 contributors | %1 | %2</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
   <sqlModels>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index ada3bee7bc8f2f08b97d43ac8c5679955ab50b1d..fc8c26f25392b4af4c8e6e4c021f63765f41883c 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -6,14 +6,90 @@
   <country></country>
   <variant></variant>
   <keyValueMap>
+    <entry>
+      <key>The max participants count can not be equal or less then 0</key>
+      <value>Die maximale Teilnehmerzahl muss größer 0 sein!</value>
+    </entry>
+    <entry>
+      <key>discounted Vat</key>
+      <value>Rbt. Mehrwertssteuer</value>
+    </entry>
+    <entry>
+      <key>Illegal Parent Operator in buildFilterObj-Function:</key>
+      <value>Übergebener Operator ungültig in Funktion "buildFilterObj"</value>
+    </entry>
+    <entry>
+      <key>Checklist entries</key>
+      <value>Checklisteneinträge</value>
+    </entry>
+    <entry>
+      <key>Project team: \"Project manager\"</key>
+      <value>Projektteam: \"Projektmanager\"</value>
+    </entry>
+    <entry>
+      <key>Checklist entry</key>
+      <value>Checklisteneintrag</value>
+    </entry>
+    <entry>
+      <key>Salesproject phases</key>
+      <value>Vertriebsprojektphasen</value>
+    </entry>
+    <entry>
+      <key>To skip a salesproject phase isn't allowed.</key>
+      <value>Das Ãœberspringen einer Vertriebsprojektphase ist nicht erlaubt.</value>
+    </entry>
+    <entry>
+      <key>Its not allowed to step over some salesproject phases.</key>
+      <value>Es ist nicht erlaubt Vertriebsprojektphasen zu überspringen.</value>
+    </entry>
     <entry>
       <key>Probability AI</key>
       <value>Wahrscheinlichkeit KI</value>
     </entry>
+    <entry>
+      <key>Delete Team</key>
+      <value>Team löschen</value>
+    </entry>
+    <entry>
+      <key>Open Teams</key>
+      <value>Teams öffnen</value>
+    </entry>
+    <entry>
+      <key>Restore Team</key>
+      <value>Team wiederherstellen</value>
+    </entry>
+    <entry>
+      <key>Choose Team</key>
+      <value>Team auswählen</value>
+    </entry>
+    <entry>
+      <key>Private</key>
+      <value>Privat</value>
+    </entry>
+    <entry>
+      <key>discounted Price</key>
+      <value>Rbt. Betrag netto</value>
+    </entry>
+    <entry>
+      <key>Add app</key>
+      <value>App hinzufügen</value>
+    </entry>
+    <entry>
+      <key>Edit Team</key>
+      <value>Team bearbeiten</value>
+    </entry>
     <entry>
       <key>The start date has to be before the end date.</key>
       <value>Das Startdatum muss vor dem Enddatum sein.</value>
     </entry>
+    <entry>
+      <key>Supervisors</key>
+      <value>Betreuer</value>
+    </entry>
+    <entry>
+      <key>Supervisor assignment</key>
+      <value>Betreuerzuordnung</value>
+    </entry>
     <entry>
       <key>The given starting location is empty. An area search can not be performed.</key>
       <value>Der übergebene Startpunkt ist leer. Die Umkreissuche kann nicht ausgeführt werden.</value>
@@ -38,6 +114,10 @@
       <key>Favoritegroup</key>
       <value>Favoritengruppe</value>
     </entry>
+    <entry>
+      <key>The team must have at least one owner</key>
+      <value>Das Team muss mindestens einen Besitzer haben</value>
+    </entry>
     <entry>
       <key>Data imported. Contact not found.</key>
       <value>Daten importiert. Keine weiteren Personendaten gefunden.</value>
@@ -50,6 +130,10 @@
       <key>Variables</key>
       <value>Variablen</value>
     </entry>
+    <entry>
+      <key>The data of this Leadimport has already been transfered. Do you want to transfer it again?</key>
+      <value>Die Daten dieses Leadimports wurden schon transferiert. Wollen Sie diese nochmal transferien?</value>
+    </entry>
     <entry>
       <key>Finished</key>
       <value>Fertig</value>
@@ -66,6 +150,10 @@
       <key>Radius Search</key>
       <value>Umkreissuche</value>
     </entry>
+    <entry>
+      <key>No file selected.</key>
+      <value>Keine Datei ausgewählt.</value>
+    </entry>
     <entry>
       <key>Discussion</key>
       <value>Diskussion</value>
@@ -162,6 +250,10 @@
       <key>Sender address</key>
       <value>Senderadresse</value>
     </entry>
+    <entry>
+      <key>The selected Contact doesn't have an address set.</key>
+      <value>Der ausgewählte Kontakt hat keine Adresse festgelegt.</value>
+    </entry>
     <entry>
       <key>Complete tasks</key>
       <value>Aufgaben abschließen</value>
@@ -178,6 +270,10 @@
       <key>${CONDITION}</key>
       <value>Bedingung</value>
     </entry>
+    <entry>
+      <key>License</key>
+      <value>Lizenz</value>
+    </entry>
     <entry>
       <key>Failed</key>
       <value>Fehlgeschlagen</value>
@@ -418,10 +514,6 @@
       <key>Priority</key>
       <value>Priorität</value>
     </entry>
-    <entry>
-      <key>Salesproject Phases</key>
-      <value>Vertriebsprojektphasen</value>
-    </entry>
     <entry>
       <key>%0 new recipients will be added to the bulk mail.</key>
       <value>Der Serienmail werden %0 neue Empfänger hinzugefügt.</value>
@@ -886,6 +978,10 @@
       <key>Social Media</key>
       <value>Social Media</value>
     </entry>
+    <entry>
+      <key>Adviser contact</key>
+      <value>Verantwortlicher</value>
+    </entry>
     <entry>
       <key>Visit</key>
       <value>Besuch</value>
@@ -898,6 +994,10 @@
       <key>Language</key>
       <value>Sprache</value>
     </entry>
+    <entry>
+      <key>Adviser role</key>
+      <value>Rolle des Verantwortlichen</value>
+    </entry>
     <entry>
       <key>Phone</key>
       <value>Telefon</value>
@@ -926,6 +1026,10 @@
       <key>Contacts</key>
       <value>Kontakte</value>
     </entry>
+    <entry>
+      <key>Channels</key>
+      <value>Kanäle</value>
+    </entry>
     <entry>
       <key>Address</key>
       <value>Adresse</value>
@@ -1451,6 +1555,10 @@
       <key>Order</key>
       <value>Bestellung</value>
     </entry>
+    <entry>
+      <key>Team role</key>
+      <value>Teamrolle</value>
+    </entry>
     <entry>
       <key>Postponed</key>
       <value>Vertagt</value>
@@ -1734,6 +1842,10 @@
       <key>Show all offers</key>
       <value>Alle Angebote anzeigen</value>
     </entry>
+    <entry>
+      <key>Project team: \"Internal distribution\"</key>
+      <value>Projektteam: \"Interner Vertrieb\"</value>
+    </entry>
     <entry>
       <key>Filetype</key>
       <value>Dateityp</value>
@@ -1784,7 +1896,6 @@
     </entry>
     <entry>
       <key>Sent Offers</key>
-      <value>Versendete Angebote</value>
     </entry>
     <entry>
       <key>responsible</key>
@@ -2223,6 +2334,10 @@
       <key>Key Figures</key>
       <value>Kennzahlen</value>
     </entry>
+    <entry>
+      <key>Map data © %0 contributors | %1 | %2</key>
+      <value>Kartendaten © %0 Mitwirkende | %1 | %2</value>
+    </entry>
     <entry>
       <key>Person</key>
       <value>Person</value>
@@ -2299,6 +2414,10 @@
       <key>Outgoing</key>
       <value>ausgehend</value>
     </entry>
+    <entry>
+      <key>Classification fields</key>
+      <value>Klassifizierungsfelder</value>
+    </entry>
     <entry>
       <key>Paraguay</key>
       <value>Paraguay</value>
@@ -2799,6 +2918,10 @@
       <key>Guam</key>
       <value>Guam</value>
     </entry>
+    <entry>
+      <key>Subtotal</key>
+      <value>Zwischensumme</value>
+    </entry>
     <entry>
       <key>Lesotho</key>
       <value>Lesotho</value>
@@ -2823,6 +2946,10 @@
       <key>Adviser</key>
       <value>Berater</value>
     </entry>
+    <entry>
+      <key>It lists all areas that the user has to take care of.</key>
+      <value>Es werden alle Gebiete aufgelistet, die der Benutzer betreuen muss.</value>
+    </entry>
     <entry>
       <key>Company_size</key>
       <value>Unternehmen_Größe</value>
@@ -4202,7 +4329,7 @@
     </entry>
     <entry>
       <key>Enable relation type 2</key>
-      <value>Beziehungsart 2 aktiv</value>
+      <value>Beziehungstyp 2 aktiv</value>
     </entry>
     <entry>
       <key>Salesproject Analyses</key>
@@ -4411,6 +4538,10 @@
       <key>Salesproject milestone Id</key>
       <value>VertriebsprojektsmeilensteinId</value>
     </entry>
+    <entry>
+      <key>without Vat</key>
+      <value>ohne UmSt.</value>
+    </entry>
     <entry>
       <key>Appointment Id</key>
       <value>Termin Id</value>
@@ -4672,7 +4803,7 @@
     </entry>
     <entry>
       <key>the \"%0\" table is configured to get logged but this is the logging-stoarge itself and cannot be monitored</key>
-      <value>Die "% 0" -Tabelle ist so konfiguriert, dass sie protokolliert wird. Dies ist jedoch der Protokollierspeicher selbst und kann nicht überwacht werden</value>
+      <value>Die "%0" -Tabelle ist so konfiguriert, dass sie protokolliert wird. Dies ist jedoch der Protokollierspeicher selbst und kann nicht überwacht werden</value>
     </entry>
     <entry>
       <key>Attribute usage Id</key>
@@ -4840,6 +4971,10 @@
       <key>Charts</key>
       <value>Diagramme</value>
     </entry>
+    <entry>
+      <key>Contribute map data</key>
+      <value>Bei Kartendaten mitwirken</value>
+    </entry>
     <entry>
       <key>Keywords</key>
       <value>Schlüsselwörter</value>
@@ -5165,7 +5300,7 @@
     </entry>
     <entry>
       <key>Delete</key>
-      <value>löschen</value>
+      <value>Löschen</value>
     </entry>
     <entry>
       <key>Street</key>
@@ -5814,6 +5949,10 @@
       <key>Consisted customer</key>
       <value>Bestandskunde</value>
     </entry>
+    <entry>
+      <key>Project start within next 12 months</key>
+      <value>Projektstart innerhalb nächster 12 Monate</value>
+    </entry>
     <entry>
       <key>Prospective customer</key>
       <value>Interessent</value>
@@ -5866,6 +6005,10 @@
       <key>2 big</key>
       <value>gross</value>
     </entry>
+    <entry>
+      <key>Probablity: 100%</key>
+      <value>Wahrscheinlichkeit: 100%</value>
+    </entry>
     <entry>
       <key>Weight (kg)</key>
       <value>Gewicht (kg)</value>
@@ -6223,7 +6366,7 @@
     </entry>
     <entry>
       <key>Update</key>
-      <value>Update</value>
+      <value>Bearbeiten</value>
     </entry>
     <entry>
       <key>Blog</key>
@@ -6548,7 +6691,7 @@
     </entry>
     <entry>
       <key>Payment address</key>
-      <value>Zahlungsadresse</value>
+      <value>Rechnungsadresse</value>
     </entry>
     <entry>
       <key>Texts</key>
@@ -6788,13 +6931,17 @@
       <key>Credit</key>
       <value>Gutschrift</value>
     </entry>
+    <entry>
+      <key>Status: \"won\"</key>
+      <value>Status: \"gewonnen\"</value>
+    </entry>
     <entry>
       <key>The replacement name has to be unique.</key>
       <value>Der Ersatzname muss eindeutig sein</value>
     </entry>
     <entry>
       <key>Only .odt files are supported for bulkletters.</key>
-      <value>Für Serienbriefe werden nur.odt Dateien unterstützt</value>
+      <value>Für Serienbriefe werden nur .odt Dateien unterstützt</value>
     </entry>
     <entry>
       <key>Show tickets where I am the editor</key>
@@ -6927,7 +7074,7 @@
     </entry>
     <entry>
       <key>Total VAT</key>
-      <value>gesamte Mehrwertsteuer</value>
+      <value>MWST</value>
     </entry>
     <entry>
       <key>DataPrivacy Use</key>
@@ -6961,10 +7108,18 @@
       <key>Everyone</key>
       <value>Alle</value>
     </entry>
+    <entry>
+      <key>Offer exists</key>
+      <value>Angebot existiert</value>
+    </entry>
     <entry>
       <key>Salesproject member Id</key>
       <value>VertriebsprojektsteilnehmerId</value>
     </entry>
+    <entry>
+      <key>Offer sent</key>
+      <value>Angebot versendet</value>
+    </entry>
     <entry>
       <key>Edit</key>
       <value>Editieren</value>
@@ -6993,6 +7148,10 @@
       <key>To buildingnumber</key>
       <value>Bis hausnummer</value>
     </entry>
+    <entry>
+      <key>Project team roles</key>
+      <value>Projektteamrollen</value>
+    </entry>
     <entry>
       <key>Ignore daily series</key>
       <value>Tägliche Serie ignorieren</value>
@@ -7436,6 +7595,10 @@
       <key>Info (Company)</key>
       <value>Info (Firma)</value>
     </entry>
+    <entry>
+      <key>Supervisor</key>
+      <value>Betreuer</value>
+    </entry>
     <entry>
       <key>Möglicherweise ist ein Import-Feld zu groß für das Zielfeld.</key>
       <value>An import field may be too large for the target field.</value>
@@ -7480,6 +7643,10 @@
       <key>Nein</key>
       <value>Nein</value>
     </entry>
+    <entry>
+      <key>Create Team</key>
+      <value>Team erstellen</value>
+    </entry>
     <entry>
       <key>Use for duplicate search</key>
       <value>Für Duplettensuche benutzen</value>
@@ -7720,6 +7887,10 @@
       <key>Try to create activity automatically and ask for more information if necessary</key>
       <value>Versuche Aktivität automatisch anzulegen und fordert weitere Informationen an wenn nötig</value>
     </entry>
+    <entry>
+      <key>Not all prerequisites are fulfilled.</key>
+      <value>Es sind leider nicht alle Vorraussetzungen erfüllt.</value>
+    </entry>
     <entry>
       <key>New Appointment</key>
       <value>Neuer Termin</value>
@@ -7857,12 +8028,6 @@ Bitte Datumseingabe prüfen</value>
       <key>Show only own</key>
       <value>Nur Eigene anzeigen</value>
     </entry>
-    <entry>
-      <key>"</key>
-    </entry>
-    <entry>
-      <key>;</key>
-    </entry>
     <entry>
       <key>My Workflow Tasks</key>
       <value>Meine Workflow Aufgaben</value>
@@ -8053,6 +8218,10 @@ Bitte Datumseingabe prüfen</value>
       <key>Export CSV \"%0\" can now be downloaded</key>
       <value>Export CSV \"%0\" kann heruntergeladen werden</value>
     </entry>
+    <entry>
+      <key>Automatically</key>
+      <value>Automatisch</value>
+    </entry>
     <entry>
       <key>Templatename</key>
       <value>Vorlagenname</value>
@@ -8077,6 +8246,10 @@ Bitte Datumseingabe prüfen</value>
       <key>Senderphone</key>
       <value>Sendertelefonnummer</value>
     </entry>
+    <entry>
+      <key>Sales Project</key>
+      <value>Vertriebsprojekt</value>
+    </entry>
     <entry>
       <key>Sendername</key>
       <value>Sendername</value>
@@ -8329,6 +8502,10 @@ Bitte Datumseingabe prüfen</value>
       <key>The radius has to be %0 or lesser.</key>
       <value>Der Radius muss %0 km oder weniger betragen.</value>
     </entry>
+    <entry>
+      <key>Subcategory</key>
+      <value>Unterkategorie</value>
+    </entry>
     <entry>
       <key>The radius has to be at least %0.</key>
       <value>Der Radius muss mindestens %0 km betragen.</value>
@@ -8601,6 +8778,10 @@ Bitte Datumseingabe prüfen</value>
       <key>My Calendar</key>
       <value>Mein Kalender</value>
     </entry>
+    <entry>
+      <key>Invoice Discount</key>
+      <value>Rechnungsrabatt</value>
+    </entry>
     <entry>
       <key>Variable</key>
       <value>Variable</value>
@@ -9401,8 +9582,8 @@ Bitte Datumseingabe prüfen</value>
       <value>Ãœbergeordnetes Gebiet</value>
     </entry>
     <entry>
-      <key>Responsible Districts</key>
-      <value>Verantwortliche Gebiete</value>
+      <key>My responsible Districts</key>
+      <value>Meine verantwortlichen Gebiete</value>
     </entry>
     <entry>
       <key>District No.:</key>
@@ -9488,6 +9669,10 @@ Bitte Datumseingabe prüfen</value>
       <key>Date (Month)</key>
       <value>Datum (Monat)</value>
     </entry>
+    <entry>
+      <key>Delete this Function</key>
+      <value>Diese Funktion löschen</value>
+    </entry>
     <entry>
       <key>Date (Year)</key>
       <value>Datum (Jahr)</value>
@@ -9720,7 +9905,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Mailbridge failed: user '%0' is unknown, contact an administrator.</key>
-      <value>Mailbridge fehlgeschlagen: Benutzer '%0' ist unbekannt, kontaktieren sie einen Administrator.</value>
+      <value>Mailbridge fehlgeschlagen: Benutzer '%0' ist unbekannt, kontaktieren Sie einen Administrator.</value>
     </entry>
     <entry>
       <key>Count Chart</key>
@@ -9762,6 +9947,541 @@ Bitte Datumseingabe prüfen</value>
       <key>#login</key>
       <value>Login Token</value>
     </entry>
+    <entry>
+      <key>Rechnungsbetrag</key>
+    </entry>
+    <entry>
+      <key>[TEST] Sql_lib - SqlMaskingUtils</key>
+    </entry>
+    <entry>
+      <key>Knowledgebase</key>
+    </entry>
+    <entry>
+      <key>Marketing workflow</key>
+    </entry>
+    <entry>
+      <key>Token</key>
+    </entry>
+    <entry>
+      <key>Edited by</key>
+    </entry>
+    <entry>
+      <key>Sales Project Analyses</key>
+    </entry>
+    <entry>
+      <key>Sales Project Id</key>
+    </entry>
+    <entry>
+      <key>Sales Project Convertion Rates</key>
+    </entry>
+    <entry>
+      <key>Set Campaign Step</key>
+    </entry>
+    <entry>
+      <key>Member</key>
+    </entry>
+    <entry>
+      <key>Tags</key>
+    </entry>
+    <entry>
+      <key>[TEST] Sql_lib - SqlBuilder</key>
+    </entry>
+    <entry>
+      <key>Feed</key>
+    </entry>
+    <entry>
+      <key>[TEST] KeywordAttribute_lib</key>
+    </entry>
+    <entry>
+      <key>Messages</key>
+    </entry>
+    <entry>
+      <key>incl. Vat</key>
+      <value>inkl. UmSt.</value>
+    </entry>
+    <entry>
+      <key>Channel Name</key>
+    </entry>
+    <entry>
+      <key>Sales Project Phases</key>
+    </entry>
+    <entry>
+      <key>Start workflows</key>
+      <value>Workflows starten</value>
+    </entry>
+    <entry>
+      <key>edited</key>
+    </entry>
+    <entry>
+      <key>Channel</key>
+    </entry>
+    <entry>
+      <key>Import from Teams</key>
+    </entry>
+    <entry>
+      <key>Invitation</key>
+    </entry>
+    <entry>
+      <key>send as mail</key>
+    </entry>
+    <entry>
+      <key>User token</key>
+    </entry>
+    <entry>
+      <key>Team name</key>
+    </entry>
+    <entry>
+      <key>Knowledge Roles</key>
+    </entry>
+    <entry>
+      <key>Valid</key>
+    </entry>
+    <entry>
+      <key>Audit Logs</key>
+    </entry>
+    <entry>
+      <key>Editorial</key>
+    </entry>
+    <entry>
+      <key>KnowledgeRoles</key>
+    </entry>
+    <entry>
+      <key>Remove from Campaign</key>
+    </entry>
+    <entry>
+      <key>Message</key>
+    </entry>
+    <entry>
+      <key>Add members</key>
+    </entry>
+    <entry>
+      <key>[TEST] .All</key>
+    </entry>
+    <entry>
+      <key>Newsfeed (Complete Article)</key>
+    </entry>
+    <entry>
+      <key>Notification</key>
+    </entry>
+    <entry>
+      <key>Load older messages</key>
+    </entry>
+    <entry>
+      <key>Newsletter</key>
+    </entry>
+    <entry>
+      <key>Adds an answer to the selected discussion</key>
+    </entry>
+    <entry>
+      <key>LinkedIn (Person)</key>
+    </entry>
+    <entry>
+      <key>Newsfeed Timeline</key>
+    </entry>
+    <entry>
+      <key>MS Teams</key>
+    </entry>
+    <entry>
+      <key>User tokens</key>
+    </entry>
+    <entry>
+      <key>[TEST] Keyword_lib</key>
+    </entry>
+    <entry>
+      <key>News</key>
+    </entry>
+    <entry>
+      <key>Sales Projects</key>
+    </entry>
+    <entry>
+      <key>Team</key>
+    </entry>
+    <entry>
+      <key>Created by</key>
+    </entry>
+    <entry>
+      <key>Employee count</key>
+    </entry>
+    <entry>
+      <key>Toggles the status of  selected discussion between open and closed</key>
+    </entry>
+    <entry>
+      <key>Synchronize documents</key>
+    </entry>
+    <entry>
+      <key>AuditLogs</key>
+    </entry>
+    <entry>
+      <key>Audit Log</key>
+    </entry>
+    <entry>
+      <key>Admin</key>
+    </entry>
+    <entry>
+      <key>Show all audits</key>
+    </entry>
+    <entry>
+      <key>Sales Project milestone Id</key>
+    </entry>
+    <entry>
+      <key>LinkedIn (Organisation)</key>
+    </entry>
+    <entry>
+      <key>[TEST] UnitTest_lib</key>
+    </entry>
+    <entry>
+      <key>Exports the knowledge entry as a html file</key>
+    </entry>
+    <entry>
+      <key>My campaigns</key>
+    </entry>
+    <entry>
+      <key>Campaign costs</key>
+    </entry>
+    <entry>
+      <key>Verantwortlicher</key>
+    </entry>
+    <entry>
+      <key>No Restrictions</key>
+      <value>Keine Einschränkungen</value>
+    </entry>
+    <entry>
+      <key>Gradings in Percent</key>
+      <value>Bewertungen in Prozent</value>
+    </entry>
+    <entry>
+      <key>Max Points</key>
+      <value>Maximale Punktzahl</value>
+    </entry>
+    <entry>
+      <key>Are you sure you want to reload all classifications using the current classificationgradings?</key>
+      <value>Bist du dir sicher, dass du alle Klassifizierungen anhand der konfigurierten Bewertungen neuberechnen willst?</value>
+    </entry>
+    <entry>
+      <key>Filter set</key>
+      <value>Filter gesetzt</value>
+    </entry>
+    <entry>
+      <key>The Value has to be in the 0-100% range</key>
+      <value>Der Wert muss sich zwischen 0 und 100% liegen</value>
+    </entry>
+    <entry>
+      <key>Only Integers allowed</key>
+      <value>Nur ganze Zahlen erlaubt</value>
+    </entry>
+    <entry>
+      <key>Salesproject phase</key>
+      <value>Vertriebsprojektphase</value>
+    </entry>
+    <entry>
+      <key>Kontext</key>
+    </entry>
+    <entry>
+      <key>Trait</key>
+      <value>Merkmal</value>
+    </entry>
+    <entry>
+      <key>Document template</key>
+    </entry>
+    <entry>
+      <key>Traits</key>
+      <value>Merkmale</value>
+    </entry>
+    <entry>
+      <key>Salesproject Phases</key>
+    </entry>
+    <entry>
+      <key>Object Filter</key>
+      <value>Objekt Filter</value>
+    </entry>
+    <entry>
+      <key>Insert</key>
+      <value>Neuanlage</value>
+    </entry>
+    <entry>
+      <key>Observation Type</key>
+      <value>Beobachtungstyp</value>
+    </entry>
+    <entry>
+      <key>Shows all your Observations</key>
+      <value>Zeige all deine Beobachtungen</value>
+    </entry>
+    <entry>
+      <key>Add Dependency</key>
+      <value>Abhängigkeit hinzufügen</value>
+    </entry>
+    <entry>
+      <key>Fields</key>
+      <value>Felder</value>
+    </entry>
+    <entry>
+      <key>ObservationID</key>
+      <value>BeobachtungsID</value>
+    </entry>
+    <entry>
+      <key>Observe</key>
+      <value>beobachten</value>
+    </entry>
+    <entry>
+      <key>Observer</key>
+      <value>Beobachter</value>
+    </entry>
+    <entry>
+      <key>Observation</key>
+      <value>Beobachtung</value>
+    </entry>
+    <entry>
+      <key>Observations</key>
+      <value>Beobachtungen</value>
+    </entry>
+    <entry>
+      <key>Observe ID</key>
+      <value>Beobachte Datensatz</value>
+    </entry>
+    <entry>
+      <key>Observe IDs</key>
+      <value>Beobachte Datensätze</value>
+    </entry>
+    <entry>
+      <key>Observe Filter</key>
+      <value>Beobachte Filter</value>
+    </entry>
+    <entry>
+      <key>Cancel ID Observation</key>
+      <value>Beobachtung Datensatz aufheben</value>
+    </entry>
+    <entry>
+      <key>Cancel IDs Observation</key>
+      <value>Beobachtung Datensätz aufheben</value>
+    </entry>
+    <entry>
+      <key>Cancel Filter Observation</key>
+      <value>Beobachtung Filter aufheben</value>
+    </entry>
+    <entry>
+      <key>was set to</key>
+      <value>wurde gesetzt auf</value>
+    </entry>
+    <entry>
+      <key>has</key>
+      <value>hat</value>
+    </entry>
+    <entry>
+      <key>inserted</key>
+      <value>eingefügt</value>
+    </entry>
+    <entry>
+      <key>changed</key>
+      <value>bearbeitet</value>
+    </entry>
+    <entry>
+      <key>deleted</key>
+      <value>gelöscht</value>
+    </entry>
+    <entry>
+      <key>and</key>
+      <value>und</value>
+    </entry>
+    <entry>
+      <key>DELETE</key>
+      <value>LÖSCHEN</value>
+    </entry>
+    <entry>
+      <key>Date Edit</key>
+    </entry>
+    <entry>
+      <key>Import</key>
+    </entry>
+    <entry>
+      <key>Percent</key>
+    </entry>
+    <entry>
+      <key>Prev</key>
+    </entry>
+    <entry>
+      <key>Focus</key>
+    </entry>
+    <entry>
+      <key>Next</key>
+    </entry>
+    <entry>
+      <key>Import Documents</key>
+    </entry>
+    <entry>
+      <key>Error: The Importfile could not be found anymore.</key>
+      <value>Fehler: Die Importdatei konnte nicht mehr gefunden werden.</value>
+    </entry>
+    <entry>
+      <key>Auto assignment</key>
+      <value>Auto-Zuordnung</value>
+    </entry>
+    <entry>
+      <key>District Contact</key>
+      <value>Gebietsverantwortlicher</value>
+    </entry>
+    <entry>
+      <key>District Contacts</key>
+      <value>Gebietsverantwortlichen</value>
+    </entry>
+    <entry>
+      <key>Adviser Role</key>
+      <value>Rolle des Verantwortlichen</value>
+    </entry>
+    <entry>
+      <key>Adviser Contact</key>
+      <value>Verantwortlicher</value>
+    </entry>
+    <entry>
+      <key>Sales Manager</key>
+      <value>Verkaufsleiter</value>
+    </entry>
+    <entry>
+      <key>Office Duty</key>
+      <value>Innendienst</value>
+    </entry>
+    <entry>
+      <key>Region Manager</key>
+      <value>Regionsleiter</value>
+    </entry>
+    <entry>
+      <key>Area Manager</key>
+      <value>Gebietsleiter</value>
+    </entry>
+    <entry>
+      <key>Field Service</key>
+      <value>Außendienst</value>
+    </entry>
+    <entry>
+      <key>Assign district</key>
+      <value>Gebiet zuordnen</value>
+    </entry>
+    <entry>
+      <key>District assignment will start now!</key>
+      <value>Die Gebietszuordnung wird jetzt gestartet!</value>
+    </entry>
+    <entry>
+      <key>Assignment of district \"%0\" is completed!</key>
+      <value>Zuordnung des Gebietes \"%0\" ist abgeschlossen!</value>
+    </entry>
+    <entry>
+      <key>%0 companies were newley assigned. \n%1 companies are no longer assigned (these assignments got the status 'review'). \n%2 valid assignments were unchanged.\nThe Process took %3 seconds.</key>
+      <value>%0 Firmen wurden neu hinzugefügt. \n %1 Firmen sind nicht länger zugeordnet (diese Zuordnungen wurden auf den Status 'zur Prüfung' gesetzt). \n %2 gültige Zuordnungen blieben unverändert. \n Der Prozess dauert %3 Sekunden. </value>
+    </entry>
+    <entry>
+      <key>District assignment status</key>
+      <value>Gebietzuordnungstatus</value>
+    </entry>
+    <entry>
+      <key>Assign all selected districts</key>
+      <value>Zuordnung für alle selektierten Gebiete</value>
+    </entry>
+    <entry>
+      <key>Assignment for all selected districts will start now!</key>
+      <value>Zuordnung für alle selektierten Gebiete wird jetzt gestartet</value>
+    </entry>
+    <entry>
+      <key>Assignment of all selected districts is completed!</key>
+      <value>Zuordnung für alle selektierten Gebiete abgeschlossen</value>
+    </entry>
+    <entry>
+      <key>Set active</key>
+      <value>Aktiv setzen</value>
+    </entry>
+    <entry>
+      <key>Set inactive</key>
+      <value>Inaktiv setzen</value>
+    </entry>
+    <entry>
+      <key>Set status to active</key>
+      <value>Status auf aktiv setzen</value>
+    </entry>
+    <entry>
+      <key>Set status to inactive</key>
+      <value>Status auf inaktiv setzen</value>
+    </entry>
+    <entry>
+      <key>My district assignments to check</key>
+      <value>Meine zu prüfenden Gebietszuweisungen</value>
+    </entry>
+    <entry>
+      <key>Checklist</key>
+      <value>Checkliste</value>
+    </entry>
+    <entry>
+      <key>Salesproject Phase</key>
+    </entry>
+    <entry>
+      <key>Communication strategy designed</key>
+      <value>Kommunikationsstrategie erarbeitet</value>
+    </entry>
+    <entry>
+      <key>Probability checked and eventually readjusted</key>
+      <value>Wahrscheinlichkeit überprüfen und ggf. nachjustieren</value>
+    </entry>
+    <entry>
+      <key>Communication strategy introduced</key>
+      <value>Kommunikationsstrategie wurde vorgestellt</value>
+    </entry>
+    <entry>
+      <key>Follow-up appointment(s) exists (e.g.: for workshops..)</key>
+      <value>Folgetermin(e) existiert (z.B. für Workshops..)</value>
+    </entry>
+    <entry>
+      <key>Risk audit performed</key>
+      <value>Risikoaudit durchgeführt</value>
+    </entry>
+    <entry>
+      <key>Workshop for project-realization planned</key>
+      <value>Workshop für Projektumsetzung geplannt</value>
+    </entry>
+    <entry>
+      <key>Appointment for offer-agreement occured</key>
+      <value>Termin zur Angebotsabstimmung hat stattgefunden</value>
+    </entry>
+    <entry>
+      <key>Contract have been signed</key>
+      <value>Vertrag wurde unterschrieben</value>
+    </entry>
+    <entry>
+      <key>Set completed</key>
+      <value>Erledigt setzen</value>
+    </entry>
+    <entry>
+      <key>Responsible Districts</key>
+    </entry>
+    <entry>
+      <key>auto</key>
+    </entry>
+    <entry>
+      <key>District assigned</key>
+    </entry>
+    <entry>
+      <key>District Responsibles</key>
+    </entry>
+    <entry>
+      <key>Show my district assignments with status review</key>
+    </entry>
+    <entry>
+      <key>Payment Address</key>
+    </entry>
+    <entry>
+      <key>manual</key>
+    </entry>
+    <entry>
+      <key>Adviser status</key>
+    </entry>
+    <entry>
+      <key>Site visit</key>
+    </entry>
+    <entry>
+      <key>Marketing Workflow</key>
+    </entry>
+    <entry>
+        <key>INSERT</key>
+    </entry>
+    <entry>
+        <key>Automatically</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index f1739f8c88daac1b720f3e73c148aa60820801f7..9e2663c010a3b996d8b52a1bbb1bc3c21a1e2881 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -5048,18 +5048,12 @@
     <entry>
       <key>Has sales approved this step?</key>
     </entry>
-    <entry>
-      <key>"</key>
-    </entry>
     <entry>
       <key>Import Date</key>
     </entry>
     <entry>
       <key>Import Data</key>
     </entry>
-    <entry>
-      <key>;</key>
-    </entry>
     <entry>
       <key>Standard mail</key>
     </entry>
@@ -7440,6 +7434,606 @@
     <entry>
       <key>Toggle status</key>
     </entry>
+    <entry>
+      <key>Add app</key>
+    </entry>
+    <entry>
+      <key>Open Teams</key>
+    </entry>
+    <entry>
+      <key>Choose Team</key>
+    </entry>
+    <entry>
+      <key>Delete Team</key>
+    </entry>
+    <entry>
+      <key>Restore Team</key>
+    </entry>
+    <entry>
+      <key>Create Team</key>
+    </entry>
+    <entry>
+      <key>Team role</key>
+    </entry>
+    <entry>
+      <key>Edit Team</key>
+    </entry>
+    <entry>
+      <key>Sales Project</key>
+    </entry>
+    <entry>
+      <key>Channels</key>
+    </entry>
+    <entry>
+      <key>Private</key>
+    </entry>
+    <entry>
+      <key>Rechnungsbetrag</key>
+    </entry>
+    <entry>
+      <key>[TEST] Sql_lib - SqlMaskingUtils</key>
+    </entry>
+    <entry>
+      <key>Knowledgebase</key>
+    </entry>
+    <entry>
+      <key>Marketing workflow</key>
+    </entry>
+    <entry>
+      <key>Token</key>
+    </entry>
+    <entry>
+      <key>Edited by</key>
+    </entry>
+    <entry>
+      <key>Sales Project Analyses</key>
+    </entry>
+    <entry>
+      <key>Sales Project Id</key>
+    </entry>
+    <entry>
+      <key>Sales Project Convertion Rates</key>
+    </entry>
+    <entry>
+      <key>Set Campaign Step</key>
+    </entry>
+    <entry>
+      <key>Member</key>
+    </entry>
+    <entry>
+      <key>Tags</key>
+    </entry>
+    <entry>
+      <key>[TEST] Sql_lib - SqlBuilder</key>
+    </entry>
+    <entry>
+      <key>Feed</key>
+    </entry>
+    <entry>
+      <key>[TEST] KeywordAttribute_lib</key>
+    </entry>
+    <entry>
+      <key>Messages</key>
+    </entry>
+    <entry>
+      <key>Channel Name</key>
+    </entry>
+    <entry>
+      <key>Sales Project Phases</key>
+    </entry>
+    <entry>
+      <key>Start workflows</key>
+    </entry>
+    <entry>
+      <key>edited</key>
+    </entry>
+    <entry>
+      <key>Channel</key>
+    </entry>
+    <entry>
+      <key>Import from Teams</key>
+    </entry>
+    <entry>
+      <key>Invitation</key>
+    </entry>
+    <entry>
+      <key>send as mail</key>
+    </entry>
+    <entry>
+      <key>User token</key>
+    </entry>
+    <entry>
+      <key>Team name</key>
+    </entry>
+    <entry>
+      <key>Knowledge Roles</key>
+    </entry>
+    <entry>
+      <key>Valid</key>
+    </entry>
+    <entry>
+      <key>Audit Logs</key>
+    </entry>
+    <entry>
+      <key>Editorial</key>
+    </entry>
+    <entry>
+      <key>KnowledgeRoles</key>
+    </entry>
+    <entry>
+      <key>Remove from Campaign</key>
+    </entry>
+    <entry>
+      <key>Message</key>
+    </entry>
+    <entry>
+      <key>Add members</key>
+    </entry>
+    <entry>
+      <key>[TEST] .All</key>
+    </entry>
+    <entry>
+      <key>Newsfeed (Complete Article)</key>
+    </entry>
+    <entry>
+      <key>Notification</key>
+    </entry>
+    <entry>
+      <key>Load older messages</key>
+    </entry>
+    <entry>
+      <key>Newsletter</key>
+    </entry>
+    <entry>
+      <key>Adds an answer to the selected discussion</key>
+    </entry>
+    <entry>
+      <key>LinkedIn (Person)</key>
+    </entry>
+    <entry>
+      <key>Newsfeed Timeline</key>
+    </entry>
+    <entry>
+      <key>MS Teams</key>
+    </entry>
+    <entry>
+      <key>User tokens</key>
+    </entry>
+    <entry>
+      <key>[TEST] Keyword_lib</key>
+    </entry>
+    <entry>
+      <key>News</key>
+    </entry>
+    <entry>
+      <key>Sales Projects</key>
+    </entry>
+    <entry>
+      <key>Team</key>
+    </entry>
+    <entry>
+      <key>Created by</key>
+    </entry>
+    <entry>
+      <key>Employee count</key>
+    </entry>
+    <entry>
+      <key>Toggles the status of  selected discussion between open and closed</key>
+    </entry>
+    <entry>
+      <key>Synchronize documents</key>
+    </entry>
+    <entry>
+      <key>AuditLogs</key>
+    </entry>
+    <entry>
+      <key>Audit Log</key>
+    </entry>
+    <entry>
+      <key>Admin</key>
+    </entry>
+    <entry>
+      <key>Show all audits</key>
+    </entry>
+    <entry>
+      <key>Sales Project milestone Id</key>
+    </entry>
+    <entry>
+      <key>LinkedIn (Organisation)</key>
+    </entry>
+    <entry>
+      <key>[TEST] UnitTest_lib</key>
+    </entry>
+    <entry>
+      <key>Exports the knowledge entry as a html file</key>
+    </entry>
+    <entry>
+      <key>The max participants count can not be equal or less then 0</key>
+    </entry>
+    <entry>
+      <key>Illegal Parent Operator in buildFilterObj-Function:</key>
+    </entry>
+    <entry>
+      <key>My campaigns</key>
+    </entry>
+    <entry>
+      <key>Subcategory</key>
+    </entry>
+    <entry>
+      <key>Campaign costs</key>
+    </entry>
+    <entry>
+      <key>Verantwortlicher</key>
+    </entry>
+    <entry>
+      <key>No Restrictions</key>
+    </entry>
+    <entry>
+      <key>Gradings in Percent</key>
+    </entry>
+    <entry>
+      <key>Max Points</key>
+    </entry>
+    <entry>
+      <key>Are you sure you want to reload all classifications using the current classificationgradings?</key>
+    </entry>
+    <entry>
+      <key>Filter set</key>
+    </entry>
+    <entry>
+      <key>Marketing Workflow</key>
+    </entry>
+    <entry>
+      <key>Traits</key>
+    </entry>
+    <entry>
+      <key>Salesproject Phase</key>
+    </entry>
+    <entry>
+      <key>Document template</key>
+    </entry>
+    <entry>
+      <key>Kontext</key>
+    </entry>
+    <entry>
+      <key>Checklist</key>
+    </entry>
+    <entry>
+      <key>Trait</key>
+    </entry>
+    <entry>
+      <key>Salesproject phase</key>
+    </entry>
+    <entry>
+      <key>Status: \"won\"</key>
+    </entry>
+    <entry>
+      <key>Project team roles</key>
+    </entry>
+    <entry>
+      <key>Offer sent</key>
+    </entry>
+    <entry>
+      <key>Classification fields</key>
+    </entry>
+    <entry>
+      <key>Project start within next 12 months</key>
+    </entry>
+    <entry>
+      <key>Project team: \"Internal distribution\"</key>
+    </entry>
+    <entry>
+      <key>Probablity: 100%</key>
+    </entry>
+    <entry>
+      <key>Project team: \"Project manager\"</key>
+    </entry>
+    <entry>
+      <key>Offer exists</key>
+    </entry>
+    <entry>
+      <key>Its not allowed to step over some salesproject phases.</key>
+    </entry>
+    <entry>
+      <key>Salesproject phases</key>
+    </entry>
+    <entry>
+      <key>Not all prerequisites are fulfilled.</key>
+    </entry>
+    <entry>
+      <key>To skip a salesproject phase isn't allowed.</key>
+    </entry>
+    <entry>
+      <key>The team must have at least one owner</key>
+    </entry>
+    <entry>
+      <key>Delete this Function</key>
+    </entry>
+    <entry>
+      <key>Automatically</key>
+    </entry>
+    <entry>
+      <key>Checklist entries</key>
+    </entry>
+    <entry>
+      <key>Communication strategy designed</key>
+    </entry>
+    <entry>
+      <key>Probability checked and eventually readjusted</key>
+    </entry>
+    <entry>
+      <key>Contract have been signed</key>
+    </entry>
+    <entry>
+      <key>Communication strategy introduced</key>
+    </entry>
+    <entry>
+      <key>Workshop for project-realization planned</key>
+    </entry>
+    <entry>
+      <key>Risk audit performed</key>
+    </entry>
+    <entry>
+      <key>Appointment for offer-agreement occured</key>
+    </entry>
+    <entry>
+      <key>Follow-up appointment(s) exists (e.g.: for workshops..)</key>
+    </entry>
+    <entry>
+      <key>Subtotal</key>
+    </entry>
+    <entry>
+      <key>incl. Vat</key>
+    </entry>
+    <entry>
+      <key>Invoice Discount</key>
+    </entry>
+    <entry>
+      <key>discounted Vat</key>
+    </entry>
+    <entry>
+      <key>discounted Price</key>
+    </entry>
+    <entry>
+      <key>The selected Contact doesn't have an address set.</key>
+    </entry>
+    <entry>
+      <key>Set completed</key>
+    </entry>
+    <entry>
+      <key>without Vat</key>
+    </entry>
+    <entry>
+      <key>Checklist entry</key>
+    </entry>
+    <entry>
+      <key>Object Filter</key>
+    </entry>
+    <entry>
+      <key>Insert</key>
+    </entry>
+    <entry>
+      <key>Observation Type</key>
+    </entry>
+    <entry>
+      <key>Shows all your Observations</key>
+    </entry>
+    <entry>
+      <key>Add Dependency</key>
+    </entry>
+    <entry>
+      <key>Fields</key>
+    </entry>
+    <entry>
+      <key>ObservationID</key>
+    </entry>
+    <entry>
+      <key>Observe</key>
+    </entry>
+    <entry>
+      <key>Observer</key>
+    </entry>
+    <entry>
+      <key>Observation</key>
+    </entry>
+    <entry>
+      <key>Observations</key>
+    </entry>
+    <entry>
+      <key>was set to</key>
+    </entry>
+    <entry>
+      <key>The data of this Leadimport has already been transfered. Do you want to transfer it again?</key>
+    </entry>
+    <entry>
+      <key>Observe ID</key>
+    </entry>
+    <entry>
+      <key>Cancel IDs Observation</key>
+    </entry>
+    <entry>
+      <key>has</key>
+    </entry>
+    <entry>
+      <key>Cancel ID Observation</key>
+    </entry>
+    <entry>
+      <key>inserted</key>
+    </entry>
+    <entry>
+      <key>INSERT</key>
+    </entry>
+    <entry>
+      <key>Site visit</key>
+    </entry>
+    <entry>
+      <key>Observe Filter</key>
+    </entry>
+    <entry>
+      <key>and</key>
+    </entry>
+    <entry>
+      <key>Observe IDs</key>
+    </entry>
+    <entry>
+      <key>deleted</key>
+    </entry>
+    <entry>
+      <key>DELETE</key>
+    </entry>
+    <entry>
+      <key>Cancel Filter Observation</key>
+    </entry>
+    <entry>
+      <key>changed</key>
+    </entry>
+    <entry>
+      <key>Date Edit</key>
+    </entry>
+    <entry>
+      <key>Import</key>
+    </entry>
+    <entry>
+      <key>Percent</key>
+    </entry>
+    <entry>
+      <key>Prev</key>
+    </entry>
+    <entry>
+      <key>Focus</key>
+    </entry>
+    <entry>
+      <key>Next</key>
+    </entry>
+    <entry>
+      <key>Import Documents</key>
+    </entry>
+    <entry>
+      <key>Adviser Contact</key>
+    </entry>
+    <entry>
+      <key>Office Duty</key>
+    </entry>
+    <entry>
+      <key>Adviser Role</key>
+    </entry>
+    <entry>
+      <key>District Contacts</key>
+    </entry>
+    <entry>
+      <key>Area Manager</key>
+    </entry>
+    <entry>
+      <key>Auto assignment</key>
+    </entry>
+    <entry>
+      <key>Field Service</key>
+    </entry>
+    <entry>
+      <key>Sales Manager</key>
+    </entry>
+    <entry>
+      <key>Region Manager</key>
+    </entry>
+    <entry>
+      <key>District Contact</key>
+    </entry>
+    <entry>
+      <key>Supervisors</key>
+    </entry>
+    <entry>
+      <key>Supervisor assignment</key>
+    </entry>
+    <entry>
+      <key>Supervisor</key>
+    </entry>
+    <entry>
+      <key>Adviser role</key>
+    </entry>
+    <entry>
+      <key>Adviser contact</key>
+    </entry>
+    <entry>
+      <key>Assignment for all selected districts will start now!</key>
+    </entry>
+    <entry>
+      <key>Set status to active</key>
+    </entry>
+    <entry>
+      <key>Assign all selected districts</key>
+    </entry>
+    <entry>
+      <key>Set active</key>
+    </entry>
+    <entry>
+      <key>%0 companies were newley assigned. \n%1 companies are no longer assigned (these assignments got the status 'review'). \n%2 valid assignments were unchanged.\nThe Process took %3 seconds.</key>
+    </entry>
+    <entry>
+      <key>Assign district</key>
+    </entry>
+    <entry>
+      <key>Set inactive</key>
+    </entry>
+    <entry>
+      <key>My district assignments to check</key>
+    </entry>
+    <entry>
+      <key>Assignment of district \"%0\" is completed!</key>
+    </entry>
+    <entry>
+      <key>Set status to inactive</key>
+    </entry>
+    <entry>
+      <key>District assignment status</key>
+    </entry>
+    <entry>
+      <key>District assignment will start now!</key>
+    </entry>
+    <entry>
+      <key>Assignment of all selected districts is completed!</key>
+    </entry>
+    <entry>
+      <key>My responsible Districts</key>
+    </entry>
+    <entry>
+      <key>It lists all areas that the user has to take care of.</key>
+    </entry>
+    <entry>
+      <key>Error: The Importfile could not be found anymore.</key>
+    </entry>
+    <entry>
+      <key>The Value has to be in the 0-100% range</key>
+    </entry>
+    <entry>
+      <key>Only Integers allowed</key>
+    </entry>
+    <entry>
+      <key>No file selected.</key>
+    </entry>
+    <entry>
+      <key>auto</key>
+    </entry>
+    <entry>
+      <key>District assigned</key>
+    </entry>
+    <entry>
+      <key>District Responsibles</key>
+    </entry>
+    <entry>
+      <key>Show my district assignments with status review</key>
+    </entry>
+    <entry>
+      <key>Payment Address</key>
+    </entry>
+    <entry>
+      <key>manual</key>
+    </entry>
+    <entry>
+      <key>Adviser status</key>
+    </entry>
+    <entry>
+      <key>Automatically</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonContext/CampaignParticipant/CampaignParticipant.aod b/neonContext/CampaignParticipant/CampaignParticipant.aod
index 503b93a8e3b3e870f039f08335ed0dc5832ddd77..80eda39dc4dbe253de00d07452e67dcbd28658f1 100644
--- a/neonContext/CampaignParticipant/CampaignParticipant.aod
+++ b/neonContext/CampaignParticipant/CampaignParticipant.aod
@@ -4,7 +4,6 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterView>CampaignParticipantFilter_view</filterView>
   <editView>CampaignParticipantEdit_view</editView>
-  <previewView>CampaignParticipantPreview_view</previewView>
   <entity>CampaignParticipant_entity</entity>
   <references>
     <neonViewReference>
diff --git a/neonContext/Checklist/Checklist.aod b/neonContext/Checklist/Checklist.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d30de3d0d0b4d5fe7e35cf47b845d88b8034d68d
--- /dev/null
+++ b/neonContext/Checklist/Checklist.aod
@@ -0,0 +1,18 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>Checklist</name>
+  <title>Checklist</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>NEON:MQL</icon>
+  <entity>Checklist_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>bec4bdfb-d61d-418e-ac97-6905b00a0393</name>
+      <view>ChecklistEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>2a7eb3a8-1ef9-4ecd-a302-42bd676ed24f</name>
+      <view>ChecklistFilter_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/ChecklistEntry/ChecklistEntry.aod b/neonContext/ChecklistEntry/ChecklistEntry.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7ce3bb78ee5dd96197c0fa9707ab800cbe0afb1a
--- /dev/null
+++ b/neonContext/ChecklistEntry/ChecklistEntry.aod
@@ -0,0 +1,17 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>ChecklistEntry</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>NEON:MQL</icon>
+  <entity>ChecklistEntry_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>af6c9ce2-43e8-4076-bd78-58e54c673104</name>
+      <view>ChecklistEntryMultiEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>53b9dc65-df64-4e1c-bf6f-4854a30bf689</name>
+      <view>ChecklistEntryList_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/ChecklistEntryValue/ChecklistEntryValue.aod b/neonContext/ChecklistEntryValue/ChecklistEntryValue.aod
new file mode 100644
index 0000000000000000000000000000000000000000..842a8f0eed5a50064ca7e6a3b6e3e849b5599c00
--- /dev/null
+++ b/neonContext/ChecklistEntryValue/ChecklistEntryValue.aod
@@ -0,0 +1,14 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>ChecklistEntryValue</name>
+  <title>ChecklistEntryValue</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>NEON:MQL</icon>
+  <entity>ChecklistEntryValue_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>12d29401-307b-48cc-8703-a645c8c2f190</name>
+      <view>ChecklistEntryValueList_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/Classification/Classification.aod b/neonContext/Classification/Classification.aod
index b6c29daeda62c2747e8e1f8ba59e94c5b727ada8..07bc14712048df8b6962b9852069175b5954d472 100644
--- a/neonContext/Classification/Classification.aod
+++ b/neonContext/Classification/Classification.aod
@@ -3,6 +3,7 @@
   <name>Classification</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/neonContext/Classification/documentation.adoc</documentation>
+  <filterView>ClassificationTree_view</filterView>
   <previewView>ClassificationPreview_view</previewView>
   <entity>Classification_entity</entity>
   <references>
diff --git a/neonContext/DistrictContact/DistrictContact.aod b/neonContext/DistrictContact/DistrictContact.aod
new file mode 100644
index 0000000000000000000000000000000000000000..8db3d54af752ddd113a94b0e68df38a00c3f6bf8
--- /dev/null
+++ b/neonContext/DistrictContact/DistrictContact.aod
@@ -0,0 +1,20 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>DistrictContact</name>
+  <title>Supervisor</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:GLOBE</icon>
+  <filterView>DistrictContactFilter_view</filterView>
+  <editView>DistrictContactEdit_view</editView>
+  <entity>DistrictContact_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>d3f8cf3c-bf79-4b52-a7a6-f26dcc3b6cb3</name>
+      <view>DistrictContactFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>a271900d-e4cb-40cf-8172-93169a513ee4</name>
+      <view>DistrictContactEdit_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/DistrictResponsible/DistrictResponsible.aod b/neonContext/DistrictResponsible/DistrictResponsible.aod
index 58d47bc30bb3ee9a657e860f9b9f6b45872194e5..1a7fdf7c9c460ca3d629a372a4ffba1cf1aa8cc3 100644
--- a/neonContext/DistrictResponsible/DistrictResponsible.aod
+++ b/neonContext/DistrictResponsible/DistrictResponsible.aod
@@ -1,8 +1,18 @@
 <?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
   <name>DistrictResponsible</name>
+  <title>District Responsibles</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <icon>VAADIN:GLOBE</icon>
+  <filterView>DistrictResponsibleFilter_view</filterView>
+  <editView>DistrictResponsibleEdit_view</editView>
+  <previewView>DistrictResponsiblePreviewList_view</previewView>
+  <lookupView>DistrictResponsibleLookup_view</lookupView>
+  <devices>
+    <element>MOBILE</element>
+    <element>TABLET</element>
+    <element>DESKTOP</element>
+  </devices>
   <entity>DistrictResponsible_entity</entity>
   <references>
     <neonViewReference>
@@ -17,5 +27,17 @@
       <name>cba355d3-4ef4-441e-8976-f51c8fe65eec</name>
       <view>DistrictResponsiblePreviewList_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>4fb58e00-a771-4a2b-a820-d0f863572d89</name>
+      <view>DistrictResponsibleFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>bf0655aa-60e7-47b8-a3e7-eb7ba8b37cac</name>
+      <view>DistrictResponsibleEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>30960bbf-184a-4e4e-8058-983d4c150d89</name>
+      <view>DistrictResponsibleLookup_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod b/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod
index ecb8b2484303f956026174396a3144998b9cc3fc..f9bc4fdec879bae657a1d1d6613c07276dd8475d 100644
--- a/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod
+++ b/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod
@@ -10,8 +10,5 @@
       <name>a6965156-ab52-4520-a3be-1351eacd863d</name>
       <view>KnowledgeNewsFeed_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>e4604c82-a42f-47c6-a1d1-0f1d1727ee38</name>
-    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/MSTTeam/MSTTeam.aod b/neonContext/MSTTeam/MSTTeam.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7f715ccd447d45dbce5deed363aebf485646fab9
--- /dev/null
+++ b/neonContext/MSTTeam/MSTTeam.aod
@@ -0,0 +1,22 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>MSTTeam</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <editView>MSTTeamEdit_view</editView>
+  <previewView>MSTTeamPreview_view</previewView>
+  <entity>MSTTeam_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>357c290b-bf6a-4628-a6d9-f81a97ea843e</name>
+      <view>MSTTeamEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>c13c234d-ee98-4a26-b7b1-8ee3a3829284</name>
+      <view>MSTTeamPreview_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>b1e14c73-f48f-43a7-a459-2aa0172d015b</name>
+      <view>MSTTeamEditMembers_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/MSTTeamLink/MSTTeamLink.aod b/neonContext/MSTTeamLink/MSTTeamLink.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d0d6d646fe31690e5c9d26697ec9adf9f471f40c
--- /dev/null
+++ b/neonContext/MSTTeamLink/MSTTeamLink.aod
@@ -0,0 +1,13 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>MSTTeamLink</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <editView>MSTTeamLinkEdit_view</editView>
+  <entity>MSTTeamLink_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>a165469f-eea5-4427-b5ba-4477fe7e04e6</name>
+      <view>MSTTeamLinkEdit_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/MSTTeamMember/MSTTeamMember.aod b/neonContext/MSTTeamMember/MSTTeamMember.aod
new file mode 100644
index 0000000000000000000000000000000000000000..bfb06f7c7f593614d9e07e748111ba5c42b7a708
--- /dev/null
+++ b/neonContext/MSTTeamMember/MSTTeamMember.aod
@@ -0,0 +1,16 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>MSTTeamMember</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>MSTTeamMember_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>61588d12-3c0d-4181-93ae-90d7ad50ed6b</name>
+      <view>MSTTeamMemberMultiEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>b740066a-2d33-4bc4-ba5f-3e4a68418575</name>
+      <view>MSTTeamMemberList_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/MSTeamsActivityImport/MSTeamsActivityImport.aod b/neonContext/MSTeamsActivityImport/MSTeamsActivityImport.aod
new file mode 100644
index 0000000000000000000000000000000000000000..847aef4a0cd215fb0ebb2cb68a0783a137481b6b
--- /dev/null
+++ b/neonContext/MSTeamsActivityImport/MSTeamsActivityImport.aod
@@ -0,0 +1,13 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>MSTeamsActivityImport</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <editView>MSTeamsActivityImportEdit_view</editView>
+  <entity>MSTeamsActivityImport_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>05e9f542-dd4f-4895-9d0d-d38d57c62735</name>
+      <view>MSTeamsActivityImportEdit_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/MSTeamsChannel/MSTeamsChannel.aod b/neonContext/MSTeamsChannel/MSTeamsChannel.aod
new file mode 100644
index 0000000000000000000000000000000000000000..f8986b6e98648117b4b4b1539e4fe498331e11f4
--- /dev/null
+++ b/neonContext/MSTeamsChannel/MSTeamsChannel.aod
@@ -0,0 +1,12 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>MSTeamsChannel</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>MSTeamsChannel_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>01e5e126-8d14-4dec-a468-0de13b920900</name>
+      <view>MSTeamsChannelList_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/MSTeamsDocument/MSTeamsDocument.aod b/neonContext/MSTeamsDocument/MSTeamsDocument.aod
new file mode 100644
index 0000000000000000000000000000000000000000..a7125b105f4e8b6a8fd0cc3288d6a87a674773b7
--- /dev/null
+++ b/neonContext/MSTeamsDocument/MSTeamsDocument.aod
@@ -0,0 +1,13 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>MSTeamsDocument</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <editView>MSTeamsDocumentEdit_view</editView>
+  <entity>MSTeamsDocument_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>167cee11-55bd-4988-838b-d9c784da01e2</name>
+      <view>MSTeamsDocumentEdit_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/MSTeamsMessage/MSTeamsMessage.aod b/neonContext/MSTeamsMessage/MSTeamsMessage.aod
new file mode 100644
index 0000000000000000000000000000000000000000..3e2fdddb1fd203df7b6ab0bc1243e94fd3ab92d2
--- /dev/null
+++ b/neonContext/MSTeamsMessage/MSTeamsMessage.aod
@@ -0,0 +1,14 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>MSTeamsMessage</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterView>MSTeamsMessageFilter_view</filterView>
+  <lookupView>MSTeamsMessageFilter_view</lookupView>
+  <entity>MSTeamsMessage_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>db5e4380-458f-438a-8945-b8b8463e81d4</name>
+      <view>MSTeamsMessageFilter_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/Member/Member.aod b/neonContext/Member/Member.aod
index 35fc63e30202d49291cc8baac99a5bf003189f3d..a2915648a320f4a2b4443eeb27f203f329d7cbfd 100644
--- a/neonContext/Member/Member.aod
+++ b/neonContext/Member/Member.aod
@@ -4,6 +4,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterView>MemberFilter_view</filterView>
   <editView>MemberEdit_view</editView>
+  <lookupView>MemberLookup_view</lookupView>
   <entity>Member_entity</entity>
   <references>
     <neonViewReference>
@@ -18,6 +19,10 @@
       <name>61eb4778-61aa-4419-8c8b-5ad69d86a4bb</name>
       <view>MemberDrawer_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>9a36b4d9-5861-442b-84f3-8662e8069740</name>
+      <view>MemberLookup_view</view>
+    </neonViewReference>
   </references>
   <viewmodeProvider>
     <staticContentEntry>
diff --git a/neonContext/Observation/Observation.aod b/neonContext/Observation/Observation.aod
new file mode 100644
index 0000000000000000000000000000000000000000..aeab7d749b7e799c4c22e6d58f55bbc73c5be06c
--- /dev/null
+++ b/neonContext/Observation/Observation.aod
@@ -0,0 +1,25 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>Observation</name>
+  <title>Observation</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:EYE</icon>
+  <filterView>ObservationFilter_view</filterView>
+  <editView>ObservationEdit_view</editView>
+  <previewView>ObservationPreview_view</previewView>
+  <entity>Observation_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>081e645d-ede7-4987-891c-725e2300c7a0</name>
+      <view>ObservationFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>381da87e-006b-4fd6-b2b2-18e53d675928</name>
+      <view>ObservationEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>8e1417a2-f172-451f-9e76-81b852abcaa1</name>
+      <view>ObservationPreview_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/Offer/Offer.aod b/neonContext/Offer/Offer.aod
index e8a6d8d34e56933b89b40bd124432ff6e1a89d0c..271bdfa9b499295cc511d6c1a464eb8afb50a3fd 100644
--- a/neonContext/Offer/Offer.aod
+++ b/neonContext/Offer/Offer.aod
@@ -44,5 +44,8 @@
       <name>136dceaa-0eca-452a-9757-132fd54e8c55</name>
       <view>OfferPreviewMultiple_view</view>
     </neonViewReference>
+    <webserviceReference>
+      <name>277d4493-9a49-4e68-b00c-29d3d0e0b9d2</name>
+    </webserviceReference>
   </references>
 </neonContext>
diff --git a/neonContext/Order/Order.aod b/neonContext/Order/Order.aod
index d3f8ba0860f318063c886afe075a841d34da9858..3aed2f990aa1c611b9800ff36c2f9d14cb569f98 100644
--- a/neonContext/Order/Order.aod
+++ b/neonContext/Order/Order.aod
@@ -51,5 +51,13 @@
       <name>99e9bf9f-3aa0-48c6-b136-6b0d81f602d4</name>
       <view>OrderReport_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>87de3eca-c0cb-4aec-a32b-c7edc1cbac93</name>
+      <view>OrderCondition_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>777804d0-fe8d-43b6-9599-18fc46951d8f</name>
+      <view>OrderAddress_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod
index 4b997e115ae5c4e69f504b7c85f89b98a9327fb8..57dc7485b7ab4a0cf110be281c8993df2c7663ec 100644
--- a/neonContext/Salesproject/Salesproject.aod
+++ b/neonContext/Salesproject/Salesproject.aod
@@ -31,10 +31,6 @@
       <name>9d4603e0-6e0e-4c9e-af97-f5c059debe9e</name>
       <view>SalesprojectMilestone_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>6640a2aa-cd7f-41d0-ab55-30a99256c2c6</name>
-      <view>SalesprojectMemberActivity_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>58afb929-85fb-4aea-a149-25afc9cc7a97</name>
       <view>SalesprojectMilestoneSource_view</view>
@@ -75,5 +71,9 @@
       <name>079db4ee-86fc-4985-a253-249622d9f3ce</name>
       <view>SalesprojectAnalyses_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>b50928ae-ad07-40ea-87e7-4f82daf9715c</name>
+      <view>SalesprojectActivity_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/SalesprojectPhaseDefinition/SalesprojectPhaseDefinition.aod b/neonContext/SalesprojectPhaseDefinition/SalesprojectPhaseDefinition.aod
new file mode 100644
index 0000000000000000000000000000000000000000..abfe2caf79a2a03d4170a7b98c04d168ea55d936
--- /dev/null
+++ b/neonContext/SalesprojectPhaseDefinition/SalesprojectPhaseDefinition.aod
@@ -0,0 +1,30 @@
+<?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
+  <name>SalesprojectPhaseDefinition</name>
+  <title>Salesproject phases</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:LIST_UL</icon>
+  <filterView>SalesprojectPhaseDefinitionFilter_view</filterView>
+  <editView>SalesprojectPhaseDefinitionEdit_view</editView>
+  <previewView>SalesprojectPhaseDefinitionPreview_view</previewView>
+  <devices>
+    <element>MOBILE</element>
+    <element>TABLET</element>
+    <element>DESKTOP</element>
+  </devices>
+  <entity>SalesprojectPhaseDefinition_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>41bee035-a20a-4eb1-95ba-190dbacf1c7d</name>
+      <view>SalesprojectPhaseDefinitionFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>a1eac585-06e1-4a5f-bb7b-4cbacb0710ae</name>
+      <view>SalesprojectPhaseDefinitionEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>14fcb49f-fd8c-43e4-a3e9-6e6ccd42743c</name>
+      <view>SalesprojectPhaseDefinitionPreview_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/SupportTicket/SupportTicket.aod b/neonContext/SupportTicket/SupportTicket.aod
index 5115f0e09bb42d0a96db18a81d8e858ec4705c14..b0233b40612590203cef68266f2313ff595f7974 100644
--- a/neonContext/SupportTicket/SupportTicket.aod
+++ b/neonContext/SupportTicket/SupportTicket.aod
@@ -4,6 +4,7 @@
   <title>Support Ticket</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/neonContext/SupportTicket/documentation.adoc</documentation>
+  <icon>VAADIN:CHAT</icon>
   <mainView>SupportTicketMain_view</mainView>
   <filterView>SupportTicketFilter_view</filterView>
   <editView>SupportTicketEdit_view</editView>
diff --git a/neonDashboard/Home/Home.aod b/neonDashboard/Home/Home.aod
index 1c0ccc5e306c4f553765da6e33024c3e674d6899..dc01fbf1ec3b9201eac0bc318ee53f98e8c0a568 100644
--- a/neonDashboard/Home/Home.aod
+++ b/neonDashboard/Home/Home.aod
@@ -8,7 +8,7 @@
   <editRoles />
   <defaultDashlets>
     <neonDashlet>
-      <name>Dashlet2</name>
+      <name>AllContactsDashlet</name>
       <viewName>PersonFilter_view</viewName>
       <configName>AllContactsDashlet</configName>
       <uiConfiguration>
@@ -20,7 +20,7 @@
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet3</name>
+      <name>AditoTwitterDashlet</name>
       <viewName>TwitterTimeline_view</viewName>
       <configName>AditoTwitterDashlet</configName>
       <uiConfiguration>
@@ -32,7 +32,7 @@
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet</name>
+      <name>MytasksDashlet</name>
       <viewName>TaskFilter_view</viewName>
       <configName>mytasks</configName>
       <uiConfiguration>
@@ -44,7 +44,7 @@
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet4</name>
+      <name>InformationDashlet</name>
       <viewName>MyDashboardScoreCard_view</viewName>
       <configName>Information</configName>
       <uiConfiguration>
@@ -56,7 +56,7 @@
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet5</name>
+      <name>NotificationDashlet</name>
       <viewName>NotificationFilter_view</viewName>
       <configName>NotificationDashletConfiguration</configName>
       <uiConfiguration>
diff --git a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
index 870d8ef2f23bf7f719d7a43c0dc70deec2075f06..b6750436bad8af3a5e84c77d972166a4c2977519 100644
--- a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
+++ b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
@@ -11,7 +11,7 @@
   </editRoles>
   <defaultDashlets>
     <neonDashlet>
-      <name>Dashlet</name>
+      <name>KeyFiguresDashlet</name>
       <viewName>SalesprojectScoreCard_view</viewName>
       <configName>KeyFigures</configName>
       <uiConfiguration>
@@ -23,7 +23,7 @@
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet4</name>
+      <name>AllOrgsDashlet</name>
       <viewName>OrganisationFilter_view</viewName>
       <configName>AllOrgsDashlet</configName>
       <uiConfiguration>
@@ -35,7 +35,7 @@
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet2</name>
+      <name>OpenSalesprojectsDashlet</name>
       <viewName>SalesprojectFilter_view</viewName>
       <configName>OpenSalesprojectsDashlet</configName>
       <uiConfiguration>
@@ -47,7 +47,7 @@
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet3</name>
+      <name>SalesprojectPhasesDashlet</name>
       <viewName>SalesprojectAnalyses_view</viewName>
       <configName>SalesprojectPhases</configName>
       <uiConfiguration>
@@ -59,7 +59,7 @@
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet6</name>
+      <name>ConvertionRatesDashlet</name>
       <viewName>SalesprojectConversionRate_view</viewName>
       <configName>ConvertionRates</configName>
       <uiConfiguration>
@@ -71,7 +71,7 @@
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet7</name>
+      <name>AnalysesChartDashlet</name>
       <viewName>ActivityAnalyses_view</viewName>
       <configName>analysesChart</configName>
       <uiConfiguration>
diff --git a/neonNotificationType/DistrictAssigned/DistrictAssigned.aod b/neonNotificationType/DistrictAssigned/DistrictAssigned.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d3acf304d7d808619faba61d320706818107cb06
--- /dev/null
+++ b/neonNotificationType/DistrictAssigned/DistrictAssigned.aod
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonNotificationType xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonNotificationType/1.1.0">
+  <name>DistrictAssigned</name>
+  <title>District assigned</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:GLOBE</icon>
+</neonNotificationType>
diff --git a/neonNotificationType/ObservationNotification/ObservationNotification.aod b/neonNotificationType/ObservationNotification/ObservationNotification.aod
new file mode 100644
index 0000000000000000000000000000000000000000..da8982e18acd2def55807ba471e214b6150f0c67
--- /dev/null
+++ b/neonNotificationType/ObservationNotification/ObservationNotification.aod
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonNotificationType xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonNotificationType/1.1.0">
+  <name>ObservationNotification</name>
+  <title>Observation</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:EYE</icon>
+</neonNotificationType>
diff --git a/neonView/360DegreeFilter_view/360DegreeFilter_view.aod b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod
index 92774253b354b78078799eeddf036328bb43eaab..26a3200a30ceff3d8ef7307da79661fce7c24362 100644
--- a/neonView/360DegreeFilter_view/360DegreeFilter_view.aod
+++ b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod
@@ -1,8 +1,8 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>360DegreeFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterable v="false" />
+  <filterable v="true" />
   <layout>
     <groupLayout>
       <name>layout</name>
@@ -10,25 +10,27 @@
   </layout>
   <children>
     <treeViewTemplate>
-      <name>Treetable</name>
-      <favoriteActionGroup2>newModule</favoriteActionGroup2>
+      <name>Tree</name>
       <titleField>TITLE</titleField>
-      <descriptionField>DATE</descriptionField>
+      <descriptionField>DESCRIPTION</descriptionField>
       <iconField>ICON</iconField>
+      <hideContentSearch v="false" />
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup2>newModule</favoriteActionGroup2>
       <defaultGroupFields>
-        <element>ENTITY_NAME</element>
+        <element>GROUP</element>
       </defaultGroupFields>
+      <fixedFilterFields />
     </treeViewTemplate>
     <timelineViewTemplate>
       <name>Timeline</name>
-      <favoriteActionGroup2>newModule</favoriteActionGroup2>
-      <dateField>DATE</dateField>
+      <dateField>DATE_NEW</dateField>
       <titleField>TITLE</titleField>
-      <descriptionField>ENTITY_NAME</descriptionField>
+      <descriptionField>GROUP</descriptionField>
       <iconIdField>ICON</iconIdField>
       <hideContentSearch v="false" />
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup2>newModule</favoriteActionGroup2>
     </timelineViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod b/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod
index cb982f79c428d8fb7ba3162078ae95e24850197f..fd67ceed29eb81b3dcee171af5119d624b3ff615 100644
--- a/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod
+++ b/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityAnalyses_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/ActivityDetail_view/ActivityDetail_view.aod b/neonView/ActivityDetail_view/ActivityDetail_view.aod
index 559c6a6620b642c48d34a44656ea06a6961c05d8..95192a1406ad14b83b8a99cdb152fde8f47eeec8 100644
--- a/neonView/ActivityDetail_view/ActivityDetail_view.aod
+++ b/neonView/ActivityDetail_view/ActivityDetail_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityDetail_view</name>
   <title>Description</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/ActivityDrawer_view/ActivityDrawer_view.aod b/neonView/ActivityDrawer_view/ActivityDrawer_view.aod
index eeacf167c5eed8c60fe59b20ac9c6705763c9e62..63f7f3f3b83b9307b93a271b5b548f8393b44f84 100644
--- a/neonView/ActivityDrawer_view/ActivityDrawer_view.aod
+++ b/neonView/ActivityDrawer_view/ActivityDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ActivityEdit_view/ActivityEdit_view.aod b/neonView/ActivityEdit_view/ActivityEdit_view.aod
index 2c8b44325c1533b44c0a6eb4d28b1137725a912f..1ad3a620d03322bd972f6de059140bf7db579c56 100644
--- a/neonView/ActivityEdit_view/ActivityEdit_view.aod
+++ b/neonView/ActivityEdit_view/ActivityEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityEdit_view</name>
   <title>Activity</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/ActivityFilter_view/ActivityFilter_view.aod b/neonView/ActivityFilter_view/ActivityFilter_view.aod
index c942d1bd6b03b9a76c8a9ed2ca1f08d3f7476f0c..3b3a87820a5d349e2e9ead5d7304aa8349ddbdaa 100644
--- a/neonView/ActivityFilter_view/ActivityFilter_view.aod
+++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -56,6 +56,8 @@
       <iconIdField>#IMAGE</iconIdField>
       <hideTime v="true" />
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>filterActions</favoriteActionGroup1>
+      <favoriteActionGroup2>MSTeamsActions</favoriteActionGroup2>
     </timelineViewTemplate>
     <tableViewTemplate>
       <name>ActivitiesTable</name>
@@ -64,6 +66,8 @@
       <subtitleField>ENTRYDATE</subtitleField>
       <descriptionField>DIRECTION</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>filterActions</favoriteActionGroup1>
+      <favoriteActionGroup2>MSTeamsActions</favoriteActionGroup2>
       <linkedColumns>
         <element>SUBJECT</element>
       </linkedColumns>
@@ -86,13 +90,15 @@
         </neonTableColumn>
         <neonTableColumn>
           <name>692a655b-18f5-4323-8d87-ee42726bed38</name>
-          <entityField>INFO</entityField>
+          <entityField>infoTable</entityField>
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>ActivitiesTreeTable</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>filterActions</favoriteActionGroup1>
+      <favoriteActionGroup2>MSTeamsActions</favoriteActionGroup2>
       <columns>
         <neonTreeTableColumn>
           <name>cdf48078-3766-4d45-8bfb-e17e472e32d6</name>
diff --git a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
index cd41eab6d6697bdcecbda5672f7be9b89f9945e2..ccb7bcc45f849b093bcc10619447024c03385c9c 100644
--- a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
+++ b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityLinkFilter_view</name>
   <title>Connections</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -11,8 +11,8 @@
   <children>
     <tableViewTemplate>
       <name>Objects</name>
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
           <name>2cf427f2-2dcd-4e4e-9f5c-82f103f9cf86</name>
diff --git a/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod b/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod
index 519a822a81ea71a2e352c8dc883bb6e00decd177..a275e4300d05577a7e7e5a1f74d1329af3db1d1e 100644
--- a/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod
+++ b/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityLinkMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod b/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod
index a34c9e28d9fce5933352e59ba23dce3384e3e896..dba4647aeeb762e9f22966a831b0d2fdf20cd597 100644
--- a/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod
+++ b/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityLinkPreviewList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod b/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod
index ecea997484bf7fa0c1e38f56f5325ba030cc92be..72b7ef551f446211a0ea68387f10212267a56714 100644
--- a/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod
+++ b/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityLinkPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ActivityMain_view/ActivityMain_view.aod b/neonView/ActivityMain_view/ActivityMain_view.aod
index 39972c2097c29e5324346dea1a57b55de993088f..19b722bfa2bdadd100254525a78a28432f7e9619 100644
--- a/neonView/ActivityMain_view/ActivityMain_view.aod
+++ b/neonView/ActivityMain_view/ActivityMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod b/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod
index d9b91e1b27b2dc1721c68ff721f654a61ee434eb..ab6a19d36a37e2ccb3f4bd5955532320b74e9ae3 100644
--- a/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod
+++ b/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ActivityPreview_view/ActivityPreview_view.aod b/neonView/ActivityPreview_view/ActivityPreview_view.aod
index b02a9a3bed585dc7b0bcf844da5735baf701a741..eb0662c53e5fa9c46e2fdaf3c1630de47ff94199 100644
--- a/neonView/ActivityPreview_view/ActivityPreview_view.aod
+++ b/neonView/ActivityPreview_view/ActivityPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod b/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod
index 3b8adc8d670298ed7d6780ea1b2f44c5aea102bf..35f2991a07c02c4d43a8d712481ef4763f53fa6a 100644
--- a/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod
+++ b/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ActivityUniversalFileProcessorFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -38,7 +38,7 @@
         </neonTableColumn>
         <neonTableColumn>
           <name>a32a87b0-79ed-4774-9331-a814298c4ee8</name>
-          <entityField>INFO</entityField>
+          <entityField>infoTable</entityField>
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
diff --git a/neonView/AddressList_view/AddressList_view.aod b/neonView/AddressList_view/AddressList_view.aod
index a9f9b3c6b85db0c0fb33bacd402597b8e22c5062..a3e85b279b9f2af3724d5715227deef394c7d30b 100644
--- a/neonView/AddressList_view/AddressList_view.aod
+++ b/neonView/AddressList_view/AddressList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AddressList_view</name>
   <description>Org addresses</description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -62,10 +62,6 @@
           <name>aafc58cf-7dbb-42cb-b04c-d0869e58d09a</name>
           <entityField>STATE</entityField>
         </neonTitledListTableColumn>
-        <neonTitledListTableColumn>
-          <name>29dbb3f5-6f80-4100-aed3-334ac0b9cc48</name>
-          <entityField>REGION</entityField>
-        </neonTitledListTableColumn>
         <neonTitledListTableColumn>
           <name>6e369a01-965f-41d9-9b0a-6128a3827e47</name>
           <entityField>ADDRESSADDITION</entityField>
@@ -82,6 +78,10 @@
           <name>9c37669e-e577-44b9-b43f-3734b88de205</name>
           <entityField>LON</entityField>
         </neonTitledListTableColumn>
+        <neonTitledListTableColumn>
+          <name>e8feb907-9f2e-42d9-93fe-ef7ccf11d384</name>
+          <entityField>formattedAddress</entityField>
+        </neonTitledListTableColumn>
       </columns>
     </titledListViewTemplate>
   </children>
diff --git a/neonView/AddressLookup_view/AddressLookup_view.aod b/neonView/AddressLookup_view/AddressLookup_view.aod
index 42904c5f4c1d46ae54104732a610fa9e2d68e53a..dc7bde3fd3d4439ea589e6f003a24c0852c3bf76 100644
--- a/neonView/AddressLookup_view/AddressLookup_view.aod
+++ b/neonView/AddressLookup_view/AddressLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AddressLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod b/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod
index faa7531a91085f2022c567441aaa0c9a089d8507..fa53f54f1ac663b38d09708b2c4623a61b52e579 100644
--- a/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod
+++ b/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AddressOrgMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod b/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod
index c785e09dc8d920c3d053df91cb460f4767f637ff..c64330a9cbedcdbde366b59227d1f108f5dc59a4 100644
--- a/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod
+++ b/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AddressValidationLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AdminViewRow_view/AdminViewRow_view.aod b/neonView/AdminViewRow_view/AdminViewRow_view.aod
index 77687eeb449caccd5a06c77147bd6a7cb9b39241..c2593cbed32c607d724a197f08a3e7eaeec2e564 100644
--- a/neonView/AdminViewRow_view/AdminViewRow_view.aod
+++ b/neonView/AdminViewRow_view/AdminViewRow_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AdminViewRow_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
index 72a12761582aceb0ca1b492f8c2f91fab00c0f1d..3bcfaf74c4c37ba27867f7ac478647fc9572131c 100644
--- a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
+++ b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AdressMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod b/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod
index a4d400cb1bbad50cb2927efa6e19b04cff113387..81b6dfc5414148493a786f64c140c6856e2da7c5 100644
--- a/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod
+++ b/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AnyContactDuplicates_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AnyContactLookup_view/AnyContactLookup_view.aod b/neonView/AnyContactLookup_view/AnyContactLookup_view.aod
index f7d62ecfdeb75651e1422b92e00aa3ab1f15260f..f7eada4ddd36d3071ef516f48a7e936972a41d8d 100644
--- a/neonView/AnyContactLookup_view/AnyContactLookup_view.aod
+++ b/neonView/AnyContactLookup_view/AnyContactLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AnyContactLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod b/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod
deleted file mode 100644
index e6fc96ef835f20a69906295250ac20b9bdaa8076..0000000000000000000000000000000000000000
--- a/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod
+++ /dev/null
@@ -1,19 +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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
-  <name>AnyObjectRelationTree_view0</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-    </boxLayout>
-  </layout>
-  <children>
-    <treeViewTemplate>
-      <name>AnyObjectRelations</name>
-      <parentField>AnyObjectType</parentField>
-      <titleField>AnyObjectRowid</titleField>
-      <entityField>#ENTITY</entityField>
-      <title></title>
-    </treeViewTemplate>
-  </children>
-</neonView>
diff --git a/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod b/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod
index 2f0d24434258b16044f8fdc29140eebe92826d47..68ccb50f6f9b6d648fd39c083843f00caa80784c 100644
--- a/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod
+++ b/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AppointmentCheckUp_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <dashletConfigurations>
diff --git a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod
index 6a2413b69536c3aba9a3aeb49a639b66ffe12c27..0278e0201bc50ba382f4c04a00332bdda8c1bfc9 100644
--- a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod
+++ b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AppointmentEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/neonView/AppointmentEdit_view/documentation.adoc</documentation>
diff --git a/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod b/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod
index 216efdb870d880a44a1b1eacf3a291780a934001..0930b8771599b1a70689872d740da206e3cdc2e8 100644
--- a/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod
+++ b/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AppointmentFilterDashlet_view</name>
   <title>Linked Appointments</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -36,10 +36,10 @@
   <children>
     <tableViewTemplate>
       <name>Table</name>
+      <autoNewRow v="false" />
       <entityField>#ENTITY</entityField>
       <isDeletable v="false" />
       <isEditable v="false" />
-      <autoNewRow v="false" />
       <columns>
         <neonTableColumn>
           <name>0aa3d147-674f-4765-826e-f97a4b48dc8a</name>
diff --git a/neonView/AppointmentFilter_view/AppointmentFilter_view.aod b/neonView/AppointmentFilter_view/AppointmentFilter_view.aod
index b21399ee35fb4f60d3c0bdbcbb32f33681b19f6d..fc4dc013c156648cf77a5a9893adb7ba741a6803 100644
--- a/neonView/AppointmentFilter_view/AppointmentFilter_view.aod
+++ b/neonView/AppointmentFilter_view/AppointmentFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AppointmentFilter_view</name>
   <title>Linked Appointments</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod b/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod
index 58da5f40fd75a4a096016e09943143685ce1606e..dda4bf55decc3b2d66bb7f82e9e33e169a154a4c 100644
--- a/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod
+++ b/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AppointmentLinkEdit_view</name>
   <title>relations</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod b/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod
index 993d5d1ea5fe1fdca1a894199dfcab87f0f5b696..f2710524d65897538b6b49d4d5f45be80f690256 100644
--- a/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod
+++ b/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AppointmentLinkFilter_view</name>
   <title>relations</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
index ccd565c6be34430650ef372a40ab483f3e631ea0..e01ad9965305815cd207a4ac30ed93d47793e4b0 100644
--- a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
+++ b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AppointmentPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/neonView/AppointmentPreview_view/documentation.adoc</documentation>
diff --git a/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod b/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod
index 0dbf0677ac4c6abd92ea9311253263ad5621255b..913b456459541c8a1e75145ed1cf7ddb5e336d0c 100644
--- a/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod
+++ b/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AroundLocationHeader_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod b/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod
index 72811993d340e51288512b2d4313511206a334cc..00b9af66f758a7dd22435376bafae0e59540707a 100644
--- a/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod
+++ b/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AroundOrganisationFooter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod b/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod
index 7fa9102fcc0309b2ee211c02104f57fe737431ce..bd7d2fcd18b1451bcb0f97c85e195b6690745846 100644
--- a/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod
+++ b/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AroundOrganisationLocation_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
diff --git a/neonView/AttributeEdit_view/AttributeEdit_view.aod b/neonView/AttributeEdit_view/AttributeEdit_view.aod
index 310d74e958e46165116b54c31513c5a2e8981c6e..b044f7e623aeced5b67fa99ae4e45ec094e42e05 100644
--- a/neonView/AttributeEdit_view/AttributeEdit_view.aod
+++ b/neonView/AttributeEdit_view/AttributeEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/AttributeFilter_view/AttributeFilter_view.aod b/neonView/AttributeFilter_view/AttributeFilter_view.aod
index 7b18cb006369111f800f4074ef01c108c27bdac4..41d0b35cc6111b4bf889ef6efecd30eab14c737d 100644
--- a/neonView/AttributeFilter_view/AttributeFilter_view.aod
+++ b/neonView/AttributeFilter_view/AttributeFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeFilter_view</name>
   <title>Attributes</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -13,11 +13,11 @@
     <treeTableViewTemplate>
       <name>AttributeTreeTable</name>
       <parentField>ATTRIBUTE_PARENT_ID</parentField>
-      <favoriteActionGroup1>AttributeActions</favoriteActionGroup1>
       <nodeExpandedField>expanded</nodeExpandedField>
       <hideContentSearch v="false" />
       <showChildrenCount v="false" />
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>AttributeActions</favoriteActionGroup1>
       <columns>
         <neonTreeTableColumn>
           <name>169aceb2-2ff8-42de-ab89-4d3cc15d5747</name>
diff --git a/neonView/AttributeList_view/AttributeList_view.aod b/neonView/AttributeList_view/AttributeList_view.aod
index 71c6f4b999eb1b236ec46fbbf47bfbef4a687404..b424b24f6e60b4e1051af138961f69727db9d08b 100644
--- a/neonView/AttributeList_view/AttributeList_view.aod
+++ b/neonView/AttributeList_view/AttributeList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -12,8 +12,8 @@
       <name>AttributeList</name>
       <entityField>#ENTITY</entityField>
       <isDeletable v="false" />
-      <isEditable v="false" />
       <isCreatable v="false" />
+      <isEditable v="false" />
       <columns>
         <neonTitledListTableColumn>
           <name>96544713-a302-4e2f-ab7f-6c02d44d9908</name>
diff --git a/neonView/AttributeLookup_view/AttributeLookup_view.aod b/neonView/AttributeLookup_view/AttributeLookup_view.aod
index 0abd15c3e222b22856bf2739b43e74c3df745ce4..b09289feb8283465fba38ca839695ec6a728c3b3 100644
--- a/neonView/AttributeLookup_view/AttributeLookup_view.aod
+++ b/neonView/AttributeLookup_view/AttributeLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod b/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod
index ce138e8b5931ab5063dfad9d296ae76ba693093d..8436964dac5721de29d337c2416c15aa533043c1 100644
--- a/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod
+++ b/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributePreview_view/AttributePreview_view.aod b/neonView/AttributePreview_view/AttributePreview_view.aod
index 6677b9e8eca6962141fecf6285803a687474150e..f67e3446e9f0e69ccd76b19766edc7144e7c394b 100644
--- a/neonView/AttributePreview_view/AttributePreview_view.aod
+++ b/neonView/AttributePreview_view/AttributePreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributePreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod b/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod
index 4996c55d00b9223ac199753962c4f84c6580062a..2fa36fe2935dec6003a63e364629be8f3acc6828 100644
--- a/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod
+++ b/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeRelationMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod
index 04ae8c35a3ca8a8fcf6d639c08f5dc8a5eddf09b..9be6816f386feb6dddd4c62b35f37dede59f6cf5 100644
--- a/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod
+++ b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeRelationPreviewList</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -18,6 +18,10 @@
           <name>ec5ceac7-a2d4-4912-b04b-adc83d3e9589</name>
           <entityField>VALUE</entityField>
         </neonTitledListTableColumn>
+        <neonTitledListTableColumn>
+          <name>2ec9274b-a800-4a38-8139-418543161be2</name>
+          <entityField>VALUE_LOOKUP</entityField>
+        </neonTitledListTableColumn>
       </columns>
     </titledListViewTemplate>
   </children>
diff --git a/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod b/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod
index 0a721f3a75692ec7537302096fa8986c77497c92..fa2d33e968c344663f7be74964f7a121e62bb6d5 100644
--- a/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod
+++ b/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeRelationTreeDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod
index 11f0be4ad61e05a80a9778f4d4f7ecba84700008..8a621673040dd63deba7c393f121c659431f061f 100644
--- a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod
+++ b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeRelationTreeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod b/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod
index de545b59667e67ac2df0c71fe272f22c93b987fa..306acbe32f919565afb6fcccbb0b9a86584fc86b 100644
--- a/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod
+++ b/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeRelationTree_view</name>
   <title>Attributes</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/AttributeTree_view/AttributeTree_view.aod b/neonView/AttributeTree_view/AttributeTree_view.aod
index 4485456b82f897c0def869129ff57d4745d00833..7e332f41a6a59d888e330fb8cc6f0c0b02ebdd71 100644
--- a/neonView/AttributeTree_view/AttributeTree_view.aod
+++ b/neonView/AttributeTree_view/AttributeTree_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeTree_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributeUsageList_view/AttributeUsageList_view.aod b/neonView/AttributeUsageList_view/AttributeUsageList_view.aod
index 856a329d1ef536aadb3ec8961168ee06bc63a381..a23578a1ef0901bdd9e2644213a24e8ba7905655 100644
--- a/neonView/AttributeUsageList_view/AttributeUsageList_view.aod
+++ b/neonView/AttributeUsageList_view/AttributeUsageList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeUsageList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod b/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod
index 5bb2bc37b0d7aa7aab449cf02625ab90e588b9c7..785f7ae64d93542997b96f963f811494753f083b 100644
--- a/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod
+++ b/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AttributeUsageMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod b/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod
index c29afae20f977acca16667a0de832a6496ceccfe..14a502c8aafe105977242fa88f88f0a776ea5757 100644
--- a/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod
+++ b/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>AuditLogHistoryFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod
index 2eef718c2b4bf2c5415a4b885ffc5877d801e29c..4ecfda58d231870c07359fe28fb481de5cd1d367 100644
--- a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod
+++ b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>BulkMailAddRecipientsEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/BulkMailContent_view/BulkMailContent_view.aod b/neonView/BulkMailContent_view/BulkMailContent_view.aod
index 6c3878a60912960b18273a5a0ceef34152cc1993..a35b7aa6a057a876c531eadf2bccb463c190b89b 100644
--- a/neonView/BulkMailContent_view/BulkMailContent_view.aod
+++ b/neonView/BulkMailContent_view/BulkMailContent_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>BulkMailContent_view</name>
   <title>Content</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/BulkMailEdit_view/BulkMailEdit_view.aod b/neonView/BulkMailEdit_view/BulkMailEdit_view.aod
index 6677a955a9bf2d440e06de8270bf4992b5e42bb3..2dbb4bea8358d3d2e1ea6f9ba29c0cc39c26e39d 100644
--- a/neonView/BulkMailEdit_view/BulkMailEdit_view.aod
+++ b/neonView/BulkMailEdit_view/BulkMailEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>BulkMailEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/BulkMailFilter_view/BulkMailFilter_view.aod b/neonView/BulkMailFilter_view/BulkMailFilter_view.aod
index fafdd0a86a999ba4e641abd7f1762cbe76aabf1f..b8e876f95b28c5fc9ba8d93f6a171f09cd9add87 100644
--- a/neonView/BulkMailFilter_view/BulkMailFilter_view.aod
+++ b/neonView/BulkMailFilter_view/BulkMailFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>BulkMailFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/BulkMailMain_view/BulkMailMain_view.aod b/neonView/BulkMailMain_view/BulkMailMain_view.aod
index 91a0c16c22f12b5341e7c0d28018026667aee5ca..5b05276c93901121cfd9cd663f1961454d76b4c2 100644
--- a/neonView/BulkMailMain_view/BulkMailMain_view.aod
+++ b/neonView/BulkMailMain_view/BulkMailMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>BulkMailMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/BulkMailPreview_view/BulkMailPreview_view.aod b/neonView/BulkMailPreview_view/BulkMailPreview_view.aod
index 42fee67eccdd9e73f5f422e67c71af9328ea912a..48b1894a84256da8c10d96df4dbb7aea0e9957ab 100644
--- a/neonView/BulkMailPreview_view/BulkMailPreview_view.aod
+++ b/neonView/BulkMailPreview_view/BulkMailPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>BulkMailPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod
index 5ea684474bebb516e1c7d4ed97b7c1695fab391a..6f3cea1d692822fb14d49cf4f2f3aa2272c74f10 100644
--- a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod
+++ b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>BulkMailRecipientEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod
index 5a52f85478b83025dc9063d798f92c0c5de2022a..9727da8fb78f8ff1ba6abd6414ffe00bbf0a4ffd 100644
--- a/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod
+++ b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>BulkMailRecipientFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -11,10 +11,10 @@
   <children>
     <tableViewTemplate>
       <name>Table</name>
-      <favoriteActionGroup1>recipientActions</favoriteActionGroup1>
       <inlineEdit v="true" />
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>recipientActions</favoriteActionGroup1>
       <columns>
         <neonTableColumn>
           <name>eadd8b00-f4a8-4634-bcc7-9bd5c6dbc876</name>
@@ -40,8 +40,8 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
-      <favoriteActionGroup1>recipientActions</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>recipientActions</favoriteActionGroup1>
       <columns>
         <neonTreeTableColumn>
           <name>b2b619e2-3626-4ce4-8840-37a87af0657f</name>
diff --git a/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod b/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod
index 17be87967675725ddc46ee71bd989a498454c4e2..97b6afb3a94a0742b398c37bfa8b02f123301f20 100644
--- a/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod
+++ b/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>BulkMailStatusChart_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod
index 2fda589cb414b4c3d63f6da34ecc882fdca5f9cd..9d6f129cc68388f95f5bb09396c798204b7cd085 100644
--- a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod
+++ b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>BulkMailTesting_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod b/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod
index c4d7749e7fa28515b77617fc62dc2bfc7c680337..c0e5b31af8f217c20ff51eef4a8c348f132506c5 100644
--- a/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod
+++ b/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignAddParticipantsEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/CampaignCharts_view/CampaignCharts_view.aod b/neonView/CampaignCharts_view/CampaignCharts_view.aod
index 1ca293d2d748851cc6e22a38d0cc93b4bc9be876..2d3d278d67d1d8ef855d91877c5b4bc5a7f19de2 100644
--- a/neonView/CampaignCharts_view/CampaignCharts_view.aod
+++ b/neonView/CampaignCharts_view/CampaignCharts_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignCharts_view</name>
   <title>Overview</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod b/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod
index 4405b5b2479c44065d0ee0e23104b0ae1771ee47..aa30d4eb8b528b30113311fdf964e32d8655f25a 100644
--- a/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod
+++ b/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignCostAnalysis_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod
index 7250ffc8f373110a85c77e339b0becab8b491d21..79fa24a99a23064c9911773632f1e97b2261104b 100644
--- a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod
+++ b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignCostChart_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <dashletConfigurations>
diff --git a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
index 82b672034ded4cf58a884abd7326d3630ebe7516..69be24924b78f37d004e352444edb99be0c2f6ec 100644
--- a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
+++ b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignCostEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod b/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod
index ef68f8add69e1c2538b754152449da9ce7ae5af4..ad056faf6ead47d348df95f92d938ac2b0fc0c12 100644
--- a/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod
+++ b/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignCostExtendedFilter_view</name>
   <title>Stop costs</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -13,6 +13,8 @@
     <tableViewTemplate>
       <name>CampaignCost</name>
       <entityField>#ENTITY</entityField>
+      <linkedColumns />
+      <fixedFilterFields />
       <columns>
         <neonTableColumn>
           <name>5202d410-fc4d-4109-93b1-8743954a25e2</name>
diff --git a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
index 4962588f3b299536e2697adfaefa0df02e2b2305..a3fb49574a351e099bfb8cb106b7623e000dbc8f 100644
--- a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
+++ b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignCostFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
@@ -12,6 +12,8 @@
     <tableViewTemplate>
       <name>CampaignCost</name>
       <entityField>#ENTITY</entityField>
+      <linkedColumns />
+      <fixedFilterFields />
       <columns>
         <neonTableColumn>
           <name>651c5bd4-8f87-40d4-9d1f-38549b1e5fdf</name>
@@ -26,6 +28,9 @@
     <treeTableViewTemplate>
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
+      <linkedColumns />
+      <defaultGroupFields />
+      <fixedFilterFields />
       <columns>
         <neonTreeTableColumn>
           <name>9d36a33f-b619-4922-9811-acd73bf67b22</name>
diff --git a/neonView/CampaignCostFix_view/CampaignCostFix_view.aod b/neonView/CampaignCostFix_view/CampaignCostFix_view.aod
index 710331794c9643264aecd8b4c1332f6c4e46cd04..b8a89784ba4499d3c8253463454e14057bd6c6d6 100644
--- a/neonView/CampaignCostFix_view/CampaignCostFix_view.aod
+++ b/neonView/CampaignCostFix_view/CampaignCostFix_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignCostFix_view</name>
   <title>Fix costs</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -14,6 +14,8 @@
     <tableViewTemplate>
       <name>CampaignCostFix</name>
       <entityField>#ENTITY</entityField>
+      <linkedColumns />
+      <fixedFilterFields />
       <columns>
         <neonTableColumn>
           <name>1b2b3ce3-eaff-472b-a873-5e054adac89a</name>
diff --git a/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod b/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod
index cdef7ed10359f12f48c2e7145b9bc330b5407325..7507fe7d11d6716d17c4807e5347989cc944b3c5 100644
--- a/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod
+++ b/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignCostVariable_view</name>
   <title>Step costs</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -15,9 +15,11 @@
     <treeTableViewTemplate>
       <name>CostTreeTable</name>
       <entityField>#ENTITY</entityField>
+      <linkedColumns />
       <defaultGroupFields>
         <element>CAMPAIGNSTEP_ID</element>
       </defaultGroupFields>
+      <fixedFilterFields />
       <columns>
         <neonTreeTableColumn>
           <name>457caff8-0403-425f-839c-62e5d05fe3a1</name>
@@ -26,10 +28,12 @@
         <neonTreeTableColumn>
           <name>2adbd887-f1df-43ff-bde9-12c8273af7a9</name>
           <entityField>NET</entityField>
+          <aggregateEntityField>NET_aggregate</aggregateEntityField>
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>f8c6439c-9536-477b-af19-26719902e12e</name>
           <entityField>netPerParticipant</entityField>
+          <aggregateEntityField>NETPERPARTICIPANT_aggregate</aggregateEntityField>
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>8239e81b-d69c-4ea9-b55d-83e79d1693cf</name>
diff --git a/neonView/CampaignCost_view/CampaignCost_view.aod b/neonView/CampaignCost_view/CampaignCost_view.aod
index 1272ec645f226370acb5d1322215e46687483b09..6172d3f252ad00ca416c90e0846e5107d8e9c21c 100644
--- a/neonView/CampaignCost_view/CampaignCost_view.aod
+++ b/neonView/CampaignCost_view/CampaignCost_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignCost_view</name>
   <title>Cost</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/CampaignEdit_view/CampaignEdit_view.aod b/neonView/CampaignEdit_view/CampaignEdit_view.aod
index a7271844b7a7c6b676be570c1d16eaf3acd4af0a..3555b23ecc971651808d4f33dfb6e1048efccdc4 100644
--- a/neonView/CampaignEdit_view/CampaignEdit_view.aod
+++ b/neonView/CampaignEdit_view/CampaignEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignEdit_view</name>
   <title>Campaign</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/CampaignFilter_view/CampaignFilter_view.aod b/neonView/CampaignFilter_view/CampaignFilter_view.aod
index 251fae2fce511b41454347cd8e36810d33a77f71..eb815faa0960c8179d3a30f1dac5f60992128192 100644
--- a/neonView/CampaignFilter_view/CampaignFilter_view.aod
+++ b/neonView/CampaignFilter_view/CampaignFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignFilter_view</name>
   <title>Campaign</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -56,6 +56,7 @@
     <tableViewTemplate>
       <name>Campaigns</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>NAME</element>
       </linkedColumns>
@@ -94,6 +95,7 @@
     <treeTableViewTemplate>
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>NAME</element>
       </linkedColumns>
diff --git a/neonView/CampaignMain_view/CampaignMain_view.aod b/neonView/CampaignMain_view/CampaignMain_view.aod
index b9c3a7e101e63c8421f6dfe00e74624902ec1288..812508aa6ea4d0e13af4d1ee20398863fa870c88 100644
--- a/neonView/CampaignMain_view/CampaignMain_view.aod
+++ b/neonView/CampaignMain_view/CampaignMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignMain_view</name>
   <title>Campaign</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -46,11 +46,6 @@
       <entityField>Activities</entityField>
       <view>ActivityFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>e28e5598-9366-4f5a-be8f-70dd3cc0399a</name>
-      <entityField>Tasks</entityField>
-      <view>TaskFilter_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>3b87a113-aa39-4d20-8902-ad2a9f6aba5f</name>
       <entityField>Documents</entityField>
diff --git a/neonView/CampaignOverview_view/CampaignOverview_view.aod b/neonView/CampaignOverview_view/CampaignOverview_view.aod
index d0855732e6dbbaca022b1c820cedfedb1018fd7b..8d48635c048e2ba5b327d5004610dc1ce02071ac 100644
--- a/neonView/CampaignOverview_view/CampaignOverview_view.aod
+++ b/neonView/CampaignOverview_view/CampaignOverview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignOverview_view</name>
   <title>Overview</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod b/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod
index 33766f0cf1bf4193794f4f8e66d5849dfc492762..10f2275e319aaa7c582324be30523367a902ecee 100644
--- a/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod
+++ b/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignParticipantChart_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod
index 72e0dfacaddca1684bb5384ef485def55746dcd5..03b8a91be27a2147d25b3ae197809bc4f609f923 100644
--- a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod
+++ b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignParticipantEdit_view</name>
   <title>Add participant to Campaign</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -14,6 +14,7 @@
   <children>
     <scoreCardViewTemplate>
       <name>CampaignStepInfos_Score</name>
+      <fieldActions />
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
@@ -41,9 +42,13 @@
           <entityField>CAMPAIGNSTEP_ID</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>94aa9a4d-e2e5-4a1b-b6f8-4d5aed87fe53</name>
+          <name>65fd8c83-7990-4109-8a08-5c0c56cb3426</name>
           <entityField>CONTACT_ID</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>572ffba6-15c8-4d82-8f78-7e03ca1215ce</name>
+          <entityField>RESPONSIBLE_CONTACT_ID</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
   </children>
diff --git a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod
index b3148ca25c40c1766c434927b0412c484c8a0d82..782eef3db5e35cd7b4d443a0c9e8821ace1c5045 100644
--- a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod
+++ b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignParticipantFilter_view</name>
   <title></title>
   <description></description>
@@ -13,8 +13,10 @@
   <children>
     <tableViewTemplate>
       <name>ParticipantsTable</name>
-      <favoriteActionGroup1>FilterViewActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>FilterViewActionGroup</favoriteActionGroup1>
+      <linkedColumns />
+      <fixedFilterFields />
       <isCreatable v="true" />
       <isEditable v="true" />
       <columns>
@@ -24,12 +26,20 @@
         </neonTableColumn>
         <neonTableColumn>
           <name>0b6dd644-a692-4c1a-9ab7-c38608e63eac</name>
-          <entityField>CONTACT_ID</entityField>
+          <entityField>PERSON_CONTACT_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>74ef2d05-72d0-4406-915d-0c0facd351c2</name>
+          <entityField>ORGANISATION_CONTACT_ID</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>1649e2e9-e3b3-4a41-960d-39002cb6b2d8</name>
           <entityField>CAMPAIGNSTEP_ID</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>19da14e0-31c5-4a2a-9291-d0b5b4bd0fc4</name>
+          <entityField>RESPONSIBLE_CONTACT_ID</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>20c9aed5-cf30-484b-a68b-c1f6ca0459db</name>
           <entityField>STANDARD_EMAIL_COMMUNICATION</entityField>
@@ -42,8 +52,11 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
-      <favoriteActionGroup1>FilterViewActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>FilterViewActionGroup</favoriteActionGroup1>
+      <linkedColumns />
+      <defaultGroupFields />
+      <fixedFilterFields />
       <columns>
         <neonTreeTableColumn>
           <name>9ded1920-58ef-4fc1-ac92-07522c7c06d4</name>
@@ -51,12 +64,20 @@
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>f406134b-b1c3-4fae-9f6d-771827d0fb01</name>
-          <entityField>CONTACT_ID</entityField>
+          <entityField>PERSON_CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>4c485b2e-bf95-4205-8e01-bcf4edbc5a03</name>
+          <entityField>ORGANISATION_CONTACT_ID</entityField>
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>c7831772-15e4-49bb-ba84-647136c3002e</name>
           <entityField>CAMPAIGNSTEP_ID</entityField>
         </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8c5c3311-0127-4977-af27-8ab582d08733</name>
+          <entityField>RESPONSIBLE_CONTACT_ID</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>664cb6d0-48f9-48bf-9934-2fdb40501771</name>
           <entityField>STANDARD_EMAIL_COMMUNICATION</entityField>
diff --git a/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod b/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod
index 6a33444d49977194c61460ba92cb8f6cf0a5bb63..059b2d9f3a18cfd4b89ebd1f85f6a1363e09360c 100644
--- a/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod
+++ b/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignParticipantPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CampaignPlanning_view/CampaignPlanning_view.aod b/neonView/CampaignPlanning_view/CampaignPlanning_view.aod
index 3a6df29eef7cad1a1e0de0e479314247d4a6495f..48b886b92c0f8ab819e76bb8757cbc3012d98bb4 100644
--- a/neonView/CampaignPlanning_view/CampaignPlanning_view.aod
+++ b/neonView/CampaignPlanning_view/CampaignPlanning_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignPlanning_view</name>
   <title>Campaign planning</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -19,8 +19,8 @@
       <beginDateField>DATE_START</beginDateField>
       <endDateField>DATE_END</endDateField>
       <predecessorIdField>PREDECESSOR_STEP_ID</predecessorIdField>
-      <favoriteActionGroup2>NewGanttEntries</favoriteActionGroup2>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup2>NewGanttEntries</favoriteActionGroup2>
       <isDeletable v="true" />
       <isEditable v="true" />
       <columns>
diff --git a/neonView/CampaignPreview_view/CampaignPreview_view.aod b/neonView/CampaignPreview_view/CampaignPreview_view.aod
index 0433154d474e0d4ed5091ea98468fba6a54c6ec6..ec8f409750341079fcb3b9df759203224d129457 100644
--- a/neonView/CampaignPreview_view/CampaignPreview_view.aod
+++ b/neonView/CampaignPreview_view/CampaignPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignPreview_view</name>
   <title>Campaign</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod b/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod
index 245fb496dc22e1e771f27f4f30abf58f1057dc2d..0015c6163543ca006dc65f8310ec541e85c39dc3 100644
--- a/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod
+++ b/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignStepAddParticipants_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod b/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod
index 0404e066350dfa13fae736238af9060fcf7068cf..092334c8ff7d6d58bb290eeedad561b27085f789 100644
--- a/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod
+++ b/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignStepAnalysis_view</name>
   <title>Evaluation</title>
   <description>Charts als Ãœbersicht der Kosten des Kampagnenschrittes</description>
diff --git a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod
index af0403664b91272e1fca35e46255dca705b400b4..e849bc1b35efb5ab59e82109752d4c5af5d7c418 100644
--- a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod
+++ b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignStepEdit_view</name>
   <title>New campaign step</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod
index f8ace2f468b1690b8bb6df8dde445e93bdb20fe8..72287ed6b7dc4f58834fc89f9fe25f553ebc5e5f 100644
--- a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod
+++ b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod
@@ -1,10 +1,10 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignStepFilter_view</name>
   <title>Campaign steps </title>
   <description></description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterable v="false" />
+  <filterable v="true" />
   <layout>
     <groupLayout>
       <name>layout</name>
@@ -13,10 +13,9 @@
   <children>
     <tableViewTemplate>
       <name>StepsTable</name>
-      <inlineEdit v="true" />
+      <autoNewRow v="true" />
       <entityField>#ENTITY</entityField>
       <isEditable v="true" />
-      <autoNewRow v="true" />
       <columns>
         <neonTableColumn>
           <name>5fea2adf-3005-4af0-b83a-a1c932f33a64</name>
@@ -30,6 +29,10 @@
           <name>d9ca59de-1441-494a-91f0-1cff91c575de</name>
           <entityField>NAME</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>166b2a17-1142-4c1d-b403-362afb227469</name>
+          <entityField>PREDECESSORSTEP_ID</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>75d15a06-1591-4f5c-9be6-df98e32e3834</name>
           <entityField>EMPLOYEE_CONTACT_ID</entityField>
diff --git a/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod b/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod
index 85ad77be17803e737e71d50126ae5460489ccfeb..60918090dec2f41226b9b5b7e66ac79e17902a47 100644
--- a/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod
+++ b/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignStepLookup_view</name>
   <title>Caimpaignsteps</title>
   <description></description>
@@ -12,8 +12,8 @@
   <children>
     <tableViewTemplate>
       <name>StepsTable</name>
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <title></title>
       <columns>
         <neonTableColumn>
diff --git a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
index 461ae82601ef81afc8cbe003078b613d26173309..52fac9adc94ee0bb918fe8b0de1c91f09b4b6f61 100644
--- a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
+++ b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignStepMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod b/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..e11db29e24c4128c55e21f6686762e87d85931a9
--- /dev/null
+++ b/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod
@@ -0,0 +1,10 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>CampaignStepMembers_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+</neonView>
diff --git a/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod b/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod
index 7b1fbeae783c482a6acb628d28cb691a584dac3f..9ff58eaf033c269cb2b282932208c3dc1f2ca621 100644
--- a/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod
+++ b/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignStepParticipnatsPerStep_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod
index f3e9b0141c19c6ecbb453aeda329e32989e9a80b..43a0e4daf113bbd734ec4929b61ffdf2e3c317c8 100644
--- a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod
+++ b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignStepPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -50,19 +50,12 @@
           <name>f7ddecfb-60bc-4a94-8905-7da729b32acd</name>
           <entityField>STEPMEDIUM</entityField>
         </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
-    <genericViewTemplate>
-      <name>CampaignId</name>
-      <editMode v="false" />
-      <entityField>#ENTITY</entityField>
-      <fields>
         <entityFieldLink>
-          <name>cee78c4b-bbac-458a-ab1c-53734ea8c7f0</name>
+          <name>4056e92a-6c5c-4a24-b0f6-dc2a5aa798d4</name>
           <entityField>CAMPAIGN_ID</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>0bffa6f8-cb18-47f8-a8f4-08cf9d718114</name>
+          <name>32c55d58-72c7-4af0-9236-a019149656d4</name>
           <entityField>CampaignStatus</entityField>
         </entityFieldLink>
       </fields>
diff --git a/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod b/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod
index 78d9814225f60838dd799e3ba8fa468e1537592d..fa93cc7f4c3a663c0b6efe7fc2185538b0a2d365 100644
--- a/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod
+++ b/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod
@@ -1,8 +1,7 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CampaignStepsGantt_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterable v="true" />
   <layout>
     <noneLayout>
       <name>layout</name>
@@ -18,14 +17,14 @@
       <endDateField>DATE_END</endDateField>
       <predecessorIdField>PREDECESSORSTEP_ID</predecessorIdField>
       <entityField>#ENTITY</entityField>
-      <isDeletable v="true" />
-      <isEditable v="true" />
       <title></title>
       <devices>
         <element>TABLET</element>
         <element>DESKTOP</element>
       </devices>
       <isCreatable v="true" />
+      <isDeletable v="true" />
+      <isEditable v="true" />
       <columns>
         <neonTableColumn>
           <name>9469e2f2-35ac-4f87-a4a7-959b47a5e7bb</name>
diff --git a/neonView/ChecklistEdit_view/ChecklistEdit_view.aod b/neonView/ChecklistEdit_view/ChecklistEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..30049e3d38f17bc7eb5145ee1b0ad04c40f5bf4c
--- /dev/null
+++ b/neonView/ChecklistEdit_view/ChecklistEdit_view.aod
@@ -0,0 +1,16 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ChecklistEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <neonViewReference>
+      <name>8499691f-153d-43ee-829e-d586255d9344</name>
+      <view>ChecklistEntryMultiEdit_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/ChecklistEntryList_view/ChecklistEntryList_view.aod b/neonView/ChecklistEntryList_view/ChecklistEntryList_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..9928f472cbbf54d997ab646bf4987464c0517791
--- /dev/null
+++ b/neonView/ChecklistEntryList_view/ChecklistEntryList_view.aod
@@ -0,0 +1,23 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ChecklistEntryList_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <titledListViewTemplate>
+      <name>titledListViewTemplate</name>
+      <titleField>TYPE</titleField>
+      <columns>
+        <neonTitledListTableColumn>
+          <name>49ad66e3-645d-489a-8bf8-d56645cf5465</name>
+          <entityField>TITLE</entityField>
+          <fullWidth v="true" />
+        </neonTitledListTableColumn>
+      </columns>
+    </titledListViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ChecklistEntryMultiEdit_view/ChecklistEntryMultiEdit_view.aod b/neonView/ChecklistEntryMultiEdit_view/ChecklistEntryMultiEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..5aa3bfcacebf9b5f8e7732eafb144f629d594d17
--- /dev/null
+++ b/neonView/ChecklistEntryMultiEdit_view/ChecklistEntryMultiEdit_view.aod
@@ -0,0 +1,26 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ChecklistEntryMultiEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>genericMultipleViewTemplate</name>
+      <title>Checklist entries</title>
+      <columns>
+        <neonGenericMultipleTableColumn>
+          <name>f139b472-471b-45ef-8406-f11fe052e246</name>
+          <entityField>TYPE</entityField>
+        </neonGenericMultipleTableColumn>
+        <neonGenericMultipleTableColumn>
+          <name>ed1eb021-aad1-4228-bcdf-eef2d44f53f8</name>
+          <entityField>TITLE</entityField>
+        </neonGenericMultipleTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ChecklistEntryValueList_view/ChecklistEntryValueList_view.aod b/neonView/ChecklistEntryValueList_view/ChecklistEntryValueList_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..1f86e623f5d6595e1b58d4abd826ef2e87dd29b3
--- /dev/null
+++ b/neonView/ChecklistEntryValueList_view/ChecklistEntryValueList_view.aod
@@ -0,0 +1,36 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ChecklistEntryValueList_view</name>
+  <title>Checklist entries</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+      <direction>HORIZONTAL</direction>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>tableViewTemplate</name>
+      <iconField>#IMAGE</iconField>
+      <favoriteActionGroup1>setChecklistEntryCompleted</favoriteActionGroup1>
+      <isCreatable v="false" />
+      <isDeletable v="false" />
+      <isEditable v="false" />
+      <columns>
+        <neonTableColumn>
+          <name>6ccac432-a75f-42f3-915a-4e02c141ddb8</name>
+          <entityField>#IMAGE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>35a60394-91ad-4e39-85b4-683564604e97</name>
+          <entityField>type</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>56a78ef9-dcef-4d1c-b30d-5c89f38611ec</name>
+          <entityField>CHECKLISTENTRY_ID</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ChecklistFilter_view/ChecklistFilter_view.aod b/neonView/ChecklistFilter_view/ChecklistFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..81105b42d24250da3b0b6217efea767043b97454
--- /dev/null
+++ b/neonView/ChecklistFilter_view/ChecklistFilter_view.aod
@@ -0,0 +1,10 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ChecklistFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+</neonView>
diff --git a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod
index b3c80308e0208093dbb468c21c5f2a227db7c5ac..84950dabeabac46c65057266f1e87f9c5139a901 100644
--- a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod
+++ b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ClassificationAdminEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
@@ -26,6 +26,10 @@
           <name>66ce2c02-1cd3-4867-91a6-825655d6d16a</name>
           <entityField>CLASSIFICATIONGROUP</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>a3b4429d-9d40-4057-9df3-7bcbb1664853</name>
+          <entityField>CLASSIFICATIONGROUPDISPLAYVALUE</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>5493520c-27d9-4333-a804-02c07b0b0747</name>
           <entityField>SORTING</entityField>
@@ -38,6 +42,14 @@
           <name>91f2555e-214c-44f0-8798-029b94be9c00</name>
           <entityField>CLASSIFICATIONTYPEIDDISPLAYVALUE</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>274fd441-b0c3-48c2-8b4e-d4cace69946c</name>
+          <entityField>SCOREPOINTS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>1d35951d-1661-4a5d-93bc-323f11f35667</name>
+          <entityField>classificationTypeFilter</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
   </children>
diff --git a/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod b/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod
index 66bc95107a363eda4d20e2da950fd06c3a332987..14e2c433280ce0e447e3d8a838828b9d41be7b2b 100644
--- a/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod
+++ b/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ClassificationAdminFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -11,8 +11,8 @@
     <treeTableViewTemplate>
       <name>treetable</name>
       <parentField>CLASSIFICATION_PARENT_ID</parentField>
-      <favoriteActionGroup1>FilterviewActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>FilterviewActionGroup</favoriteActionGroup1>
       <linkedColumns />
       <defaultGroupFields />
       <fixedFilterFields />
@@ -21,6 +21,14 @@
           <name>2e04e92e-9af8-46a6-9845-8bf822cd05f3</name>
           <entityField>#CONTENTTITLE</entityField>
         </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0d27f1ef-91e3-44fd-9514-e666ac10748e</name>
+          <entityField>SCOREPOINTS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e9a13e67-4a9c-4086-b7c3-2d1bfcc0b721</name>
+          <entityField>classificationTypeFilter</entityField>
+        </neonTreeTableColumn>
       </columns>
     </treeTableViewTemplate>
   </children>
diff --git a/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod b/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod
index 2a66faca02e59683ff6ea9d27365ea4c6b92cffd..faa84e1546daf70f1fb4bc8fb79e2db9d6843101 100644
--- a/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod
+++ b/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ClassificationGradingMultipleEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
@@ -17,8 +17,8 @@
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTitledListTableColumn>
-          <name>9fffb1ac-b842-4c1c-9f81-85a17d78f649</name>
-          <entityField>MAXGRADEFORSCORE</entityField>
+          <name>f9becf36-1a76-4121-a999-8b1fb9619650</name>
+          <entityField>MINPERCENT</entityField>
         </neonTitledListTableColumn>
       </columns>
     </titledListViewTemplate>
diff --git a/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod b/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod
index 07009fa6f7cadc75d53362d8c339f7fa798dc4c0..d7eff23d2d1a09460441312d02ccb5659aa3c2a1 100644
--- a/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod
+++ b/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ClassificationGroupPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ClassificationPreview_view/ClassificationPreview_view.aod b/neonView/ClassificationPreview_view/ClassificationPreview_view.aod
index 099382a2e2dccd5a9ec78daef6edf2a29b74b84d..f97be47068ba298e6853e008a2b91615f34701f2 100644
--- a/neonView/ClassificationPreview_view/ClassificationPreview_view.aod
+++ b/neonView/ClassificationPreview_view/ClassificationPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ClassificationPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <isOverlay v="false" />
@@ -19,9 +19,13 @@
       <hideEmptyFields v="false" />
       <entityField>#ENTITY</entityField>
       <fields>
+        <entityFieldLink>
+          <name>7e79491f-5891-4fd7-b6e1-1045865f36f6</name>
+          <entityField>CLASSIFICATIONTYPEID</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>dfdbc6f4-4859-495b-96e7-0853bdbc611f</name>
-          <entityField>CLASSIFICATIONSCORE_ID</entityField>
+          <entityField>VALUE</entityField>
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
diff --git a/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod b/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod
index 20524c3da830f14a171723be27f487813ccf31f4..ca2ae66ae11f424e21abb8c839b9122ef792978e 100644
--- a/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod
+++ b/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ClassificationScoreMultipleEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -15,8 +15,12 @@
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTitledListTableColumn>
-          <name>d56f97c1-a634-4b12-8dd3-c2c32a9e16f1</name>
-          <entityField>SCORE</entityField>
+          <name>8c04eb99-5721-49ff-8db1-90461e11e55e</name>
+          <entityField>SCOREPERCENT</entityField>
+        </neonTitledListTableColumn>
+        <neonTitledListTableColumn>
+          <name>6e729412-1533-4067-a709-5229341037cf</name>
+          <entityField>scoreInPoints</entityField>
         </neonTitledListTableColumn>
       </columns>
     </titledListViewTemplate>
diff --git a/neonView/ClassificationTree_view/ClassificationTree_view.aod b/neonView/ClassificationTree_view/ClassificationTree_view.aod
index 7c7200def91c52a3759349f831010d700606509f..d716cc7ddad99a078168f38f67b53ae66dde236e 100644
--- a/neonView/ClassificationTree_view/ClassificationTree_view.aod
+++ b/neonView/ClassificationTree_view/ClassificationTree_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ClassificationTree_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -13,17 +13,22 @@
       <hideActions v="true" />
       <showChildrenCount v="false" />
       <entityField>#ENTITY</entityField>
+      <linkedColumns />
       <defaultGroupFields>
         <element>CLASSIFICATIONGROUP</element>
       </defaultGroupFields>
       <columns>
         <neonTreeTableColumn>
-          <name>246c0212-dadb-4d71-9567-ceab37e9ef10</name>
-          <entityField>SCORETYPE</entityField>
+          <name>5541a641-81c8-46d4-a5c9-e32a8edb8f80</name>
+          <entityField>CLASSIFICATIONTYPEID</entityField>
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>9a62baa4-71cf-4b9d-8cd6-883b233a9b84</name>
-          <entityField>CLASSIFICATIONSCORE_ID</entityField>
+          <entityField>VALUE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6ce4567b-d3fb-4be1-9557-46e0f24108d0</name>
+          <entityField>SCOREPOINTS</entityField>
         </neonTreeTableColumn>
       </columns>
     </treeTableViewTemplate>
diff --git a/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod b/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod
index e9a3e74a76cb8ed1dfd9e3524065853bf9910330..e2b699ea8ff8cbca49f7577670d556ba43e43959 100644
--- a/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod
+++ b/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod
@@ -1,7 +1,8 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ClassificationTypePreview_View</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="false" />
   <layout>
     <headerFooterLayout>
       <name>layout</name>
@@ -11,6 +12,7 @@
   <children>
     <genericViewTemplate>
       <name>generic</name>
+      <editMode v="false" />
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
@@ -26,8 +28,12 @@
           <entityField>SCORETYPE</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>d070599e-2a60-4de2-ae65-efda4943d199</name>
-          <entityField>infoField</entityField>
+          <name>1409747f-68c4-497d-960e-dd53510a63d7</name>
+          <entityField>SCOREPOINTS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>a992e61b-1bfc-4241-a407-a03500880d85</name>
+          <entityField>FILTER</entityField>
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
@@ -36,5 +42,9 @@
       <entityField>ClassificationScores</entityField>
       <view>ClassificationScoreMultipleEdit_view</view>
     </neonViewReference>
+    <actionsViewTemplate>
+      <name>action</name>
+      <entityField>#ENTITY</entityField>
+    </actionsViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod b/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod
index 62e73d65f64768e597fb8feaefb5ea1289dc5e3f..e624314e060316a38c150f1ed5c17c541633f2d5 100644
--- a/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod
+++ b/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CommRestrictionDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod b/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod
index 118d5059636491300e732fb203a1077f93f3bcba..7d0d01242d3648a59478b0f925e82fe397381da4 100644
--- a/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod
+++ b/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CommRestrictionFilter_view</name>
   <title>Restrictions</title>
   <description>Restrictions</description>
diff --git a/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod b/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod
index e740f6b2c740a4fad9e8135fe09e43d7aed32d67..02f5f8341a320911f379d178362ecfbdbec3b714 100644
--- a/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod
+++ b/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CommRestrictionPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod
index 03d88f6cc6c6592cc60f944ab9fdabbe29b133dd..7e91c39ddbb82922631d5b40b665561cd7e58ed0 100644
--- a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod
+++ b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CommRestrictionSmallEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/CommunicationEdit_view/CommunicationEdit_view.aod b/neonView/CommunicationEdit_view/CommunicationEdit_view.aod
index 3fa9900fd7e5a5f7c8223e3cf6ed9e107337644a..8ea6d77ec897d5e187fc566aa5c5a0c87f2e5e53 100644
--- a/neonView/CommunicationEdit_view/CommunicationEdit_view.aod
+++ b/neonView/CommunicationEdit_view/CommunicationEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CommunicationEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod
index a0ae2fccad5d7d8534c666ceaf6b65c15b5979ff..1b8b5fee5dcde2b3a1746038cf53c6d365317e74 100644
--- a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod
+++ b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CommunicationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/CommunicationList_view/CommunicationList_view.aod b/neonView/CommunicationList_view/CommunicationList_view.aod
index e646c71d4f7c30721587a8b4153b896e7bb89305..e321f8cd2e441654af4bd5f660399f0aeafc1972 100644
--- a/neonView/CommunicationList_view/CommunicationList_view.aod
+++ b/neonView/CommunicationList_view/CommunicationList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CommunicationList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod b/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod
index 8022b2d402ace5343316e5fa9121ffe9fd15c99d..be8a10662b7340da87602493f31a097a02192857 100644
--- a/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod
+++ b/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CommunicationMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod b/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod
index 469f6a0b536f202e16fda72914d7687a4032b757..e6325607e20d595c4255e0ce13228fd2d08ae66b 100644
--- a/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod
+++ b/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CompetitionDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod
index c752afc16e26e416dd3680aad681e865b73d90ab..2f4683b36852c576cb90719d6a5e24ce812c35f2 100644
--- a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod
+++ b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CompetitionEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/CompetitionFilter_view/CompetitionFilter_view.aod b/neonView/CompetitionFilter_view/CompetitionFilter_view.aod
index 9dd7bb664440f6dea9a6baad7e3d19c4cd04910c..b55a777039e1f181a36793c3bc4ddf21d8561502 100644
--- a/neonView/CompetitionFilter_view/CompetitionFilter_view.aod
+++ b/neonView/CompetitionFilter_view/CompetitionFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CompetitionFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -15,8 +15,8 @@
       <titleField>CONTACT_ID</titleField>
       <subtitleField>STATUS</subtitleField>
       <descriptionField>PHASE</descriptionField>
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
           <name>dd971a3f-297e-4055-9961-77faea60236e</name>
diff --git a/neonView/CompetitionPreview_view/CompetitionPreview_view.aod b/neonView/CompetitionPreview_view/CompetitionPreview_view.aod
index 9c39a12fda86ea82b8ecaee889307845c46af1a9..59873837d2ca7884eb9add9af22be1ff4d80702c 100644
--- a/neonView/CompetitionPreview_view/CompetitionPreview_view.aod
+++ b/neonView/CompetitionPreview_view/CompetitionPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CompetitionPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ContactEdit_view/ContactEdit_view.aod b/neonView/ContactEdit_view/ContactEdit_view.aod
index b085859245f16128047e90264baf3f8329ccd2ce..a460b7add1301bd49b87700ff88c9dc57a8901b1 100644
--- a/neonView/ContactEdit_view/ContactEdit_view.aod
+++ b/neonView/ContactEdit_view/ContactEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ContactEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -44,5 +44,10 @@
       <entityField>Communications</entityField>
       <view>CommunicationMultiEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>cd3c14c9-f189-483b-9bcd-f3125c9dd77a</name>
+      <entityField>Attributes</entityField>
+      <view>AttributeRelationMultiEdit_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ContactList_view/ContactList_view.aod b/neonView/ContactList_view/ContactList_view.aod
index f9394214646cb91de251b078ce31118135cbed0c..8e2c5d8685c04966fef313dc86b1a685702f0f95 100644
--- a/neonView/ContactList_view/ContactList_view.aod
+++ b/neonView/ContactList_view/ContactList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ContactList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ContactTitledList_view/ContactTitledList_view.aod b/neonView/ContactTitledList_view/ContactTitledList_view.aod
index c980c83ab37d6e0c68640936144f73c7ca1a1386..eb6fee471a35d9e6ea010a52981cfe720fdec5c8 100644
--- a/neonView/ContactTitledList_view/ContactTitledList_view.aod
+++ b/neonView/ContactTitledList_view/ContactTitledList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ContactTitledList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ContractEdit_view/ContractEdit_view.aod b/neonView/ContractEdit_view/ContractEdit_view.aod
index 67d330efcd5a3898f54f2c3842c6d1a16b0ed550..7f2f459f1885beab37a432cf2be0f6ef82329469 100644
--- a/neonView/ContractEdit_view/ContractEdit_view.aod
+++ b/neonView/ContractEdit_view/ContractEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ContractEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ContractFilter_view/ContractFilter_view.aod b/neonView/ContractFilter_view/ContractFilter_view.aod
index 08b326cef29975aa6983fe5b92098df727bd4dfb..5464ca31e54ab2ae1f1bf48fbff8a2d5f98ee032 100644
--- a/neonView/ContractFilter_view/ContractFilter_view.aod
+++ b/neonView/ContractFilter_view/ContractFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ContractFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -37,6 +37,7 @@
       <subtitleField>CONTRACTSTATUS</subtitleField>
       <descriptionField>CONTACT_ID</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>CONTRACTCODE</element>
       </linkedColumns>
@@ -78,6 +79,7 @@
     <treeTableViewTemplate>
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>CONTRACTCODE</element>
       </linkedColumns>
diff --git a/neonView/ContractMain_view/ContractMain_view.aod b/neonView/ContractMain_view/ContractMain_view.aod
index ccf52a59c9a3d142fad573919cee3f521341562c..1fe713c3cd6a3bb23616a2b980e34c161011ed12 100644
--- a/neonView/ContractMain_view/ContractMain_view.aod
+++ b/neonView/ContractMain_view/ContractMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ContractMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ContractPreview_view/ContractPreview_view.aod b/neonView/ContractPreview_view/ContractPreview_view.aod
index f7fad6eb7055a66d1e3fe19c3bf45c181e9e2ba1..8ba4f385405b29a044367d0361668ab8655b2d0f 100644
--- a/neonView/ContractPreview_view/ContractPreview_view.aod
+++ b/neonView/ContractPreview_view/ContractPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ContractPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CountriesPreview_view/CountriesPreview_view.aod b/neonView/CountriesPreview_view/CountriesPreview_view.aod
index e7c4eb2ccb925fa6b3388e50b9dd6306fd3a39b4..6cc5af15f51fdf2c4a28177dd3d96c73073c0bde 100644
--- a/neonView/CountriesPreview_view/CountriesPreview_view.aod
+++ b/neonView/CountriesPreview_view/CountriesPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CountriesPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CountriesTable_view/CountriesTable_view.aod b/neonView/CountriesTable_view/CountriesTable_view.aod
index 15bdadcf67b83575947e09b6a02d018d5857794c..be2df51f24749e2d2aa611b3a96bbc0527d664b1 100644
--- a/neonView/CountriesTable_view/CountriesTable_view.aod
+++ b/neonView/CountriesTable_view/CountriesTable_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>CountriesTable_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DSGVODrawer_view/DSGVODrawer_view.aod b/neonView/DSGVODrawer_view/DSGVODrawer_view.aod
index ae0732836008d38205b457067263edf3fe54ae87..0d5f150a84f2b110da669d4e69bbe2666dce7cf6 100644
--- a/neonView/DSGVODrawer_view/DSGVODrawer_view.aod
+++ b/neonView/DSGVODrawer_view/DSGVODrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DSGVODrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod
index 7a2e36dcd0dd930f931f5bd831d0099cf3d24b02..7b92fa16742092c9b43a0776dcd615180e220712 100644
--- a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod
+++ b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DSGVOEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/DSGVOFilter_view/DSGVOFilter_view.aod b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod
index 3129f4f17bea114ba27ff6c2d4875dbcf51883cd..77f2a2ce9738e5c08e973eaac348703189451904 100644
--- a/neonView/DSGVOFilter_view/DSGVOFilter_view.aod
+++ b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DSGVOFilter_view</name>
   <title>Data Privacy</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -12,13 +12,13 @@
   <children>
     <tableViewTemplate>
       <name>Table</name>
-      <favoriteActionGroup1>DSGVOActions</favoriteActionGroup1>
-      <favoriteActionGroup2>Reports</favoriteActionGroup2>
       <iconField>#IMAGE</iconField>
       <titleField>DSGVOTYPE</titleField>
       <subtitleField>VALUE</subtitleField>
       <descriptionField>STATUORITYSOURCE</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>DSGVOActions</favoriteActionGroup1>
+      <favoriteActionGroup2>Reports</favoriteActionGroup2>
       <columns>
         <neonTableColumn>
           <name>a09fc7e3-15d9-4739-84df-71f511f4b758</name>
@@ -44,9 +44,9 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
       <favoriteActionGroup1>DSGVOActions</favoriteActionGroup1>
       <favoriteActionGroup2>Reports</favoriteActionGroup2>
-      <entityField>#ENTITY</entityField>
       <columns>
         <neonTreeTableColumn>
           <name>0a3d452a-842b-429f-a05d-4a7ee0fb3b15</name>
diff --git a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod
index 5adffc8c9c2fc00f0938be8e3cc3c1fd28d2b988..df27aca67d1ddda269f5a01010a1f1aecb220fd6 100644
--- a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod
+++ b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DSGVOInfoEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod
index 658b57846745083a3af5e8b89d7285c35e158b15..277b8e563ebd2dd29c6969203bc5e4f832e03683 100644
--- a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod
+++ b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DSGVOPreviewAnonym_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/DSGVOPreview_view/DSGVOPreview_view.aod b/neonView/DSGVOPreview_view/DSGVOPreview_view.aod
index f39f20c924ef610992540387af4d45b4e2136697..ff1974aa153cc55a605adae8c55d1bb06c99425d 100644
--- a/neonView/DSGVOPreview_view/DSGVOPreview_view.aod
+++ b/neonView/DSGVOPreview_view/DSGVOPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DSGVOPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DSGVOReport_view/DSGVOReport_view.aod b/neonView/DSGVOReport_view/DSGVOReport_view.aod
index 08abe1b52b49e8bf9e1c84658dd0b9dcdbf8c50c..38e2139acede7e2b00c51483bd3e09d4f8c86def 100644
--- a/neonView/DSGVOReport_view/DSGVOReport_view.aod
+++ b/neonView/DSGVOReport_view/DSGVOReport_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DSGVOReport_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -11,8 +11,8 @@
     <reportViewTemplate>
       <name>Report</name>
       <reportData>REPORT_DATA</reportData>
-      <favoriteActionGroup1>dsgvoReportDispatch</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>dsgvoReportDispatch</favoriteActionGroup1>
     </reportViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod
index e44c460bd85f33274c34ba128bf81c9e4e26f184..03749261152f559f6e933fa1b52098c33243c97b 100644
--- a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod
+++ b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DefaultAdminView_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/DefaultLookup_view/DefaultLookup_view.aod b/neonView/DefaultLookup_view/DefaultLookup_view.aod
index 70e53f68709139a84f5eec212d760c9d9baab990..c1df94774a821e733b0b99e5a0a59d401593fc87 100644
--- a/neonView/DefaultLookup_view/DefaultLookup_view.aod
+++ b/neonView/DefaultLookup_view/DefaultLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DefaultLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod
index 9c24230a7351177dc053a9e2be598667c9d0d927..67b72844f907e092102bca736767bc90ef030a56 100644
--- a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod
+++ b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DescriptionTranslationEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod
index 004c88356e0483968d15fd1b5929d6fe57a99472..ba3690b8e6b8686a462b06874aa21fe8cc45af8b 100644
--- a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod
+++ b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DescriptionTranslationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod b/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod
index 11b5fc210b212cbb9d0d58609909e89a860f1e54..6d15eecc7d679b7f43132781c249f00c6ea08a9e 100644
--- a/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod
+++ b/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DescriptionTranslationPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/DistrictContactEdit_view/DistrictContactEdit_view.aod b/neonView/DistrictContactEdit_view/DistrictContactEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..95263fb267a2c025538e19a4956b7e1be696d02f
--- /dev/null
+++ b/neonView/DistrictContactEdit_view/DistrictContactEdit_view.aod
@@ -0,0 +1,48 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>DistrictContactEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>SMALL</size>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>genericViewTemplate</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>677efe7a-5cd1-42c1-8e4e-73bf7d634515</name>
+          <entityField>CONTACT_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>bc016cdc-cc9a-4dec-afc2-433b65a6519e</name>
+          <entityField>ADVISER_CONTACT_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>2b10ba7c-4da2-4fdc-99af-072ea8814237</name>
+          <entityField>ADVISER_ROLE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>7f3fd6a1-1ae0-4939-86ff-22816b39feeb</name>
+          <entityField>STATUS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>93c3bfba-a4c0-4c39-802f-7391d9680f55</name>
+          <entityField>VALID_FROM</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>09265a39-9e44-4161-93b7-3ee4e8d78a42</name>
+          <entityField>VALID_UNTIL</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>c1b99287-3727-4470-a58a-4ecce35284cc</name>
+          <entityField>ORIGIN</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/DistrictContactFilter_view/DistrictContactFilter_view.aod b/neonView/DistrictContactFilter_view/DistrictContactFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..8cf112f1376d32406bec6202971f660d8e7a15f6
--- /dev/null
+++ b/neonView/DistrictContactFilter_view/DistrictContactFilter_view.aod
@@ -0,0 +1,79 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>DistrictContactFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
+  <dashletConfigurations>
+    <neonDashletConfiguration>
+      <name>OwnDistrictContactsToCheck</name>
+      <title>My district assignments to check</title>
+      <description>Show my district assignments with status review</description>
+      <fragment>DistrictContact/filter</fragment>
+      <icon>VAADIN:GLOBE</icon>
+      <categories>
+        <neonDashletCategory>
+          <name>district</name>
+          <title>District</title>
+        </neonDashletCategory>
+      </categories>
+      <parameters>
+        <neonDashletParameter>
+          <name>isDashletView_param</name>
+          <value>true</value>
+        </neonDashletParameter>
+      </parameters>
+    </neonDashletConfiguration>
+  </dashletConfigurations>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>districtContacts</name>
+      <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>setStatus</favoriteActionGroup1>
+      <linkedColumns />
+      <fixedFilterFields />
+      <columns>
+        <neonTableColumn>
+          <name>b9295685-3242-4e15-af62-72f4adb758a3</name>
+          <entityField>#ICON</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>b2b3fd8c-2d93-4059-b4e4-24ca24874018</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>a5b6ac69-712c-45e1-97ff-cf1101da4b95</name>
+          <entityField>ADVISER_CONTACT_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>06c6fc84-5025-4bb2-906a-3de1bbeafbdd</name>
+          <entityField>ADVISER_ROLE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>1870263d-a3be-41fc-989a-2fb8aebef12c</name>
+          <entityField>STATUS</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>26299d80-a74b-4c45-b599-6aec0ab6e82b</name>
+          <entityField>ORIGIN</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>e8942dc0-3661-431e-9bac-2ab15a060438</name>
+          <entityField>DISTRICT_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>873010c6-bd65-40bf-a8f3-7bbb82d56e8a</name>
+          <entityField>VALID_FROM</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>cdd947b0-d546-4aeb-9ec6-7d913e1c45bc</name>
+          <entityField>VALID_UNTIL</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/DistrictEdit_view/DistrictEdit_view.aod b/neonView/DistrictEdit_view/DistrictEdit_view.aod
index ba7b2fa93c09ebe118b6ebd7f16b732bd335f919..c50f70e863fcb521571beba5cc648fdc480a2e22 100644
--- a/neonView/DistrictEdit_view/DistrictEdit_view.aod
+++ b/neonView/DistrictEdit_view/DistrictEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DistrictEdit_view</name>
   <title>Responsible Districts</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -34,6 +34,10 @@
           <name>941cb436-8b93-427d-ae2d-3731e55dd040</name>
           <entityField>DISTRICT_STATUS</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>b7e851f6-0492-4298-98dd-87abb5d01255</name>
+          <entityField>DISTRICT_AUTOADD</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>f77428c6-eaff-4554-aedb-cf56d4c573d6</name>
           <entityField>PARENTDISTRICT_DISTRICTID</entityField>
@@ -48,10 +52,5 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
-    <neonViewReference>
-      <name>f1dddbee-5718-46b8-b682-ba4e707bf529</name>
-      <entityField>DistrictResponsibles</entityField>
-      <view>DistrictResponsibleMultiEdit_view</view>
-    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/DistrictFilter_view/DistrictFilter_view.aod b/neonView/DistrictFilter_view/DistrictFilter_view.aod
index d60e76db2624cc64e91b5d37cc50042ccbab2324..e979e1c1a0e09097bdb0c908ccb859f1dbb7c7e2 100644
--- a/neonView/DistrictFilter_view/DistrictFilter_view.aod
+++ b/neonView/DistrictFilter_view/DistrictFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DistrictFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -15,6 +15,7 @@
       <hideContentSearch v="false" />
       <showChildrenCount v="false" />
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>ActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>DISTRICT_NAME</element>
         <element>DISTRICT_NUMBER</element>
@@ -44,6 +45,10 @@
           <name>87184bb1-4d44-4872-bae7-9be903f71354</name>
           <entityField>DISTRICT_STATUS</entityField>
         </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>07781cf0-39f7-4338-8776-a936e2ac9f6e</name>
+          <entityField>DISTRICT_AUTOADD</entityField>
+        </neonTreeTableColumn>
       </columns>
     </treeTableViewTemplate>
   </children>
diff --git a/neonView/DistrictList_view/DistrictList_view.aod b/neonView/DistrictList_view/DistrictList_view.aod
index 45225faadb9410677d433a529a1d287105aa26a2..db5a9c329c0e241bb3bc9a69e9e3da5941c93608 100644
--- a/neonView/DistrictList_view/DistrictList_view.aod
+++ b/neonView/DistrictList_view/DistrictList_view.aod
@@ -1,8 +1,29 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DistrictList_view</name>
   <title>Responsible Districts</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <dashletConfigurations>
+    <neonDashletConfiguration>
+      <name>ResponsibleDistrictDashletConfiguration</name>
+      <title>My responsible Districts</title>
+      <description>It lists all areas that the user has to take care of.</description>
+      <fragment>District/DistrictList_view</fragment>
+      <icon>VAADIN:GLOBE</icon>
+      <categories>
+        <neonDashletCategory>
+          <name>Districts</name>
+          <title>Districts</title>
+        </neonDashletCategory>
+      </categories>
+      <parameters>
+        <neonDashletParameter>
+          <name>ResponsibleDistrictsOfCurrentUser_param</name>
+          <value>true</value>
+        </neonDashletParameter>
+      </parameters>
+    </neonDashletConfiguration>
+  </dashletConfigurations>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/DistrictMain_view/DistrictMain_view.aod b/neonView/DistrictMain_view/DistrictMain_view.aod
index f6d39a27cd5aefdf998581597e296bdcfca4301a..d302bb4083e32639d4387ecf65f2e66c09f5fe5b 100644
--- a/neonView/DistrictMain_view/DistrictMain_view.aod
+++ b/neonView/DistrictMain_view/DistrictMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DistrictMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -14,6 +14,16 @@
       <entityField>#ENTITY</entityField>
       <view>DistrictPreview_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>a725b1a4-6c00-41e7-8577-922718e72938</name>
+      <entityField>DistrictResponsibleUIDs</entityField>
+      <view>DistrictResponsibleFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>056f1fea-5cd7-4156-a1ee-1dea0bbcef1e</name>
+      <entityField>DistrictContactUIDs</entityField>
+      <view>DistrictContactFilter_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>b409f300-c8b4-4052-9012-5e6b79c03a9c</name>
       <entityField>Organisations</entityField>
diff --git a/neonView/DistrictPreview_view/DistrictPreview_view.aod b/neonView/DistrictPreview_view/DistrictPreview_view.aod
index 8b7243f1f4ea2d428510b3c729c45e92093e6b80..52d71fd47468c7d403fb32b0118ee2c9d1c10124 100644
--- a/neonView/DistrictPreview_view/DistrictPreview_view.aod
+++ b/neonView/DistrictPreview_view/DistrictPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DistrictPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -18,11 +18,6 @@
       <descriptionField>DISTRICT_NUMBER_fieldGroup</descriptionField>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
-    <neonViewReference>
-      <name>a7a731e8-f93e-4d90-8459-d249a13ecf0d</name>
-      <entityField>DistrictResponsibles</entityField>
-      <view>DistrictResponsiblePreviewList_view</view>
-    </neonViewReference>
     <genericViewTemplate>
       <name>furtherInfosGenericViewTemplate</name>
       <showDrawer v="true" />
@@ -44,6 +39,10 @@
           <name>98be594e-6209-4046-b0e9-07200c8c294e</name>
           <entityField>DISTRICT_STATUS</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>82a03e53-5373-485c-b0e7-9ec72d7bece5</name>
+          <entityField>DISTRICT_AUTOADD</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
     <scoreCardViewTemplate>
diff --git a/neonView/DistrictResponsibleEdit_view/DistrictResponsibleEdit_view.aod b/neonView/DistrictResponsibleEdit_view/DistrictResponsibleEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..2fb95e5410b9bc687d0704fd66e300de8846b47f
--- /dev/null
+++ b/neonView/DistrictResponsibleEdit_view/DistrictResponsibleEdit_view.aod
@@ -0,0 +1,40 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>DistrictResponsibleEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>SMALL</size>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>genericViewTemplate</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>9e7007c1-7b6e-45d9-961f-7877c2766688</name>
+          <entityField>EMPLOYEE_CONTACT_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>77b9ba2a-d7ee-47ba-8908-63e45dbd1db2</name>
+          <entityField>ADVISER_ROLE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>6b4c7d81-48f0-4cc2-a0fd-2fbb090d35da</name>
+          <entityField>ADVISER_STATUS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>14ba4841-19c5-4282-ae2c-97108e55ed14</name>
+          <entityField>VALID_FROM</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>4bdb4191-6452-44b2-b0b2-54fc00d445cb</name>
+          <entityField>VALID_UNTIL</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/DistrictResponsibleFilter_view/DistrictResponsibleFilter_view.aod b/neonView/DistrictResponsibleFilter_view/DistrictResponsibleFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..04469a199323b98137276f1393bafba7d2b4c9ce
--- /dev/null
+++ b/neonView/DistrictResponsibleFilter_view/DistrictResponsibleFilter_view.aod
@@ -0,0 +1,47 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>DistrictResponsibleFilter_view</name>
+  <title>Responsibles</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Supervisors</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns />
+      <fixedFilterFields />
+      <maxDBRow v="400" />
+      <columns>
+        <neonTableColumn>
+          <name>892cf211-1d55-4976-acba-9d70a925fd26</name>
+          <entityField>#ICON</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>5821447b-a15a-49f8-97d8-cc7411afed0c</name>
+          <entityField>EMPLOYEE_CONTACT_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>1cbd12e3-6de1-4932-afbd-0f856c030984</name>
+          <entityField>ADVISER_ROLE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>f8b3b6e7-8e7c-41f1-aed9-f81e3f3d0bad</name>
+          <entityField>ADVISER_STATUS</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>9896476f-1b08-49c9-91ef-000579e52e0b</name>
+          <entityField>VALID_FROM</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>0ff668e7-8e9a-483d-973a-d74a7a919a5a</name>
+          <entityField>VALID_UNTIL</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod b/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod
index fc2f1135c999d224c788a81c63c2c75a68554030..660992d1acb3be02b328a63cfe525b8f70ae142e 100644
--- a/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod
+++ b/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DistrictResponsibleList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -34,10 +34,6 @@
           <name>32e7b066-76b4-4bd2-b440-bc7844c929a6</name>
           <entityField>EMPLOYEE_CONTACT_ID</entityField>
         </neonTableColumn>
-        <neonTableColumn>
-          <name>dc9bce22-9a99-4db9-a76a-8fd4a91d5f0f</name>
-          <entityField>departmentAttributeName</entityField>
-        </neonTableColumn>
         <neonTableColumn>
           <name>fd46a7b9-60bb-48d1-aac5-0ef28943eac9</name>
           <entityField>PHONE</entityField>
diff --git a/neonView/DistrictResponsibleLookup_view/DistrictResponsibleLookup_view.aod b/neonView/DistrictResponsibleLookup_view/DistrictResponsibleLookup_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..595ca69827adf1b84a0a95b4a1d3939c52415f14
--- /dev/null
+++ b/neonView/DistrictResponsibleLookup_view/DistrictResponsibleLookup_view.aod
@@ -0,0 +1,30 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>DistrictResponsibleLookup_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>ResponsibleLookup</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>b1180c08-6e1f-459f-868f-2842d034806f</name>
+          <entityField>#ICON</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>e5b2fbc0-174d-4d0e-88d1-a798e65cd773</name>
+          <entityField>EMPLOYEE_CONTACT_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>db77b7a3-80bf-4dc7-9691-8d6aa7422756</name>
+          <entityField>ADVISER_ROLE</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod b/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod
index a6f18a1dfd082e7a2fd60a501b1f7bbb6b03f582..bc2e95744287a826338fdc56b87c7da0427e17a8 100644
--- a/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod
+++ b/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DistrictResponsibleMultiEdit_view</name>
   <title></title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod b/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod
index d7166fc927682f5413acbf372e987ff311f79eb8..ba4cb8426b968377cf4cb54a981eef4d907833ec 100644
--- a/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod
+++ b/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod
@@ -1,25 +1,39 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DistrictResponsiblePreviewList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <noneLayout>
+    <boxLayout>
       <name>layout</name>
-    </noneLayout>
+    </boxLayout>
   </layout>
   <children>
-    <titledListViewTemplate>
-      <name>titledListViewTemplate</name>
-      <titleField>departmentAttributeName</titleField>
+    <genericViewTemplate>
+      <name>Responsibles</name>
       <entityField>#ENTITY</entityField>
       <title>Contactperson</title>
-      <columns>
-        <neonTitledListTableColumn>
-          <name>007d67c4-146b-4202-a677-4390059b4a0a</name>
+      <fields>
+        <entityFieldLink>
+          <name>e65ad43f-0ec6-4a22-b58d-e903acd2648c</name>
           <entityField>EMPLOYEE_CONTACT_ID</entityField>
-          <fullWidth v="true" />
-        </neonTitledListTableColumn>
-      </columns>
-    </titledListViewTemplate>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>2606d85a-1176-4067-97db-27207dfcee4c</name>
+          <entityField>ADVISER_ROLE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>b882f9ff-f877-42e9-9a0c-84206bd78cea</name>
+          <entityField>ADVISER_STATUS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>fde46c86-a464-4279-9fc8-71da3d6e73eb</name>
+          <entityField>VALID_FROM</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>70e68bd7-6431-4f13-92e0-9efd11a0de96</name>
+          <entityField>VALID_UNTIL</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/DocumentDrawer_view/DocumentDrawer_view.aod b/neonView/DocumentDrawer_view/DocumentDrawer_view.aod
index 95a6fb06859233c46fc7356e42183dbafee6984e..99dd4422af2a0fbbb51a1aef112f385ef7de3f8e 100644
--- a/neonView/DocumentDrawer_view/DocumentDrawer_view.aod
+++ b/neonView/DocumentDrawer_view/DocumentDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DocumentEdit_view/DocumentEdit_view.aod b/neonView/DocumentEdit_view/DocumentEdit_view.aod
index b6d671776a6e9161b70bde8589354629ad3a25b7..d8b6938872e6353c8a0496071d8273133ca5acf2 100644
--- a/neonView/DocumentEdit_view/DocumentEdit_view.aod
+++ b/neonView/DocumentEdit_view/DocumentEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/DocumentFilter_view/DocumentFilter_view.aod b/neonView/DocumentFilter_view/DocumentFilter_view.aod
index aa4273cd64a6e2ba21bdfbc157215f4b229523b4..4967a08c8fa03cd32d829e8dc31ef2d435e759e9 100644
--- a/neonView/DocumentFilter_view/DocumentFilter_view.aod
+++ b/neonView/DocumentFilter_view/DocumentFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
@@ -17,18 +17,19 @@
       <descriptionField>SIZE</descriptionField>
       <infoTopField>IS_MAIN_DOCUMENT</infoTopField>
       <infoBottomField>DATE_EDIT</infoBottomField>
-      <favoriteActionGroup1>Document_actions</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>Document_actions</favoriteActionGroup1>
       <isCreatable v="true" />
     </tilesViewTemplate>
     <tableViewTemplate>
       <name>Documents</name>
-      <favoriteActionGroup1>Document_actions</favoriteActionGroup1>
       <iconField>PREVIEW_IMAGE</iconField>
       <titleField>NAME</titleField>
       <subtitleField>TYPE</subtitleField>
       <descriptionField>SIZE</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>Document_actions</favoriteActionGroup1>
+      <favoriteActionGroup2>MSTeam</favoriteActionGroup2>
       <columns>
         <neonTableColumn>
           <name>1ecb7858-44ab-42de-abb8-d8c74afa30d0</name>
@@ -54,8 +55,8 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
-      <favoriteActionGroup1>Document_actions</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>Document_actions</favoriteActionGroup1>
       <columns>
         <neonTreeTableColumn>
           <name>e9438bff-d061-4fff-bcf8-2995cdb636bd</name>
diff --git a/neonView/DocumentList_view/DocumentList_view.aod b/neonView/DocumentList_view/DocumentList_view.aod
index b3f9d671bc13590e2845b15a3edfcaa4d409fecd..d636e14b11f8ff31e5da8855826c42aab839daeb 100644
--- a/neonView/DocumentList_view/DocumentList_view.aod
+++ b/neonView/DocumentList_view/DocumentList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentList_view</name>
   <title>Errorlogs</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod b/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod
index 150915177eceace53489926f2a4ad6a6c58ba299..47d34d212c1dce331a2543486eee7af983c6ddeb 100644
--- a/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod
+++ b/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentMultipleEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DocumentPreview_view/DocumentPreview_view.aod b/neonView/DocumentPreview_view/DocumentPreview_view.aod
index a6a451190e3680ad6565ffa69689ca30e9ba753d..6b6f308e9ebaae2973e710b1ddc7d4cb4e09dca3 100644
--- a/neonView/DocumentPreview_view/DocumentPreview_view.aod
+++ b/neonView/DocumentPreview_view/DocumentPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod b/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod
index 9f8b7600fd030bd7890e496b940203e0f639d361..ccec41e215d0185381c742f07ef48ff0f9505c69 100644
--- a/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod
+++ b/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentTemplateEdit_view</name>
   <title>Document Template</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod
index c72049158c8d2071b59212eef5b1e04be27dcc24..6c0da77042e176bea2d0892991cae12e759a862f 100644
--- a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod
+++ b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentTemplateFilterSmall_view</name>
   <title>Document Template</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod b/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod
index 06232462d05b6b76da1f7c954166044b37ca3721..73eefb9f740e51d9e2ddde03397c1bbfcb7a33d9 100644
--- a/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod
+++ b/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentTemplateFilter_view</name>
   <title>Document Template</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod b/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod
index 7838782e1468d30388241c734c40c3816d369ff1..eedfd5fa235f17dc997bbddb9d08be7aaaad9bbc 100644
--- a/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod
+++ b/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentTemplateLinkList_view</name>
   <title>Attachments</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod b/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod
index daa83967839260c2881ab118da3b7417bf07ec8e..ac5a18934b3d866d320345702c3820a56e2dd316 100644
--- a/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod
+++ b/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentTemplateLinkMultiEdit_view</name>
   <title>Attachments</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod b/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod
index 0dd0dd675f19953d60002fdd086a84da0ebe6cac..a794c79ae5468961a47b76e4ef551e5f22129790 100644
--- a/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod
+++ b/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentTemplatePlaceOfUseList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod b/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod
index 9e422e2b62ee00cc4b0b04df0df5c3a1200926d9..33af6b2a405e6439341fc5f651d1842d9dfad64e 100644
--- a/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod
+++ b/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentTemplatePlaceOfUseMultiEdit_view</name>
   <title>Documenttemplate Place Of Use</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod b/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod
index bf02efdec2454e084c6b072d8810cdf326f9e74f..d779cd3799341bc0acc795e890955205adc1aa08 100644
--- a/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod
+++ b/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentTemplatePlaceOfUseTitledList_view</name>
   <title>Documenttemplate Place Of Use</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -13,8 +13,8 @@
       <name>titledList</name>
       <titleField>PLACEOFUSE</titleField>
       <entityField>#ENTITY</entityField>
-      <isEditable v="true" />
       <isCreatable v="true" />
+      <isEditable v="true" />
     </titledListViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod b/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod
index 7ce305ce1818da026a0bbce34ee9085e4b1edb02..42b53625bfe6ae5119a76738fa1a416fd6d7c536 100644
--- a/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod
+++ b/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentTemplatePreview_view</name>
   <title>Document Template</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod b/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod
index 8412c83ab2b78866d4bc6689be057e27f67fdaa7..523d9ee98190e6629ee9bd5d821bdd32e2ec98e3 100644
--- a/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod
+++ b/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentTemplateTypeCategoryFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod b/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod
index 8021657957e712f16dedf8d093e6ef858d64a8aa..ba428b6d146493b5d7f86b58d70d4c869a432d33 100644
--- a/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod
+++ b/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DocumentWithIdFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -10,12 +10,12 @@
   <children>
     <tableViewTemplate>
       <name>documentsTable</name>
-      <favoriteActionGroup1>Document_actions</favoriteActionGroup1>
       <iconField>PREVIEW_IMAGE</iconField>
       <titleField>NAME</titleField>
       <subtitleField>TYPE</subtitleField>
       <descriptionField>SIZE</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>Document_actions</favoriteActionGroup1>
       <columns>
         <neonTableColumn>
           <name>3c8f789e-f62f-4756-8ee4-347e77712ebe</name>
diff --git a/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod b/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod
index a47a045257ebee14b3c49d5eaf809500a0906bd4..12982f0ba5b6c7e3ebaa5fd3a543186a43654c1e 100644
--- a/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod
+++ b/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DuplicateScannerEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod
index 922b7beb129d83791c4e1985161128cf899df1bd..5a99ae0226ac05f614f190c54732bedc624b4a5c 100644
--- a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod
+++ b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DuplicateScannerFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod b/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod
index e1d655cdbf312b757cef568457cc8bc785cb7d87..75c33f74429cbf649d0353217f044074c7a56a4a 100644
--- a/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod
+++ b/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DuplicateScannerPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod b/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod
index 1689d8f9fc314b41ce48850a859bf6de2f482bf0..9798328f4161f04c56cd02f48166a9dce167306c 100644
--- a/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod
+++ b/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DuplicateScannerResultFieldConfigEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod b/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod
index 0f2a6ce1c5fd46294fb6c4a17e6ea7fff6c74904..ad0436323ab2c0829d978e2bf86c24b0766597ab 100644
--- a/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod
+++ b/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DuplicatesOverview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod b/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod
index fd2c40f8a36476ae6f4c574930fbe84cb1b556ac..670b2c939dc7b4c793999bf90f30c9503d4c0052 100644
--- a/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod
+++ b/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DuplicatesUnrelatedCluster_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod b/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod
index d7fafa1ae896abd3eea28a53fa9fcbb8b7058c87..03a42bc169f8edf17595f673f799194149d4eb81 100644
--- a/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod
+++ b/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DuplicatesUnrelatedOrganisationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod b/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod
index 3e9a45ecbbbfff22110b739d518816b835bbf750..173666ab5f8a8ffb5ded2760fd5da08851e2e209 100644
--- a/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod
+++ b/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>DuplicatesUnrelatedPersonFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/EmailEdit_view/EmailEdit_view.aod b/neonView/EmailEdit_view/EmailEdit_view.aod
index 4d54a0c3938ec04693ac0a9284652d198448e9fa..9a5c272e3d8535e53bafb82dcf9fbb8c8d6bd564 100644
--- a/neonView/EmailEdit_view/EmailEdit_view.aod
+++ b/neonView/EmailEdit_view/EmailEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmailEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/EmployeeEdit_view/EmployeeEdit_view.aod b/neonView/EmployeeEdit_view/EmployeeEdit_view.aod
index 1042e95db5c0ac321b4814de446693dab8d33432..edbeb25e38bf229386d287e3c8d2d5914ead3b1b 100644
--- a/neonView/EmployeeEdit_view/EmployeeEdit_view.aod
+++ b/neonView/EmployeeEdit_view/EmployeeEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/EmployeeFilter_view/EmployeeFilter_view.aod b/neonView/EmployeeFilter_view/EmployeeFilter_view.aod
index e26d5d132deb990922398f0ffa3a499a089eceee..a2fde8b341971a57e2b0169d24fa014f342edda4 100644
--- a/neonView/EmployeeFilter_view/EmployeeFilter_view.aod
+++ b/neonView/EmployeeFilter_view/EmployeeFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeeFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -16,6 +16,7 @@
       <subtitleField>TITLE</subtitleField>
       <descriptionField>EMAIL_ADDRESS</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>TITLE</element>
       </linkedColumns>
diff --git a/neonView/EmployeeLookup_view/EmployeeLookup_view.aod b/neonView/EmployeeLookup_view/EmployeeLookup_view.aod
index 3e33d83a90b9259be4fc451c19e6c69dcd3efd57..3b6928597d37f305df8c804447dfab607a8b2ace 100644
--- a/neonView/EmployeeLookup_view/EmployeeLookup_view.aod
+++ b/neonView/EmployeeLookup_view/EmployeeLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeeLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/EmployeeMain_view/EmployeeMain_view.aod b/neonView/EmployeeMain_view/EmployeeMain_view.aod
index b997a79e7c272d496acecb6938631a1dcf7f1730..f7db1dcc1222a80bad872958c03d8b3dd8d73c2f 100644
--- a/neonView/EmployeeMain_view/EmployeeMain_view.aod
+++ b/neonView/EmployeeMain_view/EmployeeMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeeMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/EmployeePassword_view/EmployeePassword_view.aod b/neonView/EmployeePassword_view/EmployeePassword_view.aod
index 24cd4cab6c10517554778da33328f4ebb2739b61..9a1c7eccd087f5cc0a9e5b8261ab2a0ecaa2d489 100644
--- a/neonView/EmployeePassword_view/EmployeePassword_view.aod
+++ b/neonView/EmployeePassword_view/EmployeePassword_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeePassword_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/EmployeePermission_view/EmployeePermission_view.aod b/neonView/EmployeePermission_view/EmployeePermission_view.aod
index a25dbbf2be76a77e69f44f9720661d770b59d5ac..4b2cec8d2e68265033ff85386f4557c80a900f71 100644
--- a/neonView/EmployeePermission_view/EmployeePermission_view.aod
+++ b/neonView/EmployeePermission_view/EmployeePermission_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeePermission_view</name>
   <title>Permission</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/EmployeePreview_view/EmployeePreview_view.aod b/neonView/EmployeePreview_view/EmployeePreview_view.aod
index 0e0ae8dfbaa7b4fcbc716433003a6a83fc324b99..d908c43392b62f1c9e92ee188f1aefcf05cda857 100644
--- a/neonView/EmployeePreview_view/EmployeePreview_view.aod
+++ b/neonView/EmployeePreview_view/EmployeePreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeePreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod b/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod
index f50141d69c271df57f36c9bb15e6dd8a2ae94f52..7e3ce4399ecd9414aa61290e3a4289408642ffff 100644
--- a/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod
+++ b/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeeRoleEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod
index 9fdfc39524c508bd19aaf0bba2b6df0d580f1e3e..bf8ef5c4608d78c3488b66b34ab66903f55dda6b 100644
--- a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod
+++ b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeeRoleFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -10,8 +10,8 @@
   <children>
     <tableViewTemplate>
       <name>Table</name>
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
           <name>ab1c8d39-fc29-42e8-8b8e-3557d544b272</name>
diff --git a/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod
index 675bac8f95f58995035bfa418955980782a3bd0a..1ca0a21c3b3b1f0f377840b3d40de6d7b1ddfd9b 100644
--- a/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod
+++ b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeeRoleGenericEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod b/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod
index 284bcdb7387a72e86f487d020615aa096d9e9f10..5d9e965c72bf1676c607cc214674161f9a9a13d1 100644
--- a/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod
+++ b/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeeTokenEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod b/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod
index 166cc2ab1e6cb8dc75097a5f131d48efab6192f2..6b3a70b943841b03d39d554d2253cb527b4d175f 100644
--- a/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod
+++ b/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>EmployeeTokenFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod b/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod
index 1738cd09ed80663b5c93d9ca074a058ece9456fa..a821121f1aeb066c44b02cc36a7428411d46f07b 100644
--- a/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod
+++ b/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ExportTemplateEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod b/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod
index 28c2f1ac0553d748e3630d9858806085e72cccee..28f8da32d3a8828c0f658129fdf81ae91e298b01 100644
--- a/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod
+++ b/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod
@@ -1,13 +1,13 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ExportTemplateFieldList_view</name>
   <title>Field and Position</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
   <layout>
-    <boxLayout>
+    <noneLayout>
       <name>layout</name>
-    </boxLayout>
+    </noneLayout>
   </layout>
   <children>
     <titledListViewTemplate>
diff --git a/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod b/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod
index 985ff2fd25859f802c8c90da0a0a96dfe24045f1..d568ca27848e106958e132471cd1b85b44f96f48 100644
--- a/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod
+++ b/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ExportTemplateFieldMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod
index 71913d29b932f2eab5d76675f19e212225deec36..ecfe1548157a26a029eb9d6ca3dabd552485cadc 100644
--- a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod
+++ b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ExportTemplateFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod b/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod
index 122ea2ead58a8cc934a7fdbdc9a825c5b9bd5de3..9b4d6a978b1032e991dbc8cc4fbc4b483a6b76d7 100644
--- a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod
+++ b/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod
@@ -1,16 +1,17 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ExportTemplatePlaceOfUseList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <noneLayout>
       <name>layout</name>
-    </boxLayout>
+    </noneLayout>
   </layout>
   <children>
     <titledListViewTemplate>
       <name>titledList</name>
       <titleField>PLACEOFUSE</titleField>
+      <titleFieldFullWidth v="true" />
       <entityField>#ENTITY</entityField>
     </titledListViewTemplate>
   </children>
diff --git a/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod b/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod
index 23b08531c9141f6002b38c5a019efacecb008792..c32a8477c19869f6a34cce18c963b2a590aca365 100644
--- a/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod
+++ b/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ExportTemplatePlaceOfUseMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod b/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod
index 0ba6f94603490f5560d45d62200015d62c712f85..4a0bbc8895e323d34c9c8f3a8ff7b770382651c5 100644
--- a/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod
+++ b/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ExportTemplatePreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -24,6 +24,8 @@
     </favoriteViewTemplate>
     <genericViewTemplate>
       <name>generic</name>
+      <showDrawer v="true" />
+      <drawerCaption>Details</drawerCaption>
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
diff --git a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod
index 439c760013d28b5266efd85987147ec4b5917f32..709d825158f14edab0ab418f8b1ed45b4ebcf352 100644
--- a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod
+++ b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ExportTemplateSelectionEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/FacebookTimeline_view/FacebookTimeline_view.aod b/neonView/FacebookTimeline_view/FacebookTimeline_view.aod
index 63c8a443c7d9df1867467e8f6096974016f8d624..83fbdb545d972beb72da1fd56529358b606292e9 100644
--- a/neonView/FacebookTimeline_view/FacebookTimeline_view.aod
+++ b/neonView/FacebookTimeline_view/FacebookTimeline_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>FacebookTimeline_view</name>
   <title>Facebook</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/FavoriteFilter_view/FavoriteFilter_view.aod b/neonView/FavoriteFilter_view/FavoriteFilter_view.aod
index 9e9c42e217c913758cc81b9467a8f1bc32187497..8c4e917b30501a9dbd6f8664de5539838a007c49 100644
--- a/neonView/FavoriteFilter_view/FavoriteFilter_view.aod
+++ b/neonView/FavoriteFilter_view/FavoriteFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>FavoriteFilter_view</name>
   <title>FavoriteFilter_view</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/FavoritePreview_view/FavoritePreview_view.aod b/neonView/FavoritePreview_view/FavoritePreview_view.aod
index c022ed08740c37e07db57fe0dc74d7f3c80c0c1e..045afa25042ce3e24830a48be7ed2bf175b0711c 100644
--- a/neonView/FavoritePreview_view/FavoritePreview_view.aod
+++ b/neonView/FavoritePreview_view/FavoritePreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>FavoritePreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ForecastDrawer_view/ForecastDrawer_view.aod b/neonView/ForecastDrawer_view/ForecastDrawer_view.aod
index 552f0439fb70b646d8b67b4735de20d383ff46bd..9b5aab9333a7baa0d331c54b7c360d8ee5c2cb3c 100644
--- a/neonView/ForecastDrawer_view/ForecastDrawer_view.aod
+++ b/neonView/ForecastDrawer_view/ForecastDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ForecastDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ForecastEdit_view/ForecastEdit_view.aod b/neonView/ForecastEdit_view/ForecastEdit_view.aod
index 9934ef36ef5f52a8512cf278151602d2ab4bdf60..95f7a1089f58033cc45cb2648f7ff27663c87fac 100644
--- a/neonView/ForecastEdit_view/ForecastEdit_view.aod
+++ b/neonView/ForecastEdit_view/ForecastEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ForecastEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/ForecastFilter_view/ForecastFilter_view.aod b/neonView/ForecastFilter_view/ForecastFilter_view.aod
index b048b1260ed99e1cb67af7886a751e95a29ed936..e285996fccb9f5b8f3d241d2a5b5482767a600d3 100644
--- a/neonView/ForecastFilter_view/ForecastFilter_view.aod
+++ b/neonView/ForecastFilter_view/ForecastFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ForecastFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/ForecastPreview_view/ForecastPreview_view.aod b/neonView/ForecastPreview_view/ForecastPreview_view.aod
index 229641c2b8319890b54282f40cabf49644687cc8..c35834022761561c18ba617f2b659fb5e79c9422 100644
--- a/neonView/ForecastPreview_view/ForecastPreview_view.aod
+++ b/neonView/ForecastPreview_view/ForecastPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ForecastPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod
index fcf56cc9a05ed9c6cc4c5d5145a7d0b3bd430c41..a59bdc058ffa33c662c9b706dde81a24eaf42fdc 100644
--- a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod
+++ b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ImportFieldEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod b/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod
index b9d17d1d3cd003da3f1995392aa089745358cd46..776787cbf7a9372f900f055a236f95a66b960bce 100644
--- a/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod
+++ b/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ImportFieldFilterMapping_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod b/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod
index 2528d1aea75e41755dcfa4e7f0e96edee41a0685..c44fe4620cadeac8eb7e9ed4fc3caf01f8ef9299 100644
--- a/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod
+++ b/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ImportFieldFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/IndexSearchView/IndexSearchView.aod b/neonView/IndexSearchView/IndexSearchView.aod
index e1b5c1f412830766e168675952817d5f9cf0c6fd..e492e1b88070ef2fa3116684e9cfce36743194fe 100644
--- a/neonView/IndexSearchView/IndexSearchView.aod
+++ b/neonView/IndexSearchView/IndexSearchView.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>IndexSearchView</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <dashletConfigurations>
diff --git a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod
index 1eaa4714e14fb5817347b81dbe98c2dce9ec86b2..6a44de0c2658277cf68137e3e0dda74339761418 100644
--- a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod
+++ b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KeywordAttributeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod
index 1dfbbf24f27f3fee06f318abd4793ec7e767675b..708464a07c73b84c04cc070ae2dfa6405c9eb422 100644
--- a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod
+++ b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KeywordAttributeFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -15,8 +15,8 @@
       <titleField>NAME</titleField>
       <subtitleField>CONTAINER</subtitleField>
       <descriptionField>TYPE</descriptionField>
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
           <name>94fdd272-46f0-415e-aff8-76789a215921</name>
diff --git a/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod b/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod
index b6ce5f6117a861aa955edc8c917857ad6994661a..c76b4466fa54efcb81082e05d688cf58853ac8f2 100644
--- a/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod
+++ b/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KeywordAttributeRelationRows_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
@@ -12,8 +12,8 @@
     <tableViewTemplate>
       <name>Relations</name>
       <inlineEdit v="true" />
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
           <name>f0eec86d-a223-4208-9e9d-6a6bda1969c8</name>
diff --git a/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod b/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod
index 7d6ae096e0e1cf2ef9693ff3983cde057471b068..41321c05ef422185bcab6f010ac12f6ba614cf19 100644
--- a/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod
+++ b/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KeywordAttriubteRelationTitled_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod
index 0fdbe689d14b787a1f2054e09fd1b2a6dd170449..c4404fb1d10338057829ddfc3dbd246f10e33ce0 100644
--- a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod
+++ b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KeywordEntryEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod
index 24b0e86a951c44e0013ee5006100abe5d1d61cb8..8b73d432ab1e98053b8ad19e49412a8ba2e0c1b6 100644
--- a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod
+++ b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KeywordEntryFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -12,11 +12,16 @@
     <treeTableViewTemplate>
       <name>EntriesTreeTable</name>
       <nodeExpandedField></nodeExpandedField>
+      <hideActions v="false" />
       <hideContentSearch v="false" />
       <entityField>#ENTITY</entityField>
       <defaultGroupFields>
         <element>AB_KEYWORD_CATEGORY_ID</element>
       </defaultGroupFields>
+      <maxDBRow v="400" />
+      <isCreatable v="true" />
+      <isDeletable v="true" />
+      <isEditable v="true" />
       <columns>
         <neonTreeTableColumn>
           <name>6100879d-dc6a-4c7e-b750-f5b7e627f48a</name>
diff --git a/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod b/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod
index e73858d8214b91d818d2db42bb5a5d62fc2035dd..31e0284b8d08e317abd164281b40d65a318dfb58 100644
--- a/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod
+++ b/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KeywordEntryPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod b/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod
index 9e22618d2ed86833d4fde2df6c28d39c0ce27934..09f74129517860a20872a8e1122cd58539f91061 100644
--- a/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod
+++ b/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeDiscussionEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod b/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod
index a63d8a4035d9ff408c139a82080490701cb732a5..d380992c487901387abc0dbec40a8ce308e9f516 100644
--- a/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod
+++ b/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeDiscussionPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod b/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod
index 4a2b372258ad84e1f3092e0ca087b7816fb52a30..9df4f3e0edcc77c63804b0357de062291b605351 100644
--- a/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod
+++ b/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeDiscussionTree_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -12,8 +12,8 @@
     <treeTableViewTemplate>
       <name>Treetable</name>
       <parentField>PARENTENTRY</parentField>
-      <favoriteActionGroup1>Edit_ActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>Edit_ActionGroup</favoriteActionGroup1>
       <title>Discussions</title>
       <columns>
         <neonTreeTableColumn>
diff --git a/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod b/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod
index a54f0dfcf89c265ca7b58ecec40bb77fd73ad3d2..bb3d80ad43e3b60b456b1bde6a5da59214b66651 100644
--- a/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod
+++ b/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeLinkActionList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod b/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod
index 7f554eb698f59c2f647bd6db202de5caf9dcafd4..aae81b0785eb4896a4be8dcf236429fa6effb382 100644
--- a/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod
+++ b/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeLinkEdit_view</name>
   <title>Links</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod b/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod
index 2750e5349551a00f08938f96b2f01dd6afde5ae4..9782206e1693fcb12603e37d59543d910effebd1 100644
--- a/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod
+++ b/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeLinkLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod b/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod
index 7d227e4aedf2c4b1330ddff0ab938f2d3316c1e0..972cbd055fad5f86c86d71e54e57a4a0aa6a4971 100644
--- a/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod
+++ b/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeLinkMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
@@ -13,7 +13,7 @@
     <genericMultipleViewTemplate>
       <name>MultiEdit</name>
       <entityField>#ENTITY</entityField>
-      <title>Verknüpfungen</title>
+      <title>Links</title>
       <columns>
         <neonGenericMultipleTableColumn>
           <name>eb1bc3cb-3cf0-479c-901f-906a7ddde485</name>
diff --git a/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod b/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod
index 243f07da31771f3a4bc59d55b0bd445911a56cb2..0dd316f85998fda17cfb8aeee6ace179d73960fe 100644
--- a/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod
+++ b/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeManagementContent_view</name>
   <title>Content</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod
index 76016ffd8298118c6f3a7375fd4aa6bc8aedd868..37c914fe2abf1efa2feb67148bacf3cb1f396e89 100644
--- a/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod
+++ b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeManagementDetails_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -22,7 +22,7 @@
       <objectType>KNOWLEDGEMANAGEMENT_OBJECTTYPE</objectType>
       <rowId>#UID</rowId>
       <entityField>#ENTITY</entityField>
-      <title>Favoriten</title>
+      <title>Favorites</title>
     </favoriteViewTemplate>
     <genericViewTemplate>
       <name>Details</name>
diff --git a/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod b/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod
index 59ba4694d9e5f78eb08a32cd8e786c84bb700f1b..79fab81963843df59a4188e5c5a10c4bd105c740 100644
--- a/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod
+++ b/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeManagementEdit_view</name>
   <title>Knowledge</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod
index 1a3e3cc6271239aa99187fb13a71b60c626ba071..3b046fcd1fc066bbef1d10f60e9f4f843f46a791 100644
--- a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod
+++ b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeManagementFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod b/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod
index 4117b0b5a161f3324a36f082f702f926c165db4f..4372569ff09aff17f34c5c7bdefe1f888cc0bf63 100644
--- a/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod
+++ b/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeManagementLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -16,10 +16,6 @@
           <name>5a7ab4ba-48a5-47bf-95e9-5631938af5b2</name>
           <entityField>#IMAGE</entityField>
         </neonTableColumn>
-        <neonTableColumn>
-          <name>b715bc0e-a6b7-478d-9aaf-9bc212812650</name>
-          <entityField>ViewKnowledgeNumber</entityField>
-        </neonTableColumn>
         <neonTableColumn>
           <name>4176e200-836f-475c-bc35-ae9c27bf1ed9</name>
           <entityField>TITLE</entityField>
diff --git a/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod b/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod
index ce38d5f1f8603393001360efd7cb312d6c2ae900..e7fb17e2a97a9994ddeb3e6db779ccc69d7df214 100644
--- a/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod
+++ b/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeManagementMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod b/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod
index f7f259faa3660933793d78943ffa7e2ac9142b41..934dbdb3b9951697a1ae5005b492e9fd211393c3 100644
--- a/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod
+++ b/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeManagementPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod b/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod
index d4f7b37a1a2952ff8042e87966bb066201ae40e9..faf34b0503537dd5593a50f5e98d13dd1eac02c6 100644
--- a/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod
+++ b/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeManagementRole_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod b/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod
index adf88a24fbe440fb6a89c003b1612ebd50bb5225..a40f52e9316ffb8cdb27dffc305f5c2957f316dd 100644
--- a/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod
+++ b/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeManagementTimeline_view</name>
   <title>Newsfeed (Preview)</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod
index 75fc94ad122f62b35fc670aba4699d3762a29f03..b60f70cc6c0bdf10ec3cb2affaf836d3f9637df9 100644
--- a/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod
+++ b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeNewsFeed_view</name>
   <title>Newsfeed (Complete Article)</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod b/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod
index a73902b995791516df67c02df9dc437cbb7bb41d..a0aa51c212cb2b739322c8b8dbaf78f94f4b0b5f 100644
--- a/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod
+++ b/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeRoleEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod b/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod
index da077b8269e8934bf550aa8f58d0a86fff88677e..750581360681c2d50fe28a50da76cdb95a385f5a 100644
--- a/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod
+++ b/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeTagList_GenMult_view</name>
   <title>Tags</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod b/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod
index 101604a2f8fa8190a17ed99d3708afa4493756ce..7b27c1aa77c156b10afcd62eeacc9658a9268bbf 100644
--- a/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod
+++ b/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>KnowledgeTagList_view</name>
   <title>Tags</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/LeadFilter_view/LeadFilter_view.aod b/neonView/LeadFilter_view/LeadFilter_view.aod
index bf7495c315c6ac60494154f069f32f8cf8040f6e..3443b42617639003963dfae8ca0a22bc9ee67fd7 100644
--- a/neonView/LeadFilter_view/LeadFilter_view.aod
+++ b/neonView/LeadFilter_view/LeadFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod b/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod
index db90a45194aa8fe489bf299e0eb5eda68c8b6709..40eb204a046152d737c31d613a9f1fa21365909f 100644
--- a/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod
+++ b/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadLogFilterDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/LeadLogFilter_view/LeadLogFilter_view.aod b/neonView/LeadLogFilter_view/LeadLogFilter_view.aod
index b20013103d1378bdbe3e7b0135556c4ab2208df1..b4fbd08607d6ea8ecc55b008288abeda5835753f 100644
--- a/neonView/LeadLogFilter_view/LeadLogFilter_view.aod
+++ b/neonView/LeadLogFilter_view/LeadLogFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadLogFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/LeadLogPreview_view/LeadLogPreview_view.aod b/neonView/LeadLogPreview_view/LeadLogPreview_view.aod
index 60042c599721fb140d2628f25adeb8b94ed998eb..d0fe7ea8108c35d7c92fb280bec2cd7d84470ce9 100644
--- a/neonView/LeadLogPreview_view/LeadLogPreview_view.aod
+++ b/neonView/LeadLogPreview_view/LeadLogPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadLogPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/LeadPreview_view/LeadPreview_view.aod b/neonView/LeadPreview_view/LeadPreview_view.aod
index 1398c08aa47d910f750f11adc69085eb6eb39379..cb45ee89f65f39e09b9b209ffb70e49b272e0ad2 100644
--- a/neonView/LeadPreview_view/LeadPreview_view.aod
+++ b/neonView/LeadPreview_view/LeadPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadPreview_view</name>
   <title>Lead preview</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/LeadTempFilter_view/LeadTempFilter_view.aod b/neonView/LeadTempFilter_view/LeadTempFilter_view.aod
index 942e0084fb6b0327e98b6236d8021489a448bb5e..1f96c357e49a88ccf7314179ed122e38a8b497da 100644
--- a/neonView/LeadTempFilter_view/LeadTempFilter_view.aod
+++ b/neonView/LeadTempFilter_view/LeadTempFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadTempFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod
index f586b8f0c945b5c66e7bd701bb84195e70a875a2..732c03ff12bc7b814f78ad022c0b795fee2f00e8 100644
--- a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod
+++ b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadimportDocEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/LeadimportEdit_view/LeadimportEdit_view.aod b/neonView/LeadimportEdit_view/LeadimportEdit_view.aod
index 349c644cebfa472d11c72813ff520fb9026f14d1..c91a0f5675bc48f3a39e32c37b8eda2390826b85 100644
--- a/neonView/LeadimportEdit_view/LeadimportEdit_view.aod
+++ b/neonView/LeadimportEdit_view/LeadimportEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadimportEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/LeadimportFilter_view/LeadimportFilter_view.aod b/neonView/LeadimportFilter_view/LeadimportFilter_view.aod
index 3593bf9b43010284d5638031b2f739dfad5b394d..5d877503efcf5ae4bc33bfb5c893b37ee2a32312 100644
--- a/neonView/LeadimportFilter_view/LeadimportFilter_view.aod
+++ b/neonView/LeadimportFilter_view/LeadimportFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadimportFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -12,6 +12,7 @@
     <tableViewTemplate>
       <name>leadimports</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <columns>
         <neonTableColumn>
           <name>535f6d45-a69f-48ce-b58c-4aeb8955d8be</name>
@@ -38,6 +39,7 @@
     <treeTableViewTemplate>
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <columns>
         <neonTreeTableColumn>
           <name>5b550d07-b92f-4429-a9f7-e18013aa3280</name>
diff --git a/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod b/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod
index 3712b09ea7a03ce83b57c5fe8acf2133e547560b..619914749e604c8777dead8285f7107834d55d75 100644
--- a/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod
+++ b/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadimportLeadFilter_view</name>
   <title>Transfer data</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -17,6 +17,7 @@
       <actions>
         <element>LeadimportReset</element>
         <element>TransferData</element>
+        <element>ReloadTransferdData</element>
       </actions>
       <entityField>#ENTITY</entityField>
       <devices>
diff --git a/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod b/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod
index 43ffd5910d65d23a079c695b398ffe7f1382a3eb..de58322772769f212a2fbbafd0224bd2c52a0572 100644
--- a/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod
+++ b/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadimportLeadTempFilter_view</name>
   <title>Import Daten</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/LeadimportLog_view/LeadimportLog_view.aod b/neonView/LeadimportLog_view/LeadimportLog_view.aod
index f86a57699c0648cb464c5da951f7db54a55701ad..e875000bd8c88220d80e344635dba6bf57a05f75 100644
--- a/neonView/LeadimportLog_view/LeadimportLog_view.aod
+++ b/neonView/LeadimportLog_view/LeadimportLog_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadimportLog_view</name>
   <title>Logs</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/LeadimportMain_view/LeadimportMain_view.aod b/neonView/LeadimportMain_view/LeadimportMain_view.aod
index e544314e6eec0d0c13516e4fc76a17e2c6643b57..21dca8795337ccaec37844efc65f29311ff46e40 100644
--- a/neonView/LeadimportMain_view/LeadimportMain_view.aod
+++ b/neonView/LeadimportMain_view/LeadimportMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadimportMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod b/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod
index 631a0af57666a7bf3cf19b2d37a15893127d89ae..ad8763a3f5bab961c81128d458f0807074f5045f 100644
--- a/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod
+++ b/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadimportMappingAssistantFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/LeadimportPreview_view/LeadimportPreview_view.aod b/neonView/LeadimportPreview_view/LeadimportPreview_view.aod
index 51dde1c3ce2a2c8ba0adbe0ebb354419b8853239..ea44c29aa4a8ffe68c7c0fa0dfd269d76e63e85b 100644
--- a/neonView/LeadimportPreview_view/LeadimportPreview_view.aod
+++ b/neonView/LeadimportPreview_view/LeadimportPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LeadimportPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
diff --git a/neonView/LetterEdit_view/LetterEdit_view.aod b/neonView/LetterEdit_view/LetterEdit_view.aod
index dedcb0a85823ad0a1a902650cdd4a0f699002ae6..2bfbb04c28997e74b30f66de580c6e0cfef6ab58 100644
--- a/neonView/LetterEdit_view/LetterEdit_view.aod
+++ b/neonView/LetterEdit_view/LetterEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LetterEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod b/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod
index 9e7b7028a13688738d9421e9649c24eb46d79b19..d3af86ff217a3b744192a7c78f1318f3253cb642 100644
--- a/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod
+++ b/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LetterRecipientEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod b/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod
index 2f84db092a8a44cac4cf2d957ccb398f37897c20..a8cc9e21bbd4aafbea9b94870ef658a4ecdc64b2 100644
--- a/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod
+++ b/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LetterRecipientFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -11,10 +11,10 @@
   <children>
     <tableViewTemplate>
       <name>Table</name>
-      <favoriteActionGroup1>recipientActions</favoriteActionGroup1>
       <inlineEdit v="true" />
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>recipientActions</favoriteActionGroup1>
       <columns>
         <neonTableColumn>
           <name>780af131-1a5e-48f2-b97f-2613295f2373</name>
@@ -32,8 +32,8 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
-      <favoriteActionGroup1>recipientActions</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>recipientActions</favoriteActionGroup1>
       <columns>
         <neonTreeTableColumn>
           <name>f338176b-7bc3-4d4c-94cb-304e7e2bd6ed</name>
diff --git a/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod b/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod
index bd094e6c4278df0cd9c5891937d635a8f8059ca4..b9e464ec96f44ccea050c5e3108a3265f57a179b 100644
--- a/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod
+++ b/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LogHistoryFilterDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod b/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod
index 94171bdc4e4febf21937bf3a8f87bb443367162e..77c970012a1efddc320c0db4e5c22126e03133a6 100644
--- a/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod
+++ b/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LogHistoryFilter_view</name>
   <title>Log</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -12,22 +12,22 @@
   <children>
     <timelineViewTemplate>
       <name>LogHistoryTimeLine</name>
-      <favoriteActionGroup1>Reloading_actionGroup</favoriteActionGroup1>
       <dateField>DATE_NEW</dateField>
       <titleField>USER_NEW</titleField>
       <descriptionField>DESCRIPTION</descriptionField>
       <iconIdField>#IMAGE</iconIdField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>Reloading_actionGroup</favoriteActionGroup1>
     </timelineViewTemplate>
     <tableViewTemplate>
       <name>LogHistoryTable</name>
-      <favoriteActionGroup1>Reloading_actionGroup</favoriteActionGroup1>
       <hideContentSearch v="true" />
       <iconField>#IMAGE</iconField>
       <titleField>DATE_NEW</titleField>
       <subtitleField>USER_NEW</subtitleField>
       <descriptionField>DESCRIPTION</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>Reloading_actionGroup</favoriteActionGroup1>
       <isEditable v="false" />
       <columns>
         <neonTableColumn>
@@ -46,8 +46,8 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
-      <favoriteActionGroup1>Reloading_actionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>Reloading_actionGroup</favoriteActionGroup1>
       <columns>
         <neonTreeTableColumn>
           <name>dd9a98c1-3f6e-4bc5-b0bf-272b37112214</name>
diff --git a/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod b/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod
index 3da1a6d76e7468b83076cf7cf19c8bd9958fb3a5..4a4632ff15e12a4bee9ab5d31db7ad7ff55203a6 100644
--- a/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod
+++ b/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>LogHistoryPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod b/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7bc6b98e1de9c6015fe82e48d2d4c5b1b4171f2e
--- /dev/null
+++ b/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod
@@ -0,0 +1,10 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MSTTeamChannelEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+</neonView>
diff --git a/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod b/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..49a58b14aac140e3dd338dc2a934d39ff2e25a15
--- /dev/null
+++ b/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod
@@ -0,0 +1,28 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MSTTeamEditMembers_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>SMALL</size>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Teamname</name>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>b17446e0-ad87-4098-8bd2-de716a8e12ae</name>
+          <entityField>TEAMNAME</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <neonViewReference>
+      <name>189bbef9-e646-416a-835f-6348199dbd24</name>
+      <entityField>TeamMembers</entityField>
+      <view>MSTTeamMemberMultiEdit_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..de78ef8270f391383fabf5790b874dde6e57ec63
--- /dev/null
+++ b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod
@@ -0,0 +1,33 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MSTTeamEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>SMALL</size>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Teamname</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>b69c563c-6230-4bb5-b543-236e0fdc791c</name>
+          <entityField>TEAMNAME</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>258beab2-60c4-4639-a343-3ac67c82dd5a</name>
+          <entityField>DESCRIPTION</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <neonViewReference>
+      <name>702fea38-849e-43c3-82e5-06e7c1251c7f</name>
+      <entityField>TeamMembers</entityField>
+      <view>MSTTeamMemberMultiEdit_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod b/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b3ce9642c95bd0bd6f3d72802cae3a46da66d829
--- /dev/null
+++ b/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod
@@ -0,0 +1,23 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MSTTeamLinkEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>SMALL</size>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>TeamSelection</name>
+      <editMode v="true" />
+      <fields>
+        <entityFieldLink>
+          <name>1b10e15e-0774-430d-8b76-36307abdff33</name>
+          <entityField>TEAM_ID_AND_NAME</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod b/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..bd015c2363c7144d64feeb2b41720c8ac82cd772
--- /dev/null
+++ b/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod
@@ -0,0 +1,29 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MSTTeamMemberList_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <titledListViewTemplate>
+      <name>List</name>
+      <entityField>#ENTITY</entityField>
+      <isDeletable v="false" />
+      <isCreatable v="false" />
+      <isEditable v="false" />
+      <columns>
+        <neonTitledListTableColumn>
+          <name>ea5cdf04-7476-46f0-9df7-41d66e24acad</name>
+          <entityField>ROLE</entityField>
+        </neonTitledListTableColumn>
+        <neonTitledListTableColumn>
+          <name>20efb592-e94f-4f2c-87b5-fea410c4c28a</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTitledListTableColumn>
+      </columns>
+    </titledListViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d0b7385720860123a095e52453864b2d0b8fbc13
--- /dev/null
+++ b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod
@@ -0,0 +1,42 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MSTTeamMemberMultiEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>GenericMultiple</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonGenericMultipleTableColumn>
+          <name>a01d6a4e-1ac4-426c-a891-890bd3e9a4d0</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonGenericMultipleTableColumn>
+        <neonGenericMultipleTableColumn>
+          <name>467ab169-f46a-4036-9e5e-5c480bd947a6</name>
+          <entityField>ROLE</entityField>
+        </neonGenericMultipleTableColumn>
+        <neonGenericMultipleTableColumn>
+          <name>b85c25c8-09dd-4f9a-b0b4-31c0b8a8f12c</name>
+          <entityField>INVITE</entityField>
+        </neonGenericMultipleTableColumn>
+        <neonGenericMultipleTableColumn>
+          <name>82cdb323-6c1a-428f-a01e-e29da9f338ec</name>
+          <entityField>AZUREID</entityField>
+        </neonGenericMultipleTableColumn>
+        <neonGenericMultipleTableColumn>
+          <name>3f766fe4-119d-40df-b071-b7a578af2a71</name>
+          <entityField>AZUREUPN</entityField>
+        </neonGenericMultipleTableColumn>
+        <neonGenericMultipleTableColumn>
+          <name>0b3ac2a1-91ad-4761-9a1d-7231d5b55169</name>
+          <entityField>ISEXTERN</entityField>
+        </neonGenericMultipleTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..8ad34d5058cfde683cb25e1f0f7ac62cb3e3eaee
--- /dev/null
+++ b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod
@@ -0,0 +1,43 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MSTTeamPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <headerFooterLayout>
+      <name>layout</name>
+      <header>Card</header>
+    </headerFooterLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>Card</name>
+      <titleField>TEAMNAME</titleField>
+      <descriptionField>DESCRIPTION</descriptionField>
+      <entityField>#ENTITY</entityField>
+      <isEditable v="false" />
+    </cardViewTemplate>
+    <genericViewTemplate>
+      <name>Info</name>
+      <showDrawer v="true" />
+      <drawerCaption>Details</drawerCaption>
+      <entityField>#ENTITY</entityField>
+      <isEditable v="false" />
+      <fields>
+        <entityFieldLink>
+          <name>2a40804f-ea89-4345-b075-a6eef5fe9961</name>
+          <entityField>ISARCHIVED</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <neonViewReference>
+      <name>b8eda051-1e6f-4c8f-8ef2-2b14d95d90c8</name>
+      <entityField>TeamMembers</entityField>
+      <view>MSTTeamMemberList_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>500dd7ba-366e-4b01-9d28-ebe4672c7380</name>
+      <entityField>Channels</entityField>
+      <view>MSTeamsChannelList_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod b/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..f62b45af2915f89c2845d6ef69f1127f3a6c397e
--- /dev/null
+++ b/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod
@@ -0,0 +1,30 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MSTeamsActivityImportEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>NORMAL</size>
+  <isOverlay v="true" />
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>ChannelSelection</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>099e61f6-6cb8-4390-8b79-8943640bce9f</name>
+          <entityField>CHANNEL_ID</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <neonViewReference>
+      <name>59b3d882-d067-43eb-b19b-f52758c9d10b</name>
+      <entityField>Messages</entityField>
+      <view>MSTeamsMessageFilter_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod b/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..4680aabfb2591078690fc5a3c0e4f1be8bb3ff10
--- /dev/null
+++ b/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod
@@ -0,0 +1,25 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MSTeamsChannelList_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <titledListViewTemplate>
+      <name>ChannelList</name>
+      <entityField>#ENTITY</entityField>
+      <isDeletable v="false" />
+      <isCreatable v="false" />
+      <isEditable v="false" />
+      <columns>
+        <neonTitledListTableColumn>
+          <name>04b88bd4-22f4-4640-a4ff-26d90bc48437</name>
+          <entityField>CHANNELNAME</entityField>
+        </neonTitledListTableColumn>
+      </columns>
+    </titledListViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod b/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..6417cd0609663b6eadde336c6e085f151953ca86
--- /dev/null
+++ b/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod
@@ -0,0 +1,36 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MSTeamsDocumentEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>SMALL</size>
+  <isOverlay v="false" />
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Documents</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <title>Documents</title>
+      <fields>
+        <entityFieldLink>
+          <name>6b122227-6e23-4f25-b66c-05f90e991005</name>
+          <entityField>CHANNEL</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>9a0986dd-68b2-422e-b9b3-27d35640b44b</name>
+          <entityField>DOCUMENTS</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <actionsViewTemplate>
+      <name>Actions</name>
+      <actions>
+        <element>importDocuments</element>
+      </actions>
+    </actionsViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod b/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..13c8fe42c2b6986e8079fd2263269a8c94a8a35b
--- /dev/null
+++ b/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod
@@ -0,0 +1,37 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MSTeamsMessageFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <hideActions v="true" />
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>5db624ad-16d0-4374-be55-1a423fcddefc</name>
+          <entityField>FROM</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>89e753a1-4917-4493-b1c3-3c9d7884b217</name>
+          <entityField>CREATED_DATE_TIME</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>bc343936-a59c-4eb0-b056-c8dc35303385</name>
+          <entityField>MESSAGE</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+    <actionsViewTemplate>
+      <name>ImportAction</name>
+      <actions>
+        <element>importMessages</element>
+      </actions>
+    </actionsViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod b/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod
index 4f1e6c027e81b174f0d013dd70bf385818c74c61..251902906a051ebae83b2af60ca8582cbf7f3cb1 100644
--- a/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod
+++ b/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>MarketingWorkflowLauncherEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/MemberDrawer_view/MemberDrawer_view.aod b/neonView/MemberDrawer_view/MemberDrawer_view.aod
index 945f0f153b3b0aa745f70ca17d5c84be6a2e613d..ad3fd3ab854356a5ccac31e96ce4fbc08c12bbae 100644
--- a/neonView/MemberDrawer_view/MemberDrawer_view.aod
+++ b/neonView/MemberDrawer_view/MemberDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>MemberDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/MemberEdit_view/MemberEdit_view.aod b/neonView/MemberEdit_view/MemberEdit_view.aod
index 68fe23e3d3629907ea6899a19697125d98fe018f..36af10ae4bb0700b7867288b13e92db5b6d668a6 100644
--- a/neonView/MemberEdit_view/MemberEdit_view.aod
+++ b/neonView/MemberEdit_view/MemberEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>MemberEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/MemberFilter_view/MemberFilter_view.aod b/neonView/MemberFilter_view/MemberFilter_view.aod
index b3757f6e68c581d5153c04a3000a04c4b04eabf8..cb5da3bf207051bf6441d349bfb64a6f2b70bd94 100644
--- a/neonView/MemberFilter_view/MemberFilter_view.aod
+++ b/neonView/MemberFilter_view/MemberFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>MemberFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -16,6 +16,10 @@
       <subtitleField>CONTACTROLE</subtitleField>
       <descriptionField>ORGANISATION_NAME</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1></favoriteActionGroup1>
+      <favoriteActionGroup2>MSTeamsActionGroup</favoriteActionGroup2>
+      <linkedColumns />
+      <fixedFilterFields />
       <columns>
         <neonTableColumn>
           <name>8b6b6eeb-6246-414f-95f6-453b71e4a9db</name>
@@ -45,6 +49,10 @@
           <name>bea82980-0639-405a-ab3f-92e45f97090e</name>
           <entityField>MEMBERROLE</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>2a1a3331-5374-4da0-b15d-ede11a691e0a</name>
+          <entityField>MST_MEMBERROLE</entityField>
+        </neonTableColumn>
       </columns>
     </tableViewTemplate>
     <treeTableViewTemplate>
diff --git a/neonView/MemberLookup_view/MemberLookup_view.aod b/neonView/MemberLookup_view/MemberLookup_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7fb657b811a96a618738283ff46533b505e7e94b
--- /dev/null
+++ b/neonView/MemberLookup_view/MemberLookup_view.aod
@@ -0,0 +1,32 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>MemberLookup_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns />
+      <fixedFilterFields />
+      <columns>
+        <neonTableColumn>
+          <name>e3a82f5d-2eee-43bc-8140-e995b23481df</name>
+          <entityField>IMAGE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>1ecfa8b4-05a7-43c8-ac1d-ba4afe8acde0</name>
+          <entityField>PERSON_FULL_NAME</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>5819e0e0-cd6d-4259-b64d-b0ce016f7892</name>
+          <entityField>ORGANISATION_NAME</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ModuleTree_view/ModuleTree_view.aod b/neonView/ModuleTree_view/ModuleTree_view.aod
index 28e2e351e68e45ac572f5fb3e86f45639a7775a9..48d4717055628dc298db310ab8761414da2859f1 100644
--- a/neonView/ModuleTree_view/ModuleTree_view.aod
+++ b/neonView/ModuleTree_view/ModuleTree_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ModuleTree_view</name>
   <title>Tree</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -12,11 +12,11 @@
     <treeViewTemplate>
       <name>Modules</name>
       <parentField>PARENT_ID</parentField>
-      <favoriteActionGroup3></favoriteActionGroup3>
       <titleField>TITLE</titleField>
       <descriptionField>DESCRIPTION</descriptionField>
       <iconField>ICON</iconField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup3></favoriteActionGroup3>
       <title></title>
     </treeViewTemplate>
   </children>
diff --git a/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod b/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod
index e8375e035d436aabcfbef4615b397f5a1f845527..202267cd50f060e9986b06cd886c3138a538401e 100644
--- a/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod
+++ b/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>MyDashboardScoreCard_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <dashletConfigurations>
diff --git a/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod b/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod
index 6aa096872dd77a5ad2b2a1416dc24cf84c5a2ad9..2c67b8c90a7d9a4c44ee74913267712e898bc580 100644
--- a/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod
+++ b/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>MyTurnoverForecastScoreCard_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <dashletConfigurations>
diff --git a/neonView/NotificationFilter_view/NotificationFilter_view.aod b/neonView/NotificationFilter_view/NotificationFilter_view.aod
index 06f0c1d66adbea9ad6562274a4034913c6c5bd0c..35d0b2c6cf579f0957cea817c9ea3919abef9050 100644
--- a/neonView/NotificationFilter_view/NotificationFilter_view.aod
+++ b/neonView/NotificationFilter_view/NotificationFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>NotificationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -28,19 +28,18 @@
   <children>
     <timelineViewTemplate>
       <name>NotificationTimeline</name>
-      <favoriteActionGroup1>setNotificationState</favoriteActionGroup1>
       <dateField>CREATEDAY</dateField>
       <titleField>CAPTION</titleField>
       <descriptionField>DESCRIPTION</descriptionField>
-      <subdescriptionField>CREATEDATE</subdescriptionField>
+      <subdescriptionField>SUBCATEGORY</subdescriptionField>
       <iconIdField>ICON</iconIdField>
       <additionalInfoField>STATE</additionalInfoField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>setNotificationState</favoriteActionGroup1>
       <isEditable v="false" />
     </timelineViewTemplate>
     <tableViewTemplate>
       <name>NotificationTable</name>
-      <favoriteActionGroup1>setNotificationState</favoriteActionGroup1>
       <inlineEdit v="true" />
       <entryAction></entryAction>
       <iconField>ICON</iconField>
@@ -48,8 +47,10 @@
       <subtitleField>RESOLVEDPRIORITY</subtitleField>
       <descriptionField>DESCRIPTION</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>setNotificationState</favoriteActionGroup1>
       <isEditable v="false" />
       <isSaveable v="false" />
+      <informationField>SUBCATEGORY</informationField>
       <columns>
         <neonTableColumn>
           <name>1cff3be1-523d-4a5a-b7d1-389d7cbb726f</name>
@@ -67,6 +68,10 @@
           <name>ff33a6c1-7ac6-4acd-a083-e56a36f89977</name>
           <entityField>DESCRIPTION</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>0e3756eb-05f6-4ab2-a6e9-984f5215f542</name>
+          <entityField>SUBCATEGORY</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>5cb09de4-4413-41e5-8a7c-4970a3cf6a62</name>
           <entityField>STATE</entityField>
@@ -75,8 +80,8 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>NotificationTreeTable</name>
-      <favoriteActionGroup1>setNotificationState</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>setNotificationState</favoriteActionGroup1>
       <isEditable v="false" />
       <columns>
         <neonTreeTableColumn>
@@ -95,6 +100,10 @@
           <name>446c3d62-efa4-4f1a-85d4-e4f6a45019c7</name>
           <entityField>DESCRIPTION</entityField>
         </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6caff937-2e67-4b28-b630-ae1dd5860f3b</name>
+          <entityField>SUBCATEGORY</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>4c82b79e-4c15-4298-bfbb-186c76fc5189</name>
           <entityField>STATE</entityField>
diff --git a/neonView/NotificationPreview_view/NotificationPreview_view.aod b/neonView/NotificationPreview_view/NotificationPreview_view.aod
index dab06ac7ddc3ac1140edb2d4c92ddc3d1ccd867b..589af6eb891f9ad04fad0833d9f9bb80d1aacb2f 100644
--- a/neonView/NotificationPreview_view/NotificationPreview_view.aod
+++ b/neonView/NotificationPreview_view/NotificationPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>NotificationPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
diff --git a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod
index 1d293530d8adbece302fd7d78f19a8cbab02cea0..152976dbfdbfea4d9262362e0102352309c879bb 100644
--- a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod
+++ b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ObjectRelationTypeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod
index cfec0b8f5146c6f2dc3f23eaaab6c5562666f0f4..f68228187102de3ada2b41a26b945aa16c3fe261 100644
--- a/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod
+++ b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ObjectRelationTypeFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -10,10 +10,10 @@
   <children>
     <tableViewTemplate>
       <name>RelationTypes</name>
-      <favoriteActionGroup1>removeActionGroup</favoriteActionGroup1>
       <iconField>ICON</iconField>
       <subtitleField>SOURCE_OBJECT_TYPE</subtitleField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>removeActionGroup</favoriteActionGroup1>
       <columns>
         <neonTableColumn>
           <name>ba68e56c-a1fc-4ebe-b064-912428047a9e</name>
@@ -43,8 +43,8 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
-      <favoriteActionGroup1>removeActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>removeActionGroup</favoriteActionGroup1>
       <columns>
         <neonTreeTableColumn>
           <name>7a7dda46-ba05-4ec8-a95f-8de362f9b5dc</name>
diff --git a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod
index 70ad4cf406d502a6387199bc1526a14c7fbedf3a..4643f25f02e930ee31abbb6dddc56279b2e1dbab 100644
--- a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod
+++ b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ObjectTreeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod
index b846b67b19f115f0ac4c8400e16829cb6b6f4781..148e146480f06306665bcc4d44c298023c59798b 100644
--- a/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod
+++ b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ObjectTreeFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -12,13 +12,13 @@
     <treeViewTemplate>
       <name>ObjectRelations</name>
       <parentField>PARENT_ID</parentField>
-      <favoriteActionGroup1>alter</favoriteActionGroup1>
       <nodeExpandedField>EXPANDED</nodeExpandedField>
       <titleField>TITLE</titleField>
       <descriptionField>INFO</descriptionField>
       <iconField>ICON</iconField>
       <hideContentSearch v="true" />
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>alter</favoriteActionGroup1>
     </treeViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ObservationEdit_view/ObservationEdit_view.aod b/neonView/ObservationEdit_view/ObservationEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..6de89791e0f557e7b7c4c2a0e1448200c5618906
--- /dev/null
+++ b/neonView/ObservationEdit_view/ObservationEdit_view.aod
@@ -0,0 +1,55 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ObservationEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>SMALL</size>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>ObserverationEditGeneric</name>
+      <editMode v="true" />
+      <fields>
+        <entityFieldLink>
+          <name>f519c0bd-8c1c-4a8e-aba2-9bd94d70ccb0</name>
+          <entityField>OBSERVER</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>ac1990a8-fe10-4feb-93b2-7def0792c00f</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>dd066062-3aca-4caf-873e-64328178fe7f</name>
+          <entityField>OBJECT_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>2567d447-a473-4b30-a7a3-9d724f55521e</name>
+          <entityField>OBJECT_FILTER</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>86222081-5406-4a85-8c43-189166566ed1</name>
+          <entityField>OBJECT_FIELD</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>d5f4cb5d-c70d-46fd-ab78-bef71a205f37</name>
+          <entityField>TRIGGEREVENTINSERT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>ba0cde17-7efb-481f-ae6c-6a75c2d41451</name>
+          <entityField>TRIGGEREVENTUPDATE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>c545362b-42d8-4cd5-83c8-9e4f2426c4ca</name>
+          <entityField>TRIGGEREVENTDELETE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>c6fa82e2-5830-46c5-9127-e273ddf5a194</name>
+          <entityField>NOTIFICATION_PRIO</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ObservationFilter_view/ObservationFilter_view.aod b/neonView/ObservationFilter_view/ObservationFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b17d094f4cf58ffcccc1d33423d38a7692489a89
--- /dev/null
+++ b/neonView/ObservationFilter_view/ObservationFilter_view.aod
@@ -0,0 +1,58 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ObservationFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
+  <dashletConfigurations>
+    <neonDashletConfiguration>
+      <name>neonDashletConfiguration</name>
+      <title>Observations</title>
+      <description>Shows all your Observations</description>
+      <fragment>Observation/filter</fragment>
+      <storeRoles />
+      <icon>VAADIN:EYE</icon>
+      <categories>
+        <neonDashletCategory>
+          <name>Notifications</name>
+          <title>Notifications</title>
+        </neonDashletCategory>
+        <neonDashletCategory>
+          <name>Observations</name>
+          <title>Observations</title>
+        </neonDashletCategory>
+      </categories>
+      <parameters>
+        <neonDashletParameter>
+          <name>OnlyMyObservations_param</name>
+          <value>true</value>
+        </neonDashletParameter>
+      </parameters>
+    </neonDashletConfiguration>
+  </dashletConfigurations>
+  <layout>
+    <groupLayout>
+      <name>layout</name>
+    </groupLayout>
+  </layout>
+  <children>
+    <treeTableViewTemplate>
+      <name>ObservationFilterTreeTable</name>
+      <parentField>OBSERVATION_ID</parentField>
+      <favoriteActionGroup1>FilterActions</favoriteActionGroup1>
+      <columns>
+        <neonTreeTableColumn>
+          <name>41441cfe-e8cb-4529-ac79-3f2beeb46232</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>b92aecdb-2cb8-4dfb-bae4-0fde375a58a7</name>
+          <entityField>NOTIFICATION_PRIO</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6f6f11b5-0755-413c-953c-4ee4a55d9e66</name>
+          <entityField>observationType</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ObservationPreview_view/ObservationPreview_view.aod b/neonView/ObservationPreview_view/ObservationPreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..3099234bd8a29475995dcb371421e1411570cf0b
--- /dev/null
+++ b/neonView/ObservationPreview_view/ObservationPreview_view.aod
@@ -0,0 +1,55 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ObservationPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <headerFooterLayout>
+      <name>layout</name>
+      <header>ObservationPreviewCard</header>
+      <footer>ObservationPreviewScoreCard</footer>
+    </headerFooterLayout>
+  </layout>
+  <children>
+    <scoreCardViewTemplate>
+      <name>ObservationPreviewScoreCard</name>
+      <fields>
+        <entityFieldLink>
+          <name>2bd25a93-05e7-4e1d-802c-6021ee0abbb7</name>
+          <entityField>TRIGGEREVENTINSERT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>218807ea-2dca-478c-bf2c-9e1b9f1fe028</name>
+          <entityField>TRIGGEREVENTUPDATE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>b4df872e-2991-4eba-b872-7d2a359e1481</name>
+          <entityField>TRIGGEREVENTDELETE</entityField>
+        </entityFieldLink>
+      </fields>
+    </scoreCardViewTemplate>
+    <cardViewTemplate>
+      <name>ObservationPreviewCard</name>
+      <titleField>OBJECT_TYPE</titleField>
+      <subtitleField>NOTIFICATION_PRIO</subtitleField>
+    </cardViewTemplate>
+    <genericViewTemplate>
+      <name>ObservationPreviewGeneric</name>
+      <showDrawer v="true" />
+      <hideEmptyFields v="true" />
+      <fields>
+        <entityFieldLink>
+          <name>60d02f92-f82a-4496-835f-a84ac0aaba61</name>
+          <entityField>OBJECT_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>c8063a70-4772-4dda-81da-c587ab810c3b</name>
+          <entityField>OBJECT_FILTER</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>9b767452-e034-4e2a-be2d-e038137666b3</name>
+          <entityField>OBJECT_FIELD</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod b/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod
index 8e3b80d75be7463ddd1b1a807871e9ee218dd2cd..bb90fff30a3f3058ead54c485693dd1d14d97953 100644
--- a/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod
+++ b/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferCoverLetter_view</name>
   <title>Cover letter</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OfferDrawer_view/OfferDrawer_view.aod b/neonView/OfferDrawer_view/OfferDrawer_view.aod
index ad0f760504de95d61784caacc0ce8f11916d7eee..543c71098a81415fd16412fdca4d4e3acfbab204 100644
--- a/neonView/OfferDrawer_view/OfferDrawer_view.aod
+++ b/neonView/OfferDrawer_view/OfferDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OfferEdit_view/OfferEdit_view.aod b/neonView/OfferEdit_view/OfferEdit_view.aod
index 3d4de5a7dc5fefa2bd15b025468a6082e10f171d..a5728d886f9082a66ceebc9f0ae867eeb7c3445e 100644
--- a/neonView/OfferEdit_view/OfferEdit_view.aod
+++ b/neonView/OfferEdit_view/OfferEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferEdit_view</name>
   <title>Offer</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -48,13 +48,17 @@
           <name>7ab3eb65-b713-4251-9eb1-3119432565f5</name>
           <entityField>ISOLANGUAGE</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>1e98fe37-8d52-4eef-8825-8ea14e7e20b5</name>
+          <entityField>PAYMENTTERMS</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>7a9b0943-eb06-4b44-a111-ed4e2749da6a</name>
           <entityField>DELIVERYTERMS</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>1e98fe37-8d52-4eef-8825-8ea14e7e20b5</name>
-          <entityField>PAYMENTTERMS</entityField>
+          <name>35804879-e866-477a-a0e6-9fea1506fc1d</name>
+          <entityField>DISCOUNT</entityField>
         </entityFieldLink>
         <entityFieldLink>
           <name>45ddf7c2-531b-4e18-826d-9c652ecc4d01</name>
diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod
index d53c98d2e7d6a5b995bf8f1f99126b6da7dc7ac6..f0ca240b047361acd9f1b322a2e49f72560369f2 100644
--- a/neonView/OfferFilter_view/OfferFilter_view.aod
+++ b/neonView/OfferFilter_view/OfferFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -56,6 +56,7 @@
       <subtitleField>STATUS</subtitleField>
       <descriptionField>NET</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>FullOfferCode</element>
       </linkedColumns>
@@ -97,6 +98,7 @@
     <treeTableViewTemplate>
       <name>TreeTable</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>FullOfferCode</element>
       </linkedColumns>
diff --git a/neonView/OfferMain_view/OfferMain_view.aod b/neonView/OfferMain_view/OfferMain_view.aod
index ef774fd7b7ce0ed91956057023266193f30b3f8f..0fe9ef986d53ab558b5b4993ee73b7b5c5f394a8 100644
--- a/neonView/OfferMain_view/OfferMain_view.aod
+++ b/neonView/OfferMain_view/OfferMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod b/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod
index 399345116e27363f14cf691481a5240c6cdec799..815171e377a0e13cea23551d3e192c30947de4b8 100644
--- a/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod
+++ b/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferPreviewMultiple_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OfferPreview_view/OfferPreview_view.aod b/neonView/OfferPreview_view/OfferPreview_view.aod
index 5cff758218dd6ff41acd29eef9b95cb8b4a985bf..4639d6ac8a2101e9384797f8f97ab17527e9bdbf 100644
--- a/neonView/OfferPreview_view/OfferPreview_view.aod
+++ b/neonView/OfferPreview_view/OfferPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -67,10 +67,18 @@
           <name>d7ca2b66-5e7a-4951-a89b-fbeab0f4f798</name>
           <entityField>NET</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>3e9e37e2-6756-41c2-ace7-6ff094dc78c1</name>
+          <entityField>DISCOUNTED_NET</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>c50dec3f-5468-4196-be88-a413ae3947de</name>
           <entityField>VAT</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>5cc461e4-fd0f-47e6-ab06-886a18621c31</name>
+          <entityField>DISCOUNTED_VAT</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>43972a26-67f7-4fb5-9107-111731d326af</name>
           <entityField>TotalGross</entityField>
@@ -99,6 +107,10 @@
           <name>a3a9ee30-bdd2-4907-b215-d4b4adcc0f1d</name>
           <entityField>DELIVERYTERMS</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>b67494ee-f7c1-4002-a550-50ce1eac5020</name>
+          <entityField>DISCOUNT</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
     <neonViewReference>
diff --git a/neonView/OfferReport_view/OfferReport_view.aod b/neonView/OfferReport_view/OfferReport_view.aod
index 043f3d17d2bb6c8b1798323b2e1741aebc01c485..e45d597ddb2923193934a41112c8c97ea6b9fdf8 100644
--- a/neonView/OfferReport_view/OfferReport_view.aod
+++ b/neonView/OfferReport_view/OfferReport_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferReport_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -11,8 +11,8 @@
     <reportViewTemplate>
       <name>Report</name>
       <reportData>OFFER_REPORT_DATA</reportData>
-      <favoriteActionGroup1>offerReportDispatch</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>offerReportDispatch</favoriteActionGroup1>
     </reportViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod
index d63f165363ed9bd54ee5428ec64eef4672e6bfaa..0c19ce2dd173c2aeb2d075a287a54929bbc00f36 100644
--- a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod
+++ b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferitemEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/OfferitemFilter_view/OfferitemFilter_view.aod b/neonView/OfferitemFilter_view/OfferitemFilter_view.aod
index d98159492edc13fe8e7a1afd14a512839b14fb4d..5986ce5aa6e394d55b2bb6249d6b72a983262e41 100644
--- a/neonView/OfferitemFilter_view/OfferitemFilter_view.aod
+++ b/neonView/OfferitemFilter_view/OfferitemFilter_view.aod
@@ -1,14 +1,81 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferitemFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
+    <multiEditTableViewTemplate>
+      <name>OfferItemsMultiEditTable</name>
+      <editableColumns>
+        <element>PRICE</element>
+        <element>QUANTITY</element>
+        <element>DISCOUNT</element>
+      </editableColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>91e85f61-5e5d-48f8-aeb1-a5740ec07e25</name>
+          <entityField>ITEMPOSITION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0d896874-cdb1-42bb-8a47-8ee61def6177</name>
+          <entityField>PRODUCT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0b493fd0-d94d-4bfa-8533-ff2ad4af7ffb</name>
+          <entityField>QUANTITY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>917406b8-f030-417d-a961-f391655526ec</name>
+          <entityField>UNIT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9e2bcb7e-b042-4f13-946c-0a6422412975</name>
+          <entityField>VAT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>14da5a9f-4fed-4977-aec0-823ab665e1cb</name>
+          <entityField>PRICE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>25d9f682-eb5f-4d96-a040-c3f4522affe7</name>
+          <entityField>DISCOUNT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>7a3b3ce6-a651-4a2a-acfa-0e990fb0b041</name>
+          <entityField>OPTIONAL</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e43213db-8867-495f-8305-3472a8906222</name>
+          <entityField>TotalPrice</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>ee165147-d91b-4d87-bd8a-90428d6f52be</name>
+          <entityField>INFO</entityField>
+        </neonTreeTableColumn>
+      </columns>
+      <editRendererMapping>
+        <rendererMappingEntry>
+          <name>579b1348-58b1-47a8-8f0d-332945d15122</name>
+          <fieldName>PRICE</fieldName>
+          <renderer>numberInput</renderer>
+        </rendererMappingEntry>
+        <rendererMappingEntry>
+          <name>1a439191-22f0-478f-92bd-a652c2de98a0</name>
+          <fieldName>QUANTITY</fieldName>
+          <renderer>numberInput</renderer>
+        </rendererMappingEntry>
+        <rendererMappingEntry>
+          <name>90aea544-f379-4c3f-a806-0240fc9944c5</name>
+          <fieldName>DISCOUNT</fieldName>
+          <renderer>discount</renderer>
+        </rendererMappingEntry>
+      </editRendererMapping>
+    </multiEditTableViewTemplate>
     <treeTableViewTemplate>
       <name>OfferitemsTreeTable</name>
       <entityField>#ENTITY</entityField>
diff --git a/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod b/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod
index faa26adb3f7b5be1a23b88ad77e308919265913b..3931678d959d2a94982c9d558b92763f02d21dec 100644
--- a/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod
+++ b/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferitemMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OfferitemPreview_view/OfferitemPreview_view.aod b/neonView/OfferitemPreview_view/OfferitemPreview_view.aod
index 2b977d802eae4d59aecd4bab71e5be3da4d745e9..9f7d0ff44999ccea8629701d9bca1874b4b75bb6 100644
--- a/neonView/OfferitemPreview_view/OfferitemPreview_view.aod
+++ b/neonView/OfferitemPreview_view/OfferitemPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OfferitemPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrderAddress_view/OrderAddress_view.aod b/neonView/OrderAddress_view/OrderAddress_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..59f34face384bd1a03421c4a7924c884311e403f
--- /dev/null
+++ b/neonView/OrderAddress_view/OrderAddress_view.aod
@@ -0,0 +1,52 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>OrderAddress_view</name>
+  <title>Address</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+      <direction>HORIZONTAL</direction>
+      <maxDirectionElements v="2" />
+      <autoHeight v="false" />
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>PaymentAddress</name>
+      <editMode v="false" />
+      <showDrawer v="true" />
+      <drawerCaption>Payment Address</drawerCaption>
+      <fixedDrawer v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>4064a2da-3ede-4a13-b1d6-2d07822ab451</name>
+          <entityField>ChosenPaymentAddress</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>a6cf6ba2-6865-4735-a1f4-c09e083995ba</name>
+          <entityField>PAYMENTADDRESS</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <genericViewTemplate>
+      <name>DeliveryAddress</name>
+      <editMode v="false" />
+      <showDrawer v="true" />
+      <drawerCaption>Delivery Address</drawerCaption>
+      <fixedDrawer v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>2e9298ca-38e4-4d8e-a20f-a0688a4c4b4e</name>
+          <entityField>ChosenDeliveryAddress</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>d2a2e6e9-069d-464b-aca5-d0c2cbee2c10</name>
+          <entityField>DELIVERYADDRESS</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/OrderCondition_view/OrderCondition_view.aod b/neonView/OrderCondition_view/OrderCondition_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..a7179fb5df70f4f82b40abe1f92b725ff568909c
--- /dev/null
+++ b/neonView/OrderCondition_view/OrderCondition_view.aod
@@ -0,0 +1,61 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>OrderCondition_view</name>
+  <title>Info</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+      <direction>HORIZONTAL</direction>
+      <maxDirectionElements v="2" />
+      <autoHeight v="true" />
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Conditions</name>
+      <showDrawer v="true" />
+      <drawerCaption>Condition</drawerCaption>
+      <fixedDrawer v="true" />
+      <entityField>#ENTITY</entityField>
+      <title>Condition</title>
+      <fields>
+        <entityFieldLink>
+          <name>fdb5d3bd-d8cb-486f-b5dd-d39eade0184a</name>
+          <entityField>PAYMENTTERMS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>c0db758d-be42-47bc-95f4-7ba00544b98c</name>
+          <entityField>DELIVERYTERMS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>3644cf2a-508e-4adb-a821-f4bbe5975db2</name>
+          <entityField>PAYDUEDATE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>a15c9d22-3a20-49e7-a37b-c10443de106a</name>
+          <entityField>CURRENCY</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <genericViewTemplate>
+      <name>Information</name>
+      <showDrawer v="true" />
+      <drawerCaption>Information</drawerCaption>
+      <fixedDrawer v="true" />
+      <entityField>#ENTITY</entityField>
+      <title>Information</title>
+      <fields>
+        <entityFieldLink>
+          <name>ae0e3cd0-deb8-49e0-a0a1-c0212cb036e1</name>
+          <entityField>INFO</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <neonViewReference>
+      <name>437fca44-8d53-426d-b23c-4295acd92d57</name>
+      <entityField>#ENTITY</entityField>
+      <view>OrderAddress_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/OrderDetail_view/OrderDetail_view.aod b/neonView/OrderDetail_view/OrderDetail_view.aod
index aadbb8453e7f449e2358def60654727a7f525055..2ce1a7ed62bd2d84b4fd6adc1915674e9bd4ded7 100644
--- a/neonView/OrderDetail_view/OrderDetail_view.aod
+++ b/neonView/OrderDetail_view/OrderDetail_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderDetail_view</name>
   <title>Cover letter</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrderDunning_view/OrderDunning_view.aod b/neonView/OrderDunning_view/OrderDunning_view.aod
index 4f843d3eba3e55c17e6a6da305cc168428798836..a9ee6965dc972a0a52436da914c781e702834a06 100644
--- a/neonView/OrderDunning_view/OrderDunning_view.aod
+++ b/neonView/OrderDunning_view/OrderDunning_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderDunning_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/OrderEdit_view/OrderEdit_view.aod b/neonView/OrderEdit_view/OrderEdit_view.aod
index a19c19a685ef148cf0de02f16532f8db5a1befd6..576ed09e070e3a3a4006d823f10de1c2cd198487 100644
--- a/neonView/OrderEdit_view/OrderEdit_view.aod
+++ b/neonView/OrderEdit_view/OrderEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderEdit_view</name>
   <title>Receipt</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrderFilter_view/OrderFilter_view.aod b/neonView/OrderFilter_view/OrderFilter_view.aod
index 329fad392be076770b345315d413a0bc5777bf07..8ad63a857793bfd2b7cc400fd6d7864ecfdca6fe 100644
--- a/neonView/OrderFilter_view/OrderFilter_view.aod
+++ b/neonView/OrderFilter_view/OrderFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -51,12 +51,13 @@
   <children>
     <tableViewTemplate>
       <name>Orders</name>
-      <inlineEdit v="true" />
+      <inlineEdit v="false" />
       <iconField>IMAGE</iconField>
       <titleField>SALESORDERCODE</titleField>
       <subtitleField>ORDERSTATUS</subtitleField>
       <descriptionField>NET</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>SALESORDERCODE</element>
       </linkedColumns>
@@ -103,6 +104,7 @@
     <treeTableViewTemplate>
       <name>tree</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>SALESORDERCODE</element>
       </linkedColumns>
diff --git a/neonView/OrderLink_view/OrderLink_view.aod b/neonView/OrderLink_view/OrderLink_view.aod
index 8bb4173a323b3f449ad361f27790d0adb694f0ec..c70ac5d66db832b24065e15aec813127f41507f3 100644
--- a/neonView/OrderLink_view/OrderLink_view.aod
+++ b/neonView/OrderLink_view/OrderLink_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderLink_view</name>
   <title>Links</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrderMain_view/OrderMain_view.aod b/neonView/OrderMain_view/OrderMain_view.aod
index a5a11844e394930740a0a69ca77d4b3e3a7c3653..bb81d1a3d65e4f44f67e6673de0db10fa61477b1 100644
--- a/neonView/OrderMain_view/OrderMain_view.aod
+++ b/neonView/OrderMain_view/OrderMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -19,6 +19,11 @@
       <entityField>Orderitems</entityField>
       <view>OrderitemFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>28bc7bdd-f1d5-49dc-9afb-c2e72ed5410d</name>
+      <entityField>#ENTITY</entityField>
+      <view>OrderCondition_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>1e0af6a9-9bb6-47b5-944b-636d21ac74d2</name>
       <entityField>AttributeTree</entityField>
diff --git a/neonView/OrderPaid_view/OrderPaid_view.aod b/neonView/OrderPaid_view/OrderPaid_view.aod
index e40f7e8d39c7000059825f4f7e6ae47636815e2f..178b0008726d3c6718ffe5c128a7de1ffed90641 100644
--- a/neonView/OrderPaid_view/OrderPaid_view.aod
+++ b/neonView/OrderPaid_view/OrderPaid_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderPaid_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/OrderPreview_view/OrderPreview_view.aod b/neonView/OrderPreview_view/OrderPreview_view.aod
index 65d6f80528d1e6d8634e01378f820dac5cd4b2b8..8710a68db4050c688bf06956d5603a725dd7fec9 100644
--- a/neonView/OrderPreview_view/OrderPreview_view.aod
+++ b/neonView/OrderPreview_view/OrderPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -55,14 +55,6 @@
           <name>22013ee3-0ea1-4830-affd-73429ebd18f5</name>
           <entityField>PAYDATE</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>e58a3aab-0cd7-493f-a24e-ed9e30f970ce</name>
-          <entityField>PAYMENTTERMS</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>8f976c0e-f31d-4482-a8f7-7c93864f1815</name>
-          <entityField>DELIVERYTERMS</entityField>
-        </entityFieldLink>
         <entityFieldLink>
           <name>39a40fbb-b3af-49a2-8ce2-0ece7bbf6fda</name>
           <entityField>ORDERSTATUS</entityField>
diff --git a/neonView/OrderReminderReport_view/OrderReminderReport_view.aod b/neonView/OrderReminderReport_view/OrderReminderReport_view.aod
index 3f14cbe374f95d2b11ac4ab00381148cc597a727..bd209e4db7cc5bdac3b5139820dfd6a0ee043da6 100644
--- a/neonView/OrderReminderReport_view/OrderReminderReport_view.aod
+++ b/neonView/OrderReminderReport_view/OrderReminderReport_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderReminderReport_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -11,8 +11,8 @@
     <reportViewTemplate>
       <name>Report</name>
       <reportData>REMINDER_REPORT_DATA</reportData>
-      <favoriteActionGroup1>reminderReportDispatch</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>reminderReportDispatch</favoriteActionGroup1>
     </reportViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/OrderReport_view/OrderReport_view.aod b/neonView/OrderReport_view/OrderReport_view.aod
index 19703e6ddebd96c97ff069df76d5ea088e71ab4d..7be173a974410512e5e4de9c40b3f26d38cfc3f1 100644
--- a/neonView/OrderReport_view/OrderReport_view.aod
+++ b/neonView/OrderReport_view/OrderReport_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderReport_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -11,9 +11,9 @@
     <reportViewTemplate>
       <name>Report</name>
       <reportData>ORDER_REPORT_DATA</reportData>
+      <entityField>#ENTITY</entityField>
       <favoriteActionGroup1>orderReportDispatch</favoriteActionGroup1>
       <favoriteActionGroup2></favoriteActionGroup2>
-      <entityField>#ENTITY</entityField>
     </reportViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod
index c0c38570eadee29252d37ced1eef7dfd4ac9ea2b..7d0898028183d97a94d5f0933592d02398e24d93 100644
--- a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod
+++ b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderitemEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
index 1f043a66f89ee7a6146dccc272855b0e3ea56a94..bfdfcf077f69b819c2b1d69c38480cdcf7ff5bab 100644
--- a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
+++ b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderitemFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -12,8 +12,8 @@
     <tableViewTemplate>
       <name>Orderitems</name>
       <inlineEdit v="false" />
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
           <name>8c74810d-d127-4e64-8fbf-1b3db1835232</name>
diff --git a/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod b/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod
index 3226af5f67569e45bdfb2df0b3b30201011b4a5e..708d17854c4c5e36cb20e545a5ff32d44644a3f5 100644
--- a/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod
+++ b/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderitemMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod
index 285683df9678c5cd06c1b8360393d941cacc51f0..4a4081bce85de573239dfad8ad8c1b998ffc1b29 100644
--- a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod
+++ b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrderitemPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod b/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod
index 0142bb641ca7347a91c0910c619f6fa4f0402a2a..946e4932d34ce254e98376daadff0d7bae98bd40 100644
--- a/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod
+++ b/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationAttributeRestriction_view</name>
   <title>Attributes</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrganisationClassification/OrganisationClassification.aod b/neonView/OrganisationClassification/OrganisationClassification.aod
index e52d32adb6d25b1e3f46521c93f3e5c3b8ed0484..d01a7d43a0f2e11b2024e5cbfd66cb2bee7ad40a 100644
--- a/neonView/OrganisationClassification/OrganisationClassification.aod
+++ b/neonView/OrganisationClassification/OrganisationClassification.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationClassification</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod b/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod
index fd336c3f6c11c08086375316f52928aef8c0230d..83bd487910c7c79a5be7963674d0b703c93eb2e5 100644
--- a/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod
+++ b/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationClassificationDrawer_view</name>
   <title>Classifications</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod b/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod
index a4d2c1cc14c96ff3837c9357d80d80eae79bfb04..72d99cac595e86b488e878b16d1a700b90746e48 100644
--- a/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod
+++ b/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationClusterMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod b/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod
index d8b313f05e71ea55979012b5c4a2580bab76f432..2a4c5be9bf1a65de26eca8de34e5b08470ce7791 100644
--- a/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod
+++ b/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationConditionPricelist_view</name>
   <title>Conditions</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrganisationCondition_view/OrganisationCondition_view.aod b/neonView/OrganisationCondition_view/OrganisationCondition_view.aod
index 854ba3f3278ad26ebf9b8af357ae94fd610a8344..14afea607ab33f7e32ce95ef7800d3854afa3a46 100644
--- a/neonView/OrganisationCondition_view/OrganisationCondition_view.aod
+++ b/neonView/OrganisationCondition_view/OrganisationCondition_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationCondition_view</name>
   <title>Conditions</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod b/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod
index 9ca2b13a95ae2fa9e7d38071f3c72205625443f3..c950c689201ccb9ecaf23a58f879058711e6c866 100644
--- a/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod
+++ b/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationDuplicatesFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -10,10 +10,10 @@
   <children>
     <tableViewTemplate>
       <name>OrganisationDuplicatesTable</name>
-      <favoriteActionGroup1>OrganisationOpenClusterDetailActionGroup</favoriteActionGroup1>
-      <favoriteActionGroup2>DuplicateClusterActionGroup</favoriteActionGroup2>
       <hideContentSearch v="true" />
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>OrganisationOpenClusterDetailActionGroup</favoriteActionGroup1>
+      <favoriteActionGroup2>DuplicateClusterActionGroup</favoriteActionGroup2>
       <isCreatable v="false" />
       <isDeletable v="false" />
       <isEditable v="false" />
diff --git a/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod b/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod
index c6f447f92c419a924c84f78c1b082744439540ff..ed86c8059d4920b5576f13406c5d4d4f86597b71 100644
--- a/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod
+++ b/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationDuplicatesTab_view</name>
   <title>Organisation duplicates</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod
index 84a9507a937c0dc7ec2b5391f6d062b04c74a32a..d5d389c73d47dae6048cb2b47f5e46fe97bb99c2 100644
--- a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod
+++ b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationEditDefaults_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod
index c76fe9d45886f48246d9396d33efdd8ee2bd970b..cf3a70c9a59119e3e829b6fe0acdc0b53b1a0d10 100644
--- a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod
+++ b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationEdit_view</name>
   <title>Company</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
index 352cf6a5b00464ee39750c73cf87a69e13911931..7e177f506451f69addbbb9ce7681d37515ee36d3 100644
--- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
+++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -49,10 +49,10 @@
   <children>
     <tableViewTemplate>
       <name>Organisations</name>
-      <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
-      <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2>
       <subtitleField>CUSTOMERCODE_DISPLAY_fieldGroup</subtitleField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
+      <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2>
       <linkedColumns>
         <element>NAME</element>
       </linkedColumns>
@@ -98,9 +98,9 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
       <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
       <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2>
-      <entityField>#ENTITY</entityField>
       <linkedColumns>
         <element>NAME</element>
       </linkedColumns>
@@ -158,5 +158,15 @@
         </neonDynamicMultiDataChartColumn>
       </columns>
     </dynamicMultiDataChartViewTemplate>
+    <mapViewTemplate>
+      <name>OrganisationMap</name>
+      <configField>MAP_CONFIG</configField>
+      <autoGeneratedMarkerLatitudeField>STANDARD_LAT</autoGeneratedMarkerLatitudeField>
+      <autoGeneratedMarkerLongitudeField>STANDARD_LON</autoGeneratedMarkerLongitudeField>
+      <autoGeneratedMarkerIconField>#ICON</autoGeneratedMarkerIconField>
+      <autoGeneratedMarkerPopupField>ADDRESS_ID</autoGeneratedMarkerPopupField>
+      <geoJsonFeatureCollectionField>MAP_FEATURE_COLLECTION</geoJsonFeatureCollectionField>
+      <maxDBRow v="400" />
+    </mapViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod b/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod
index 374a165f329d05571c9838e6bcef86e13fd3f9f4..0796a7a59e930f98b2675e3f2f6363749c93c09e 100644
--- a/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod
+++ b/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationLesserNoiseTable_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrganisationLookup_view/OrganisationLookup_view.aod b/neonView/OrganisationLookup_view/OrganisationLookup_view.aod
index 9c93c1e04a657dbc86a7d95e082a0363d5927299..009895e849f60e770714918c405a05d9fa473bfe 100644
--- a/neonView/OrganisationLookup_view/OrganisationLookup_view.aod
+++ b/neonView/OrganisationLookup_view/OrganisationLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrganisationMain_view/OrganisationMain_view.aod b/neonView/OrganisationMain_view/OrganisationMain_view.aod
index 03d6b384c21ee408aa5c686a7c07557fb2ac1516..53376c617bb547c3fcc917315abe17927716bd90 100644
--- a/neonView/OrganisationMain_view/OrganisationMain_view.aod
+++ b/neonView/OrganisationMain_view/OrganisationMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationMain_view</name>
   <title>Attribute</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -56,9 +56,9 @@
       <view>OrganisationAttributeRestriction_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>a806bf0f-6214-4aad-872b-74e6f7fd1ee5</name>
-      <entityField>DistrictResponsibles</entityField>
-      <view>DistrictResponsibleList_view</view>
+      <name>c2b37e4d-3b5e-4e23-8b7c-6da02b27ffc0</name>
+      <entityField>DistrictContacts</entityField>
+      <view>DistrictContactFilter_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>eba90ed2-5e55-4cdb-9e0b-5a09feeb7536</name>
diff --git a/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod b/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod
index e77f5e397f23984b2ef9bd2e187ed776a5c62499..7d7855112e69d1f0c3ca6325d05db720b499f8ec 100644
--- a/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod
+++ b/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationNoNoiseTable_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
index f357dbb8e3613828085c984a75cd5f785487e14b..5a88bf523389fae38dd3fa5da6cc4c61cc7fd319 100644
--- a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
+++ b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrganisationReport_view/OrganisationReport_view.aod b/neonView/OrganisationReport_view/OrganisationReport_view.aod
index 7207ac709a06fb112851a1229acfd313304e14a3..0b44df85e73e2e68febfa623497e1d6d765a07a7 100644
--- a/neonView/OrganisationReport_view/OrganisationReport_view.aod
+++ b/neonView/OrganisationReport_view/OrganisationReport_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationReport_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -11,8 +11,8 @@
     <reportViewTemplate>
       <name>Report</name>
       <reportData>ORGANISATION_REPORT_DATA</reportData>
-      <favoriteActionGroup1>orgReportDispatch</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>orgReportDispatch</favoriteActionGroup1>
     </reportViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod b/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod
index e03f03491883a41e93458fa9f8d9417be34c6f85..436b9d871f4fad7f504e63a84f0f4c9863b8613f 100644
--- a/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod
+++ b/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationTaskAppointment_view</name>
   <title>ToDo</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod b/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod
index 882d51ed0ac05f2bdc396118e68d2b168552a3e7..0b23c809aafd9bedf13995b9049e1be41c8a6ea2 100644
--- a/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod
+++ b/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationUnrelatedDuplicates_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod b/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod
index 023dc0ac7bb87b078826fff776b9ccfcac8eaea9..4ff68af2b17354675066a5d02ecab55aa0bee381 100644
--- a/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod
+++ b/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionActionEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod b/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod
index b6bacb05021e0f3bd500c3295ca6611db913a017..2d6c9490d447652148f61be65e196f2724bfbac2 100644
--- a/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod
+++ b/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionActionFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PermissionActionList_view/PermissionActionList_view.aod b/neonView/PermissionActionList_view/PermissionActionList_view.aod
index 653f3fdae87a779a85bbf230fe5096368bd8a50d..d5df8956e3fd5dec0db8a6e7b8eb4e2c959f4506 100644
--- a/neonView/PermissionActionList_view/PermissionActionList_view.aod
+++ b/neonView/PermissionActionList_view/PermissionActionList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionActionList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -14,8 +14,8 @@
       <fixedDrawer v="true" />
       <entityField>#ENTITY</entityField>
       <isDeletable v="false" />
-      <isEditable v="false" />
       <isCreatable v="false" />
+      <isEditable v="false" />
       <columns>
         <neonTitledListTableColumn>
           <name>cc9ac8b7-e98b-4ce6-a0f0-204c05c1a3ce</name>
diff --git a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod
index 1908377c0268b4d64040d0ea88c08ba1e1313a7d..3cf35da2ac50f15d139ab2629e7609b1cd007ca7 100644
--- a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod
+++ b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionCalendarEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod b/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod
index 1c9bf9635927fc795a5f2a14fffaf695a1acf009..e451d5f93787bfed17e31174632e47789ed5d529 100644
--- a/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod
+++ b/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionCalendarFilterDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod b/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod
index c283d5663990a70fa5aa899d4edb3c5c95ba6dfa..7caa40ebe164c6d284c33b059a262aa5d2dd1f93 100644
--- a/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod
+++ b/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionCalendarFilterReverse_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/neonView/PermissionCalendarFilterReverse_view/documentation.adoc</documentation>
@@ -14,8 +14,8 @@
   <children>
     <tableViewTemplate>
       <name>PermissionCalendarFilterReverseTable</name>
-      <favoriteActionGroup1>AddActionsReverse</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>AddActionsReverse</favoriteActionGroup1>
       <isCreatable v="false" />
       <isEditable v="true" />
       <title></title>
diff --git a/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod b/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod
index e018328dd3420f4f4847c6b5ec3536efa4cbc808..25455c641f65733569c83d43ba89cc77439f7f55 100644
--- a/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod
+++ b/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionCalendarFilter_view</name>
   <title>Their Permissions</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -13,8 +13,8 @@
   <children>
     <tableViewTemplate>
       <name>PermissionCalendarFilterTable</name>
-      <favoriteActionGroup1>AddActions</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>AddActions</favoriteActionGroup1>
       <isCreatable v="false" />
       <isEditable v="true" />
       <title></title>
@@ -39,8 +39,8 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>PermissionCalendarTreeTable</name>
-      <favoriteActionGroup1>AddActions</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>AddActions</favoriteActionGroup1>
       <defaultGroupFields>
         <element>PERMISSION</element>
       </defaultGroupFields>
diff --git a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod
index 8614108694e8ff481877cb77ddc5a9b025969869..c11b339f2a5aeda909142d29021c1f86210f2eed 100644
--- a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod
+++ b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionCalendarPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod
index 8324836e120a4ed202d674e94c79cf0831ff7c35..79c5c2a5b8a27cc8662022ed5f8932845c9a1d5d 100644
--- a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod
+++ b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionDetailEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod b/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod
index a82c84b80dd495eab74cecef2215ea4dc517823f..7d08f710cb6754c166d67032538dafa125d65333 100644
--- a/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod
+++ b/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionDetailFilter_view</name>
   <title>Permission Detail</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod b/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod
index 58b70e10223f062a157149e0e71cca42ec0372d0..0add1e4b7be9fee7f23b7caa8085e80805189313 100644
--- a/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod
+++ b/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionDetailPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod b/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod
index b28164f6d9dccb95fbd013c00da4103101c8a0bb..9bb92085ea8eab1963622074ca1b913b55fd073c 100644
--- a/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod
+++ b/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionMetaDataFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod b/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod
index e668f8fe5ef9e110ccd4c83aefcd1d7a0d90e93b..d00446beb2d5adeaaa20f393ced2d10164cd70dd 100644
--- a/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod
+++ b/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionMetaDataMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod b/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod
index a734740b8e8e13106763e284c2f460463465cf3e..a9d7b695fbc244ada8a0719678fed01d73e8a6b4 100644
--- a/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod
+++ b/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionMetaDataPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod b/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod
index 54950c54a2d7b9aa72a0c2baebf7d90d96bc00de..62df56ab754e64e61e18db84b8bbac589f78d769 100644
--- a/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod
+++ b/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PermissionOverviewFilter_view</name>
   <title>Permission  Overview</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod b/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod
index 0954af14d6b3bfcf30f9f6efbb231eb216f439f1..5202135ce5090b7acdd0b2be53d567ff3c881579 100644
--- a/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod
+++ b/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonAttributeRestriction_view</name>
   <title>Attributes</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/PersonClusterMain_view/PersonClusterMain_view.aod b/neonView/PersonClusterMain_view/PersonClusterMain_view.aod
index 026835113050c6ad2e78420b38c13d0b88e98804..dcbd9badb6fe40452c89f4d4f54cef06fb5a0938 100644
--- a/neonView/PersonClusterMain_view/PersonClusterMain_view.aod
+++ b/neonView/PersonClusterMain_view/PersonClusterMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonClusterMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod b/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod
index 8751b422c1507d1fd3988d1a11b50314e08163b2..69ab192629f5b172f18bc89eaccf2b384fdfb3bb 100644
--- a/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod
+++ b/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonClusterPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PersonDetail_view/PersonDetail_view.aod b/neonView/PersonDetail_view/PersonDetail_view.aod
index 52653526a4c50a578452aa2ee6c1a6f96584c923..13c2c610cb11ddfc5749458d7490806189ee3612 100644
--- a/neonView/PersonDetail_view/PersonDetail_view.aod
+++ b/neonView/PersonDetail_view/PersonDetail_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonDetail_view</name>
   <title>Details</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod b/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod
index eba26d6001879a4e335aa662e47348ff2caabeaa..c11bc1396a663aa39b2f17a1b691d239ddbd79c6 100644
--- a/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod
+++ b/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonDublicatesTab_view</name>
   <title>Person duplicates</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod b/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod
index 476077463fccae17b7899bd4e9672051e2637b08..b331c5900d3b446f8632159bd837bb4968b85ef4 100644
--- a/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod
+++ b/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonDuplicateEditview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod
index 867d991080fbfffa62fafe77c220f81520c6c3c3..0e95f05f72286d568edddded65e4cd0d21031823 100644
--- a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod
+++ b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonDuplicatesFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -10,9 +10,9 @@
   <children>
     <tableViewTemplate>
       <name>PersonDuplicatesTable</name>
-      <favoriteActionGroup1>PersonOpenClusterDetailActionGroup</favoriteActionGroup1>
       <hideContentSearch v="true" />
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>PersonOpenClusterDetailActionGroup</favoriteActionGroup1>
       <isCreatable v="false" />
       <isDeletable v="false" />
       <isEditable v="false" />
@@ -31,8 +31,8 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
-      <favoriteActionGroup1>PersonOpenClusterDetailActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>PersonOpenClusterDetailActionGroup</favoriteActionGroup1>
       <columns>
         <neonTreeTableColumn>
           <name>060c69aa-242a-4141-acd1-b82a76d99521</name>
diff --git a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod
index 2c5a319e4dcf1d40bb2f09bf1c3ba851b978584f..c3149864c8564edf5301d39f0cf2fabe3b294e0a 100644
--- a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod
+++ b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonEditDefaults_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/PersonEdit_view/PersonEdit_view.aod b/neonView/PersonEdit_view/PersonEdit_view.aod
index 68a42fbd3c07c2a996e944274166e17599c4e5bb..1cc1577de9b2c4f38ee39b97d8e14d70a9d74921 100644
--- a/neonView/PersonEdit_view/PersonEdit_view.aod
+++ b/neonView/PersonEdit_view/PersonEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonEdit_view</name>
   <title>Contact</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod
index e4483a7e82c92994013c98bd07d87f12d6f485b2..5b5773e28c32884abec63caabed9275ac57033f9 100644
--- a/neonView/PersonFilter_view/PersonFilter_view.aod
+++ b/neonView/PersonFilter_view/PersonFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -49,14 +49,14 @@
   <children>
     <tableViewTemplate>
       <name>Persons</name>
-      <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
-      <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2>
       <hideActions v="false" />
       <iconField>PICTURE</iconField>
       <titleField>NAME_fieldGroup</titleField>
       <subtitleField>LANGUAGE</subtitleField>
       <descriptionField>ORGANISATION_CONTACTID</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
+      <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2>
       <linkedColumns>
         <element>FIRSTNAME</element>
         <element>LASTNAME</element>
@@ -103,9 +103,9 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
       <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
       <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2>
-      <entityField>#ENTITY</entityField>
       <linkedColumns>
         <element>FIRSTNAME</element>
         <element>LASTNAME</element>
diff --git a/neonView/PersonLookup_view/PersonLookup_view.aod b/neonView/PersonLookup_view/PersonLookup_view.aod
index 8189598556fa8ca040015c925a825370e7085599..58a3abae2fcf011feaab0c4bf636b6cccff4f670 100644
--- a/neonView/PersonLookup_view/PersonLookup_view.aod
+++ b/neonView/PersonLookup_view/PersonLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PersonMain_view/PersonMain_view.aod b/neonView/PersonMain_view/PersonMain_view.aod
index 8ec9c55885ac9df41ea0ee360e7ebd0e64ddaf02..5f2dc5ffa83f910d3b29a2c446453b47ac6d361e 100644
--- a/neonView/PersonMain_view/PersonMain_view.aod
+++ b/neonView/PersonMain_view/PersonMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -44,11 +44,6 @@
       <entityField>#ENTITY</entityField>
       <view>PersonAttributeRestriction_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>1f6cf193-61c3-4681-bafd-c7f9c906cdf6</name>
-      <entityField>Districts</entityField>
-      <view>DistrictList_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>19a5f9ed-228d-4352-9e82-e7aa690648e9</name>
       <entityField>DistrictResponsibles</entityField>
diff --git a/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod b/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod
index 725d0fe4e9e4b5dcc7548fb6848869810224a648..253c58d726b077d4606f7f04df1eadb9e2977d82 100644
--- a/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod
+++ b/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonMultiEditQuickEntry_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod b/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod
index b6cc77de5ba37f1265d55b03eb8f0a6aade1bb22..aa935e6dcc797d7d058e97f740e3a6a8f126f467 100644
--- a/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod
+++ b/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PersonPreview_view/PersonPreview_view.aod b/neonView/PersonPreview_view/PersonPreview_view.aod
index bcbe4a50630ba341e2be3502d4b98a5717ddb07b..78a6c4a8a2280c3450d220b5a7cd3754ba39a40e 100644
--- a/neonView/PersonPreview_view/PersonPreview_view.aod
+++ b/neonView/PersonPreview_view/PersonPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod
index fe2cf08a2a9d4ee4e1cab3d24d0f6962f50e0a0f..01efec93a7b9e484b098b9b382cc75e405f5de15 100644
--- a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod
+++ b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonSimpleList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -11,13 +11,16 @@
   <children>
     <tableViewTemplate>
       <name>Persons</name>
-      <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
       <iconField>PICTURE</iconField>
       <titleField>NAME_fieldGroup</titleField>
       <subtitleField>LANGUAGE</subtitleField>
       <descriptionField>DEPARTMENT</descriptionField>
       <entityField>#ENTITY</entityField>
-      <linkedColumns />
+      <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
+      <linkedColumns>
+        <element>FIRSTNAME</element>
+        <element>LASTNAME</element>
+      </linkedColumns>
       <fixedFilterFields />
       <columns>
         <neonTableColumn>
@@ -64,9 +67,12 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>tree</name>
-      <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
-      <linkedColumns />
+      <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
+      <linkedColumns>
+        <element>FIRSTNAME</element>
+        <element>LASTNAME</element>
+      </linkedColumns>
       <defaultGroupFields />
       <fixedFilterFields />
       <columns>
diff --git a/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod b/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod
index 655e857c6ede9c4a5f55865ab81729fb8f7b786e..02d235196c7b0a862a9125aefc5e9f9d5c7a3cdd 100644
--- a/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod
+++ b/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonTaskAppointment_view</name>
   <title>ToDo</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod b/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod
index e794fe6574244ec5acbcee07cbf4b77a557b56ea..6e183761e7b6f4f5b7f26f5fb9aae7b2e2364ddd 100644
--- a/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod
+++ b/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PrivatePersonFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod b/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod
index 51fe925b724839743ded63ea77cd62a24630ac3e..de138a43230619b9bbe0a97b0ac1273b8f1602f5 100644
--- a/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod
+++ b/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PrivatePersonPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -9,7 +9,7 @@
   </layout>
   <children>
     <neonViewReference>
-      <name>0a66aea5-bf81-47e4-941d-9158ff8f4f51</name>
+      <name>4c340a9c-252c-4708-9206-31ca98c06593</name>
       <entityField>Persons</entityField>
       <view>ContactTitledList_view</view>
     </neonViewReference>
diff --git a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod
index e6bb87875619a9f4abdb677bb4fc2b1c7d55f96c..c4f86613868418cfc1246170412984618710abb5 100644
--- a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod
+++ b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>Prod2ProdEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod b/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod
index ff851bb55876efbd21049f0a5fdbc25231515877..76a29fcce0ac96d7cb145f6c9e6c4394152cbdb8 100644
--- a/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod
+++ b/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>Prod2prodFilter_view</name>
   <title>Parts list</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -12,8 +12,8 @@
     <treeTableViewTemplate>
       <name>PartlistTree</name>
       <parentField>DEST_ID</parentField>
-      <favoriteActionGroup1>alter</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>alter</favoriteActionGroup1>
       <devices>
         <element>MOBILE</element>
         <element>TABLET</element>
diff --git a/neonView/ProductEdit_view/ProductEdit_view.aod b/neonView/ProductEdit_view/ProductEdit_view.aod
index 9b3843d6625e17015dc6ca0bbcbf2ce3b71ec258..a651ea4b7c30d26ad8b6476ca61849cd7cdf0bfd 100644
--- a/neonView/ProductEdit_view/ProductEdit_view.aod
+++ b/neonView/ProductEdit_view/ProductEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ProductEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ProductFilter_view/ProductFilter_view.aod b/neonView/ProductFilter_view/ProductFilter_view.aod
index 326ff54ed32004e8b87f9624e9d530a63f6d2daf..7e5ae1edad896848c4f4eb775eee3e8932ae70dd 100644
--- a/neonView/ProductFilter_view/ProductFilter_view.aod
+++ b/neonView/ProductFilter_view/ProductFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ProductFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -39,6 +39,7 @@
       <descriptionField>STATUS</descriptionField>
       <tilePresentation>PORTRAIT</tilePresentation>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <isCreatable v="true" />
     </tilesViewTemplate>
     <tableViewTemplate>
@@ -46,6 +47,7 @@
       <titleField>PRODUCTNAME</titleField>
       <subtitleField>PRODUCTCODE</subtitleField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>PRODUCTNAME</element>
       </linkedColumns>
@@ -83,6 +85,7 @@
     <treeTableViewTemplate>
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>PRODUCTNAME</element>
       </linkedColumns>
diff --git a/neonView/ProductLookup_view/ProductLookup_view.aod b/neonView/ProductLookup_view/ProductLookup_view.aod
index 36f27e8de47cda7be24e5b9cec345ac9314ad878..880344faf6cff92a935b9e659ecbeed979918480 100644
--- a/neonView/ProductLookup_view/ProductLookup_view.aod
+++ b/neonView/ProductLookup_view/ProductLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ProductLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/neonView/ProductLookup_view/documentation.adoc</documentation>
diff --git a/neonView/ProductMain_view/ProductMain_view.aod b/neonView/ProductMain_view/ProductMain_view.aod
index 485f0f3903371e3a299f061354b64a4ca5aa99cc..a0a76cf31db42a5b373709903fa7318edbecafb1 100644
--- a/neonView/ProductMain_view/ProductMain_view.aod
+++ b/neonView/ProductMain_view/ProductMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ProductMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ProductPreview_view/ProductPreview_view.aod b/neonView/ProductPreview_view/ProductPreview_view.aod
index f54cbe7485233114ad92b6bb0e3f25a605b5be67..c8267c392031eb5b6ad0fac6daf830ce9d15310d 100644
--- a/neonView/ProductPreview_view/ProductPreview_view.aod
+++ b/neonView/ProductPreview_view/ProductPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ProductPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod
index 9e99957324c3dc14566e94bcbf85eaacc6324759..0704f1c49cfc70277c5fb3eaf699eb98a380d8d3 100644
--- a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod
+++ b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ProductpriceEdit_view</name>
   <title>Price list</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
index 13e9c8af8f143a58c18df8f906b2ec74f92a5a7b..896078f3187b59918e2fdbcd20b65824c5e40cd7 100644
--- a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
+++ b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ProductpriceFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -101,5 +101,50 @@
         </neonTreeTableColumn>
       </columns>
     </treeTableViewTemplate>
+    <multiEditTableViewTemplate>
+      <name>MultiEditTable</name>
+      <editableColumns>
+        <element>PRICE</element>
+        <element>VALID_FROM</element>
+        <element>VALID_TO</element>
+      </editableColumns>
+      <columns>
+        <neonTableColumn>
+          <name>d1633bbc-0dcf-422c-a3fd-c00aebdae5fc</name>
+          <entityField>IMAGE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>bd0d7160-38c5-4ef0-b1b7-454812427f25</name>
+          <entityField>PRODUCT_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>4c497e81-7b36-409e-9284-2ac0f6e8428d</name>
+          <entityField>PRICELIST</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>e9a64198-5eef-4935-aad2-19aab772f394</name>
+          <entityField>VALID_FROM</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>440f29d5-7bbf-45f7-ae78-71961eae3ad0</name>
+          <entityField>VALID_TO</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>e742b1c0-627e-4769-b5bc-7dd39168a91a</name>
+          <entityField>PRICE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>6b192adc-d947-467d-9e00-433ee45d9dec</name>
+          <entityField>CURRENCY</entityField>
+        </neonTableColumn>
+      </columns>
+      <editRendererMapping>
+        <rendererMappingEntry>
+          <name>cef3f0d1-1976-4c69-add7-49a37893c56b</name>
+          <fieldName>PRICE</fieldName>
+          <renderer>numberInput</renderer>
+        </rendererMappingEntry>
+      </editRendererMapping>
+    </multiEditTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod b/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod
index 7bc95e10fa1a928b95dcf05bf834a9cdf8309b62..24702f56ada2efdd230ff0f5e1c278cae94d82f9 100644
--- a/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod
+++ b/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ProductpriceForProductFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/ProductpricePreview_view/ProductpricePreview_view.aod b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod
index 3a26703ba701303d135ea2e88634e3c7eeb0c3ab..09bbb44cccc14d88aebe4d919f49d8fb759e7fb5 100644
--- a/neonView/ProductpricePreview_view/ProductpricePreview_view.aod
+++ b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ProductpricePreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod b/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod
index fa3d850171314d13ecb551fd4763a5d89cba15ac..9da1a4286d5817ba9e386a10d834ec29386916da 100644
--- a/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod
+++ b/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>ProductpriceRelation_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod
index 5947deaa524c6d7df96960848e32206aa11fbdb5..63d495112b0504008b1ca9e4693ce557a6b0f9b1 100644
--- a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod
+++ b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>QuickEntryEdit_view</name>
   <title>Quick Entry</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod b/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod
index 4ba793b4c4ab7586cc8f827015b8c23d057311de..7304def3140650b10a388725201048650dfc21b5 100644
--- a/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod
+++ b/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>RoleChildrenEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/RoleChildrenList_view/RoleChildrenList_view.aod b/neonView/RoleChildrenList_view/RoleChildrenList_view.aod
index 149c223100cad88892c6fb383da176b690ca0a30..777f1a116a0ca5eb73734e06ba80cd3a65aca974 100644
--- a/neonView/RoleChildrenList_view/RoleChildrenList_view.aod
+++ b/neonView/RoleChildrenList_view/RoleChildrenList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>RoleChildrenList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -10,16 +10,12 @@
   <children>
     <titledListViewTemplate>
       <name>TitledList</name>
+      <titleField>CHILD_ROLE</titleField>
+      <titleFieldFullWidth v="true" />
       <entityField>#ENTITY</entityField>
-      <isDeletable v="false" />
-      <isEditable v="false" />
-      <isCreatable v="false" />
-      <columns>
-        <neonTitledListTableColumn>
-          <name>0451e2ec-e216-4d4f-8080-e6b9aaf56613</name>
-          <entityField>CHILD_ROLE</entityField>
-        </neonTitledListTableColumn>
-      </columns>
+      <isDeletable v="true" />
+      <isEditable v="true" />
+      <isCreatable v="true" />
     </titledListViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/RoleEdit_view/RoleEdit_view.aod b/neonView/RoleEdit_view/RoleEdit_view.aod
index 48efe4546a64c0e146d9c6bcb5464612aae6047c..5940e50e3297d90ad09225fb846eafee38c4ce4f 100644
--- a/neonView/RoleEdit_view/RoleEdit_view.aod
+++ b/neonView/RoleEdit_view/RoleEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>RoleEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/RoleFilter_view/RoleFilter_view.aod b/neonView/RoleFilter_view/RoleFilter_view.aod
index 41cdd7eb8720909b3d33774e577d596082afe6f6..4bed72f568db63a6f6b26d31236957ebe2bbb820 100644
--- a/neonView/RoleFilter_view/RoleFilter_view.aod
+++ b/neonView/RoleFilter_view/RoleFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>RoleFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/RoleMain_view/RoleMain_view.aod b/neonView/RoleMain_view/RoleMain_view.aod
index 435f4e497dc2c38cbce0befdb5b78646e2e2d94f..debbc73ead58fba5837fd59042e5124a2c91f29e 100644
--- a/neonView/RoleMain_view/RoleMain_view.aod
+++ b/neonView/RoleMain_view/RoleMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>RoleMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/RoleParentList_view/RoleParentList_view.aod b/neonView/RoleParentList_view/RoleParentList_view.aod
index 357f92e53732c38b1de3f682ce6dff5fe3cab63d..7871bc29d23e674719b67828d22054c982085da6 100644
--- a/neonView/RoleParentList_view/RoleParentList_view.aod
+++ b/neonView/RoleParentList_view/RoleParentList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>RoleParentList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -10,16 +10,12 @@
   <children>
     <titledListViewTemplate>
       <name>TitledList</name>
+      <titleField>PARENT_ROLE</titleField>
+      <titleFieldFullWidth v="true" />
       <entityField>#ENTITY</entityField>
       <isDeletable v="false" />
-      <isEditable v="false" />
       <isCreatable v="false" />
-      <columns>
-        <neonTitledListTableColumn>
-          <name>cdc83256-2ea4-4a97-a323-b400a4037915</name>
-          <entityField>PARENT_ROLE</entityField>
-        </neonTitledListTableColumn>
-      </columns>
+      <isEditable v="false" />
     </titledListViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/RolePreview_view/RolePreview_view.aod b/neonView/RolePreview_view/RolePreview_view.aod
index 1c58e0710e0bdc8b9a1ec2c7b7b5ef2c6ebaf53a..5acea2bcd2b39fa445ce83dbe8c5d5f1f4eefe38 100644
--- a/neonView/RolePreview_view/RolePreview_view.aod
+++ b/neonView/RolePreview_view/RolePreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>RolePreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectActivity_view/SalesprojectActivity_view.aod b/neonView/SalesprojectActivity_view/SalesprojectActivity_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..18b9c192333e6822587abb11dd42a723418942c4
--- /dev/null
+++ b/neonView/SalesprojectActivity_view/SalesprojectActivity_view.aod
@@ -0,0 +1,18 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>SalesprojectActivity_view</name>
+  <title>Activity</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <neonViewReference>
+      <name>5564d68a-76dc-44cc-9f76-3894e069c295</name>
+      <entityField>Activities</entityField>
+      <view>ActivityDrawer_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod b/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod
index 585ee4502b9063d4bed17224a54eb0de6691353a..89cb028037cc585f9191dec34a5a020ab1dc7fcb 100644
--- a/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod
+++ b/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectAnalysesPhases_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod
index 31cd51c26b8a97b080e8c01fafaf48c5457215b7..ef955686814c8140184a06f68053a22f682c5451 100644
--- a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod
+++ b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectAnalyses_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod b/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod
index 23306b3f473e21cf166464ba3c879b7b70eea253..e886fb460da1f6a1439fbad4055a213f87f2b0ed 100644
--- a/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod
+++ b/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectConversionRate_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
index 4481932076af4ee1851c16be69a4c154f4455e83..7a2444f88509fb17c60ebaa2b3edcf59e59ebb7e 100644
--- a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
+++ b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectEdit_view</name>
   <title>Sales Project</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
index 6a613d6f1d48c3c725635e204ddbdf21dbcdce35..b02721165a527986f256ba2d41137c3529fde450 100644
--- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
+++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -56,6 +56,7 @@
       <subtitleField>PHASE</subtitleField>
       <descriptionField>CONTACT_ID</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>PROJECTCODE</element>
         <element>PROJECTTITLE</element>
@@ -108,6 +109,7 @@
     <treeTableViewTemplate>
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>PROJECTCODE</element>
         <element>PROJECTTITLE</element>
diff --git a/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod b/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod
index ef00bdc11ab18400b4c337c04b8282e0af7b4075..5529168771af7211ccd35645bbbd9f2651c368bb 100644
--- a/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod
+++ b/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectForecastDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod b/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod
index eb51c7978c5b83cf2c135d4f5b32258314100817..b9df7b607f8a933c220f41853777515c3230e682 100644
--- a/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod
+++ b/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectFurtherInfo_view</name>
   <title>Further informations</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
index 75a74d87d882eb2c72d01a7664e29097819e40ba..43368c01548b156b25d2389c85c30878e3a071c1 100644
--- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
+++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
@@ -1,19 +1,14 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
     <masterSlaveLayout>
       <name>layout</name>
-      <master>04b5a305-b2a6-481a-83a5-1d94bee08143</master>
+      <master>eaee3a77-a3d8-4f0c-969a-da232b0c9537</master>
     </masterSlaveLayout>
   </layout>
   <children>
-    <neonViewReference>
-      <name>04b5a305-b2a6-481a-83a5-1d94bee08143</name>
-      <entityField>#ENTITY</entityField>
-      <view>SalesprojectPreview_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>673a34c7-5781-4c72-b0c8-944f1e5de9c6</name>
       <entityField>#ENTITY</entityField>
@@ -27,7 +22,7 @@
     <neonViewReference>
       <name>d4daa13e-bf57-45e4-af43-d58c04f113f5</name>
       <entityField>#ENTITY</entityField>
-      <view>SalesprojectMemberActivity_view</view>
+      <view>SalesprojectActivity_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>7ac103ea-1131-41e0-85ce-e7d2fc86dfd8</name>
@@ -69,5 +64,10 @@
       <entityField>LogHistories</entityField>
       <view>LogHistoryFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>eaee3a77-a3d8-4f0c-969a-da232b0c9537</name>
+      <entityField>#ENTITY</entityField>
+      <view>SalesprojectPreview_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/SalesprojectMemberActivity_view/SalesprojectMemberActivity_view.aod b/neonView/SalesprojectMemberActivity_view/SalesprojectMemberActivity_view.aod
deleted file mode 100644
index f66c853a872bfe29fb2773fc4ab8b65afc62faaa..0000000000000000000000000000000000000000
--- a/neonView/SalesprojectMemberActivity_view/SalesprojectMemberActivity_view.aod
+++ /dev/null
@@ -1,26 +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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
-  <name>SalesprojectMemberActivity_view</name>
-  <title>Project</title>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-      <direction>VERTICAL</direction>
-      <maxDirectionElements v="0" />
-      <autoHeight v="false" />
-    </boxLayout>
-  </layout>
-  <children>
-    <neonViewReference>
-      <name>ebf752f4-653d-4de3-9c81-c3e6ef692c48</name>
-      <entityField>Members</entityField>
-      <view>MemberDrawer_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>5e9b2286-227e-494d-a252-be29a50a093a</name>
-      <entityField>Activities</entityField>
-      <view>ActivityDrawer_view</view>
-    </neonViewReference>
-  </children>
-</neonView>
diff --git a/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod b/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod
index 8902d3ad1159832dc955e0d0bcb6026ac5fbb30e..c6c6f0717384cbebf1e09fe49a549db70e2d610e 100644
--- a/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod
+++ b/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectMilestoneChartPhase_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod b/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod
index 6509031c9d4a4679a223793017b98a8738421f3a..e87f75eaceba7f4c84e796430b59cc8f1aac694d 100644
--- a/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod
+++ b/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectMilestoneChartState_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod b/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod
index ab5a53fc87ece63bfae6f35cfdfcd5feab9e09e8..965ca73b487c64db86d0d42be802d619a6b1041e 100644
--- a/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod
+++ b/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectMilestoneInfo_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod b/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod
index 0d8d9846cb0a1f542382e7b0a12d167343614d80..e553f0741dea2ccbff42b2791ec9b005ffd85c8f 100644
--- a/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod
+++ b/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectMilestoneSource_view</name>
   <title>Occurrences</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod b/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod
index 94e96382d7df7b9abe57c38ede0122cdf84eb4cb..007a86895c6a8687118cda94c9fa9051eb80b99c 100644
--- a/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod
+++ b/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectMilestone_view</name>
   <title></title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod b/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod
index 4e60e5354ec052d79548231412552b16666b172b..82ff3fd5782ed9701bfaef2fd191edced58649c4 100644
--- a/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod
+++ b/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod b/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod
index 80f3892c0d5b0f8d80ecbb03c6a68a36ad0c70bb..fe0570c2dda3f2b799bad1a03909aa84af12a668 100644
--- a/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod
+++ b/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectOfferForecastChart_view</name>
   <title>Forecast</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod b/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod
index 417bad86b86fd87bc15e89b4b188cfef01dba944..6d39b58450421b59183f1a9945e59d49b3830270 100644
--- a/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod
+++ b/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectOfferForecast_view</name>
   <title></title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod b/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod
index 0485dce3b2893fefcff1a71c4e844df640faafef..64be620c66f0e976034988cee063a49f7ea38638 100644
--- a/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod
+++ b/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectOverview_view</name>
   <title>Overview</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -15,18 +15,14 @@
       <view>SalesprojectPhase_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>7c365878-0f88-4bc3-aed4-0667951e70af</name>
-      <entityField>SalesprojectPhaseMilestones</entityField>
-      <view>SalesprojectMilestoneInfo_view</view>
-      <devices>
-        <element>TABLET</element>
-        <element>DESKTOP</element>
-      </devices>
+      <name>43b80a09-de18-43ac-9d4f-d344cefc0381</name>
+      <entityField>ChecklistEntryValues</entityField>
+      <view>ChecklistEntryValueList_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>729108f8-a054-4ea7-9ef8-14b686c6340b</name>
-      <entityField>SalesprojectForecastCharts</entityField>
-      <view>TurnoverChartForcastDrawer_view</view>
+      <name>3e0550aa-832e-4d6c-a653-f765d92bbd86</name>
+      <entityField>Members</entityField>
+      <view>MemberDrawer_view</view>
     </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/SalesprojectPhaseDefinitionEdit_view/SalesprojectPhaseDefinitionEdit_view.aod b/neonView/SalesprojectPhaseDefinitionEdit_view/SalesprojectPhaseDefinitionEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..eae1779df434052cfd229767a2055813e6527285
--- /dev/null
+++ b/neonView/SalesprojectPhaseDefinitionEdit_view/SalesprojectPhaseDefinitionEdit_view.aod
@@ -0,0 +1,32 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>SalesprojectPhaseDefinitionEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>genericViewTemplate</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>db76830d-c140-4205-bc32-57ad6cb8fb7b</name>
+          <entityField>PHASE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>f0aa8dd0-2cc1-4634-9509-db8b511e602d</name>
+          <entityField>DESCRIPTION</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <neonViewReference>
+      <name>def21f47-1a93-4865-a92c-5015243955e8</name>
+      <entityField>ChecklistEntries</entityField>
+      <view>ChecklistEntryMultiEdit_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectPhaseDefinitionFilter_view/SalesprojectPhaseDefinitionFilter_view.aod b/neonView/SalesprojectPhaseDefinitionFilter_view/SalesprojectPhaseDefinitionFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d7e3bd3cc976e7fb9fa401ffd7984140773daa5d
--- /dev/null
+++ b/neonView/SalesprojectPhaseDefinitionFilter_view/SalesprojectPhaseDefinitionFilter_view.aod
@@ -0,0 +1,38 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>SalesprojectPhaseDefinitionFilter_view</name>
+  <title>Traits</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>tableViewTemplate</name>
+      <iconField>#ICON</iconField>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns />
+      <title>Traits</title>
+      <columns>
+        <neonTableColumn>
+          <name>64a213a9-5429-4e6b-9f7e-e23beb9f15b9</name>
+          <entityField>#ICON</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>7cd4dd99-ffc7-4207-9e81-874a5c71c2c2</name>
+          <entityField>PHASE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>80ea1a84-c6a1-4a12-b2fb-18c78d526119</name>
+          <entityField>traitCount</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>b44c14af-9a2a-405f-8e6a-e02fd9403c20</name>
+          <entityField>DESCRIPTION</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectPhaseDefinitionPreview_view/SalesprojectPhaseDefinitionPreview_view.aod b/neonView/SalesprojectPhaseDefinitionPreview_view/SalesprojectPhaseDefinitionPreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..a2fe192db764301468d9b71198c550cc677cf3de
--- /dev/null
+++ b/neonView/SalesprojectPhaseDefinitionPreview_view/SalesprojectPhaseDefinitionPreview_view.aod
@@ -0,0 +1,26 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>SalesprojectPhaseDefinitionPreview_view</name>
+  <title>Traits</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <headerFooterLayout>
+      <name>layout</name>
+      <header>cardViewTemplate</header>
+    </headerFooterLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>cardViewTemplate</name>
+      <iconField>#ICON</iconField>
+      <titleField>PHASE</titleField>
+      <subtitleField>SalesprojectPhaseFullname</subtitleField>
+      <entityField>#ENTITY</entityField>
+    </cardViewTemplate>
+    <neonViewReference>
+      <name>786e8ccd-b846-4968-8b6c-9e8cf13ba63c</name>
+      <entityField>ChecklistEntries</entityField>
+      <view>ChecklistEntryList_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectPhaseInfoTraitList_view/SalesprojectPhaseInfoTraitList_view.aod b/neonView/SalesprojectPhaseInfoTraitList_view/SalesprojectPhaseInfoTraitList_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..66589d53af1ec84be40e2d12d8226dc700d5edec
--- /dev/null
+++ b/neonView/SalesprojectPhaseInfoTraitList_view/SalesprojectPhaseInfoTraitList_view.aod
@@ -0,0 +1,10 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>SalesprojectPhaseInfoTraitList_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+</neonView>
diff --git a/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod b/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod
index eef84fe84ee45c0c49d1525652b53d27a72e3acb..fc960734a0f1dc37c4475c7907d8256be905797f 100644
--- a/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod
+++ b/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectPhaseStep_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectPhaseTraitFilter_view/SalesprojectPhaseTraitFilter_view.aod b/neonView/SalesprojectPhaseTraitFilter_view/SalesprojectPhaseTraitFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b4c6ab265dad5876897e21bf5e64a523afdf8693
--- /dev/null
+++ b/neonView/SalesprojectPhaseTraitFilter_view/SalesprojectPhaseTraitFilter_view.aod
@@ -0,0 +1,29 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>SalesprojectPhaseTraitFilter_view</name>
+  <title>Traits</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>tableViewTemplate</name>
+      <titleField>type</titleField>
+      <entityField>#ENTITY</entityField>
+      <title>Traits</title>
+      <columns>
+        <neonTableColumn>
+          <name>0aaca67c-075e-412b-9824-6af0166f6189</name>
+          <entityField>type</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>b84fed25-b667-4f8c-8da3-a9a564bf28ca</name>
+          <entityField>TRAIT</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectPhaseTraitList_view/SalesprojectPhaseTraitList_view.aod b/neonView/SalesprojectPhaseTraitList_view/SalesprojectPhaseTraitList_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..9f7e008baa8086119cbd40f08e59c03303807356
--- /dev/null
+++ b/neonView/SalesprojectPhaseTraitList_view/SalesprojectPhaseTraitList_view.aod
@@ -0,0 +1,24 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>SalesprojectPhaseTraitList_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <titledListViewTemplate>
+      <name>titledListViewTemplate</name>
+      <titleField>TYPE</titleField>
+      <entityField>#ENTITY</entityField>
+      <title>Traits</title>
+      <columns>
+        <neonTitledListTableColumn>
+          <name>c462fd98-2e2d-42e1-97b7-30ba126fac55</name>
+          <entityField>TRAIT</entityField>
+        </neonTitledListTableColumn>
+      </columns>
+    </titledListViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectPhaseTraitMultiEdit_view/SalesprojectPhaseTraitMultiEdit_view.aod b/neonView/SalesprojectPhaseTraitMultiEdit_view/SalesprojectPhaseTraitMultiEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..aa775c30bb417736a4f413c0ecfd8295f4c5c662
--- /dev/null
+++ b/neonView/SalesprojectPhaseTraitMultiEdit_view/SalesprojectPhaseTraitMultiEdit_view.aod
@@ -0,0 +1,30 @@
+<?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.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>SalesprojectPhaseTraitMultiEdit_view</name>
+  <title>Traits</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>genericMultipleViewTemplate</name>
+      <entityField>#ENTITY</entityField>
+      <title>Traits</title>
+      <columns>
+        <neonGenericMultipleTableColumn>
+          <name>7c79ae41-c71b-4e1e-8bf9-27ba5c4c5d1a</name>
+          <entityField>TRAIT</entityField>
+          <fullWidth v="true" />
+        </neonGenericMultipleTableColumn>
+        <neonGenericMultipleTableColumn>
+          <name>7ccd8960-ca7a-49d6-98aa-d54ebe658276</name>
+          <entityField>VALUE</entityField>
+          <fullWidth v="true" />
+        </neonGenericMultipleTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod b/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod
index b00f3193429bf48db4d1b872bac8f9fe3dfeb0f3..9081c5409d86c134297c22e0886509dd25375129 100644
--- a/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod
+++ b/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectPhase_view</name>
   <title>Phase</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
index 6733e0803c4eb8e8c368310b7157774f5794ad70..639a366fda49c2757384fcace20e621ee9267310 100644
--- a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
+++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -73,6 +73,10 @@
           <name>bf7ecf7a-3d7f-4ec8-867a-c10ced346343</name>
           <entityField>TIMETRACKINGSUM</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>9379bf8c-32a3-4255-92db-5336e9b2c948</name>
+          <entityField>MST_TEAM_ID</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
     <genericViewTemplate>
diff --git a/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod
index b67ff0f9c15d416e4218167b42334e028067034d..6ab33f8dae76b440a0e06de971c0cb3e01e275cc 100644
--- a/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod
+++ b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectScoreCard_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <dashletConfigurations>
diff --git a/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod b/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod
index abcf6c15c2cf73f3b534325404064d78cda80142..c2fe9fbafb65355f2e54c30ef48f8cf4b695fdc5 100644
--- a/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod
+++ b/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectSourceDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
index 8eae1eea4db9a8177d89abd1d09ff435440f5dd2..0030fedd75e8ed312c84b98de56d3097e16a6c9d 100644
--- a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
+++ b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectSourceEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
index 1573062e0f5267f09a2ea942104d50214b42b571..029252781430d514625ad56eab2a5cf5f55dbea1 100644
--- a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
+++ b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectSourceFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -14,8 +14,8 @@
       <iconField>#ICON</iconField>
       <subtitleField>ENTRYDATE</subtitleField>
       <descriptionField>INFO</descriptionField>
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
           <name>03bb4d6e-0371-4175-aaa2-43d43bd4ff60</name>
diff --git a/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod
index e95fd39683b473ea306e83bf882772047304de6d..cc2f0edd78ffd871b30a352885b01d6d1d63e264 100644
--- a/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod
+++ b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalesprojectSourcePreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalutationEdit_view/SalutationEdit_view.aod b/neonView/SalutationEdit_view/SalutationEdit_view.aod
index 3b05b5cf8a19bc82bfc88167e24b5e83c9f39754..150a3dc3b913ceb88aef481cf708e8b0f0a0b10d 100644
--- a/neonView/SalutationEdit_view/SalutationEdit_view.aod
+++ b/neonView/SalutationEdit_view/SalutationEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalutationEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/SalutationFilter_view/SalutationFilter_view.aod b/neonView/SalutationFilter_view/SalutationFilter_view.aod
index 97206dab2459f0e9c92a37ddd5543dd8da87d729..810ed36f9e5732d09831059226947b6975fee493 100644
--- a/neonView/SalutationFilter_view/SalutationFilter_view.aod
+++ b/neonView/SalutationFilter_view/SalutationFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SalutationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -13,8 +13,8 @@
       <name>Salutations</name>
       <titleField>SALUTATION_TEXT</titleField>
       <subtitleField>TITLE</subtitleField>
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
           <name>ab3b9892-d5fa-4926-baf1-7f070ea7f68a</name>
diff --git a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod
index 7e51a80a470e653c2f6c30c8dd65ea8870f92643..2733594e6f9293762b49ff10492b0bdae905d657 100644
--- a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod
+++ b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SerialLetterAddRecipientsEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod b/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod
index 4ffcf6004ca765546cbbf164895c9977e6f29323..aaa65c4fae204850e0bfbf54b36e7b1feb7ff5c3 100644
--- a/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod
+++ b/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SerialLetterEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod b/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod
index 45ba687a677384da11a8a7434ae28991ecd293c9..3d50021ba764c65d7988291de910790a9c9f4e33 100644
--- a/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod
+++ b/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SerialLetterFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/SerialLetterMain_view/SerialLetterMain_view.aod b/neonView/SerialLetterMain_view/SerialLetterMain_view.aod
index 2c7a25adb74fd3598f77d1590f572caf8739702e..d2a889580c58ae379bc0e97ee742184dd5f3886d 100644
--- a/neonView/SerialLetterMain_view/SerialLetterMain_view.aod
+++ b/neonView/SerialLetterMain_view/SerialLetterMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SerialLetterMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod b/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod
index 38949d8ec56ee5dcb6c082d3897784297e63820a..3b5e8a363151d7a82ec6d9d4badf54ee9beb1a08 100644
--- a/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod
+++ b/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SerialLetterPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/StockCount_view/StockCount_view.aod b/neonView/StockCount_view/StockCount_view.aod
index ace71cf33101c853f465866cc8df870d33056852..65d5046189776e7848bcf1d8593dcf225847e360 100644
--- a/neonView/StockCount_view/StockCount_view.aod
+++ b/neonView/StockCount_view/StockCount_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>StockCount_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/StockEdit_view/StockEdit_view.aod b/neonView/StockEdit_view/StockEdit_view.aod
index 227ab14331f8f89ab39b2ebdf5c5cfc7d77268f0..c2faa6f9581d224fda811866681b653fdfecf553 100644
--- a/neonView/StockEdit_view/StockEdit_view.aod
+++ b/neonView/StockEdit_view/StockEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>StockEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/StockFilter_view/StockFilter_view.aod b/neonView/StockFilter_view/StockFilter_view.aod
index f5c09966799986e6fcc8262addf213c9675e6274..ee17eed70c3c8e352f76b5c96d5c3cb9213dccdd 100644
--- a/neonView/StockFilter_view/StockFilter_view.aod
+++ b/neonView/StockFilter_view/StockFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>StockFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -11,8 +11,8 @@
   <children>
     <tableViewTemplate>
       <name>Stocks</name>
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
           <name>c57eed89-267a-4df6-9ac9-e9b5c5e49794</name>
diff --git a/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod b/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod
index b78c65c1ded5d7eff3dd736a8699d3df1006e274..a8908a9932f906f4b5e1e2232cc8412f193f0adb 100644
--- a/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod
+++ b/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SupportTicketEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod
index 97892017ec83aa58850ddf21f0eee546f860d714..1d9687601da8ca2f0584ad1474b992f2a685cb7a 100644
--- a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod
+++ b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SupportTicketFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -42,6 +42,7 @@
       <descriptionField>TASK_DESCRIPTION</descriptionField>
       <iconIdField>TASK_PRIORITY_ICON</iconIdField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
     </timelineViewTemplate>
     <tableViewTemplate>
       <name>TicketsTable</name>
@@ -50,6 +51,7 @@
       <subtitleField>TASK_STATUS</subtitleField>
       <descriptionField>TASK_REQUESTOR_CONTACT_ID</descriptionField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>TASK_SUBJECT</element>
       </linkedColumns>
@@ -97,6 +99,7 @@
     <treeTableViewTemplate>
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>TASK_SUBJECT</element>
       </linkedColumns>
diff --git a/neonView/SupportTicketMain_view/SupportTicketMain_view.aod b/neonView/SupportTicketMain_view/SupportTicketMain_view.aod
index 8950edb1d40a24bda53be12a73d2b0091e7204aa..8831172e97de1cfd83232e5dafcd545297d1fa68 100644
--- a/neonView/SupportTicketMain_view/SupportTicketMain_view.aod
+++ b/neonView/SupportTicketMain_view/SupportTicketMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SupportTicketMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod b/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod
index 2495b76bd10974dd0de7b545a412cb688445c65a..d36961f5c1b46484112c9d1b6d3202d459f3dfbb 100644
--- a/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod
+++ b/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>SupportTicketPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TaskEdit_view/TaskEdit_view.aod b/neonView/TaskEdit_view/TaskEdit_view.aod
index c5c8e8e10919f377c08d3def4936a5f43df4b7bd..2b71627debb49c2810bf855c04f4d656759c0cd3 100644
--- a/neonView/TaskEdit_view/TaskEdit_view.aod
+++ b/neonView/TaskEdit_view/TaskEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TaskEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod
index 51c579c8f6067b0201dd1a6a38aa1dbae5def381..faced0e15204ee9aeb0cb85500539ea28f127d32 100644
--- a/neonView/TaskFilter_view/TaskFilter_view.aod
+++ b/neonView/TaskFilter_view/TaskFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TaskFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -40,6 +40,7 @@
       <descriptionField>DESCRIPTION</descriptionField>
       <iconIdField>PRIORITY_ICON</iconIdField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
     </timelineViewTemplate>
     <tableViewTemplate>
       <name>TasksTable</name>
@@ -47,6 +48,7 @@
       <titleField>SUBJECT</titleField>
       <subtitleField>STATUS</subtitleField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>SUBJECT</element>
       </linkedColumns>
@@ -93,6 +95,7 @@
     <treeTableViewTemplate>
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>SUBJECT</element>
       </linkedColumns>
diff --git a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod
index aff539498effc88b6aa7e7df2c6d06ff9fa79c3d..b10947f18f69a634a169458f67ad7f9eeadbf82f 100644
--- a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod
+++ b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TaskLinkFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -10,8 +10,8 @@
   <children>
     <tableViewTemplate>
       <name>TaskLinks</name>
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
           <name>4d2b280c-adb2-4977-b70a-ba07959e44c2</name>
diff --git a/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod b/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod
index 01b6cf513e96b3833d133cc74e9a11518c6ae97c..0b3a994afb4dbc874837a1ebb02c8e6c5f903ad7 100644
--- a/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod
+++ b/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TaskLinkMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod b/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod
index 2cdff7d706296f0c3b6693743e684be1540d51b2..a038e359633ae3858a619eaaf0452c1b1f6c08f5 100644
--- a/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod
+++ b/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TaskLinkPreviewList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod b/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod
index 843b7a8efa97cb8796d0079499631f77132e47f4..7877a000a431e6000e15967b2ebb5c37a28b1948 100644
--- a/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod
+++ b/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TaskLinkPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TaskMain_view/TaskMain_view.aod b/neonView/TaskMain_view/TaskMain_view.aod
index a2521203f37e786f6ea4daf6947729759df6debf..a45d31453728d8ffc620ac13e75c8f4b8f73b881 100644
--- a/neonView/TaskMain_view/TaskMain_view.aod
+++ b/neonView/TaskMain_view/TaskMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TaskMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TaskPreview_view/TaskPreview_view.aod b/neonView/TaskPreview_view/TaskPreview_view.aod
index 57ad1bd7618b2e123264c4ddd9f5a04678709078..ba8dd59ebf6637edf37ba1ebf4620fa665d2dde1 100644
--- a/neonView/TaskPreview_view/TaskPreview_view.aod
+++ b/neonView/TaskPreview_view/TaskPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TaskPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod b/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod
index fe8b4ddcb0bd914b31d1191913d0733a9b58ef60..6111ce4bcb92285039ba4e0c0d627a799ba24222 100644
--- a/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod
+++ b/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TimetrackingAnalysesDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod b/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod
index eeddd0f26c96522a0632d0632a7b611ba1d2f966..7d9b1f67ab705dcdc1d6e387e09fef42304b611a 100644
--- a/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod
+++ b/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TimetrackingAnalyses_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod b/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod
index b6bead1d562ef3518abab668271b3c238fcf9042..ef360b0824832cde6204a05fa84e44fd5a55dcb1 100644
--- a/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod
+++ b/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TimetrackingDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod
index fda8ae851dbd856d8437517806b3eabd2a84fe46..58037793ae16b7fa4f5a77c860e1a9bf99768b08 100644
--- a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod
+++ b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TimetrackingEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod b/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod
index 6339c82f7e9e566f2080ca52ae1199e61496f597..4d9d501ac5a478f92707a6b9d34ce190f50fca5f 100644
--- a/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod
+++ b/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TimetrackingFilterAnalyses</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
index 6957ae22e8325b2bcd5e28c08088821c02793e0a..4a8121fb008d4e37a98e6ed4bda8b76cab0fe4dd 100644
--- a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
+++ b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TimetrackingFilter_view</name>
   <title>Timetracking</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod b/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod
index 42f42a0e537aab4f104f9873c76bb7b69f7de2a1..59b86472d8ec3e83e6776e830bd9f79963d02b2b 100644
--- a/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod
+++ b/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TimetrackingPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TimetrackingScore_view/TimetrackingScore_view.aod b/neonView/TimetrackingScore_view/TimetrackingScore_view.aod
index c372f639c0327d404c9e839f4e9ea08e4e1634f3..b917527b2bcccd9eac06417ca3febfea50e85c47 100644
--- a/neonView/TimetrackingScore_view/TimetrackingScore_view.aod
+++ b/neonView/TimetrackingScore_view/TimetrackingScore_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TimetrackingScore_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod b/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod
index 7a404cd983357c2f88c453198178df2ee7e3fb9d..822f538124d54c85668652f8ea98a7d4a0ac7c58 100644
--- a/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod
+++ b/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TurnoverChartForcastDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod b/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod
index 87500b99d683f8d0001384ba295d1a366e199ad3..18f49bdb6b2dddd83f8d73e7a2393055875d4118 100644
--- a/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod
+++ b/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TurnoverChartForecast_view</name>
   <title>Forecast</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/TurnoverChart_view/TurnoverChart_view.aod b/neonView/TurnoverChart_view/TurnoverChart_view.aod
index cbee81a152bb6881933cb9e535b541d9591ca5be..07cfd2bbfef91b1a3274bdacd8cffd37028df55a 100644
--- a/neonView/TurnoverChart_view/TurnoverChart_view.aod
+++ b/neonView/TurnoverChart_view/TurnoverChart_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TurnoverChart_view</name>
   <title></title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/TurnoverTree_view/TurnoverTree_view.aod b/neonView/TurnoverTree_view/TurnoverTree_view.aod
index baa0832aab033a184b4618ca2531c6fb85187447..4b33519dcd4a6551a6b9ca3b46c9926a8e24ae62 100644
--- a/neonView/TurnoverTree_view/TurnoverTree_view.aod
+++ b/neonView/TurnoverTree_view/TurnoverTree_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TurnoverTree_view</name>
   <title>Tree</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/TwitterTimeline_view/TwitterTimeline_view.aod b/neonView/TwitterTimeline_view/TwitterTimeline_view.aod
index 7addad6331caf5831e8c6f491b1ff5e968c1faf5..3fc3b488899be2dfa9a7615ce4e0106ecd23a608 100644
--- a/neonView/TwitterTimeline_view/TwitterTimeline_view.aod
+++ b/neonView/TwitterTimeline_view/TwitterTimeline_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TwitterTimeline_view</name>
   <title>Twitter</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod b/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod
index 8c66fbfacdd6d28d6d0ff3a1c92f57018f1a8f99..66e4be45417302fd74c62d3145cb446e042c1145 100644
--- a/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod
+++ b/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>UniversalFileProcessorDropzone_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <dashletConfigurations>
diff --git a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod
index 819837d79cba717b39de586398655aa11e5719ee..e208b3f319f81b9d2649bbdb2fb1fba3d9d6ea3a 100644
--- a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod
+++ b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>UnlinkedMailFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <dashletConfigurations>
@@ -25,8 +25,8 @@
   <children>
     <tableViewTemplate>
       <name>mailsTable</name>
-      <favoriteActionGroup1>ToActivity_ActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>ToActivity_ActionGroup</favoriteActionGroup1>
       <columns>
         <neonTableColumn>
           <name>f605b2ae-fde3-4df6-9a91-cf32fb5941de</name>
@@ -52,8 +52,8 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
-      <favoriteActionGroup1>ToActivity_ActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>ToActivity_ActionGroup</favoriteActionGroup1>
       <columns>
         <neonTreeTableColumn>
           <name>1d197952-0732-4af2-a41e-7d490c679762</name>
diff --git a/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod b/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod
index e6af4ffd56dae488afc4aa61c46401ab8c0d9e18..1aced0e43b68123385ca94a3a5f765574c397d7a 100644
--- a/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod
+++ b/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>UnlinkedMailMappingLinkList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod
index c7ba9b2d1e72175cbaa81845e87210e0f0925f7b..c400d2f7f5618137b0c17a4a896b004950a6d30e 100644
--- a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod
+++ b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>UnlinkedMailMappingWrapperMapping_view</name>
   <title>Link e-mail addresses to contacts</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/Userhelp_FilterView/Userhelp_FilterView.aod b/neonView/Userhelp_FilterView/Userhelp_FilterView.aod
index f49695009f37880d39cc452bc751d2f4d8e8093a..70eb034bc4c9a03f88238ac69287c471cc6a1165 100644
--- a/neonView/Userhelp_FilterView/Userhelp_FilterView.aod
+++ b/neonView/Userhelp_FilterView/Userhelp_FilterView.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>Userhelp_FilterView</name>
   <title>Userhelp Ressources</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod
index acf9e28696c70df383af74e953dbacfcc380e5be..fdd70da5d99fc842a5d72c26149d604c6f3f021b 100644
--- a/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod
+++ b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>UsersettingsEdit_view</name>
   <title>Settings</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod b/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod
index f03e6f119f02094a0d9da7001fbd23b2fe6bb52d..79683ae83a25b71c65b8efcbe9d0361c4a4c9daa 100644
--- a/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod
+++ b/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>VisitPlanEmployeeWeekEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod b/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod
index bcbed30d9f5fe37b6f0a77b8831fd8d3a854f9dc..fa8ae954af7a0b9703e39279bbd0ea30f52bb482 100644
--- a/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod
+++ b/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod
@@ -1,8 +1,8 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>VisitPlanEmployeeWeekFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterable v="false" />
+  <filterable v="true" />
   <layout>
     <groupLayout>
       <name>layout</name>
@@ -27,6 +27,10 @@
           <name>41e665d5-0bcf-4e33-8080-809d839da15d</name>
           <entityField>YEAR</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>51af23cb-462b-4b40-8923-97c9c9120dd1</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>a5b55587-841d-42d5-b4b7-eff55f6f6858</name>
           <entityField>entriescount</entityField>
@@ -68,6 +72,10 @@
           <name>6a11aa05-3879-46f2-9944-2006d9caf928</name>
           <entityField>YEAR</entityField>
         </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d8055245-cf8d-40cd-ad59-627c564d831d</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>8db139d9-7dd7-4ea2-9c73-1c0accec2ef5</name>
           <entityField>entriescount</entityField>
diff --git a/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod b/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod
index efed26c73422fb753624709735744f7d9e9d9fd9..7c9a20eb60022736b20ff794ed4ce5a5e34c0640 100644
--- a/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod
+++ b/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>VisitPlanEmployeeWeekMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod
index 4ecd6b51c19d3f68d1408be97dbdfbb9dd3e308b..da7c56837c6b96d02e8d629729aeb7063fc4dff2 100644
--- a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod
+++ b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>VisitPlanEmployeeWeekPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod
index 4538a67ca213ef3211f832ad3d82c9471c1f3b19..9bcde0169b908aaad8183990e9e1c80ce9f3004d 100644
--- a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod
+++ b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>VisitPlanEntryEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
@@ -28,6 +28,14 @@
           <name>8347bc87-30f2-4335-b824-23e107b949b5</name>
           <entityField>ENTRYDATE</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>be3740d4-344b-454d-a857-cedfa8177015</name>
+          <entityField>STATUS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>7536ef8c-6888-40b9-adb0-42d8b4e2eb42</name>
+          <entityField>STATUS_APPOINTMENT</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>99cbd482-b7c7-4d5b-a17e-62f9ab49db8a</name>
           <entityField>BEGIN_TIME</entityField>
@@ -36,6 +44,10 @@
           <name>75e0b2e9-2cd9-4d27-a696-2494ec79daa4</name>
           <entityField>END_TIME</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>78926e28-339b-41fe-a9bf-e5a49d07508f</name>
+          <entityField>VISITPLANEMPLOYEEWEEK_INFO</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
   </children>
diff --git a/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod b/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod
index b514c136189ee96998f977ad5b170060dee690b0..3fb2b9ac85512d860ac933badd0c3e9bb364a286 100644
--- a/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod
+++ b/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>VisitPlanEntryFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
@@ -37,8 +37,8 @@
     <treeTableViewTemplate>
       <name>TreeTable</name>
       <parentField>PARENT_ID</parentField>
-      <favoriteActionGroup1>entityActionGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>entityActionGroup</favoriteActionGroup1>
       <columns>
         <neonTreeTableColumn>
           <name>d728f2d9-c223-47fd-9372-6f49203f68fd</name>
@@ -64,6 +64,10 @@
           <name>ca75adc7-5405-40af-bda0-52ae38e61f76</name>
           <entityField>STATUS</entityField>
         </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>c3110972-795b-4293-b082-8f8bee1aa2ec</name>
+          <entityField>STATUS_APPOINTMENT</entityField>
+        </neonTreeTableColumn>
       </columns>
     </treeTableViewTemplate>
   </children>
diff --git a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod
index 1c9a8ce3e804c6a74cf5734705451f6e1b4de277..78b9c3992193140c386b1d8656131a673144b47d 100644
--- a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod
+++ b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>VisitRecommendationEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
@@ -20,6 +20,14 @@
           <name>1356cbc2-646b-4277-8671-cf004b2dffd8</name>
           <entityField>CONTACT_ID</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>10948f7e-84ad-4647-83a0-e5003044c797</name>
+          <entityField>CONTACT_PERSON_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>345df51a-686b-4960-b434-550cb6dd4d08</name>
+          <entityField>RESPONSIBLE</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>f4c34f77-c8cd-4eeb-a172-2f22a6de4029</name>
           <entityField>DUE_DATE</entityField>
diff --git a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod
index 73cb8599d027fdde37a5abd28a12b7baef17c8d1..a0da27ee4752c698ae4ebc2591996ac9a52824b5 100644
--- a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod
+++ b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>VisitRecommendationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -11,23 +11,43 @@
   <children>
     <tableViewTemplate>
       <name>Table</name>
-      <favoriteActionGroup1>newEntryGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>newEntryGroup</favoriteActionGroup1>
       <isCreatable v="true" />
       <isDeletable v="true" />
       <isEditable v="true" />
       <columns>
         <neonTableColumn>
           <name>a87306f5-45b1-4969-ab2b-c6d17b54c4de</name>
-          <entityField>PRIORITY_ICON</entityField>
+          <entityField>ICON</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>44659323-f1b5-4b29-afbf-eac2e7219e30</name>
           <entityField>ORGANISATION_NAME</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>703fad3a-2d5f-47b4-8cc3-edf14c08afef</name>
-          <entityField>ORGANISATION_ADDRESS</entityField>
+          <name>60559b0a-8a8a-4f1c-9489-83a26d250d57</name>
+          <entityField>CONTACT_PERSON_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>b18d68b1-b592-4bd8-977c-3d5fcfbf60da</name>
+          <entityField>STREET</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>8dc56a28-7618-45c2-8bca-ffcb606f29b0</name>
+          <entityField>COUNTRY</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>ad163103-0080-4d54-b6b3-5de8b4653ad8</name>
+          <entityField>ZIP</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>ca45977f-a6f0-4e37-a736-55093b98b738</name>
+          <entityField>CITY</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>4d93f307-d229-43de-8e14-706a725e969e</name>
+          <entityField>RESPONSIBLE</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>964bed99-4474-4017-b3cf-d6d51eb5b445</name>
@@ -41,6 +61,10 @@
           <name>85536cbf-d252-486e-a7ca-74b3ee9486c5</name>
           <entityField>DUE_DATE</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>ced0751b-260b-4b24-b172-7dbcec016b98</name>
+          <entityField>USER_NEW</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>e11dc9c2-73fe-4b21-96cb-01bbe69f6bd7</name>
           <entityField>INFO</entityField>
@@ -49,20 +73,40 @@
     </tableViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
-      <favoriteActionGroup1>newEntryGroup</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>newEntryGroup</favoriteActionGroup1>
       <columns>
         <neonTreeTableColumn>
           <name>297bae8e-4d8c-4fbf-90fb-240369d48ff9</name>
-          <entityField>PRIORITY_ICON</entityField>
+          <entityField>ICON</entityField>
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>621b2bf8-280a-4bd8-9a09-9cad5bdcda0e</name>
           <entityField>ORGANISATION_NAME</entityField>
         </neonTreeTableColumn>
         <neonTreeTableColumn>
-          <name>6a98ae55-a30e-48d4-8d45-1c63a359af5e</name>
-          <entityField>ORGANISATION_ADDRESS</entityField>
+          <name>009230b5-a78c-4718-875e-7ccfe080f348</name>
+          <entityField>CONTACT_PERSON_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>b88f4159-c816-4955-877e-ed973a111aca</name>
+          <entityField>STREET</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>81d71829-f0db-4320-9ae8-b1863b45a7db</name>
+          <entityField>COUNTRY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e6de8082-b860-4d4d-a5a5-f73b62554ea6</name>
+          <entityField>ZIP</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>ece04c42-ac19-4565-829f-0c437e2c97e7</name>
+          <entityField>CITY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>599ba04b-e1c4-4feb-89c9-850ab954fbb2</name>
+          <entityField>RESPONSIBLE</entityField>
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>8f02f53e-8e60-4c71-9fb3-5a4b32ff0776</name>
@@ -76,6 +120,10 @@
           <name>c2ca0e43-a94f-460b-8a42-4bc3a3755213</name>
           <entityField>DUE_DATE</entityField>
         </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>84116ee7-a557-4ef3-892e-beea40c1290a</name>
+          <entityField>USER_NEW</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>2fa2eb56-28ec-4bdc-a1ff-1ca0e26ab407</name>
           <entityField>INFO</entityField>
diff --git a/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod b/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod
index 397400ecf304340d32603fa3a7097fdd2b3a904c..9a92aa4e37b2c147a926f3975c6a6fbcbe563f42 100644
--- a/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod
+++ b/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowDefinitionDiagram_view</name>
   <title>Diagram</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod
index aaaeeeef4d9a1dbf72aa1cf6da8d3ce28c7b59e8..278d86dc99b2c20b652e1bc2b71d58426b391fc9 100644
--- a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod
+++ b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowDefinitionEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod
index 1dbcd14a3d241b0d3e04f5a75c7afc4fc452398b..42998a6023b139ded75e67c107a863aa15644fc2 100644
--- a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod
+++ b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowDefinitionFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -17,14 +17,14 @@
       <descriptionField>DESCRIPTION</descriptionField>
       <infoTopField>VERSION_TITLE</infoTopField>
       <infoBottomField>CATEGORY</infoBottomField>
-      <favoriteActionGroup1>tableActions</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>tableActions</favoriteActionGroup1>
       <isCreatable v="true" />
     </tilesViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
-      <favoriteActionGroup1>tableActions</favoriteActionGroup1>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>tableActions</favoriteActionGroup1>
       <linkedColumns>
         <element>NAME</element>
       </linkedColumns>
diff --git a/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod b/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod
index dcb755770f402a7c1f797babaa533c6cc1abdfb1..b5732f24c8c1b58aeda44d2a25c8cf1881210424 100644
--- a/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod
+++ b/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowDefinitionMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod
index 1a6d0acf0cfaace809129ad4cac82ca4386769b8..dbfa4e647449c5685275d81025071b046e1c39b1 100644
--- a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod
+++ b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowDefinitionPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod b/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod
index 3098a8033b510c3a4f8eb898338adfe5794742f8..10b9d5ab2d2f84e2e332ab029513fc2e2db55010 100644
--- a/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod
+++ b/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowInstanceDiagram_view</name>
   <title>Diagram</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod
index 0f8aee6fc8c9f922bd2e48f634267fe81ccccb8d..b539d00bd07907d45ecf4a402ecab4d304e6f051 100644
--- a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod
+++ b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowInstanceEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod
index fb3eb00201464f3daea0036102070b5f728583a1..bc475442b526f37b3a6f356ad3690a69dae8ca1b 100644
--- a/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod
+++ b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowInstanceFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod
index b823e3040909d66c3acb0bfa839c6f27769c359e..15e39090c6fdd32c6d7642d86d0ba50851de9a4e 100644
--- a/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod
+++ b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowInstanceHistoryFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod b/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod
index 238558d5d61b83adcc93562fe393831ce39e43af..7b8ff8055e6caeb1736ff8b2920e4249cf9162d6 100644
--- a/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod
+++ b/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowInstanceMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod
index dfe0c117d85e19b1e34051c9df4150b8cfce9e67..3761673b2eead53ecb922b270f152c4de817fe90 100644
--- a/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod
+++ b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowInstancePreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod b/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod
index 29da6b3f7d6512f35153cdcfe3eab89dd672d20c..9dd7e273cf243ac1766c3d284698e49dae2efc14 100644
--- a/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod
+++ b/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowInstanceTasks_view</name>
   <title>Tasks</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod
index db773e993fdb156c48c225f17ecff726183f917e..0f349af11894d027e6110a72d0ec04fe05a15735 100644
--- a/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod
+++ b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowLauncherEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod b/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod
index 9d0b6b9271e3504cc03625c27710f4e45d8672fe..e3e7d5d635997d13482aad4f8a20242b0328a2e0 100644
--- a/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod
+++ b/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowModelEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod b/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod
index cabc52d8e4857047e0f6a5fd8a71af4f31776e54..51a77454797be0e7d6fd3e8fb48f1fc394b3a58e 100644
--- a/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod
+++ b/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowModelLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod
index 443eeb0d5e4cadadac035b615a124d7790133bcc..75e7a0cce9b0c394d6db4b5fb55defd9bca1c970 100644
--- a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod
+++ b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowSignalEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod b/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod
index e0fe81e1c7622739a80d38d105f284b76a39fc49..6fc9adf41c64d7ec4886168b16fccf80c89730f7 100644
--- a/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod
+++ b/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowSignalFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod b/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod
index 1ab2d17c6529a917608707c3ee5623542d3e5231..bc01a3b88eb492a7a2f32ffcc2902d1e74bdcb92 100644
--- a/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod
+++ b/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowSignalPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod b/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod
index 6bfaae55e6cc43112696ed07c5bdff43f7e9ef10..2ced9ab248fdce98ea9019cc4442571c4c8c811e 100644
--- a/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod
+++ b/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowStartConfigFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -11,8 +11,8 @@
     <tableViewTemplate>
       <name>Table</name>
       <inlineEdit v="true" />
-      <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
           <name>4935777f-8760-4759-a70a-0ad64c506418</name>
diff --git a/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod b/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod
index 5f2d8f1a150b19668684fa27ba246f08a2b945cd..ae6a77c113e0b82b8ec91dec6068ec932ad7b069 100644
--- a/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod
+++ b/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowTaskDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod
index 2165a6d4beccefa789150e0f90f1892512098b57..87bdaae89aa7323a5ff122f5cc0158b7672f650d 100644
--- a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod
+++ b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowTaskFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod b/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod
index f14afb6e132c8dd3e14539e63182acf9c1e2ec0a..36e4af0fa8fb3478d14b815251b644002c6cb581 100644
--- a/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod
+++ b/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowTaskFinishedDrawer_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod b/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod
index babb19cdf098d15cf67560f94e2e79d7f325365e..821da59a21a20cb230769961e521de1930ae3b9b 100644
--- a/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod
+++ b/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowTaskFinishedList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod
index 956ea0c55e698c71f45e9942bc3f96692b455037..4fee8776f4b3d5fd76dd7419bf026c72158d78c3 100644
--- a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod
+++ b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowTaskForm_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod b/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod
index 3f84a4ee80022dafeaf33196618b5ab328183672..a44f56fe0c60d95c53da95ce9be661d84e47faec 100644
--- a/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod
+++ b/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowTaskList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod b/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod
index 1c914a6a6fe83cf0a129f61943fa53b5620ac678..615373f9f15f4e609ffbe7ca62e1fdeb3eb5d0c4 100644
--- a/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod
+++ b/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowTaskOwn_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -32,18 +32,18 @@
   <children>
     <timelineViewTemplate>
       <name>Timeline</name>
-      <favoriteActionGroup1>tableActions</favoriteActionGroup1>
       <dateField>CREATE_TIME</dateField>
       <titleField>NAME</titleField>
       <descriptionField>DESCRIPTION</descriptionField>
       <iconIdField>ICON</iconIdField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>tableActions</favoriteActionGroup1>
     </timelineViewTemplate>
     <tableViewTemplate>
       <name>Table</name>
-      <favoriteActionGroup1>tableActions</favoriteActionGroup1>
       <iconField>#IMAGE</iconField>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>tableActions</favoriteActionGroup1>
       <linkedColumns>
         <element>NAME</element>
       </linkedColumns>
diff --git a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod
index d6e7dc40366d63d5097d3335b64559b9c9afb87e..460c6ea0cbedbdc082eaf60c35e07a7b24e255c5 100644
--- a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod
+++ b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowTaskPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
diff --git a/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod b/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod
index be4b8f4662f32ef8902873427a8573176c1001eb..a359bb8cc2ae3e588493210b2f249c5c1ed6ecde 100644
--- a/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod
+++ b/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod
@@ -1,5 +1,5 @@
 <?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.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>WorkflowVariableValueFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/others/genJsdoc.bat b/others/genJsdoc.bat
deleted file mode 100644
index db0775bbbb307e47f3b77efabb48da3851945d61..0000000000000000000000000000000000000000
--- a/others/genJsdoc.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-SET mypath=%~dp0
-
-jsdoc -r %mypath:~0,-1%\..\process -d %mypath:~0,-1%\jsdocOut
\ No newline at end of file
diff --git a/others/guide/CodingGuidelines.adoc b/others/guide/CodingGuidelines.adoc
deleted file mode 100644
index 7fbd1bf92c5ecca6d93d8ffe076b933618cb861b..0000000000000000000000000000000000000000
--- a/others/guide/CodingGuidelines.adoc
+++ /dev/null
@@ -1,8 +0,0 @@
-= Sample Document
-Doc Writer <doc.writer@asciidoc.org>; John Smith <john.smith@asciidoc.org>
-v1.0, 2013-05-20: First draft
-:title: Sample Document
-:tags: [document, example]
-
-
-Preamble...
diff --git a/others/guide/CreateJsDoc.adoc b/others/guide/CreateJsDoc.adoc
deleted file mode 100644
index d428b85c65aabfc70a1247a8a3a2e443811d571d..0000000000000000000000000000000000000000
--- a/others/guide/CreateJsDoc.adoc
+++ /dev/null
@@ -1,40 +0,0 @@
-How to build js-doc out of the lib-comments
-===========================================
-:toc2: left
-:numbered:
-
-== installation ==
-1. Nodejs:
-https://nodejs.org/en/
-LTS-version (aktuell 10.15.0)
-
-download and install
-
-2. install jsdoc 
-
-open CMD
-[source]
-----
-npm install -g jsdoc
-----
-
-== generate jsdoc ==
-
-=== manually ===
-1. open CMD
-2. navigate into the project-folder. e.g.
-[source]
-----
-C:
-cd C:\Users\M.Mustermann\Documents\AditoProjects\xRM-Basic5.1
-----
-3. run command
-[source]
-----
-jsdoc -r process -d others\jsdocOut
-----
-4. Open others\jsdocOut\index.html with a webbrowser
-
-=== with script in designer (Windows) ===
-1. In the Designer right click on others\genJsdoc.bat -> "Open in System"
-2. Right click on others\jsdocOut\index.html -> "View"
\ No newline at end of file
diff --git a/others/guide/Loghistory.adoc b/others/guide/Loghistory.adoc
deleted file mode 100644
index 6a2f284bf89acfae821ba92a33e572343952c9f3..0000000000000000000000000000000000000000
--- a/others/guide/Loghistory.adoc
+++ /dev/null
@@ -1,87 +0,0 @@
-configure Loghistory
-====================
-:DATA_ALIAS: Data_alias
-:EDITOR_ALIAS_DEFINITION: AliasDefinition-Editor
-
-== the concept ==
-//TODO: extend the concept description
-Stoarge: Database-table: `AB_LOGHISTORY`
-
-Collecting Data:
-----
-Audit -> process_audit -> Loghistory_lib: LogHistoryExecutor 
-----
-
-Data is collected and pre-translated. Therefor only one Language can be applied for logging.
-Because the loghistory is written via the auditing, only changes that are done with the proper Jdito-Methods will be logged.
-
-== prerequisites ==
-
-Auditing has to be activated for all tables you want to log.
-
-.prerequisites of enabling Audit in general
-* Auditing has to be enabled in your Server
-* Auditing has to be enabled for your alias (default: +{DATA_ALIAS}+)
-* Tables that shall be logged need some configs in the _{EDITOR_ALIAS_DEFINITION}_
-** property `idColumn` has to be set (a primary key is needed therefore)
-** `auditMode` has to be set -Standard, -CLOB, or -BLOB (chosse the one you really need)
-
-
-== activate writing into loghistory ==
-
-Assuming that the 
-
-* required database-tables exist 
-* JDito-processes already exist
-* audit has been activated in general
-
-you are ready to configure _which_ column shall be logged and _how_.
-
-=== configure columns for logging ===
-
-There are several properties (custom and pre-exisiting) that can be set for configuring the logging:
-
-.configuration options per column
-[options="header"]
-|=======
-|property |purpose |property-type
-|+title+ |text that is used to display which column has been modified|pre-exisiting
-|+log+ |defines whether a column needs to be logged or not; not exisisting equals `false` |custom: Booelan
-|+tableRef+ |references table for automatically grouping data. This is usefull for ForeignKeys, e.g. a +OFFERITEM.OFFER_ID+ column could have a +tableRef+ "OFFER"|custom: String
-|+primaryKey+ |this is not only used to enable auditing generally, but it's used to resolve +tableRef+ values correctly|pre-exisiting
-|+keyword+ |defines a keyword contianer that should be used to transform a +KEYID+ into a display value|custom: String
-|+autoMapTrueFalse4Log+ |if `true` the loghistory-executor tries to automatically translate a value into a "yes"/"no"-display value|custom: Booelan
-|+translate4Log+ |defines a process to transform a technical value into a display value |custom: JDito
-|=======
-
-+translate4Log+ is a mighty possibility to translate a ID-value into a displayvalue. However, you should keep several important things in mind:
-
-* translate text if necessary via the locale-parameter
-* the process is called each time a change to that column is applied - keep it fast and simple
-
-.translate4Log example (skip imports for better readability)
-[source,javascript]
-----
-var params = Translate4LogParams.load();// <1>
-var countryName = CountryUtils.getLatinNameByIso2(params.value, params.locale); // <2>
-result.string(countryName);// <3>
-----
-<1> load the parameters in a easy and fail-proof way
-<2> locale is passed to the resolving function and in that function a translation is applied
-<3> always return a string
-
-=== configure a consumer for retrieving the loghistory ===
-
-.Exampel for the +tablenames_param+ process
-----
-import("system.vars");
-import("system.result");
-import("Context_lib");
-
-var res = [];
-res.push({id: vars.get("$field.CONTACTID"), tableNames: ["CONTACT", "COMMUNICATION", "ADDRESS", "AB_ATTRIBUTERELATION"]});
-res.push({id: vars.get("$field.PERSONID"), tableNames: ["PERSON"]});
-
-res = JSON.stringify(res);//currently only strings  can be passed as param
-result.object(res);
-----
\ No newline at end of file
diff --git a/others/guide/PersonOrganisationContact.adoc b/others/guide/PersonOrganisationContact.adoc
deleted file mode 100644
index 7d7a1b33f971b107ef28b8f4a6a5885a9e10a3f5..0000000000000000000000000000000000000000
--- a/others/guide/PersonOrganisationContact.adoc
+++ /dev/null
@@ -1,39 +0,0 @@
-Person, Organisation, Contact
-=============================
-:toc2: left
-:numbered:
-
-== Differences to old Adito ==
-
-The old Adito basic had:
-
-- Pers
-- Org
-- Relation
-
-They are not gone, just renamed:
-
-- Pers = Person
-- Org = Organisation
-- Relation = Contact
-
-TODO: doku erweitern
-erson, Organisation, Contact
-===========================================
-:toc2: left
-:numbered:
-
-== Differences to old Adito ==
-
-The old Adito basic had:
-
-- Pers
-- Org
-- Relation
-
-They are not gone, just renamed:
-
-- Pers = Person
-- Org = Organisation
-- Relation = Contact
-
diff --git a/others/guide/ProviderConsumerParameter.adoc b/others/guide/ProviderConsumerParameter.adoc
deleted file mode 100644
index ee9ff59bc7d051dc069cd0ba1a409887036f8f8c..0000000000000000000000000000000000000000
--- a/others/guide/ProviderConsumerParameter.adoc
+++ /dev/null
@@ -1,92 +0,0 @@
-Provider - Consumer
-===================
-:toc2: left
-:numbered:
-
-=== Provider ===
-Is the old dfi.
-
-==== Purpose ====
-The provider provides access to an entity.
-You can get data of another entity by connecting a consumer to a provider.
-
-==== Naming ====
-The names should provide information about *what the provider provides*.
-
-For example:
-Communication_entity has 3 providers:
-
-- *AllCommunications*
-- *EmailCommunications*
-- *PhoneCommunications*
-
-If you connect to *AllCommunications* you get *all* communication types of a contact.
-If you connect to *EmailCommunications* you get *only the Email* communication type of a contact.
-If you connect to *PhoneCommunications* you get *only the Phone* communication type of a contact.
-
-*Important:*
-*Do not always create a new provider when connecting a new entity. Maybe you can use an already existing provider.*
-*Try to reuse providers if you need similar data for two dependencies*
-
-=== Consumer ===
-Is the old dfo.
-
-=== Purpose ===
-The Consumer *consumes* the data a provider provides.
-It can be connected to a provider and fill the parameters of the provider.
-
-=== Naming ===
-Most of the time you get a list of "something" so you should call it the plural of what you get.
-
-Example:
-Persons
-Organisations
-
-If you have two Consumer to the same Entity, you should use speaking names. 
-
-Example:
-Documents (e.g. for all documents of a person)
-MainDocuments (e.g. for only the main documents of a person)
-
-If you know you get only one row, you can use the singular.
-
-Example:
-Person
-
-=== Parameter ===
-Parameters provide a way to tell a provider *what exactly you need*.
-
-==== Properties ====
-The most important properties are
-code, exposed, triggerRecalculation and mandatory
-
-Parameters work with a fallback mechanism.
-This means that if you set the code on the parameter directly then this is executed *only if you did not* provide the code on the parameter at the *provider* and/or *consumer*.
-Likewise if you set the code on a parameter at the provider it will only be executed if a *consumer* which connects to this provider *has no code set* at the parameter.
-
-Here some examples for the *code* property:
-
-[options="header"]
-|========================================================================================================================================================================================================================================================
-| Parameter | Provider | Consumer | Result                       | Notes                                                                                                                                                                                 
-| default   | default  | default  | Nothing executed             |                                                                                                                                                                                       
-| default   | default  | code set | Code from consumer executed  | This is the mostly used  scenario.                                                                                                                                                    
-| default   | code set | default  | Code from provider executed  | This is used if you need a default value for a parameter which is different on each provider. e.g. used by the Document_entity to determine if it should show main documents or not.  
-| code set  | default  | default  | Code from parameter executed |                                                                                                                                                                                       
-|========================================================================================================================================================================================================================================================
-
-The checkbox-parameters can have *three* states: default, checked, unchecked. Default means the property is *gray* and the value from the previous instance is used. Checked and unchecked overwrite always the previous instance.
-
-The exposed property is a way to decide if a parameter should be visible by the next instance
-Here some examples for the *exposed* property:
-
-[options="header"]
-|========================================================================================================================================================
-| Parameter | Provider | Result      | Notes                                                                                                             
-| default   | default  | NOT Exposed | because the default for exposed is: NOT exposed. -> the parameter won't be visible on the provider and consumer! 
-| set       | set      | Exposed     | This means that the parameter can be set by the consumer.                                                         
-| set       | UNset    | NOT Exposed | This will disable the parameter for one specific provider.                                                        
-| set       | default  | Exposed     |                                                                                                                   
-|========================================================================================================================================================
-
-*Note that there are currently (13.02.2019) some bugs and the handling of parameters with the default #PROVIDER may change.*
\ No newline at end of file
diff --git a/others/guide/TargetContext.adoc b/others/guide/TargetContext.adoc
deleted file mode 100644
index 1d466a0da9c53953491cf301711f745d6d8478e4..0000000000000000000000000000000000000000
--- a/others/guide/TargetContext.adoc
+++ /dev/null
@@ -1,19 +0,0 @@
-Target Context
-==============
-
-toc2: left
-:numbered:
-
-== What? ==
-The target context is for forwarding the preview and the klick-action to another context.
-
-== Why? ==
-For example the ObjectRelation entity uses this feature to open the linked object directly.
-
-== Where? == 
-It is configured by two properties of the providers.
-
-* targetContextField
-* targetIdField
-
-You can provide an entity-field for each of them which contains the contextId (currently the contextName 13.02.2019) and the rowId (UID) which should be used to open the preview or main view.
\ No newline at end of file
diff --git a/others/guide/how to write JDito code.adoc b/others/guide/how to write JDito code.adoc
deleted file mode 100644
index 9dbbdb19d290d4cffad377c7a19ea1354a52d536..0000000000000000000000000000000000000000
--- a/others/guide/how to write JDito code.adoc	
+++ /dev/null
@@ -1,261 +0,0 @@
-How to wirte JDito code
-=======================
-:toc2: left
-:numbered:
-
-== basics ==
-* Keep everything english. Every title, caption, messages, comments, etc. should be english. Add german translation to the languages if necessary.
-* in JavaScript-Strings use `"` instead of `'` - even if its only 1 character. `'` is for SQL (within JS-Strings)
-* Parameters should start with p.
-
-== code structure ==
-=== vars and others (var, let) ===
-* avoid `let` as much as possible because you cannot debug these variables
-
-=== brackets ===
-* `{` are placed on a new line
- 
-Example:
-[source,javascript]
-----
-for (i = 0, i < dataLen; i++) 
-{
-    //code here
-}
-
-myArray.forEach(function(pItem) 
-{
-    // Do something
-});
-----
-
-=== loops ===
-nested loops should be defined with replicated indexer variables.
-Therefore it's easy to see in which level of the counter you are.
-Even better would be a good and describing name.
-
-Example:
-[source,javascript]
-----
-for (i = 0, i < dataLen; i++) 
-{
-    for (ii = 0, ii < dataLen[i].length; ii++) 
-    {
-        //code...
-    }
-}
-
-for (row = 0, row < dataLen; row++) 
-{
-    for (col = 0, col < dataLen[row].length; col++) 
-    {
-        //code...
-    }
-}
-----
-
-
-== Functions - overview of different "types" ==
-This sections covers how to define different "types" of functions in libraries.
-
-=== by using static methods ===
-This will be mostly utility functions where there is no need to instantiate an object. You'll need this probably the most time.
-
--> Static object with static functions.
-
-
-Definition:
-[source,javascript]
-----
-/**
- * provides static methods for validation of communication data
- * do not create an instance of this
- * @static
- * @class
- */
-function CommValidationUtil(){}<1>
-
-/**
- * returns a blueprint for validation extensions; these extensions are needed for validating comm data and can be passed to other functions
- * @return {object} a object with properties that have a specific default value; normally you want to overwrite that value
- */
-CommValidationUtil.getExtensionsBlueprint = function() <2>
-{
-    return {
-        countryCode: null
-    };
-}
-----
-<1> the function-object that keeps everything together - this function should never be actually called (no direct call, no indirect call)
-<2> an actual function that can be called
-
-And how to use it:
-[source,javascript]
-----
-import("Comm_lib");
-
-var additionals = CommValidationUtil.getExtensionsBlueprint();
-----
-
-=== by creating an object with functions ===
-
-You may want to hold data and create objects where methods share that data. 
-
-Here is an example for an object that can be created:
-[source,javascript]
-----
-/**
- * object that provides featrues for a single keyword attribute; initalizes itself on creation with a specific keyword-attribute
- * 
- * @param {String} pContainerName specifies the type of the keyword and therefore the list elements;
- *                                  e.g. "COUNTRY"; use an entry of the $KeywordRegistry here
- * @param {String} pAttributeName the name of the keyword attribute that shall be initalized
- * @param {String} [pDefault=undefined] the default value -> Does not throw an error, if default value exists.
- * 
- * @class
- */
-function KeywordAttribute(pContainerName, pAttributeName, pDefault)
-{
-    this.container = pContainerName;
-    this.attribute = pAttributeName;
-    this.defaultValue = pDefault;
-
-    var keywordAttrData = newSelect("AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_ATTRIBUTEID, AB_KEYWORD_ATTRIBUTE.KIND")
-        .from("AB_KEYWORD_ATTRIBUTE")
-        .where("AB_KEYWORD_ATTRIBUTE.CONTAINER", pContainerName)
-        .and("AB_KEYWORD_ATTRIBUTE.NAME", pAttributeName)
-        .arrayRow();
-    
-    if (keywordAttrData.length > 0) 
-    {
-        this.id = keywordAttrData[0];
-        this.type = keywordAttrData[1];
-        this.dbField = this.type.trim();
-    }
-    else if(pDefault == undefined)
-    {
-        throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", [this.attribute, this.container]));
-    }
-}
-
-/**
- * get the value for a specific keyId.
- * Error if the keyword container does not have the attribute at all (you can check this with .exists())
- * Error if the attribute does not exist at the provided keyId and you have not specified a default
- * 
- * @param {String} pKeyId the keyId
- * 
- * @return {String} the loaded value (or the default)
- */
-KeywordAttribute.prototype.getValue = function(pKeyId)
-{
-    if (this.exists()) 
-    {
-        var attrValue = newSelect(this.dbField)
-            .from("AB_KEYWORD_ENTRY")
-            .join("AB_KEYWORD_ATTRIBUTERELATION", "AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID = AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID")
-            .where("AB_KEYWORD_ENTRY.CONTAINER", this.container)
-            .and("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID", this.id)
-            .and("AB_KEYWORD_ENTRY.KEYID", pKeyId)
-            .cell();
-
-        if (attrValue)
-            return attrValue;
-        
-        if (this.defaultValue)
-            return this.defaultValue;
-        
-        throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword \"%1\" from container \"%2\"", [this.attribute, pKeyId, this.container]));
-    }
-    else if (this.defaultValue == undefined)
-        throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", [this.attribute, this.container]));
-    else
-        return this.defaultValue;
-}
-
-/**
- * get a SqlBuilder object for this keyword attribute. You can easily add additional conditions to it.
- * 
- * @return {SqlBuilder} a SqlBuilder which contains a select for the entry-id's, joins to entry and attribute 
- *                      and conditions for the container and the attribute-name.
- */
-KeywordAttribute.prototype.getSqlBuilderSelect = function() 
-{
-    return newSelect("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID")
-        .from("AB_KEYWORD_ATTRIBUTERELATION")
-        .join("AB_KEYWORD_ENTRY", "AB_KEYWORD_ENTRYID = AB_KEYWORD_ENTRY_ID", "attrEntry")
-        .join("AB_KEYWORD_ATTRIBUTE", "AB_KEYWORD_ATTRIBUTEID = AB_KEYWORD_ATTRIBUTE_ID")
-        .where(["AB_KEYWORD_ENTRY", "CONTAINER", "attrEntry"], this.container)
-        .and("AB_KEYWORD_ATTRIBUTE.NAME", this.attribute)
-}
-
-/**
- * check if the Container can have the attribute.
- * @return {Boolean} true if it exists, false if not
- */
-KeywordAttribute.prototype.exists = function()
-{
-    return this.id != undefined && this.type != undefined && this.dbField != undefined;
-}
-
-----
-
-=== private functions ===
-
-
-Private functions would be possible but make everything much more complicate.
-So just start your functions / methods name with a _ if you need private methods.
-
---> do not use functions which start with a _ outside of the class!
-
-Add @ignore to the comment of those functions to prevent showing them in the generated jsdoc.
-
-== JS-Doc ==
-
-<1> JS-Doc comment: http://usejsdoc.org/
-<2> jsdoc-blocks have to start with /&#x002A;&#x002A; otherwise JSDoc cannot generate a documentation
-<3> use the correct form for optional/required parameters: http://usejsdoc.org/tags-param.html
-Optional parameter: [alias=the current alias]
-Required parameter: alias
-Classes: @class
-[source,javascript]
-----
-/**
- * Description...
- * ...
- *  
- * @param {String} [pAlias=the current alias] the database alias where the condition shall be executed later (important for column types of preparedStatements)
- * @example Here is an example
- * @class
- */
-function SqlCondition(pAlias) 
-{
-...
-}
-----
-<4> examples are useful on more complex functions
-<5> constructor function; init properties (do not set functions ("methods") here!)
-<6> add functions ("methods") to the prototype, they are available through the prototype chain
-
-And how to use it (normally you'd want to use preparedStatements but for the sake of an easy example it's a bit shorter here)
-See also HowToSqlConditionLib.adoc for a full documentation.
-[source,javascript]
-----
-import("system.vars");
-import("system.result");
-import("Sql_lib");
-import("Comm_lib");
-
-var cond = new SqlCondition();
-
-var mediumIds = CommExtensions.getContextualMediumIds();
-if (mediumIds.length > 0)
-    cond.and("COMM.MEDIUM_ID in (" + mediumIds.join(", ") + ")");
-
-var idVal = vars.get("$local.idvalue");
-if (uids.length > 0)
-    cond.and("COMM.COMMID = '" + idVal + "' ");
-
-result.string(cond.toString("COMM.OPTIONAL = 't'"));
-----
-
diff --git a/others/guide/instanceableLibExample.adoc b/others/guide/instanceableLibExample.adoc
deleted file mode 100644
index 66dfc0a312e467be87afcf97921691c4e8f61090..0000000000000000000000000000000000000000
--- a/others/guide/instanceableLibExample.adoc
+++ /dev/null
@@ -1,62 +0,0 @@
-= Example for a instanceable Lib =
-:toc2: left
-:numbered:
-
-Remember to always change the comments to fit your class! +
-Use speaking names for ALL variables, classes and functions!
-
-[source,javascript]
-----
-import("...");
-
-/**
- * instanceable example Utility class;
- * 
- * @param {String} pParam1 is for ...
- * 
- * @example var myUtil = new UtilClass("-");
- * @class
- */
-function UtilClass(pParam1) 
-{
-    // here is the constructor.
-    // create class variables like this:
-    this.myVariable = pParam1;
-}
-
-/**
- * a public function
- * 
- * @param {String} pParam1 is for ...
- * @param {String} pParam2 is for ...
- * 
- * @example var myResult = myUtil.myFunction("p1", "p2");
- * 
- * @return {String} a result
- */
-UtilClass.prototype.myFunction = function(pParam1, pParam2) 
-{
-    return this._privateStaticFunction1(pParam1, pParam2, this.myVariable);
-}
-
-/**
- * a private function
- * 
- * @param {String} pParam1 is for ...
- * @param {String} pParam2 is for ...
- * @param {String} pParam3 is for ...
- * 
- * @return {String} a result
- * @ignore
- */
-UtilClass.prototype._myPrivateFunction = function(pParam1, pParam2, pParam3) 
-{
-    if(pParam1 && pParam2 && pParam3) 
-    {
-        ...
-        return pParam1 + pParam3 + pParam2;
-    }
-
-    return "";
-}
-----
\ No newline at end of file
diff --git a/others/guide/staticLibExample.adoc b/others/guide/staticLibExample.adoc
deleted file mode 100644
index d48e2eba91fc0a15fd515826424dbf631ede54e4..0000000000000000000000000000000000000000
--- a/others/guide/staticLibExample.adoc
+++ /dev/null
@@ -1,57 +0,0 @@
-= Example for a static Lib =
-:toc2: left
-:numbered:
-
-Remember to always change the comments to fit your class! +
-Use speaking names for ALL variables, classes and functions!  
-
-[source,javascript]
-----
-import("...");
-
-/**
- * a static Example Utility class
- * 
- * Do not create an instance of this!
- * @class
- */
-function ExampleUtils() {} // leave this function empty! A constructor is not needed for static functions.
-
-/**
- * a public static function
- * 
- * @param {String} pParam1 is for ...
- * @param {String} pParam2 is for ...
- * 
- * @example var myResult = ExampleUtils.staticFunction1("p1", "p2");
- * 
- * @return {String} a result
- */
-ExampleUtils.staticFunction1 = function(pParam1, pParam2) 
-{
-    return this._privateStaticFunction1(pParam1, pParam2, "-")
-}
-
-/**
- * a private static function
- * 
- * Do not use outside of ExampleUtils!
- * 
- * @param {String} pParam1 is for ...
- * @param {String} pParam2 is for ...
- * @param {String} pParam3 is for ...
- * 
- * @return {String} a result
- * @ignore
- */
-ExampleUtils._privateStaticFunction1 = function(pParam1, pParam2, pParam3) 
-{
-    if(pParam1 && pParam2 && pParam3) 
-    {
-        ...
-        return pParam1 + pParam3 + pParam2;
-    }
-
-    return "";
-}
-----
\ No newline at end of file
diff --git a/others/guide/whichDatatype.adoc b/others/guide/whichDatatype.adoc
deleted file mode 100644
index 092ae1bf6ae5c02d56ced4bf133b5e956a8f23e2..0000000000000000000000000000000000000000
--- a/others/guide/whichDatatype.adoc
+++ /dev/null
@@ -1,105 +0,0 @@
-Overview over datatypes
-=======================
-:toc2: left
-:numbered:
-
-This is a simple overview about when to to use which datatype.
-
-== Boolean ==
-=== Datatype ===
-----
-TINYINT
-----
-=== Usage ===
-0 => false
-1 => true
-
-Add nullable="false" constraint, because for boolean null makes no sense and complicates searches and validations.
-
-== Text ==
-Text should be saved as Unicode. For this prefix the datatype with a 'N' (there are some exceptions like the UUID)
-
-=== Big text ===
-For informations, descriptions, ...
-----
-NCLOB
-----
-
-=== Small / Normal text ===
-For Names, ...
-
-You have to define the maximum length.
-----
-NVARCHAR(50)
-----
-
-=== Fixed size text ===
-If you are sure that the length is always fixed and will not change.
-
-You have to define the length.
-----
-NCHAR(5)
-----
-
-=== UUID's, standardized codes  ===
-For them unicode is mostly not needed. Only use unicode here if you are sure, it is needed.
-
-For UUID's, standardized codes (language codes), ...
-
-You have to define the length.
-----
-CHAR(5)
-----
-
-UUID needs length 36:
-----
-CHAR(36)
-----
-
-=== Decimal numbers ===
-If precision and fixed decimals (Nachkommastellen) are needed, use DECIMAL.
-For prices, ...
-----
-NUMERIC(10, 2)
-----
-
-Else you can use double. 
-----
-DOUBLE
-----
-
-=== Integer numbers ===
-In normal cases just use INTEGER
-
-If you know that very big integers or only very small Integers are needed, you can also use
-
-Byte count may not be the same on all databases.
-
-8 Byte
-
-----
-BIGINT
-----
-
-4 Byte 
-
-----
-INTEGER
-----
-
-2 Byte 
-
-----
-SMALLINT
-----
-
-1 Byte
-
-----
-TINYINT
-----
-
-=== Binary data ===
-----
-BLOB
-----
\ No newline at end of file
diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
index 3e9db3204aca942b5356a3023b17716a739754cf..4ddb43c09cad21c593df3f6876bb6f9c6ac1d562 100644
--- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
+++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
@@ -30,7 +30,7 @@
   <recordContainerCachingAlias>RecordContainerCache</recordContainerCachingAlias>
   <clientSearchOptimizedForSpeed v="true" />
   <clientSearchExcludeForIgnorecase v="true" />
-  <neonClientPermissionsEnabled v="false" />
+  <neonClientPermissionsEnabled v="true" />
   <clientFeedbackMailaddress />
   <blobHandlingMethod>DATABASE</blobHandlingMethod>
   <databaseAuditGetOldValueLobs v="false" />
@@ -41,6 +41,7 @@
   <indexsearchIncrementingIndexerEnabled v="true" />
   <indexsearchIncrementingIndexerInterval v="1000" />
   <indexsearchIncrementingIndexerBunchSize v="250" />
+  <userdirectoryAlias>_____SYSTEMALIAS</userdirectoryAlias>
   <mailBridgeMailserver>
     <mailbridgeMailserver>
       <name>abfa63d1-a47e-41f6-a87d-138bf04adc1e</name>
@@ -97,7 +98,7 @@
     <customStringProperty>
       <name>workflow.modelerUrl</name>
       <description></description>
-      <property>http://localhost:8080/flowable-modeler/</property>
+      <property>http://localhost:8082/flowable-modeler/</property>
     </customStringProperty>
     <customBooleanProperty>
       <name>ai.salesprojectProbability</name>
diff --git a/process/AISalesproject_lib/AISalesproject_lib.aod b/process/AISalesproject_lib/AISalesproject_lib.aod
index 13b8a275db57d71b190f905695f39072a7756756..a6f99a40249dc800e535938f99bcf7dff042bbf1 100644
--- a/process/AISalesproject_lib/AISalesproject_lib.aod
+++ b/process/AISalesproject_lib/AISalesproject_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>AISalesproject_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/AISalesproject_lib/process.js</process>
diff --git a/process/AI_lib/AI_lib.aod b/process/AI_lib/AI_lib.aod
index 153e8fc6b66bfd5d8016c8a0a22521c04ad0e209..7ae40f7d1ad20b3763a454857962bf66ec77e35f 100644
--- a/process/AI_lib/AI_lib.aod
+++ b/process/AI_lib/AI_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>AI_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/AI_lib/process.js</process>
diff --git a/process/ActivityTask_lib/ActivityTask_lib.aod b/process/ActivityTask_lib/ActivityTask_lib.aod
index 141c9c3f9344db9b60ff2be3992885545ebcb96a..75bb8811f6e3483be857978d6ee10456e7e79d25 100644
--- a/process/ActivityTask_lib/ActivityTask_lib.aod
+++ b/process/ActivityTask_lib/ActivityTask_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ActivityTask_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/ActivityTask_lib/process.js</process>
diff --git a/process/AddressEntity_lib/AddressEntity_lib.aod b/process/AddressEntity_lib/AddressEntity_lib.aod
index 4ecf49e2e70d3882be5ed8a66b3ec91a4d509593..432deaa1e5b6a1e7a0e8e82e339e76cb9e0b83a5 100644
--- a/process/AddressEntity_lib/AddressEntity_lib.aod
+++ b/process/AddressEntity_lib/AddressEntity_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>AddressEntity_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/AddressEntity_lib/process.js</process>
diff --git a/process/Address_lib/Address_lib.aod b/process/Address_lib/Address_lib.aod
index dc170bb2e025b240f859db1cdca75dd3eb7d972c..8b4c8d490fcd065fdca889e0daa3282dddcc239b 100644
--- a/process/Address_lib/Address_lib.aod
+++ b/process/Address_lib/Address_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Address_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/Address_lib/documentation.adoc</documentation>
diff --git a/process/Address_lib/process.js b/process/Address_lib/process.js
index 1a49b23e15710f5465c3a94afc99cb5b038ae5bb..a9dc6dbda503a8660154d790a17f148fe06757ba 100644
--- a/process/Address_lib/process.js
+++ b/process/Address_lib/process.js
@@ -516,7 +516,7 @@ function _formatAddrData( pAddrData, pFormat, pCountry )
         }
     }
 
-    res = res.replace(/^\n/, "");  // CR am Anfang entfernen;
+    res = res.replace(/^ *\n *\n*/, "");  // CR am Anfang entfernen;
     res = res.replace(/  /g, " "); // doppelte leerzeichen entfernen
     res = res.replace(/\\n/ig, "\n");	// newline marker ersetzen
     res = res.replace(/ *\n */g, "\n");// leerzeichen am ende und Anfang entfernen
@@ -538,7 +538,8 @@ function _formatAddrData( pAddrData, pFormat, pCountry )
 * 
 N – Name - salutation
 O – Organisation - orgname
-A – Street Address Line(s) - address + buildingno
+A – Street Address Line(s) - address
+B – Street Address Line(s) - buildingno
 D – Dependent locality - district / region
 C – City or Locality - city
 S – Administrative area - state
@@ -549,7 +550,8 @@ function _mapFormatPlaceholderTitles(pFormat, pAddrData, pCountry)
 {
     //gstatic-paceholders
     pFormat = pFormat.replace(new RegExp("%N", "g"), "{salutation_name}");
-    pFormat = pFormat.replace(new RegExp("%A", "g"), "{street} {buildingno}");  
+    pFormat = pFormat.replace(new RegExp("%A", "g"), "{street}");  
+    pFormat = pFormat.replace(new RegExp("%B", "g"), "{buildingno}");  
     pFormat = pFormat.replace(new RegExp("%C", "g"), "{city}");
     pFormat = pFormat.replace(new RegExp("%S", "g"), "{state}");
     pFormat = pFormat.replace(new RegExp("%Z", "g"), "{zip}");
diff --git a/process/Appointment_lib/Appointment_lib.aod b/process/Appointment_lib/Appointment_lib.aod
index 5b832c601af4bab0a69bff58acf1c2427be6911c..048b24bb7449670791195d1c9710d5fa9f858ec9 100644
--- a/process/Appointment_lib/Appointment_lib.aod
+++ b/process/Appointment_lib/Appointment_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Appointment_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Appointment_lib/process.js</process>
diff --git a/process/AttributeFilter_lib/AttributeFilter_lib.aod b/process/AttributeFilter_lib/AttributeFilter_lib.aod
index 57e3edcba2b142a37bc925f7db45a4cbf4006464..0e96ad73bb494c36ab2a394571a7a27946ccccb6 100644
--- a/process/AttributeFilter_lib/AttributeFilter_lib.aod
+++ b/process/AttributeFilter_lib/AttributeFilter_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>AttributeFilter_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/AttributeFilter_lib/process.js</process>
diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js
index d64df9664bf2c4ac8519540ede2e36266b2d5323..0e9a44920eed7e6875ee71fec0b1f268187ee71d 100644
--- a/process/AttributeFilter_lib/process.js
+++ b/process/AttributeFilter_lib/process.js
@@ -87,21 +87,33 @@ function AttributeFilterExtensionMaker() {}
 AttributeFilterExtensionMaker.getFilterFields = function(pObjectType) 
 {
     var res = [];
+    var sqlMask = new SqlMaskingUtils();
 
     var loadingConfig = entities.createConfigForLoadingRows().entity("Attribute_entity")
         .provider("SpecificFilterAttributes")
-        .fields(["UID", "FULL_ATTRIBUTE_NAME", "ATTRIBUTE_TYPE"])
+        .fields(["UID", "FULL_ATTRIBUTE_NAME", "ATTRIBUTE_TYPE", "DROPDOWNDEFINITION"])
         .addParameter("ObjectType_param", pObjectType);
 
     var attributeRows = entities.getRows(loadingConfig);
     attributeRows.forEach(function(row){
-        var attributeType = row["ATTRIBUTE_TYPE"];
+        var attributeType = row["ATTRIBUTE_TYPE"].trim();
         var contentType = AttributeTypeUtil.getContentType(attributeType);
+        var groupedRecordField = AttributeTypeUtil.getDatabaseField(attributeType);
+        var getTitleRecordFieldFn = AttributeTypeUtil.getDisplayValueSqlFn(attributeType);
+        var titleRecordField = getTitleRecordFieldFn({
+            attributeId: row["UID"],
+            dropDownDefinition: row["DROPDOWNDEFINITION"]
+        });
         
-        if (attributeType.trim() == AttributeTypes.VOID())
+        if (attributeType == AttributeTypes.VOID())
         {
             contentType = "BOOLEAN";
+            groupedRecordField = SqlBuilder.caseWhen("AB_ATTRIBUTE_ID is not null").thenString("1").toString();
+            titleRecordField = SqlBuilder.caseWhen("AB_ATTRIBUTE_ID is not null").thenString(translate.text("Yes")).toString();
         }
+        
+        if (titleRecordField == "INT_VALUE" || titleRecordField == "NUMBER_VALUE")
+            titleRecordField = sqlMask.cast(titleRecordField, SQLTYPES.VARCHAR, 50);
 
         if (contentType)
         {
@@ -111,7 +123,10 @@ AttributeFilterExtensionMaker.getFilterFields = function(pObjectType)
                 title: row["FULL_ATTRIBUTE_NAME"],
                 //workaround since we do not have a "UNKNOWN"-contentType in the filter-definition
                 contentType: contentType == "UNKNOWN" ? "TEXT" : contentType,
-                hasDropDownValues: contentType == "UNKNOWN" || contentType == "BOOLEAN" ? true : false//TODO: determine this somehow else
+                hasDropDownValues: contentType == "UNKNOWN" || contentType == "BOOLEAN",//TODO: determine this somehow else
+                isGroupable: true,
+                groupedRecordField: groupedRecordField,//groupedRecordField
+                titleRecordField: sqlMask.isNull(titleRecordField, "'"+translate.text("unassigned")+"'")
             });
         }
     });
@@ -258,3 +273,64 @@ AttributeFilterExtensionMaker.makeFilterConditionSql = function()
         uidInfo.table, uidInfo.column, columnPlaceholder);
     return res;
 };
+
+/**
+ * fetches attributes that are groupable and transofms them into Groupings
+ * 
+ * @param {String} pFrom             The Value of the fromClauseProcess (if not used, then the "Main" Table)
+ * 
+ * @see AttributeFilterExtensionMaker.getFilterGroupQuery for more details
+ */
+AttributeFilterExtensionMaker.makeFilterGroupQuery = function(pFrom)
+{
+    var attributeName = vars.get("$local.name");
+    var condition = vars.get("$local.condition").trim(); //can have multiple space characters
+    var groupColumnList = vars.get("$local.columnlist");
+    var order = vars.get("$local.order");
+    var count = vars.get("$local.count");
+    var uidInfo = vars.get("$sys.uidcolumn");
+    var res = AttributeFilterExtensionMaker.getFilterGroupQuery(attributeName, condition, groupColumnList, order, count, uidInfo, pFrom);
+    return res;
+};
+
+
+/**
+ * 
+ * @param {String} pAttributeName       The Attribute-name contains various data of the attribute as a encoded string
+ * @param {String} pCondition           Contains the local Condition
+ * @param {String} pColumnList          Contains various Columns for the group Select
+ * @param {String} pOrder               In which order the results should be displayed
+ * @param {String} pCount               Indicates if u need to count or not, TRUE and FALSE
+ * @param {String} pUidColumn           The Column that is linked with AB_ATTRIBUTERELATION.OBJECT_ROWID
+ * @param {String} pFrom                The From part is needed to use the Condition right in every way
+ *                                      
+ * @return {String}                     <p/> SQL-Statemente for grouping
+ *                                      It returns the count or the Group Values
+ * @static 
+ */
+AttributeFilterExtensionMaker.getFilterGroupQuery = function(pAttributeName, pCondition, pColumnList, pOrder, pCount, pUidColumn, pFrom) 
+{
+
+    var name =  AttributeSearchNameCoder.decode(pAttributeName);
+
+    var attributeId = name.id;
+    var attrType = name.type;
+    var valuefield = AttributeTypeUtil.getDatabaseField(attrType);
+    
+    if (attrType == AttributeTypes.VOID())
+        valuefield = "AB_ATTRIBUTE_ID";
+
+
+    var stmt = newSelect(pCount ? "1" : pColumnList).from(pFrom)
+    .leftJoin("AB_ATTRIBUTERELATION", newWhere("AB_ATTRIBUTERELATION.OBJECT_ROWID = "+pUidColumn).and("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", attributeId));
+            
+    if(pCondition)
+        stmt.where(pCondition);
+        
+    stmt.groupBy(valuefield);
+        
+    if(pOrder)   
+        stmt.orderBy(pOrder);
+
+    return stmt.toString();
+};
\ No newline at end of file
diff --git a/process/AttributeRegistry_basic/AttributeRegistry_basic.aod b/process/AttributeRegistry_basic/AttributeRegistry_basic.aod
index d4917ea14ea0bb20d46d5ca2680e75daa034ce5c..3ed840c1e53f66ed4c7fa01b61bdd16433537664 100644
--- a/process/AttributeRegistry_basic/AttributeRegistry_basic.aod
+++ b/process/AttributeRegistry_basic/AttributeRegistry_basic.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>AttributeRegistry_basic</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/AttributeRegistry_basic/process.js</process>
diff --git a/process/Attribute_lib/Attribute_lib.aod b/process/Attribute_lib/Attribute_lib.aod
index 7d9936e818274c5e11dd7fec0c27953f2d32d4e9..0d46a6a7dc9b186e465727e6fa1806abfad13f58 100644
--- a/process/Attribute_lib/Attribute_lib.aod
+++ b/process/Attribute_lib/Attribute_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Attribute_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Attribute_lib/process.js</process>
diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js
index 938efc90998d5f52bcbc92c00ff68697d17137d6..a5a3d2b7a68cb7a398fdc24b771f9a9fe500931b 100644
--- a/process/Attribute_lib/process.js
+++ b/process/Attribute_lib/process.js
@@ -859,10 +859,16 @@ Object.assign(AttributeTypes.BOOLEAN, {
     contentType: "BOOLEAN", 
     databaseField: "INT_VALUE",
     singleSelection: true,
+    getDisplayValueSql: function (pAttributeData)
+    {
+        var valueField = "AB_ATTRIBUTERELATION." + this.databaseField;
+        return SqlBuilder.caseWhen(valueField, "1").thenString(translate.text("Yes"))
+            .when(valueField, "0").thenString(translate.text("No"));
+    },
     getViewValue: function (pValue)
-        {
-            return pValue == "1" ? translate.text("Yes") : translate.text("No");
-        }
+    {
+        return Utils.toBoolean(pValue) ? translate.text("Yes") : translate.text("No");
+    }
 });
 Object.assign(AttributeTypes.COMBO, {
     toString: function () {return this();},
@@ -870,15 +876,30 @@ Object.assign(AttributeTypes.COMBO, {
     databaseField: "ID_VALUE",
     possibleChildren: [AttributeTypes.COMBOVALUE()],
     //in most cases the view value of this attribute type is loaded via a direct sql join for less queries and better performance
-    getViewValue: function (pValue)
+    getDisplayValueSql: function (pAttributeData)
+    {
+        var valueField = "AB_ATTRIBUTERELATION." + this.databaseField;
+        var values = newSelect(["AB_ATTRIBUTEID", "ATTRIBUTE_NAME"])
+            .from("AB_ATTRIBUTE")
+            .where("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeData.attributeId)
+            .and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.COMBOVALUE())
+            .table();
+        var sql = SqlBuilder.caseStatement(values, valueField);
+        values.forEach(function ([key, value])
         {
-            var viewValue = newSelect("AB_ATTRIBUTE.ATTRIBUTE_NAME")
-                .from("AB_ATTRIBUTE")
-                .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", pValue)
-                .and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.COMBOVALUE())
-                .cell();
-            return viewValue ? translate.text(viewValue) : viewValue;
-        }
+            sql.when(valueField, key).thenString(translate.text(value));
+        });
+        return sql.toString();
+    },
+    getViewValue: function (pValue)
+    {
+        var viewValue = newSelect("AB_ATTRIBUTE.ATTRIBUTE_NAME")
+            .from("AB_ATTRIBUTE")
+            .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", pValue)
+            .and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.COMBOVALUE())
+            .cell();
+        return viewValue ? translate.text(viewValue) : viewValue;
+    }
 });
 Object.assign(AttributeTypes.COMBOVALUE, {
     toString: function () {return this();},
@@ -907,18 +928,23 @@ Object.assign(AttributeTypes.KEYWORD, {
     toString: function () {return this();},
     contentType: "UNKNOWN", 
     databaseField: "ID_VALUE", 
+    getDisplayValueSql: function (pAttributeData)
+    {
+        var valueField = "AB_ATTRIBUTERELATION." + this.databaseField;
+        return KeywordUtils.getResolvedTitleSqlPart(pAttributeData.dropDownDefinition, valueField);
+    },
     getViewValue: function (pValue, pKeyword)
-        {
-            return KeywordUtils.getViewValue(pKeyword, pValue);
-        },
+    {
+        return KeywordUtils.getViewValue(pKeyword, pValue);
+    },
     dropDownDefinitionTitle: "Keyword",
     getDropDownDefinitions: function ()
+    {
+        return KeywordUtils.getContainerNames().map(function (e)
         {
-            return KeywordUtils.getContainerNames().map(function (e)
-            {
-                return [e, e];//currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers
-            });
-        }
+            return [e, e];//currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers
+        });
+    }
 });
 Object.assign(AttributeTypes.VOID, {
     toString: function () {return this();},
@@ -1096,6 +1122,22 @@ AttributeTypeUtil.getDropDownDefinitionTitle = function (pAttributeType)
     return AttributeTypeUtil._getProperty(pAttributeType, "dropDownDefinitionTitle", "");
 }
 
+AttributeTypeUtil.getDisplayValueSqlFn = function (pAttributeType)
+{
+    if (!pAttributeType)
+        return null;
+    
+    pAttributeType = pAttributeType.trim();
+    var attributeType = AttributeTypes[pAttributeType];
+    if (!attributeType)
+        return null;
+    var displayValueSqlFn = attributeType.getDisplayValueSql || function () 
+    {
+        return this.databaseField;
+    };
+    return displayValueSqlFn.bind(attributeType);
+}
+
 /**
  * Compare the given pAttributeType with the attribute type string
  * "OBJECTSELECTION".
@@ -1459,8 +1501,6 @@ function AttributeRelationQuery (pObjectRowId, pAttributeId, pObjectType)
     this._attributeTypes = null;
     this._includeFullAttributeName = false;
     this._includeDisplayValue = false;
-    
-    return this;
 }
 
 /**
@@ -1669,6 +1709,41 @@ AttributeRelationQuery.prototype.getAttributeCount = function ()
         .cell() || 0);
 }
 
+AttributeRelationQuery.prototype.getMaxCount = function ()
+{
+    if (!this._objectType || !this._rowId)
+        throw new Error("AttributeRelationQuery: Object type and row id are required");
+    if (!this._attributeIds || this._attributeIds.length !== 1)
+        throw new Error("AttributeRelationQuery: You have to specify a single attribute id");
+    
+    var attributeId = this._attributeIds[0];
+    
+    var maxCount = newSelect("MAX_COUNT")
+        .from("AB_ATTRIBUTEUSAGE")
+        .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", attributeId)
+        .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this._objectType)
+        .cell();
+    if (maxCount)
+        return Number(maxCount) || null;
+    return null;
+}
+
+AttributeRelationQuery.prototype.getMinCount = function ()
+{
+    if (!this._objectType || !this._rowId)
+        throw new Error("AttributeRelationQuery: Object type and row id are required");
+    if (!this._attributeIds || this._attributeIds.length !== 1)
+        throw new Error("AttributeRelationQuery: You have to specify a single attribute id");
+    
+    var attributeId = this._attributeIds[0];
+    
+    return Number(newSelect("MIN_COUNT")
+        .from("AB_ATTRIBUTEUSAGE")
+        .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", attributeId)
+        .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this._objectType)
+        .cell());
+}
+
 /**
  * Inserts a new attribute relation.
  * 
@@ -1692,17 +1767,8 @@ AttributeRelationQuery.prototype.insertAttribute = function (pValue, pOmitValida
     
     if (!pOmitValidation)
     {
-        var maxCount = newSelect("MAX_COUNT")
-            .from("AB_ATTRIBUTEUSAGE")
-            .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", attributeId)
-            .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this._objectType)
-            .arrayColumn();
-
-        if (maxCount.length == 0)
-            return false;
-
-        maxCount = maxCount[0];
-        if (maxCount && maxCount != 0)
+        var maxCount = this.getMaxCount();
+        if (maxCount)
         {
             let timesUsed = this.getAttributeCount();
             if (timesUsed >= maxCount)
@@ -1805,15 +1871,12 @@ AttributeRelation.prototype.deleteAttribute = function (pOmitValidation)
 {
     if (!pOmitValidation)
     {
-        var minCount = newSelect("MIN_COUNT")
-            .from("AB_ATTRIBUTEUSAGE")
-            .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", this.attributeId)
-            .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this.objectType)
-            .cell();
-
-        if (minCount && minCount != 0)
+        var attributeQuery = new AttributeRelationQuery(this.objectRowId, this.attributeId, this.objectType);
+        var minCount = attributeQuery.getMinCount();
+        
+        if (minCount)
         {
-            let timesUsed = new AttributeRelationQuery(this.objectRowId, this.attributeId, this.objectType).getAttributeCount();
+            let timesUsed = attributeQuery.getAttributeCount();
             if (timesUsed <= minCount)
                 return false;
         }
diff --git a/process/Binary_lib/Binary_lib.aod b/process/Binary_lib/Binary_lib.aod
index 39de483b5c216084257d95a007b355a11c1d53c0..338211a33b61dfeed03e065d60e6eabb1f67ed0c 100644
--- a/process/Binary_lib/Binary_lib.aod
+++ b/process/Binary_lib/Binary_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Binary_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Binary_lib/process.js</process>
diff --git a/process/Bulkmail_lib/Bulkmail_lib.aod b/process/Bulkmail_lib/Bulkmail_lib.aod
index 0befb2a734840466905596858a7e558a4052f232..6bc2e64de1b4da7172b3984b996837925bf07c10 100644
--- a/process/Bulkmail_lib/Bulkmail_lib.aod
+++ b/process/Bulkmail_lib/Bulkmail_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Bulkmail_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Bulkmail_lib/process.js</process>
diff --git a/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod b/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod
index 07b3e2150f48a91844aeada49cb40dfbb5d04cf1..7257f6acb059c410783b52c8e68da1637a4d111f 100644
--- a/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod
+++ b/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>CachedRecordContainer_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/CachedRecordContainer_lib/process.js</process>
diff --git a/process/CachedRecordContainer_lib/process.js b/process/CachedRecordContainer_lib/process.js
index e44f4dfa90c436f711c74ec22c5c4ad01d9942f2..f7d4ea84563fcc60f9606e7ad2efbd8de6cc27c4 100644
--- a/process/CachedRecordContainer_lib/process.js
+++ b/process/CachedRecordContainer_lib/process.js
@@ -161,7 +161,14 @@ CachedRecordContainerUtils.getKey = function(pVariable1, pVariableN) {
     varsToCheck.forEach(function (varToCheck){
         if (vars.exists(varToCheck))
         {
-            var value = vars.getString(varToCheck);
+            var value = vars.get(varToCheck);
+            if (value && Utils.isObject(value))
+            {
+                if (varToCheck === "$local.filters" && _isEmptyFilter(value))
+                    value = null;
+                else
+                    value = JSON.stringify(value);
+            }
             if (value != null)
                 key.push(value);
             else
@@ -174,4 +181,10 @@ CachedRecordContainerUtils.getKey = function(pVariable1, pVariableN) {
     });
     
     return key.join(".");
+    
+    function _isEmptyFilter (pFilter)
+    {
+        var childs = pFilter.childs;
+        return Utils.isNullOrEmpty(childs) || (childs.length === 1 && childs[0].operator === "CONTAINS" && !childs[0].key);
+    }
 };
\ No newline at end of file
diff --git a/process/Calendar_lib/Calendar_lib.aod b/process/Calendar_lib/Calendar_lib.aod
index ba466c5bf5fc50d099a4c5de79e3808744b53b56..657f6034dea6a1ee813d796025e4c9861432d484 100644
--- a/process/Calendar_lib/Calendar_lib.aod
+++ b/process/Calendar_lib/Calendar_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Calendar_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Calendar_lib/process.js</process>
diff --git a/process/Calendar_lib/process.js b/process/Calendar_lib/process.js
index e9f96a4a9089f1ff65bb69dfb21ff41063f90ab8..978a653a75b7fa013cf05274dd8e9ee25550e00c 100644
--- a/process/Calendar_lib/process.js
+++ b/process/Calendar_lib/process.js
@@ -275,9 +275,11 @@ CalendarUtil.newSilentEvent = function( pSummary, pDescription, pWithLink, pUser
  *                                                  Priority of the task/appointment.<br>
  * @param {String} pReminder (optional)             <p>
  *                                                  Reminder.<br>
+ * @param {[]} pExternalAttendees                   <p>
+ *                                                  external attendes ([mailaddress])<br>
  * @return {Object}                                 <p>
  */
-CalendarUtil.createEntry = function(pUid, pType, pSummary, pDescription, pWithLink, pAppLinkContext, pAppLinkId, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, pPriority, pReminder )
+CalendarUtil.createEntry = function(pUid, pType, pSummary, pDescription, pWithLink, pAppLinkContext, pAppLinkId, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, pPriority, pReminder, pExternalAttendees )
 {
     var Entry = {};
     var framename;
@@ -297,13 +299,23 @@ CalendarUtil.createEntry = function(pUid, pType, pSummary, pDescription, pWithLi
     if ( pStart == undefined ) pStart = datetime.toLong(datetime.toDate(parseInt(vars.getString("$sys.date")) + datetime.ONE_HOUR, "dd.MM.yyyy HH:00"), "dd.MM.yyyy HH:mm");
     if ( pCategory == undefined || pCategory == null  ) pCategory = "";
 
-    if (pAffectedUsers == null || pAffectedUsers == undefined )
+    if ( (pAffectedUsers == null || pAffectedUsers == undefined) && (pExternalAttendees == null || pExternalAttendees == undefined))
     {
         Entry[calendars.AFFECTEDUSERS] = "";
     }
     else
     {
-        Entry[calendars.AFFECTEDUSERS] = text.encodeMS(calendars.getCalendarUsers(pAffectedUsers));
+        var externalAtt = [];
+        var affectedUsers = [];
+        if(pAffectedUsers)
+            affectedUsers = calendars.getCalendarUsers(pAffectedUsers);
+        
+        if(pExternalAttendees)
+        {
+            for(let i = 0; i < pExternalAttendees.length; i++)
+                externalAtt.push("; mailto:" + pExternalAttendees[i] + "; CN:" +  pExternalAttendees[i] + "; ")
+        }    
+        Entry[calendars.AFFECTEDUSERS] = text.encodeMS(affectedUsers.concat(externalAtt));
     }
     Entry[calendars.TYPE] = pType;
     Entry[calendars.DTSTART] = pStart;
@@ -334,10 +346,10 @@ CalendarUtil.createEntry = function(pUid, pType, pSummary, pDescription, pWithLi
         pStatus = CalendarUtil.mapCalendarStatus(pStatus, calendars.getBackendTypeTasks() );
         
     }
-
-
+    
     if(pUid)
         Entry[calendars.ID] = pUid;
+    
     Entry[calendars.USER] = calendars.getCalendarUser(pUser);
     Entry[calendars.DESCRIPTION] = pDescription;
     Entry[calendars.SUMMARY] = pSummary;
@@ -345,8 +357,7 @@ CalendarUtil.createEntry = function(pUid, pType, pSummary, pDescription, pWithLi
     Entry[calendars.CLASSIFICATION] = calendars.CLASSIFICATION_PUBLIC;
     Entry[calendars.CATEGORIES] = pCategory;
     Entry[calendars.TRANSPARENCY] =  "OPAQUE";
-   
-
+    
     if( pPriority != undefined )
     {
         Entry[calendars.PRIORITY] = pPriority;
@@ -471,17 +482,17 @@ CalendarUtil.reset_filterEvent = function()
 }
 
 /*
- * Gibt den richtigen Status zum Prüfen je nach Backend zurück
+ * Gibt den richtigen Status zum Prüfen je nach Backend zurück
  * Returns the matching status, to the corresponding backend.
  *
  *
- * @param {String} pStatus req die konstante für den zu prüfenden status,
+ * @param {String} pStatus req die konstante für den zu prüfenden status,
  *                             z.B. calendars.STATUS_INPROCESS
  *
- * @param {String} pCalendarType req die konstante für den typen des Termin- oder Aufgabenbackends,
+ * @param {String} pCalendarType req die konstante für den typen des Termin- oder Aufgabenbackends,
  *                             z.B. calendars.BACKEND_DB
  *
- * @return {String} Konstanten für den Kalender (Backend-Typen), gibt es den status im backend nicht
+ * @return {String} Konstanten für den Kalender (Backend-Typen), gibt es den status im backend nicht
  *                  wird null geliefert
  */
 CalendarUtil.mapCalendarStatus = function(pStatus, pCalendarType)
diff --git a/process/Campaign_lib/Campaign_lib.aod b/process/Campaign_lib/Campaign_lib.aod
index 6cff8443c7403caa3bbdc859ee356e248dc54018..1018469206a67ad0b29b351669b2b1882538d96a 100644
--- a/process/Campaign_lib/Campaign_lib.aod
+++ b/process/Campaign_lib/Campaign_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Campaign_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Campaign_lib/process.js</process>
diff --git a/process/Campaign_lib/process.js b/process/Campaign_lib/process.js
index 7c893948d7f1a576518e469721ae1dbec4a50ec2..2d0507917a2047a0e9a8028ceb221045a9db3326 100644
--- a/process/Campaign_lib/process.js
+++ b/process/Campaign_lib/process.js
@@ -170,12 +170,16 @@ CampaignUtils.getCampaignStatusByCampaignId = function(pCampaignId)
  */
 CampaignUtils.createLogEntry = function(pCampaignId, pCampaignStepId, pCampaignParticipantId, pPreviousCampaignStepId)
 {
-    let colsCampaignParticipantLog = CampaignUtils.getParticipantLogInsertColumnNames();
+    var rowCount = new SqlBuilder().insertFields({
+        "CAMPAIGN_ID": pCampaignId, 
+        "CAMPAIGNSTEP_ID": pCampaignStepId, 
+        "CAMPAIGNPARTICIPANT_ID": pCampaignParticipantId, 
+        "USER_NEW": vars.get("$sys.user"), 
+        "DATE_NEW": vars.get("$sys.date"), 
+        "PREVIOUS_CAMPAIGNSTEP_ID": pPreviousCampaignStepId
+    }, "CAMPAIGNPARTICIPANTLOG", "CAMPAIGNPARTICIPANTLOGID");
     
-    let valsCampaignParticipantLog = new Array(util.getNewUUID(), pCampaignId, pCampaignStepId, pCampaignParticipantId, vars.get("$sys.user"), vars.get("$sys.date"), pPreviousCampaignStepId);
-    
-    let rows = db.insertData("CAMPAIGNPARTICIPANTLOG", colsCampaignParticipantLog, null, valsCampaignParticipantLog);
-    return (rows == 1);
+    return rowCount > 0;
 }
 
 /**
@@ -204,12 +208,11 @@ CampaignUtils.getParticipantLogInsertColumnNames = function()
 CampaignUtils.openSetCampaignStepViewByRowIds = function(pParticipantIds, pCampaignId, pCampaignStepId)
 {
     var params = {
-        "campaignParticipantsRowIds_param":pParticipantIds,
-        "currentCampaignId_param":pCampaignId,
-        "currentCampaignStepId_param":pCampaignStepId,
-        "isUpdate_param":true
+        "campaignParticipantsRowIds_param": pParticipantIds,
+        "currentCampaignId_param": pCampaignId,
+        "currentCampaignStepId_param": pCampaignStepId,
+        "isUpdate_param": true
     };
-    
     neon.openContext("CampaignAddParticipants", "CampaignAddParticipantsEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
 }
 
@@ -226,12 +229,12 @@ CampaignUtils.openSetCampaignStepViewByRowIds = function(pParticipantIds, pCampa
  */
 CampaignUtils.openSetCampaignStepViewByCondition = function(pCondition, pCampaignId, pCampaignStepId)
 {
-    var params = {};
-    params["campaignParticipantsCondition_param"] = pCondition;
-    params["currentCampaignId_param"] = pCampaignId;
-    params["currentCampaignStepId_param"] = pCampaignStepId;
-    params["isUpdate_param"] = true;
-    
+    var params = {
+        "campaignParticipantsCondition_param": pCondition,
+        "currentCampaignId_param": pCampaignId,
+        "currentCampaignStepId_param": pCampaignStepId,
+        "isUpdate_param": true
+    };
     neon.openContext("CampaignAddParticipants", "CampaignAddParticipantsEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
 }
 
@@ -244,11 +247,10 @@ CampaignUtils.openSetCampaignStepViewByCondition = function(pCondition, pCampaig
  */
 CampaignUtils.openNewCampaignStepView = function(pCampaignId)
 {
-    var params = {};
-    
-    params["campaignId_param"] = pCampaignId;
-    params["campaignSelectionVisible_param"] = true;
-
+    var params = {
+        "campaignId_param": pCampaignId,
+        "campaignSelectionVisible_param": true
+    };
     neon.openContext("CampaignStep", "CampaignStepEdit_view", null, neon.OPERATINGSTATE_NEW, params);
 }
 
@@ -258,9 +260,7 @@ CampaignUtils.openNewCampaignStepView = function(pCampaignId)
  */
 CampaignUtils.openNewCampaignView = function()
 {
-    var params = {};
-    
-    neon.openContext("Campaign", "CampaignEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+    neon.openContext("Campaign", "CampaignEdit_view", null, neon.OPERATINGSTATE_NEW, {});
 }
 
 /**
@@ -283,17 +283,17 @@ CampaignUtils.getDefaultCampaignStep = function(pCampaignId)
 /**
  * Returns the start date to the corresponding campaign id.<br>
  * 
- * @param {String} pCapmaignId                  <p>
+ * @param {String} pCampaignId                  <p>
  *                                              The corresponding campaign id.<br>
  * @return {String}                             <p>
  *                                              The end date in this format:<br>
  *                                              <b>yyyy-mm-dd</b>                                             
  */
-CampaignUtils.getCampaignStartDate = function(pCapmaignId)
+CampaignUtils.getCampaignStartDate = function(pCampaignId)
 {
     return newSelect("DATE_START")
         .from("CAMPAIGNSTEP")
-        .whereIfSet("CAMPAIGNSTEP.CAMPAIGN_ID", pCapmaignId)
+        .whereIfSet("CAMPAIGNSTEP.CAMPAIGN_ID", pCampaignId)
         .orderBy("SORTING ASC")
         .cell(true);
 }
@@ -301,17 +301,17 @@ CampaignUtils.getCampaignStartDate = function(pCapmaignId)
 /**
  * Returns the end date to the corresponding campaign id.<br>
  * 
- * @param {String} pCapmaignId                          <p>
+ * @param {String} pCampaignId                          <p>
  *                                                      The corresponding campaign id.<br>
  * @return {String}                                     <p>
  *                                                      The end date in this format:<br>
  *                                                      <b>yyyy-mm-dd</b>                                                     
  */
-CampaignUtils.getCampaignEndDate = function(pCapmaignId)
+CampaignUtils.getCampaignEndDate = function(pCampaignId)
 {
     return newSelect("DATE_END")
         .from("CAMPAIGNSTEP")
-        .whereIfSet("CAMPAIGNSTEP.CAMPAIGN_ID", pCapmaignId)
+        .whereIfSet("CAMPAIGNSTEP.CAMPAIGN_ID", pCampaignId)
         .orderBy("SORTING DESC")
         .cell(true);
 }
@@ -343,19 +343,19 @@ CampaignUtils.getMaxParticipantsValidationMessage = function()
  */
 CampaignUtils.deleteCampaignStepData = function(pCampaignStepId)
 {
-    if(pCampaignStepId == null || pCampaignStepId == "")
+    if (!pCampaignStepId)
         return;
-    
-    let queries = [];
 
     newWhere("CAMPAIGNSTEP.PREDECESSORSTEP_ID", pCampaignStepId)
-        .updateData(true, ["PREDECESSORSTEP_ID"], null, [""]);
+        .updateFields({"PREDECESSORSTEP_ID": ""});
     
-    queries.push(new Array("CAMPAIGNPARTICIPANTLOG", newWhere("CAMPAIGNPARTICIPANTLOG.CAMPAIGNSTEP_ID", pCampaignStepId).build()));
-    queries.push(new Array("CAMPAIGNPARTICIPANT", newWhere("CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID", pCampaignStepId).build()));
-    queries.push(new Array("CAMPAIGNCOST", newWhere("CAMPAIGNCOST.CAMPAIGNSTEP_ID", pCampaignStepId).build()));
-    queries.push(new Array("CAMPAIGNSTEP", newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId).build()));
-    db.deletes(queries)
+    var deleteStatements = [
+        newWhere("CAMPAIGNPARTICIPANTLOG.CAMPAIGNSTEP_ID", pCampaignStepId).buildDeleteStatement(),
+        newWhere("CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID", pCampaignStepId).buildDeleteStatement(),
+        newWhere("CAMPAIGNCOST.CAMPAIGNSTEP_ID", pCampaignStepId).buildDeleteStatement(),
+        newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId).buildDeleteStatement()
+    ];
+    db.deletes(deleteStatements);
 }
 
 /**
@@ -372,24 +372,22 @@ CampaignUtils.deleteCampaignStepData = function(pCampaignStepId)
  */
 CampaignUtils.deleteCampaignData = function(pCampaignId)
 {
-    if(pCampaignId == null || pCampaignId == "")
+    if (!pCampaignId)
         return;
     
-    let campaignStepIds = newSelect("CAMPAIGNSTEPID")
+    var campaignStepIds = newSelect("CAMPAIGNSTEPID")
                             .from("CAMPAIGNSTEP")
                             .where("CAMPAIGNSTEP.CAMPAIGN_ID", pCampaignId)
                             .arrayColumn();
     
-    campaignStepIds.forEach(function (campaignStepId) 
-    {
-        CampaignUtils.deleteCampaignStepData(campaignStepId)
-    });
+    campaignStepIds.forEach(CampaignUtils.deleteCampaignStepData);
     
-    let campaignRelated = [];
-    campaignRelated.push(new Array("CAMPAIGNCOST", newWhere("CAMPAIGNCOST.CAMPAIGN_ID", pCampaignId).build()));
-    campaignRelated.push(new Array("CAMPAIGN", newWhere("CAMPAIGN.CAMPAIGNID", pCampaignId).build()));
+    var campaignRelated = [
+        newWhere("CAMPAIGNCOST.CAMPAIGN_ID", pCampaignId).buildDeleteStatement(),
+        newWhere("CAMPAIGN.CAMPAIGNID", pCampaignId).buildDeleteStatement()
+    ];
     
-    db.deletes(campaignRelated)
+    db.deletes(campaignRelated);
 }
 
 /**
@@ -404,14 +402,14 @@ CampaignUtils.deleteCampaignData = function(pCampaignId)
  */
 CampaignUtils.updateCampaignStep = function(pCampaignStepId, pDateStart, pDateEnd)
 {
-    if(pCampaignStepId == null || pCampaignStepId == "")
+    if (!pCampaignStepId)
         return;
     
-    let columnsToUpdate = ["DATE_START", "DATE_END"];
-    let newValues = [pDateStart, pDateEnd];
-    let campaignStepIdCondition = newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId);
-    
-    campaignStepIdCondition.updateData(true, "CAMPAIGNSTEP", columnsToUpdate, null, newValues);
+    newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId)
+        .updateFields({
+            "DATE_START": pDateStart, 
+            "DATE_END": pDateEnd
+        });
 }
 
 /**
@@ -629,13 +627,20 @@ CampaignUtils.GetContactCountByCondition = function(pCondition, pLookInCampaignO
  */
 CampaignUtils.copyCampaign = function(pCampaignid, pDescription, pEmplContactId, pName, pState)
 {
-    var params = {
-        "originalCampaignIdCopy_param" : pCampaignid,
-        "description_param" : pDescription,
-        "emplContactId_param" : pEmplContactId,
-        "name_param" : pName || "",
-        "state_param" : pState || ""
-    };
+    var fieldValues = {}
+    var preSetValues = {}
+    var params = {}
+
+    preSetValues["$field.DESCRIPTION"] = pDescription
+    preSetValues["$field.EMPLOYEE_CONTACT_ID"] = pEmplContactId
+    preSetValues["$field.NAME"] = pName
+    preSetValues["$field.STATUS"] = pState
+
+    fieldValues["FIELDS"] = preSetValues
+    fieldValues["CAMPAIGNID"] = pCampaignid
+    params["Copy_param"] = JSON.stringify(fieldValues)
+    
+    
     neon.openContext("Campaign", null, null, neon.OPERATINGSTATE_NEW, params);
 }
 
diff --git a/process/ChecklistEntryRegistry_basic/ChecklistEntryRegistry_basic.aod b/process/ChecklistEntryRegistry_basic/ChecklistEntryRegistry_basic.aod
new file mode 100644
index 0000000000000000000000000000000000000000..1bd98ef5996a85478b69dc6e07876c46439aec7c
--- /dev/null
+++ b/process/ChecklistEntryRegistry_basic/ChecklistEntryRegistry_basic.aod
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>ChecklistEntryRegistry_basic</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/ChecklistEntryRegistry_basic/process.js</process>
+  <alias>Data_alias</alias>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/ChecklistEntryRegistry_basic/process.js b/process/ChecklistEntryRegistry_basic/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..061a6f5a5d961d59dafa3e772cab99b0f7bc2c1f
--- /dev/null
+++ b/process/ChecklistEntryRegistry_basic/process.js
@@ -0,0 +1,405 @@
+import("system.logging");
+import("system.eMath");
+import("system.datetime");
+import("system.translate");
+import("system.entities");
+import("system.project");
+import("KeywordRegistry_basic");
+import("Sql_lib");
+
+
+/**
+ * Returns the matching rows, to the defined parameters.
+ * 
+ * @param {String} pUid                 <p>
+ *                                      The uid of the corresponding data set.
+ * @param {String} pEntity              <p>
+ *                                      The entity from which the data shall be loaded.
+ * @param {Array} pFields               <p>
+ *                                      The fields which shall be loaded, if null all fields in requested entity will be loaded.
+ * @param {Array} pParameters           <p>
+ *                                      The parameters which are necessary to loading the rows.
+ * @param {String} pProvider            <p>
+ *                                      An provider for loading the rows.
+ */
+function _getRows(pUid, pEntity, pFields, pParameters, pProvider){
+    
+    var config = entities.createConfigForLoadingRows()
+                            .entity(pEntity)
+                            .ignorePermissions(true)
+                            .fields(pFields);
+
+    if (pProvider)
+    {
+        config.provider(pProvider);
+    }
+    if (pUid)
+    {
+        config.uid(pUid);
+    }
+
+    if (pParameters)
+    {
+        for (let i = 0; i < pParameters.length; i++) 
+        {
+            if (pParameters[i][0] && pParameters[i][1] && pParameters[i][0] != "" && pParameters[i][1] != "")
+            {
+                config.addParameter(pParameters[i][0], pParameters[i][1]);  
+            }
+        }
+    }
+
+    return entities.getRows(config);
+}
+
+/**
+ * Provides a central place where all checklist entries with type 'AUTO' are defined.
+ * All defined entries has to return a object of type "ChecklistEntry".
+ * <p>
+ * This object has an attribute named: <u><b><i>verifierFn</i></u></b>. This attribute is a function, which
+ * expects the uid/object-rowid as param and is, how the name implies, responsible for
+ * verifying, whether the checklist entry is fulfilled or not.
+ * 
+ * @class
+ * 
+ * @example
+ * $ChecklistEntryRegistry.salesprojectRoleProjManager()
+ */
+function $ChecklistEntryRegistry(){}
+
+/*
+ * Returns you a list of all existing entries as object <br>
+ * <i><u>(key: functionname & value: title)</u></i><br>
+ * <p>
+ * E.g.: used in a dropDownProcess to provide a<br>
+ * selection of all possible entries.<br>
+ * 
+ */
+$ChecklistEntryRegistry.getEntryList = function(){
+    var rawList = Object.keys($ChecklistEntryRegistry);
+    var returnableList = {};
+    
+    rawList.forEach(function(pEntry){
+        if (!(pEntry == 'getEntryList'))
+        {
+            returnableList[pEntry] = $ChecklistEntryRegistry[pEntry]().title;
+        }
+    });
+    
+    return returnableList;
+}
+
+/*
+ * Checks whether the project team role: "Project manager"<br>
+ * is filled for the given salesproject.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectRoleProjManager = function(){
+    return{
+        title: translate.text("Project team: \"Project manager\""),
+        verifierFn: function(pSalesprojectId){
+            
+            var spRows = _getRows(pSalesprojectId, "Salesproject_entity", ["SALESPROJECTID", "MST_TEAM_ID", "PROJECTCODE"], null, "NoPhaseRequirementLoading");
+            var memberRows = _getRows(null, "Member_entity", ["MEMBERROLE"], [["EnableMSTeams_param", spRows[0]["MST_TEAM_ID"]], ["ObjectRowId_param", spRows[0]["SALESPROJECTID"]]], "WithDistrictResponsibles");
+            for (let i = 0; i < memberRows.length; i++) 
+            {
+                if(memberRows[i]["MEMBERROLE"] == $KeywordRegistry.memberRoleProjManag())
+                {
+                    return true;
+                }
+            }
+                return false;
+        }
+    };
+}
+
+/*
+ * Checks whether a touchpoint for the<br>
+ * given salesproject, exists.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectTouchpoint = function(){
+    return{
+        title: translate.text("Touchpoint"),
+        verifierFn: function(pSalesprojectId){
+            
+            var spRows = _getRows(pSalesprojectId, "Salesproject_entity", ["SALESPROJECTID", "MST_TEAM_ID", "PROJECTCODE"], null, "NoPhaseRequirementLoading");
+            var touchpintRows = _getRows(null, "SalesprojectSource_entity", ["SALESPROJECT_TOUCHPOINTID"], [["SalesprojectId_param", pSalesprojectId]], "SalesprojectSouces");
+            if(touchpintRows.length > 0) 
+            {
+                return true;
+            }
+            return false;
+        }
+    };
+}
+
+/*
+ * Checks whether the volume for the<br>
+ * given salesproject, is entered.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectVolume = function(){
+    return{
+        title: translate.text("Volume"),
+        verifierFn: function(pSalesprojectId){
+            
+            var spRows = _getRows(pSalesprojectId, "Salesproject_entity", ["VOLUME"], null, "NoPhaseRequirementLoading");
+            if(spRows[0]["VOLUME"] && spRows[0]["VOLUME"] != "") 
+            {
+                return true;
+            }
+            return false;
+        }
+    };
+}
+
+/*
+ * Checks whether an project start for the<br>
+ * given salesproject, exists.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectProjStart = function(){
+    return{
+        title: translate.text("Project start"),
+        verifierFn: function(pSalesprojectId){
+            
+            var spRows = _getRows(pSalesprojectId, "Salesproject_entity", ["STARTDATE"], null, "NoPhaseRequirementLoading");
+            if(spRows[0]["STARTDATE"] && spRows[0]["STARTDATE"] != "") 
+            {
+                return true;
+            }
+            return false;
+        }
+    };
+}
+
+/*
+ * Checks whether all classifications fields for the<br>
+ * given salesproject are filled.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectClassificationFields = function(){ 
+    return{
+        title: translate.text("Classification fields"),
+        verifierFn: function(pSalesprojectId){
+            var res = false;
+            var classificationRows = _getRows(null, "Classification_entity", ["VALUE"], [["ObjectType_param", "Salesproject"], ["ObjectRowid_param", pSalesprojectId]], "Classifications");
+            if(classificationRows.length > 0)
+            {
+                res = true
+                for (let i = 0; i < classificationRows.length; i++) {
+                    if(classificationRows[i] == "" || classificationRows[i] == null || classificationRows[i] == undefined)
+                    {
+                        res = false;
+                        break;
+                    }
+                }
+            }
+            return res;
+        }
+    };
+}
+
+/*
+ * Checks whether the project team role: "Internal Distribution"<br>
+ * for the given salesproject, exists.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectRoleIntDist = function(){
+    return{
+        title: translate.text("Project team: \"Internal distribution\""),
+        verifierFn: function(pSalesprojectId){
+            
+            var spRows = _getRows(pSalesprojectId, "Salesproject_entity", ["SALESPROJECTID", "MST_TEAM_ID", "PROJECTCODE"], null, "NoPhaseRequirementLoading");
+            var memberRows = _getRows(null, "Member_entity", ["MEMBERROLE"], [["EnableMSTeams_param", spRows[0]["MST_TEAM_ID"]], ["ObjectRowId_param", spRows[0]["SALESPROJECTID"]]], "WithDistrictResponsibles");
+            for (let i = 0; i < memberRows.length; i++) 
+            {
+                if(memberRows[i]["MEMBERROLE"] == $KeywordRegistry.memberRoleIntenDistrib())
+                {
+                    return true;
+                }
+            }
+                return false;
+        }
+    };
+}
+
+/*
+ * Checks whether all project team role<br>
+ * for the given salesproject, assigned.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectTeamRoles = function(){
+    return{
+        title: translate.text("Project team roles"),
+        verifierFn: function(pSalesprojectId){
+            
+            var spRows = _getRows(pSalesprojectId, "Salesproject_entity", ["SALESPROJECTID", "MST_TEAM_ID", "PROJECTCODE"], null, "NoPhaseRequirementLoading");
+            var memberRows = _getRows(null, "Member_entity", ["MEMBERROLE"], [["EnableMSTeams_param", spRows[0]["MST_TEAM_ID"]], ["ObjectRowId_param", spRows[0]["SALESPROJECTID"]]], "WithDistrictResponsibles");
+            var allMemberRoles = newSelect(SqlBuilder.caseWhen(newWhere("AB_KEYWORD_ENTRY.KEYID", "MEMROLEDISTRICTRESPONSIBLE")).thenString("70cbad1b-eac6-4369-ba50-4946e0fbcb3a").elseValue("AB_KEYWORD_ENTRY.KEYID"))
+                                            .from("AB_KEYWORD_ENTRY")
+                                            .where("AB_KEYWORD_ENTRY.CONTAINER", "MemberRole")
+                                            .arrayColumn();
+            for (let i = 0; i < memberRows.length; i++) 
+            {
+                for (let j = 0; j < allMemberRoles.length; j++) {
+                        if(memberRows[i]["MEMBERROLE"] == allMemberRoles[j])
+                        {
+                            allMemberRoles.splice(j, 1); 
+                        }
+                    }
+            }
+            if(allMemberRoles.length == 0)
+            {
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
+    };
+}
+
+/*
+ * Checks whether an offer<br>
+ * for the given salesproject, exists.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectOfferExists = function(){
+    return{
+        title: translate.text("Offer exists"),
+        verifierFn: function(pSalesprojectId){
+            
+            var offerRows = _getRows(null, "Offer_entity", ["OFFERID"], [["ObjectRowId_param", pSalesprojectId], ["ObjectType_param", "Salesproject"]], "Links");
+            if(offerRows.length > 0) 
+            {
+                return true;
+            }
+            return false;
+        }
+    };
+}
+
+/*
+ * Checks whether the project start for the<br>
+ * given salesproject, is in the next 12 months.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectProjStart12 = function(){
+    return{
+        title: translate.text("Project start within next 12 months"),
+        verifierFn: function(pSalesprojectId){
+            
+            var spRows = _getRows(pSalesprojectId, "Salesproject_entity", ["STARTDATE"], null, "NoPhaseRequirementLoading");
+
+            for (let i = 0; i < spRows.length; i++) 
+            {
+                var startdate = spRows[i]["STARTDATE"];
+                if(startdate != null && startdate != "" && startdate != undefined)
+                {
+                    var todayUnformatted = datetime.today();
+                    var today = datetime.toDate(todayUnformatted, "dd.MM.yyyy")
+                    var currentYear = today.slice(today.length-4, today.length)
+                    var nextYear = eMath.addInt(parseInt(currentYear),1);
+                    var todayNextYear = datetime.toLong(today.slice(0, -4) + nextYear, "dd.MM.yyyy")
+                    
+                    return (parseInt(todayUnformatted) <= parseInt(startdate) && parseInt(startdate) <= parseInt(todayNextYear)) ? true : false;
+                }
+            }
+            return false;
+        }
+    };
+}
+
+/*
+ * Checks whether the offer for the<br>
+ * given salesproject, is marked as sent.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectOfferSent = function(){
+    return{
+        title: translate.text("Offer sent"),
+        verifierFn: function(pSalesprojectId){
+            
+            var offerRows = _getRows(null, "Offer_entity", ["STATUS"], [["ObjectRowId_param", pSalesprojectId], ["ObjectType_param", "Salesproject"]], "Links");
+            var res = false;
+
+            for (let i = 0; i < offerRows.length; i++)
+            {
+                if(offerRows[i].STATUS == $KeywordRegistry.offerStatus$sent())
+                {
+                    res = true;
+                    break;
+                }
+            }
+            return res;
+        }
+    };
+}
+
+/*
+ * Checks whether the project probability for the<br>
+ * given salesproject, equals 100%.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectProb100 = function(){
+    return{
+        title: translate.text("Probablity: 100%"),
+        verifierFn: function(pSalesprojectId){
+            
+            var spRows = _getRows(pSalesprojectId, "Salesproject_entity", ["PROBABILITY"], null, "NoPhaseRequirementLoading");
+            if(spRows[0]["PROBABILITY"] && spRows[0]["PROBABILITY"] == "SALPROJPROB100") 
+            {
+                return true;
+            }
+            return false;
+        }
+    };
+}
+
+/*
+ * Checks whether the project status for the<br>
+ * given salesproject, is won.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectStatusWon = function(){
+    return{
+        title: translate.text("Status: \"won\""),
+        verifierFn: function(pSalesprojectId){
+            
+            var spRows = _getRows(pSalesprojectId, "Salesproject_entity", ["STATUS"], null, "NoPhaseRequirementLoading");
+            if(spRows[0]["STATUS"] && (spRows[0]["STATUS"] == $KeywordRegistry.salesprojectState$partialOrder() ||
+                    spRows[0]["STATUS"] == $KeywordRegistry.salesprojectState$order())) 
+            {
+                return true;
+            }
+            return false;
+        }
+    };
+}
+
+/*
+ * Checks whether a contract for the<br>
+ * offer to the given salesproject, exists.
+ * 
+ */
+$ChecklistEntryRegistry.salesprojectContractExists = function(){
+    return{
+        title: translate.text("Contract"),
+        verifierFn: function(pSalesprojectId){
+            
+            var offerRows = _getRows(null, "Offer_entity", ["OFFERID"], [["ObjectRowId_param", pSalesprojectId], ["ObjectType_param", "Salesproject"]], "Links");
+            for (let i = 0; i < offerRows.length; i++) 
+            {
+                var documentRows = _getRows(null, "Document_entity", ["BINDATA_UPLOAD"], [["AssignmentRowId_param", offerRows[i]["OFFERID"]], ["AssignmentTable_param", "OFFER"]], "Documents");
+                if(documentRows.length>0)
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+    };
+}
diff --git a/process/ChecklistRegistry_basic/ChecklistEntryRegistry_basic.aod b/process/ChecklistRegistry_basic/ChecklistEntryRegistry_basic.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7d1fe5ffb3be6f886dded34e84d8e0e4ef230cba
--- /dev/null
+++ b/process/ChecklistRegistry_basic/ChecklistEntryRegistry_basic.aod
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process 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/process/1.2.1">
+  <name>ChecklistEntryRegistry_basic</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/ChecklistEntryRegistry_basic/process.js</process>
+  <alias>Data_alias</alias>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/ClassificationFilter_lib/ClassificationFilter_lib.aod b/process/ClassificationFilter_lib/ClassificationFilter_lib.aod
index 9b182044a8785df3037df931f0df656d095ae109..705efe2d6620d1a37bc4b723a9615acc23895e35 100644
--- a/process/ClassificationFilter_lib/ClassificationFilter_lib.aod
+++ b/process/ClassificationFilter_lib/ClassificationFilter_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ClassificationFilter_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/ClassificationFilter_lib/process.js</process>
diff --git a/process/ClassificationFilter_lib/process.js b/process/ClassificationFilter_lib/process.js
index e2200e6e6e8ad55b95fa5fbfdf8cf38c71884677..d99652fcf5c671b48ff348ea8cc7b6d9c9a1a7bc 100644
--- a/process/ClassificationFilter_lib/process.js
+++ b/process/ClassificationFilter_lib/process.js
@@ -19,6 +19,11 @@ function ClassificationTypeFilterUtils() {}
 
 /**
  * fetches classificationtypes and transforms them into filter fields
+ * <br/>
+ * <br/>
+ * Important: 
+ * <br/>
+ * Any changes to the name of the filterFields does also have to be changed in the filterTreeExcludeFieldsProcess of the filterField of the classificationAdmin_entity
  * 
  * @param {String} pObjectType       <p/> contextId of the context whoes classification types are used for providing the filter fields
  *                                      
@@ -51,7 +56,7 @@ ClassificationTypeFilterUtils.getFilterFields = function(pObjectType)
                 contentType: "TEXT",
                 hasDropDownValues: true,
                 isGroupable: true,          // These Fields are also able to be grouped
-                groupedRecordField: "CLASSIFICATION.CLASSIFICATIONSCORE_ID",  // The DB-field that is being grouped by (see also groupQueryProcess)
+                groupedRecordField: "CLASSIFICATION.VALUE",  // The DB-field that is being grouped by (see also groupQueryProcess)
                 titleRecordField: titleField     // The displayname (see also groupQueryProcess)
             });
     }
@@ -76,6 +81,7 @@ var classificationValue = newSelect("CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID,
                                         .where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", classificationTypeId)
                                         .orderBy("CLASSIFICATIONSCORE.TITLE")
                                         .table();
+
                                         
 for (let i = 0; i < classificationValue.length; i++) 
     classificationValue[i][1] = translate.text(classificationValue[i][1])
@@ -115,14 +121,13 @@ ClassificationTypeFilterUtils.getFilterCondition = function(pCondition, pIdTable
 {
     var resSql;   
     
-    var condition = StringUtils.replaceAll(pCondition, pColumnPlaceholder, "CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID");
+    var condition = StringUtils.replaceAll(pCondition, pColumnPlaceholder, "CLASSIFICATION.VALUE");
         
     //a SqlBuilder.IN() in a newWhere is not used here since the subselect can contain a placeholder
     //(the variable condition) that would break the function
     resSql = pIdTableName + "." + pIdColumnName + " in (" + newSelect(pIdTableName + "." + pIdColumnName)
             .from(pIdTableName)
             .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATION.OBJECT_ROWID = " + pIdTableName + "." + pIdColumnName))
-            .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATION.CLASSIFICATIONSCORE_ID = CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID")
             .where(condition) + ")";
 
     return resSql;
@@ -142,7 +147,7 @@ ClassificationTypeFilterUtils.getTranslationSql = function()
         
 
         var rows = entities.getRows(config);
-        var res = SqlUtils.getResolvingCaseWhenFromObject(rows, "CLASSIFICATIONSCOREID", "translatedTitle", "CLASSIFICATIONSCORE_ID");
+        var res = SqlUtils.getResolvingCaseWhenFromObject(rows, "CLASSIFICATIONSCOREID", "translatedTitle", "VALUE");
         return res;
 }
 
@@ -210,6 +215,11 @@ function ClassificationGroupFilterUtils() {}
 
 /**
  * fetches classificationgroups and transforms them into filter fields
+ * <br/>
+ * <br/>
+ * Important: 
+ * <br/>
+ * Any changes to the name of the filterFields does also have to be changed in the filterTreeExcludeFieldsProcess of the filterField of the classificationAdmin_entity
  * 
  * @param {String} pObjectType       <p/> contextId of the context whoes classification groups are used for providing the filter fields
  *                                      
@@ -240,7 +250,14 @@ ClassificationGroupFilterUtils.getFilterFields = function(pObjectType)
         var classificationGroupId = classificationGroup["CLASSIFICATIONGROUPID"];
         var classificationGroupTitle = classificationGroup["#CONTENTTITLE"];
         
-        var representingSqlExpression = sqlHelper.substring("CLASSIFICATIONVALUE", idx+1, 1);
+        //"case when" needed since we want to group both the ones that have no classification for said classificationgroup ("-") 
+        //and the ones that have null as the value (since not all datasets have a CLASSIFICATIONSTORAGE dataset) together
+        // since both don't have an classification for that group
+        var representingSqlExpression = SqlBuilder.caseWhen(newWhere("CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE is null"))
+                                                            .thenString("-")
+                                                            .elseValue(sqlHelper.substring("CLASSIFICATIONVALUE", idx+1, 1))
+                                                            .toString();
+                                                            
         var name = ClassificationGroupFilterNameCoder.encode(classificationGroupId, representingSqlExpression);
         res.push({
             name: name,
@@ -248,7 +265,7 @@ ClassificationGroupFilterUtils.getFilterFields = function(pObjectType)
             contentType: "TEXT",
             hasDropDownValues: true,
             isGroupable: true,
-            groupedRecordField: representingSqlExpression  //title and group valure are the same (for example a resulting "A")
+            groupedRecordField: representingSqlExpression  //title and group value are the same (for example a resulting "A")
         });
     });
     return JSON.stringify(res);
@@ -277,7 +294,7 @@ ClassificationGroupFilterUtils.getFilterValues = function(pFilter)
     var classificationValue = newSelect("CLASSIFICATIONGRADING.GRADING, CLASSIFICATIONGRADING.GRADING")
         .from("CLASSIFICATIONGRADING")
         .where("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID", classificationGroupId)
-        .orderBy("CLASSIFICATIONGRADING.MAXGRADEFORSCORE desc")
+        .orderBy("CLASSIFICATIONGRADING.MINPERCENT desc")
         .table();
 
     return classificationValue;
@@ -292,7 +309,7 @@ ClassificationGroupFilterUtils.getFilterValues = function(pFilter)
  */
 ClassificationGroupFilterUtils.makeFilterValues = function()
 {
-    var filter = vars.getString("$local.filter")
+    var filter = vars.getString("$local.filter");
     var res = ClassificationGroupFilterUtils.getFilterValues(filter);
     return res;
 };
@@ -318,7 +335,12 @@ ClassificationGroupFilterUtils.getFilterCondition = function(pObjectType, pFilte
 {
     var decodedFilterName = ClassificationGroupFilterNameCoder.decode(pFilterName);
     var condition = StringUtils.replaceAll(pCondition, pColumnPlaceholder, decodedFilterName.representingSqlExpression);
-            
+    
+    //"or" needed since we want to filter both the ones that have no classification for said classificationgroup ("-") 
+    //and the ones that have null as the value (since not all datasets have a CLASSIFICATIONSTORAGE dataset) the same way
+    // since both don't have an classification for that group
+    if(pOperatorName == "IS NULL")
+        condition += " OR " + decodedFilterName.representingSqlExpression +"='-'" ;
     return condition;
 };
 
diff --git a/process/Classification_lib/Classification_lib.aod b/process/Classification_lib/Classification_lib.aod
index 659223c9d3b507cfadcd0a8e6a6d0b71f1efe0e5..5b4114c59eaaabf71c169a9f4cd0582cfa6ab60b 100644
--- a/process/Classification_lib/Classification_lib.aod
+++ b/process/Classification_lib/Classification_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Classification_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Classification_lib/process.js</process>
diff --git a/process/Classification_lib/process.js b/process/Classification_lib/process.js
index 756e30fa5384e32bccb6c7e32ebe001c6987c9eb..25419ec3b80a5f2d41f83626ad8c6d50cfb1d8cf 100644
--- a/process/Classification_lib/process.js
+++ b/process/Classification_lib/process.js
@@ -1,3 +1,4 @@
+import("Dependency_lib");
 import("system.text");
 import("system.translate");
 import("system.result");
@@ -22,200 +23,25 @@ function ClassificationUtils() {}
  * This is done by 
  * 
 
- * @param {Number|String} pCurrentScore     <p/>Current score that is reached for a group, e.g. 45
+ * @param {Number|String} pAchievedScore   <p/>Current score that is reached for a group, e.g. 45
+ * @param {Number|String} pbestPossibleScore   <p/>Current score that is reached for a group, e.g. 45
  * @param {String} pGroupId                 <p/>UID of the classification group where the display value is determined. <br/>
  *                                          This is used for determing the maximum value of the group and the resulting 
  *                                          classificaiton value (for example: "B")
  * @param {String} pGroupName               <p/>Name of the group that was passed as ID. This is used as display value and will not be translated,
  *                                          you have to pass this value already translated to the target locale. <br/>
  *                                          The reason for not loading this value based on the groupId is: better performance optimization
+ * @param {Number|String} pGrading          <p/>Current score that is reached for a group, e.g. 45
  * @return {String}                         <p/>formated and translated title, e.g.: "1. Target Group: 45/120 points = B"
  */
-ClassificationUtils.formatDisplaySummaryForGroup = function(pCurrentScore, pGroupId, pGroupName) 
+ClassificationUtils.formatDisplaySummaryForGroup = function(pAchievedScore, pbestPossibleScore, pGroupId, pGroupName, pGrading) 
 {
-    var maxScore = ClassificationUtils.getMaxScore(pGroupId);
-    var classifications = ClassificationUtils.getClassifications(pCurrentScore, pGroupId);
-
-    pCurrentScore = text.formatDouble(pCurrentScore, "#");
-    maxScore = text.formatDouble(maxScore, "#");
-    var res = translate.withArguments("%0: %1/%2 points = %3", [pGroupName, pCurrentScore, maxScore, classifications]);
+    pCurrentScore = text.formatDouble(pAchievedScore, "#");
+    pbestPossibleScore = text.formatDouble(pbestPossibleScore, "#");
+    var res = translate.withArguments("%0: %1/%2 points = %3", [pGroupName, pAchievedScore, pbestPossibleScore, pGrading]);
     return res;
 };
 
-/**
- * Get the score of the classification. You can get all groups at once or only the score for one group.
- * 
-
- * @param {String} pObjectType                                  <p>
- *                                                              The object type.<br>
- * @param {String} pObjectRowid                                 <p>
- *                                                              The row id.<br>
- * @param {String} pClassificationGroup=undefined (optional)    <p>
- *                                                              The classification group. If it is undefined,<br>
- *                                                              the classification for all groups are returned <br>
- *                                                              as Object(-map)<br>
- * @return {Object}                                             <p>
- *                                                              Returns all scores as object-map.<br>
- *                                                              (e.g. {"scoreGroup1": 0, "scoreGroup2": 20})
- */
-ClassificationUtils.getScoreAsObject = function(pObjectType, pObjectRowid, pClassificationGroup)
-{
-    var score = newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, case when sum(score) is not null then sum(score) else 0 end")
-        .from("CLASSIFICATIONTYPE")
-        .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATIONTYPEID = CLASSIFICATIONTYPE_ID")
-            .and("CLASSIFICATION.OBJECT_TYPE", pObjectType)
-            .and("CLASSIFICATION.OBJECT_ROWID", pObjectRowid))
-        .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE_ID = CLASSIFICATIONSCOREID")
-        .where("CLASSIFICATIONTYPE.OBJECT_TYPE", pObjectType)
-        .andIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", pClassificationGroup)
-        .groupBy("CLASSIFICATIONGROUP_ID")
-        .orderBy("CLASSIFICATIONGROUP_ID")
-        .table();
-        
-    var scores = {};
-    score.forEach(function(pRow)
-    {
-        scores[pRow[0]] = pRow[1];
-    });
-    return scores;
-}
-
-/**
- * Gets the scores of a Object, either for all of them or only for one group (depending on the pClassificationGroupId param, 
- * if it's set you get only the score of that group)
- * 
- * @param {String} pObjectType                                  <p>
- *                                                              The object type.<br>
- * @param {String} pObjectRowid                                 <p>
- *                                                              The row id. (UUID of the object, e.g: OrganisationId of Organisation)<br>
- * @param {String} pClassificationGroupId (optional)    <p>
- *                                                              The classification group id. If it is undefined,<br>
- *                                                              the classificationScores for all groups are returned <br>
- *                                                              as Object(-map)<br>
- * @return {Array}                                             <p>
- *                                                              Returns all scores in a Array with this structure:<br>
- *                                                              
- *                                                              [[ID, SCORE], [ID, SCORE], [ID, SCORE]];
- */
-ClassificationUtils.getScore = function(pObjectType, pObjectRowid, pClassificationGroupId)
-{
-    var scoreArray = [];
-    var score = newSelect("sum(score), CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID")
-        .from("CLASSIFICATIONTYPE")
-        .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATIONTYPEID = CLASSIFICATIONTYPE_ID")
-            .and("CLASSIFICATION.OBJECT_TYPE", pObjectType)
-            .and("CLASSIFICATION.OBJECT_ROWID", pObjectRowid))
-        .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE_ID = CLASSIFICATIONSCOREID")
-        .where("CLASSIFICATIONTYPE.OBJECT_TYPE", pObjectType)
-        .andIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", pClassificationGroupId)
-        .groupBy("CLASSIFICATIONGROUP_ID")
-        .orderBy("CLASSIFICATIONGROUP_ID")
-        .table();
-
-    var sorting = newSelect("distinct CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONGROUP.SORTING")
-                            .from("CLASSIFICATIONGROUP")
-                            .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
-                            .where("CLASSIFICATIONTYPE.OBJECT_TYPE", pObjectType)
-                            .orderBy("CLASSIFICATIONGROUP.SORTING")
-                            .table();
-
-    for (var i = 0; i < sorting.length; i++)
-    {
-        for (var ii = 0; ii < score.length; ii++) {
-            if(score[ii][1] == sorting[i][0])
-            {
-                scoreArray[i] = score[ii]
-            }
-        }
-    }
-        
-    return scoreArray;
-}
-
-/**
- * Get all classifications for one dataset as String.<br>
- * Each char represents one classification.<br>
- * 
- * @param {String} pScore           <p>
- *                                  The archieved score
- * @param {String} pClassificationGroupId  <p>     
- *                                  The Id of the Classification Group
- * @return {String}                 <p>
- *                                  Returns the corresponding classification.<br>
- */
-ClassificationUtils.getClassifications = function(pScore, pClassificationGroupId) 
-{
-    var score = pScore;
-    var classificationGroupId = pClassificationGroupId
-    var gradingTable = ClassificationUtils.getClassificationGrading(classificationGroupId);
-    var grade = "-";
-
-        
-    for(let i = 0; i < gradingTable.length; i++)
-    {
-            if(Number(score) <= Number(gradingTable[i][0]) && score !=0 && grade == "-")
-            {
-                grade = gradingTable[i][1];
-                break;
-            }
-    }
-    return grade;
-}
-
-/**
- * Gets the classification table <br>
- * 
- * @param {String} pClassificationGroupId  <p>     
- *                                  The Classification Group              
- * @return {String}                 <p>
- *                                  Returns the corresponding classification table, ordered by the maxscore ascending.<br>
- */
-ClassificationUtils.getClassificationGrading = function(pClassificationGroupId) 
-{
-    var config = entities.createConfigForLoadingRows()
-        .entity("ClassificationGrading_entity")
-        .addParameter("ClassificationTypeId_param", pClassificationGroupId)
-        .fields(["MAXGRADEFORSCORE", "GRADING"])
-        .ignorePermissions(true);
-        
-    var gradings = entities.getRows(config);
-    ArrayUtils.sortArrayOfObjects(gradings, "MAXGRADEFORSCORE", true, true);
-    gradings = gradings.map(function (row){
-        return [row["MAXGRADEFORSCORE"], row["GRADING"]];
-    });
-    return gradings;
-}
-
-/**@cl
- * Gets the maximum score for one group depending on the pClassificationGroupId param.
- * 
- * @param {String} pClassificationGroupId                       <p>
- *                                                              The classification groupname.<br>
- * @return {String}                                             <p>
- *                                                              Returns the maximum possible score of the chosen group.<br>
- *                                                              
- */
-ClassificationUtils.getMaxScore = function(pClassificationGroupId)
-{
-    var sumMaxScore = 0;
-    
-    var config = entities.createConfigForLoadingRows()
-                    .entity("ClassificationType_entity")
-                    .ignorePermissions(true)
-                    .addParameter("ClassificationGroupId_param", pClassificationGroupId)
-                    .fields(["maxScore"]);
-    var scores = entities.getRows(config);
-                            
-    for (let i = 0; i < scores.length; i++)
-    {
-        var maxScore = scores[i]["maxScore"];
-        if (maxScore)
-            sumMaxScore = eMath.addInt(sumMaxScore, parseInt(maxScore));
-    }
-    
-    return sumMaxScore;
-}
-
 /**
  * Get all possible groupnames for a classificationtype.<br>
  * Either as [["group", "group"]] (for the possible items process).
@@ -248,19 +74,20 @@ ClassificationUtils.getAllGroups = function(pObjectType)
 ClassificationUtils.setClassificationValue = function(pObjectType, pObjectId, pClassificationTypeId, pClassificationScoreId)
 {   
     var newId = util.getNewUUID();
-    db.insertData("CLASSIFICATION", ["CLASSIFICATIONID", "OBJECT_TYPE", "OBJECT_ROWID", "CLASSIFICATIONTYPE_ID", "CLASSIFICATIONSCORE_ID"], null, [
+    db.insertData("CLASSIFICATION", ["CLASSIFICATIONID", "OBJECT_TYPE", "OBJECT_ROWID", "CLASSIFICATIONTYPE_ID", "VALUE"], null, [
         newId,
         pObjectType,
         pObjectId,
         pClassificationTypeId,
         pClassificationScoreId,
     ]);
+    newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", pObjectId).updateData(true, "CLASSIFICATIONSTORAGE", ["OUTDATED"], null, 1)
 }
 
 
 /**
  * Gets the classificationGradingTable for a classificationGroup as Array.<br>
- * ordered by the MaxGradeForScore descending              <br>
+ * ordered by the MinPercent       descending              <br>
  * 
  * @param {String} pClassificationGroupId                   <p>
  *                                                          The classificationgroup you want the grading for <br>
@@ -272,13 +99,21 @@ ClassificationUtils.getGradingTableByGroupId = function(pClassificationGroupId)
 {
 
     var classificationGroupId = pClassificationGroupId;
-
-    var gradingTable = newSelect("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID, CLASSIFICATIONGRADING.MAXGRADEFORSCORE, CLASSIFICATIONGRADING.GRADING")
+    var gradingObject = {};
+    var gradingTable = newSelect("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID, CLASSIFICATIONGRADING.MINPERCENT, CLASSIFICATIONGRADING.GRADING")
                                         .from("CLASSIFICATIONGRADING")
                                         .where("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID", classificationGroupId)
-                                        .orderBy("MAXGRADEFORSCORE desc")
+                                        .orderBy("CLASSIFICATIONGRADING.MINPERCENT asc")
                                         .table()
-    return gradingTable;
+                                        
+    for (let i = 0; i < gradingTable.length; i++) 
+    {
+        if(gradingObject[classificationGroupId] == undefined)
+            gradingObject[classificationGroupId] = [];
+        
+        gradingObject[classificationGroupId].push([gradingTable[i][1], gradingTable[i][2]]);
+    }
+    return gradingObject;
 }
 
 /**
@@ -318,100 +153,40 @@ ClassificationUtils.getClassificationType = function(pClassificationScoreId)
 }
 
 /**
- * Gets the Grading of a score for a group using an object that contains all the gradings.<br>
+ * Gets the Grading of a score for a group using an object that contains all the gradings and the greatest possible score.<br>
  * 
  * @param {String} pGradingObject                          <p>
  *                                                          The classification grading object 
  * @param {String} pGroupId                                <p>
  *                                                          The classification group id 
  * @param {String} pScore                                  <p>
- *                                                          The score 
-* @return {String}                                          <p>
-*                                                           The resulting classification grading.<br>
+ *                                                          The achieved score 
+ * @param {String} pMaxPossibleScore                       <p>
+ *                                                         The greatest possible score
+* @return {String}                                         <p>
+*                                                          The resulting classification grading.<br>
  */
-ClassificationUtils.getGradingFromObject = function(pGradingObject, pGroupId, pScore)
+ClassificationUtils.getGradingFromObject = function(pGradingObject, pGroupId, pScore, pMaxPossibleScore)
 {
     var gradingObject = pGradingObject;
+    if(gradingObject == null)
+    {
+        gradingObject = ClassificationUtils.getGradingTableByGroupId(pGroupId);
+    }
+    
     var groupId = pGroupId;
-    var score = pScore;
+    var scorePercent = pScore/(pMaxPossibleScore/100); //the score in percent in relation to the maxScore
     var grading = "-";
     for (var index in gradingObject[groupId])
     {
-        if(Number(score) <= Number(gradingObject[groupId][index][0]) && score != 0)
+        if(Number(scorePercent) >= Number(gradingObject[groupId][index][0]) && scorePercent != 0)
         {
             grading = gradingObject[groupId][index][1];
-            break;
         }
     }
     return grading;
 }
 
-/**
- * Inserts a empty classification data set into Classificationstorage, since every dataset of a classifiable module has to have an entry 
- * because the updateClassifications_serverProcess is only updating instead of inserting.<br>
- * 
- * @param {String|Array} pUids         <p/>The unique uid('s) of the inserted record, string for one element, array for several elements
- * @param {String} pObjectType         <p>contextId for the passed uids that shall be initialized
- */
-ClassificationUtils.insertEmptyClassification = function(pUids, pObjectType)
-{
-    var classificationCount = newSelect("count(distinct CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID)")
-                                            .from("CLASSIFICATIONTYPE")
-                                            .where("CLASSIFICATIONTYPE.OBJECT_TYPE", pObjectType)
-                                            .cell();
-    var classificationvalue = "-".repeat(classificationCount);  
-            
-    if(Utils.isString(pUids))
-        pUids = [pUids];
-    
-    var columns = ["CLASSIFICATIONSTORAGEID",
-            "CLASSIFICATIONVALUE",
-            "OBJECT_ROWID",
-            "OBJECT_TYPE"
-            ];
-    var types = db.getColumnTypes("CLASSIFICATIONSTORAGE", columns);//load once for better performance
-    var inserts = [];
-    var values;
-    for (var i = 0; i < pUids.length; i++) 
-    {
-        values = [util.getNewUUID(),
-                classificationvalue,
-                pUids[i],
-                pObjectType];
-        inserts.push(["CLASSIFICATIONSTORAGE", columns, types, values]);
-    }
-    db.inserts(inserts);
-}
-
-/**
- * Gets the maximum score for one group depending on the pClassificationGroupId param.
- * 
- * @param {String} pClassificationGroupId                       <p>
- *                                                              The classification groupname.<br>
- * @param {String} pClassificationType                          <p>
- *                                                              The classification type id.<br>
- * @return {String}                                             <p>
- *                                                              Returns the maximum possible score of the chosen group.<br>
- *                                                              
- */
-ClassificationUtils.getMaxScoreExcludeType = function(pClassificationGroupId, pClassificationType)
-{
-    var classificationGroupId = pClassificationGroupId;
-    var classificationType = pClassificationType;
-    var maxScore = 0;
-    scores = newSelect("max(CLASSIFICATIONSCORE.SCORE)")
-                            .from("CLASSIFICATIONTYPE")
-                            .join("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID")
-                            .where("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", classificationGroupId)
-                            .and("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationType, SqlBuilder.NOT_EQUAL())
-                            .groupBy("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID")
-                            .arrayColumn();
-                            
-    for (let i = 0; i < scores.length; i++)
-        maxScore = eMath.addInt(maxScore, parseInt(scores[i]));
-    
-    return maxScore;
-}
 
 /**
  * decodes a string that was encoded with AttributeSearchNameCoder.encode
@@ -451,6 +226,99 @@ ClassificationUtils.getTranslatedInfo = function ()
 return translate.text("Keep in Mind that changes to the Value with the greatest score directly affect the Classification Gradings of the Classification!");
 };
 
+/**
+ * Gets all the ClassificationTypeIds of the specified group
+ * 
+ * 
+ * @param {String} pClassificationGroupId                       <p/> The groupId of the group you want the classificationTypes of
+ * @param {String} pExcludeClassificationTypeID (optional)       <p/> Array of ClassificatioNTypeId you don't want to get back
+ * @param {Boolean} pOnlyUptoDate (optional)                    <p/> if true = condition get's added to only return the types where outdated != 1
+ *                                      
+ * @return {Object}                             <p/> an object that contains all keys and values that have been encoded with AttributeSearchNameCoder.encode
+ * @static 
+ */
+ClassificationUtils.getClassificationTypesOfGroup = function (pClassificationGroupId, pExcludeClassificationTypeID, pOnlyUptoDate)
+{
+    var classificationTypesOfOldGroup = newSelect("CLASSIFICATIONTYPEID")
+                                            .from("CLASSIFICATIONTYPE")
+                                            .where("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", pClassificationGroupId)
+    
+    if (pExcludeClassificationTypeID != null) 
+    {
+        classificationTypesOfOldGroup = classificationTypesOfOldGroup
+                                            .and("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", pExcludeClassificationTypeID, SqlBuilder.NOT_EQUAL())
+    }
+    if (pOnlyUptoDate) 
+    {
+        classificationTypesOfOldGroup = classificationTypesOfOldGroup
+                                            .and("CLASSIFICATIONTYPE.OUTDATED", 1, SqlBuilder.NOT_EQUAL())
+    }
+    
+    return classificationTypesOfOldGroup.arrayColumn();
+};
+
+/**
+ * This function get's used in the workflowExtention_serverProcess.
+ * It checks whether or not the change has any influence on stored classificationStorage datasets
+ * by checking if the entity itself is classificationRelevant or the entity has an relation with an classificationRelevant entity
+ * <p/>
+ * For further context behind why we use this outdated flag see also the documentation properties of "updateClassifications_serverProcess" and the classification_entities
+ * 
+ * 
+ * @param {Array} pTargetIds                    <p/> TargetIds
+ * @param {String} pEntityName                  <p/> Entity name
+ * @param {Object} pRowData                     <p/> row data
+ * @param {Object} pChangedRows                 <p/> changed rows
+ *                                      
+ * @return {void}
+ * @static 
+ */
+ClassificationUtils.setClassificationStorageDatasetsOutdated = function (pTargetIds, pEntityName, pRowData, pChangedRows)
+{
+    var relevantForClassification = false;
+    var classificationStorageIds = [];
+    var entityName = pEntityName;
+
+    if(entityName == "Organisation_entity" || entityName == "Salesproject_entity")
+    {
+        relevantForClassification = true;
+        classificationStorageIds.push(pTargetIds);
+    }
+    if(Dependency.getDependency(entityName).includes("Organisation_entity"))
+    {
+        relevantForClassification = true;
+        classificationStorageIds.push(Dependency.mapping()[entityName]["Organisation_entity"].getUIDsfn(pRowData, pChangedRows));
+    }
+    if(Dependency.getDependency(entityName).includes("Salesproject_entity"))
+    {
+        relevantForClassification = true;
+        classificationStorageIds.push(Dependency.mapping()[entityName]["Salesproject_entity"].getUIDsfn(pRowData, pChangedRows));
+    }
+
+//we have to remove empty arrays, since otherwise it would lead to an error when trying to use the condition for updating
+//empty arrays occur when e.g. inserting something that doesn't have any classificationStorageIds even though it is classificationrelevant
+    for (let i = 0; i < classificationStorageIds.length; i++)
+    {
+        if(classificationStorageIds[i][0] == undefined)
+        {
+            classificationStorageIds.splice(i, 1);
+            i--;
+        }
+    }
+
+    //set outdated flag for the classificationStorage datasets
+    if(relevantForClassification && classificationStorageIds.length > 0) // also check for the classificationStorageIds.length since it could be empty
+    {
+        for (i = 0; i < classificationStorageIds.length; i++) 
+        {
+            var cond = newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", classificationStorageIds[i], SqlBuilder.IN());
+            cond.updateData(true, "CLASSIFICATIONSTORAGE", ["OUTDATED"], null, [1]);
+        }
+    }
+};
+
+
+
 
 /*this is right now (2020-08-15) the only way to get something like a constant with 
  - a prober name
@@ -465,4 +333,4 @@ $ClassificationRecordCategories.CLASSIFICATION_GROUP_EXISTS =            functio
 $ClassificationRecordCategories.CLASSIFICATION_GROUP_DOESNT_EXIST =      function(){return "ClassificationGroupDoesntExist"};
 
 function $ClassificationPlaceholder(){}
-$ClassificationPlaceholder.TOPSECRETPLACEHOLDER =                        function(){return "T0PS3CR3TPL4CEH0LD3R"};
+$ClassificationPlaceholder.TOPSECRETPLACEHOLDER =                        function(){return "T0PS3CR3TPL4CEH0LD3R"};
\ No newline at end of file
diff --git a/process/Communication_lib/Communication_lib.aod b/process/Communication_lib/Communication_lib.aod
index a69299aa2aa56c2a3a2b1a4321e8779ff438187b..1bc1f16ef819bc6d5e27a7223595440cbc1e0d54 100644
--- a/process/Communication_lib/Communication_lib.aod
+++ b/process/Communication_lib/Communication_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Communication_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Communication_lib/process.js</process>
diff --git a/process/Contact_lib/Contact_lib.aod b/process/Contact_lib/Contact_lib.aod
index ea8e5020017153333df78eddfd6bfd9c415e7208..3f85ffbdb21af8da880c9506eb12cdb42083f393 100644
--- a/process/Contact_lib/Contact_lib.aod
+++ b/process/Contact_lib/Contact_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Contact_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Contact_lib/process.js</process>
diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js
index 4f73f699c57aad857c11d8e5aaa30420dc5dab3c..4a59839543915bbe0c16edfb2c56985efe935f15 100644
--- a/process/Contact_lib/process.js
+++ b/process/Contact_lib/process.js
@@ -528,10 +528,8 @@ ContactUtils.hasCommRestriction = function(pContactId, pMedium, pStartDate)
  */
 ContactUtils.getActiveCommRestrictionsSubselect = function()
 {
-    var mediumList = KeywordUtils.getEntryNamesAndIdsByContainer($KeywordRegistry.communicationMediumCampaign());
-    var sqlMasking = new SqlMaskingUtils();
-
-    var parts = [];
+    var mediumList = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.communicationMediumCampaign(), "COMMRESTRICTION.MEDIUM");
+    var mask = new SqlMaskingUtils()
 
     var orgContactSubselect = newSelect("orgContact.CONTACTID")
                                     .from("CONTACT anyContact")
@@ -539,20 +537,49 @@ ContactUtils.getActiveCommRestrictionsSubselect = function()
                                                                     .and("orgContact.PERSON_ID IS NULL"))
                                     .where("anyContact.CONTACTID = CONTACT.CONTACTID")
 
-    mediumList.forEach(function(pMedium) 
+    var group = mask.getGroupConcat("DISTINCT "+mediumList, "', '");
+    var subselect = "''";
+    if(group)
     {
-        var subquery = newSelect("COMMRESTRICTION.MEDIUM, COMMRESTRICTIONID")
-                            .from("COMMRESTRICTION")
-                            .where("COMMRESTRICTION.MEDIUM", pMedium[0])
-                            .and("COMMRESTRICTION.STARTDATE", vars.get("$sys.date"), SqlBuilder.LESS_OR_EQUAL())
-                            .and(newWhere()
-                                    .or("COMMRESTRICTION.CONTACT_ID = CONTACT.CONTACTID")
-                                    .or("COMMRESTRICTION.CONTACT_ID", orgContactSubselect));
-        //!SqlBuilder
-        parts.push("case when exists(" + subquery.toString() + ") then '" + pMedium[1] + "' else '' end");
-    })
-
-    return sqlMasking.concatWithSeparator(parts, " ", false);
+        var res = newSelect(group).from("COMMRESTRICTION")
+                    .where("COMMRESTRICTION.CONTACT_ID = CONTACT.CONTACTID")
+
+        var subres = newSelect(group).from("COMMRESTRICTION")
+                    .where("COMMRESTRICTION.CONTACT_ID in ( "+orgContactSubselect.toString()+")")
+                    
+        subselect = mask.concatWithSeparator(["("+res.toString()+")", "("+subres.toString()+")"], ", ", false);
+    }
+    return subselect;
+}
+
+/**
+ * returns a sql subselect which counts all Commrestrictions from a Person and his Organisation.
+ * The select needs the CONTACT.CONTACTID column.
+ * 
+ * @return {String} the resulting subselect
+ */
+ContactUtils.getCommRestrictionCount = function(pMedium, pStartDate)
+{
+    if (!pStartDate && pStartDate !== 0)
+        pStartDate = datetime.date();
+    var firstLevel = new SqlBuilder()
+        .select("count(*)")
+        .from("COMMRESTRICTION")
+        .whereIfSet("COMMRESTRICTION.MEDIUM", pMedium)
+        .and("COMMRESTRICTION.STARTDATE", pStartDate, SqlBuilder.LESS_OR_EQUAL())
+        .and("COMMRESTRICTION.CONTACT_ID = CONTACT.CONTACTID");
+        
+    var secondLevel = new SqlBuilder()
+        .select("count(*)")
+        .from("COMMRESTRICTION")
+        .whereIfSet("COMMRESTRICTION.MEDIUM", pMedium)
+        .and("COMMRESTRICTION.STARTDATE", pStartDate, SqlBuilder.LESS_OR_EQUAL())
+        .and("COMMRESTRICTION.CONTACT_ID", newSelect("c1.CONTACTID").from("CONTACT", "c1")
+                                          .join("CONTACT", "c2.ORGANISATION_ID = c1.ORGANISATION_ID and c1.PERSON_ID is null", "c2")
+                                          .where("c2.CONTACTID = CONTACT.CONTACTID")
+        , SqlBuilder.IN());
+            
+    return firstLevel.toString() +") + ("+secondLevel.toString(); 
 }
 
 /**
diff --git a/process/Context_lib/Context_lib.aod b/process/Context_lib/Context_lib.aod
index 88f0211eacad5423f96a78a8ceaa903a1bf72cdb..85bdd8cc4de7cbecc8feed39e346e5769e89a853 100644
--- a/process/Context_lib/Context_lib.aod
+++ b/process/Context_lib/Context_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Context_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Context_lib/process.js</process>
diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js
index 5713843c8446f0cf46217b93193046df4faebc13..79854f907c1208b8eb03d83e6565a3fe8868e492 100644
--- a/process/Context_lib/process.js
+++ b/process/Context_lib/process.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("Util_lib");
 import("system.entities");
 import("system.tools");
@@ -29,7 +30,7 @@ function ContextUtils() {}
  */
 ContextUtils.getCurrentContextId = function()
 {
-   return   vars.getString("$sys.currentcontextname");
+    return vars.getString("$sys.currentcontextname");
 }
 
 /**
@@ -97,14 +98,13 @@ ContextUtils.getContextId = function (pEntity)
     if (!pEntity)
         return null;
     
-    let contexte = ContextUtils.getContexts(false, [], false);
+    let contexts = project.getDataModels(project.DATAMODEL_KIND_CONTEXT);
     
-    for (let i = 0; i < contexte.length; i++) {
-        if (ContextUtils.getEntity(contexte[i][0]) == pEntity)
-            return contexte[i][0];
+    for (let i = 0; i < contexts.length; i++) {
+        if (ContextUtils.getEntity(contexts[i][0]) == pEntity)
+            return contexts[i][0];
     }
     return null;
-    
 }
 
 /**
@@ -166,7 +166,7 @@ ContextUtils.getContextConsumer = function(pContextId)
         case ContextUtils.getContextName("PrivatePerson"):
             return "PrivatePersons";
         case ContextUtils.getContextName("Leadimport"):
-            return "Leadimport";
+            return "Leadimports";
         case ContextUtils.getContextName("Task"):
             return "Tasks";
         case ContextUtils.getContextName("SupportTicket"):
@@ -192,9 +192,9 @@ ContextUtils.loadContentTitle = function(pEntity, pUid, pProvider)
         return "";
 
     var conf = entities.createConfigForLoadingRows()
-        .entity(pEntity)
-        .uid(pUid)
-        .fields(["#CONTENTTITLE"]);
+    .entity(pEntity)
+    .uid(pUid)
+    .fields(["#CONTENTTITLE"]);
 
     if (pProvider)
         conf.provider(pProvider);
@@ -203,54 +203,134 @@ ContextUtils.loadContentTitle = function(pEntity, pUid, pProvider)
     return rows.length === 1 ? rows[0]["#CONTENTTITLE"] : "";
 }
 
+
+/**
+ * loads the contentdescription by using entities.getRow
+ * @param {String} pEntity The entity name you want to load the title for
+ * @param {String} pUid the uid for which to load the title
+ * @param {String} [pProvider] providername when instead of the default provider another provider shall be used
+ * 
+ * @return the #CONTENTDESCRIPTION or ""
+ */
+ContextUtils.loadContentDescription = function(pEntity, pUid, pProvider)
+{
+    if (!pUid)
+        return "";
+
+    var conf = entities.createConfigForLoadingRows()
+    .entity(pEntity)
+    .uid(pUid)
+    .fields(["#CONTENTDESCRIPTION"]);
+
+    if (pProvider)
+        conf.provider(pProvider);
+    
+    var rows = entities.getRows(conf);
+    return rows.length === 1 ? rows[0]["#CONTENTDESCRIPTION"] : "";
+}
+
+/**
+ * loads specified Fields for one Row by using entities.getRow
+ * @param {String} pEntity The entity name you want to load the title for
+ * @param {String[]} [pUid] the uids for which to load the content
+ * @param {String[]} [pFields] fields you want as result
+ * @param {String[]} [pExcludeIDs] uids you want to exclude from the list
+ * @param {String} pProvider providername when instead of the default provider another provider shall be used
+ * 
+ * @return the Values of the Fields
+ */
+ContextUtils.loadContent = function(pEntity, pUid, pFields, pExcludeIDs, pProvider)
+{
+    if (!pEntity)
+        return [];
+
+    var conf = entities.createConfigForLoadingRows()
+    .entity(pEntity)
+    .uids(pUid)
+    .fields(pFields);
+
+    if (pProvider)
+        conf.provider(pProvider);
+
+    if (pExcludeIDs)
+    {
+        var childsArray = [{
+            "type":"row",
+            "name":"#UID",
+            "operator":"NOT_IN",
+            "value": JSON.stringify(pExcludeIDs),
+            "key": JSON.stringify(pExcludeIDs),
+            "contenttype":"TEXT"
+        }];
+
+
+        var pFilterParent = {
+            "type":"group",
+            "operator":"OR",
+            "childs": childsArray
+        };
+        
+        conf.filter(JSON.stringify(pFilterParent));
+    }
+    
+    var rows = entities.getRows(conf);
+    return rows && rows.length > 0 ? rows : [];
+}
+
+
 /**
  *
- * @param {Boolean} [pFilter=false] filter only for contexts which have a mapping in ContextUtils.getSelectMap 
- * @param {String[]} [pBlacklist] contextIds that shall not be included (so this is a additional filter to the pFilter param)
+ * @param {String[]} [pBlacklist] contextIds that shall not be included
  * @param {Boolean} [pInvertBlacklist=false] decides whether the items in pBlacklist are excluded (false) or
  *                      everything that is NOT in pBlacklist is excluded (true) 
  *                      (-> if it is a whitelist or blacklist)
  *
  * @return {String[][]} the contexts [[contextId, contextName, contextTitle], [... ], ...]
  */
-ContextUtils.getContexts = function(pFilter, pBlacklist, pInvertBlacklist)
+ContextUtils.getContexts = function(pBlacklist, pInvertBlacklist)
 {
-    if (pFilter == undefined)
-        pFilter = false;
-    if (pInvertBlacklist == undefined)
-        pInvertBlacklist = false;
-
-    var contexts = project.getDataModels(project.DATAMODEL_KIND_CONTEXT);
-
-    if (pFilter)
+    var whitelist;
+    if (pInvertBlacklist && pBlacklist)
+        whitelist = new Set(pBlacklist);
+    else
     {
-        contexts = contexts.filter(function(pContext) {
-            if (pBlacklist && pBlacklist.indexOf(pContext[0]) > -1 != pInvertBlacklist)
-                return false;
-            // filter only contexts which have defined mappings in Context_lib
-            return ContextUtils.getSelectMap ()[pContext[0]] != undefined;
-        });
+        whitelist = new Set()
+            .add("Organisation")
+            .add("Person")
+            .add("PrivatePerson")
+            .add("Activity")
+            .add("Salesproject")
+            .add("Contract")
+            .add("Offer")
+            .add("Order")
+            .add("Product")
+            .add("Task")
+            .add("Campaign")
+            .add("CampaignStep")
+            .add("SupportTicket")
+            .add("Leadimport");
+            
+        if (pBlacklist)
+            pBlacklist.forEach(whitelist["delete"], whitelist);
     }
-    else if (pBlacklist)
+    
+    var contexts = project.getDataModels(project.DATAMODEL_KIND_CONTEXT);
+    contexts = contexts.filter(function(context) 
     {
-        contexts = contexts.filter(function(pContext) {
-            if (pBlacklist && pBlacklist.indexOf(pContext[0]) > -1 != pInvertBlacklist)
-                return false;
-            return true;
-        });
-    }
+        return whitelist.has(context[0]);
+    });
 
     return contexts.map(ContextUtils._contextDataMapping).sort(function(pContext1, pContext2)
-        {
-            // sort after ContextTitle
-            if (pContext1[2] > pContext2[2])
-                return 1;
+    {
+        // sort after ContextTitle
+        if (pContext1[2] > pContext2[2])
+            return 1;
 
-            if (pContext1[2] < pContext2[2])
-                return -1;
+        if (pContext1[2] < pContext2[2])
+            return -1;
 
-            return 0;
-        });
+        return 0;
+    });
 }
 
 /**
@@ -280,489 +360,136 @@ ContextUtils._contextDataMapping = function(pContext)
     return [pContext[0], contextName, (pContext[1] ? pContext[1] : contextName)];
 }
 
+
 /**
- * represents a single context selection for one context
- * this is usefull for objectlinks and 360° definition
- * most properties are read only and can only be written with a setter
+ * gets the Title for a specific Context
  * 
- * @param {String} [pTableName] presets the matching property of the object
- * @param {String} [pIdField] presets the matching property of the object
- * @param {String} [pTitleExpression] presets the matching property of the object
+ * @param {String} pContextId the name of the context
+ * @param {String} pRowId Uid of certain Context
  * 
- * TODO: mostly temporary function until you can get fields from another Entity
- *
- * @class
+ * @return {String} The #CONTENTTITLE
  */
-function ContextSelector(pTableName, pIdField, pTitleExpression)
+ContextUtils.getTitleByContext = function(pContextId, pRowId)
 {
-    //the >>this.propertyX = null;<< is for autocomplete in the designer
-    
-    /**
-     * title-definition; db-column or another sql-expression (like concating fields) as long as it returns one field
-     * read-only property; set it with a matching setter
-     * @property titleExpression
-     */
-    this.titleExpression = null; ProtoPropertyUtils.makeSemiReadOnly(this, "titleExpression");
-    this.setTitleExpression(pTitleExpression);
-
-    /**
-     * name of the database-table
-     * read-only property; set it with a matching setter
-     * @property tableName
-     */
-    this.tableName = null; ProtoPropertyUtils.makeSemiReadOnly(this, "tableName");
-    this.setTableName(pTableName);
-    
-    /**
-     * db-field for the ID of one record (UID of matching context)
-     * read-only property; set it with a matching setter
-     * @property idField
-     */
-    this.idField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "idField");
-    this.setIdField(pIdField);
-    
-    /**
-     * expression for additional joins to be made (addotopmaö pt table-name)
-     * read-only property; set it with a matching setter
-     * @property joinExpression
-     */
-    this.joinExpression = null; ProtoPropertyUtils.makeSemiReadOnly(this, "joinExpression");
-    /**
-     * db-field for the ID of the relation to a CONTACT-record
-     * read-only property; set it with a matching setter
-     * @property contactIdField
-     */
-    this.contactIdField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "contactIdField");
-    /**
-     * db-field that represents the date of creation
-     * read-only property; set it with a matching setter
-     * @property creationDateField
-     */
-    this.creationDateField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "creationDateField");
-    /**
-     * db-field where the STATE-information (active/inactive) is stored (see the activeStates-property)
-     * read-only property; set it with a matching setter
-     * @property stateField
-     */
-    this.stateField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "stateField");
-    /**
-     * array that contains IDs of states that represent an "active"-state
-     * read-only property; set it with a matching setter
-     * @property activeStates
-     */
-    this.activeStates = null; ProtoPropertyUtils.makeSemiReadOnly(this, "activeStates");
-    this.condition = null; ProtoPropertyUtils.makeSemiReadOnly(this, "condition");
-    /**
-     * db-field that will be used as groubBy
-     * read-only property; set it with a matching setter
-     * @property groupBy
-     */
-    this.groupBy = null; ProtoPropertyUtils.makeSemiReadOnly(this, "groupBy");
-    /**
-     * an object which contains the subcontexts and the prepared select to get the contactIds of them.
-     *                                                                                
-     * {                       V-- SqlBuilder with all conditions needed                                 V-IdCollumn name (with Tablename!)    V-the contexts to show for this subcontext
-     *   "Person": "Person": [newSelect("CONTACTID").from("CONTACT").where("PERSON_ID is not null"), "CONTACT.ORGANISATION_ID", ["Offer", "Order", "Contract", "SupportTicket"]],
-     * 
-     *   "Offer" ... // you can add as many subcontexts as you wish
-     * }
-     * read-only property; set it with a matching setter
-     * @property subContexts
-     */
-    this.subContexts = null; ProtoPropertyUtils.makeSemiReadOnly(this, "subContexts");
+    return ContextUtils.loadContentTitle(ContextUtils.getEntity(pContextId), pRowId);
 }
+
+
 /**
- * creates a new instance of a ContextSelector and returns it 
- * if given it also sets some properties (property names with matching function-parameters)
- * @static
- */
-ContextSelector.create = function(pTableName, pIdField, pTitleExpression)
-{
-    return new ContextSelector(pTableName, pIdField, pTitleExpression);
-};
-/**
- * @param {String} pField the fieldname that shall be returned as full string
- * @return {String} full field containing tablename and the column; if the column itself is already a full qualified field that field is returned
- */
-ContextSelector.prototype.getFullField = function(pField)
-{
-    //always keep undefined (and null) just undefined since it's never a fullQualifier and tablename.undefined is useless
-    if (pField == undefined)
-        return undefined;
-    if (SqlUtils.isFullFieldQualifier(pField))
-        return pField;
-    else
-        return this.tableName + "." + pField;
-};
-/**
- * @return {String} full id field containing tablename and column; if the column itself is already a full qualified field that field is returned
- */
-ContextSelector.prototype.getFullIdField = function()
-{
-    return this.getFullField(this.idField);
-};
-/**
- * @return {String} full from-expression with tablename and join-part
- */
-ContextSelector.prototype.getFullFromClause = function()
-{
-    if (this.joinExpression)
-        return " " + this.tableName + " " + this.joinExpression + " ";
-    else
-        return this.tableName;
-        
-};
-/**
- * @return {Object} in the following format: 
- *                  {
- *                      "{contactid1}": [SqlBuilder, ContextArray],
- *                      ...
- *                      ...
- *                  }
+ * gets Data from a specific Context with entities. Functions
+ * 
+ * @param {String} pContextId the title of the context
+ * @param {String[]} [pContextConfig] Config defined in the Provider Parameter
+ * @param {Object} [pFilterObj] prepeared Filter Object
+ * @param {String[]} [pContactId] Array of all the Contactids you want to search through
+ * 
+ * @return {String[][]} An Array of Fields (["#UID", "#TITLE", "#MAPPING", "#CONTENTDESCRIPTION", "#CONTENTTITLE", CONNECTIONFIELD, "DATE_NEW"]) for a certain Context
  */
-ContextSelector.prototype.getSubContexts = function(pParentRowId)
-{
-    if (this.subContexts)
+ContextUtils.getContextDataViaReadEntity = function(pContextId, pContextConfig, pFilterObj, pContactId)
+{     
+
+    var connectionField = "CONTACT_ID";
+    if(pContextConfig.connectionField)
+        connectionField = pContextConfig.connectionField;
+
+    if(pContextConfig.childField && pContextConfig.parentField && pContextConfig.contactIdField && pContextConfig.subContext)
     {
-        var sqls = {};
-        for (let contextId in this.subContexts)
-        {
-            // Copy the builder to prevent modifying the builder in this.subContexts
-            var select = this.subContexts[contextId][0].copy();
-            
-            // add id-condition
-            if (select.whereWasCalled())
-            {
-                select.and(this.subContexts[contextId][1], pParentRowId);
-            }
-            else
-            {
-                select.where(this.subContexts[contextId][1], pParentRowId);
-            }
-            
-            sqls[contextId] = [select, this.subContexts[contextId][2]];
-        }
+        var prefilter = Utils.buildFilterObj({}, pContextConfig.contactIdField, "IN", "TEXT", JSON.stringify(pContactId), JSON.stringify(pContactId), "OR");
+        var resObj = [];
+
+        var subConf = entities.createConfigForLoadingRows()
+        .entity(ContextUtils.getEntity(pContextConfig.subContext))
+        .fields([pContextConfig.childField])
+        .filter(JSON.stringify(prefilter.filter))
         
-        return sqls;
+        var subRes = entities.getRows(subConf);
+        for(var id in subRes)
+            resObj.push(subRes[id][pContextConfig.childField]);
+           
+        pFilterObj = Utils.buildFilterObj(pFilterObj, pContextConfig.parentField, "IN", "TEXT", JSON.stringify(resObj), JSON.stringify(resObj), "AND");
     }
     else
-        return {};
-        
-};
-//setters which to nothing special; no need to document them
-ContextSelector.prototype.setTitleExpression = function(pValue)
-{
-    this._titleExpression = pValue;
-    return this;
-};
-ContextSelector.prototype.setTableName = function(pValue)
-{
-    this._tableName = pValue;
-    return this;
-};
-ContextSelector.prototype.setIdField = function(pValue)
-{
-    this._idField = pValue;
-    return this;
-};
-ContextSelector.prototype.setJoinExpression = function(pValue)
-{
-    this._joinExpression = pValue;
-    return this;
-};
-ContextSelector.prototype.setContactIdField = function(pValue)
-{
-    this._contactIdField = pValue;
-    return this;
-};
-ContextSelector.prototype.setCreationDateField = function(pValue)
-{
-    this._creationDateField = pValue;
-    return this;
-};
-ContextSelector.prototype.setStateField = function(pValue)
-{
-    this._stateField = pValue;
-    return this;
-};
-ContextSelector.prototype.setActiveStates = function(pValue)
-{
-    this._activeStates = pValue;
-    return this;
-};
-/**
- * sets the condition property of a ContextSelector-object
- * @param {SqlBuilder} pSqlBuilder condition as SqlBuilder-object
- */
-ContextSelector.prototype.setCondition = function(pSqlBuilder)
-{
-    this._condition = pSqlBuilder;
-    return this;
-};
-ContextSelector.prototype.setSubContexts = function(pContexts)
-{
-    this._subContexts = pContexts;
-    return this;
-};
-ContextSelector.prototype.setGroupBy = function(pValue)
-{
-    this._groupBy = pValue;
-    return this;
-};
-
-/**
- * TODO: !!!temporary function until you can get fields from another Entity!!!
- */
-ContextUtils.getSelectMap  = function()
-{
-    var maskingUtils = new SqlMaskingUtils();
-    var isOracle = maskingUtils.dbType == db.DBTYPE_ORACLE10_CLUSTER
-        || maskingUtils.dbType == db.DBTYPE_ORACLE10_OCI
-        || maskingUtils.dbType == db.DBTYPE_ORACLE10_THIN;
+    {
+        pFilterObj = Utils.buildFilterObj(pFilterObj, connectionField, "IN", "TEXT", JSON.stringify(pContactId), JSON.stringify(pContactId), "AND"); 
+    }
+    
+    var fields = ["#UID", "#TITLE", "#MAPPING", "#CONTENTDESCRIPTION", "#CONTENTTITLE", connectionField, "DATE_NEW", "ACTIVE"];
+    if(pContextConfig.setGroupBy)
+        fields.push(pContextConfig.setGroupBy);
     
-    return {
-            "Organisation": ContextSelector.create("ORGANISATION", "CONTACT.CONTACTID", "ORGANISATION.NAME")
-                                       .setJoinExpression("join CONTACT on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null")
-                                       .setCondition(newWhere("ORGANISATION.ORGANISATIONID", "0", SqlBuilder.NOT_EQUAL()))
-                                       .setSubContexts({
-                                           "Person": [newSelect("CONTACTID").from("CONTACT").where("PERSON_ID is not null"), "CONTACT.ORGANISATION_ID", ["Offer", "Order", "Contract", "SupportTicket"]]
-                                       })
-            ,"Person": ContextSelector.create("CONTACT", "CONTACTID")
-                                      .setTitleExpression(maskingUtils.concatWithSeparator([
-                                                new ContactTitleRenderer(Contact.createWithColumnPreset()).asSql()
-                                                ,"' - '"//looks pretty bad; TODO: workaround till Lookups can be loaded over a link-entity; then use displayProc
-                                                ,"defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO"
-                                                ,"' - '"
-                                                ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"
-                                               ]," "))
-                                      .setJoinExpression("join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID "
-                                                       + " join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID "
-                                                       + " left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID")
-            ,"PrivatePerson": ContextSelector.create("PERSON", "PERSONID")
-                                      .setTitleExpression(maskingUtils.concatWithSeparator([
-                                                new ContactTitleRenderer(Contact.createWithColumnPresetForPrivatePerson()).asSql()
-                                                ,"' - '"//looks pretty bad; TODO: workaround till Lookups can be loaded over a link-entity; then use displayProc
-                                                ,"defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO"
-                                                ,"' - '"
-                                                ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"
-                                               ]," "))
-                                      .setJoinExpression("left join CONTACT on PERSON.PERSONID = CONTACT.PERSON_ID and CONTACT.ORGANISATION_ID = '0' left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID")
-                                      .setContactIdField("CONTACT.CONTACTID")
-            ,"Activity": ContextSelector.create("ACTIVITY", "ACTIVITYID", "SUBJECT")
-            ,"Salesproject": ContextSelector.create("SALESPROJECT", "SALESPROJECTID")
-                                            .setTitleExpression(maskingUtils.concatenate([
-                                                                "'" + translate.text("Salesproject") + "'",
-                                                                "' '",
-                                                                maskingUtils.cast("PROJECTCODE", SQLTYPES.VARCHAR, 10),
-                                                                "' | '",
-                                                                "PROJECTTITLE"
-                                                                ]))
-                                            .setContactIdField("CONTACT_ID")
-                                            .setCreationDateField("STARTDATE")
-                                            .setStateField("STATUS")
-                                            .setActiveStates([$KeywordRegistry.salesprojectState$open(), $KeywordRegistry.salesprojectState$postponed()])
-            ,"Contract": ContextSelector.create("CONTRACT", "CONTRACTID")
-                                        .setTitleExpression(maskingUtils.cast(maskingUtils.concatWithSeparator([
-                                                                KeywordUtils.getResolvedTitleSqlPart("ContractType", "CONTRACTTYPE"),
-                                                                maskingUtils.cast("CONTRACTCODE", SQLTYPES.VARCHAR, 10)
-                                                                ], " "), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50))
-                                        .setContactIdField("CONTACT_ID")
-                                        .setCreationDateField("CONTRACTSTART")
-                                        .setStateField("CONTRACTSTATUS")
-                                        .setActiveStates([$KeywordRegistry.contractState$validLimited(), $KeywordRegistry.contractState$validUnlimited(), $KeywordRegistry.contractState$notSigned()])
-            ,"Offer": ContextSelector.create("OFFER", "OFFERID")
-                                     .setTitleExpression(maskingUtils.cast(maskingUtils.concatenate([
-                                                "'" + translate.text("Offer") + "'",
-                                                "' '",
-                                                maskingUtils.cast("OFFERCODE", SQLTYPES.VARCHAR, 10),
-                                                "'-'",
-                                                maskingUtils.cast("VERSNR", SQLTYPES.VARCHAR, 10)
-                                                ]), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50))
-                                     .setContactIdField("CONTACT_ID")
-                                     .setCreationDateField("OFFERDATE")
-                                     .setStateField("STATUS")
-                                     .setActiveStates([$KeywordRegistry.offerStatus$open(), $KeywordRegistry.offerStatus$checked(), $KeywordRegistry.offerStatus$sent()])
-            ,"Order": ContextSelector.create("SALESORDER", "SALESORDERID")
-                                     .setTitleExpression(maskingUtils.cast(maskingUtils.concatWithSeparator([
-                                                        KeywordUtils.getResolvedTitleSqlPart("OrderType", "ORDERTYPE"),
-                                                        maskingUtils.cast("SALESORDERCODE", SQLTYPES.VARCHAR, 10)
-                                                        ], " "), isOracle ? SQLTYPES.NVARCHAR : SQLTYPES.VARCHAR, 50))
-                                     .setContactIdField("CONTACT_ID")
-                                     .setCreationDateField("SALESORDERDATE")
-                                     .setStateField("ORDERSTATUS")
-                                     .setActiveStates([0, 1])
-            ,"Product": ContextSelector.create("PRODUCT", "PRODUCTID")
-                                       .setTitleExpression(maskingUtils.concatenate([
-                                            "PRODUCTCODE",
-                                            "' | '",
-                                            "PRODUCTNAME"
-                                            ]))
-            ,"Task": ContextSelector.create("TASK", "TASKID", "SUBJECT")
-            ,"Campaign": ContextSelector.create("CAMPAIGN", "CAMPAIGNID")
-                         .setTitleExpression(maskingUtils.concatWithSeparator(["CAMPAIGN.NAME", "CAMPAIGNSTEP.NAME"], " - ", false))
-                         .setContactIdField("CAMPAIGNPARTICIPANT.CONTACT_ID")
-                         .setJoinExpression("left join CAMPAIGNPARTICIPANT on CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID " +
-                                            "left join CAMPAIGNSTEP on CAMPAIGNSTEP.CAMPAIGNSTEPID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID")
-                        .setCreationDateField("CAMPAIGNSTEP.DATE_START")
-                        .setStateField("CAMPAIGN.STATUS")
-                        .setActiveStates([$KeywordRegistry.campaignState$planning(), $KeywordRegistry.campaignState$approved()])
-            ,"CampaignStep" : ContextSelector.create("CAMPAIGNSTEP", "CAMPAIGNSTEPID", "NAME")
-            ,"SupportTicket": ContextSelector.create("TICKET", "TICKETID", "TASK.SUBJECT")
-                        .setJoinExpression("left join TASK on TASK.TASKID = TICKET.TASK_ID left join TASKLINK on TASKLINK.TASK_ID = TASK.TASKID")
-                        .setCondition(newWhere("TICKET.TICKETTYPE", $KeywordRegistry.ticketType$supportTicket()))
-                        .setContactIdField("TASKLINK.OBJECT_ROWID")
-                        .setStateField("TASK.STATUS")
-                        .setActiveStates([
-                            $KeywordRegistry.taskStatus$new(),
-                            $KeywordRegistry.taskStatus$unassigned(),
-                            $KeywordRegistry.taskStatus$assigned(),
-                            $KeywordRegistry.taskStatus$inProgress(),
-                            $KeywordRegistry.taskStatus$waiting(),
-                            $KeywordRegistry.taskStatus$customerChecks(),
-                        ])
-                        .setCreationDateField("TASK.START_DATE")
-            ,"BulkMail" : ContextSelector.create("BULKMAIL", "BULKMAILID", "NAME")
-            ,"SerialLetter" : ContextSelector.create("SERIALLETTER", "SERIALLETTERID", "TITLE")
-            ,"Leadimport": ContextSelector.create("LEADIMPORT", "LEADIMPORTID")
-                        .setTitleExpression("LEADIMPORT.NAME")
+    
+    var conf = entities.createConfigForLoadingRows()
+    .entity(ContextUtils.getEntity(pContextId))
+    .fields(fields)
+    
+    if(pFilterObj)
+        conf.filter(JSON.stringify(pFilterObj.filter))
+    
+    var res = [];
+    try//if Permissions prevent the user to read data from this context, entites.getRows throws an error. But we still wanna see the other Contexts
+    {
+        res = entities.getRows(conf);
     }
-}
-
-/**
- * TODO: !!!temporary function until you can get fields from another Entity!!!
- */
-ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField)
-{
-    var select = SqlBuilder.caseStatement()
-
-    var selectMap = ContextUtils.getSelectMap();
-    for (let contextId in selectMap)
+    catch(ex)
     {
-        let titleSelect = newSelect(selectMap[contextId].titleExpression)
-            .from(selectMap[contextId].getFullFromClause())
-            .where(selectMap[contextId].getFullIdField() + " = " + pRowIdDbField);
-            
-        select.when(pContextIdDbField, contextId).then(titleSelect);
+        logging.log(ex)
     }
-
-    return select.toString();
-}
-
-/**
- * TODO: !!!temporary function until you can get fields from another Entity!!!
- */
-ContextUtils.getNameSql = function(pContextId, pRowId, pRowIdField)
-{
-    var selectMap = ContextUtils.getSelectMap ()
-    if (selectMap[pContextId] != undefined)
+    if(res.length > 0)
     {
-        var sql = newSelect(selectMap[pContextId].titleExpression)
-                    .from(selectMap[pContextId].getFullFromClause());
-        if (pRowIdField)
-            sql.where(selectMap[pContextId].getFullIdField() + " = " + pRowIdField);
-        else
-            sql.whereIfSet(selectMap[pContextId].getFullIdField(), pRowId);
-        return sql.build(SqlBuilder.NORESULT_CONDITION());
+        if(pContextConfig.subContext)
+        {
+            if(res[0]["#UID"] == undefined || res[0]["#TITLE"] == undefined || res[0]["#MAPPING"] == undefined || res[0]["#CONTENTDESCRIPTION"] == undefined 
+                || res[0]["#CONTENTTITLE"] == undefined || res[0]["DATE_NEW"] == undefined || res[0]["ACTIVE"] == undefined)
+                throw new Error(translate.text("Some prereserved EntityFields which are necessary fot 360° are not available. Context: "+pContextId
+                    +" Data: "+JSON.stringify(res)));
+        }
+        else if(res[0][connectionField] == undefined)
+            throw new Error(translate.text(connectionField+" is not defined! Context: "+pContextId));
     }
-    else
-        return "select 1 from person where 1=2";
+    return res;
 }
 
 /**
- * TODO: !!!temporary function until you can get fields from another Entity!!!
+ * gets the ContactId by using ContextUtils.loadContent()
+ * @param {String} pContextId The Context name
+ * @param {String} pRowId the uid for which to get the Contactid
+ * 
+ * @return the Contactid of certain Context and Uid
  */
 ContextUtils.getContactId = function(pContextId, pRowId)
 {
-    var selectMap = ContextUtils.getSelectMap()
-    if (selectMap[pContextId] != undefined && selectMap[pContextId].contactIdField)
-    {
-        return newSelect(selectMap[pContextId].contactIdField)
-                    .from(selectMap[pContextId].tableName)
-                    .where(selectMap[pContextId].getFullIdField(), pRowId)
-                    .cell();
-    }
-    else
-        return "";
+    var res = ContextUtils.loadContent(ContextUtils.getEntity(pContextId), [pRowId], ["CONTACT_ID"])[0]["CONTACT_ID"];
+    return res;
 }
 
+
 /**
- * TODO: !!!temporary function until you can get fields from another Entity!!!
- * nur 360
+ * gets the Count of Connections by Contactid
+ * @param {String} pContextId The Context name
+ * @param {String} pContactId The Contactid
  * 
+ * @return count of datasets for that specific Context
  */
-ContextUtils.getContextDataSql = function(pContextId, pContactId, pWithDate, pActive, pWithState, pWithGroupBy, pUidsForFiltering, pExcludeIds)
+ContextUtils.getCountByContactId = function(pContextId, pContactId)
 {
-    var selectMap = ContextUtils.getSelectMap();
-    var ownContextSelector = selectMap[pContextId];
-    var columns = [ownContextSelector.getFullIdField(), ownContextSelector.titleExpression];
-    
-    if (pWithDate === true)
-        columns.push(ownContextSelector.getFullField(ownContextSelector.creationDateField) || "''");
-
-    if (pWithState === true)
-    {
-        if (ownContextSelector.stateField)
-            columns.push(ownContextSelector.getFullField(ownContextSelector.stateField) || "''");
-        else
-            columns.push("''");
-    }
-    
-    if (pWithGroupBy === true)
-    {
-        if (ownContextSelector.groupBy)
-            columns.push(ownContextSelector.getFullField(ownContextSelector.groupBy) || "''");
-        else
-            columns.push("''");
-    }
-
-    var contextDataSelect = newSelect( columns.join(", ") )
-                                .from(ownContextSelector.getFullFromClause())
-                                .where(ownContextSelector.getFullField(ownContextSelector.contactIdField), pContactId, SqlBuilder.IN())
-                                .andIfSet(ownContextSelector.getFullIdField(), pUidsForFiltering, SqlBuilder.IN())
-                                .andIfSet(ownContextSelector.getFullIdField(), pExcludeIds, SqlBuilder.NOT_IN());
-    
-    if (pActive != undefined)
-    {
-        var activeStates = ownContextSelector.activeStates;
-        if(activeStates != null && activeStates.length > 0)
-        {
-            var condSub = newWhere();
-            activeStates.forEach(function (state) 
-            {   
-                if (ownContextSelector.stateField)
-                {
-                    if(pActive)
-                        condSub.or(ownContextSelector.getFullField(ownContextSelector.stateField), state)
-                    else
-                        condSub.and(ownContextSelector.getFullField(ownContextSelector.stateField), state, SqlBuilder.NOT_EQUAL())
-                }
-                
-            });
-            contextDataSelect.andIfSet(condSub);  
-        }
-    }    
-    contextDataSelect.andIfSet(ownContextSelector.condition);    
-    return contextDataSelect.build();
+    return ContextUtils.getContextDataViaReadEntity(pContextId, pContactId).length;
 }
 
 /**
- * TODO: !!!temporary function until you can get fields from another Entity!!!
+ * decides if a record is activ or not
+ * @param {String[]} pActiveStates, 1-dimensional Array of Active States
+ * @param {String} pDBFieldName, a DBField for comparison
+ * 
+ * @return a case when that resolves the active states to true and everything else to false in that Column
  */
-ContextUtils.getCountByContactId = function(pContextId, pContactId)
+ContextUtils.buildActiveCaseWhen = function(pActiveStates, pDBFieldName)
 {
-    var contextObject = ContextUtils.getSelectMap()[pContextId];
-    var tableName = contextObject.tableName;
-    var contactField = contextObject.getFullField(contextObject.contactIdField)
-    var join = contextObject.joinExpression;
-    if (tableName && contactField)
-    {
-        return newSelect("count(*)")
-                        .from(tableName + (join ? join : ""))
-                        .where(contactField, pContactId)
-                        .cell(true, "0");
-        return count;
-    }
-    return 0;
+    var extendedStates = [];
+    for(var i = 0; i < pActiveStates.length; i++)
+        extendedStates.push([pActiveStates[i], 'true']);
+    
+    //As default value we choose false, so we only have true or false and therefore we can filter more easily
+    return SqlUtils.translateStatementWithQuotes(SqlUtils.getResolvingCaseWhen(extendedStates, pDBFieldName, false)).replace("else '' end", "else 'false' end");
 }
 
 function AdminViewUtils () {}
@@ -784,7 +511,7 @@ AdminViewUtils.open = function (pUidField, pFields)
     else
         pUidField += " (UID)";
     var rows = [
-        [pUidField, pUidField, uid, "TEXT"]
+    [pUidField, pUidField, uid, "TEXT"]
     ];
     if (pFields)
     {
diff --git a/process/Contract_lib/Contract_lib.aod b/process/Contract_lib/Contract_lib.aod
index f7e066be340112fbe6298f410624cc9ba6284dad..080920179a585c383923d1e2176a995de2bb6c7a 100644
--- a/process/Contract_lib/Contract_lib.aod
+++ b/process/Contract_lib/Contract_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Contract_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Contract_lib/process.js</process>
diff --git a/process/CountryInfoData_lib/CountryInfoData_lib.aod b/process/CountryInfoData_lib/CountryInfoData_lib.aod
index d1612a9f77a923a06489237005292a2055f0cd74..ecc2eedbcd9ecf42c4b0af0be9586e5f1181c9e7 100644
--- a/process/CountryInfoData_lib/CountryInfoData_lib.aod
+++ b/process/CountryInfoData_lib/CountryInfoData_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>CountryInfoData_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/CountryInfoData_lib/process.js</process>
diff --git a/process/CountryInfo_lib/CountryInfo_lib.aod b/process/CountryInfo_lib/CountryInfo_lib.aod
index d078970229a859484e2ed6c577f386f33d404ae5..69b0a804f393c38451118b8bb66a7dcb8544aa82 100644
--- a/process/CountryInfo_lib/CountryInfo_lib.aod
+++ b/process/CountryInfo_lib/CountryInfo_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>CountryInfo_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/CountryInfo_lib/process.js</process>
diff --git a/process/CreateActivity_workflowService/CreateActivity_workflowService.aod b/process/CreateActivity_workflowService/CreateActivity_workflowService.aod
index 0241a4b95bb97c496d2b06b83887d46045fa7058..d58e85470416d18524f0b384981b5fb1e19eea60 100644
--- a/process/CreateActivity_workflowService/CreateActivity_workflowService.aod
+++ b/process/CreateActivity_workflowService/CreateActivity_workflowService.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>CreateActivity_workflowService</name>
   <title>Create activity</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/CreateNotification_workflowService/CreateNotification_workflowService.aod b/process/CreateNotification_workflowService/CreateNotification_workflowService.aod
index e6455f2cd5a5798b87d51712a6bc525e434c0a78..d2630a2a5638fa17a1526a519952b9c564f3c3e4 100644
--- a/process/CreateNotification_workflowService/CreateNotification_workflowService.aod
+++ b/process/CreateNotification_workflowService/CreateNotification_workflowService.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>CreateNotification_workflowService</name>
   <title>Create notification</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/CreateNotification_workflowService/process.js b/process/CreateNotification_workflowService/process.js
index 458f665d71468ee51ec06ffda4a690cbcd472a4e..52b6f6fa9fe3f5929f17014aad2663d2e355bfb4 100644
--- a/process/CreateNotification_workflowService/process.js
+++ b/process/CreateNotification_workflowService/process.js
@@ -1,16 +1,51 @@
+import("KeywordRegistry_basic");
+import("system.text");
 import("system.vars");
 import("system.notification");
 
 var variables = JSON.parse(vars.get("$local.value"));
 
 var config = notification.createConfig()
-    .notificationType("WorkflowNotification")
-    .addUsersWithIds([variables.notificationUser || variables.USER_ID])
-    .initialState(notification.STATE_UNSEEN)
+    .notificationType(variables.notificationType || "WorkflowNotification")
     .caption(variables.notificationCaption || "")
     .description(variables.notificationDescription || "");
-    
+
+try {
+    config.addUsersWithIds(JSON.parse(variables.notificationUser));
+} catch (e) { // Throw an exeption when the variable can't parse to an JSON-Object. 
+    config.addUsersWithIds([variables.notificationUser || variables.USER_ID])
+}
+
+var prio;
+switch (variables.notificationPriority){
+    case $KeywordRegistry.notificationPriority$none:
+        prio = notification.PRIO_NONE
+        break;
+    case $KeywordRegistry.notificationPriority$low():
+        prio = notification.PRIO_LOW
+        break;
+    case $KeywordRegistry.notificationPriority$hight():
+        prio = notification.PRIO_HIGH
+        break;
+    case $KeywordRegistry.notificationPriority$max():
+        prio = notification.PRIO_MAX
+        break;
+    case $KeywordRegistry.notificationPriority$normal():
+    default:
+        prio = notification.PRIO_NORMAL
+        break;
+}
+config.forcedPriority(prio);
+
 if (variables.notificationIcon)
     config.imageInfo(variables.notificationIcon);
+if (variables.notificationSubcategory)
+    config.notificationSubCategory(variables.notificationSubcategory);
+
+if (variables.notificationAffectedContext && variables.notificationAffectedUID)
+    config.linkInfo(text.encodeMS([variables.notificationAffectedContext, variables.notificationAffectedUID]));
 
+if (variables.notificationContentId)
+    config.contentId(variables.notificationContentId).remindAgainOnNewContent(true);
+    
 notification.addNotificationWith(config);
\ No newline at end of file
diff --git a/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod b/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod
index df1d296af52649bba991103fa19f6839afd86f3a..6e44f166f6448deeff7b7dea82ab256e34aa16c3 100644
--- a/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod
+++ b/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>CreateSalesprojectTouchpoint_workflowService</name>
   <title>Create salesproject touchpoint</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod b/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod
index 8b41b437136f9d92113d9f4cb310c3c127239e78..fa5f2a849d62b5144be2eb954f8460569e2c05ab 100644
--- a/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod
+++ b/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>CreateSalesproject_workflowService</name>
   <title>Create salesproject</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod b/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod
index 8e915687a2ad2cdd2fcdcc75bb67e37635191fdc..1a6e6266888b8ffbfd7e375eb395198a87f6b30f 100644
--- a/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod
+++ b/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>CustomPlaceholder_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/CustomPlaceholder_lib/process.js</process>
diff --git a/process/DataCaching_lib/DataCaching_lib.aod b/process/DataCaching_lib/DataCaching_lib.aod
index 732c9784be4434a3a4776c4865536eaeb260e280..06e4baffd563073f815edf70cc7164ad632a7e5e 100644
--- a/process/DataCaching_lib/DataCaching_lib.aod
+++ b/process/DataCaching_lib/DataCaching_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>DataCaching_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/DataCaching_lib/process.js</process>
diff --git a/process/DataPrivacy_lib/DataPrivacy_lib.aod b/process/DataPrivacy_lib/DataPrivacy_lib.aod
index 87e4a73a1b3e1111ba777f8296eda926464c7777..229eb4f89658803f65a7b693a026cfb3709db9a0 100644
--- a/process/DataPrivacy_lib/DataPrivacy_lib.aod
+++ b/process/DataPrivacy_lib/DataPrivacy_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>DataPrivacy_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/DataPrivacy_lib/process.js</process>
diff --git a/process/DataPrivacy_lib/process.js b/process/DataPrivacy_lib/process.js
index da986784dd28531ee4e18bfb071b17937fc31e4f..009bd8c7c52fb1a6d1363219791c80756df4528f 100644
--- a/process/DataPrivacy_lib/process.js
+++ b/process/DataPrivacy_lib/process.js
@@ -200,7 +200,7 @@ DataPrivacyType.get = function(pKey)
         // TODO: update and fix Address_lib and use it (and remove format-functions in PostalAddress_lib)
         var entityConfig = entities.createConfigForLoadingRows()
                                    .entity("Address_entity")
-                                   .fields(["ADDRESSID", "ADDRESS", "ADDRESSADDITION", "ADDRIDENTIFIER", "BUILDINGNO", "ZIP", "CITY", "COUNTRY", "DISTRICT", "REGION", "PROVINCE"]);
+                                   .fields(["ADDRESSID", "ADDRESS", "ADDRESSADDITION", "ADDRIDENTIFIER", "BUILDINGNO", "ZIP", "CITY", "COUNTRY", "DISTRICT", "PROVINCE"]);
 
         if (pAddressId)
         {
diff --git a/process/Data_lib/Data_lib.aod b/process/Data_lib/Data_lib.aod
index 7e6dc0e007d710b42680bd618e2e6e4889e0296d..316134e4f970129928126e6cc33547d76b580e79 100644
--- a/process/Data_lib/Data_lib.aod
+++ b/process/Data_lib/Data_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Data_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Data_lib/process.js</process>
diff --git a/process/Date_lib/Date_lib.aod b/process/Date_lib/Date_lib.aod
index 9833cb86c53bc720131800ef98c93138e6b61db2..4442988df03042c92262a00d87308c4785e62828 100644
--- a/process/Date_lib/Date_lib.aod
+++ b/process/Date_lib/Date_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Date_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Date_lib/process.js</process>
diff --git a/process/Dependency_lib/Dependency_lib.aod b/process/Dependency_lib/Dependency_lib.aod
index 3475b073c30bb76653e8c7f2ae098f2977ae287a..be3eec18d19dfe0ecd4abba618560bb14d59a086 100644
--- a/process/Dependency_lib/Dependency_lib.aod
+++ b/process/Dependency_lib/Dependency_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Dependency_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Dependency_lib/process.js</process>
diff --git a/process/Dependency_lib/process.js b/process/Dependency_lib/process.js
index 1f4e1267a8ed2a749d255f6560ec704e5fec1d28..e8967c862a7420d9c411fe3067ac16899dce9451 100644
--- a/process/Dependency_lib/process.js
+++ b/process/Dependency_lib/process.js
@@ -1,39 +1,240 @@
+import("Sql_lib");
+import("system.favorite");
 
 function Dependency(){}
 
 /**
- * This function is the template for the getUIDsfn-Function in the Dependency.mapping
+ * Get the Default Funktion for Fields of an table. The funktion is used to get the UIDs of the dependent Context.
+ * 
+ * @param {String} [pTableField] the table field is transferred in the following form: <br>
+ *                                  - DB-RecordContainer: TableName.FieldName
+ *                                  - JDITO-RecordContainer: FieldName.value 
+ * @return {function}  function (pNewData, pOldData) {...} 
+ */
+Dependency.defaultFunctionForField = function (pTableField) 
+{
+    return function (pNewData, pOldData) 
+    {
+        let res = [];
+        if (pNewData[pTableField])
+            res.push(pNewData[pTableField])
+        if (pOldData[pTableField] && pOldData[pTableField] != pNewData[pTableField])
+            res.push(pOldData[pTableField])
+        return res;
+    };
+}
+
+/**
+ * Get the Default Funktion for Fields of an table. The funktion is used to get the UIDs of the dependent Context.
+ * 
+ * @param {Array} [pTableFields] A table field is transferred in the following form: <br>
+ *                                  - DB-RecordContainer: TableName.FieldName
+ *                                  - JDITO-RecordContainer: FieldName.value 
+ * @return {function}  function (pNewData, pOldData) {...} 
  */
-Dependency.templateFunction = function (pTableField) {
-    return function (pRowData, pChangedData) {
+Dependency.defaultFunctionForFields = function (pTableFields)
+{
+    return function (pNewData, pOldData) 
+    {
         let res = [];
-        if (pRowData[pTableField])
-            res.push(pRowData[pTableField])
-        if (pChangedData[pTableField] && pChangedData[pTableField] != pRowData[pTableField])
-            res.push(pChangedData[pTableField])
+        for (let i = 0; i < pTableFields.length; i++)
+        {
+            res = res.concat(Dependency.defaultFunctionForField(pTableFields[i])(pNewData, pOldData));
+        }
         return res;
     }
 }
 
 /**
- * Returns the Mapping of the Dependencies.
+ * Get the default Funktion for relation tables of an entity. The Funktion is used to get the UIDs of the dependent Context over the relation table.
  * 
+ * @param {String} [pRelationTable] The Tablename of the relation table.
+ * @param {String} [pRelationField] The Field of the relation table which one contains the UID of the Entity (in the Example: "Person_entity").
+ * @param {String} [pDataField] The UID Field of the Entity.
+ * @param {String} [pContext] The Context of the Entity.
+ * @param {String} [pDataTable] The Tablename of the UID Field of the Entity. Is only need for the DB-Recordcontainer.
+ * @param {String} [pSourceField] The Field which one contains the UID of the dependent entity in the relation rable.
+ *                                  
+ * @example "Person_entity": { "Activity_entity" : { "options" : { "isObservable" : true }, "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CONTACTID", "Person", "CONTACT", "ACTIVITY_ID")}}
+ * 
+ * @return {function}  function (pNewData, pOldData) {...} 
+ */
+Dependency.defaultFunctionForRelation = function (pRelationTable, pRelationField, pDataField, pContext, pDataTable, pSourceField) 
+{
+    return function (pNewData, pOldData)
+    {
+        var relationFieldValue;
+        if (!pDataTable)
+        {
+            relationFieldValue = pNewData["UID.value"] || pNewData[pDataField  +".value"];
+        }
+        else 
+        {
+            relationFieldValue = pNewData[pDataTable + "." + pDataField];
+        }
+        
+            
+        return newSelect(pRelationTable + "." + pSourceField || "OBJECT_ROWID")
+        .from(pRelationTable)
+        .groupBy(pRelationTable + ".OBJECT_ROWID")
+        .whereIfSet(pRelationTable + "." + pRelationField, relationFieldValue)
+        .and(pRelationTable + ".OBJECT_TYPE", pContext)
+        .arrayColumn();
+    }
+}
+
+/**
+ * Get the Default Funktion for Fields of an table. The funktion is used to get the UIDs of the dependent Context.
+ * 
+ * @param {String} [pTableField] the table field is transferred in the following form: <br>
+ *                                  - DB-RecordContainer: TableName.FieldName
+ *                                  - JDITO-RecordContainer: FieldName.value 
+ * @param {String} [pContext] The Context of the Entity.
+ *                              
+ * @return {function}  function (pNewData, pOldData) {...} 
+ */
+Dependency.defaultFunctionForFavorites = function (pTableField, pContext) 
+{
+    return function (pNewData, pOldData)
+    {
+        let rowIds = Dependency.defaultFunctionForField(pTableField)(pNewData, pOldData);
+        let ids = [];
+    
+        let config = favorite.createGetFavoritesConfig().setObjectType(pContext);
+        let favos = favorite.getFavorites(config);
+        
+        for(let i = 0; i < favos.length; i++)
+        {
+            if (rowIds.indexOf(favos[i]["rowid"]) > -1 )
+            {
+                ids.push(favos[i]["id"]);
+            }
+                
+        }
+
+        return ids;
+    }
+}
+
+/**
+ * Returns the Mapping of the Dependencies. <br>
+ * <br>
+ * Every Dependency needs a Funktion with returns the UIDs of the Dependent Entity.<br>
+ * This Funtkion is placed in the Object on the getUIDsfn Node.<br>
+ * <br>
  * The mapping is structured as follows: <br>
  *  
- * @example { "Entity_entity" : { "Dependency_entity": { "getUIDsfn" : fucntion (pRowData, pChangedData) {return //the IDs of the EntityField } } } }
+ * @example { "Entity_entity" : { "Dependency_entity": { "options" : { "option" : true}, "getUIDsfn" : function (pNewData, pOldData) {return //the IDs of the EntityField } } } }
  * 
  * @return {Object}
  */
 Dependency.mapping = function ()
 {
     return {
-        "Address_entity": {
+        "Person_entity": {
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CONTACTID", "Person", "CONTACT", "ACTIVITY_ID")
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "CONTACTID", "Person", "CONTACT", "ACTIVITY_ID")
+            },
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("CONTACT.CONTACTID", "Person")
+            }
+        },
+        "PrivatePerson_entity": {
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "PERSONID", "PrivatePerson", "PERSON", "ACTIVITY_ID")
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "PERSONID", "PrivatePerson", "PERSON", "ACTIVITY_ID")
+            }
+        },
+        "Organisation_entity": {
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CONTACTID", "Organisation", "CONTACT", "ACTIVITY_ID")
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "CONTACTID", "Organisation", "CONTACT", "ACTIVITY_ID")
+            },
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("CONTACT.CONTACTID", "Organisation")
+            }
+        },
+        "Salesproject_entity": {
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "SALESPROJECTID", "Salesproject", "SALESPROJECT", "ACTIVITY_ID")
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "SALESPROJECTID", "Salesproject", "SALESPROJECT", "ACTIVITY_ID")
+            },
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("SALESPROJECT.SALESPROJECTID", "Salesproject")
+            }
+        },
+        "KnowledgeManagement_entity": {
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", "KnowledgeManagement")
+            }
+        },
+        "ExportTemplate_entity": {
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("EXPORTTEMPLATE.EXPORTTEMPLATEID", "ExportTemplate")
+            }
+        },
+        
+        "Order_entity": {
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "SALESORDERID", "Order", "SALESORDER", "ACTIVITY_ID")
+            },
             "Organisation_entity" : {
                 "options" : {
                     "isObservable" : true
                 },
                 "getUIDsfn" : function (pRowData, pChangedData) {
-                    var tableField = "ADDRESS.CONTACT_ID";
+                    var tableField = "SALESORDER.CONTACT_ID";
                     var res = [];
                     if (pRowData[tableField])
                         res.push(pRowData[tableField])
@@ -41,10 +242,535 @@ Dependency.mapping = function ()
                         res.push(pChangedData[tableField])
                     return res;
                 }
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "SALESORDERID", "Order", "SALESORDER", "ACTIVITY_ID")
+            },
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("SALESORDER.SALESORDERID", "Order")
+            }
+        },
+        "Contract_entity": {
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CONTRACTID", "Contract", "CONTRACT", "ACTIVITY_ID")
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "CONTRACTID", "Contract", "CONTRACT", "ACTIVITY_ID")
+            },
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("CONTRACT.CONTRACTID", "Contract")
+            }
+        },
+        "Product_entity": {
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "PRODUCTID", "Product", "PRODUCT", "ACTIVITY_ID")
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "PRODUCTID", "Product", "PRODUCT", "ACTIVITY_ID")
+            },
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("PRODUCT.PRODUCTID", "Product")
+            }
+        },
+        "Campaign_entity": {
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CAMPAIGNID", "Campaign", "CAMPAIGN", "ACTIVITY_ID")
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "CAMPAIGNID", "Campaign", "CAMPAIGN", "ACTIVITY_ID")
+            },
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("CAMPAIGN.CAMPAIGNID", "Campaign")
+            }
+        },
+        "SupportTicket_entity" : {
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "TICKETID", "SupportTicket", "TICKET", "ACTIVITY_ID")
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "TICKETID", "SupportTicket", "TICKET", "ACTIVITY_ID")
+            },
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("TASK.TASKID", "SupportTicket")
+            }
+        },
+        "Activity_entity" : {
+            "Person_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Person", "ACTIVITY")
+            },
+            "Organisation_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Organisation", "ACTIVITY")
+            },
+            "Salesproject_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Salesproject", "ACTIVITY")
+            },
+            "Offer_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Offer", "ACTIVITY")
+            },
+            "Order_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Order", "ACTIVITY")
+            },
+            "Contract_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Contract", "ACTIVITY")
+            },
+            "Product_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Product", "ACTIVITY")
+            },
+            "Campaign_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Campaign", "ACTIVITY")
+            }
+        },
+        "Address_entity": {
+            "Organisation_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("ADDRESS.CONTACT_ID")
+            },
+            "Person_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("ADDRESS.CONTACT_ID")
+            }
+        },
+        "AttributeRelation_entity" : {
+            "Person_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Person")
+            },
+            "Organisation_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Organisation")
+            },
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Activity")
+            },
+            "Salesproject_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Salesproject")
+            },
+            "Product_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Product")
+            },
+            "Employee_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Employee")
+            },
+            "SupportTicket_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "SupportTicket")
+            }
+        },
+        "Communication_entity": {
+            "Person_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("COMMUNICATION.CONTACT_ID")
+            },
+            "Organisation_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("COMMUNICATION.CONTACT_ID")
+            }
+        },
+        "CommRestriction_Entity" : {
+            "Person_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("COMMRESTRICTION.CONTACT_ID")
+            },
+            "Organisation_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("COMMRESTRICTION.CONTACT_ID")
+            }
+        },
+        "Contact_entity" : {
+            "Person_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("CONTACT.CONTACTID")
+            }
+        },
+        "Document_entity" : {
+            "Person_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            },
+            "Organisation_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            },
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            },
+            "Salesproject_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            },
+            "Offer_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            },
+            "Order_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            },
+            "Contract_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            },
+            "Product_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            },
+            "Employee_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            },
+            "SupportTicket_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            },
+            "Campaign_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
+            }
+        },
+        "ObjectTree_entity": {
+            "Person_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForFields(["PARENT_ID.value", "TARGET_ID.value"])
+            },
+            "Organisation_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForFields(["PARENT_ID.value", "TARGET_ID.value"])
+            }
+        },
+        "Member_entity" : {
+            "Campaign_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("OBJECTMEMBER.OBJECT_ROWID") // Evtl einschränken auf Type
+            },
+            "Salesproject_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("OBJECTMEMBER.OBJECT_ROWID") // Evtl einschränken auf Type
+            }
+        },
+        "SalesprojectSource_entity" : {
+            "Salesproject_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("SALESPROJECT_TOUCHPOINT.SALESPROJECT_ID")
+            }
+        }, 
+        "Forecast_entity" : {
+            "Salesproject_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("FORECAST.OBJECT_ROWID")  // Evtl einschränken auf Type
+            }
+        },
+        "Offer_entity" : {
+            "Salesproject_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("OFFER.OBJECT_ROWID")  // Evtl einschränken auf Type
+            },
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "OFFERID", "Offer", "OFFER", "ACTIVITY_ID")
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "OFFERID", "Offer", "OFFER", "ACTIVITY_ID")
+            },
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("OFFER.OFFERID", "Offer")
+            }
+        },
+        "DocumentTemplate_entity": {
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("DOCUMENTTEMPLATE.DOCUMENTTEMPLATEID", "DocumentTemplate")
+            }
+        },
+        "WorkflowDefinition_entity": {
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("UID.value", "WorkflowDefinition")
+            }
+        },
+        "Competition_entity" : {
+            "Salesproject_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("COMPETITION.OBJECT_ROWID")  // Evtl einschränken auf Type
+            }
+        },
+        "Offeritem_entity" : {
+            "Offer_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("OFFERITEM.OFFER_ID")
+            }
+        },
+        "Orderitem_entity" : {
+            "Order_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("SALESORDERITEM.SALESORDER_ID")
+            }
+        },
+        "Productprice_entity" : {
+            "Product_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("PRODUCTPRICE.PRODUCT_ID")
+            },
+            "Favorite_entity" : {
+                "options" : {
+                    "isObservable" : true
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForFavorites("PRODUCTPRICE.PRODUCTPRICEID", "Productprice")
+            }
+        },
+        "Prod2prod_entity" : {
+            "Product_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("SOURCE_ID.value")
+            }
+        },
+        "CampaignCost_entity" : {
+            "Campaign_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("CAMPAIGNCOST.CAMPAIGN_ID")
+            }
+        },
+        "CampaignStep_entity" : {
+            "Campaign_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("CAMPAIGNSTEP.CAMPAIGN_ID")
+            },
+            "Activity_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CAMPAIGNSTEPID", "CampaignStep", "CAMPAIGNSTEP")
+            },
+            "Task_entity" : {
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "CAMPAIGNSTEPID", "CampaignStep", "CAMPAIGNSTEP")
+            }
+        },
+        "Lead_entity" : {
+            "Leadimport_entity" : { 
+                "options" : {
+                    "isObservable" : true
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("LEAD.LEADIMPORT_ID")
             }
         }
     };
 };
+/**
+ * Returns the exculed Fields of the observable entities. These fields cannot be observed.
+ * 
+ * @return {Object} {"Entity_entity" : ["exculdedFieldName",...], ...}
+ */
+Dependency.excludedFields = function ()
+{
+    return {
+        "Activity_entity":["PARENT_ID", "PARENT_CONTEXT"],
+        "Address_entity":["CONTACT_ID"],
+        "AttributeRelation_entity":["UID", "AB_ATTRIBUTERELATIONID", "PARENT_ID", "PROTECTED", "ATTRIBUTE_TYPE", "DROPDOWNDEFINITION", "DROPDOWNFILTER"],
+        "CampaignCost_entity":["NET_aggregate"],
+        "CampaignStep_entity":null,
+        "Campaign_entity": null,
+        "CommRestriction_Entity":["CONTACT_ID"],
+        "Communication_entity":["CONTACT_ID"],
+        "Competition_entity":["OBJECT_ROWID", "OBJECT_TYPE"],
+        "Contact_entity":["ADDRESS_ID", "PERSON_ID"],
+        "Contract_entity": null, 
+        "DocumentTemplate_entity":null,
+        "Document_entity":null,
+        "Employee_entity":["UID", "SHORT_UID", "CONFIRM_PASSWORD", "PASSWORD"],
+        "ExportTemplate_entity":null,
+        "Favorite_entity":["UID", "GROUP_ID", "USER_ID", "GROUP_TYPE", "PICTURE"],
+        "Forecast_entity":null,
+        "KnowledgeManagement_entity":null,
+        "Lead_entity":["LEAD_PERSON", "LEAD_ORGANISATIONID"],
+        "Leadimport_entity":null,
+        "Member_entity":["OBJECT_ROWID", "OBJECT_TYPE"],
+        "ObjectTree_entity":["UID","PARENT_ID", "ICON", "EXPANDED", "TARGET_CONTEXT", "OBJECTRELATIONID"],
+        "Offer_entity":["OFFER_ID"],
+        "Offeritem_entity":["ASSIGNEDTO", "ITEMSORT", "OFFER_ID"],
+        "Order_entity":null,
+        "Orderitem_entity":["ASSIGNEDTO", "ITEMSORT", "SALESORDER_ID"],
+        "Organisation_entity":["ORGANISATION_ID"],
+        "Person_entity":["TITLESUFFIX", "PERSON_ID", "ADDRESS_ID"],
+        "PrivatePerson_entity":null,
+        "Prod2prod_entity":["UID", "PRODUCTID", "PROD2PRODID", "DEST_ID"],
+        "Product_entity": ["PICTURE"],
+        "Productprice_entity":null,
+        "SalesprojectSource_entity":["SALESPROJECT_ID"],
+        "Salesproject_entity":null,
+        "SupportTicket_entity":["TASK_ID", "TASK_PARRENT_ID", "TASK_PARENT_CONTEXT"],
+        "Task_entity":["PARENT_ID", "PARENT_CONTEXT","PROTECTIONLEVEL", "TYPE"],
+        "WorkflowDefinition_entity":["UID"]
+    };
+}
 
 /**
  * Returns the dependencies on the entity
@@ -54,12 +780,11 @@ Dependency.mapping = function ()
  * 
  * @example
  * Dependency.getDependency("Organisation_entity", {"isObservable" : true });
- * @example
- * Dependency.getDependency("Organisation_entity", {}));
- * @example
+ * Dependency.getDependency("Organisation_entity", {});
+
  * Dependency.getDependency("Organisation_entity"));
  * 
- * @return {String[]} the founded Dependencies. If no one is found, you get an empty Array
+ * @return {String[]} the found Dependencies. If none have been found, you get an empty Array
  */
 Dependency.getDependency = function (pEntity, pOptionFilter) {
     if (Dependency.mapping()[pEntity]) 
@@ -68,7 +793,7 @@ Dependency.getDependency = function (pEntity, pOptionFilter) {
             return (!pOptionFilter || Object.keys(pOptionFilter).every(function (pOption) {
                 let option = Dependency.mapping()[pEntity][key]["options"][pOption]
                 return option && pOptionFilter[pOption] == option;
-            }));
+            })); 
         });
     }
     
@@ -84,9 +809,7 @@ Dependency.getDependency = function (pEntity, pOptionFilter) {
  * 
  * @example
  * Dependency.getReverseDependency("Organisation_entity", {"isObservable" : true });
- * @example
  * Dependency.getReverseDependency("Organisation_entity", {}));
- * @example
  * Dependency.getReverseDependency("Organisation_entity"));
  * 
  * @return {String[]} the founded Dependencies. If no one is found, you get an empty Array
@@ -100,4 +823,26 @@ Dependency.getReverseDependency = function (pEntity, pOptionFilter) {
     });
 }
 
+Dependency.defaultFunctionForRelation = function (pRelationTable, pRelationField, pDataField, pContext, pDataTable)
+{
+    return function (pNewData, pOldData)
+    {
+        var relationFieldValue;
+        if (!pDataTable)
+        {
+            relationFieldValue = pNewData["UID.value"] || pNewData[pDataField  +".value"];
+        }
+        else
+        {
+            relationFieldValue = pNewData[pDataTable + "." + pDataField];
+        }
+           
+        return newSelect(pRelationTable + ".OBJECT_ROWID")
+        .from(pRelationTable)
+        .groupBy(pRelationTable + ".OBJECT_ROWID")
+        .whereIfSet(pRelationTable + "." + pRelationField, relationFieldValue)
+        .and(pRelationTable + ".OBJECT_TYPE", pContext)
+        .arrayColumn();
+    }
+}
 
diff --git a/process/District_lib/District_lib.aod b/process/District_lib/District_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..79117ef50433ef114e787f29f3df20de3d0c93f1
--- /dev/null
+++ b/process/District_lib/District_lib.aod
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>District_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/District_lib/process.js</process>
+  <alias>Data_alias</alias>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/District_lib/process.js b/process/District_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..6f77c41867db968f82bf6e6421c03b72bf34f8b1
--- /dev/null
+++ b/process/District_lib/process.js
@@ -0,0 +1,423 @@
+import("system.tools");
+import("system.text");
+import("system.datetime");
+import("system.notification");
+import("system.translate");
+import("Contact_lib");
+import("KeywordRegistry_basic");
+import("system.vars");
+import("system.util");
+import("Sql_lib");
+import("Util_lib");
+import("system.db");
+import("system.indexsearch");
+import("JditoFilter_lib");
+import("Util_lib");
+import("system.process");
+import("Employee_lib");
+
+/**
+ * Functions for district.
+ */
+function DistrictUtils () {}
+
+/**
+ * Gets the name of a district
+ * 
+ * @param {String} pDistrictId                  <p>
+ *                                              Id of the district.<br>
+ * @return {String}                             <p>
+ *                                              Name of the district.<br>
+ */
+DistrictUtils.getDistrictName = function (pDistrictId)
+{
+    var districtName = newSelect("DISTRICT_NAME")
+                            .from("DISTRICT")
+                            .where("DISTRICT.DISTRICTID", pDistrictId)
+                            .cell(true);    
+                            
+    return(districtName)
+}
+
+/**
+ * Get data from district
+ * 
+ * @param {String} pDistrictId                  <p>
+ *                                              ID of a district<br>
+ * @return {Array}                              <p>
+ *                                              array of data from a district <br>
+ */
+DistrictUtils.getDataFromDistrict = function (pDistrictId)
+{    
+    var districtData = newSelect("DISTRICT_FILTER, PARENTDISTRICT_DISTRICTID")
+                            .from("DISTRICT")
+                            .where("DISTRICT.DISTRICTID", pDistrictId)
+                            .arrayRow();                   
+    return(districtData);
+}
+
+
+/**
+ * Get data from a special district
+ * 
+ * @param {String} pDistrictContactId           <p>
+ *                                              Id of the districtcontact.<br>
+ * @return {Array}                              <p>
+ *                                              array of data from one districtcontact dataset <br>
+ */
+DistrictUtils.getDataFromDistrictContact = function (pDistrictContactId)
+{
+    var arrData = newSelect("DISTRICT_ID, ADVISER_CONTACT_ID, CONTACT_ID")
+                            .from("DISTRICTCONTACT")
+                            .where("DISTRICTCONTACT.DISTRICTCONTACTID", pDistrictContactId)
+                            .arrayRow();    
+                            
+    return(arrData);
+}
+
+
+/**
+ * Executes a process to assign districts on the server and creates a notification when finished.
+ * 
+ * @param {Array} pArrDistrictIds                   <p>
+ *                                                  Array of district-IDs.<br>
+ * @param {String} pUser=currentUser (optional)     <p>
+ *                                                  User who will get the notification, <br>
+ *                                                  User who will start the batch job <br>
+ * @param {String} pContactId (optional)            <p>   
+ *                                                  Organisation which should be assigned to all  <br>
+ *                                                  according districts with auto assignment is true  <br>                                            
+ */
+DistrictUtils.assignDistrictOnServer = function (pArrDistrictIds, pUser, pContactId)
+{
+    //pUser hat folgendes Format: _____USER_bcdfb521-c7d0-4ef1-8916-78e7d3232046
+    if (pUser === undefined)
+        pUser = EmployeeUtils.getCurrentUserId(); 
+    var processConfig = process.createStartAsyncConfig()
+        .setName("assignDistrict_serverProcess")
+        .setLocalVariables({
+            arrDistrictIds : pArrDistrictIds.join(";"),
+            user : pUser || "", 
+            contactId : pContactId || ""
+        })
+        .setUser(pUser);
+    process.startAsync(processConfig);
+}
+
+/**
+ * Assignes a district to companies. You should only call this function on the server because it
+ * can take some time to execute, use DistrictUtils.assignDistrictOnServer instead.
+ * 
+ * @param {String} pDistrictId                  <p>
+ *                                              Id of the district.<br>
+ * @param {String} pAppliedFilter               <p>
+ *                                              Filter condition to get the assigned companies.<br>
+ * @param {String} pContactId (opt)             <p>
+ *                                              Only filled when a special contact-ID should assigned to a district.<br>*                                              
+ * @return {Object}                             <p>
+ *                                              Count of new assigned companies and no longer assigned companies.<br>
+ */
+DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId)
+{    
+    if (pContactId == undefined)
+        pContactId = null;
+    
+    var newAssigned = 0;
+    var unchanged = 0;
+    var invalid = 0;
+    
+    //Einlesen von allen bereits existierenden automatischen Zuordnungen,
+    //die nicht auf Status 'zur Prüfung' stehen
+    //Nur notwendig, wenn pContactId leer ist. Ansonsten soll ja gezielt ein neuer Datensatz angelegt werden
+    var arrExistingIds = [];
+    if (!pContactId)
+    {
+        arrExistingIds = new SqlBuilder()
+                .select("DISTRICTCONTACT.DISTRICTCONTACTID, DISTRICTCONTACT.CONTACT_ID, DISTRICTCONTACT.ADVISER_CONTACT_ID")
+                .from("DISTRICTCONTACT")    
+                .where("DISTRICTCONTACT.DISTRICT_ID", pDistrictId)
+                .and ("DISTRICTCONTACT.ORIGIN", $KeywordRegistry.districtOrigin$auto())
+                .and ("DISTRICTCONTACT.STATUS", $KeywordRegistry.contactStatus$inReview(), SqlBuilder.NOT_EQUAL())
+                .table();    
+    }
+    
+    //Einlesen aller Betreuer, die dem übergebenen Gebiet zugeordnet sind
+    var arrResponsibleIds = new SqlBuilder()
+            .select("DISTRICTRESPONSIBLE.EMPLOYEE_CONTACT_ID, DISTRICTRESPONSIBLE.ADVISER_ROLE, " +
+                    "DISTRICTRESPONSIBLE.ADVISER_STATUS, DISTRICTRESPONSIBLE.VALID_FROM, DISTRICTRESPONSIBLE.VALID_UNTIL")
+            .from("DISTRICTRESPONSIBLE")    
+            .where("DISTRICTRESPONSIBLE.DISTRICT_ID", pDistrictId)
+            .table();
+
+    //Aufbereiten des im JSON-Format übergebenen Filters in eine SQL-Condition
+    var appliedFilterCondition = JSON.parse(pAppliedFilter).filter;
+    appliedFilterCondition = JSON.stringify(appliedFilterCondition);   
+    var sqlCondition = db.toFilterCondition(appliedFilterCondition, "Organisation_entity");       
+    
+    //Einlesen der Contact-IDs zu den Firmen, die gemäß Filter diesem Gebiet zugeordnet sind
+    var arrOrgContactIds = new SqlBuilder()
+            .selectDistinct("CONTACT.CONTACTID")
+            .from("ORGANISATION")
+            .join("CONTACT", newWhere("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID").and("CONTACT.PERSON_ID is null"))
+            .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID")
+            .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID")
+            .whereIfSet(sqlCondition)
+            .andIfSet("CONTACT.CONTACTID", pContactId)
+            .arrayColumn();               
+                 
+    var insertArray = [];
+    var colsInsert = [
+            "DISTRICTCONTACTID",
+            "CONTACT_ID",
+            "DISTRICT_ID",
+            "ADVISER_CONTACT_ID",
+            "ADVISER_ROLE",
+            "STATUS",
+            "VALID_FROM", 
+            "VALID_UNTIL",
+            "ORIGIN",
+            "USER_NEW",
+            "DATE_NEW"
+        ];
+    var updateArray = [];
+    var colsUpdate = [
+            "STATUS",
+            "USER_EDIT",
+            "DATE_EDIT"
+        ];        
+
+    //Anlegen der Firmen-Betreuer-Datensätze in der Tabelle DISTRICTCONTACT
+    for (var i=0; i<arrOrgContactIds.length; i++)
+    {
+        for (var j=0; j<arrResponsibleIds.length; j++)
+        {
+            //Existiert der Firmen-Betreuer-Datensatz bereits?
+            var found = 'N';
+            for (var k=0; k<arrExistingIds.length; k++)
+            {
+                if (arrExistingIds[k][1] == arrOrgContactIds[i] && arrExistingIds[k][2] == arrResponsibleIds[j][0])
+                {
+                    unchanged++;
+                    found = 'Y';
+                    //Gefundenen Eintrag aus dem Array entfernen 
+                    //-> Am Schluss bleiben in dem Array alle ungültigen Datensätze übrig. Bei diesen wird weiter unten der Status geändert 
+                    arrExistingIds.splice(k, 1);
+                    break;
+                }
+            }
+            //Firmen-Betreuer-Datensatz existiert noch nicht -> Insert
+            if (found == 'N')
+            {
+                //Falls Status null, dann auf active setzen
+                if (Utils.isNullOrEmpty(arrResponsibleIds[j][2])) 
+                    arrResponsibleIds[j][2] = $KeywordRegistry.contactStatus$active();
+                
+                var valsInsert = [
+                    util.getNewUUID(),
+                    arrOrgContactIds[i],
+                    pDistrictId,
+                    arrResponsibleIds[j][0],
+                    arrResponsibleIds[j][1],
+                    arrResponsibleIds[j][2],
+                    arrResponsibleIds[j][3],
+                    arrResponsibleIds[j][4],
+                    $KeywordRegistry.districtOrigin$auto(),
+                    vars.get("$sys.user"),
+                    vars.get("$sys.date")
+                ];                
+                insertArray.push(["DISTRICTCONTACT", colsInsert, null, valsInsert]);
+            }            
+        }        
+    }
+    newAssigned = insertArray.length;
+    db.inserts(insertArray);    
+    
+    //Gibt es noch ungültige Zuordnungen, dann bei diesen den Status auf "zur Prüfung setzen"
+    if (arrExistingIds.length > 0)
+    {
+        invalid = arrExistingIds.length;
+                                
+        //die erste Spalte enthält die Ids der zu aktualisierenden Datensätze
+        var arrIds = arrExistingIds.map(function(value) { return value[0]; });
+        DistrictUtils.setDistrictContactStatus (arrIds, $KeywordRegistry.contactStatus$inReview());
+    }
+        
+    return {
+        newAssigned : newAssigned,
+        invalid : invalid,
+        unchanged : unchanged
+    };    
+}
+
+
+/**
+ * Get the complete hierarchical filter
+ * 
+ * @param {JSON-String} pDistrictFilter         <p>
+ *                                              The filter of the current level<br>
+ * @param {String} pParentDistrict_DistrictId   <p>
+ *                                              District-ID of the parent district<br>*                                              
+ * @return {JSON-String}                        <p>
+ *                                              JSON-String of the complete filter (all levels) <br>
+ */
+DistrictUtils.getAppliedFilter = function (pDistrictFilter, pParentDistrict_DistrictId)
+{
+    var parentFilter = DistrictUtils.getParentFilter(pParentDistrict_DistrictId);
+
+    var appliedFilter = {
+        entity: "Organisation_entity", 
+        filter: {
+            type: "group", 
+            operator: "AND", 
+            childs: []
+        }
+    };
+
+    if (parentFilter)
+    {
+        appliedFilter.filter.childs.push(JSON.parse(parentFilter).filter);
+    }
+    if (pDistrictFilter)
+    {
+        appliedFilter.filter.childs.push(JSON.parse(pDistrictFilter).filter);
+    }
+
+    return JSON.stringify(appliedFilter);
+}
+
+/**
+ * Get the filter starting with the parent level
+ * @param {String} pParentDistrict_DistrictId   <p>
+ *                                              District-ID of the parent district<br>                                              
+ * @return {JSON-String}                        <p>
+ *                                              JSON-String of the filter starting with the parent<br>
+ */
+DistrictUtils.getParentFilter = function (pParentDistrict_DistrictId)
+{
+    var res = "";
+
+    if (pParentDistrict_DistrictId)
+    {
+        var completeParentFilter = DistrictUtils._getParentFilter(pParentDistrict_DistrictId, null);
+        completeParentFilter.entity = "Organisation_entity";
+        res = completeParentFilter;
+    }
+    else
+    {
+        var entity = "Organisation_entity";
+        var emptyFilter = {
+            entity: entity, 
+            filter: {
+                type: "group", 
+                operator: "AND", 
+                childs: []
+            }
+        };
+
+        res = emptyFilter;
+    }
+
+    return JSON.stringify(res);    
+}
+
+/**
+ * This function will recursively go through each filter level up to the root.
+ * @param {String} pParentDistrict_DistrictId   <p>
+ *                                              District-ID of the parent district<br> 
+ * @param {JSON} pPreviousFilter                <p>
+ *                                              Collected filters so far<br>                                                                                    
+ * @return {JSON}                               <p>
+ *                                              JSON-Object of the collected filters<br>
+ */
+DistrictUtils._getParentFilter = function (pParentDistrict_DistrictId, pPreviousFilter)
+{
+    var resFilter;
+    
+    if (pPreviousFilter != null)
+    {
+        resFilter = pPreviousFilter;
+    } 
+
+    if (pParentDistrict_DistrictId)
+    {
+        var parentDistrictFilter, grandParentDistrict;
+        [parentDistrictFilter, grandParentDistrict] = newSelect(["DISTRICT.DISTRICT_FILTER", "DISTRICT.PARENTDISTRICT_DISTRICTID"])
+                                                            .from("DISTRICT")
+                                                            .where("DISTRICT.DISTRICTID", pParentDistrict_DistrictId)
+                                                            .arrayRow();
+
+        parentDistrictFilter = JSON.parse(parentDistrictFilter);
+
+        if (pPreviousFilter)
+            parentDistrictFilter.filter.childs.push(resFilter.filter);
+        
+        resFilter = parentDistrictFilter;
+
+        if (grandParentDistrict.length > 0)
+        {   
+            resFilter = DistrictUtils._getParentFilter(grandParentDistrict, resFilter);
+        }
+    }
+
+    return resFilter;
+}
+
+
+/**
+ * This function will set the status of districtcontact datasets
+ * @param {Array} pArrIds                       <p>
+ *                                              IDs of districtcontact<br> 
+ * @param {String} pStatus                      <p>
+ *                                              Status, for example $KeywordRegistry.contactStatus$active<br>                                                                                    
+ * @return {none}                               <p>
+ */
+DistrictUtils.setDistrictContactStatus = function (pArrIds, pStatus)
+{
+    var updateArray = [];
+    var colsUpdate = [
+            "STATUS",
+            "USER_EDIT",
+            "DATE_EDIT"
+        ]; 
+    var valsUpdate = [
+        pStatus,
+        vars.get("$sys.user"),
+        vars.get("$sys.date")
+        ];          
+        
+    for (var i=0; i<pArrIds.length; i++)
+    {          
+        var condition = newWhere("DISTRICTCONTACT.DISTRICTCONTACTID", pArrIds[i]);
+        updateArray.push(["DISTRICTCONTACT", colsUpdate, null, valsUpdate, condition.build()]);        
+    }
+    db.updates(updateArray);
+}
+
+
+/**
+ * This function will notificate the district contact that he/she was assigned
+ * 
+ * @param {String} pDistrictContactId           <p>
+ *                                              DistrictContact-ID of the new Dataset<br>                                                                                   
+ * @return <none>                               <p>
+ */
+DistrictUtils.notificateNewDistrictContact = function(pDistrictContactId){
+    message = translate.text("Assignment to a new district/company!");
+
+    //[0]: DISTRICT_ID, [1]: ADVISER_CONTACT_ID, [2]: CONTACT_ID
+    var arrayDistrictContact = DistrictUtils.getDataFromDistrictContact(pDistrictContactId);
+    //get corresponding profile information of the systemalias
+    var user = tools.getUserByAttribute(tools.CONTACTID, arrayDistrictContact[1], tools.PROFILE_DEFAULT);
+    
+    //You can only send a notification, if the user is an employee
+    if (user)
+    {
+        var userName = user[tools.NAME];
+        var districtName = DistrictUtils.getDistrictName(arrayDistrictContact[0]);
+        var organisationName = ContactUtils.getFullTitleByContactId(arrayDistrictContact[2]);
+        // Benachrichtigung am Ende der Zuordnungen     
+        description = translate.withArguments("You were assigned as new district contact to district %0 and organisation %1.",
+            [districtName, organisationName]);
+        notification.addNotification(util.getNewUUID(), text.encodeMS(["Organisation", arrayDistrictContact[2]]), null, null, "DistrictAssigned", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userName], message, description);    
+    }
+}
diff --git a/process/DocumentTemplate_lib/DocumentTemplate_lib.aod b/process/DocumentTemplate_lib/DocumentTemplate_lib.aod
index f7dede09487b8661444e1673ef88ecca8b415c21..65a45cc2df2f4d6e372ede48d756207df60b06fd 100644
--- a/process/DocumentTemplate_lib/DocumentTemplate_lib.aod
+++ b/process/DocumentTemplate_lib/DocumentTemplate_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>DocumentTemplate_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/DocumentTemplate_lib/documentation.adoc</documentation>
diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js
index 68621c5eef9d557f3fe3168e8f131f3c8cd69adf..3c074ffd23098632fde158cbebaa1bfad78e50f1 100644
--- a/process/DocumentTemplate_lib/process.js
+++ b/process/DocumentTemplate_lib/process.js
@@ -316,8 +316,15 @@ DocumentTemplate.loadTemplate = function (pAssignmentRowId, pAssignmentTable, pR
             return null;
         }
     }
-    
-    var templateDocument = db.getBinaryMetadata(pAssignmentTable, "DOCUMENT", pAssignmentRowId, false, alias, null);
+    var templateDocument;
+    if(pAssignmentTable == "SERIALLETTER")
+    {
+        templateDocument = db.getBinaryMetadata(pAssignmentTable, "SERIALLETTERFILE", pAssignmentRowId, false, alias, null);
+    }
+    else
+    {
+        templateDocument = db.getBinaryMetadata(pAssignmentTable, "DOCUMENT", pAssignmentRowId, false, alias, null);
+    }
     if (!templateDocument[0])
         return new DocumentTemplate(undefined, undefined, undefined, undefined, templateId);
     var binaryId = templateDocument[0][db.BINARY_ID];
@@ -737,6 +744,17 @@ DocumentTemplate.prototype._getReplacedODT = function (pReplacements, pTableData
             pReplacements = [pReplacements];
         if (!pTableData)
             pTableData = [];
+        var tablePlaceholders = [];
+        if (pTableData.length > 0)
+        {
+            //pTableData[0] = first document
+            tablePlaceholders = pTableData[0].map(function (tblData)
+            {
+                if (tblData && tblData.length > 0)
+                    return new Set(Object.keys(tblData[0])); //tblData[0] = first row
+                return new Set();
+            });
+        }
         
         if (pReplacements.length !== 0)
         {
@@ -745,10 +763,10 @@ DocumentTemplate.prototype._getReplacedODT = function (pReplacements, pTableData
             var bodybegin = contentXml.indexOf("<office:body>");
             var bodyend =  contentXml.indexOf("</office:body>") + 14;
             
-            var bodyTemplate = contentXml.substring(bodybegin, bodyend);
+            var bodyTemplate = contentXml.slice(bodybegin, bodyend);
             var fullBody = "";  //body that contains all pages (required when the replacing is done for several contacts)
-            var beforeBody = contentXml.substring(0, bodybegin);
-            var afterBody = contentXml.substr(bodyend);
+            var beforeBody = contentXml.slice(0, bodybegin);
+            var afterBody = contentXml.slice(bodyend);
             
             for (let i = 0, l = pReplacements.length; i < l; i++)
             {
@@ -767,29 +785,49 @@ DocumentTemplate.prototype._getReplacedODT = function (pReplacements, pTableData
                 
                 
                 let tables = pTableData[i] || [];
-                let fromIndex = 0;
-                for (let tblIndex = 0; tblIndex < tables.length; tblIndex++) //iterate over all tables in the document
+                let tableEnd = 0;
+                //for (let tblIndex = 0; tblIndex < tables.length; tblIndex++) //iterate over all tables in the document
+                if (tables.length > 0)
                 {
-                    let tableData = tables[tblIndex];
-                    if (tableData && tableData.length > 0)
+                    let hasMoreTables = currentBody.includes("</table:table>");
+                    for (let tblI = 0; tblI < 10 && hasMoreTables; tblI++)
                     {
-                        fromIndex = currentBody.indexOf("</table:table>", fromIndex) + 14;
-                        if (fromIndex === -1) //stop if there is no table
-                            break;
-                        
-                        let rowBegin = currentBody.lastIndexOf("<table:table-row", fromIndex);
-                        let rowEnd =  currentBody.indexOf("</table:table-row>", rowBegin) + 18;
-                        
-                        let afterTable = currentBody.substr(rowEnd);
-                        let tableRow = currentBody.substring(rowBegin, rowEnd);
-                        currentBody = currentBody.substring(0, rowBegin);
-                        
-                        for (let rowIndex = 0; rowIndex < tableData.length; rowIndex++)
+                        tableEnd = currentBody.indexOf("</table:table>", tableEnd);
+                        if (tableEnd !== -1) //stop if there is no table
                         {
-                            let tableRowData = tableData[rowIndex];
-                            currentBody += that._replaceText(tableRow, tableRowData);
+                            tableEnd += 14;
+                            let rowBegin = currentBody.slice(0, tableEnd).lastIndexOf("<table:table-row");
+                            let rowEnd =  currentBody.indexOf("</table:table-row>", rowBegin) + 18;
+
+                            let tableRow = currentBody.slice(rowBegin, rowEnd);
+
+                            let rowPlaceholders = tableRow.match(PlaceholderUtils.getRegexpMatchAll());
+                            //find the table data that contains all required placeholders
+                            let tableDataIndex = !rowPlaceholders ? -1 : tablePlaceholders.findIndex(function (placeholderSet)
+                            {
+                                return rowPlaceholders.every(function (placeholderName)
+                                {
+                                    return placeholderSet.has(placeholderName);
+                                });
+                            });
+                            if (tableDataIndex !== -1)
+                            {
+                                let afterTable = currentBody.slice(rowEnd);
+                                currentBody = currentBody.slice(0, rowBegin);
+                                tableEnd -= tableRow.length;
+                                let tableData = tables[tableDataIndex];
+                                for (let rowIndex = 0; rowIndex < tableData.length; rowIndex++)
+                                {
+                                    let tableRowData = tableData[rowIndex];
+                                    let replacedRow = that._replaceText(tableRow, tableRowData);
+                                    currentBody += replacedRow;
+                                    tableEnd += replacedRow.length;
+                                }
+                                currentBody += afterTable;
+                            }
                         }
-                        currentBody += afterTable;
+                        else
+                            hasMoreTables = false;
                     }
                 }
                 fullBody += currentBody;
diff --git a/process/Document_lib/Document_lib.aod b/process/Document_lib/Document_lib.aod
index 9f2ede3e40f379602f2d598e9027e4605ab4044c..cc120d3f86f8378ebbaeb9f71e07b807bcc2b1b8 100644
--- a/process/Document_lib/Document_lib.aod
+++ b/process/Document_lib/Document_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Document_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Document_lib/process.js</process>
diff --git a/process/DocxTemplater_lib/DocxTemplater_lib.aod b/process/DocxTemplater_lib/DocxTemplater_lib.aod
index 3c96ec6b8264873a8317f644ec78bb7e59cd268b..8dfbdd5ebc9fd32efaff4ea00e28b127598ba762 100644
--- a/process/DocxTemplater_lib/DocxTemplater_lib.aod
+++ b/process/DocxTemplater_lib/DocxTemplater_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>DocxTemplater_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/DocxTemplater_lib/process.js</process>
diff --git a/process/DuplicateScanner_lib/DuplicateScanner_lib.aod b/process/DuplicateScanner_lib/DuplicateScanner_lib.aod
index 17d38fd00ac39e96737a745e8e7ce109efd1e8ad..6b45659f204354af0a6d1a39a810a6f008eda16c 100644
--- a/process/DuplicateScanner_lib/DuplicateScanner_lib.aod
+++ b/process/DuplicateScanner_lib/DuplicateScanner_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>DuplicateScanner_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/DuplicateScanner_lib/process.js</process>
diff --git a/process/EmailUtil_lib/EmailUtil_lib.aod b/process/EmailUtil_lib/EmailUtil_lib.aod
index 04b24ec7e102599577d29f2cea0cc85e7c4f048d..694639f440cc39e293d9a1960e890fdeb056aedb 100644
--- a/process/EmailUtil_lib/EmailUtil_lib.aod
+++ b/process/EmailUtil_lib/EmailUtil_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>EmailUtil_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/EmailUtil_lib/process.js</process>
diff --git a/process/Email_lib/Email_lib.aod b/process/Email_lib/Email_lib.aod
index 6022256dea0248db39f796a2a79b0e55178d4044..d1b4a5a2f481c273f871c407b1018c4dbbae2a98 100644
--- a/process/Email_lib/Email_lib.aod
+++ b/process/Email_lib/Email_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Email_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Email_lib/process.js</process>
diff --git a/process/Email_lib/process.js b/process/Email_lib/process.js
index bffbe633e28bdc6119fdea0898094c96809e493e..8f560c533ad7994e8b1896715b41ee6aabb311b6 100644
--- a/process/Email_lib/process.js
+++ b/process/Email_lib/process.js
@@ -13,6 +13,7 @@ import("system.neon");
 import("system.mail");
 import("Bulkmail_lib");
 import("system.tools");
+import("EmailUtil_lib");
 
 function EmailWritingUtils () {}
 
diff --git a/process/Employee_lib/Employee_lib.aod b/process/Employee_lib/Employee_lib.aod
index 1a08f91b6ef81042668340de79dfea0687a520e6..bf491daa912ecb65c240d820ce73baac879246c8 100644
--- a/process/Employee_lib/Employee_lib.aod
+++ b/process/Employee_lib/Employee_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Employee_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Employee_lib/process.js</process>
diff --git a/process/Employee_lib/process.js b/process/Employee_lib/process.js
index 34e15d5760485d03481f9a69ca15c32428554da5..40db215e8d07d55f15352bf242cb9140f5ffa5ca 100644
--- a/process/Employee_lib/process.js
+++ b/process/Employee_lib/process.js
@@ -146,8 +146,14 @@ EmployeeUtils.hasRelations = function (pContactId)
  */
 EmployeeUtils.isUser = function (pContactId)
 {
-    var user = tools.getUserByAttribute(tools.CONTACTID, pContactId);
-    return user != null;
+    return EmployeeUtils.getUserByContactId(pContactId) != null;
+}
+
+EmployeeUtils.getUserByContactId = function (pContactId)
+{
+    if (!pContactId)
+        return null;
+    return tools.getUserByAttribute(tools.CONTACTID, pContactId);
 }
 
 /**
diff --git a/process/Entity_lib/Entity_lib.aod b/process/Entity_lib/Entity_lib.aod
index d106b77a163c3a6f9266ffd622878cd794b9699a..81c2102218a1279f39ab1d8cb6516a0de085512f 100644
--- a/process/Entity_lib/Entity_lib.aod
+++ b/process/Entity_lib/Entity_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Entity_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Entity_lib/process.js</process>
diff --git a/process/EwsClient_lib/EwsClient_lib.aod b/process/EwsClient_lib/EwsClient_lib.aod
index 6343b20344c5462d4d714e1bb7cc697669244611..988c9f615a2ca71f5859f8ec0253be800cdf9b83 100644
--- a/process/EwsClient_lib/EwsClient_lib.aod
+++ b/process/EwsClient_lib/EwsClient_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>EwsClient_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/EwsClient_lib/process.js</process>
diff --git a/process/ExportTemplate_lib/ExportTemplate_lib.aod b/process/ExportTemplate_lib/ExportTemplate_lib.aod
index 7caa047e49c2fef06484706319038c76196b7408..347c2bddef076b805409a78895a51a36914f6f32 100644
--- a/process/ExportTemplate_lib/ExportTemplate_lib.aod
+++ b/process/ExportTemplate_lib/ExportTemplate_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ExportTemplate_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/ExportTemplate_lib/process.js</process>
diff --git a/process/Favorites_lib/Favorites_lib.aod b/process/Favorites_lib/Favorites_lib.aod
index cae0fb68babcc9bc0d63f870308e1571808c527b..1512c3b435da8286670c2c886d709582b7b5e4c7 100644
--- a/process/Favorites_lib/Favorites_lib.aod
+++ b/process/Favorites_lib/Favorites_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Favorites_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Favorites_lib/process.js</process>
diff --git a/process/FilterCondition_lib/FilterCondition_lib.aod b/process/FilterCondition_lib/FilterCondition_lib.aod
index 501b03729ea169b526cad1548517b937c6dfab68..a69dbb1ec7562964c049d98c602b3e2fc523d214 100644
--- a/process/FilterCondition_lib/FilterCondition_lib.aod
+++ b/process/FilterCondition_lib/FilterCondition_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>FilterCondition_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/FilterCondition_lib/process.js</process>
diff --git a/process/FilterViewAction_lib/FilterViewAction_lib.aod b/process/FilterViewAction_lib/FilterViewAction_lib.aod
index 48c19eee90b9f6d0af7eef5c7d56053ce1cbb706..83be35832aac8118a4ea6c6f5303da92279e165d 100644
--- a/process/FilterViewAction_lib/FilterViewAction_lib.aod
+++ b/process/FilterViewAction_lib/FilterViewAction_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>FilterViewAction_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/FilterViewAction_lib/process.js</process>
diff --git a/process/Html_lib/Html_lib.aod b/process/Html_lib/Html_lib.aod
index 98ca38b6fb0b91eaf40a3bc4df951523298405b6..52d9fb2676cc9bd5c6830314d4ea3dc03f5c77bb 100644
--- a/process/Html_lib/Html_lib.aod
+++ b/process/Html_lib/Html_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Html_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Html_lib/process.js</process>
diff --git a/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod b/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod
index bda7727edbe38bf67567ed6bf614368f276cacc6..e5e687932c1f9a7c032b98a697d4cce04b62c23e 100644
--- a/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod
+++ b/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ImporterCustomMappingFunctions_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/ImporterCustomMappingFunctions_lib/documentation.adoc</documentation>
diff --git a/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod b/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod
index 8a5c80a490d63a3c52aecaa1f3c2fd22e206c0e0..9c1fdace0d76d26c686e2696f82367c4b9520898 100644
--- a/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod
+++ b/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ImporterMappingFunctions_lib</name>
   <comment></comment>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/ImporterMappingFunctions_lib/process.js b/process/ImporterMappingFunctions_lib/process.js
index 1598b0c0d197065131f90b301d060411762ecb49..f85d4a3f1b1f45c8e8079a2efe776a0208d07e1c 100644
--- a/process/ImporterMappingFunctions_lib/process.js
+++ b/process/ImporterMappingFunctions_lib/process.js
@@ -142,7 +142,7 @@ function iAttribute(pObject)
             
             if (i == 0) 
             {
-                var parent = "NULL";
+                var parent = null;
                 // select ab_attributeid from AB_ATTRIBUTE where ATTRIBUTE_NAME = 'Subordinate campaign of' and attribute_parent_id is null
                 id = newSelect(ab_attributeId, alias).from(ab_attribute).where(attribute_name, attributes[i])
                         .and(attribute_parent_id + " is null").cell();
@@ -158,10 +158,18 @@ function iAttribute(pObject)
             {
                 id = util.getNewUUID();
                 if (attributes.length == i+1) type = attributeType;
+                
                 //TODO: add insertNoWait to instantly add AB_ATTRIBUTE records; 
                 //this ensures that nothing is in the funcBuffer that does not exist in the database
                 //TODO: check: are COMOB-values added automatically?
                 var values = [id, parent, attributes[i], type, "1"];
+                
+                if(parent == null)
+                {
+                    values = [id, attributes[i], type, "1"];
+                    columns = [ab_attributeId, attribute_name, attribute_type, attribute_active];
+                }
+                
                 this.insertData(ab_attribute, columns, null, values, alias);
             }   
             pathToFollow["childs"][attributes[i]]["id"] = id;   
diff --git a/process/ImporterTest_lib/ImporterTest_lib.aod b/process/ImporterTest_lib/ImporterTest_lib.aod
index e1204321106696757a47000f28e10cc890d73182..18c823d8efb53c2729837bed17354bcc5d518145 100644
--- a/process/ImporterTest_lib/ImporterTest_lib.aod
+++ b/process/ImporterTest_lib/ImporterTest_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ImporterTest_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/ImporterTest_lib/process.js</process>
diff --git a/process/Importer_lib/Importer_lib.aod b/process/Importer_lib/Importer_lib.aod
index 157f0d47a73b0864183bb16bdd52a1df8aa60151..1d6a37d39b4020a34413b08f937d71f1b2aa6434 100644
--- a/process/Importer_lib/Importer_lib.aod
+++ b/process/Importer_lib/Importer_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Importer_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/Importer_lib/documentation.adoc</documentation>
diff --git a/process/Importer_lib/process.js b/process/Importer_lib/process.js
index a9e5a528933faecd47bc7480712b8a2114e3787b..98cb4591bf894ae46a7b4a1796cbe5b66b08e525 100644
--- a/process/Importer_lib/process.js
+++ b/process/Importer_lib/process.js
@@ -1443,6 +1443,10 @@ function Importer(pConfig)
             var tmp = this.KeyColumn[pTable][col];  // contains I | I;U | I+U
             if(tmp != "")
             {
+                if(!this.OutputRecord[pTable][col])
+                {
+                    throw new Error(translate.withArguments("Importer_lib: Condition could not be build because the Keycolumn %0 is not in the OutputRecord.", [col]));
+                }
                 var value = this.OutputRecord[pTable][col]["U"];
                 if(value == undefined || value == "")
                     value = this.OutputRecord[pTable][col]["I+U"];
diff --git a/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod b/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod
index 9d36946fdfeba69161bdfea00b2fb36fff5e9703..6659a5fab6a825cf1ac27042fa364121ef42d443 100644
--- a/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod
+++ b/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>IncomingCallExecutor_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/IncomingCallExecutor_lib/process.js</process>
diff --git a/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod b/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod
index 1dbef1a882583c24721c0d35583dfdc1506ef5f4..5d940a9124d30b9cfdbfa030b459f3802d9e8139 100644
--- a/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod
+++ b/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>IncomingEmailExecutor_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/IncomingEmailExecutor_lib/process.js</process>
diff --git a/process/IncomingEmailExecutor_lib/process.js b/process/IncomingEmailExecutor_lib/process.js
index 555f4f161b3e60e782158c1a1aa1a632a5733c50..18756c30f4dfb3005f0f0d06f5ea3ab27797acde 100644
--- a/process/IncomingEmailExecutor_lib/process.js
+++ b/process/IncomingEmailExecutor_lib/process.js
@@ -266,7 +266,23 @@ IncomingEmailExecutor.prototype._getProcessingFunction = function (pIsSender, pT
         }
         else
         {
-            var link = [(contactPersonId == "" ? "Organisation" : "Person"), contactId];
+            var context = contactPersonId == "" ? "Organisation" : "Person"
+         
+            if(context == "Person")//add Organisation to the Activity as Link
+            {
+                var orgData = newSelect(["CONTACT.CONTACTID", "CONTACT.STATUS"], this._alias)
+                                .from("CONTACT")
+                                .join("CONTACT", "anyContact.ORGANISATION_ID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null", "anyContact")
+                                .whereIfSet(["CONTACT", "CONTACTID", "anyContact"], contactId)
+                                .arrayRow()
+                
+                if (orgData[1] == $KeywordRegistry.contactStatus$active())
+                    pTargetArray["prefered"].push(["Organisation", orgData[0]]);
+                else
+                    pTargetArray["failback"].push(["Organisation", orgData[0]]);
+            }
+         
+            var link = [context, contactId];
             if (isContactActive)
                 pTargetArray["prefered"].push(link);
             else
diff --git a/process/IndexSearch_lib/IndexSearch_lib.aod b/process/IndexSearch_lib/IndexSearch_lib.aod
index bfc314526ea673c93e94af2e8fae2d019e835386..b5a2aacd8c33062115f137291582acd7c0d8a36b 100644
--- a/process/IndexSearch_lib/IndexSearch_lib.aod
+++ b/process/IndexSearch_lib/IndexSearch_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>IndexSearch_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/IndexSearch_lib/process.js</process>
diff --git a/process/JditoFilter_lib/JditoFilter_lib.aod b/process/JditoFilter_lib/JditoFilter_lib.aod
index e6721ea4e24d19d56ce2a3054d799e994536ed7c..1276959dc464987cf335240fa6c934a9261a328c 100644
--- a/process/JditoFilter_lib/JditoFilter_lib.aod
+++ b/process/JditoFilter_lib/JditoFilter_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>JditoFilter_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/JditoFilter_lib/documentation.adoc</documentation>
diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js
index 8480664cc40d733bd5b2630cdabfee9efb17de21..c2244518ffb427f82f1273d879f7c16c878be589 100644
--- a/process/JditoFilter_lib/process.js
+++ b/process/JditoFilter_lib/process.js
@@ -6,6 +6,110 @@ import("system.datetime");
 
 //@TODO: add support for permissions to the lib
 
+/**
+ * object representing a filter-condition
+ * 
+ * @param {Object} pGroup
+ */
+function FilterConditionGroup (pGroup)
+{
+    if (pGroup && "filter" in pGroup)
+        pGroup = pGroup.filter;
+        
+    var operator = pGroup ? pGroup.operator : "AND";
+    var childs = pGroup ? pGroup.childs : [];
+    this.type = "group";
+    this.operator = operator;
+    _removeEmptyGroups(childs);
+    this.childs = childs.map(function (child)
+    {
+        if (child.type === "group")
+            return new FilterConditionGroup(child);
+        return child;
+    });
+    
+    function _removeEmptyGroups (pCurrentArray)
+    {
+        for (let i = 0; i < pCurrentArray.length; i++)
+        {
+            let row = pCurrentArray[i];
+            if (row.type == "group")
+            {
+                _removeEmptyGroups(row.childs);
+                if (row.childs.length === 0)
+                    pCurrentArray.splice(i--, 1);
+            }
+        }
+    }
+}
+
+/**
+ * Calls the given function for every filter row/group and returns the value if the function returns something truthy
+ * 
+ * @param {Function} pCallbackFn  function that tests the values
+ * @return {Object} the first row/group that meets the conditions
+ */
+FilterConditionGroup.prototype.find = function (pCallbackFn)
+{
+    for (let i = 0; l = this.childs.length; i++)
+    {
+        let child = this.childs[i];
+        if (pCallbackFn(child))
+            return child;
+        if (child.type === "group")
+            return child.find(pCallbackFn);
+    }
+}
+
+/**
+ * Searches the filter for a row with the given name
+ * 
+ * @param {String} pName the name of the row
+ * @return {Object} the desired row, if found
+ */
+FilterConditionGroup.prototype.getRow = function (pName)
+{
+    return this.find(function (row)
+    {
+        return row.type === "row" && row.name == pName;
+    });
+}
+
+FilterConditionGroup.prototype.reduce = function (pRowCallbackFn, pAccumulatorGeneratorFn, pMergeFn)
+{
+    return _reduce(this);
+    
+    function _reduce (pRow, pAccumulator, pOperator)
+    {
+        if (pRow.type === "group")
+        {
+            var accumulator = pAccumulatorGeneratorFn();
+            for (let i = 0, l = pRow.childs.length; i < l; i++)
+            {
+                accumulator = _reduce(pRow.childs[i], accumulator, pRow.operator);
+            }
+            if (pAccumulator === undefined || pAccumulator === null)
+                return accumulator;
+            return pMergeFn(pAccumulator, accumulator, pRow.operator);
+        }
+        else if (pRow.type === "row")
+        {
+            return pRowCallbackFn(pAccumulator, pRow, pOperator);
+        }
+        return undefined;
+    }
+}
+
+/**
+ * Checks if the filter group is empty
+ * 
+ * @return {Boolean} true if the filter is empty
+ */
+FilterConditionGroup.prototype.isEmpty = function ()
+{
+    return this.childs.length === 0;
+}
+
 /**
  * object for filtering records
  * 
@@ -302,6 +406,29 @@ JditoFilterUtils.filterRecords = function (pColumns, pRecords, pFilter, pCustomC
     return filterObj.filterRecords(pRecords);
 }
 
+/**
+ * Filters the given records manually. If you get the records using a sql query, you might consider using
+ * JditoFilterUtils.getSqlCondition instead for better performance.
+ * 
+ * @param {Array} pColumns one dimensional array with all column names (only the columns with the idValue, displayValue columns should be null or ""), 
+ *                          the order has to match the columns of the recordFields property in the recordcontainer
+ * @param {Array} pRecords two dimensional array with all records
+ * @param {String|Object} pFilter the value of vars.get($local.filter).filter
+ * @param {Object} [pCustomCheckFns] Object of custom functions that should be used to ckeck records. The key has to be the name of the fields you want to
+ *          check. The provided function will be called with the arguments (recordValue, filterValue, operator, record) and should return a boolean (or something truthy or falsy).
+ * @param {Object} [pCheckFnThisArg] The object that should be the this-context when the custom check functions are called. This can be useful if you
+ *          need some kind of storage for extra data you need in your function that you don't have to load for every record.
+ * 
+ * @return {Array} the filtered records
+ */
+JditoFilterUtils.filterRecordsReturnOnlyFirst = function (pColumns, pRecords, pFilter, pCustomCheckFns, pCheckFnThisArg)
+{
+    if (!pFilter)
+        return pRecords[0];
+    
+    return new JditoFilter(pColumns, pFilter, pCustomCheckFns, pCheckFnThisArg).filterRecords(pRecords);
+}
+
 /**
  * builds an sql condition from the given filter
  * 
@@ -363,6 +490,27 @@ JditoFilterUtils.isUserIgnoreCase = function ()
     return ignoreCase == "" || /true/i.test(ignoreCase);
 }
 
+/**
+ * Gets you an empty Filter for the specified entity.
+ * 
+ * @param {String} pEntity the entity you want the empty filter from
+
+ * @return {String} the stringified Filter
+ */
+JditoFilterUtils.getEmptyFilter = function (pEntity)
+{
+    var emptyFilter = {
+        entity: pEntity, 
+        filter: {
+            type: "group", 
+            operator: "AND", 
+            childs: []
+        }
+    };
+    return JSON.stringify(emptyFilter);
+}
+
+
 /**
  * Object for translating a filter object to a sql condition.
  * 
diff --git a/process/KeywordAttribute_test/KeywordAttribute_test.aod b/process/KeywordAttribute_test/KeywordAttribute_test.aod
index 5956980e85aba58177a5e931c819b50b4894f796..d22a7e77434dce92542facb54aabfd1a93d5a438 100644
--- a/process/KeywordAttribute_test/KeywordAttribute_test.aod
+++ b/process/KeywordAttribute_test/KeywordAttribute_test.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>KeywordAttribute_test</name>
   <title>[TEST] KeywordAttribute_lib</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/KeywordData_lib/KeywordData_lib.aod b/process/KeywordData_lib/KeywordData_lib.aod
index 479ec9743c143950a7bc443d83410a829842fd99..75431a8c0314bbe8ce20a2362be8e1dd40c6cc96 100644
--- a/process/KeywordData_lib/KeywordData_lib.aod
+++ b/process/KeywordData_lib/KeywordData_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>KeywordData_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/KeywordData_lib/process.js</process>
diff --git a/process/KeywordRegistry_basic/KeywordRegistry_basic.aod b/process/KeywordRegistry_basic/KeywordRegistry_basic.aod
index f16c2160c96dbf655bd3d9e8c09fa6cdf23fe58f..3e8c6225484280a86952143b84f07255692204c7 100644
--- a/process/KeywordRegistry_basic/KeywordRegistry_basic.aod
+++ b/process/KeywordRegistry_basic/KeywordRegistry_basic.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>KeywordRegistry_basic</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/KeywordRegistry_basic/process.js</process>
diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js
index eaa206920ca8d3e012f686c6830db4b63d9942fd..fcb12948f27d859bc23f374130bc4d2a85ffb97f 100644
--- a/process/KeywordRegistry_basic/process.js
+++ b/process/KeywordRegistry_basic/process.js
@@ -41,6 +41,7 @@ $KeywordRegistry.activityDirection$internal = function(){return "x";};
 $KeywordRegistry.contactStatus = function(){return "ContactStatus";};
 $KeywordRegistry.contactStatus$active = function(){return "CONTACTSTATACTIVE";};
 $KeywordRegistry.contactStatus$inactive = function(){return "CONTACTSTATINACTIVE";};
+$KeywordRegistry.contactStatus$inReview = function(){return "CONTACTSTATREVIEW";};
 
 $KeywordRegistry.currency = function(){return "Currency";};
 $KeywordRegistry.currency$eur = function(){return "EUR";};
@@ -86,6 +87,12 @@ $KeywordRegistry.quantityUnit = function(){return "QuantityUnit";};
 $KeywordRegistry.quantityUnit$pieces = function(){return "QUANTITYPIECES";};
 
 $KeywordRegistry.MemberRole = function(){return "MemberRole";};
+$KeywordRegistry.memberRoleProjManag = function(){return "MEMROLEPROJMANAG";};
+$KeywordRegistry.memberRoleAdvise = function(){return "MEMROLEADVISE";};
+$KeywordRegistry.memberRoleProjAssist = function(){return "MEMROLEPROJASSIST";};
+$KeywordRegistry.memberRoleExSalemang = function(){return "MEMROLEEXSALEMANAG";};
+$KeywordRegistry.memberRoleIntenDistrib = function(){return "MEMROLINSALEMANAG";};
+
 $KeywordRegistry.salesprojectSource = function(){return "SalesprojectSource";};
 
 $KeywordRegistry.salesorderState = function(){return "SalesorderState";};
@@ -131,6 +138,12 @@ $KeywordRegistry.salesprojectState$lost = function(){return "SALPROJSTATLOST";};
 $KeywordRegistry.salesprojectPhase = function(){return "SalesprojectPhase";};
 $KeywordRegistry.salesprojectPhase$nqc = function(){return "SALPROJPHASENQC";};
 $KeywordRegistry.salesprojectPhase$nego = function(){return "SALPROJPHASENEGO";};
+$KeywordRegistry.salesprojectPhase$mal = function(){return "SALPROJPHASEMAL"};
+$KeywordRegistry.salesprojectPhase$mql = function(){return "SALPROJPHASEMQL"};
+$KeywordRegistry.salesprojectPhase$offer = function(){return "SALPROJPHASEOFFER"};
+$KeywordRegistry.salesprojectPhase$sal = function(){return "SALPROJPHASESAL"};
+$KeywordRegistry.salesprojectPhase$sqo = function(){return "SALPROJPHASESQO"};
+$KeywordRegistry.salesprojectPhase$mqc = function(){return "SALPROJPHASEMQC"};
 
 $KeywordRegistry.taskPriority = function(){return "TaskPriority";};
 $KeywordRegistry.taskPriority$none = function(){return "TASKPRIONONE";};
@@ -297,6 +310,11 @@ $KeywordRegistry.notificationState = function(){ return "NotificationState";};
 $KeywordRegistry.notificationState$unseen = function(){return "UNSEEN";};
 $KeywordRegistry.notificationState$seen = function(){return "SEEN";};
 
+$KeywordRegistry.adviserRole = function(){ return "ADVISER_ROLE";};
+
+$KeywordRegistry.districtOrigin = function(){ return "DISTRICT_ORIGIN";};
+$KeywordRegistry.districtOrigin$manual = function(){ return "DistrictOrigin_manual";};
+$KeywordRegistry.districtOrigin$auto = function(){ return "DistrictOrigin_auto";};
 $KeywordRegistry.discussionStatus = function(){return "DiscussionStatus";}
 $KeywordRegistry.discussionStatus$acitve = function(){return "ACTIVE";}
 $KeywordRegistry.discussionStatus$closed = function(){return "CLOSED";}
@@ -308,4 +326,21 @@ $KeywordRegistry.knowledgeType$editorial = function(){return "EDITORIAL";}
 $KeywordRegistry.knowledgePublishLevel = function(){return "KnowledgePublishLevel";}
 $KeywordRegistry.knowledgePublishLevel$internal = function(){return "INTERNAL";}
 $KeywordRegistry.knowledgePublishLevel$partner = function(){return "PARTNER";}
-$KeywordRegistry.knowledgePublishLevel$public = function(){return "PUBLIC";}
\ No newline at end of file
+$KeywordRegistry.knowledgePublishLevel$public = function(){return "PUBLIC";}
+
+$KeywordRegistry.visitPlanEntryStatusAppointment = function(){return "VisitPlanEntryStatusAppointment";};
+$KeywordRegistry.visitPlanEntryStatusAppointment$requested = function(){return "VISITSTATUSAPPOINTMENTREQUESTED";};
+$KeywordRegistry.visitPlanEntryStatusAppointment$confirmed = function(){return "VISITSTATUSAPPOINTMENTCONFIRMED";};$KeywordRegistry.knowledgePublishLevel$public = function(){return "PUBLIC";}
+
+$KeywordRegistry.notificationPriority = function(){ return "NotificationPriority";};
+$KeywordRegistry.notificationPriority$none = function(){ return "NONE";};
+$KeywordRegistry.notificationPriority$low = function(){ return "LOW";};
+$KeywordRegistry.notificationPriority$normal = function(){ return "NORMAL";};
+$KeywordRegistry.notificationPriority$hight = function(){ return "HIGH";};
+$KeywordRegistry.notificationPriority$max = function(){ return "MAX";};
+
+$KeywordRegistry.visitPlanEntryStatusAppointment$confirmed = function(){return "VISITSTATUSAPPOINTMENTCONFIRMED";};$KeywordRegistry.knowledgePublishLevel$public = function(){return "PUBLIC";}
+
+$KeywordRegistry.checklistEntryType = function(){return "ChecklistEntryType";}
+$KeywordRegistry.checklistEntryType$manual = function(){return "MANUAL";}
+$KeywordRegistry.checklistEntryType$auto = function(){return "AUTO";}
\ No newline at end of file
diff --git a/process/Keyword_lib/Keyword_lib.aod b/process/Keyword_lib/Keyword_lib.aod
index 2dd2a647ff95df46a7e1b5d118e021129d1d30d7..641f19343bb3f869b69ebb3c2b0bfd8464c32229 100644
--- a/process/Keyword_lib/Keyword_lib.aod
+++ b/process/Keyword_lib/Keyword_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Keyword_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Keyword_lib/process.js</process>
diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js
index 8f391ae7f463a1750bc3fed18fbe115e4daaab3f..c00c0c9e30a43a1ee0d28adcf19b8604f3ea6c3f 100644
--- a/process/Keyword_lib/process.js
+++ b/process/Keyword_lib/process.js
@@ -26,7 +26,7 @@ function KeywordUtils() {}
 KeywordUtils.getResolvedTitleSqlPart = function(pContainerName, pDbFieldName, pLocale)
 {
     var keywordData = KeywordData.getSimpleData(pContainerName, pLocale);
-    var resSql = SqlUtils.getResolvingCaseWhen(keywordData, pDbFieldName, pLocale);
+    var resSql = SqlUtils.getResolvingCaseWhen(keywordData, pDbFieldName, false);
 
     return SqlUtils.translateStatementWithQuotes(resSql);
 };
diff --git a/process/Keyword_test/Keyword_test.aod b/process/Keyword_test/Keyword_test.aod
index e654f56663b71ec5ed3e6241aa1be9bd76dc1d87..fa9513b2863452c919eb7342a1f1fd5b0d3cfd27 100644
--- a/process/Keyword_test/Keyword_test.aod
+++ b/process/Keyword_test/Keyword_test.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Keyword_test</name>
   <title>[TEST] Keyword_lib</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod b/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod
index 7119bdb3846ad9854af7575629a9c7a7c46b7d48..38b9d6a998f6bef55bf0a50b487a124f62e6de18 100644
--- a/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod
+++ b/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>KnowledgeManagement_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/KnowledgeManagement_lib/process.js</process>
diff --git a/process/KnowledgeManagement_lib/process.js b/process/KnowledgeManagement_lib/process.js
index 9ec7cfda580870f5f0d99653149271e816528390..6abec985abdfb8fa7a47a556f2a19baeeb5f74c6 100644
--- a/process/KnowledgeManagement_lib/process.js
+++ b/process/KnowledgeManagement_lib/process.js
@@ -327,6 +327,7 @@ KnowledgeManagementTagsController.getInstance = function(pId, pModel)
  *
  * @param {String} pIdValue, id of the new AttributeRelation typically read from $local.idvalue
  * @param {Array} pRowData, data of the new tag, typically read from $local.rowdata
+ * @param {Boolean} pFromUpdate
  *
  * @return {this}
  */
@@ -409,11 +410,10 @@ KnowledgeManagementTagsController.prototype.editTag = function(pIdValue, pRowDat
     function _update(pId, pData)
     {
         var fields = ["KNOWLEDGETAG_ID", "USER_EDIT", "DATE_EDIT"];
-        var dataTypes = db.getColumnTypes("KNOWLEDGETAGLINK", fields);
         var values = [pData["TAG.value"], vars.get("$sys.user"), datetime.date()];
         var cond = newWhere("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", pId).toString();
 
-        db.updateData("KNOWLEDGETAGLINK", fields, dataTypes, values, cond);
+        db.updateData("KNOWLEDGETAGLINK", fields, null, values, cond);
     }
     /**
      * private function for checking, if an old tag is used anywhere else. If it's not used anymore, it gets deleted
@@ -489,6 +489,7 @@ KnowledgeManagementTagsController.prototype.clearTags = function()
  * @param {String} pIdValue typically the $local.idvalue of the onInsert process, it is being used, if for some reason the entered tag is already existing.
  *                          then a new AttributeRelation is created instead of the tag.
  * @param {[][]} pData typically the $local.rowdata of the onInsert or onUpdate process
+ * @param {Boolean} pFromUpdate
  *
  * @return {String|null} returns the id of the new tag attribute or null, if it couldn't be created
  */
diff --git a/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod b/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod
index dd1aecc728e349ceced88023f48b3c214a33ca1b..2ac6bab47ac32ade4753eae8e051fe6d1e55b9f4 100644
--- a/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod
+++ b/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>LeadQuickAcquisition_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/LeadQuickAcquisition_lib/process.js</process>
diff --git a/process/Leadimport_lib/Leadimport_lib.aod b/process/Leadimport_lib/Leadimport_lib.aod
index 2b0a6ccc76164c013c73ed247fdd212d3e8defb0..6426e09650258a2fbb87212c736d911eda3b40e4 100644
--- a/process/Leadimport_lib/Leadimport_lib.aod
+++ b/process/Leadimport_lib/Leadimport_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Leadimport_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Leadimport_lib/process.js</process>
diff --git a/process/Leadimport_lib/process.js b/process/Leadimport_lib/process.js
index de9d13b2c7bb525960c5503b3e20eb28d9f2190d..422506bef5bea01bb6500bd075ec70a66f6b172a 100644
--- a/process/Leadimport_lib/process.js
+++ b/process/Leadimport_lib/process.js
@@ -154,7 +154,7 @@ LeadImportUtils.loadImportFile = function(pBinId, pFieldSep, pFieldLimit, pRecor
 LeadImportUtils.importData = function(pDataFields, pDataTypes, pFieldDef, pFieldValues, pImportDefID, pAttrObject, pSource, pUser, pDate)
 {
     var LeadValues = LeadImportUtils.setValues(pDataFields["LEAD"], pFieldDef, pFieldValues); // set the Lead values
-    
+ 
     var orgid = "";
     var persid = ""; 
     var persContactId = ""; 
diff --git a/process/Liquibase_lib/Liquibase_lib.aod b/process/Liquibase_lib/Liquibase_lib.aod
index 5fc68808e15f30333eeb59291fa318d56e028ac1..31fe997666b305a5ae1f926f766e79a14160fae0 100644
--- a/process/Liquibase_lib/Liquibase_lib.aod
+++ b/process/Liquibase_lib/Liquibase_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Liquibase_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Liquibase_lib/process.js</process>
diff --git a/process/Liquibase_lib/process.js b/process/Liquibase_lib/process.js
index b3e976bbae35a2d09818b26e27d9e59d4217dfee..e97ca5b27214feb4d5a3589abdf1928d5c72ee3f 100644
--- a/process/Liquibase_lib/process.js
+++ b/process/Liquibase_lib/process.js
@@ -175,7 +175,7 @@ LiquiUtils.getDataXml = function(pAuthor, pLobPath, pTableName, pColumns, pData,
     var changesetId;
     if (pGenerateChangeSetIdFromArguments)
     {
-        changesetId = Array.prototype.slice.call(arguments);//todo: use Array.from instead when supported (>= rhino 1.7.11) (#1038664)
+        changesetId = Array.from(arguments);
         changesetId = changesetId.reduce(function (accumulator, currentValue){
             return (currentValue !== null && currentValue !== undefined ? accumulator + JSON.stringify(currentValue) : accumulator);
         }, "");
diff --git a/process/Location_lib/Location_lib.aod b/process/Location_lib/Location_lib.aod
index 1a9a229f653f16af767f0c6193958ec831ea120c..812115767215451b35b717b2f7f88a8ff712ece7 100644
--- a/process/Location_lib/Location_lib.aod
+++ b/process/Location_lib/Location_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Location_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Location_lib/process.js</process>
diff --git a/process/Loghistory_lib/Loghistory_lib.aod b/process/Loghistory_lib/Loghistory_lib.aod
index 454f37cd2f2f3108e77c6eb547d95229067e1eca..bcbd876cc0fc2aa81d819bc2f8903ce6210b7eb2 100644
--- a/process/Loghistory_lib/Loghistory_lib.aod
+++ b/process/Loghistory_lib/Loghistory_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Loghistory_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Loghistory_lib/process.js</process>
diff --git a/process/Loghistory_lib/process.js b/process/Loghistory_lib/process.js
index 00ee5d28afd329d981a2d69ae461414c16e55134..23b84d6651ee79d7a04a4b8670b5caddd1733bc4 100644
--- a/process/Loghistory_lib/process.js
+++ b/process/Loghistory_lib/process.js
@@ -17,6 +17,7 @@ import("Contact_lib");
 import("AddressEntity_lib");
 import("Util_lib");
 import("KeywordRegistry_basic");
+import("system.entities");
 
 /**
  * object for writing the LogHistory based on audit-changes
@@ -68,7 +69,51 @@ LogHistoryExecutor.TRANSLATION_LANGUAGE = function()
 */
 LogHistoryExecutor.prototype.execute = function ()
 {
-    var references = {};
+    
+    if (this.affectedTable == "AB_LOGHISTORY")//this would cause an endless logging-loop otherwise
+        throw new Error(translate.withArguments("the \"%0\" table is configured to get logged but this is the logging-stoarge itself and cannot be monitored", ["AB_LOGHISTORY"]));
+    
+    var idvalue = this.idValue;
+    var description;
+    var references;
+    var extra = [];
+    extra["COMMUNICATION"] = {
+        IDs: ["CONTACT_ID", "MEDIUM_ID"],
+        RefTable: "CONTACT",
+        Description: translate.text("Communication", this.translationLanguage)
+    };
+    extra["AB_ATTRIBUTERELATION"] = {
+        IDs: ["OBJECT_ROWID", "AB_ATTRIBUTE_ID"],
+        Description: translate.text("Attribute", this.translationLanguage)
+    };
+    
+    [description, idvalue, references] = this.generateLogHistory(idvalue, extra,references );
+    
+    if (description == null) {
+        return null;
+    }
+    else if (description.length > 0)
+    {
+        for (let index in references)
+        {
+            if (references[index].id != "")
+            {
+                this._addEntryForInsert(references[index].table.trim(), references[index].id, this.affectedTable.trim(), idvalue, description);
+                idvalue = ""; 
+            }
+        }
+        if (idvalue !=  "") 
+        {
+            this._addEntryForInsert(this.affectedTable.trim(), idvalue, "", "", description);
+        }
+    }
+    this._insertLoghistEntry();
+    return null;
+};
+
+LogHistoryExecutor.prototype.generateLogHistory = function (pIdvalue, pExtra) 
+{
+     var references = {};
     var columnStructure = {};
     var primaryKey = "";
     var somethingTolog = false;
@@ -94,28 +139,13 @@ LogHistoryExecutor.prototype.execute = function ()
     if (!somethingTolog)
         return null;
     
-    if (this.affectedTable == "AB_LOGHISTORY")//this would cause an endless logging-loop otherwise
-        throw new Error(translate.withArguments("the \"%0\" table is configured to get logged but this is the logging-stoarge itself and cannot be monitored", ["AB_LOGHISTORY"]));
-    
-    var idvalue = this.idValue;
     var description = [];
-    var extra = [];
-    extra["COMMUNICATION"] = {
-        IDs: ["CONTACT_ID", "MEDIUM_ID"],
-        RefTable: "CONTACT",
-        Description: translate.text("Communication", this.translationLanguage)
-    };
-    extra["AB_ATTRIBUTERELATION"] = {
-        IDs: ["OBJECT_ROWID", "AB_ATTRIBUTE_ID"],
-        Description: translate.text("Attribute", this.translationLanguage)
-    };
-    
     var oldvalues = {};
     var newvalues = {};
 
-    if (extra[this.affectedTable])
+    if (pExtra[this.affectedTable])
     {
-        var conf = extra[this.affectedTable];
+        var conf = pExtra[this.affectedTable];
 
         for(let i = 0; i < this.columns.length; i++ )
         {
@@ -125,7 +155,7 @@ LogHistoryExecutor.prototype.execute = function ()
         if (this.sqlAction == 'D') newvalues = oldvalues;
         if ((this.sqlAction == 'D' || this.sqlAction == 'I') && newvalues[conf.IDs[1]])
         {
-            idvalue = newvalues[conf.IDs[0]];
+            pIdvalue = newvalues[conf.IDs[0]];
             var data = this._getDataForExtras(newvalues[conf.IDs[1]], newvalues);
             if (data[1])
                 description.push(translate.withArguments("%0 \"%1\"", [conf.Description + " " + data[0] + ":", data[1]], this.translationLanguage));
@@ -134,8 +164,8 @@ LogHistoryExecutor.prototype.execute = function ()
         }
         if (this.sqlAction == 'U')
         {
-            var ids = newSelect(conf.IDs).from(this.affectedTable).where([this.affectedTable, this.affectedTable + "ID"], idvalue).arrayRow();
-            idvalue = ids[0];
+            var ids = newSelect(conf.IDs).from(this.affectedTable).where([this.affectedTable, this.affectedTable + "ID"], pIdvalue).arrayRow();
+            pIdvalue = ids[0];
             var oldid =  ids[1];
             if (oldvalues[conf.IDs[1]]) oldid =  oldvalues[conf.IDs[1]];
             var olddata = this._getDataForExtras(oldid, oldvalues);
@@ -162,7 +192,7 @@ LogHistoryExecutor.prototype.execute = function ()
         {
             var entrytypePosition = this.columns.indexOf("ENTRYTYPE");
             if (entrytypePosition > -1 && this.newValues[entrytypePosition] == calendars.VEVENT)
-                return null;
+                return [null, null, null];
         }
 
         for (let i = 0; i < this.columns.length; i++)
@@ -214,22 +244,9 @@ LogHistoryExecutor.prototype.execute = function ()
         if (this.sqlAction == 'I') description = translate.withArguments("%0 added.", [description.join(",\n")], this.translationLanguage);
         else if (this.sqlAction == 'U') description = translate.withArguments("%0 modified.", [description.join(",\n")], this.translationLanguage);
         else if (this.sqlAction == 'D') description = translate.withArguments("%0 deleted.", [description.join(",\n")], this.translationLanguage);
-        for (let index in references)
-        {
-            if (references[index].id != "")
-            {
-                this._addEntryForInsert(references[index].table.trim(), references[index].id, this.affectedTable.trim(), idvalue, description);
-                idvalue = ""; 
-            }
-        }
-        if (idvalue !=  "") 
-        {
-            this._addEntryForInsert(this.affectedTable.trim(), idvalue, "", "", description);
-        }
     }
-    this._insertLoghistEntry();
-    return null;
-};
+    return [description, pIdvalue, references];
+}
 
 /*
 * adds an entry that shall be inserted into the AB_LOGHIST-table
@@ -252,11 +269,10 @@ LogHistoryExecutor.prototype._addEntryForInsert = function (pTablename, pTablena
             statements: []
             ,cols: ["LOGTYPE","TABLENAME","TABLENAMEID","DESCRIPTION", "SOURCE_TABLENAME", "SOURCE_TABLENAMEID", "DATE_NEW","USER_NEW", "AB_LOGHISTORYID"]
         };
-        this.toInsert.types = db.getColumnTypes("AB_LOGHISTORY", this.toInsert.cols);//load only once for better performance
     }
 
     var vals = [this.sqlAction, pTablename, pTablenameId, pDescription, pSourceTablename, pSourceTablenameId, this.timestamp, this.triggeringUser, util.getNewUUID()];
-    this.toInsert.statements.push(["AB_LOGHISTORY", this.toInsert.cols, this.toInsert.types, vals]);
+    this.toInsert.statements.push(["AB_LOGHISTORY", this.toInsert.cols, null, vals]);
 };
 
 /*
diff --git a/process/MSTeams_lib/MSTeams_lib.aod b/process/MSTeams_lib/MSTeams_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..8572851b599c49dd3565445c8acb5f2a5e7bc7b9
--- /dev/null
+++ b/process/MSTeams_lib/MSTeams_lib.aod
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>MSTeams_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/MSTeams_lib/process.js</process>
+  <alias>Data_alias</alias>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..98728cf49abc577ec16ae328b5fe1aec3c980ef2
--- /dev/null
+++ b/process/MSTeams_lib/process.js
@@ -0,0 +1,339 @@
+import("system.logging");
+import("system.neon");
+import("Util_lib");
+import("Communication_lib");
+import("system.translate");
+import("system.tools");
+import("Sql_lib");
+import("system.teams");
+import("system.project");
+
+/**
+ * Provides static functions for working with the MS-Teams integration
+ */
+function MSTeamsUtils () {}
+
+/**
+ * Checks if the MS Teams integration is enabled in the instance config
+ * 
+ * @return {Boolean} if Teams is enabled
+ */
+MSTeamsUtils.isTeamsEnabled = function ()
+{
+    return Utils.toBoolean(project.getInstanceConfigValue("teamsEnabled", "false"));
+}
+
+MSTeamsUtils.getImpersoAzureId = function ()
+{
+    return project.getInstanceConfigValue("teamsImpersoAzureId", "");
+}
+
+/**
+ * Contains the configuration for the possible contexts that can be used for teamLinks.
+ * 
+ * @return {Object} object with the context-names as keys and configuration-objects as values
+ */
+MSTeamsUtils.getTeamLinkContexts = function ()
+{
+    return {
+        "Salesproject": {singleLinkPerObject: true}
+    };
+}
+
+/**
+ * Opens a context for changing the linked team of the given object. This function also checks the configuration from
+ * MSTeamsUtils.getTeamLinkContexts to make sure the created teamLink is allowed
+ * 
+ * @param {String} pRowId       uid of the linked object
+ * @param {String} pObjectType  context of the linked object
+ */
+MSTeamsUtils.changeTeamsLink = function (pRowId, pObjectType)
+{
+    var linkConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType];
+    if (!linkConfig)
+        return;
+    
+    var existingTeamLinks = newSelect("MST_TEAMLINKID")
+        .from("MST_TEAMLINK")
+        .where("MST_TEAMLINK.OBJECT_ROWID", pRowId)
+        .and("MST_TEAMLINK.OBJECT_TYPE", pObjectType)
+        .arrayColumn();
+    var params = {
+        "ObjectRowId_param": pRowId,
+        "ObjectType_param": pObjectType
+    };
+    if (existingTeamLinks.length === 0 || !linkConfig.singleLinkPerObject)
+        neon.openContext("MSTTeamLink", null, null, neon.OPERATINGSTATE_NEW, params);
+    else
+        neon.openContext("MSTTeamLink", null, [existingTeamLinks[0]], neon.OPERATINGSTATE_EDIT, params);
+}
+
+/**
+ * Removes all teamLinks of the given object that are invalid.
+ * 
+ * @param {String} pRowId               uid of the linked object
+ * @param {String} pObjectType          context of the linked object
+ * @param {String} [pTeamLinkIdToKeep]  Only applies to contexts with 'singleLinkPerObject: true', if there are more than one teamLink, every
+ *                                      teamLink except one will be deleted. This param controls which one shouldn't be deleted.
+ */
+MSTeamsUtils.purgeCorruptTeamLinks = function (pRowId, pObjectType, pTeamLinkIdToKeep)
+{
+    var teamLinks = MSTeamsUtils.getLinkedTeams(pRowId, pObjectType).map(function (row)
+    {
+        return row.teamLinkId;
+    });
+    var linkConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType];
+    var removeLinks = [];
+    if (!linkConfig)
+        removeLinks = teamLinks;
+    else if (linkConfig.singleLinkPerObject && pTeamLinkIdToKeep)
+        removeLinks = teamLinks.filter(function (id) {return id != pTeamLinkIdToKeep;});
+    else if (linkConfig.singleLinkPerObject)
+        removeLinks = teamLinks.slice(1);
+    
+    if (removeLinks.length === 0)
+        return 0;
+    return newWhere("MST_TEAMLINK.MST_TEAMLINKID", removeLinks, SqlBuilder.IN()).deleteData();
+}
+
+/**
+ * Saves the given team in the database if it is not already present.
+ * 
+ * @param {Object} pTeam    An object containing the data of the team. Required properties:
+ *                          <ul>
+ *                              <li>teamId</li>
+ *                              <li>teamName</li>
+ *                          </ul>
+ *                          Optional properties (will be loaded automatically if not given):
+ *                          <ul>
+ *                              <li>generalChannelId</li>
+ *                              <li>webUrl</li>
+ *                          </ul>
+ * @return {Boolean} true if the team was inserted, false if it already exists
+ */
+MSTeamsUtils.insertTeamIfMissing = function (pTeam)
+{
+    var existsTeam = newSelect("count(*)")
+        .from("MST_TEAM")
+        .where("MST_TEAM.MST_TEAMID", pTeam.teamId)
+        .cell() > 0;
+    if (existsTeam)
+        return false;
+    
+    new SqlBuilder().insertFields({
+        "MST_TEAMID": pTeam.teamId,
+        "TEAMNAME": pTeam.teamName,
+        "GENERAL_CHANNELID": pTeam.generalChannelId || teams.getGeneralChannelId(pTeam.teamId),
+        "IS_ARCHIVED": 0,
+        "WEB_URL": pTeam.webUrl || teams.getWebUrl(pTeam.teamId)
+    }, "MST_TEAM");
+    
+    return true;
+}
+
+/**
+ * Creates a new teamLink.
+ * 
+ * @param {String} pTeamId      id of the team
+ * @param {String} pRowId       uid of the linked object
+ * @param {String} pObjectType  context of the linked object
+ */
+MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType)
+{
+    var currentTeamLink;
+    var contextConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType];
+    if (!contextConfig)
+        return;
+    
+    //if singleLinkPerObject is true, only one team link can be created for the given objectRowId
+    if (contextConfig.singleLinkPerObject)
+    {
+        currentTeamLink = MSTeamsUtils.getLinkedTeam(pRowId, pObjectType);
+    }
+    if (currentTeamLink)
+    {
+        newWhere("MST_TEAMLINK.MST_TEAMLINKID", currentTeamLink.teamLinkId).updateFields({
+            "MST_TEAM_ID": pTeamId
+        });
+    }
+    else
+    {
+        new SqlBuilder().insertFields({
+            "MST_TEAM_ID": pTeamId,
+            "OBJECT_ROWID": pRowId,
+            "OBJECT_TYPE": pObjectType
+        }, "MST_TEAMLINK", "MST_TEAMLINKID");
+    }
+}
+
+/**
+ * Gets all linked teams of an object
+ * 
+ * @param {String} pRowId       uid of the linked object
+ * @param {String} pObjectType  context of the linked object
+ * @return {Object[]} array of {teamLinkId, teamId}
+ */
+MSTeamsUtils.getLinkedTeams = function (pRowId, pObjectType)
+{
+    return newSelect(["MST_TEAMLINKID", "MST_TEAM_ID"])
+        .from("MST_TEAMLINK")
+        .where("MST_TEAMLINK.OBJECT_ROWID", pRowId)
+        .andIfSet("MST_TEAMLINK.OBJECT_TYPE", pObjectType)
+        .orderBy("MST_TEAMLINKID")
+        .table()
+        .map(function ([linkId, teamId])
+        {
+            return {
+                teamLinkId: linkId,
+                teamId: teamId
+            };
+        });
+    
+}
+
+/**
+ * Gets the linked team of an object
+ * 
+ * @param {String} pRowId       uid of the linked object
+ * @param {String} pObjectType  context of the linked object
+ * @return {String} id of the linked team, or null if ther is none
+ */
+MSTeamsUtils.getLinkedTeam = function (pRowId, pObjectType)
+{
+    var linkedTeams = MSTeamsUtils.getLinkedTeams(pRowId, pObjectType);
+    if (linkedTeams.length === 0)
+        return null;
+    return linkedTeams[0].teamId;
+}
+
+/**
+ * Loads the contactIds associated with the given azureIds
+ * 
+ * @param {String[]} pAzureIds      azureIds of the users
+ * @return {Object} object with the azureIds as keys and the corresponding contactIds as values
+ */
+MSTeamsUtils.getContactIdsByAzureIds = function (pAzureIds)
+{
+    if (pAzureIds.length === 0)
+        return {};
+    
+    var teamsUsers = tools.getUsersByAttribute(tools.TEAMS_AZUREID, pAzureIds);
+    var contactIdMap = {};
+    teamsUsers.forEach(function (user)
+    {
+        var azureId = user[tools.PARAMS][tools.TEAMS_AZUREID];
+        contactIdMap[azureId] = user[tools.PARAMS][tools.CONTACTID];
+    });
+    return contactIdMap;
+}
+
+/**
+ * Generates a sql expression to resolve the roles in a team for the contacts
+ * 
+ * @param {String} pTeamId          id of the team
+ * @param {String} pContactIdField  sql field that contains the contactId that is used for selecting the role
+ * @return {String} sql expression
+ */
+MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField)
+{
+    if (!pTeamId)
+        return "''";
+    
+    try {
+        var ownerIds = Object.keys(teams.getAllOwners(pTeamId));
+        var ownerContactIds = MSTeamsUtils.getContactIdsByAzureIds(ownerIds);
+        ownerContactIds = Utils.objectValues(ownerContactIds);
+
+        var members = teams.getAllMembers(pTeamId);
+        var memberIds = Object.keys(members);
+        var memberContactIds = MSTeamsUtils.getContactIdsByAzureIds(memberIds);
+        memberContactIds = Utils.objectValues(memberContactIds);
+    } 
+    catch (err)
+    {
+        logging.log(err, logging.ERROR);
+        return "''";
+    }
+    
+    if (ownerContactIds.length === 0 && memberContactIds.length === 0)
+        return "''";
+    
+    var caseWhen = SqlBuilder.caseStatement();
+    if (ownerContactIds.length !== 0)
+        caseWhen.when(pContactIdField, ownerContactIds, SqlBuilder.IN()).thenString(translate.text("Owner"));
+    if (memberContactIds.length !== 0)
+        caseWhen.when(pContactIdField, memberContactIds, SqlBuilder.IN()).thenString(translate.text("Member"));
+    
+    //the SqlBuilder.IN() can't be used here because of the sub-sql string for the email
+    caseWhen.when("(" + CommUtil.getStandardSubSqlMail() + ") in ('" + Utils.objectValues(members).join("', '") + "')")
+        .thenString(translate.text("Guest")); 
+    
+    return caseWhen.elseString("").toString();
+}
+
+/**
+ * Checks if the user is an owner of the team
+ * 
+ * @param {String} pTeamId                  the id of the team
+ * @param {String} [pUserId=current user]   the userId of the user
+ * @return {Boolean} true if the user is an owner
+ */
+MSTeamsUtils.isUserTeamOwner = function (pTeamId, pUserId)
+{
+    var user;
+    if (!pUserId)
+        user = tools.getCurrentUser();
+    else
+        user = tools.getUserByAttribute(tools.NAME, pUserId);
+    
+    var azureId = user ? user[tools.PARAMS][tools.TEAMS_AZUREID] : null;
+    if (!azureId)
+        return false;
+    return azureId in teams.getAllOwners(pTeamId);
+}
+
+/**
+ * Loads the properties of the team from the database.
+ * 
+ * @param {String} pTeamId      the id of the team
+ * @return {Object} Object with these properties:
+ *  <ul>
+ *      <li>teamName</li>
+ *      <li>webUrl</li>
+ *      <li>serviceUrl</li>
+ *      <li>isArchived</li>
+ *      <li>generalChannelId</li>
+ *  </ul>
+ *  If the team was not found, null is returned.
+ */
+MSTeamsUtils.getTeamInfo = function (pTeamId)
+{
+    var teamInfo = new SqlBuilder("Data_alias")
+        .select(["TEAMNAME", "WEB_URL", "SERVICE_URL", "IS_ARCHIVED", "GENERAL_CHANNELID"])
+        .from("MST_TEAM")
+        .whereIfSet("MST_TEAM.MST_TEAMID", pTeamId)
+        .arrayRow(true);
+    
+    if (teamInfo.length === 0)
+        return null;
+    
+    return {
+        teamName: teamInfo[0],
+        webUrl: teamInfo[1],
+        serviceUrl: teamInfo[2],
+        isArchived: Utils.toBoolean(teamInfo[3]),
+        generalChannelId: teamInfo[4]
+    };
+}
+
+/**
+ * Checks if the team is active
+ * 
+ * @param {String} pTeamId      the id of the team
+ * @return {Boolean} true, if the team exists and is not archived
+ */
+MSTeamsUtils.isTeamActive = function (pTeamId)
+{
+    var teamInfo = MSTeamsUtils.getTeamInfo(pTeamId);
+    return teamInfo != null && !teamInfo.isArchived;
+}
\ No newline at end of file
diff --git a/process/MimeType_lib/MimeType_lib.aod b/process/MimeType_lib/MimeType_lib.aod
index 01ad226f611bd45cacf2aca4b7ad0649a439afea..dbc01a017d0133e40fe7301c12108f02e232ccf2 100644
--- a/process/MimeType_lib/MimeType_lib.aod
+++ b/process/MimeType_lib/MimeType_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>MimeType_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/MimeType_lib/process.js</process>
diff --git a/process/Money_lib/Money_lib.aod b/process/Money_lib/Money_lib.aod
index 9c27e1c6debbf49bc099056bddd3fe16f4243480..5232420c51a99d8a74ec92dfb5667b5f564993dc 100644
--- a/process/Money_lib/Money_lib.aod
+++ b/process/Money_lib/Money_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Money_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Money_lib/process.js</process>
diff --git a/process/Neon_lib/Neon_lib.aod b/process/Neon_lib/Neon_lib.aod
index ace4a1e8ec19c194c1d9e00326013f3656cd35b4..0a51cffca155b7298f9f83a18d71bfca25884031 100644
--- a/process/Neon_lib/Neon_lib.aod
+++ b/process/Neon_lib/Neon_lib.aod
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Neon_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/process/Neon_lib/documentation.adoc</documentation>
   <process>%aditoprj%/process/Neon_lib/process.js</process>
   <variants>
     <element>LIBRARY</element>
diff --git a/others/guide/how to copy objects with subitems.adoc b/process/Neon_lib/documentation.adoc
similarity index 100%
rename from others/guide/how to copy objects with subitems.adoc
rename to process/Neon_lib/documentation.adoc
diff --git a/process/Neon_lib/process.js b/process/Neon_lib/process.js
index 4d7d910d5d98598a85aec882756dd42d87cc0693..18402adc55753b73d0fe427c881e0b50e9333cfa 100644
--- a/process/Neon_lib/process.js
+++ b/process/Neon_lib/process.js
@@ -154,7 +154,7 @@ CopyModuleUtils.copyModule = function(pInputMapping)
         //root mapping
         var rootModule = Object.keys(pInputMapping)[0];
         var ModuleMapping = _ModuleMapping(rootModule, pInputMapping[rootModule]);
-        var ModuleData = _getModuleData(rootModule, pInputMapping[rootModule].condition);
+        var ModuleData = _getModuleData(rootModule, pInputMapping[rootModule].condition, pInputMapping[rootModule].order);
         ModulesMapping[rootModule] = ModuleMapping;
 
         for(var row in ModuleData)
@@ -171,15 +171,19 @@ CopyModuleUtils.copyModule = function(pInputMapping)
 
 
         //delivers stored data for module in Database with condition
-        function _getModuleData(pModule, pCondition)
+        function _getModuleData(pModule, pCondition, pOrder)
         {
             if(pModule == undefined)    return {};
 
             var ModuleColumnsStructure = AliasDefinitionStructure.tables[pModule].columns;
             var cols = Object.keys(ModuleColumnsStructure);
             var dataQuery = newSelect(cols).from(pModule);
+            
             if(pCondition != undefined)
-                dataQuery.where(pCondition)
+                dataQuery.where(pCondition);
+            
+            if(pOrder != undefined)
+                dataQuery.orderBy(pOrder);
 
             var dbData = dataQuery.table();
 
diff --git a/process/NewsSystem_lib/NewsSystem_lib.aod b/process/NewsSystem_lib/NewsSystem_lib.aod
index f4907ecd213576e621efc14f752d3cfcf07c539e..8c226c330e0ee283d37c6ea4421bc4e6a12d0b02 100644
--- a/process/NewsSystem_lib/NewsSystem_lib.aod
+++ b/process/NewsSystem_lib/NewsSystem_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>NewsSystem_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/NewsSystem_lib/process.js</process>
diff --git a/process/Notification_lib/Notification_lib.aod b/process/Notification_lib/Notification_lib.aod
index 41cd1071d9d966bb2f65b117d6604310ee061511..28beacbb0d89e042930c765435f9356d30159cd6 100644
--- a/process/Notification_lib/Notification_lib.aod
+++ b/process/Notification_lib/Notification_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Notification_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Notification_lib/process.js</process>
diff --git a/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod b/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod
index fe86c4d1f97ec9f9611d761f65c14d51c27e3f02..65ad5b0b0b220dad46352ae8b2c3e5abb8f2a7f7 100644
--- a/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod
+++ b/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ObjectRelationTypeRegistry_basic</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/ObjectRelationTypeRegistry_basic/process.js</process>
diff --git a/process/ObjectRelation_lib/ObjectRelation_lib.aod b/process/ObjectRelation_lib/ObjectRelation_lib.aod
index e5a4d95eb356b4bf2900d50e7b7a62ed22355697..b48e1daede58b2cf8d4d1abee0a5bc749e4088a8 100644
--- a/process/ObjectRelation_lib/ObjectRelation_lib.aod
+++ b/process/ObjectRelation_lib/ObjectRelation_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ObjectRelation_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/ObjectRelation_lib/process.js</process>
diff --git a/process/Observation_lib/Observation_lib.aod b/process/Observation_lib/Observation_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d7972e1705c899721f8c52dde5c238d3b90ba72c
--- /dev/null
+++ b/process/Observation_lib/Observation_lib.aod
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>Observation_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/Observation_lib/process.js</process>
+  <alias>Data_alias</alias>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/Observation_lib/process.js b/process/Observation_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..1cbc373cb581ed7551da0ca9158505846641936f
--- /dev/null
+++ b/process/Observation_lib/process.js
@@ -0,0 +1,712 @@
+import("KeywordRegistry_basic");
+import("system.logging");
+import("system.text");
+import("system.project");
+import("system.vars");
+import("Employee_lib");
+import("system.workflow");
+import("system.translate");
+import("system.tools");
+import("Context_lib");
+import("system.entities");
+import("Sql_lib");
+import("Workflow_lib");
+import("system.notification");
+import("Dependency_lib");
+import("system.tools");
+import("system.datetime");
+import("system.db");
+import("system.favorite");
+
+function Observation(){}
+
+Observation.OBJECT_TYPE = function () {
+    return "OBJECT_TYPE_Dependency";
+}
+Observation.OBJECT_IDs = function () {
+    return "OBJECT_IDs_Dependency";
+}
+Observation.PRIO = function () {
+    return "PRIORITY";
+}
+Observation.CONTENTTITLE = function () {
+    return "OBJECT_CONTENTTITLE";
+}
+
+/**
+ * If the variables have not yet been parsed to an Object, they will now.
+ * 
+ * @param {Object} [pVariables] the Variables which were set in the Workflow_lib
+ * @param {String} [pVariable] the name of the variable to be formatted
+ * @return {Void}
+ */
+Observation.parseVariableIfNeed = function(pVariables,pVariable)
+{
+    if (pVariables[pVariable] && typeof pVariables[pVariable] !== 'object' && pVariables[pVariable] !== null)
+        pVariables[pVariable] = JSON.parse(pVariables[pVariable]);
+}
+
+/**
+ * Checks the observations for the specific changed data set and then forwards them to the Observation._notifiyUsers() function.
+ * 
+ * @param {Object} [pVariables] the Variables which were set in the Workflow_lib
+ * @param {String} [pObservationId] the id of the parent observation. This variable is required for the recursion.
+ * 
+ * @return {Void}
+ */
+Observation.checkObservation = function(pVariables, pObservationId)
+{
+    if (pVariables[WorkflowVariables.TRIGGER()])
+    {
+        Observation.parseVariableIfNeed(pVariables, WorkflowVariables.CHANGED_ROWS());
+        Observation.parseVariableIfNeed(pVariables, WorkflowVariables.CHANGED_ROWS_TYPES());
+        Observation.parseVariableIfNeed(pVariables, WorkflowVariables.ROWDATA());
+        Observation.parseVariableIfNeed(pVariables, WorkflowVariables.INITIAL_ROWDATA());
+        
+        var observers = {};
+        var observations = newSelect(["OBSERVATION.OBJECT_ID", "OBSERVATION.OBJECT_FILTER" ,"OBSERVATION.OBSERVER", "OBSERVATION.OBJECT_FIELD", "O.OBJECT_TYPE", "OBSERVATION.OBSERVATION_ID", "OBSERVATION.NOTIFICATION_PRIO"])
+        .from("OBSERVATION")
+        .leftJoin("OBSERVATION", "OBSERVATION.OBSERVATION_ID = O.OBSERVATIONID", "O")
+        .where(
+            newWhere("OBSERVATION.OBJECT_ID", pVariables[WorkflowVariables.TARGET_ID()])
+            .or("OBSERVATION.OBJECT_ID IS NULL"))
+        .and("OBSERVATION.OBJECT_TYPE", pVariables[WorkflowVariables.TARGET_CONTEXT()]);
+        
+        if (pObservationId)
+            observations.andIfSet("OBSERVATION.OBSERVATIONID", pObservationId)
+        else
+            observations.and("OBSERVATION." + pVariables[WorkflowVariables.TRIGGER()], "1");
+        
+        observations = observations.table();
+        
+        for (let i = 0; i < observations.length; i++)
+        {
+            var observation = observations[i];
+            var filterResult = 0;
+            
+            if (!observation[0] && observation[1] || pObservationId)
+            {
+                var config = entities.createConfigForLoadingRows()
+                .uids([pVariables[WorkflowVariables.TARGET_ID()]])
+                .entity(ContextUtils.getEntity(pVariables[WorkflowVariables.TARGET_CONTEXT()]))
+                .ignorePermissions(true);
+                
+                if (observation[1])
+                    config.filter(JSON.stringify(JSON.parse(observation[1]).filter));
+                
+                try 
+                {
+                    filterResult = entities.getRows(config.fields(["#CONTENTTITLE"]))[0]["#CONTENTTITLE"];
+                }
+                catch (e)
+                {
+                    logging.log(e);
+                    filterResult = null;
+                }
+            }
+            
+            if (pObservationId && ((observation[0] && !observation[1]) || filterResult))
+            {
+                return filterResult;
+            }
+            
+            if ((observation[0] && !observation[1]) || filterResult)
+            {
+                // exclude the user who made the change.
+                if (pVariables[WorkflowVariables.EVENT_USER()] !== observation[2]) 
+                {
+                    var observeFileds = {};
+                    text.decodeMS(observation[3]).forEach(function (observeFiled) {
+                        let field = text.decodeMS(observeFiled);
+                        let fieldNames = text.decodeMS(field[0]);
+                        let displayValueField = "#COLUMNEXP_____" + fieldNames[1] + ".displayValue";
+                    
+                        let observedField = pVariables[WorkflowVariables.ROWDATA()][displayValueField] ? displayValueField : null;
+                        observeFileds[fieldNames[0]] = [field[1], observedField];
+                    });
+                
+                    pVariables[WorkflowVariables.CHANGED_ROWS()].forEach(function (recordField) {
+                        if (observeFileds[recordField])
+                        {
+                            if (!observers[observation[2]])
+                                observers[observation[2]] = {};
+                        
+                            if (observeFileds[recordField][1])
+                                observers[observation[2]][observeFileds[recordField][1]] = observeFileds[recordField][0];
+                            else 
+                                observers[observation[2]][recordField] = observeFileds[recordField][0];
+                        }
+                        
+                    });
+                }
+            }
+            else if (pVariables[WorkflowVariables.TRIGGER()] == WorkflowSignalSender.EVENT_DELETE())
+            {
+                observers[observation[2]] = {};
+            }
+            if (observers[observation[2]])
+            {
+                observers[observation[2]][Observation.PRIO()] = observation[6];
+            
+                if (observation[4] && !pObservationId) 
+                {
+                    observers[observation[2]][Observation.OBJECT_TYPE()] = observation[4];
+                    observers[observation[2]][Observation.OBJECT_IDs()] = {};
+                
+                    var dependentIds = 
+                    Dependency.mapping()[ContextUtils.getEntity(pVariables[WorkflowVariables.TARGET_CONTEXT()])][ContextUtils.getEntity(observation[4])]
+                    .getUIDsfn(pVariables[WorkflowVariables.ROWDATA()], pVariables[WorkflowVariables.INITIAL_ROWDATA()]);
+                
+                    var dependentCheckVars = {}
+                    dependentCheckVars[WorkflowVariables.TRIGGER()] = pVariables[WorkflowVariables.TRIGGER()];
+                    dependentCheckVars[WorkflowVariables.CHANGED_ROWS()] = {};
+                    dependentCheckVars[WorkflowVariables.ROWDATA()] = {};
+                    dependentCheckVars[WorkflowVariables.TARGET_CONTEXT()] = observation[4];
+                    dependentCheckVars[WorkflowVariables.EVENT_USER()] = observation[2];
+                    for (let index = 0; index < dependentIds.length; index++)
+                    {
+                        dependentCheckVars[WorkflowVariables.TARGET_ID()] = dependentIds[index];
+                        var contentTitle = Observation.checkObservation(dependentCheckVars, observation[5]);
+                        if (contentTitle){ // Check Dependent
+                            observers[observation[2]][Observation.OBJECT_IDs()][dependentIds[index]] = contentTitle;
+                        }
+                    }
+                }
+            }
+            
+        }
+        
+        if (pObservationId)
+        {
+            return null;
+        }
+        
+        Observation._notifiyUsers(pVariables, observers);
+    }
+    return null;
+}
+
+/**
+ * Handle the Notifications for the given Observers and 
+ * assembles the individual notification for each user
+ * 
+ * @param {Object} [pVariables] the Variables which were set in the Workflow_lib
+ * @param {Object} [pObservers] the Observers with the observed fields
+ */
+Observation._notifiyUsers = function (pVariables, pObservers)
+{
+    var observers = Object.keys(pObservers)
+    if (pObservers && observers.length != 0 && pVariables)
+    {
+        var user = tools.getUserByAttribute(tools.NAME, pVariables[WorkflowVariables.EVENT_USER()], tools.PROFILE_DEFAULT);
+        var notificationCaption;
+        var filteredVariables = {
+            notificationCaption : translate.text(notificationCaption), 
+            notificationDescription : (user.params.firstname + " " + user.params.lastname).trim() + " " + translate.text("has") + " ",
+            notificationUser : JSON.stringify(observers),
+            notificationType : "ObservationNotification"
+        }
+        
+        observers.forEach(function (pObserver) {
+            // If there is a OBJECT_TYPE, this is a dependency observation
+            if (pObservers[pObserver][Observation.OBJECT_TYPE()])
+            {
+                filteredVariables.notificationCaption = pVariables[WorkflowVariables.TRIGGER()];
+                var context = pObservers[pObserver][Observation.OBJECT_TYPE()];
+                
+                for (var targetId in pObservers[pObserver][Observation.OBJECT_IDs()])
+                {
+                    filteredVariables.notificationSubcategory = pObservers[pObserver][Observation.OBJECT_IDs()][targetId]
+                    Observation._notification(
+                        pVariables, 
+                        filteredVariables, 
+                        pObservers,
+                        pObserver, 
+                        context,
+                        targetId);
+                }
+            }
+            else 
+            {
+                filteredVariables.notificationCaption = pVariables[WorkflowVariables.TRIGGER()];
+                Observation._notification(
+                    pVariables, 
+                    filteredVariables, 
+                    pObservers,
+                    pObserver, 
+                    pVariables[WorkflowVariables.TARGET_CONTEXT()], 
+                    pVariables[WorkflowVariables.TARGET_ID()]);
+                
+            }
+            
+        });
+    }
+}
+
+/**
+ * Handle the Notifications for the given Observers and 
+ * assembles the individual notification for each user.
+ * 
+ * @param {Object} [pVariables] the Variables which were set in the Workflow_lib.
+ * @param {Object} [pFilteredVariables] Only for the notification used variables.
+ * @param {Object} [pObservers] the Observers with the observed fields.
+ * @param {Object} [pObserver] the current observer in the loop.
+ * @param {Object} [pContext] the context from which the change is based.
+ * @param {Object} [pTargetId] the id of the record from which the change is based.
+ */
+Observation._notification = function (pVariables, pFilteredVariables, pObservers, pObserver, pContext, pTargetId) 
+{
+    pFilteredVariables.notificationPriority =  pObservers[pObserver][Observation.PRIO()];
+    pFilteredVariables.notificationCaption = pVariables[WorkflowVariables.CONTENTTITLE()];
+    pFilteredVariables.notificationAffectedUID = pTargetId;
+    pFilteredVariables.notificationAffectedContext = pContext;
+    var isfirstField = true;
+    switch (pVariables[WorkflowVariables.TRIGGER()])
+    {
+        case WorkflowSignalSender.EVENT_INSERT():
+            pFilteredVariables.notificationDescription += translate.text("inserted") + ":";
+            break;
+        case WorkflowSignalSender.EVENT_UPDATE():
+            pFilteredVariables.notificationDescription += translate.text("changed") + ":";
+            let subcategories = []
+            if (pFilteredVariables.notificationSubcategory)
+                subcategories.push(pFilteredVariables.notificationSubcategory);
+                
+            notification.getUserNotifications(pObserver, [notification.STATE_SEEN, notification.STATE_UNSEEN], subcategories).forEach(function (pNotification) {
+                if (pNotification.caption == pFilteredVariables.notificationCaption && 
+                    pNotification.linkinfo == text.encodeMS([pContext, pTargetId]) &&
+                    pNotification.type == pFilteredVariables.notificationType && 
+                    !pNotification.description.endsWith("....there is more data available"))
+                    {
+                    isfirstField = false;
+                    pFilteredVariables.notificationContentId = pNotification.contentid;
+                    pFilteredVariables.notificationDescription = pNotification.description;
+                }
+            });
+            break;
+        case WorkflowSignalSender.EVENT_DELETE():
+            pFilteredVariables.notificationDescription += translate.text(pVariables[WorkflowVariables.TARGET_CONTEXT()]) + " \"" + pVariables[WorkflowVariables.CONTENTTITLE()] + "\" ";
+            pFilteredVariables.notificationDescription += translate.text("deleted") + ".";
+            Observation._createNotification(pFilteredVariables);
+            return;
+    }
+    
+    pFilteredVariables.notificationUser = pObserver;
+    var isNewDescription = false;
+    if (pFilteredVariables != {}){
+        var rowData = pVariables[WorkflowVariables.ROWDATA()];
+        Object.keys(pObservers[pObserver]).forEach(function (field) {
+            if (pVariables[WorkflowVariables.CHANGED_ROWS()].indexOf(field) > -1) 
+            {
+                var formatedFieldValue = Observation.formatFieldValue(rowData,pVariables[WorkflowVariables.CHANGED_ROWS_TYPES()], field);
+                pFilteredVariables.notificationDescription += " " +(isfirstField ? "" : translate.text("and"))+ " " + 
+                pObservers[pObserver][field] + " " +  translate.text("was set to") + " \"" + formatedFieldValue + "\"";
+            
+                if (pFilteredVariables.notificationDescription.length > 980) 
+                {
+                    pFilteredVariables.notificationDescription.slice(0, 980)
+                    pFilteredVariables.notificationDescription += "....there is more data available";
+                    return;
+                }
+                
+                isfirstField = false;
+                isNewDescription = true;
+            }
+        });
+    }
+    
+    if (isNewDescription) 
+    {
+        Observation._createNotification(pFilteredVariables);
+    }
+        
+}
+
+/**
+ * Create The Notifiction for the users.
+ * 
+ * @param {Object} [variables] the variables that are needed to notify users.
+ * @return {Void}
+ */
+Observation._createNotification = function (variables)
+{
+    variables.notificationDescription = variables.notificationDescription.toString();
+    if (false) // WorkflowUtils.engineIsEnabled()
+    {
+        checkObservation.signalEventReceived("Observation", variables);
+    }
+    else 
+    {
+        var config = notification.createConfig()
+        .notificationType(variables.notificationType || "WorkflowNotification")
+        .caption(variables.notificationCaption || "")
+        .description(variables.notificationDescription || "");
+
+        try {
+            config.addUsersWithIds(JSON.parse(variables.notificationUser));
+        } catch (e) { // Throw an exeption when the variable can't parse to an JSON-Object. 
+            config.addUsersWithIds([variables.notificationUser || variables.USER_ID])
+        }
+
+        var prio;
+        switch (variables.notificationPriority){
+            case $KeywordRegistry.notificationPriority$none:
+                prio = notification.PRIO_NONE
+                break;
+            case $KeywordRegistry.notificationPriority$low():
+                prio = notification.PRIO_LOW
+                break;
+            case $KeywordRegistry.notificationPriority$hight():
+                prio = notification.PRIO_HIGH
+                break;
+            case $KeywordRegistry.notificationPriority$max():
+                prio = notification.PRIO_MAX
+                break;
+            case $KeywordRegistry.notificationPriority$normal():
+            default:
+                prio = notification.PRIO_NORMAL
+                break;
+        }
+        config.forcedPriority(prio);
+
+        if (variables.notificationIcon)
+            config.imageInfo(variables.notificationIcon);
+        if (variables.notificationSubcategory)
+            config.notificationSubCategory(variables.notificationSubcategory);
+
+        if (variables.notificationAffectedContext && variables.notificationAffectedUID)
+            config.linkInfo(text.encodeMS([variables.notificationAffectedContext, variables.notificationAffectedUID]));
+
+        if (variables.notificationContentId)
+            config.contentId(variables.notificationContentId).remindAgainOnNewContent(true);
+    
+        notification.addNotificationWith(config);
+    }
+    
+}
+
+/**
+ * Formatting of the vale of the field from the pRowData using the associated type.
+ * 
+ * @param {Object} [pRowData] the RowData which were changed.
+ * @param {Object} [pTypes] the types of the columns of the changed rows.
+ * @param {String} [pField] the field whose value is to be formatted.
+ * @return {String} the formatted value
+ */
+Observation.formatFieldValue = function (pRowData, pTypes, pField)
+{
+    switch (pTypes[pField]) 
+    {
+        case "DATE":
+            return datetime.toDate(pRowData[pField], translate.text("dd.MM.yyyy"), "Europe/Berlin");
+        default :
+            return pRowData[pField]
+    }
+}
+
+/**
+ * This function is called in every observation action and
+ * saves the data required for the observation, if this is not already available.
+ * 
+ * @return {Void}
+ */
+Observation.insertAction = function ()
+{
+    let contextID = ContextUtils.getCurrentContextId();
+    let observer = EmployeeUtils.getCurrentUserId();
+    let rowCount = newSelect("COUNT(*)")
+    .from("OBSERVATION")
+    .where("OBSERVATION.OBJECT_TYPE", contextID)
+    .and("OBSERVATION.OBSERVER", observer);
+
+    var fields = {
+        "OBJECT_TYPE" : contextID,
+        "OBSERVER" : observer,
+        "OBJECT_FIELD" : Observation.getAllFieldValue(contextID).toString()
+    }
+
+    let createRowConfig = entities.createConfigForAddingRows()
+    .entity("Observation_entity");
+    
+    let selectedUIDs = vars.get("$sys.selection");
+
+    if (selectedUIDs.length){
+        selectedUIDs.forEach(function (uid)
+        {
+            let tempRowCount = rowCount.copy()
+            .and("OBSERVATION.OBJECT_ID", uid);
+        
+            if (tempRowCount.cell() == 0)
+            {
+                fields.OBJECT_ID = uid;
+                entities.createRow(createRowConfig.fieldValues(fields));
+            }
+        
+        });
+    } else {
+        let filter = Observation.getContextFilter(contextID,vars.get("$sys.filter").filter);
+        
+        rowCount.and("OBSERVATION.OBJECT_FILTER", filter, SqlBuilder.LIKE());
+        if (rowCount.cell() == 0)
+        {
+            fields.OBJECT_FILTER = filter;
+            entities.createRow(createRowConfig.fieldValues(fields));
+        }
+    }
+}
+
+/**
+ * This function is called in every cancel observation action and
+ * deletes the data required for the observation, if this is not already available.
+ * 
+ * @return {Void}
+ */
+Observation.cancelAction = function () 
+{
+    let contextID = ContextUtils.getCurrentContextId();
+    let observer = EmployeeUtils.getCurrentUserId();
+    let selectedUIDs = vars.get("$sys.selection");
+    let cond = newWhere("OBSERVATION.OBJECT_TYPE", contextID)
+    .and("OBSERVATION.OBSERVER", observer);
+
+    if (selectedUIDs.length){
+        cond.and("OBSERVATION.OBJECT_ID", selectedUIDs, SqlBuilder.IN())
+        .deleteData(true, "OBSERVATION");
+    } else {
+        let filter = Observation.getContextFilter(contextID,vars.get("$sys.filter").filter);
+        
+        cond.and("OBSERVATION.OBJECT_FILTER", filter, SqlBuilder.LIKE())
+        .deleteData(true, "OBSERVATION");
+    }
+}
+
+
+/**
+ * Returns the title of the cancel observation action depending on the count of UIDs
+ * 
+ * @param {Array} [pUIDs] selectedUids
+ * @return {String} Title
+ */
+Observation.cancelActionTitle = function (pUIDs) 
+{
+    let UIDcount = pUIDs.length;
+
+    if (UIDcount == 1)
+    {
+        return translate.text("Cancel ID Observation");
+    }
+    else if (UIDcount > 1)
+    {
+        return translate.text("Cancel IDs Observations") ;
+    }
+    else
+    {
+        return translate.text("Cancel Filter Observation");
+    }
+}
+
+/**
+ * Returns the title of the observation action depending on the count of UIDs
+ * 
+ * @param {Array} [pUIDs] selectedUids
+ * @return {String} Title
+ */
+Observation.observeActionTitle = function (pUIDs) 
+{
+    let UIDcount = pUIDs.length;
+
+    if (UIDcount == 1)
+    {
+        return translate.text("Observe ID");
+    }
+    else if (UIDcount > 1)
+    {
+        return translate.text("Observe IDs");
+    }
+    else
+    {
+        return translate.text("Observe Filter");
+    }
+
+}
+
+/**
+ * Calculates the number of observation records of the current context and logged-in users.
+ * 
+ * @return {Int} Count of records
+ */
+Observation.countObservations = function () 
+{
+    let contextID = ContextUtils.getCurrentContextId();
+    let observer = EmployeeUtils.getCurrentUserId();
+    let selectedUIDs = vars.get("$sys.selection").filter(function (el) {
+        return el;
+    });
+    let rowCount =  newSelect("COUNT(*)")
+    .from("OBSERVATION")
+    .where("OBSERVATION.OBJECT_TYPE", contextID)
+    .and("OBSERVATION.OBSERVER", observer);
+    
+    if (selectedUIDs && selectedUIDs.length){
+        rowCount.and("OBSERVATION.OBJECT_ID", selectedUIDs, SqlBuilder.IN());
+    } else {
+        rowCount.and("OBSERVATION.OBJECT_FILTER", Observation.getContextFilter(contextID,vars.get("$sys.filter").filter), SqlBuilder.LIKE());
+    } 
+    return parseInt(rowCount.cell());
+}
+
+/**
+ * Returns an object with the entity and filter. 
+ * If filter or entity are not set, they are set to an empty filter and the current entity.
+ * 
+ * @param {String} [pEntity]
+ * @param {Object} [pFilter]
+ * @return {Object} Object in Format: {"filter": {"type":"group","operator":"AND","childs":[...]}, "entity": "Entity_entity"}
+ */
+Observation.getEntityFilter = function (pEntity, pFilter) 
+{
+    if (!pEntity)
+        pEntity = ContextUtils.getEntity(ContextUtils.getCurrentContextId());
+    if (!pFilter)
+        pFilter = {
+            "type":"group",
+            "operator":"AND",
+            "childs":[]
+        }
+    
+    return JSON.stringify({
+        "filter":pFilter,
+        "entity":pEntity
+    });
+}
+
+/**
+ * Returns an object with the entity and filter. 
+ * If filter or context are not set, they are set to an empty filter and the context of the current entity.
+ * 
+ * @param {String} [pContext]
+ * @param {Object} [pFilter]
+ * @return {Object} Object in Format: {"filter": {"type":"group","operator":"AND","childs":[...]}, "entity": "Entity_entity"}
+ */
+Observation.getContextFilter = function (pContext, pFilter)
+{
+    return Observation.getEntityFilter(ContextUtils.getEntity(pContext), pFilter);
+}
+
+/**
+ * Gives all possible fields which can be observed. 
+ * 
+ * @param {String} [pType] the Type or the context name
+ * @return {Array} this contains all the possible fields.
+ */
+Observation.getAllPosibleFields = function (pType) 
+{
+    if (pType) 
+    {
+        let entity = ContextUtils.getEntity(pType);
+        var resultFields = [];
+        var fields = project.getEntityStructure(entity).fields;
+        var rcm = project.getRecordContainerModel(entity);
+        var recordFieldMappings = {};
+        var tables = {};
+        var excludeFields = ["DATE_NEW", "DATE_EDIT", "USER_NEW", "USER_EDIT"];
+        
+        if (Dependency.excludedFields()[entity])
+            excludeFields = excludeFields.concat(Dependency.excludedFields()[entity]);
+        
+        if (rcm.type == project.RECORDCONTAINERTYPE_DB){
+            for (var index in rcm.linkInformation)
+            {
+                var table = rcm.linkInformation[index];
+                if (!table.readonly)
+                {
+                    tables[table.tableName] = true;
+                    excludeFields.push(table.primaryKey);
+                }
+            }
+        }
+        
+        for (var index1 in rcm.recordFieldMappings)
+        {
+            var mapping = rcm.recordFieldMappings[index1];
+            let isInFormat = true;
+            let mappingID = "";
+            if (typeof mapping == "object")
+            {
+                if (mapping.recordfield)
+                {
+                    mappingID = mapping.recordfield;
+                    if (!tables[mapping.recordfield.split(".")[0]] || excludeFields.indexOf(mapping.recordfield.split(".")[1]) >-1)
+                        isInFormat = false;
+                }
+                else if (rcm.type == project.RECORDCONTAINERTYPE_DB)
+                    isInFormat = false;
+                
+                if (mapping.name)
+                {
+                    mappingID = !mappingID ? mapping.name : mappingID
+                    if (!mapping.name.split(".")[1] == "value" || excludeFields.indexOf(mapping.name.split(".")[0]) >-1)
+                        isInFormat = false;
+                
+                    if (isInFormat)
+                        recordFieldMappings[mapping.name.split(".")[0]] = text.encodeMS([mappingID, mapping.name.split(".")[0]]);
+                }
+            }
+        }
+        
+        for (var field in fields)
+        {
+            if (fields[field].fieldType == project.ENTITYFIELDTYPE_FIELD && recordFieldMappings[fields[field].name])
+            {
+                if (!fields[field].usePermissions || (fields[field].usePermissions && tools.hasPermission(tools.PERMISSION_VIEW, entity, field)))
+                    let title = fields[field].title ? fields[field].title : fields[field].name;
+                resultFields.push([text.encodeMS([recordFieldMappings[fields[field].name], title]), title ]);
+            }
+                
+        }
+        return resultFields;
+    }
+    return [];
+}
+
+/**
+ * Gives all possible fields to monitor for the context as values ​​for the database. 
+ * This is the default value of the fields when a new observation is created.
+ * 
+ * @param {String} [pType] the Type or the context name
+ * @return {Stirng} The string is a multi-string from the array of the fields. Retuns null if the context cannot be observed.
+ */
+Observation.getAllFieldValue = function (pType)
+{
+    var values = Observation.getAllPosibleFields(pType);
+    if (values && values != [])
+    {
+        return text.encodeMS(values.map(function (value) {
+            return value[0];
+        }));
+    }
+    return null;
+}
+
+/**
+ * Get all dependencies of a certain type
+ * 
+ * @param {String} [pType] the Type or the context name
+ * @return {Array} the possible dependencies
+ */
+Observation.getAllDependencyValue = function (pType)
+{
+    let contexts = []
+    let dependencies = Dependency.getReverseDependency(ContextUtils.getEntity(pType), {
+        "isObservable" : true
+    });
+    for (let i = 0; i < dependencies.length; i++) 
+    {
+        let context = ContextUtils.getContextId(dependencies[i]);
+        if (context)
+        {
+            contexts.push(context);
+        }
+    }
+    return contexts;
+}
diff --git a/process/OfferOrder_lib/OfferOrder_lib.aod b/process/OfferOrder_lib/OfferOrder_lib.aod
index 0df9d9a624d014c6b4583935732acbdea2b2b99e..353cb8ca017b884d62b217dec8fb764c6d08b6f5 100644
--- a/process/OfferOrder_lib/OfferOrder_lib.aod
+++ b/process/OfferOrder_lib/OfferOrder_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>OfferOrder_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/OfferOrder_lib/process.js</process>
diff --git a/process/OfferOrder_lib/process.js b/process/OfferOrder_lib/process.js
index f33eba68fa16f14af4e88b25b3102a64e3da4d04..49477739fd0a0b2931359ff565701150edf9108a 100644
--- a/process/OfferOrder_lib/process.js
+++ b/process/OfferOrder_lib/process.js
@@ -390,7 +390,7 @@ ItemUtils.prototype.getNextItemPosition = function(assignedTo, tree, ids) {
         }
     } else {
         if (ids.length > 0) {
-            maxPos[0] = this.ItemTree[ids[ids.length-1]].pos.split(".")[0];
+            maxPos[0] = tree[ids[ids.length-1]].pos.split(".")[0];
         }    
     }
     maxPos[maxPos.length-1] = (Number(maxPos[maxPos.length-1]) + 1).toString();
diff --git a/process/Offer_lib/Offer_lib.aod b/process/Offer_lib/Offer_lib.aod
index 41247d62423c487255eb9fe234106031fd8a1b6f..d1f79adeeb65335a2c2652db92555530fb3e2403 100644
--- a/process/Offer_lib/Offer_lib.aod
+++ b/process/Offer_lib/Offer_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Offer_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Offer_lib/process.js</process>
diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js
index 78ea329bfc0de71f18965d80cc03b82397687b0e..b8a2058becb86bd3c9fa63221d7f06fb24323203 100644
--- a/process/Offer_lib/process.js
+++ b/process/Offer_lib/process.js
@@ -18,6 +18,7 @@ import("Neon_lib");
 import("KeywordRegistry_basic");
 import("Address_lib");
 import("DocumentTemplate_lib");
+import("system.eMath");
 
 /**
  * Methods used by Offer.
@@ -99,37 +100,42 @@ OfferUtils.createNewOffer = function(pContextId, pRowId, pRelationId, pActivityI
  * Builds the Offer report.
  * 
  * @param {String} pOfferID
+ * @param {String} pExclDiscountGroupcodes
  * @return {Array} [filename, data_bytes]
  */
-OfferUtils.buildOfferReport = function (pOfferID)
+OfferUtils.buildOfferReport = function (pOfferID, pExclDiscountGroupcodes)
 {
     var offerReport = new Report("Offer_report");  
 
     var sqlUtil = new SqlMaskingUtils();
     
     var offerFields = [
-        "ADDRESS", 
-        "CONTACT_ID", 
-        "ISOLANGUAGE", 
-        "PAYMENTTERMS", 
-        "DELIVERYTERMS", //4
-        "OFFERCODE", 
-        "CURRENCY", 
-        "OFFERDATE", 
-        "HEADER", //8
-        "VAT", 
-        sqlUtil.isNull("VERSNR", "0"),
-        sqlUtil.isNull("OFFERCODE", "0"), 
-        "OBJECT_TYPE", //12
-        "OBJECT_ROWID", //13
-        "FOOTER", //14
-        "LETTERSALUTATION" // 15
+    "ADDRESS", 
+    "CONTACT_ID", 
+    "ISOLANGUAGE", 
+    "PAYMENTTERMS", 
+    "DELIVERYTERMS", //4
+    "OFFERCODE", 
+    "CURRENCY", 
+    "OFFERDATE", 
+    "HEADER", //8
+    "VAT", 
+    sqlUtil.isNull("VERSNR", "0"),
+    sqlUtil.isNull("OFFERCODE", "0"), 
+    "OBJECT_TYPE", //12
+    "OBJECT_ROWID", //13
+    "FOOTER", //14
+    "LETTERSALUTATION", // 15
+    "DISCOUNT",
+    "NET",
+    "DISCOUNTED_NET", 
+    "DISCOUNTED_VAT"
     ];
    
     var offerData = newSelect(offerFields)
-                        .from("OFFER")
-                        .where("OFFER.OFFERID", pOfferID)
-                        .arrayRow();
+    .from("OFFER")
+    .where("OFFER.OFFERID", pOfferID)
+    .arrayRow();
   
     if (offerData.length === 0)
         return null;
@@ -137,36 +143,37 @@ OfferUtils.buildOfferReport = function (pOfferID)
     var letterSalutation = offerData[15];
     
     var language = newSelect("ISO2")
-                        .from("AB_LANGUAGE")
-                        .where("AB_LANGUAGE.ISO3", offerData[2])
-                        .cell();
+    .from("AB_LANGUAGE")
+    .where("AB_LANGUAGE.ISO3", offerData[2])
+    .cell();
                         
     offerData[7] = datetime.toDate(offerData[7], translate.text("dd.MM.yyyy", language));                    
         
     var offerItemFields = [
-        "OFFERITEM.INFO", 
-        "OFFERITEM.ASSIGNEDTO",
-        "OFFERITEM.PRODUCT_ID", 
-        "OFFERITEM.ITEMNAME" , 
-        "OFFERITEM.OPTIONAL",  //4
-        "OFFERITEM.ITEMPOSITION", 
-        "PRODUCT.PRODUCTCODE", 
-        "PRODUCT.PRODUCTID", 
-        "OFFERITEM.UNIT", //8
-        sqlUtil.isNull("OFFERITEM.QUANTITY", "0"), 
-        sqlUtil.isNull("OFFERITEM.PRICE", "0"),
-        sqlUtil.isNull("OFFERITEM.DISCOUNT", "0"), 
-        sqlUtil.isNull("OFFERITEM.VAT", "0"), //12
-        "0", 
-        "''"
+    "OFFERITEM.INFO", 
+    "OFFERITEM.ASSIGNEDTO",
+    "OFFERITEM.PRODUCT_ID", 
+    "OFFERITEM.ITEMNAME" , 
+    "OFFERITEM.OPTIONAL",  //4
+    "OFFERITEM.ITEMPOSITION", 
+    "PRODUCT.PRODUCTCODE", 
+    "PRODUCT.PRODUCTID", 
+    "OFFERITEM.UNIT", //8
+    sqlUtil.isNull("OFFERITEM.QUANTITY", "0"), 
+    sqlUtil.isNull("OFFERITEM.PRICE", "0"),
+    sqlUtil.isNull("OFFERITEM.DISCOUNT", "0"), 
+    sqlUtil.isNull("OFFERITEM.VAT", "0"), //12
+    "0", 
+    "''",
+    "OFFERITEM.GROUPCODEID"
     ]; 
 
     var itemData = newSelect(offerItemFields)
-                            .from("OFFERITEM")
-                            .leftJoin("PRODUCT", "PRODUCT.PRODUCTID = OFFERITEM.PRODUCT_ID")
-                            .where("OFFERITEM.OFFER_ID", pOfferID)
-                            .orderBy("OFFERITEM.ITEMSORT asc")
-                            .table();
+    .from("OFFERITEM")
+    .leftJoin("PRODUCT", "PRODUCT.PRODUCTID = OFFERITEM.PRODUCT_ID")
+    .where("OFFERITEM.OFFER_ID", pOfferID)
+    .orderBy("OFFERITEM.ITEMSORT asc")
+    .table();
             
     if (itemData.length == 0)
         return null;
@@ -178,10 +185,29 @@ OfferUtils.buildOfferReport = function (pOfferID)
     var sums = [];
     var vatsum = 0;
     var printDiscount = false;
+    var printHeadDiscount = false; 
+    var discValue = 0;
     
     var header = new DocumentTemplate(offerData[8], DocumentTemplate.types.PLAIN).getReplacedContentByContactId(offerData[1]);
     var footer = new DocumentTemplate(offerData[14], DocumentTemplate.types.PLAIN).getReplacedContentByContactId(offerData[1]);
     
+    var discount;
+    if(offerData[17] && offerData[18]){
+        discount = eMath.subDec(offerData[17].toString(), offerData[18].toString());
+        discount = text.formatDouble(discount.toString(), "#,##0.00", true);     
+    }
+    if (!printHeadDiscount && discount && parseFloat(discount) != parseFloat("0"))
+        printHeadDiscount = true;
+    if(printHeadDiscount){
+        total = eMath.addDec(offerData[18], offerData[19])
+    }
+    if(offerData[16]){
+        discValue = text.formatDouble(offerData[16], "#,##0.00", true);
+    }
+    if(offerData[18]){
+        offerData[18] = text.formatDouble(offerData[18], "#,##0.00", true);
+    }
+    
     itemData = itemData.map(function (item)
     {
         //quantity * price
@@ -192,45 +218,62 @@ OfferUtils.buildOfferReport = function (pOfferID)
             //itemSum = (fullPrice * (100 - discount)) / 100
             itemSum = eMath.roundDec(eMath.divDec(eMath.mulDec(fullPrice, eMath.subDec(100, item[11])), 100), 2, eMath.ROUND_HALF_EVEN); //sum of the item (with discount)
             sumItemSum += itemSum; //total sum (without vat) 
+
+            let excluded = -1
+            if(pExclDiscountGroupcodes){
+                excluded = pExclDiscountGroupcodes.indexOf(item[15])
+            }
+            //vatsum = itemSum * vat / 100
+
+            if(printHeadDiscount && offerData[16] && excluded == -1){
+                vatsum = ItemUtils.prototype.getItemVAT(item[9], item[10], item[11], item[12], item[4]);
+                vatsum = eMath.subDec(vatsum, eMath.divDec(eMath.mulDec(vatsum, offerData[16]), "100"));
+            }
+            else
+                vatsum = ItemUtils.prototype.getItemVAT(item[9], item[10], item[11], item[12], item[4])
+
+            if (item[12] > 0) 
+                sums.push([item[12], vatsum]); //MWSteuerwerte für Map vorbereiten
         }
-        //vatsum = itemSum * vat / 100
-        vatsum = eMath.divDec(eMath.mulDec(itemSum, item[12]), 100); //vat per product
-        if (item[12] > 0) 
-            sums.push([item[12], vatsum]); //MWSteuerwerte für Map vorbereiten
+        
         
         // sumItemSum + vat
-        total = eMath.addDec(sumItemSum, offerData[9]); //total sum with vat
+        if(!printHeadDiscount)
+            total = eMath.addDec(sumItemSum, offerData[9]); //total sum with vat
         
         if (!printDiscount && item[11] > 0)
             printDiscount = true;
         
         return [
-            offerData[6],   //currency
-            offerData[7],   //offerdate
-            pOfferID,       //offerId
-            item[0],        //info
-            item[1],        //assignedTo
-            item[3],        //itemname
-            item[4],        //optional
-            item[5],        //itemposition
-            item[6],        //productcode
-            header,         //header 
-            footer,         //footer 
-            text.formatDouble(item[9], "#,##0", true),          //quantity
-            text.formatDouble(item[10], "#,##0.00", true),      //price
-            text.formatDouble(item[11], "0.00", true),          //discount
-            offerData[10],  //versnr
-            offerData[5],   //offercode
-            text.formatDouble(item[12], "#,##0.00", true),      //vat
-            text.formatDouble(itemSum, "#,##0.00", true),       //itemsum
-            KeywordUtils.getViewValue($KeywordRegistry.quantityUnit(), item[8]) //unittext
+        offerData[6],   //currency
+        offerData[7],   //offerdate
+        pOfferID,       //offerId
+        item[0],        //info
+        item[1],        //assignedTo
+        item[3],        //itemname
+        item[4],        //optional
+        item[5],        //itemposition
+        item[6],        //productcode
+        header,         //header 
+        footer,         //footer 
+        text.formatDouble(item[9], "#,##0", true),          //quantity
+        text.formatDouble(item[10], "#,##0.00", true),      //price
+        text.formatDouble(item[11], "0.00", true),          //discount
+        offerData[10],  //versnr
+        offerData[5],   //offercode
+        text.formatDouble(item[12], "#,##0.00", true),      //vat
+        text.formatDouble(itemSum, "#,##0.00", true),       //itemsum
+        KeywordUtils.getViewValue($KeywordRegistry.quantityUnit(), item[8]), //unittext
+        discValue,
+        offerData[18],
+        discount
         ];
     });
     
     // TODO: get Images implementieren
     var imgData = ["meineFirma | Wilhelm-Str. 2  |  DE 80807 München",
-                   "base64:iVBORw0KGgoAAAANSUhEUgAAAM4AAABRCAYAAACaL5lSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDA4QzAyM0IwREIwMTFFNEFGMDREM0VEMjExRjlBRTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDA4QzAyM0MwREIwMTFFNEFGMDREM0VEMjExRjlBRTIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowMDhDMDIzOTBEQjAxMUU0QUYwNEQzRUQyMTFGOUFFMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowMDhDMDIzQTBEQjAxMUU0QUYwNEQzRUQyMTFGOUFFMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhF3nYoAAAlvSURBVHja7J1fjBXVHcfPJQJRoe1urQYJRBYlMUJisqwvGNjY3WgEUtN2CeWBIGb3Ju6LElsW+gA8AHe1UfuwTcBASB/Q7CZNG0tjw2pWU15kNzEBJFnLqmvQBNEbU0pbX+jve+9vlrOzM/fOnTtz78zs95P8cv/MOTPnzJzvnN/5zZ+Tu3XrliGE1MYC7gJCKBxCKBxCKBxCKBxCKBxCCIVDCIVDCIVDCIVDyDzmDq8/d+1/PY5trRB7VGyt2BqxVWLLxe4RW6JpbohdF7sq9qnYpNhFsY/Evoi6QKeOvMAWQKITToQ8LPaEWKfYBrFlVdL/SO1BsU3W/1+JnRMbE3tP7DIPHcmicLrFfia2VWxlBOuD4H6pNi32tthfxM7yEJIsCAc9yw6x7WJLYyozhNgvtlPsLbHT2hMRkjrhYPzynNhu/d4IIMxesafEToqdiGMcREhcwnlKe4AtTaoDhHpArF1sSOwdHlYSN/WGo/Niv2+iaGy2aFnyPKwkqT1OTmyf2pIE1Qdh7t+J/VjsqBgfbyWJEU5OXaMDCa0ThHxYbJHYIYqHJMVV25dg0dgc0LIS0nTh5FPWGPdxzEOaLRxEz/YkbEwTxG3bo2UnpOHCQci3XwffaWONln0FDzdptHBwcXNLiuu5RetASMOE02nKdwSknd1aF0IaIpwdGXFzVmhdCIldOLjLeXuG6rtd60RIrMLBowFLM1TfpVonQmITDh5C25rBOm/VuhESi3Dw5ObKDNZ5pdaNkFiE05nhenfy0JM4hIMI1IYM13uD4QVREoNw8DaaZRmu9zKtIyGh8HusYG3UG/pJ6w/NKy89O/P70j+nzSsn/zTz+5EHV5oHlt9rep58fFa+sQ8vmEtXps35C5/4+12PrTMP3H9v6dMGeZAX6/Cp49tsAiRK4TTsnrS771xsdj3TZTrWPeQrCtiljmnzhzfPmH//538zyyC0/l9tLonSC6wT1tmxzgxJ3q+//a4pdSTzx1Vb1SjR/Hr3L3xFY4MeCWnt3wf7d/iKxgYC+83un7vTruLhJ1H3OMsbsfHnpbdAo0Yv8rcPzpsz74/P6i3QU0AgtgA2b1pvPhQXDHltd+7MB+MzPQrSIa/tukE0mzeuN6f+/O6cOuZyubrr0tvb12bK73nDZ/cbbxwfzWKD2Tnw2l75KIiN/rHwYibvwggyobSfcO6Ju3COINDYX5axjsuNKo1PYLue+eksATy9scN0rF1T6q0AxkkYL9l8dvWaOXX1XfPZl9dK+W23zxJY1HXsUtEANK7RBDf+s1reakyJOFa7/utz6ivr6ZLlmTxBhHXVGvawmsfYYxYjf//HrHENBIMexVnmFs2cwIJr+WO33cKo64gGNKXfBzPcZo479Z2voqnU4zQENGz0DpWAaJAOLpoNxGa7dn6cv/jJbHfv/vtiqYu4ZhDN6pQd/5rdLUk/mPETQ109zo2GCOf8hUDpPr4yHTqvu8exAgQ3DCERC+d63BtGT1Ktt3G45uHK+VybmYPbDbSEc52Hn0QtnKtxb7jSuKZaWojOHvfUkt8JKjSijmT+jXEwqdOmeHuc/4bOe7OOvK46etLb24eoWI8pv4/aHhSP+IWZNRx9RX/mJd3xasvlP2wDUSo7wlUaQ8jyYrUKhClnvewceO2Yltkr4maHq0vLEXkz5SijU8duJ6jgXpf8btPfe937Q5YXNU+LpilYaSY0zUiVsrdrObD+FmsR8o1Uyx+kx5mcByeNSa/GLzauB6XdtRgH66w21rqR9aDRDJu5YWGsf1yF5pe3YeWsU2QoW6DQt6a94hLNzP6AYFRY4y7RGN0Hwypav/UXrLwtrsU91fIHFc7FeSCci67G2KIHGQehqL1CDmbK0TLnbFSQtH11brtPbdDaRqu5Hept82hAzShnveDEgN5ltZzNc2pePaFTJ5S9Fel89sewfs876zPlR+GdywAFFZcX7VYPtj5E/kCuGubcxPSBWb1D+iuto01BDwp2YreGl0vo923SEIf17LTXOqhhaHe7c+qa5VUYJRdOvg94uGxRlhMXMStdJu+u41oNyjgRMNzdoq7SNucPdc3y2pC7rBPJNtulQvkkTd7cnp2vx3iHyydUcFP2nzXkD9TjYIKmcxnubc4ZaxIqbazO2XnQbowunB0KV6m9ju2PusdALn/bfZZsVjnrZTCCtPZ+8hyHqLinLMEajzQDbtG48hcr5Q/a44AxU55zM4uMefi4Xg13FtJQJ6Qh2o16IqxwAi5ri7mcsd5vVsNguyhp/co44fPdzZTur7aQxZ0wwW5DqioczO6Mq4dZfO/Aex5uhcO3VqOr5l6EpVih0RcrbL/R5ayHqSj2RwURhdqeFZWzx5s1i62ScDAlOh706s+gcC4npHHVSoshoRDB9Fjjw7qpdq8apkTH7M5LM75fnTNeUc74rSxn5kTjXFtyGLDHUAhE1HDHeCDhYGWYEr13nginBQPwIBcfWc5UsdcKLmyLYoVB3h192mR/GvRRnwE4y5n+3qbdcnErBSvaoxbOmNjJLO9cRKGsgWehylX7rmZdlU9LOdM2RtS7ClqiFg44IfbXtO6thQvvuBkgWd7auePuRqcN8Zi5faGsWaSlnIlAw9yOS1vQIIEjmDb7frkogwMOcNWGTPnNMGl7O8zknYsX/UA+76p2NpcGB/93WBslzugFn+QTzapMWsqZMPLW/sI9ae7l3ToOChxxq2UO0HfEXjXpegAMZX118aKFNwM2SvjAqzXqUvRohPi/tdkv4khLORPU64yoONxjHNyVsD7MbUU5rzd67Nr/eqU8+8UOp2Sf/VbsiN/CU0deYKsioVgQIs9RsUMpqNshLSshkRPmZR23tFF+L7bPJG/69hsqmKNaVkISIRxHPHCBvhHbk6CAwaSOw47x0JIkCscBDfRzU76frdnTuSNcPqRBDEISLRyjDfWSKUdzMCV6o+edQagcF2hPmOzf4UAyJByn8R405bsMMCU6ZneO+8bQf5nyfXSnzdznawhJhXAcxtQQL8fszpioNurnefCMEB53wJ3bvDpOMiEch7NqGHNgotpOU54+MOw7DPCOgHMqSjyEdpmHjmRROA6X1YZ07IPpAzETGqJwmJ8GU21g1gAnpI1QMt6wiZcF4r1niJLhbTQfcfxCkkQuyFwghJDZLOAuIITCIYTCIYTCIYTCIYTCIYRQOIRQOIRQOIRQOIRQOISQWvi/AAMA9UczDEaG0p8AAAAASUVORK5CYII="]
-                // getMyASYS_ICONSdata();
+    "base64:iVBORw0KGgoAAAANSUhEUgAAAM4AAABRCAYAAACaL5lSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDA4QzAyM0IwREIwMTFFNEFGMDREM0VEMjExRjlBRTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDA4QzAyM0MwREIwMTFFNEFGMDREM0VEMjExRjlBRTIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowMDhDMDIzOTBEQjAxMUU0QUYwNEQzRUQyMTFGOUFFMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowMDhDMDIzQTBEQjAxMUU0QUYwNEQzRUQyMTFGOUFFMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhF3nYoAAAlvSURBVHja7J1fjBXVHcfPJQJRoe1urQYJRBYlMUJisqwvGNjY3WgEUtN2CeWBIGb3Ju6LElsW+gA8AHe1UfuwTcBASB/Q7CZNG0tjw2pWU15kNzEBJFnLqmvQBNEbU0pbX+jve+9vlrOzM/fOnTtz78zs95P8cv/MOTPnzJzvnN/5zZ+Tu3XrliGE1MYC7gJCKBxCKBxCKBxCKBxCKBxCCIVDCIVDCIVDCIVDyDzmDq8/d+1/PY5trRB7VGyt2BqxVWLLxe4RW6JpbohdF7sq9qnYpNhFsY/Evoi6QKeOvMAWQKITToQ8LPaEWKfYBrFlVdL/SO1BsU3W/1+JnRMbE3tP7DIPHcmicLrFfia2VWxlBOuD4H6pNi32tthfxM7yEJIsCAc9yw6x7WJLYyozhNgvtlPsLbHT2hMRkjrhYPzynNhu/d4IIMxesafEToqdiGMcREhcwnlKe4AtTaoDhHpArF1sSOwdHlYSN/WGo/Niv2+iaGy2aFnyPKwkqT1OTmyf2pIE1Qdh7t+J/VjsqBgfbyWJEU5OXaMDCa0ThHxYbJHYIYqHJMVV25dg0dgc0LIS0nTh5FPWGPdxzEOaLRxEz/YkbEwTxG3bo2UnpOHCQci3XwffaWONln0FDzdptHBwcXNLiuu5RetASMOE02nKdwSknd1aF0IaIpwdGXFzVmhdCIldOLjLeXuG6rtd60RIrMLBowFLM1TfpVonQmITDh5C25rBOm/VuhESi3Dw5ObKDNZ5pdaNkFiE05nhenfy0JM4hIMI1IYM13uD4QVREoNw8DaaZRmu9zKtIyGh8HusYG3UG/pJ6w/NKy89O/P70j+nzSsn/zTz+5EHV5oHlt9rep58fFa+sQ8vmEtXps35C5/4+12PrTMP3H9v6dMGeZAX6/Cp49tsAiRK4TTsnrS771xsdj3TZTrWPeQrCtiljmnzhzfPmH//538zyyC0/l9tLonSC6wT1tmxzgxJ3q+//a4pdSTzx1Vb1SjR/Hr3L3xFY4MeCWnt3wf7d/iKxgYC+83un7vTruLhJ1H3OMsbsfHnpbdAo0Yv8rcPzpsz74/P6i3QU0AgtgA2b1pvPhQXDHltd+7MB+MzPQrSIa/tukE0mzeuN6f+/O6cOuZyubrr0tvb12bK73nDZ/cbbxwfzWKD2Tnw2l75KIiN/rHwYibvwggyobSfcO6Ju3COINDYX5axjsuNKo1PYLue+eksATy9scN0rF1T6q0AxkkYL9l8dvWaOXX1XfPZl9dK+W23zxJY1HXsUtEANK7RBDf+s1reakyJOFa7/utz6ivr6ZLlmTxBhHXVGvawmsfYYxYjf//HrHENBIMexVnmFs2cwIJr+WO33cKo64gGNKXfBzPcZo479Z2voqnU4zQENGz0DpWAaJAOLpoNxGa7dn6cv/jJbHfv/vtiqYu4ZhDN6pQd/5rdLUk/mPETQ109zo2GCOf8hUDpPr4yHTqvu8exAgQ3DCERC+d63BtGT1Ktt3G45uHK+VybmYPbDbSEc52Hn0QtnKtxb7jSuKZaWojOHvfUkt8JKjSijmT+jXEwqdOmeHuc/4bOe7OOvK46etLb24eoWI8pv4/aHhSP+IWZNRx9RX/mJd3xasvlP2wDUSo7wlUaQ8jyYrUKhClnvewceO2Yltkr4maHq0vLEXkz5SijU8duJ6jgXpf8btPfe937Q5YXNU+LpilYaSY0zUiVsrdrObD+FmsR8o1Uyx+kx5mcByeNSa/GLzauB6XdtRgH66w21rqR9aDRDJu5YWGsf1yF5pe3YeWsU2QoW6DQt6a94hLNzP6AYFRY4y7RGN0Hwypav/UXrLwtrsU91fIHFc7FeSCci67G2KIHGQehqL1CDmbK0TLnbFSQtH11brtPbdDaRqu5Hept82hAzShnveDEgN5ltZzNc2pePaFTJ5S9Fel89sewfs876zPlR+GdywAFFZcX7VYPtj5E/kCuGubcxPSBWb1D+iuto01BDwp2YreGl0vo923SEIf17LTXOqhhaHe7c+qa5VUYJRdOvg94uGxRlhMXMStdJu+u41oNyjgRMNzdoq7SNucPdc3y2pC7rBPJNtulQvkkTd7cnp2vx3iHyydUcFP2nzXkD9TjYIKmcxnubc4ZaxIqbazO2XnQbowunB0KV6m9ju2PusdALn/bfZZsVjnrZTCCtPZ+8hyHqLinLMEajzQDbtG48hcr5Q/a44AxU55zM4uMefi4Xg13FtJQJ6Qh2o16IqxwAi5ri7mcsd5vVsNguyhp/co44fPdzZTur7aQxZ0wwW5DqioczO6Mq4dZfO/Aex5uhcO3VqOr5l6EpVih0RcrbL/R5ayHqSj2RwURhdqeFZWzx5s1i62ScDAlOh706s+gcC4npHHVSoshoRDB9Fjjw7qpdq8apkTH7M5LM75fnTNeUc74rSxn5kTjXFtyGLDHUAhE1HDHeCDhYGWYEr13nginBQPwIBcfWc5UsdcKLmyLYoVB3h192mR/GvRRnwE4y5n+3qbdcnErBSvaoxbOmNjJLO9cRKGsgWehylX7rmZdlU9LOdM2RtS7ClqiFg44IfbXtO6thQvvuBkgWd7auePuRqcN8Zi5faGsWaSlnIlAw9yOS1vQIIEjmDb7frkogwMOcNWGTPnNMGl7O8zknYsX/UA+76p2NpcGB/93WBslzugFn+QTzapMWsqZMPLW/sI9ae7l3ToOChxxq2UO0HfEXjXpegAMZX118aKFNwM2SvjAqzXqUvRohPi/tdkv4khLORPU64yoONxjHNyVsD7MbUU5rzd67Nr/eqU8+8UOp2Sf/VbsiN/CU0deYKsioVgQIs9RsUMpqNshLSshkRPmZR23tFF+L7bPJG/69hsqmKNaVkISIRxHPHCBvhHbk6CAwaSOw47x0JIkCscBDfRzU76frdnTuSNcPqRBDEISLRyjDfWSKUdzMCV6o+edQagcF2hPmOzf4UAyJByn8R405bsMMCU6ZneO+8bQf5nyfXSnzdznawhJhXAcxtQQL8fszpioNurnefCMEB53wJ3bvDpOMiEch7NqGHNgotpOU54+MOw7DPCOgHMqSjyEdpmHjmRROA6X1YZ07IPpAzETGqJwmJ8GU21g1gAnpI1QMt6wiZcF4r1niJLhbTQfcfxCkkQuyFwghJDZLOAuIITCIYTCIYTCIYTCIYTCIYRQOIRQOIRQOIRQOIRQOISQWvi/AAMA9UczDEaG0p8AAAAASUVORK5CYII="]
+    // getMyASYS_ICONSdata();
     
     // TODO: implementieren wenn Attribute möglich sind
     var adma = ""; //adma = Aussendienstmitarbeiter
@@ -266,7 +309,12 @@ OfferUtils.buildOfferReport = function (pOfferID)
         "responsible" : adma,
         "SUMITEMSUM" : sumItemSum,
         "TOTAL" : text.formatDouble(total, "#,##0.00", true),
-        "printDiscount" : printDiscount ? "1" : "0"
+        "printDiscount" : printDiscount ? "1" : "0",
+        "subTotal": translate.text("Subtotal", language),
+        "InvoiceDiscount": translate.text("Invoice Discount", language),
+        "TotalWithoutVat": translate.text("without Vat", language),
+        "TotalWithVat": translate.text("incl. Vat", language),
+        "printHeadDiscount": printHeadDiscount ? "1" : "0"
     };
     
     
@@ -278,27 +326,30 @@ OfferUtils.buildOfferReport = function (pOfferID)
 
     offerReport.setReportData(ReportData.begin(
         [
-            "OFFER_CURRENCY", 
-            "OFFER_OFFERDATE", 
-            "OFFER_OFFERID",  
-            "OFFERITEM_INFO", 
-            "OFFERITEM_ASSIGNEDTO", //4
-            "OFFERITEM_ITEMNAME" , 
-            "OFFERITEM_OPTIONAL", 
-            "OFFERITEM_ITEMPOSITION", 
-            "PRODUCT_PRODUCTCODE", //8
-            "OFFER_HEADER", 
-            "OFFER_FOOTER", 
-            "OFFERITEM_QUANTITY", 
-            "OFFERITEM_PRICE", 
-            "OFFERITEM_DISCOUNT", //13
-            "OFFER_VERSNR", 
-            "OFFER_OFFERCODE", 
-            "OFFERITEM_VAT", 
-            "ITEMSUM", // 17
-            "OFFERITEM_UNITTEXT"
+        "OFFER_CURRENCY", 
+        "OFFER_OFFERDATE", 
+        "OFFER_OFFERID",  
+        "OFFERITEM_INFO", 
+        "OFFERITEM_ASSIGNEDTO", //4
+        "OFFERITEM_ITEMNAME" , 
+        "OFFERITEM_OPTIONAL", 
+        "OFFERITEM_ITEMPOSITION", 
+        "PRODUCT_PRODUCTCODE", //8
+        "OFFER_HEADER", 
+        "OFFER_FOOTER", 
+        "OFFERITEM_QUANTITY", 
+        "OFFERITEM_PRICE", 
+        "OFFERITEM_DISCOUNT", //13
+        "OFFER_VERSNR", 
+        "OFFER_OFFERCODE", 
+        "OFFERITEM_VAT", 
+        "ITEMSUM", // 17
+        "OFFERITEM_UNITTEXT",
+        "OFFER_DISCOUNT",
+        "OFFER_DISCOUNTED_NET",
+        "OFFER_DISCOUNTSUM"
         ])
-        .add(itemData));
+    .add(itemData));
         
     return offerReport.exportReport();
 }
@@ -336,7 +387,8 @@ OfferUtils.copyOffer = function (pOfferId, pOfferData)
         "OfferDeliveryTerm_param": pOfferData.deliveryTerm || "",
         "OfferPaymentTerm_param": pOfferData.paymentTerm || "",
         "ObjectType_param": pOfferData.objectType || "",
-        "ObjectRowId_param": pOfferData.objectRowId || ""
+        "ObjectRowId_param": pOfferData.objectRowId || "",
+        "Discount_param" :  pOfferData.discount || ""
     };
     neon.openContext("Offer", null, null, neon.OPERATINGSTATE_NEW, params);
 }
@@ -346,15 +398,17 @@ OfferUtils.copyOffer = function (pOfferId, pOfferData)
  * 
  * @param {String} pSourceOfferId
  * @param {String} pTargetOfferId
+ * @param {Number} pDiscount
  */
-OfferUtils.copyOfferItems = function (pSourceOfferId, pTargetOfferId)
+OfferUtils.copyOfferItems = function (pSourceOfferId, pTargetOfferId, pDiscount)
 {
     var inputMapping = {
         "OFFERITEM": {
             condition: newWhere("OFFERITEM.OFFER_ID", pSourceOfferId),
             ValueMapping: {
                 "OFFER_ID": pTargetOfferId
-            }
+            },
+            order: ["ASSIGNEDTO", "ITEMSORT"]
         }
     };
     CopyModuleUtils.copyModule(inputMapping);
@@ -363,12 +417,24 @@ OfferUtils.copyOfferItems = function (pSourceOfferId, pTargetOfferId)
     
     //update order price
     var [netPrice, vat] = oiUtils.getNetAndVat();
+    var discountedVals = OfferItemUtils.getDiscountedNet(null, pSourceOfferId,  pDiscount);
     
-    newWhere("OFFER.OFFERID", pTargetOfferId)
+    if(discountedVals){
+        newWhere("OFFER.OFFERID", pTargetOfferId)
+        .updateFields({
+            "NET": netPrice,
+            "VAT": vat,
+            "DISCOUNTED_NET": discountedVals[0],
+            "DISCOUNTED_VAT": discountedVals[1]
+        });
+    }
+    else{
+        newWhere("OFFER.OFFERID", pTargetOfferId)
         .updateFields({
             "NET": netPrice,
             "VAT": vat
         });
+    }
 }
 
 /**
@@ -384,8 +450,8 @@ OfferUtils.copyOfferItems = function (pSourceOfferId, pTargetOfferId)
  */
 OfferUtils.copyToOrder = function (pOfferId, pContextId, pRowId, pContactId, pLanguage, pCurrency, pAddress)
 {  
-        var fieldparams = 
-        {
+    var fieldparams = 
+    {
         "$field.CONTACT_ID" : pContactId,
         "$field.ISOLANGUAGE" : pLanguage,
         "$field.OFFER_ID" : pOfferId,
@@ -393,7 +459,7 @@ OfferUtils.copyToOrder = function (pOfferId, pContextId, pRowId, pContactId, pLa
         "$field.PAYMENTADDRESS" : pAddress || "",
         "$field.OBJECT_TYPE" : pContextId || "",
         "$field.OBJECT_ROWID" : pRowId || ""
-        };
+    };
     
     var params = {};
     params["Copy_param"] = JSON.stringify(fieldparams);
@@ -414,13 +480,13 @@ OfferUtils.getOfferTitleById = function (pOfferId)
     if (!pOfferId)
         return "";
     var offerNumber = newSelect("OFFERCODE, VERSNR")
-                        .from("OFFER")
-                        .where("OFFER.OFFERID", pOfferId)
-                        .arrayRow();
+    .from("OFFER")
+    .where("OFFER.OFFERID", pOfferId)
+    .arrayRow();
                         
     return offerNumber.length > 0 
-        ? translate.text("Offer") + " " + offerNumber.join("-") 
-        : "";
+    ? translate.text("Offer") + " " + offerNumber.join("-") 
+    : "";
 }
 
 
@@ -482,26 +548,26 @@ OfferItemUtils.prototype.insertPartsList = function(pProductId, pAssignedTo, pCu
     this.initItemTree();
     
     var cols =  ["OFFERITEMID"
-                , "OFFER_ID"
-                , "PRODUCT_ID"
-                , "GROUPCODEID"
-                , "ASSIGNEDTO"
-                , "ITEMNAME"
-                , "UNIT"
-                , "PRICE"
-                , "VAT"
-                , "QUANTITY"
-                , "OPTIONAL"
-                , "ITEMPOSITION"
-                , "ITEMSORT"];
+    , "OFFER_ID"
+    , "PRODUCT_ID"
+    , "GROUPCODEID"
+    , "ASSIGNEDTO"
+    , "ITEMNAME"
+    , "UNIT"
+    , "PRICE"
+    , "VAT"
+    , "QUANTITY"
+    , "OPTIONAL"
+    , "ITEMPOSITION"
+    , "ITEMSORT"];
 
     return ItemUtils.prototype.insertPartsList.apply(this, [cols, pProductId, pAssignedTo, pCurrency, pContactId, [[["info", "INFO"], ["info", 
-                            "( " + newSelect("DESCRIPTION")
-                                .from("DESCRIPTIONTRANSLATION")
-                                .where("DESCRIPTIONTRANSLATION.OBJECT_ROWID = PRODUCT.PRODUCTID")
-                                .and("DESCRIPTIONTRANSLATION.OBJECT_TYPE", "Product")
-                                .and("DESCRIPTIONTRANSLATION.LANG", pLanguage)
-                                .toString() + ")"]]]]);
+        "( " + newSelect("DESCRIPTION")
+        .from("DESCRIPTIONTRANSLATION")
+        .where("DESCRIPTIONTRANSLATION.OBJECT_ROWID = PRODUCT.PRODUCTID")
+        .and("DESCRIPTIONTRANSLATION.OBJECT_TYPE", "Product")
+        .and("DESCRIPTIONTRANSLATION.LANG", pLanguage)
+        .toString() + ")"]]]]);
                                   
 }
 
@@ -541,3 +607,51 @@ OfferItemUtils.prototype.reOrgItems = function() {
     ItemUtils.prototype.reOrgItems.apply(this);
 }
 
+
+
+OfferItemUtils.getDiscountedNet = function(pExcludedIs, pOfferId, pDiscount, pExcludedProductgroups){
+    pDiscount = pDiscount ? pDiscount : 0;
+    var ret;
+    var sum = 0;
+    var sumExcluded = 0;
+    var vat = 0;
+    var vatExcluded = 0;
+    if(pOfferId){
+        var offeritemData = newSelect("QUANTITY, PRICE, DISCOUNT, VAT, OPTIONAL")
+        .from("OFFERITEM")
+        .where("OFFERITEM.OFFER_ID", pOfferId)
+        .andIfSet("OFFERITEM.GROUPCODEID", pExcludedProductgroups, SqlBuilder.NOT_IN())
+        .andIfSet("OFFERITEM.OFFERITEMID", pExcludedIs, SqlBuilder.NOT_IN())
+        .table();
+        for (var i = 0; i < offeritemData.length; i++)
+        {
+            sum = eMath.addDec(sum, ItemUtils.prototype.getItemSum(offeritemData[i][0], offeritemData[i][1], offeritemData[i][2], offeritemData[i][4]));
+            vat = eMath.addDec(vat, ItemUtils.prototype.getItemVAT(offeritemData[i][0], offeritemData[i][1], offeritemData[i][2], offeritemData[i][3], offeritemData[i][4]));
+        }
+       
+        sum = eMath.subDec(sum, eMath.divDec(eMath.mulDec(sum, pDiscount), "100"));
+        vat = eMath.subDec(vat, eMath.divDec(eMath.mulDec(vat, pDiscount), "100"));
+        
+        if(pExcludedProductgroups){
+            var excludedOfferitemData = newSelect("QUANTITY, PRICE, DISCOUNT, VAT, OPTIONAL")
+            .from("OFFERITEM")
+            .where("OFFERITEM.OFFER_ID", pOfferId)
+            .and("OFFERITEM.GROUPCODEID", pExcludedProductgroups, SqlBuilder.IN())
+            .andIfSet("OFFERITEM.OFFERITEMID", pExcludedIs, SqlBuilder.NOT_IN())
+            .table();
+            for (var j = 0; j < excludedOfferitemData.length; j++)
+            {
+                sumExcluded = eMath.addDec(sumExcluded, ItemUtils.prototype.getItemSum(excludedOfferitemData[j][0], excludedOfferitemData[j][1], excludedOfferitemData[j][2], excludedOfferitemData[j][4]));
+                vatExcluded = eMath.addDec(vatExcluded, ItemUtils.prototype.getItemVAT(excludedOfferitemData[i][0], excludedOfferitemData[i][1], excludedOfferitemData[i][2], excludedOfferitemData[i][3], excludedOfferitemData[i][4]));
+            }
+        }
+        if(sumExcluded){
+            sum = eMath.addDec(sum, sumExcluded);
+        }
+        if(vatExcluded){
+            vat = eMath.addDec(vat, vatExcluded);
+        }
+    }
+    ret = [sum, vat]
+    return ret;
+}
diff --git a/process/Order_lib/Order_lib.aod b/process/Order_lib/Order_lib.aod
index 3e225851b15f65e8d77e15182de060a04aee4878..5f4e4c315b81d7aad9b321298486d9d4591e66ac 100644
--- a/process/Order_lib/Order_lib.aod
+++ b/process/Order_lib/Order_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Order_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Order_lib/process.js</process>
diff --git a/process/Order_lib/process.js b/process/Order_lib/process.js
index 10c273583ad42d884846b814b622899c7d9b3f5f..74651b5982c20b9ef43762491a29380d7dea1902 100644
--- a/process/Order_lib/process.js
+++ b/process/Order_lib/process.js
@@ -383,7 +383,7 @@ OrderUtils.buildOrderReport = function (pOrderID)
         "SUMITEMSUM" : sumItemSum,
         "TOTAL" : text.formatDouble(total, "#,##0.00", true),
         "printDiscount" : printDiscount ? "1" : "0",
-        "Person" : db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))
+        "Person" : ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))
     };
     
     
diff --git a/process/Organisation_lib/Organisation_lib.aod b/process/Organisation_lib/Organisation_lib.aod
index 47bca652458c91d875f43aa22721999afeb471e7..1f0d01aabbddda8eb361bc70f337f423e640d513 100644
--- a/process/Organisation_lib/Organisation_lib.aod
+++ b/process/Organisation_lib/Organisation_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Organisation_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Organisation_lib/process.js</process>
diff --git a/process/Organisation_lib/process.js b/process/Organisation_lib/process.js
index 5532a6817dbac7d0f8a0e0a70dd26c7237f9725d..6a5b4e22bf0a04f89b6eb8b302a09ae76ec1b04f 100644
--- a/process/Organisation_lib/process.js
+++ b/process/Organisation_lib/process.js
@@ -236,3 +236,18 @@ OrgUtils.openOrgReport = function(pContactId)
 {
     neon.openContext("Organisation", "OrganisationReport_view", [pContactId], neon.OPERATINGSTATE_VIEW, null);
 }
+
+/**
+ * creates an subSql for resolving a org into one string of text
+ * useful for example in an displayValue-expression to resolave a references (which is chosen by Lookups)
+ * 
+ * @param {String} pRelationIdField fieldname for the CONTACTID-condition as TABLEALIAS.COLUMNALIAS;
+ * @return {String} a subsql (without bracets) that can be placed within an SQL
+ */
+OrgUtils.getResolvingDisplaySubSql = function(pRelationIdField)
+{
+    //TODO: verify if there is a better solution for the usage of this as a displayValueExpression --> automatic use of #TITLE | waiting for implementation
+    return newSelect("NAME").from("ORGANISATION")
+        .join("CONTACT", "ORGANISATIONID = ORGANISATION_ID")
+        .where("PERSON_ID is null").and("CONTACT.CONTACTID = "+ pRelationIdField).toString();
+}
diff --git a/process/PermissionCalendar_lib/PermissionCalendar_lib.aod b/process/PermissionCalendar_lib/PermissionCalendar_lib.aod
index 8f5c6970ce7e043c67c775b033e685acbb4ac8a8..1b2ab4f46514eb141579af4444ec1bbbcf7bd4f0 100644
--- a/process/PermissionCalendar_lib/PermissionCalendar_lib.aod
+++ b/process/PermissionCalendar_lib/PermissionCalendar_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>PermissionCalendar_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/PermissionCalendar_lib/process.js</process>
diff --git a/process/Permission_lib/Permission_lib.aod b/process/Permission_lib/Permission_lib.aod
index 00dceca975179d33311ba7f807e5800a2f748d98..642b9b00218b040d6b833530810f5439a0effc75 100644
--- a/process/Permission_lib/Permission_lib.aod
+++ b/process/Permission_lib/Permission_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Permission_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Permission_lib/process.js</process>
diff --git a/process/Permission_lib/process.js b/process/Permission_lib/process.js
index fcb7a7086c7058d276aea897d12d898781e1d61f..9a4b05adcacf8a765e7c19149128ec2e34ed7a90 100644
--- a/process/Permission_lib/process.js
+++ b/process/Permission_lib/process.js
@@ -704,6 +704,21 @@ function PermissionUtil () {}
         }
         return false;
     }
+    
+    /**
+     * Returns all child role ids and names of the given role.
+     * 
+     * @param {String} pRoleName parent role name, mandatory
+     * 
+     * @result {String[]} array with ids and names of child roles
+     */
+    PermissionUtil.getChildRoles = function(pRoleName) {
+        // hierarchies where pRoleName is parent
+        return newSelect("ID, CHILD_ROLE", alias)
+        .from("ASYS_ROLES_CHILDREN")
+        .where("ASYS_ROLES_CHILDREN.PARENT_ROLE", pRoleName)
+        .table();
+    }
 
     /**
      * Delete all links to child roles of pRoleName.
diff --git a/process/Person_lib/Person_lib.aod b/process/Person_lib/Person_lib.aod
index 04c0795c9a2fcb6fcdd7f580da9ffe3a2be374e9..80e4dc8248fca9713ea9c6419d8e9ff647956527 100644
--- a/process/Person_lib/Person_lib.aod
+++ b/process/Person_lib/Person_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Person_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Person_lib/process.js</process>
diff --git a/process/Placeholder_lib/Placeholder_lib.aod b/process/Placeholder_lib/Placeholder_lib.aod
index 1cc12d42bd4091664def57971f81d140c9dcc0e2..2af9f3a9ab189e4a59216d944a9d9703eb9880f6 100644
--- a/process/Placeholder_lib/Placeholder_lib.aod
+++ b/process/Placeholder_lib/Placeholder_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Placeholder_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Placeholder_lib/process.js</process>
diff --git a/process/PostalAddress_lib/PostalAddress_lib.aod b/process/PostalAddress_lib/PostalAddress_lib.aod
index f7af81f2c9b9cb3ab8b20c4faa523894b5df10f7..a07348310e4c97fb5da2bf3bdd9b86e56994aaed 100644
--- a/process/PostalAddress_lib/PostalAddress_lib.aod
+++ b/process/PostalAddress_lib/PostalAddress_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>PostalAddress_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/PostalAddress_lib/process.js</process>
diff --git a/process/Product_lib/Product_lib.aod b/process/Product_lib/Product_lib.aod
index 9c72fa0f0cdb72396fc83c73d54fadb87bcfd7ad..a1197452b9288cb8d7c3224f2e669f0d47505649 100644
--- a/process/Product_lib/Product_lib.aod
+++ b/process/Product_lib/Product_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Product_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Product_lib/process.js</process>
diff --git a/process/Product_lib/process.js b/process/Product_lib/process.js
index ee03a52bec3a0052633d48aace52aeb834a107da..05c9106f30d76237624db6bfaceba7a9612a55d3 100644
--- a/process/Product_lib/process.js
+++ b/process/Product_lib/process.js
@@ -283,7 +283,7 @@ ProductUtils.getProductDetails = function(pid, priceListFilter, additionalProduc
                 return priceLists[list];
             }
             //customer deposited price list (defined by Attribute)
-            if (priceListFilter.priceList != "") {
+            if (priceListFilter.priceList != "" && priceListFilter.priceList != null) {
                 var res;
                 var escape;
                  // runs trough the possible pricelists to find the one with the correct pricelist ("-type"). 
diff --git a/process/Proto_lib/Proto_lib.aod b/process/Proto_lib/Proto_lib.aod
index dd8841dc7aba84fa95c02f339956908458bb7307..ce167574ad6d6a97588312e3f6cbc5d0156933ae 100644
--- a/process/Proto_lib/Proto_lib.aod
+++ b/process/Proto_lib/Proto_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Proto_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Proto_lib/process.js</process>
diff --git a/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod b/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod
index 7d7d887aa097e608434cd4b22d55986a75d7f33b..11432054cc7356358ef25e9d7b657ca5973bba2f 100644
--- a/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod
+++ b/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>RebuildAllDuplicateCaches_serverProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/RebuildAllDuplicateCaches_serverProcess/process.js</process>
diff --git a/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod b/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod
index 21d0559480699c819f719274c88863094991a05d..078550c7200171ccff2e26f2515a616016da481a 100644
--- a/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod
+++ b/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>RebuildDuplicatesCache_serverProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/RebuildDuplicatesCache_serverProcess/process.js</process>
diff --git a/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod b/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod
new file mode 100644
index 0000000000000000000000000000000000000000..9a2e06c6e7128e5448ad661af163c5f1ff23986d
--- /dev/null
+++ b/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>RemoveFromCampaign_workflowService</name>
+  <title>Remove from Campaign</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/RemoveFromCampaign_workflowService/process.js</process>
+  <alias>Data_alias</alias>
+  <serviceTaskParameterProcess>%aditoprj%/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js</serviceTaskParameterProcess>
+  <variants>
+    <element>WORKFLOW</element>
+  </variants>
+</process>
diff --git a/process/RemoveFromCampaign_workflowService/process.js b/process/RemoveFromCampaign_workflowService/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..c7552ccfed53d9ef5f0f2b5a34540548e0ff4177
--- /dev/null
+++ b/process/RemoveFromCampaign_workflowService/process.js
@@ -0,0 +1,12 @@
+import("system.util");
+import("Sql_lib");
+import("system.vars");
+
+var variables = JSON.parse(vars.get("$local.value"));
+
+var contactId = variables.contactId || variables.targetId;
+var campaignId = variables.campaignId;
+
+newWhere("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", campaignId)
+    .and("CAMPAIGNPARTICIPANT.CONTACT_ID", contactId)
+    .deleteData();
\ No newline at end of file
diff --git a/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js b/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cc949e7c1051a706a6f73fd1be401a450e17956c
--- /dev/null
+++ b/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js
@@ -0,0 +1,23 @@
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+import("Workflow_lib");
+
+var currentValues = JSON.parse(vars.get("$local.value"));
+
+var campaigns = newSelect(["CAMPAIGNID", "NAME"])
+    .from("CAMPAIGN")
+    .table()
+    .map(function ([id, name])
+    {
+        return {
+            id: id,
+            name: name
+        };
+    });
+
+var parameters = [
+    new WorkflowServiceTaskParameter("campaignId", "Campaign", WorkflowServiceTaskParameter.ENUM(), campaigns)
+];
+
+result.object(parameters);
\ No newline at end of file
diff --git a/process/Report_lib/Report_lib.aod b/process/Report_lib/Report_lib.aod
index b847e04de6288a50fd822dffef554f45c285423f..a7caa94038945e9aa86704ab525dc5dc21b037e5 100644
--- a/process/Report_lib/Report_lib.aod
+++ b/process/Report_lib/Report_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Report_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Report_lib/process.js</process>
diff --git a/process/Salesproject_lib/Salesproject_lib.aod b/process/Salesproject_lib/Salesproject_lib.aod
index 06956e427082baea872c1f395aca9c5337032e42..32fb545354a53bee2209d60d4cdbf64074e24a55 100644
--- a/process/Salesproject_lib/Salesproject_lib.aod
+++ b/process/Salesproject_lib/Salesproject_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Salesproject_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Salesproject_lib/process.js</process>
diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js
index 53974b0854233bf64338f7423e1ac1c2bb6f5e0d..c88cd30a425644445654b840b169eccb24206c30 100644
--- a/process/Salesproject_lib/process.js
+++ b/process/Salesproject_lib/process.js
@@ -1,3 +1,6 @@
+import("system.datetime");
+import("system.logging");
+import("KeywordData_lib");
 import("Sql_lib");
 import("system.neon");
 import("system.vars");
@@ -156,7 +159,10 @@ Salesproject.updateSalesprojectPhase = function(pSalesprojectId, pPhase)
  * 
  * @class
  */
-function SalesprojectConversionRate() {}
+function SalesprojectConversionRate() {
+    this.MILESTONES = {};
+    this.isGrouping = null;
+}
 
 /**
  * Returns the Mapping of the Fields and FilterExtention for the grouping 
@@ -177,11 +183,11 @@ SalesprojectConversionRate.groupMapping = function (pRightOneTables)
         }
     }
     
-    let dateStartYear = sqlHelper.yearFromDate("DATA.DATE_START");
-    let dateStartMonth = sqlHelper.monthFromDate("DATA.DATE_START");
+    let dateStartYear = sqlHelper.yearFromDate("SALESPROJECT_MILESTONE.DATE_START");
+    let dateStartMonth = sqlHelper.monthFromDate("SALESPROJECT_MILESTONE.DATE_START");
     
     return {
-        "AB_KEYWORD_ENTRYID_KEYID": ["DATA.KEYID", "DATA.TITLE", "DATA.SORTING"], 
+        "AB_KEYWORD_ENTRYID_KEYID": ["AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE", "AB_KEYWORD_ENTRY.SORTING"], 
         "#EXTENSION.Year.Year#NUMBER" : [dateStartYear, dateStartYear, dateStartYear], 
         "#EXTENSION.Month.Month#NUMBER" : [dateStartMonth, dateStartMonth, dateStartMonth]
     }
@@ -249,4 +255,156 @@ SalesprojectConversionRate.filterMapping = function(pField, pIsAll, pTable)
     
 }
 
+/**
+ * Returns the Phases Keywordkeys
+ * 
+ * @return {Array} Phases Keywordkeys
+ */
+SalesprojectConversionRate.prototype.PHASE = function () {
+    return KeywordData.getSimpleData($KeywordRegistry.salesprojectPhase()).map(function (r) {
+        return r[0];
+    });
+}
 
+/**
+ * Add Milestones to the Phases of the given Grouping. 
+ * The Milestone is adding to the given and overlying Phases.
+ * 
+ * @param {String} [pSalesprojectID] the ID of the Salesproject
+ * @param {String} [pPhase] the phase of the milestone
+ * @param {String} [pGrouping] the grouping Field
+ */
+SalesprojectConversionRate.prototype.insertMilestone = function (pSalesprojectID, pPhase, pGrouping) {
+    let logDetail = ["SALESPROJECT_MILESTONEID: " + pSalesprojectID, "PHASE: " + pPhase, "GROUPING: " + pGrouping]
+    let indexPhase = this.PHASE().indexOf(pPhase)
+    if (indexPhase > -1) {
+        let tempPhases;
+        if (pGrouping)
+        {
+            if ((!this.isGrouping) && this.isGrouping != null){
+                logging.log(translate.text("The grouping is not active, but there is one given!"), logging.ERROR, logDetail);
+                return;
+            }
+            if (!this.MILESTONES[pGrouping])
+                this.MILESTONES[pGrouping] = {};
+            this.isGrouping = true;
+            tempPhases = this.MILESTONES[pGrouping];
+        }
+        else if (this.isGrouping && this.isGrouping != null)
+        {
+            logging.log(translate.text("The grouping is active, but there is no one given!"), logging.ERROR, logDetail);
+            return;
+        }
+        else 
+        {
+            tempPhases = this.MILESTONES;
+            this.isGrouping = false;
+        }
+                
+            
+        if (!tempPhases[pPhase])
+        {
+            tempPhases[pPhase] = {};
+            tempPhases[pPhase].size = 0;
+        } 
+            
+        if (!tempPhases[pPhase][pSalesprojectID])
+        {
+            tempPhases[pPhase][pSalesprojectID] = true;
+            tempPhases[pPhase].size++;
+        }
+            
+        if (indexPhase - 1 != -1)
+            this.insertMilestone(pSalesprojectID, this.PHASE()[indexPhase - 1], pGrouping);
+    }
+    else 
+    {
+        logging.log(translate.withArguments("The given Phase \"%0\" can not be found.", [pPhase]), logging.ERROR, logDetail);
+    }
+}
+
+/**
+ * Calculates the Conversion Rate for evry grouping field
+ * 
+ * @param {Array} [pFilter] the ids of the phases, which has to be filtered
+ * 
+ */
+SalesprojectConversionRate.prototype.getConversionRates = function (pFilter) {
+    if (this.isGrouping == null)
+        logging.log(translate.text("You have to use the insertMilestone Function before."), logging.ERROR);
+    else if (this.isGrouping)
+    {
+        let groupingResults = [];
+        Object.keys(this.MILESTONES).forEach(function (grouping) {
+            let count = 0;
+            let sum = 0.0;
+            let sumMilestones = 0;
+            this._getConversionRatesofPhases(this.MILESTONES[grouping], pFilter).forEach(function (phase) {
+                sum += phase[3];
+                sumMilestones += phase[0]
+                count++;
+            }, this);
+            if (sumMilestones != 0)
+                groupingResults.push(["" + sumMilestones, grouping, this._getTitleOfKey(grouping, true), (sum / count)])
+        }, this);
+        return groupingResults
+    }
+    else
+    {
+        return this._getConversionRatesofPhases(this.MILESTONES, pFilter);
+    }
+    return [];
+}
+
+/**
+ * Calculates the Conversion Rate for the phases
+ * 
+ * @param {Array} [pPhases] the phases of the current grouping
+ * @param {Array} [pFilter] the ids of the phases, which has to be filtered
+ * 
+ */
+SalesprojectConversionRate.prototype._getConversionRatesofPhases = function (pPhases, pFilter) {
+    let results = [];
+    this._addToResult(pPhases[this.PHASE()[0]].size, this.PHASE()[0], -1,  results, pFilter);
+    for (let i = 1; i < Object.keys(pPhases).length ;i++)
+    {
+        this._addToResult(pPhases[this.PHASE()[i]].size, this.PHASE()[i], pPhases[this.PHASE()[i-1]].size,  results, pFilter);
+    }
+    return results;
+}
+    
+/**
+ * Adds the Values to the result array
+ * 
+ * @param {Array} [pCount] the count of the phase
+ * @param {Array} [pId] the id of the phase
+ * @param {Array} [pPreCount] the count of the previous phase
+ * @param {Array} [pResult] the array into which the data will be added
+ * @param {Array} [pFilter] the ids of the phases, which has to be filtered
+ */
+SalesprojectConversionRate.prototype._addToResult = function (pCount, pId, pPreCount, pResult, pFilter){
+    if ((pFilter && pFilter.indexOf(pId)> -1) || !pFilter)
+        // COUNT, ID, TITLE, CONVERSION_RATE
+        pResult.push([this.isGrouping ? pCount : ("" + pCount), pId, this._getTitleOfKey(pId), pPreCount == -1 ? 0 : (pCount /pPreCount)]);
+}
+   
+/**
+ * gets the title of the key
+ * @param {Array} [pKey] the key, which has to translate
+ * @param {Array} [pIsGrouping] is this title of a grouping
+ */
+SalesprojectConversionRate.prototype._getTitleOfKey = function (pKey, pIsGrouping) {
+    if (pIsGrouping)
+    {
+        if (pKey <= 12)
+        {
+            // When convert the Number of the Month to the Month name it doesn't matter which Year is used, so here is the Year 2020 hard-coded.
+            let monthDate = new Date(2020, parseInt(pKey)-1);
+            return translate.text(datetime.toDate(monthDate.getTime(), "MMMM", "UTC"));
+        }
+    }
+    else
+        return KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(),pKey);
+        
+    return pKey;
+}
diff --git a/process/SendEmail_workflowService/SendEmail_workflowService.aod b/process/SendEmail_workflowService/SendEmail_workflowService.aod
index d58abf463370007f75396e6fc71b93827fcfabd3..2dbab69e62effe7618abfdd14335a8de7fdc0c27 100644
--- a/process/SendEmail_workflowService/SendEmail_workflowService.aod
+++ b/process/SendEmail_workflowService/SendEmail_workflowService.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>SendEmail_workflowService</name>
   <title>Send email</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/SendEmail_workflowService/process.js b/process/SendEmail_workflowService/process.js
index 14247ad4e4b3dda3ab4be65989fa896e1434a894..bdc3aab5db6de1f34a580ef8363a52707ba63617 100644
--- a/process/SendEmail_workflowService/process.js
+++ b/process/SendEmail_workflowService/process.js
@@ -21,10 +21,8 @@ actionParams.processInstanceId = processInstanceId;
 var additionalPlaceholders = [];
 if (aditoUrl)
 {
-    additionalPlaceholders.push(linkPlaceholder = new Placeholder("workflowActionLink", Placeholder.types.CALLBACKFUNCTION, function ()
-    {
-        return WorkflowLinkActions.getActionLink(aditoUrl, actionParams.linkActionType, actionParams.redirectLink, actionParams);
-    }));
+    var linkPlaceholder = WorkflowLinkActions.getActionLinkPlaceholder(actionParams.linkActionType, actionParams, actionParams.redirectLink, aditoUrl);
+    additionalPlaceholders.push(linkPlaceholder);
 }
 
 var email = Email.fromTemplate(documentTemplateId, recipientContactId, null, additionalPlaceholders);
diff --git a/process/SetAttribute_workflowService/SetAttribute_workflowService.aod b/process/SetAttribute_workflowService/SetAttribute_workflowService.aod
index 0816609206a36c0993b7f8a5eff2cfb94344662a..17c234d1ae4af84fa4575854505e42e53b478c81 100644
--- a/process/SetAttribute_workflowService/SetAttribute_workflowService.aod
+++ b/process/SetAttribute_workflowService/SetAttribute_workflowService.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>SetAttribute_workflowService</name>
   <title>Set attribute</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/SetAttribute_workflowService/process.js b/process/SetAttribute_workflowService/process.js
index aebb4c992da87e3b4e07edd6b47ee62e6e6436e3..b79ef56f6446a63ed5ac20979272636f811580ba 100644
--- a/process/SetAttribute_workflowService/process.js
+++ b/process/SetAttribute_workflowService/process.js
@@ -1,3 +1,4 @@
+import("Util_lib");
 import("Sql_lib");
 import("Attribute_lib");
 import("system.result");
@@ -5,6 +6,7 @@ import("system.vars");
 
 var variables = JSON.parse(vars.get("$local.value"));
 
+var attributeValue = variables.attributeValue;
 var attributeId;
 if (variables.attributeName)
 {
@@ -19,9 +21,23 @@ else
 //attributeValueVariable -> instance variable to use for the attribute value
 if (variables.attributeValueVariable)
 {
-    var attributeValue = variables[variables.attributeValueVariable];
-    if (attributeValue !== null && attributeValue !== undefined && attributeValue !== "")
-        variables.attributeValue = attributeValue;
+    var attributeVal = variables[variables.attributeValueVariable];
+    if (attributeVal !== null && attributeVal !== undefined && attributeVal !== "")
+        attributeValue = attributeVal;
 }
 
-new AttributeRelationQuery(variables.targetId, attributeId, variables.targetContext).insertAttribute(variables.attributeValue);
\ No newline at end of file
+var attributeQuery = new AttributeRelationQuery(variables.attributeRowId || variables.targetId, attributeId, 
+    variables.attributeContext || variables.targetContext);
+
+if (variables.isUpdate)
+{
+    var currentAttribute = attributeQuery.getSingleAttribute();
+    if (!currentAttribute)
+        attributeQuery.insertAttribute(attributeValue, true);
+    else
+        currentAttribute.updateAttribute(attributeValue)
+}
+else
+{
+    attributeQuery.insertAttribute(attributeValue);
+}
\ No newline at end of file
diff --git a/process/SetAttribute_workflowService/serviceTaskParameterProcess.js b/process/SetAttribute_workflowService/serviceTaskParameterProcess.js
index 97d40e0f704a8424f82703311cbeb4ed56babc05..0e8f8d8d04235fa52184140ffe4b38ab04dae283 100644
--- a/process/SetAttribute_workflowService/serviceTaskParameterProcess.js
+++ b/process/SetAttribute_workflowService/serviceTaskParameterProcess.js
@@ -17,12 +17,13 @@ var currentValues = JSON.parse(vars.get("$local.value"));
 var allAttributes = newSelect("AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_NAME, ATTRIBUTE_TYPE, ATTRIBUTE_ACTIVE")
     .from("AB_ATTRIBUTE")
     .where("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.OBJECTSELECTION(), SqlBuilder.NOT_EQUAL()) //these can't work yet
+    .orderBy(["ATTRIBUTE_PARENT_ID", "SORTING", "ATTRIBUTE_NAME"])
     .table();
-var attributeNameMap = {};
+var attributeNameMap = new Map();
 var attributes = [];
 allAttributes.forEach(function ([attributeId, parentId, attributeName, attributeType, isActive])
 {
-    attributeNameMap[attributeId] = [translate.text(attributeName), parentId];
+    attributeNameMap.set(attributeId, [translate.text(attributeName), parentId]);
     if (isActive == "1" && attributeType != AttributeTypes.GROUP() && attributeType != AttributeTypes.COMBOVALUE())
         attributes.push(attributeId);
 });
@@ -32,9 +33,9 @@ attributes = attributes.map(function (attributeId)
     var fullName = "";
     //the loop will stop if an id comes up twice, because otherwise that could cause an infinite loop if the data is faulty
     var alreadyEncountered = new Set(); 
-    while (parentId && attributeNameMap[parentId] && !alreadyEncountered.has(parentId))
+    while (parentId && attributeNameMap.has(parentId) && !alreadyEncountered.has(parentId))
     {
-        var [currentName, currentParent] = attributeNameMap[parentId];
+        var [currentName, currentParent] = attributeNameMap.get(parentId);
         if (!fullName)
             fullName = currentName;
         else
@@ -78,5 +79,6 @@ if (currentValues.attributeId && currentValues.attributeId.value)
 }
 
 parameters.push(new WorkflowServiceTaskParameter("attributeValueVariable", "Value variable", WorkflowServiceTaskParameter.STRING()));
+parameters.push(new WorkflowServiceTaskParameter("isUpdate", "Overwrite", WorkflowServiceTaskParameter.BOOLEAN()));
 
 result.object(parameters);
\ No newline at end of file
diff --git a/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod b/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod
new file mode 100644
index 0000000000000000000000000000000000000000..202fd45600846fdcb2781ad3fd2a518f5e73a64c
--- /dev/null
+++ b/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>SetCampaignStep_workflowService</name>
+  <title>Set Campaign Step</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/SetCampaignStep_workflowService/process.js</process>
+  <alias>Data_alias</alias>
+  <serviceTaskParameterProcess>%aditoprj%/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js</serviceTaskParameterProcess>
+  <variants>
+    <element>WORKFLOW</element>
+  </variants>
+</process>
diff --git a/process/SetCampaignStep_workflowService/process.js b/process/SetCampaignStep_workflowService/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..127041b99578edc870f70ee7a6861405e02f3f39
--- /dev/null
+++ b/process/SetCampaignStep_workflowService/process.js
@@ -0,0 +1,42 @@
+import("system.util");
+import("Campaign_lib");
+import("Sql_lib");
+import("system.vars");
+
+var variables = JSON.parse(vars.get("$local.value"));
+
+var contactId = variables.contactId || variables.targetId;
+var campaignId = variables.campaignId;
+var campaignStepId = variables.campaignStepId;
+
+var campaignStepQuery = newSelect(["CAMPAIGNPARTICIPANTID", "CAMPAIGNSTEP_ID"])
+    .from("CAMPAIGNPARTICIPANT")
+    .where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", campaignId)
+    .and("CAMPAIGNPARTICIPANT.CONTACT_ID", contactId);
+
+var [participantId, currentCampaignStep] = campaignStepQuery.arrayRow();
+    
+if (campaignStepId && currentCampaignStep != campaignStepId)
+{
+    if (!participantId)
+    {
+        participantId = util.getNewUUID();
+        new SqlBuilder().insertFields({
+            "CAMPAIGNPARTICIPANTID": participantId,
+            "CAMPAIGNSTEP_ID": campaignStepId,
+            "CAMPAIGN_ID": campaignId,
+            "CONTACT_ID": contactId,
+            "DATE_NEW": vars.get("$sys.date"),
+            "USER_NEW": vars.get("$sys.user")
+        }, "CAMPAIGNPARTICIPANT");
+    }
+    else 
+    {
+        campaignStepQuery.updateFields({
+            "CAMPAIGNSTEP_ID": campaignStepId,
+            "DATE_EDIT": vars.get("$sys.date"),
+            "USER_EDIT": vars.get("$sys.user")
+        });
+    }
+    CampaignUtils.createLogEntry(campaignId, campaignStepId, participantId, currentCampaignStep);
+}
\ No newline at end of file
diff --git a/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js b/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5978f70ed26e20dcd576602e0d8e0fc2996517a1
--- /dev/null
+++ b/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js
@@ -0,0 +1,40 @@
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+import("Workflow_lib");
+
+var currentValues = JSON.parse(vars.get("$local.value"));
+
+var campaigns = newSelect(["CAMPAIGNID", "NAME"])
+    .from("CAMPAIGN")
+    .table()
+    .map(function ([id, name])
+    {
+        return {
+            id: id,
+            name: name
+        };
+    });
+
+var parameters = [
+    new WorkflowServiceTaskParameter("campaignId", "Campaign", WorkflowServiceTaskParameter.ENUM(), campaigns, true)
+];
+
+var campaignId = currentValues.campaignId && currentValues.campaignId.value;
+if (campaignId)
+{
+    var campaignSteps = newSelect(["CAMPAIGNSTEPID", "NAME"])
+        .from("CAMPAIGNSTEP")
+        .where("CAMPAIGNSTEP.CAMPAIGN_ID", campaignId)
+        .table()
+        .map(function ([id, name])
+        {
+            return {
+                id: id,
+                name: name
+            };
+        });
+    parameters.push(new WorkflowServiceTaskParameter("campaignStepId", "Campaign Step", WorkflowServiceTaskParameter.ENUM(), campaignSteps));
+}
+
+result.object(parameters);
\ No newline at end of file
diff --git a/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod b/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod
index cd9e8f63d12bd4f5af9c1555277c6a54fb82db93..19550d2d6b58731f3730a99daecbaea1041213b7 100644
--- a/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod
+++ b/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>SetSalesprojectPhase_workflowService</name>
   <title>Set salesproject phase</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/SqlBuilder_test/SqlBuilder_test.aod b/process/SqlBuilder_test/SqlBuilder_test.aod
index 3992282911646839e2344fc4154d6a0a30666daf..c8c1620c9e458c45817eb40fc2dde2d643fce18c 100644
--- a/process/SqlBuilder_test/SqlBuilder_test.aod
+++ b/process/SqlBuilder_test/SqlBuilder_test.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>SqlBuilder_test</name>
   <title>[TEST] Sql_lib - SqlBuilder</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod b/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod
index 8636a3707b101a2e7e0b22e10e54c6d596508b53..e3fbcc2640d62d2800c77178cbedea4a1ad35f93 100644
--- a/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod
+++ b/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>SqlMaskingUtils_test</name>
   <title>[TEST] Sql_lib - SqlMaskingUtils</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/Sql_lib/Sql_lib.aod b/process/Sql_lib/Sql_lib.aod
index 8e786ba49ef55715b8396b364c1339d19c3d829d..9ecdf3e0cef487950e3ce08b11bc7640e3d5b866 100644
--- a/process/Sql_lib/Sql_lib.aod
+++ b/process/Sql_lib/Sql_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Sql_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/Sql_lib/documentation.adoc</documentation>
diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js
index e90835fbafdf4bab5326148ab248fce6706c4546..98fe8cc944264fe98c8ffc7a636128705da4ec35 100644
--- a/process/Sql_lib/process.js
+++ b/process/Sql_lib/process.js
@@ -1054,7 +1054,7 @@ SqlBuilder.prototype.tableName = function (pTable)
  */
 SqlBuilder.prototype.from = function(pTable, pTableAlias)
 {
-    this._from = SqlBuilder._getStatement(pTable, "from", pTableAlias, false, (pTableAlias ? false : true));
+    this._from = SqlBuilder._getStatement(pTable, "", pTableAlias, false, (pTableAlias ? false : true));
     if (typeof(pTable) === "string")
         this._tableName = pTable;
     return this;
@@ -2193,10 +2193,7 @@ SqlBuilder.prototype.whereWasCalled = function() {
  */
 SqlBuilder.prototype.isFullSelect = function() 
 {
-    if (!this._select || !this._from)
-        return false;
-    
-    return true;
+    return !(!this._select || !this._from);
 }
 
 /**
@@ -2282,6 +2279,9 @@ SqlBuilder.prototype._prepare = function(pField, pValue, pCondition, pFieldType,
     else
     {
         var type = pFieldType;
+        //booleans are normally stored with TINYINT, this is to support true/false directly
+        if (_isIntegerType(type) && Utils.isBoolean(pValue))
+            pValue = Number(pValue);
         values = [[pValue.toString(), type]];
     }
 
@@ -2289,6 +2289,14 @@ SqlBuilder.prototype._prepare = function(pField, pValue, pCondition, pFieldType,
         pCondition = SqlUtils.replaceConditionTemplate(pCondition, "#", alias);
     
     return [pCondition, values];
+    
+    function _isIntegerType (pType)
+    {
+        return pType == SQLTYPES.TINYINT
+            || pType == SQLTYPES.SMALLINT
+            || pType == SQLTYPES.INTEGER
+            || pType == SQLTYPES.BIGINT;
+    }
 }
 
 /**
@@ -2375,9 +2383,14 @@ SqlBuilder.prototype.buildCondition = function()
 SqlBuilder.prototype.build = function(pDefaultConditionIfNone)
 {
     var wherePrefix = "";
+    var fromObj = this._from;
     
     if (this.isFullSelect())
     {
+        fromObj = {
+            sqlStorage: "from " + this._from.sqlStorage,
+            preparedValues: this._from.preparedValues
+        };
         if (this._where.sqlStorage)
             wherePrefix = "where ";
     }
@@ -2390,11 +2403,11 @@ SqlBuilder.prototype.build = function(pDefaultConditionIfNone)
     var whereObj = {
         sqlStorage : wherePrefix + whereSql,
         preparedValues : this._where.preparedValues
-    }
+    };
     
     var allParts = [
         this._select,
-        this._from,
+        fromObj
         ].concat(this._joins).concat([
         whereObj,
         this._groupBy,
@@ -3184,6 +3197,18 @@ SqlBuilder._CaseStatement.prototype.build = function (pParameters)
     ];
 }
 
+/**
+ * Custom toJSON method that omits the property '_afterWhenMask', because cyclic references can't be stringified
+ */
+SqlBuilder._CaseStatement.prototype.toJSON = function ()
+{
+    return {
+        _whenCondition: this._whenCondition,
+        _whenThens: this._whenThens,
+        _elseValue: this._elseValue
+    };
+}
+
 /**
  * Object providing the then-methods for the case-when expression. It can be only be accessed after calling .when to ensure a 'then' 
  * can only be added after a 'when'.
@@ -3278,6 +3303,45 @@ SqlMaskingUtils.prototype.getConcatSymbol = function()
     }
 }
 
+
+/**
+*  Returns the group_concat function, which groups <br>
+*  multiple Row Values into one Cell. Note: This function <br>
+*  does not work on Derby<br>
+*
+* @param {String} pField                 <p>
+*                                       Expression that shall be grouped.<br>
+* @param {String} pSeperator             <p>
+*                                       Character that shall be used as Seperator<br>
+* @return {String}                      <p>
+*                                       Returns the field with groupConcat wrapped around<br>
+*/
+SqlMaskingUtils.prototype.getGroupConcat = function(pField, pSeperator) 
+{
+    var group;
+    if(pField == null || pSeperator == null || pField == null && pSeperator == null)
+        throw new Error(translate.withArguments("Field or Seperator were empty function: %0", ["SqlMaskingUtils.prototype.getGroupConcat"]));
+    
+    switch(this.dbType) 
+    {
+        case db.DBTYPE_MARIADB10:
+        case db.DBTYPE_MYSQL4:
+            group = " GROUP_CONCAT("+pField+" SEPARATOR "+pSeperator+")";
+            break;
+        case db.DBTYPE_ORACLE10_CLUSTER:
+        case db.DBTYPE_ORACLE10_THIN:
+        case db.DBTYPE_ORACLE10_OCI:
+        case db.DBTYPE_POSTGRESQL8:
+        case db.DBTYPE_SQLSERVER2000:
+            group = " STRING_AGG("+pField+", "+pSeperator+")";
+            break;
+        case db.DBTYPE_DERBY10:
+            logging.log(translate.withArguments("${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0", ["SqlMaskingUtils.prototype.getGroupConcat"]), logging.ERROR);
+            break;
+    }
+    return group;
+}
+
 /**
 *  Returns the trim function, which removes the<br>
 *  leading and trailing spaces in a string, depending<br>
@@ -3372,6 +3436,8 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt
                 return "decimal";
             case SQLTYPES.DATE:
                 return "date";
+            case SQLTYPES.TIMESTAMP:
+                return "timestamp";
         }
         return null;
     }
@@ -3398,6 +3464,7 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt
                 case SQLTYPES.DECIMAL:
                 case SQLTYPES.INTEGER:
                 case SQLTYPES.DATE:
+                case SQLTYPES.TIMESTAMP:
                     sqlDataType = _mapDefaults(pTargetDatatype);
                     break;
             }
@@ -3406,6 +3473,9 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt
         case db.DBTYPE_MYSQL4:
             switch(pTargetDatatype) 
             {
+                case SQLTYPES.TIMESTAMP:
+                    sqlDataType = "datetime";
+                    break;
                 case SQLTYPES.NVARCHAR:
                 case SQLTYPES.VARCHAR:
                 case SQLTYPES.CHAR:
@@ -3434,6 +3504,7 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt
                 case SQLTYPES.CHAR:
                 case SQLTYPES.DECIMAL:
                 case SQLTYPES.DATE:
+                case SQLTYPES.TIMESTAMP:
                     sqlDataType = _mapDefaults(pTargetDatatype);
                     break;
             }
@@ -3442,6 +3513,7 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt
             switch(pTargetDatatype)
             {
                 case SQLTYPES.DATE:
+                case SQLTYPES.TIMESTAMP:
                 case SQLTYPES.DECIMAL:
                 case SQLTYPES.INTEGER:
                 case SQLTYPES.CHAR:
@@ -3454,6 +3526,8 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt
         case db.DBTYPE_SQLSERVER2000:
             switch(pTargetDatatype)
             {
+                case SQLTYPES.TIMESTAMP:
+                    return "datetime";
                 case SQLTYPES.DATE:
                 case SQLTYPES.DECIMAL:
                 case SQLTYPES.INTEGER:
@@ -3875,6 +3949,58 @@ SqlMaskingUtils.prototype.coalesce = function(pFields)
     return retSql;
 }
 
+/**
+ * Converts day, month and year fields into a date
+ * The parameters can't be null!!!
+ * 
+ * @param pYear {String} year field
+ * @param pMonth {String} month field
+ * @param pDay {String} day field
+ */
+SqlMaskingUtils.prototype.makeDate = function(pYear, pMonth, pDay)
+{
+    switch(this.dbType)
+    {
+        case db.DBTYPE_POSTGRESQL8:
+            return "make_date" + "(" + pYear + ", " + pMonth + ", " + pDay + ")";
+        case db.DBTYPE_SQLSERVER2000:
+            return "datefromparts" + "(" + pYear + ", " + pMonth + ", " + pDay + ")";
+
+        case db.DBTYPE_ORACLE10_CLUSTER:
+        case db.DBTYPE_ORACLE10_THIN:
+        case db.DBTYPE_ORACLE10_OCI:
+            return "to_date(lpad(" + pYear + ", 4, '0') || lpad(" + pMonth + ", 2, '0') || lpad(" + pYear + ", 2, '0'), 'YYYY-MM-DD')";
+
+        // from datestr without filled zeros e.g.: 2000-5-2
+        case db.DBTYPE_MYSQL4:
+        case db.DBTYPE_MARIADB10:
+            var dateFields = [
+                this.cast(pYear, SQLTYPES.CHAR, 4),
+                this.cast(pMonth, SQLTYPES.CHAR, 2),
+                this.cast(pDay, SQLTYPES.CHAR, 2)
+            ];
+            var dateStr = this.concatWithSeparator(dateFields, "-", false);
+            return this.cast(dateStr, SQLTYPES.DATE);
+
+        // from datestr with filled zeros e.g.: 2000-05-02
+        case db.DBTYPE_DERBY10:
+            // maskingUtils: workaround
+            function _castWithZeros(maskingUtils, field, size) {
+                var casted = maskingUtils.cast(field, SQLTYPES.VARCHAR, size);
+                var concatenated = maskingUtils.concatenate(["'000'", casted]);
+                // + 1: derbys substr starts counting at 1, for whatever reason
+                return "substr(" + concatenated + ", length(" + concatenated + ") - " + size + " + 1)";
+            }
+            var dateFieldsZeroed = [
+                _castWithZeros(this, pYear, 4),
+                _castWithZeros(this, pMonth, 2),
+                _castWithZeros(this, pDay, 2)
+            ];
+            var dateStrZeroed = this.concatWithSeparator(dateFieldsZeroed, "-", false);
+            return this.cast(dateStrZeroed, SQLTYPES.DATE);
+    }
+}
+
 /**
  * functions for various Sql-actions
  * Do not create an instance of this!
@@ -4241,10 +4367,11 @@ SqlUtils.getSqlInStatement = function(pFieldname, pData, pQuoteSymbol, pAsPrepar
 }
 
 /**
-* resolves key-value pairs (of strings) into a case when expression
+* resolves key-value pairs (of strings) into a case when expression; 
+* This function tries to get the columntype for better type comparison
 * 
 * @param {String[][]} pKeyValueArray you've to pass a 2D-Array where each element has at pos0 the key and pos1 the value
-* @param {String} pDbFieldName name fo the database field where the KEY-value is stored
+* @param {String} pDbFieldName name fo the database field where the KEY-value is stored; prefers TABLENAME.COLUMNNAME
 * @param {String} [pLocale=current client language] specifies the locale for translating the title; can be false if nothing shalle be translated
 * 
 * @return {String} a SQL-expression (case-when-statement) that resolves the KEYID into the title -> as preparedSatement-elements
@@ -4266,7 +4393,13 @@ SqlUtils.getResolvingCaseWhen = function(pKeyValueArray, pDbFieldName, pLocale)
     };
     //!SqlBuilder
     var resSql = "case ", preparedValues = [];
-    var colTypeKeyId = SQLTYPES.CHAR;
+    
+    var colTypeKeyId = SQLTYPES.CHAR; //the standard type is char
+    var fields = SqlUtils._parseFieldQualifier(pDbFieldName); //validate the DB-field for proper form (CONTACT.CONTACTID)
+    if (!(fields instanceof TypeError))
+        colTypeKeyId = SqlUtils.getSingleColumnType(pDbFieldName, undefined, this.alias); 
+     //some databases dont auto cast on their own so we need the proper type
+    
     var colTypeTitle = SQLTYPES.NVARCHAR;
     for (var i = 0, l = keyData.length; i < l; i++) 
     {
diff --git a/process/StandardObject_lib/StandardObject_lib.aod b/process/StandardObject_lib/StandardObject_lib.aod
index 94c1fcc045a7d0035211ebd8afb1d46832b39065..c69d626eb8d55e3c7820c9a130c16ff3e790d850 100644
--- a/process/StandardObject_lib/StandardObject_lib.aod
+++ b/process/StandardObject_lib/StandardObject_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>StandardObject_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/StandardObject_lib/documentation.adoc</documentation>
diff --git a/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod b/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod
index bffee7201afb41060808fc74c155973b7f9a4ca8..3d6e25db86c11f51f4f20f0ab10b249a7166843a 100644
--- a/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod
+++ b/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>TempRebuildIndexPerson_serverProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/TempRebuildIndexPerson_serverProcess/process.js</process>
diff --git a/process/Terminal_lib/Terminal_lib.aod b/process/Terminal_lib/Terminal_lib.aod
index 9fa0811425e089b731f59a376c4089e526725b17..fee1f093874fd8eaab65e87dbe5c346c66a17860 100644
--- a/process/Terminal_lib/Terminal_lib.aod
+++ b/process/Terminal_lib/Terminal_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Terminal_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/Terminal_lib/documentation.adoc</documentation>
diff --git a/process/TestIndexSearch/TestIndexSearch.aod b/process/TestIndexSearch/TestIndexSearch.aod
index 9dfabc2aa4b1af9a5d9d3f1d1eaac79c2a20c66c..66107b82c6692ba97791ea6e0ef9eb87a8c70372 100644
--- a/process/TestIndexSearch/TestIndexSearch.aod
+++ b/process/TestIndexSearch/TestIndexSearch.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>TestIndexSearch</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/TestIndexSearch/process.js</process>
diff --git a/process/Ticket_lib/Ticket_lib.aod b/process/Ticket_lib/Ticket_lib.aod
index 5ce9c41505cb4df632f5c1d34f0bbaf80f48a171..f8dd6fe8f2e97ce7d9eebbf8e1f725b9eeba4b34 100644
--- a/process/Ticket_lib/Ticket_lib.aod
+++ b/process/Ticket_lib/Ticket_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Ticket_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Ticket_lib/process.js</process>
diff --git a/process/Timetracking_lib/Timetracking_lib.aod b/process/Timetracking_lib/Timetracking_lib.aod
index b514721991f2a2544cf57c10e3bc5d89c0571d7b..140b9a95c1bc4667c5056929735b6e5bd0ac6e75 100644
--- a/process/Timetracking_lib/Timetracking_lib.aod
+++ b/process/Timetracking_lib/Timetracking_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Timetracking_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Timetracking_lib/process.js</process>
diff --git a/process/Turnover_lib/Turnover_lib.aod b/process/Turnover_lib/Turnover_lib.aod
index 28bacd7d8eaa8d0f3bd01ed7f72c229487b2372e..12dbb916887a5ee928249e5e2a08760389bab573 100644
--- a/process/Turnover_lib/Turnover_lib.aod
+++ b/process/Turnover_lib/Turnover_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Turnover_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Turnover_lib/process.js</process>
diff --git a/process/Turnover_lib/process.js b/process/Turnover_lib/process.js
index 1e69ad37d5f05c94e3779b5fe5c6edb3fe81cbc5..b070a1a6605c5a3c5d63ef49760af0709429cf9c 100644
--- a/process/Turnover_lib/process.js
+++ b/process/Turnover_lib/process.js
@@ -78,22 +78,33 @@ TurnoverUtil.getTurnoverData = function (pMaxYear, pYearCount, pSalesprojectId)
  */
 TurnoverUtil.getForecastData = function (pMaxYear, pYearCount, pSalesprojectId)
 {
-    var forecastCategory = translate.text('Forecast');
-
+    var forecastCategory = translate.text("Forecast");
     var minYear = pMaxYear - pYearCount + 1;
+    var sqlMask = new SqlMaskingUtils();
 
     // load data
-    var forecastSelect = newSelect("'" + forecastCategory + "', year(DATE_START) yearNum, month(DATE_START) monthNum, 0 discount, 0 vat, sum(VOLUME) price, 1 quantity, GROUPCODE prodGroup, (" + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "GROUPCODE") + ") prodGroupName")
-                            .from("FORECAST")
-                            .where("FORECAST.DATE_START", pMaxYear, "year(#) <= ?", SQLTYPES.INTEGER)
-                            .and("FORECAST.DATE_START", minYear, "year(#) >= ?", SQLTYPES.INTEGER)
+    var forecastSelect = newSelect([
+            "'" + forecastCategory + "'", 
+            sqlMask.yearFromDate("DATE_START") + " yearNum", 
+            sqlMask.monthFromDate("DATE_START") + " monthNum", 
+            "0 discount", 
+            "0 vat", 
+            "sum(VOLUME) price", 
+            "1 quantity", 
+            "GROUPCODE prodGroup", 
+            "(" + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "GROUPCODE") + ") prodGroupName"
+        ])
+        .from("FORECAST")
+        .where("FORECAST.DATE_START", pMaxYear, sqlMask.yearFromDate("#") + " <= ?", SQLTYPES.INTEGER)
+        .and("FORECAST.DATE_START", minYear, sqlMask.yearFromDate("#") + " >= ?", SQLTYPES.INTEGER);
+        
     if (pSalesprojectId)
     {
-        forecastSelect.and("FORECAST.OBJECT_TYPE", 'Salesproject')
+        forecastSelect.and("FORECAST.OBJECT_TYPE", "Salesproject")
                       .and("FORECAST.OBJECT_ROWID", pSalesprojectId)
     }   
     
-    forecastSelect.groupBy("year(DATE_START), month(DATE_START), GROUPCODE")
+    forecastSelect.groupBy([sqlMask.yearFromDate("DATE_START"), sqlMask.monthFromDate("DATE_START"), "GROUPCODE"])
                   .orderBy("yearNum, monthNum");
                   
     return forecastSelect.table();
diff --git a/process/UnitTest_lib/UnitTest_lib.aod b/process/UnitTest_lib/UnitTest_lib.aod
index a44993167651207727a423951deff7db60238dfb..25bd7badb373769aa481fb03fab69956dc8b704f 100644
--- a/process/UnitTest_lib/UnitTest_lib.aod
+++ b/process/UnitTest_lib/UnitTest_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>UnitTest_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <icon>VAADIN:CHECK_CIRCLE_O</icon>
diff --git a/process/UnitTest_test/UnitTest_test.aod b/process/UnitTest_test/UnitTest_test.aod
index 095a395529bdac348b397a4854c6939cccab89f3..853608a4031b47bab007db1dd836433d694f1c2e 100644
--- a/process/UnitTest_test/UnitTest_test.aod
+++ b/process/UnitTest_test/UnitTest_test.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>UnitTest_test</name>
   <title>[TEST] UnitTest_lib</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod b/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod
index 6afa7117eb943d416023c4c05c6371266bb01ab7..39149b2c28f79fd5db740299f0ce80a0f29a5311 100644
--- a/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod
+++ b/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>UpdateOffer_workflowService</name>
   <title>Update offer</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/UserSettings_lib/UserSettings_lib.aod b/process/UserSettings_lib/UserSettings_lib.aod
index 41d85657ed0bcbfa6492589ee6a7238af2859f05..c1470052e9c9fd7d43344513964da783102380d2 100644
--- a/process/UserSettings_lib/UserSettings_lib.aod
+++ b/process/UserSettings_lib/UserSettings_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>UserSettings_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/UserSettings_lib/process.js</process>
diff --git a/process/Util_lib/Util_lib.aod b/process/Util_lib/Util_lib.aod
index 6a28f6ac135dc0e474b2a0c951704dc8635e5591..67bbab87069f4098d62bd0bf30556729eefca16e 100644
--- a/process/Util_lib/Util_lib.aod
+++ b/process/Util_lib/Util_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Util_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Util_lib/process.js</process>
diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js
index 697b1e2dd7b50adeb79dc4d451fb89a7f81934a1..eaf27ec1c8920bb7797278ab9482e2109d32642e 100644
--- a/process/Util_lib/process.js
+++ b/process/Util_lib/process.js
@@ -312,6 +312,15 @@ Utils.objectFromMap = function (pMap)
     return mapObject;
 }
 
+Utils.toMap = function (pObject)
+{
+    if (Utils.isMap(pObject))
+        return pObject;
+    if (!Array.isArray(pObject))
+        pObject = Utils.objectEntries(pObject);
+    return new Map(pObject);
+}
+
 /**
  * Parses the given JSON to an object, but ignores empty strings, undefined or null.
  * 
@@ -326,6 +335,123 @@ Utils.parseJSON = function (pJSON, pReviver)
     return null;
 }
 
+/**
+ * Returns the enumerable properties of the given object as an array of [key, value] pairs (works like Object.entries()).
+ * 
+ * @param {Object} pObject
+ * @return {Array} Object properties as 2d-array: [[key1, value1], [key2, value2], ...]
+ */
+Utils.objectEntries = function (pObject)
+{
+    return Object.keys(pObject).map(function (key)
+    {
+        return [key, pObject[key]];
+    });
+}
+
+/**
+ * Returns the values of all enumerable properties of the given object (works like Object.values()).
+ * 
+ * @param {Object} pObject
+ * @return {Array} Object values as array
+ */
+Utils.objectValues = function (pObject)
+{
+    return Object.keys(pObject).map(function (key)
+    {
+        return pObject[key];
+    });
+}
+
+
+/**
+ * builds/extends a filter-Object, can be used for e. g. entity.filter(), neon.setFilter, etc...
+ * Note: If a filter-Objects gets extended the new Filter will be added before the old one. 
+ * @example
+ * It will look like this: 
+    {
+       "filter":{               
+          "type":"group",                      -|
+          "operator":"AND",                     |
+          "childs":[                            |
+             {                                  |
+                "type":"row",                   |-  New Condition
+                "name":"ACTIVE",                |
+                "operator":"EQUAL",             |
+                "value":"Ja",                   |
+                "key":"true",                   |
+                "contenttype":"TEXT"           -|
+             },
+             {
+                "type":"group",                         -|
+                "operator":"AND",                        |
+                "childs":[                               |
+                   {                                     |
+                      "type":"row",                      |- Old condition
+                      "name":"DATE_NEW",                 |
+                      "operator":"TIMEFRAME_EQUAL",      |
+                      "value":"Heute",                   |
+                      "key":"REL=ADJUSTED;UNIT=DAY",     |
+                      "contenttype":"DATE"              -|
+                   }
+                ]
+             }
+          ]
+       }
+    }
+ * @param {Object} pFilterObj, the existing Filter-Object, for a new Obj use {} or null
+ * @param {String} pFieldName, all Fields which are filterable in that certain Entity
+ * @param {String} pOperator, Filteroperators, (look up "_getCondition"-Function in JditoFilter_lib for all available operator)
+ * @param {String} pContentType, the Contenttype of the Filter, ("TEXT",... etc)
+ * @param {String} pValue, this will be used as Value in the Frontend
+ * @param {String} pKey, this will be used as Value in the Backend
+ * @param {String} pParentOperator, "OR" or "AND" for the Group Operator, null = AND
+ * 
+ * @return new/extended Filter-Object
+ */
+Utils.buildFilterObj = function(pFilterObj, pFieldName, pOperator, pContentType, pValue, pKey, pParentOperator)
+{
+    //TODO: maybe something like this should be inside the JditoFilter_lib, but more fluent
+    if(pParentOperator && pParentOperator != "AND" && pParentOperator != "OR")
+        throw new Error(translate.text("Illegal Parent Operator in buildFilterObj-Function: "+pParentOperator));
+    
+        
+    var subFilterObj = {
+        "type":"row",
+        "name":pFieldName,
+        "operator":pOperator,
+        "value": pValue,
+        "key": pKey,
+        "contenttype":pContentType
+    };
+        
+    var parentFilter = {
+        "filter" : {
+            "type":"group",
+            "operator":pParentOperator,
+            "childs": [subFilterObj]
+        }
+    };
+    
+
+    if(pFilterObj && pFilterObj.filters && pFilterObj.filters.childs.length > 0)
+    {
+        
+        var push = true;
+        for(var i = 0; i < pFilterObj.filters.childs.length; i++)
+        {
+            if(JSON.stringify(pFilterObj.filters.childs[i]) == JSON.stringify(subFilterObj))
+                push = false;
+        }
+        if(push)
+        {
+            parentFilter.filter.childs = parentFilter.filter.childs.concat([pFilterObj.filters]);
+        }
+       
+    }
+    return parentFilter;
+}
+
 /**
  * Class containing static utility functions for regular expression objects (RegExp)
  * Do not create an instance of this
@@ -432,12 +558,33 @@ StringUtils.replaceAll = function(pPlainInputStr, pPlainSearchStr, pReplacement,
  */
 StringUtils.concat = function(pSeparator, pElements)
 {
-   var res = pElements.filter(function(e){
-       return e != null && e != "";
-   }).join(pSeparator);
-   return res;
+    var res = pElements.filter(function(e){
+        return e != null && e != "";
+    }).join(pSeparator);
+    return res;
 };
 
+/**
+ * Replaces a char of a string at a specified position with a specified replacementString
+ * 
+ * @param {String} pPlainInputStr           <p/>String where you want something to be replaced
+ * @param {String} pIndex                   <p/>Position of the char you want to replace
+ * @param {String} pReplacement             <p/>A string as the replacement-value
+ *
+ * @return {String}                         <p/>ReplacedString (or pPlainInputStr if pIndex >= pPlainInputStr.length)
+ */
+StringUtils.replaceAt = function(pPlainInputStr, pIndex, pReplacement) 
+{
+    if (pIndex >= pPlainInputStr.length) //return the original string if the index is too high
+    {
+        return pPlainInputStr.valueOf();
+    }
+ 
+    return pPlainInputStr.substring(0, pIndex) + pReplacement + pPlainInputStr.substring(pIndex + 1);
+}
+
+
+
 /**
  * concats severel elements by a separator; the separator is only applied if a element is not null and not an empty string "";
  * You can pass >=2 elements to the function and they will be all concated
@@ -477,18 +624,58 @@ StringUtils.pad36 = function(pValue)
  */
 StringUtils.unescapeSlashes = function(pValue) 
 {
-  // add another escaped slash if the string ends with an odd
-  // number of escaped slashes which will crash JSON.parse
-  let parsedStr = pValue.replace(/(^|[^\\])(\\\\)*\\$/, "$&\\");
-  // escape "
-  parsedStr = parsedStr.replace(/"/, '\\"');
-  try {
-    parsedStr = JSON.parse('"' + parsedStr + '"');
-  } catch(e) {
-      logging.log(e);
-    return pValue;
-  }
-  return parsedStr ;
+    // add another escaped slash if the string ends with an odd
+    // number of escaped slashes which will crash JSON.parse
+    let parsedStr = pValue.replace(/(^|[^\\])(\\\\)*\\$/, "$&\\");
+    // escape "
+    parsedStr = parsedStr.replace(/"/, '\\"');
+    try {
+        parsedStr = JSON.parse('"' + parsedStr + '"');
+    } catch(e) {
+        logging.log(e);
+        return pValue;
+    }
+    return parsedStr ;
+}
+
+/**
+ * Transforms the given String to lowerCamelCase
+ * 
+ * @param {String} pString
+ * @return {String} string in lowerCamelCase
+ * @example
+ *      
+ * var name = StringUtils.toLowerCamelCase("Giorno Giovanna");
+ * logging.log(name); //output: "giornoGiovanna"
+ */
+StringUtils.toLowerCamelCase = function (pString)
+{
+    return pString.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (match, index) 
+    {
+        if (+match === 0)  // or if (/\s+/.test(match)) for white spaces
+            return "";
+        return index === 0 ? match.toLowerCase() : match.toUpperCase();
+    });
+}
+
+/**
+ * Transforms the given String to UpperCamelCase
+ * 
+ * @param {String} pString
+ * @return {String} string in UpperCamelCase
+ * @example
+ *      
+ * var youFellForIt = StringUtils.toUpperCamelCase("thunder cross split attack");
+ * logging.log(youFellForIt); //output: "ThunderCrossSplitAttack"
+ */
+StringUtils.toUpperCamelCase = function (pString)
+{
+    return pString.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (match) 
+    {
+        if (+match === 0)  // or if (/\s+/.test(match)) for white spaces
+            return "";
+        return match.toUpperCase();
+    });
 }
 
 /**
@@ -550,7 +737,7 @@ NumberUtils.validateIsBetweenFloat = function(pTitle, pValue, pMin, pMax, pIgnor
     if(isNaN(discount))
         return false;
     
-    if (!NumberUtils.isInside(discount, 0, 100, pIgnoreNull))
+    if (!NumberUtils.isInside(discount, pMin, pMax, pIgnoreNull))
     {
         return (translate.withArguments("${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3", [translate.text(pTitle), discount, pMin, pMax]));
     }
@@ -927,6 +1114,34 @@ ObjectUtils.existsValue = function(pObject, pValue)
     return false;
 };
 
+/**
+ * Sets a value in the given object at the given key path.
+ * 
+ * @param {Object} pObject      object to modify
+ * @param {String[]} pKeyPath   where to set the value
+ * @param {Object} pValue       value to set
+ * @return {Object} the given object
+ * @example
+ * 
+ * var myObject = {};
+ * ObjectUtils.setByPath(myObject, ["giorno", "stand"], "gold experience");
+ * 
+ * logging.log(JSON.stringify(myObject)); //result: {"giorno": {"stand": "gold experience"}}
+ */
+ObjectUtils.setByPath = function (pObject, pKeyPath, pValue)
+{
+    var innerObject = pObject;
+    var lastKey = pKeyPath.reduce(function (currentKey, nextKey)
+    {
+        if (!innerObject[currentKey])
+            innerObject[currentKey] = {};
+        innerObject = innerObject[currentKey];            
+        return nextKey;
+    });
+    innerObject[lastKey] = pValue;
+    return pObject;
+}
+
 /**
  * Class containing functions for sequential numbers
  * Do not create an instance of this!
@@ -981,9 +1196,9 @@ NumberSequencingUtils.validateUniqueNumber = function(pNumber, pColumn, pTable,
 NumberSequencingUtils.getMaxUniqueNumber = function(pColumn, pTable, pCondition) 
 {
     return newSelect(new SqlMaskingUtils().max(pColumn))
-        .from(pTable)
-        .whereIfSet(pCondition)
-        .cell() || "0";
+    .from(pTable)
+    .whereIfSet(pCondition)
+    .cell() || "0";
 }
 
 /**
@@ -1013,7 +1228,9 @@ TreeUtils.sortArrayForTree = function (pArray, pUidIndex, pParentIdIndex)
     var rows = {};
     var allIds = {};
     
-    pArray.forEach(function (row) {allIds[row[pUidIndex]] = true;});
+    pArray.forEach(function (row) {
+        allIds[row[pUidIndex]] = true;
+    });
     var index = 0;
     
     do {
@@ -1027,7 +1244,7 @@ TreeUtils.sortArrayForTree = function (pArray, pUidIndex, pParentIdIndex)
                 };
         }, rows);
         
-        /* stop if no new items were added, otherwise incorrect data (for instance 
+    /* stop if no new items were added, otherwise incorrect data (for instance 
            an item that is it's own parent) could cause an infinite loop           */
     } while (oldIndex != index); 
     var sortedArray = new Array(index);
@@ -1081,7 +1298,7 @@ ConsecutiveCodeUtils.setCode = function(pId, pTable, pIdCol, pCodeCol)
         max = -1;
     
     newWhereIfSet(pTable + "." + pIdCol, pId)
-        .updateData(true, pTable, [pCodeCol], null, [parseInt(max)+1]);
+    .updateData(true, pTable, [pCodeCol], null, [parseInt(max)+1]);
 }
 
 function IdUtils() {}
diff --git a/process/ViewTemplateData_lib/ViewTemplateData_lib.aod b/process/ViewTemplateData_lib/ViewTemplateData_lib.aod
index 5bb454846588aa47368b0a1b4dcba63e3540fb71..c176378fed5c683a712cb73660d8c09f2329ec9d 100644
--- a/process/ViewTemplateData_lib/ViewTemplateData_lib.aod
+++ b/process/ViewTemplateData_lib/ViewTemplateData_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ViewTemplateData_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/ViewTemplateData_lib/process.js</process>
diff --git a/process/Workflow_lib/Workflow_lib.aod b/process/Workflow_lib/Workflow_lib.aod
index 3045e31bec24acabc4d44347f9c8f91fc613e9c6..bff9603a4c8686ef9c379fbd4690b665a7ab6c33 100644
--- a/process/Workflow_lib/Workflow_lib.aod
+++ b/process/Workflow_lib/Workflow_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>Workflow_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Workflow_lib/process.js</process>
diff --git a/process/Workflow_lib/process.js b/process/Workflow_lib/process.js
index 8e0cef19c1bcb52773a17a694a466f5a74231166..baa1aa8dd3a01987ff1b06d66d7f6d33000fefcc 100644
--- a/process/Workflow_lib/process.js
+++ b/process/Workflow_lib/process.js
@@ -15,6 +15,7 @@ import("system.net");
 import("system.auth");
 import("system.util");
 import("MimeType_lib");
+import("Observation_lib");
 
 /**
  * Provides general functions for working with workflows and the workflow engine.
@@ -231,7 +232,7 @@ WorkflowSignalSender.eventHappened = function (pEvent, pTargetId, pTargetContext
  */
 WorkflowSignalSender.getSignalConfig = function (pContext, pEvent)
 {
-    var signals = newSelect("SIGNAL_NAME, TRIGGER_EVENT, OBJECT_CONDITION, OBJECT_TYPE, VARIABLES")
+    var signals = newSelect("SIGNAL_NAME, TRIGGER_EVENT, OBJECT_CONDITION, OBJECT_TYPE, VARIABLES", "Data_alias")
         .from("WORKFLOWSIGNAL")
         .whereIfSet("WORKFLOWSIGNAL.OBJECT_TYPE", pContext)
         .andIfSet("WORKFLOWSIGNAL.TRIGGER_EVENT", pEvent)
@@ -272,7 +273,7 @@ WorkflowVariables.TARGET_ID = function ()
  */
 WorkflowVariables.TARGET_ID.getDefaultValue = function ()
 {
-    return vars.get("$sys.uid");
+    return vars.get("$local.uid");
 }
 
 /**
@@ -307,6 +308,22 @@ WorkflowVariables.ROWDATA.getDefaultValue = function ()
     return JSON.stringify(vars.get("$local.rowdata"));
 }
 
+/**
+ * Returns the variable name for the rowdata
+ */
+WorkflowVariables.INITIAL_ROWDATA = function ()
+{
+    return "initialRowdata";
+}
+
+/**
+ * Returns the default value for the rowdata
+ */
+WorkflowVariables.INITIAL_ROWDATA.getDefaultValue = function ()
+{
+    return JSON.stringify(vars.get("$local.initialRowdata"));
+}
+
 /**
  * Returns the variable name for the changed rows
  */
@@ -323,6 +340,35 @@ WorkflowVariables.CHANGED_ROWS.getDefaultValue = function ()
     return JSON.stringify(vars.get("$local.changed"));
 }
 
+/**
+ * Returns the variable name for the changed rows types
+ */
+WorkflowVariables.CHANGED_ROWS_TYPES = function ()
+{
+    return "changedRowsTypes";
+}
+
+/**
+ * Returns the default value for the changed rows
+ */
+WorkflowVariables.CHANGED_ROWS_TYPES.getDefaultValue = function ()
+{
+    let isDBrc = project.getRecordContainerModel(ContextUtils.getEntity(ContextUtils.getCurrentContextId())).type ==  project.RECORDCONTAINERTYPE_DB;
+    let types = {}
+    vars.get("$local.changed").forEach(function(pField) { 
+            let splitedField = pField.split(".");
+            let fieldName;
+            if  (isDBrc) {
+                fieldName = splitedField[1]
+            } else {
+                fieldName = splitedField[0]
+            }
+            if (splitedField[1] != "displayValue" && vars.exists("$property." + fieldName + ".contentType") )
+                types[pField] = vars.get("$property." + fieldName + ".contentType");
+        });
+    return JSON.stringify(types);
+}
+
 /**
  * Returns the variable name for the event user
  */
@@ -409,8 +455,10 @@ WorkflowVariables.getAllVariables = function ()
 {
     return [
         "CHANGED_ROWS", 
+        "CHANGED_ROWS_TYPES",
         "EVENT_TIME", 
         "EVENT_USER", 
+        "INITIAL_ROWDATA",
         "ROWDATA", 
         "TARGET_CONTEXT", 
         "TARGET_ID",
@@ -797,7 +845,7 @@ WorkflowLinkActions.types.RECEIVE_TASK.execute = function (pParameters)
 {
     if (!pParameters.processInstanceId)
         return;
-    workflow.triggerReceiveTask(pParameters.processInstanceId, pParameters.receiveTask || null);
+    workflow.triggerReceiveTask(pParameters.processInstanceId, pParameters.receiveTask || null, pParameters.variables || null);
 }
 
 /**
@@ -807,7 +855,7 @@ WorkflowLinkActions.types.SIGNAL.execute = function (pParameters)
 {
     if (!pParameters.signal)
         return;
-    workflow.signalEventReceived(pParameters.signal);
+    workflow.signalEventReceived(pParameters.signal, pParameters.variables || null);
 }
 
 /**
@@ -817,7 +865,7 @@ WorkflowLinkActions.types.MESSAGE.execute = function (pParameters)
 {
     if (!pParameters.processInstanceId || !pParameters.message)
         return;
-    workflow.messageEventReceived(pParameters.message, pParameters.processInstanceId);
+    workflow.messageEventReceived(pParameters.message, pParameters.processInstanceId, pParameters.variables || null);
 }
 
 /**
@@ -843,6 +891,8 @@ WorkflowLinkActions.encodeAction = function (pType, pLink, pParams)
         actionObj.ms = pParams.message;
     if (pParams.receiveTask)
         actionObj.re = pParams.receiveTask;
+    if (pParams.variables)
+        actionObj.v = pParams.variables;
     actionObj.ty = pType;
     actionObj.ln = pLink;
     
@@ -885,6 +935,8 @@ WorkflowLinkActions.parseAction = function (pEncodedAction)
         actionParams.message = parsedAction.ms;
     if (parsedAction.re)
         actionParams.receiveTask = parsedAction.re;
+    if (parsedAction.v)
+        actionParams.variables = parsedAction.v;
     
     return {
         type: parsedAction.ty || null,
@@ -901,4 +953,15 @@ WorkflowLinkActions.parseAction = function (pEncodedAction)
             return null;
         }
     };
+}
+
+WorkflowLinkActions.getActionLinkPlaceholder = function (pLinkActionType, pActionParams, pRedirectLink, pBaseUrl)
+{
+    if (!pBaseUrl)
+        pBaseUrl = vars.get("$sys.origin");
+    
+    return new Placeholder("workflowActionLink", Placeholder.types.CALLBACKFUNCTION, function ()
+    {
+        return WorkflowLinkActions.getActionLink(pBaseUrl, pLinkActionType, pRedirectLink, pActionParams);
+    });
 }
\ No newline at end of file
diff --git a/process/WsValidation_lib/WsValidation_lib.aod b/process/WsValidation_lib/WsValidation_lib.aod
index a896dd2fdc17d3ddc9035ac2f5e6370513d0e9a7..fcb5a966b0dcbd779e3a055a9b6a968d42ae8b36 100644
--- a/process/WsValidation_lib/WsValidation_lib.aod
+++ b/process/WsValidation_lib/WsValidation_lib.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>WsValidation_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/WsValidation_lib/documentation.adoc</documentation>
diff --git a/process/WsValidation_lib/process.js b/process/WsValidation_lib/process.js
index 03bccc71e669831494fb55307bacff0ba8b07156..817a2a184157b1aee566ee630eb564f8e8a6afeb 100644
--- a/process/WsValidation_lib/process.js
+++ b/process/WsValidation_lib/process.js
@@ -108,8 +108,6 @@ WsValidationType.get = function(pKey)
                     city: city,
                     cityExt: cityext,
                     country: pPlaceData.address.country_code.toUpperCase(), //4
-                    district: pPlaceData.address.district,
-                    region: pPlaceData.address.state_district,
                     state: pPlaceData.address.state,
                     road: road, //8
                     buildingNo: pPlaceData.address.house_number,
@@ -361,7 +359,6 @@ WsValidationUtils.setAddressFields = function(pJSON)
         "$field.CITY": data.city,
         "$field.COUNTRY": data.country,
         //"$field.DISTRICT": data.district, not needed currently
-        "$field.REGION": data.region,
         "$field.STATE": data.state,
         "$field.ADDRESS": data.road,
         "$field.BUILDINGNO": data.buildingNo
@@ -444,7 +441,7 @@ WsValidationFieldUtils.mainFieldStateProcess = function(pWsType)
  */
 WsValidationFieldUtils.wsFieldStateProcess = function(pWsType)
 {
-    if (!WsValidationUtils.isWsEnabled(pWsType))
+    if (!WsValidationUtils.isWsEnabled(pWsType) )
         return neon.COMPONENTSTATE_INVISIBLE;
     else
         return neon.COMPONENTSTATE_AUTO;
diff --git a/process/_all_test/_all_test.aod b/process/_all_test/_all_test.aod
index 4336a9ddb94b6e8c5741887bbfd4e636f23b0541..f65a8c72b0b9ade07fc33a65875810fbe9e3ba16 100644
--- a/process/_all_test/_all_test.aod
+++ b/process/_all_test/_all_test.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>_all_test</name>
   <title>[TEST] .All</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/_test_clientProcess/_test_clientProcess.aod b/process/_test_clientProcess/_test_clientProcess.aod
index 65d4b5579877f106af3408d202758175db300353..083128043b009ec6417b6ecb0589e04ba2c4eead 100644
--- a/process/_test_clientProcess/_test_clientProcess.aod
+++ b/process/_test_clientProcess/_test_clientProcess.aod
@@ -1,10 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>_test_clientProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/_test_clientProcess/documentation.adoc</documentation>
   <process>%aditoprj%/process/_test_clientProcess/process.js</process>
   <publishAsWebservice v="true" />
+  <wsdl>%aditoprj%/process/_test_clientProcess/wsdl.wsdl</wsdl>
+  <loginTypeId>
+    <element>internal.none</element>
+  </loginTypeId>
   <alias>Data_alias</alias>
   <variants>
     <element>EXECUTABLE</element>
diff --git a/process/_test_clientProcess/wsdl.wsdl b/process/_test_clientProcess/wsdl.wsdl
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/process/_test_importer/_test_importer.aod b/process/_test_importer/_test_importer.aod
index 609067fbad20084a0ca5eef1fb0dcb1c6030f59d..86b1e22c42fded0be140b3dadad42671f76b3fa6 100644
--- a/process/_test_importer/_test_importer.aod
+++ b/process/_test_importer/_test_importer.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>_test_importer</name>
   <title>Importer</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/assignDistrict_serverProcess/assignDistrict_serverProcess.aod b/process/assignDistrict_serverProcess/assignDistrict_serverProcess.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d97b7c010c54f541130a678f413a60e143de22ea
--- /dev/null
+++ b/process/assignDistrict_serverProcess/assignDistrict_serverProcess.aod
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>assignDistrict_serverProcess</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/assignDistrict_serverProcess/process.js</process>
+  <alias>Data_alias</alias>
+  <variants>
+    <element>EXECUTABLE</element>
+  </variants>
+</process>
diff --git a/process/assignDistrict_serverProcess/process.js b/process/assignDistrict_serverProcess/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..f3434cef31913e4ff8323905783bdf0a3f9710eb
--- /dev/null
+++ b/process/assignDistrict_serverProcess/process.js
@@ -0,0 +1,85 @@
+import("system.datetime");
+import("Sql_lib");
+import("system.db");
+import("system.util");
+import("system.translate");
+import("system.vars");
+import("system.notification");
+import("District_lib");
+
+var i;
+var districtData;
+var completeFilter;
+var res;
+
+var user = vars.get("$local.user");
+var arrDistrictIds = vars.get("$local.arrDistrictIds").split(";");
+var contactId = vars.get("$local.contactId");
+
+// Do the assignment for all transferred districts
+if (vars.get("$local.arrDistrictIds").length > 0 && arrDistrictIds.length > 0)
+{   
+    var message;
+    var description;
+
+    var newAssigned = 0;
+    var unchanged = 0;
+    var invalid = 0;
+
+    var startTime = datetime.date();
+
+    //Assign all transferred districts
+    for (i=0; i<arrDistrictIds.length; i++)
+    {   
+        //Build the complete hierarchical filter for every district
+        districtData = DistrictUtils.getDataFromDistrict(arrDistrictIds[i]);
+        completeFilter = DistrictUtils.getAppliedFilter(districtData[0], districtData[1]);
+
+        //Automatic assignment
+        res = DistrictUtils.assignDistrict(arrDistrictIds[i], completeFilter);    
+
+        newAssigned += res.newAssigned;
+        unchanged += res.unchanged;
+        invalid += res.invalid;    
+    }
+
+    if (arrDistrictIds.length == 1)
+    {
+        var districtName = DistrictUtils.getDistrictName(arrDistrictIds[0]);
+        message = translate.withArguments("Assignment of district \"%0\" is completed!", [districtName]);    
+    }
+    else
+        message = translate.text("Assignment of all selected districts is completed!");
+
+    // Notification at the end of the assignment                        
+    description = translate.withArguments("%0 companies were newley assigned. \n" +
+                      "%1 companies are no longer assigned (these assignments got the status 'review'). \n" +
+                      "%2 valid assignments were unchanged.\n" +
+                      "The Process took %3 seconds.",
+                      [newAssigned, invalid, unchanged, Math.round((datetime.date() - startTime) / datetime.ONE_SECOND)]);
+    notification.addNotification(util.getNewUUID(), null, null, null, "DistrictAssigned", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description);    
+}
+
+
+//Assign a new organisation to all according districts with auto assignment is true
+//NOTICE: The new organisation must be part of the filter of the district
+if (contactId != "")
+{        
+    //Get all filters where auto assingment is true
+    var allAutoDistricts = newSelect("DISTRICTID")
+                            .from("DISTRICT")
+                            .where("DISTRICT.DISTRICT_AUTOADD", 1)
+                            .arrayColumn();       
+
+    for (i=0; i<allAutoDistricts.length; i++)
+    {    
+        //Build the complete filter 
+        districtData = DistrictUtils.getDataFromDistrict(allAutoDistricts[i]);
+        completeFilter = DistrictUtils.getAppliedFilter(districtData[0], districtData[1]);   
+
+        //Check if the new contactid is part ot this filter
+        //if so, write data in table districtcontact
+        res = DistrictUtils.assignDistrict(allAutoDistricts[i], completeFilter, contactId);            
+    }                            
+}
+    
\ No newline at end of file
diff --git a/process/autostartNeon/autostartNeon.aod b/process/autostartNeon/autostartNeon.aod
index 5cae2b54c4df27afd135f072eb2e42809dfd90c7..53cfbced0376808b3cc01e1a318a0865f39b4d77 100644
--- a/process/autostartNeon/autostartNeon.aod
+++ b/process/autostartNeon/autostartNeon.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>autostartNeon</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/autostartNeon/process.js</process>
diff --git a/process/blobHandler/blobHandler.aod b/process/blobHandler/blobHandler.aod
index ea16fe9164248509d582008e59c1fb8c3b11f554..df5da687878fc7ea5c3aff68e901c195a1883c9b 100644
--- a/process/blobHandler/blobHandler.aod
+++ b/process/blobHandler/blobHandler.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>blobHandler</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/blobHandler/process.js</process>
diff --git a/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod b/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod
index 5474adbf834c476e62b2ea0402e39d29c1e4ff3a..c5fa5bae70e0432c332962e39305acfe37e3948e 100644
--- a/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod
+++ b/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>buildSerialLetter_serverProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/buildSerialLetter_serverProcess/documentation.adoc</documentation>
diff --git a/process/buildSerialLetter_serverProcess/process.js b/process/buildSerialLetter_serverProcess/process.js
index 1d5cff1f39473a26019577b3c2d3c23121b5ced2..7be5de72cd71f6c4dee9d1fab003af0582d4afcd 100644
--- a/process/buildSerialLetter_serverProcess/process.js
+++ b/process/buildSerialLetter_serverProcess/process.js
@@ -21,4 +21,15 @@ SingleBinaryUtils.set("SERIALLETTER", "SERIALLETTERFILE", letterId, document.con
 
 var message = translate.text("Download ready");
 var description = translate.withArguments("Serial letter \"%0\" can now be downloaded", [document.title]);
-notification.addNotification(util.getNewUUID(), text.encodeMS(["SerialLetter", letterId]), null, null, "DownloadReady", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description);
\ No newline at end of file
+
+var notificationConfig = notification.createConfig()
+.initialState(notification.STATE_UNSEEN)
+.forcedPriority(notification.PRIO_NORMAL)
+    .linkInfo(text.encodeMS(["SerialLetter", letterId]))
+    .daysToLive(2)
+    .addUserWithId(user)
+    .notificationType("DownloadReady")
+    .caption(message)
+    .description(description);
+    
+notification.addNotificationWith(notificationConfig);
\ No newline at end of file
diff --git a/process/ctiCall/ctiCall.aod b/process/ctiCall/ctiCall.aod
index efab080bf759f15b9fc8ae22098447a6d810a32d..6614528e0386b2a7b3fc4b705e1861b64445e33e 100644
--- a/process/ctiCall/ctiCall.aod
+++ b/process/ctiCall/ctiCall.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ctiCall</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/ctiCall/process.js</process>
diff --git a/process/ctiServerEvents/ctiServerEvents.aod b/process/ctiServerEvents/ctiServerEvents.aod
index 0b6ce1bf16282c51184affeb49fc8a91106f955b..4f02a720a23094e2ff2425a8f94dc52c0f2d2730 100644
--- a/process/ctiServerEvents/ctiServerEvents.aod
+++ b/process/ctiServerEvents/ctiServerEvents.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ctiServerEvents</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/ctiServerEvents/process.js</process>
diff --git a/process/emailWrite/emailWrite.aod b/process/emailWrite/emailWrite.aod
index 60d3efe9f572e652c49a01965c3cc95514253914..a752349818c0a8632c76c4167a1e9ed84af7cf51 100644
--- a/process/emailWrite/emailWrite.aod
+++ b/process/emailWrite/emailWrite.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>emailWrite</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/emailWrite/process.js</process>
diff --git a/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod b/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod
index 703deab5221c889c45a77b3a60b6ab4b5f58e31e..353165e368d282145e8820da01ae290c587b5198 100644
--- a/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod
+++ b/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>ewsSyncCalendarPermissions_serverProcess</name>
   <title>Synchronize calendar permissions from Exchange to ADITO</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod b/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod
index 117726612c9ffdc42c5f4e04273f6b9acf1c4094..81c7818957427295a4efcf597330f34df0a8bda2 100644
--- a/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod
+++ b/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>exportLiquibaseContent_serverProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/exportLiquibaseContent_serverProcess/documentation.adoc</documentation>
diff --git a/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod b/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod
index 9437d3b30537612af789f265de1b2a9375903711..2f46ffd47d194aa90c1d54f61acb1682b485ca48 100644
--- a/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod
+++ b/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>exportLiquibaseSystemalias_serverProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/exportLiquibaseSystemalias_serverProcess/process.js</process>
diff --git a/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod b/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod
index cb4430fb0bcd05511a4cbdf794dc665aa2e28bc1..fe54f57b76aac1e81d0e497629b7ab0aaa33931c 100644
--- a/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod
+++ b/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>getDocxDocument_serverProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/getDocxDocument_serverProcess/documentation.adoc</documentation>
diff --git a/process/importLead_serverProcess/importLead_serverProcess.aod b/process/importLead_serverProcess/importLead_serverProcess.aod
index 4316e4127172656ebfb03e03a6d853daeb077a20..a73a9e8246f9160d8c50abddfc0bc0d1863dc050 100644
--- a/process/importLead_serverProcess/importLead_serverProcess.aod
+++ b/process/importLead_serverProcess/importLead_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>importLead_serverProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/importLead_serverProcess/process.js</process>
diff --git a/process/importLead_serverProcess/process.js b/process/importLead_serverProcess/process.js
index a24b084a933769d7e6d3ab8b6b1d316828841452..96f94dc8f09a1f7b2b868f99015e839e65025b46 100644
--- a/process/importLead_serverProcess/process.js
+++ b/process/importLead_serverProcess/process.js
@@ -1,3 +1,4 @@
+import("system.question");
 import("system.logging");
 import("system.notification");
 import("system.translate");
@@ -66,133 +67,136 @@ var posOrgName = getFieldPos(ImportFieldDef, "NAME");
 var posOrginfo = getFieldPos(ImportFieldDef, "INFO");
 
 // Data without headline
-var dsanz = 1;
+var dataRowIndex = 1;
 
 // set the mappings
 LeadImportUtils.mapping = LeadImportUtils.getMapping(importdefid);
 
-
-try
+if (FieldDef.filter(function (fieldDef) { return (fieldDef[1] == "LASTNAME" || fieldDef[1]  == "NAME"); }).length > 0)
 {
-    for (; dsanz < data.length; dsanz++)
+    try
     {
-        //iterate over the fielddefinitions and set the values
-        var impvalues = LeadImportUtils.addArray(data[dsanz], source);	
-        impvalues.push(ImportDate);
-        
-        //  if there is no BUILDINGNO the select it from the ADDRESS
-        if (noBuildingNr)
+        for (; dataRowIndex < data.length; dataRowIndex++)
         {
-            var pos =  addressPos[0];
-            var buildingNr = "";
-            var address = impvalues[pos];
-
-            if (address != "")
+            //iterate over the fielddefinitions and set the values
+            var impvalues = LeadImportUtils.addArray(data[dataRowIndex], source);	
+            impvalues.push(ImportDate);
+        
+            //  if there is no BUILDINGNO the select it from the ADDRESS
+            if (noBuildingNr)
             {
-                // split ADDRESS and BUILDINGNO
-                var arr = address.match(/^[^0-9]+|[0-9]+.*$/g);
-                
-                //Regexp can throw an error - then the array is empty
-                if (arr && arr[0])
+                var pos =  addressPos[0];
+                var buildingNr = "";
+                var address = impvalues[pos];
+
+                if (address != "")
                 {
-                    impvalues[pos] = arr[0].replace(/(^\s+)|(\s+$)/g,"");
-                    if (arr[1]) buildingNr = arr[1];
+                    // split ADDRESS and BUILDINGNO
+                    var arr = address.match(/^[^0-9]+|[0-9]+.*$/g);
+                
+                    //Regexp can throw an error - then the array is empty
+                    if (arr && arr[0])
+                    {
+                        impvalues[pos] = arr[0].replace(/(^\s+)|(\s+$)/g,"");
+                        if (arr[1]) buildingNr = arr[1];
+                    }
                 }
+                impvalues.push(buildingNr);
             }
-            impvalues.push(buildingNr);
-        }
-        // if there is no COUNTRY then COUNTRY = DE
-        if (noCountry) impvalues.push("DE");
+            // if there is no COUNTRY then COUNTRY = DE
+            if (noCountry) impvalues.push("DE");
 				
-        // if a ORGNAME is declared frequently
-        if (posOrgName.length > 1)
-        {					
-            for (posanz = 1; posanz < posOrgName.length; posanz++)
-            {
-                if (impvalues[posOrgName[posanz]] != "")
-                    impvalues[posOrgName[0]] += "\n" +  impvalues[posOrgName[posanz]]; //impvalues[ posOrgName[ posanz ]] ist das Import-Datum
+            // if a ORGNAME is declared frequently
+            if (posOrgName.length > 1)
+            {					
+                for (posanz = 1; posanz < posOrgName.length; posanz++)
+                {
+                    if (impvalues[posOrgName[posanz]] != "")
+                        impvalues[posOrgName[0]] += "\n" +  impvalues[posOrgName[posanz]]; //impvalues[ posOrgName[ posanz ]] ist das Import-Datum
+                }
             }
-        }
-        //  if a ORGINFO is declared frequently
-        if (posOrginfo.length > 1)
-        {
-            for (posanz = 1; posanz < posOrginfo.length; posanz++)
+            //  if a ORGINFO is declared frequently
+            if (posOrginfo.length > 1)
             {
-                if (impvalues[posOrginfo[posanz]] != "" )
-                    impvalues[posOrginfo[0]] += "\n" +  impvalues[posOrginfo[posanz]]; 
+                for (posanz = 1; posanz < posOrginfo.length; posanz++)
+                {
+                    if (impvalues[posOrginfo[posanz]] != "" )
+                        impvalues[posOrginfo[0]] += "\n" +  impvalues[posOrginfo[posanz]]; 
+                }
             }
-        }
-        //get the position of the COUNTRY
-        var countrypos = getFieldPos (FieldDef, "COUNTRY")[0];
+            //get the position of the COUNTRY
+            var countrypos = getFieldPos (FieldDef, "COUNTRY")[0];
         
-        //check the COUNTRY
-        impvalues[countrypos] = LeadImportUtils.checkCountry(impvalues[countrypos]);
+            //check the COUNTRY
+            impvalues[countrypos] = LeadImportUtils.checkCountry(LeadImportUtils.getMappedOutputvalue("COUNTRY", impvalues[countrypos]));
         
-        if (!(getFieldPos(ImportFieldDef, "ISOLANGUAGE").length ==  0)){
-            //get the position of the ISOLANGUAGE
-            var isolanguepos = getFieldPos (FieldDef, "ISOLANGUAGE")[0];
+            if (!(getFieldPos(ImportFieldDef, "ISOLANGUAGE").length ==  0)){
+                //get the position of the ISOLANGUAGE
+                var isolanguepos = getFieldPos (FieldDef, "ISOLANGUAGE")[0];
         
-            //mapp and check the ISOLANGUAGE
-            impvalues[isolanguepos] = LeadImportUtils.getMappedOutputvalue("ISOLANGUAGE", impvalues[isolanguepos]);
-            impvalues[isolanguepos] = LeadImportUtils.checkISOLanguage(impvalues[isolanguepos]);
-        }
+                //mapp and check the ISOLANGUAGE
+                impvalues[isolanguepos] = LeadImportUtils.getMappedOutputvalue("ISOLANGUAGE", impvalues[isolanguepos]);
+                impvalues[isolanguepos] = LeadImportUtils.checkISOLanguage(impvalues[isolanguepos]);
+            }
         
-        try//import data
-        {
-            var dupCheck = LeadImportUtils.importData(DataFields, DataTypes, FieldDef, impvalues, importdefid, AttrObject, source, user, currDate);
+            try//import data
+            {
+                var dupCheck = LeadImportUtils.importData(DataFields, DataTypes, FieldDef, impvalues, importdefid, AttrObject, source, user, currDate);
 
-            allContactData[dupCheck[0]] = [dupCheck[1], dupCheck[2]];   //persObj, orgObj
-        }
-        catch(ex)//if error increase the errorCount and write a rhinoException into the string for the error file
-        {
-            var exeption = "Zeile " + dsanz + ": " + logging.toLogString(ex.rhinoException != undefined ? ex.rhinoException : ex, true) + "\r\n";
-            exeptions = exeptions + exeption;
-            errorCount++;
-            logging.log(exeption);
+                allContactData[dupCheck[0]] = [dupCheck[1], dupCheck[2]];   //persObj, orgObj
+            }
+            catch(ex)//if error increase the errorCount and write a rhinoException into the string for the error file
+            {
+                var exeption = "Zeile " + dataRowIndex + ": " + logging.toLogString(ex.rhinoException != undefined ? ex.rhinoException : ex, true) + "\r\n";
+                exeptions = exeptions + exeption;
+                errorCount++;
+                logging.log(exeption);
+            }
         }
     }
-}
-catch(err)
-{
-    errorCount++;
-    logging.log(err);
-}
+    catch(err)
+    {
+        errorCount++;
+        logging.log(err);
+    }
 
-try 
-{
-    LeadImportUtils.scanLeadDups(allContactData);//search for duplicates
-}
-catch (err)
-{
-    logging.log(err);
-}
+    try 
+    {
+        LeadImportUtils.scanLeadDups(allContactData);//search for duplicates
+    }
+    catch (err)
+    {
+        logging.log(err);
+    }
 
 
-var rows = eMath.subInt(dsanz, 1);
-rows = eMath.subInt(rows, errorCount);//datasetcount - errors = inserts
+    var rows = eMath.subInt(dataRowIndex, 1);
+    rows = eMath.subInt(rows, errorCount);//datasetcount - errors = inserts
 
-var updTable = "LEADIMPORT";
-var updFields =["IMPORT_DATE", "DATE_EDIT", "USER_EDIT", "STATUS"];
-var updVals = [ImportDate, currDate, user, $KeywordRegistry.importStatus$transfered()];
+    var updTable = "LEADIMPORT";
+    var updFields =["IMPORT_DATE", "DATE_EDIT", "USER_EDIT", "STATUS"];
+    var updVals = [ImportDate, currDate, user, $KeywordRegistry.importStatus$transfered()];
 
-var logTable = "LEADLOG";
-var logFields =["LEADLOGID", "ROWSINSERTED", "IMPORTERRORS", "LEADIMPORT_ID", "IMPORTSOURCE", "USER_NEW", "DATE_NEW"];
-var logVals = [util.getNewUUID(), rows, errorCount, importdefid, source, user, currDate];
+    var logTable = "LEADLOG";
+    var logFields =["LEADLOGID", "ROWSINSERTED", "IMPORTERRORS", "LEADIMPORT_ID", "IMPORTSOURCE", "USER_NEW", "DATE_NEW"];
+    var logVals = [util.getNewUUID(), rows, errorCount, importdefid, source, user, currDate];
 
-db.insertData(logTable, logFields, null, logVals);
-newWhere("LEADIMPORT.LEADIMPORTID", importdefid)
+    db.insertData(logTable, logFields, null, logVals);
+    newWhere("LEADIMPORT.LEADIMPORTID", importdefid)
     .updateData(true, updTable, updFields, null, updVals);
-newWhere("LEADTEMP.ROW_ID", importdefid)
+    newWhere("LEADTEMP.ROW_ID", importdefid)
     .deleteData(true, "LEADTEMP");//delete existing temp data
 
-if(exeptions != "")//insert error document
-    db.insertBinary("LEADLOG", "ERRORLOG", logVals[0], 
-        "", util.encodeBase64String(exeptions, "UTF-8"), "Error-Log " + source + " " + datetime.toDate(currDate, "dd.MM.yyyy HH:mm") , "", "", SqlUtils.getBinariesAlias());
+    if(exeptions != "")//insert error document
+        db.insertBinary("LEADLOG", "ERRORLOG", logVals[0], 
+    "", util.encodeBase64String(exeptions, "UTF-8"), "Error-Log " + source + " " + datetime.toDate(currDate, "dd.MM.yyyy HH:mm") , "", "", SqlUtils.getBinariesAlias());
         
-if (userId)// if there is an user - show a notification to this user when the import is complete
-{
-    var description = translate.withArguments("%0 leads imported, %1 errors", [rows, errorCount]);
-    notification.addNotification(util.getNewUUID(), null, null, null, "LeadImport_Notification", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userId], importName, description);
+    if (userId)// if there is an user - show a notification to this user when the import is complete
+    {
+        var description = translate.withArguments("%0 leads imported, %1 errors", [rows, errorCount]);
+        var linkInfo = text.encodeMS(["Leadimport",importdefid ])
+        notification.addNotification(util.getNewUUID(), linkInfo, null, null, "LeadImport_Notification", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userId], importName, description, null );
+    }
 }
 
 
diff --git a/process/mailbridge/mailbridge.aod b/process/mailbridge/mailbridge.aod
index 254ff35492e5ce5eccb03b1d7a55c4ced626e8a1..079dab4650beb124ce85f9345c4928b87a80fc4c 100644
--- a/process/mailbridge/mailbridge.aod
+++ b/process/mailbridge/mailbridge.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>mailbridge</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/mailbridge/documentation.adoc</documentation>
diff --git a/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod b/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod
index cfd92c97942fb960b69e71317d82e75f4f013e0f..a6d4fe24cf1fc3a4d501acd6546807ac3bea8180 100644
--- a/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod
+++ b/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>mark_cachedrecordcontainers_invalid_serverProcess</name>
   <title>Mark all cached record containers as invalid</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/mstBot_rest/mstBot_rest.aod b/process/mstBot_rest/mstBot_rest.aod
new file mode 100644
index 0000000000000000000000000000000000000000..64a88b4452787c65f100f261960f91835763daa3
--- /dev/null
+++ b/process/mstBot_rest/mstBot_rest.aod
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>mstBot_rest</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/mstBot_rest/process.js</process>
+  <publishAsWebservice v="true" />
+  <style>REST</style>
+  <restAcceptedMimeType>application/json</restAcceptedMimeType>
+  <restDeliveredMimeType>application/json</restDeliveredMimeType>
+  <loginTypeId>
+    <element>internal.none</element>
+  </loginTypeId>
+  <publishAsClientWebservice v="true" />
+  <alias>Data_alias</alias>
+</process>
diff --git a/process/mstBot_rest/process.js b/process/mstBot_rest/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..26fc6409b451e12b8f4f4a4203009a0be62c8fb9
--- /dev/null
+++ b/process/mstBot_rest/process.js
@@ -0,0 +1,95 @@
+import("system.datetime");
+import("system.teams");
+import("system.logging");
+import("system.text");
+import("system.util");
+import("Sql_lib");
+import("KeywordRegistry_basic");
+import("Date_lib");
+
+function restpost(pRequestAsJson)
+{
+     //Umformen, dass man den Body des Requests als JsonFormat Base64 decodiert hat
+    var jsonRequest = JSON.parse(pRequestAsJson);
+    var body = jsonRequest.body;
+    body = util.decodeBase64String(body);
+    var jsonBody = JSON.parse(body);
+   
+    
+    //Nötig, falls dies der InitialRequest ist
+    var eventType = jsonBody.channelData.eventType;
+    var teamId = jsonBody.channelData.team.aadGroupId;
+    var who = jsonBody.recipient.name;
+    var serviceUrl = jsonBody.serviceUrl;
+    
+    //Wenn dies der InitalRequest ist (dieser erfolgt, wenn die APP hinzugefügt wird), speichere die ServiceUrl in die DB
+    if(eventType == "teamMemberAdded" && who == "ADITO Bot")
+    {
+        newWhere("MST_TEAM.MST_TEAMID", teamId)
+            .updateFields({"SERVICE_URL" : serviceUrl});
+        return pRequestAsJson;
+    }
+    //Sollte jemand die APP manuell wieder entfernen, gibt es einen "AbschiedsRequest", lösche die ServiceUrl aus der DB
+    if(eventType == "teamMemberRemoved" && who == "ADITO Bot")
+    {    
+       newWhere("MST_TEAM.MST_TEAMID", teamId)
+            .updateFields({"SERVICE_URL" : ""});
+        return pRequestAsJson;
+    }
+    
+    //_____________________________________________________________
+    //Hier gelandet: Request ist eine Nachricht
+    
+    var type = jsonBody.type;
+    if(type != "message") //Wenn Request keine Message war dann ignorieren
+        return pRequestAsJson;
+    
+    var message = jsonBody.text;
+    var from = jsonBody.from.name;
+    
+    //Testzwecke (nachträglich entfernen)
+    logging.log(message);
+    logging.log(from);
+    
+    //Da alle Aufgaben, wie zum Beispiel: Ticket erstellen, Aufgabe erstellen usw. in JDiTO erledigt werden können,
+    // wird hier keine teams.Funktion benötigt
+    //Weitere Schritte: text aufsplittet anhand der Syntax und die einzelnen Kommandos umsetzen
+    
+    var plainMessage = text.html2text(pHTML);
+    
+    var messageParts = plainMessage.split("/");
+    if (messageParts.length !== 2)
+        return pRequestAsJson;
+    
+    var command = messageParts[1].split(/\s+?/);
+    var parameters = {};
+    command.slice(1).forEach(function (param)
+    {
+        param = param.split("=");
+        if (param.length !== 2)
+            return;
+        parameters[param[0]] = param[1];
+    });
+    command = command[0];
+    
+    if (command == "addTask" && parameters.editor && parameters.subject)
+    {
+        var currentDate = datetime.date();
+        var fieldValues = {
+            "KIND": $KeywordRegistry.taskType$task(),
+            "START_DATE": currentDate,
+            "MATURITY_DATE": Duration.ofDays(7).getDateWithDurationAdded(currentDate).getTime(),
+            "PRIORITY": $KeywordRegistry.taskPriority$low(),
+            "STATUS": $KeywordRegistry.taskStatus$new(),
+            "SUBJECT": parameters.subject,
+            "REQUESTOR_CONTACT_ID": "",
+            "PROGRESS": $KeywordRegistry.taskProgress$0()
+        };
+        if ("editor" in parameters)
+            fieldValues["EDITOR_CONTACT_ID"] = ""; //TODO: find out contactid
+
+        new SqlBuilder.insertFields(fieldValues, "TASK", "TASKID");
+    }
+    
+    return pRequestAsJson;
+}
\ No newline at end of file
diff --git a/process/process_audit/process.js b/process/process_audit/process.js
index 023a6e0dbf0888fc4021b7aef9e215dd0a5e4879..5b0cb6d15d46bed1c566b4a21f9f91c5def3392d 100644
--- a/process/process_audit/process.js
+++ b/process/process_audit/process.js
@@ -1,3 +1,4 @@
+import("District_lib");
 import("Loghistory_lib");
 import("system.vars");
 import("system.process");
@@ -15,3 +16,7 @@ if (sqlAction != 'X')
 {
     (new LogHistoryExecutor(tableName, userLogin, columns, newvalues, oldvalues, timestamp, sqlAction, id)).execute();
 }
+
+if(sqlAction == 'I' && tableName == 'DISTRICTCONTACT'){
+    DistrictUtils.notificateNewDistrictContact(id);
+}
\ No newline at end of file
diff --git a/process/process_audit/process_audit.aod b/process/process_audit/process_audit.aod
index 55b53099a0f6b045a1699cb473417840521a8b09..fb5dcd8da903ba9ffe3172451cd386e094fb0441 100644
--- a/process/process_audit/process_audit.aod
+++ b/process/process_audit/process_audit.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>process_audit</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/process_audit/process.js</process>
diff --git a/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod b/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod
index 710063184897bbc4ad2e09ff1f8e3cac536b1b68..106c678f9add12e1f3afe67989627720cd6515d2 100644
--- a/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod
+++ b/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>rebuildIndex_serverProcess</name>
   <title>rebuild Index</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/redirect_rest/redirect_rest.aod b/process/redirect_rest/redirect_rest.aod
index 3087b0ad4b7fcc1e48a6122ae26fe32120328632..bda233f7990cbcde49e43a759006b8fd964fc26d 100644
--- a/process/redirect_rest/redirect_rest.aod
+++ b/process/redirect_rest/redirect_rest.aod
@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>redirect_rest</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/redirect_rest/process.js</process>
   <publishAsWebservice v="true" />
   <style>REST</style>
-  <loginTypeId>internal.none</loginTypeId>
+  <loginTypeId>
+    <element>internal.none</element>
+  </loginTypeId>
   <variants>
     <element>EXECUTABLE</element>
   </variants>
diff --git a/process/removeMSTTeams_serverProcess/process.js b/process/removeMSTTeams_serverProcess/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..83b19e678d4965a9f1011c71f14b91bf3bc4fc78
--- /dev/null
+++ b/process/removeMSTTeams_serverProcess/process.js
@@ -0,0 +1,21 @@
+import("system.teams");
+import("Sql_lib");
+
+var archivedTeams = teams.getAllArchivedTeams(null);
+var dbArchivedTeams = newSelect("MST_TEAMID")
+    .from("MST_TEAM")
+    .where("MST_TEAM.IS_ARCHIVED", "1")
+    .arrayColumn();
+
+var teamIdsToDelete = dbArchivedTeams.filter(function (teamId)
+{
+    return !(teamId in archivedTeams);
+});
+
+if (teamIdsToDelete.length > 0)
+{
+    newWhere("MST_TEAM.MST_TEAMID", teamIdsToDelete, SqlBuilder.IN())
+        .deleteData();
+    newWhere("SALESPROJECT.MST_TEAM_ID", teamIdsToDelete, SqlBuilder.IN())
+        .updateFields({"MST_TEAM_ID": ""});
+}
\ No newline at end of file
diff --git a/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod b/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod
new file mode 100644
index 0000000000000000000000000000000000000000..c120e20c39f5b8e0c8348dd823abb61a2890bd85
--- /dev/null
+++ b/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>removeMSTTeams_serverProcess</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/removeMSTTeams_serverProcess/process.js</process>
+  <alias>Data_alias</alias>
+  <variants>
+    <element>EXECUTABLE</element>
+  </variants>
+</process>
diff --git a/process/sendBulkMail_serverProcess/process.js b/process/sendBulkMail_serverProcess/process.js
index 711120feb205e4b00a1fbda8afdea68708681fca..7ed237beffbb5978141a82b08c745385a1f21bee 100644
--- a/process/sendBulkMail_serverProcess/process.js
+++ b/process/sendBulkMail_serverProcess/process.js
@@ -23,5 +23,5 @@ if (user && !testRecipients)
     var message = translate.withArguments("Bulk mail \"%0\" was sent!", [mailName]);
     var description = translate.withArguments("%0 mails sent sucessfully, %1 mails failed. Process took %2 s.", 
         [res.sucessful, res.failed, Math.round((datetime.date() - startTime) / datetime.ONE_SECOND)]);
-    notification.addNotification(util.getNewUUID(), null, null, null, "BulkMailSent", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description);
+    notification.addNotification(util.getNewUUID(), null, null, null, "BulkMailSent", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description);
 }
\ No newline at end of file
diff --git a/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod b/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod
index 645ed890444612e3470acf524ef90bc730725fca..8357bb2adf8a19f802111fd90d3c734932f8b2e6 100644
--- a/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod
+++ b/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>sendBulkMail_serverProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/sendBulkMail_serverProcess/documentation.adoc</documentation>
diff --git a/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod b/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod
index 3752f6718de29b5a4b07e3c29bae7416d6860164..23c67a18a2d9f489e3a183e8f76b1c1d782da02e 100644
--- a/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod
+++ b/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>setMissingAddressLocations_serverProcess</name>
   <title>Set missing address locations</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod b/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod
index 5d5de80f53c69c20e9c3190e3d8eb99775217a65..e1cb70568a30aa232f833f0d1e8559c09a5d219c 100644
--- a/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod
+++ b/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>startWorkflowInstances_serverProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/startWorkflowInstances_serverProcess/process.js</process>
diff --git a/process/test_iCommRestriction/test_iCommRestriction.aod b/process/test_iCommRestriction/test_iCommRestriction.aod
index cc954a462d091f6b3efef2b7797b92a18ae0b2f8..6d894bcf6bee89031b4fa89d68bdef1b77076ec5 100644
--- a/process/test_iCommRestriction/test_iCommRestriction.aod
+++ b/process/test_iCommRestriction/test_iCommRestriction.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>test_iCommRestriction</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/test_iCommRestriction/process.js</process>
diff --git a/process/updateActivities_serverProzess/updateActivities_serverProzess.aod b/process/updateActivities_serverProzess/updateActivities_serverProzess.aod
index 51684eaceb296a2b5f75e7f1c82b373494b4e28e..8d14a4c15d8a8eae358f727c0b758fdf84d0f51a 100644
--- a/process/updateActivities_serverProzess/updateActivities_serverProzess.aod
+++ b/process/updateActivities_serverProzess/updateActivities_serverProzess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>updateActivities_serverProzess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/updateActivities_serverProzess/process.js</process>
diff --git a/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod b/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod
index e0b953cac1c1f40620c0510daec96d89a844955d..3b3864518417181d045df5dd820a80b48f875237 100644
--- a/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod
+++ b/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>updateAllAddressLocations_serverProcess</name>
   <title>Set all address locations</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/process/updateClassifications_serverProcess/documentation.adoc b/process/updateClassifications_serverProcess/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..fd053e82fca0a65c6687ffaf4ee013100dc5fcad
--- /dev/null
+++ b/process/updateClassifications_serverProcess/documentation.adoc
@@ -0,0 +1,22 @@
+= updateClassifications_serverProcess
+
+For updating  the values of CLASSIFICATIONSTORAGE and the persistent data stored in CLASSIFICATION.
+Should probably  run in intervals (like once a week) to update all outdated data, 
+but the user can also start it manually via an action at the Classification Admin Context.
+
+We are storing the strings of the achieved classifications (e.g. "ACD") in ClassificationStorage.
+Every time we change something for of an classification relevant object (which has an ClassificationStorage dataset) or an linked object with an 
+dependency to the entity (dependencies have to be configured in the Dependency_lib), 
+we set the outdated flag of it's ClassificationStorage dataset to true.
+
+The classificationType datasets also have an outdated flag get set for changes in classificationAdmin.
+
+This Process now updates both of these:
+First it checks whether outdated classificationStorages and outdated classificationTypes exist
+and always updates the classificationStorages first before updating the for the classificationTypes.
+
+-In the classificationStorage runtrough it calculates the complete classification for every outdated classificationStorage, entirely 
+    from scratch (and inserts "new" relevant ones), and updates both the classificationStorage dataset aswell as the classification datasets
+-In the classificationType runtrough it also updates both the classificationStorage dataset aswell as the classification datasets but 
+    -for every object of said object_type
+    -only recalculates the flagged ones and relies on the already stored values of the not flagged classificationTypes (and inserts "new" relevant ones)
\ No newline at end of file
diff --git a/process/updateClassifications_serverProcess/process.js b/process/updateClassifications_serverProcess/process.js
index 22f452a82db5f2ffe695ad1e24a5ca85f01a9c78..db4ab9c27872d6cafb239be8b3f848e9dbaad65e 100644
--- a/process/updateClassifications_serverProcess/process.js
+++ b/process/updateClassifications_serverProcess/process.js
@@ -1,3 +1,8 @@
+import("Context_lib");
+import("system.util");
+import("Util_lib");
+import("JditoFilter_lib");
+import("system.entities");
 import("system.logging");
 import("Classification_lib");
 import("Sql_lib");
@@ -6,217 +11,837 @@ import("system.db");
 import("system.eMath");
 
 var outputInformation = {};//information how much data has been modified
-var gradingObject = {};
-var helperObject = {}; //Used to check whether or not the data has already been added
-var scoreObject = {};
-var archievedScoresObject = {};
+var outputInfo = "updateClassifications_serverProcess output is:\n";
+
+var helperObject = {}; //used to check whether or not the data has already been added
+//object to store all the gradings of the classification groups that have either 1: atleast one classificationType with the outdated flag or 
+//2: have classificationtypes of the object_types that we need for updating for the outdated classificationStorage
+var gradingObject = {}; 
+var scoreObject = {}; //object to store all the classificationScores (with the same logic as above)
+var classificationTypesFilterObj = {}; //object to store all the classificationTypes with filters (logic from above)
+var classificationTypesNoFilterObj = {}; //object to store all the classificationTypes without filters (logic from above)
+var bestPossibleScoresObj = {}; //object to store all the best possible scores of classificationTypes (logic from above)
+var bestPossibleScoresGroupObj = {}; //object to store all the best possible scores of classificationGroups of datasets (logic from above)
+var achievedScoresObj = {}; //object to store all the achieved classificationscores of the classificationgroups (logic from above) (achievedScoresObj[objId][groupId][Score, Grade])
+var achievedScoresTypeObj = {}; //object to store all the achieved classifications (logic from above) (achievedScoresTypeObj[objId][groupId][classificationTypeId][int])
+var staticClassificationsObject = {}; //object to store all the classificationTypes none of the classificationtypes has the outdated flag set (onlyn eeded when storedClassificationFlag == 0, see below)
+var classificationStorageObject = {}; //object to store the classificationstorageStrings (e.g: "ACD")
+var groupObject = {}; //groupObject is another helper object to store all the groupIds
+var outdatedClassificationTypeObj = {};//object to store all outdated classificationtypes (need so we can add empty persisted data later
+var alreadyUpdatedTypesObj = {};
+
+//arrays mainly used for filling the objects
 var objectTypes = [];
 var orderedGroups = [];
+var bestPossibleScoresArray = [];
+var classificationStorageArray = [];
+var groupsThatNeedUpdate = [];
+var outdatedGroupsAndObjectTypes = [];
+var gradingArray = [];
+var scoreArray = [];
+var objectTypesThatNeedUpdate = [];
+var outdatedStoredClassifications = [];
+var objectRowIdArray = [];
+
 var object_type, classificationGroupId, classificationTypeId, classificationScoreId,  classificationScore, classificationGradingId, score, cond,
-classificationGradingMaxScore, classificationGrading, chainedGrading, currentObjectColumn, currentObjectTable, isOrganisation, idsWithoutStoredClassification;
-var groupString ={}
+classificationGradingMaxScore, classificationGrading, chainedGrading, currentObjectColumn, currentObjectTable, isOrganisation, bestValue, minPercent,
+idsWithoutStoredClassification, classificationScorePercent, classificationScoreSaved, classificationScoreTitle, i, ii, iii, deleteCond, count,
+achievedScoresStmt, position, bestPossibleScoreStmt, storedClassificationFlag, deleted, uid;
 var table = "CLASSIFICATIONSTORAGE";
 var column = ["CLASSIFICATIONVALUE"];
+var runUpdating = 0;
 
-//All the possible scores of the classification types
-var scoreArray = newSelect("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID, CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID, CLASSIFICATIONSCORE.SCORE")
-                                        .from("CLASSIFICATIONGROUP")
-                                        .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
-                                        .join("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID")
-                                        .orderBy("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONGROUP.SORTING, CLASSIFICATIONTYPE.SCORETYPE, CLASSIFICATIONSCORE.SORT")
+//all classificationgroups and their object_type that have atleast one classificationtype with the outdated flag set
+outdatedGroupsAndObjectTypes = newSelect("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID, CLASSIFICATIONTYPE.FILTER")
+                                        .from("CLASSIFICATIONTYPE")
+                                        .where("CLASSIFICATIONTYPE.OUTDATED", 1)
                                         .table();
 
-//build scoreObject out of scoreArray
-for (var i = 0; i < scoreArray.length; i++) 
+objectTypesThatNeedUpdate = [];
+for (i = 0; i < outdatedGroupsAndObjectTypes.length; i++) 
 {
-    for (var ii = 0; ii < scoreArray[ii].length; ii++) 
+    [object_type, classificationGroupId, classificationTypeId, classificationTypeFilter] = outdatedGroupsAndObjectTypes[i];
+
+    if(!helperObject.hasOwnProperty(object_type)) //objectType
     {
-        [object_type, classificationGroupId, classificationTypeId, classificationScoreId, classificationScore] = scoreArray[i];
+        outdatedClassificationTypeObj[object_type] = {}; //puts objectType in classificationStorageObject and already initializes the object that later get's filled with the groups and their types
+        objectTypesThatNeedUpdate.push(object_type)
+        
+        classificationTypesFilterObj[object_type] = {}; //initializing for later use
+        classificationTypesNoFilterObj[object_type] = {}; //initializing for later use
+        
+        helperObject[object_type] = "";
 
-        if(!helperObject.hasOwnProperty(scoreArray[i][0])) //objectType
-        {
-            scoreObject[scoreArray[i][0]] = {}; //puts objectType in scoreObject and already initializes the object that later get's filled with the groups and their types
-            helperObject[scoreArray[i][0]] = "";
-            objectTypes.push(scoreArray[i][0]); //also push all the objectTypes in an Array for later (the updating happens one objectType at a time)
-        }
-        if(!helperObject.hasOwnProperty(scoreArray[i][1])) //classificationGroup
-        {
-            scoreObject[scoreArray[i][0]][scoreArray[i][1]] = {}; //same logic as before
-            helperObject[scoreArray[i][1]] = "";
-        }
-        if(!helperObject.hasOwnProperty(scoreArray[i][2])) //classificationType
-        {            
-            scoreObject[scoreArray[i][0]][scoreArray[i][1]][scoreArray[i][2]] = {}; //same logic as before
-            helperObject[scoreArray[i][2]] = "";
-        }
-        if(!helperObject.hasOwnProperty(scoreArray[i][3])) //classificationScore
+    }
+    if(!helperObject.hasOwnProperty(classificationGroupId)) //objectRowId
+    {
+        outdatedClassificationTypeObj[object_type][classificationGroupId] = {}; //same logic as before
+        groupsThatNeedUpdate.push(classificationGroupId)
+        
+        classificationTypesFilterObj[object_type][classificationGroupId] = {}; //initializing 
+        classificationTypesNoFilterObj[object_type][classificationGroupId] = {}; //initializing 
+                
+        helperObject[classificationGroupId] = "";
+    }
+    if(!helperObject.hasOwnProperty(classificationTypeId)) //objectRowId
+    {
+        outdatedClassificationTypeObj[object_type][classificationGroupId][classificationTypeId] = {"classificationTypeFilter": classificationTypeFilter}; //same logic as before
+        
+        if(classificationTypeFilter == "" || classificationTypeFilter == JditoFilterUtils.getEmptyFilter(ContextUtils.getEntity(object_type))) //also push all the indicators that have a filter set into classificationTypesFilterObj
+            classificationTypesNoFilterObj[object_type][classificationGroupId][classificationTypeId] = classificationTypeFilter;
+        else //and the ones without a filter into classificationTypesNoFilterObj
+            classificationTypesFilterObj[object_type][classificationGroupId][classificationTypeId] = classificationTypeFilter;
+        
+        helperObject[classificationTypeId] = "";
+    }
+}
+
+//object_type, object_rowId, classificationstorageId and the classificationstring (e.g. "ACB") of the classificationStorage datasets that habe the outdated flag set
+outdatedStoredClassifications = newSelect("CLASSIFICATIONSTORAGE.OBJECT_TYPE, CLASSIFICATIONSTORAGE.OBJECT_ROWID, \n\
+                                                    CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID, CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE")
+                                                .from("CLASSIFICATIONSTORAGE")
+                                                .where("CLASSIFICATIONSTORAGE.OUTDATED", 1)
+                                                .orderBy("OBJECT_TYPE")
+                                                .table();
+helperObject = {};                                      
+if(outdatedStoredClassifications)
+{
+    //build classificationStorageObject out of outdatedStoredClassifications
+    for (i = 0; i < outdatedStoredClassifications.length; i++) 
+    {
+        for (ii = 0; ii < outdatedStoredClassifications[i].length; ii++) 
         {
-            scoreObject[scoreArray[i][0]][scoreArray[i][1]][scoreArray[i][2]][scoreArray[i][3]] = scoreArray[i][4]; //score
-            helperObject[scoreArray[i][3]] = "";
+            [object_type, object_rowId, classificationStorageId, classificationScore] = outdatedStoredClassifications[i];
+
+            if(!helperObject.hasOwnProperty(object_type)) //objectType
+            {
+                classificationStorageObject[object_type] = {}; //puts objectType in classificationStorageObject and already initializes the object that later get's filled with the groups and their types
+                helperObject[object_type] = "";
+                objectTypes.push(object_type); //also push all the objectTypes in an Array for later (the updating happens one objectType at a time)
+
+            }
+            if(!helperObject.hasOwnProperty(object_rowId)) //objectRowId
+            {
+                classificationStorageObject[object_type][object_rowId] = [classificationStorageId, classificationScore]; //same logic as before
+                helperObject[object_rowId] = "";
+                objectRowIdArray.push(object_rowId); //also push all the objectTypes in an Array for later
+            }
         }
     }
 }
+                                                
+                                                
+if(outdatedStoredClassifications.length > 0)
+{   storedClassificationFlag = true; //this variable can easily be checked to see what we are updating
+    runUpdating++;
+}
 
-helperObject = {}; //resets the helper object
-
-//All the gradings of the classification groups
-var gradingArray = newSelect("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, \n\
-                                CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID, CLASSIFICATIONGRADING.MAXGRADEFORSCORE, CLASSIFICATIONGRADING.GRADING")
-                                .from("CLASSIFICATIONGROUP")
-                                .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
-                                .join("CLASSIFICATIONGRADING", "CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
-                                .orderBy("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONGROUP.SORTING, \n\
-                                    CLASSIFICATIONTYPE.SCORETYPE, CLASSIFICATIONGRADING.MAXGRADEFORSCORE asc")
-                                .table();
-                                
-//logic from above applies here aswell
-for (i = 0; i < gradingArray.length; i++) 
+if(groupsThatNeedUpdate.length > 0)
 {
-    [object_type, classificationGroupId, classificationTypeId, classificationGradingId, classificationGradingMaxScore, classificationGrading] = gradingArray[i];
+    runUpdating++;
+}
 
-    if(!helperObject.hasOwnProperty(gradingArray[i][0])) //objectType
+//if runUpdating == 0: noting has to be updated
+//if runUpdating > 0: run the updating this often (possible values: 1 or 2 -> either only for the classificationStorage that's outdated, 
+//                                                                  or only the classificationgroups with atleast one outdated classificationType or both))
+// --> we always start with the updating for the outdated classificationStorage datasets by using the storedClassificationFlag as way of 
+// checking what we are updating (the flag get's set to true if we have atleast one outdated classificationStorage (see above) and to false after the first loop)
+for (xyz = 0; xyz < runUpdating; xyz++)
+{
+    if(!storedClassificationFlag) //flag = false: we are not updating classificationStorage -> different condition needed (this logic get's used a lot)
     {
-        gradingObject[gradingArray[i][0]] = {};
-        helperObject[gradingArray[i][0]] = "";
+        objectTypes = [];
+        staticClassificationTypes = newSelect("CLASSIFICATION.OBJECT_TYPE, CLASSIFICATION.OBJECT_ROWID, CLASSIFICATION.CLASSIFICATIONTYPE_ID, CLASSIFICATION.SCOREPOINTS")
+                                        .from("CLASSIFICATION")
+                                        .join("CLASSIFICATIONTYPE", "CLASSIFICATION.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID")
+                                        .where("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", groupsThatNeedUpdate, SqlBuilder.NOT_IN())
+                                        .table();
+        correctCondition = newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", groupsThatNeedUpdate, SqlBuilder.IN())
     }
-    if(!helperObject.hasOwnProperty(gradingArray[i][1])) //classificationGroup
+    else
     {
-        gradingObject[gradingArray[i][0]][gradingArray[i][1]] = {};
-        helperObject[gradingArray[i][1]] = "";
+        correctCondition = newWhere("CLASSIFICATIONTYPE.OBJECT_TYPE", objectTypes, SqlBuilder.IN())
     }
-    if(!helperObject.hasOwnProperty(gradingArray[i][2])) //classificationGrading
+    //All the possible scores of 1: the outdated classification types or 2: of all the classificationtypes of the outdated classificationStorages
+    scoreArray = newSelect("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID, \n\
+                                CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID, CLASSIFICATIONSCORE.SCOREPERCENT/100, CLASSIFICATIONTYPE.FILTER")
+                                        .from("CLASSIFICATIONGROUP")
+                                        .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
+                                        .join("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID")
+                                        .where(correctCondition)
+                                        .orderBy("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONGROUP.SORTING, CLASSIFICATIONTYPE.SCORETYPE, CLASSIFICATIONSCORE.SORT")
+                                        .table();
+    helperObject = {};
+    //build scoreObject out of scoreArray and also build classificationTypesFilterObj and classificationTypesNoFilterObj
+    for (i = 0; i < scoreArray.length; i++) 
     {
-        gradingObject[gradingArray[i][0]][gradingArray[i][1]][gradingArray[i][2]] = [gradingArray[i][3], gradingArray[i][4]]; //maxGradeForScore
-        helperObject[gradingArray[i][2]] = "";
-    }
-}
+        for (ii = 0; ii < scoreArray[i].length; ii++) 
+        {
+            [object_type, classificationGroupId, classificationTypeId, classificationScoreId, classificationScore] = scoreArray[i];
 
-for (i = 0; i < objectTypes.length; i++) //update for each object_type
-{
-    outputInformation[objectTypes[i]] = {
-        updatedElements: 0,
-        nonChangedElements: 0
-    };
-    isOrganisation = false;
-    if(objectTypes[i] == "Organisation")
+            if(!helperObject.hasOwnProperty(object_type)) //objectType
+            {
+                scoreObject[object_type] = {}; //puts objectType in scoreObject and already initializes the object that later get's filled with the groups and their types
+                helperObject[object_type] = "";
+                if(!storedClassificationFlag)
+                    objectTypes.push(object_type); //also push all the objectTypes in an Array for later (the updating happens one objectType at a time)
+                
+                if(classificationTypesFilterObj[object_type] == undefined)
+                    classificationTypesFilterObj[object_type] = {}; //initializing for later use
+                if(classificationTypesNoFilterObj[object_type] == undefined)
+                    classificationTypesNoFilterObj[object_type] = {}; //initializing for later use
+            }
+            if(!helperObject.hasOwnProperty(classificationGroupId)) //classificationGroup
+            {
+                scoreObject[object_type][classificationGroupId] = {}; //same logic as before
+                helperObject[classificationGroupId] = "";
+
+                if(classificationTypesFilterObj[object_type][classificationGroupId] == undefined)
+                    classificationTypesFilterObj[object_type][classificationGroupId] = {}; //initializing 
+                if(classificationTypesNoFilterObj[object_type][classificationGroupId] == undefined)
+                    classificationTypesNoFilterObj[object_type][classificationGroupId] = {}; //initializing 
+            }
+            if(!helperObject.hasOwnProperty(classificationTypeId)) //classificationType
+            {            
+                scoreObject[object_type][classificationGroupId][classificationTypeId] = {}; //same logic as before
+                helperObject[classificationTypeId] = "";
+                if(scoreArray[i][5] == "" || scoreArray[i][5] == JditoFilterUtils.getEmptyFilter(ContextUtils.getEntity(object_type))) //also push all the indicators that have a filter set into classificationTypesFilterObj
+                {
+                    if(classificationTypesNoFilterObj[object_type][classificationGroupId][classificationTypeId] == undefined)
+                        classificationTypesNoFilterObj[object_type][classificationGroupId][classificationTypeId] = scoreArray[i][5];
+                }
+                else //and the ones without a filter into classificationTypesNoFilterObj
+                {
+                    if(classificationTypesFilterObj[object_type][classificationGroupId][classificationTypeId] == undefined)
+                        classificationTypesFilterObj[object_type][classificationGroupId][classificationTypeId] = scoreArray[i][5];
+                }
+            }
+            if(!helperObject.hasOwnProperty(scoreArray[i][3])) //classificationScore
+            {
+                scoreObject[object_type][classificationGroupId][classificationTypeId][scoreArray[i][3]] = scoreArray[i][4]; //score
+                helperObject[scoreArray[i][3]] = "";
+            }
+        }
+    }
+    if(!storedClassificationFlag) // we already habe the classificationStorageObject if we are updating for the outdated classificationStorage
     {
-        currentObjectTable = "CONTACT";
-        currentObjectColumn = "CONTACT.CONTACTID";
-        isOrganisation = true;
+        classificationStorageArray = newSelect("OBJECT_TYPE, OBJECT_ROWID, CLASSIFICATIONSTORAGEID, CLASSIFICATIONVALUE")
+                                                .from("CLASSIFICATIONSTORAGE")
+                                                .orderBy("OBJECT_TYPE")
+                                                .table();
+        helperObject = {}; //resets the helper object
+        for (i = 0; i < classificationStorageArray.length; i++) 
+        {
+            for (ii = 0; ii < classificationStorageArray[i].length; ii++) 
+            {
+                [object_type, object_rowId, classificationStorageId, classificationValue] = classificationStorageArray[i];
+
+                if(!helperObject.hasOwnProperty(object_type)) //objectType
+                {
+                    classificationStorageObject[object_type] = []; //same logic as before
+                    helperObject[object_type] = "";
+                }
+                if(!helperObject.hasOwnProperty(object_rowId)) //objectType
+                {
+                    classificationStorageObject[object_type][object_rowId] = []; //same logic as before
+                    helperObject[object_rowId] = "";
+                }
+                if(!helperObject.hasOwnProperty(object_rowId + classificationStorageId)) //objectRowId
+                {
+                    classificationStorageObject[object_type][object_rowId] = [classificationStorageId, classificationValue]; //same logic as before
+                    helperObject[object_rowId + classificationStorageId] = "";
+                }
+
+            }
+        }
     }
-    else
+    if(!storedClassificationFlag) //we don't have any static classifications if we are updating for the outdated classificationStorage
     {
-        currentObjectTable =  objectTypes[i];
-        currentObjectColumn = objectTypes[i] + "." + objectTypes[i] +"ID";
+        staticClassificationsArray = newSelect("CLASSIFICATION.OBJECT_TYPE, CLASSIFICATION.OBJECT_ROWID, CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, \n\
+                                                    CLASSIFICATION.CLASSIFICATIONTYPE_ID, CLASSIFICATION.SCOREPOINTS")
+                                        .from("CLASSIFICATION")
+                                        .join("CLASSIFICATIONTYPE", "CLASSIFICATION.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID")
+                                        .where("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", groupsThatNeedUpdate, SqlBuilder.NOT_IN())
+                                        .orderBy("CLASSIFICATION.OBJECT_TYPE, CLASSIFICATION.OBJECT_ROWID, CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID")
+                                        .table();
+
+        helperObject = {}; //resets the helper object
+        //build staticClassificationsObject out of scoreArray and also build classificationTypesFilterObj
+        for (i = 0; i < staticClassificationsArray.length; i++) 
+        {
+            for (ii = 0; ii < staticClassificationsArray[i].length; ii++) 
+            {
+                [object_type, object_rowId, classificationGroupId,  classificationTypeId, classificationScorePoints] = staticClassificationsArray[i];
+
+                if(!helperObject.hasOwnProperty(object_type)) //objectType
+                {
+                    staticClassificationsObject[object_type] = {}; //same logic as before
+                    helperObject[object_type] = "";
+                }
+                if(!helperObject.hasOwnProperty(object_rowId)) //objectRowId
+                {
+                    staticClassificationsObject[object_type][object_rowId] = {}; //same logic as before
+                    helperObject[object_rowId] = "";
+                }
+                if(!helperObject.hasOwnProperty(object_rowId + classificationGroupId)) //classificationGroupId
+                {            
+                    staticClassificationsObject[object_type][object_rowId][classificationGroupId] = {}; //same logic as before
+                    helperObject[object_rowId + classificationGroupId] = "";
+                }
+                if(!helperObject.hasOwnProperty(object_rowId + classificationTypeId)) //classificationScore
+                {
+                    if(staticClassificationsObject[object_type][object_rowId][classificationGroupId][classificationTypeId] == undefined)
+                        staticClassificationsObject[object_type][object_rowId][classificationGroupId][classificationTypeId] = classificationScorePoints;
+                    else
+                        staticClassificationsObject[object_type][object_rowId][classificationGroupId][classificationTypeId] = eMath.addInt(Number(staticClassificationsObject[object_type][object_rowId][classificationGroupId][classificationTypeId]), Number(classificationScorePoints))
+                    helperObject[object_rowId + classificationTypeId] = "";
+                }
+            }
+        }
     }
     
-    //this is the "upgrade" part of this process:
-    //first: insert default values into the records that have no entries 
-    idsWithoutStoredClassification = newSelect(currentObjectColumn)
-        .from(currentObjectTable)
-        .where(currentObjectColumn, newSelect("CLASSIFICATIONSTORAGE.OBJECT_ROWID").from("CLASSIFICATIONSTORAGE").where("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypes[i]), SqlBuilder.NOT_IN())
-                                                                        
-    if(isOrganisation)
+    if(!storedClassificationFlag)
     {
-        idsWithoutStoredClassification.and("CONTACT.PERSON_ID is null")
-                .and("CONTACT.ORGANISATION_ID", OrgUtils.getPrivateOrganisationId(), SqlBuilder.NOT_EQUAL());
+        correctCondition = newWhere("CLASSIFICATIONTYPE.OBJECT_TYPE", objectTypesThatNeedUpdate, SqlBuilder.IN())
     }
-        
-    idsWithoutStoredClassification = idsWithoutStoredClassification.arrayColumn();
 
-    if(idsWithoutStoredClassification)
-        ClassificationUtils.insertEmptyClassification(idsWithoutStoredClassification, objectTypes[i]);
+    //All the gradings of the classification groups that have either 1: atleast one classificationType with the outdated flag or 2: have classificationtypes 
+    //of the object_types that we need for updating for the outdated classificationStorage (depends on the condition, see above) 
+    gradingArray = newSelect("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, \n\
+                                    CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID, CLASSIFICATIONGRADING.MINPERCENT, CLASSIFICATIONGRADING.GRADING")
+                        .from("CLASSIFICATIONGROUP")
+                        .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
+                        .where(correctCondition)
+                        .join("CLASSIFICATIONGRADING", "CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
+                        .orderBy("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONGROUP.SORTING, \n\
+                                                        CLASSIFICATIONTYPE.SCORETYPE, CLASSIFICATIONGRADING.MINPERCENT asc")
+                        .table();
     
-    //second: update all entries with correct classificaiton values
+    helperObject = {}; //resets the helper object
+
+    //logic from above applies here aswell
+    for (i = 0; i < gradingArray.length; i++) 
+    {
+        [object_type, classificationGroupId, classificationTypeId, minPercent, classificationGrading] = gradingArray[i];
+
+        if(!helperObject.hasOwnProperty(object_type)) //objectType
+        {
+            gradingObject[object_type] = {};
+            helperObject[object_type] = "";
+        }
+        if(!helperObject.hasOwnProperty(classificationGroupId)) //classificationGroup
+        {
+            gradingObject[object_type][classificationGroupId] = {};
+            helperObject[classificationGroupId] = "";
+        }
+        if(!helperObject.hasOwnProperty(classificationTypeId)) //classificationGrading
+        {
+            gradingObject[object_type][classificationGroupId][classificationTypeId] = [minPercent, classificationGrading]; //minPercent
+            helperObject[classificationTypeId] = "";
+        }
+    }
     
-    //all groups of the objectType in the correct order, needed later to also add the "-" gradings if no classificationType has been set under that group
-    orderedGroups = newSelect("distinct CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONGROUP.SORTING")
-        .from("CLASSIFICATIONGROUP")
-        .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
-        .where("CLASSIFICATIONTYPE.OBJECT_TYPE", objectTypes[i])
-        .orderBy("CLASSIFICATIONGROUP.SORTING")
-        .table();
+    if(!storedClassificationFlag)
+    {
+        correctCondition = newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", groupsThatNeedUpdate, SqlBuilder.IN());
+    }
+
+    bestPossibleScoresArray = newSelect("OBJECT_TYPE, CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID, \n\
+                                    CLASSIFICATIONTYPE.SCOREPOINTS *(select max(CLASSIFICATIONSCORE.SCOREPERCENT)/100 from CLASSIFICATIONSCORE)")
+                                        .from("CLASSIFICATIONTYPE")
+                                        .where(correctCondition)
+                                        .orderBy("OBJECT_TYPE, CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID")
+                                        .table();
+                                        
+    helperObject = {}; //resets the helper object
 
-    //private callback function that processes the achieved scores per object type
-    function _processAchievedScoresBatchFn(pBatchData, pBatchNum)
+    //logic from above applies here aswell
+    for (i = 0; i < bestPossibleScoresArray.length; i++) 
     {
-        //logic from above applies here aswell
-        for (ii = 0; ii < pBatchData.length; ii++) 
+        [object_type, classificationGroupId, classificationTypeId, bestValue] = bestPossibleScoresArray[i];
+
+        if(!helperObject.hasOwnProperty(object_type)) //objectType
+        {
+            bestPossibleScoresObj[object_type] = {};
+            helperObject[object_type] = "";
+        }
+        if(!helperObject.hasOwnProperty(classificationGroupId)) //classificationGroup
         {
-            [uid, classificationGroupId, classificationTypeId, classificationScore] = pBatchData[ii];
+            bestPossibleScoresObj[object_type][classificationGroupId] = {};
+            helperObject[classificationGroupId] = "";
+        }
+        if(!helperObject.hasOwnProperty(classificationTypeId)) //classificationType
+        {
+            bestPossibleScoresObj[object_type][classificationGroupId][classificationTypeId] = bestValue; //best possible value
+            helperObject[classificationTypeId] = "";
+        }
+    }
+
+    for (i = 0; i < objectTypes.length; i++)
+    {
 
-            if(!helperObject.hasOwnProperty(pBatchData[ii][0])) //uid
+        outputInformation[objectTypes[i]] = {
+            updatedElements: 0,
+            nonChangedElements: 0,
+            checkedElements: 0,
+            persistentDatasetsUpdated: 0
+        };
+    }
+    
+    for (i = 0; i < objectTypes.length; i++) //update for each object_type
+    {
+        isOrganisation = false;
+        if(objectTypes[i] == "Organisation")
+        {
+            currentObjectTable = "CONTACT";
+            currentObjectColumn = "CONTACT.CONTACTID";
+            isOrganisation = true;
+        }
+        else
+        {
+            currentObjectTable =  objectTypes[i];
+            currentObjectColumn = objectTypes[i] + "." + objectTypes[i] +"ID";
+        }
+
+        if(isOrganisation)
+            filterFields = ["CONTACTID", "CUSTOMERCODE", "INFO", "LANGUAGE", "NAME", "STANDARD_CITY", "STANDARD_EMAIL_COMMUNICATION", "STANDARD_PHONE_COMMUNICATION", "STATUS", "TYPE"];
+        else if(currentObjectTable == "Salesproject")
+            filterFields = ["SALESPROJECTID", "CONTACT_ID", "ENDDATE", "INFO", "PHASE", "PROBABILITY", "PROJECTCODE", "PROJECTTITLE", "REASONS", "STARTDATE", "STATUS", "VOLUME"];
+        else
+            throw new Error("updateClassifications_serverProcess: objectType doesn't exist or is not implemented correctly, contact an administrator.");
+
+        //private function for code readability (get's called once for every object_type)
+        _buildFilteredRecsObject();
+
+        //this is the "upgrade" part of this process:
+        //Update all entries with correct classificaiton values
+
+        //all groups of the objectType in the correct order, needed later to also add the "-" gradings if no classificationType has been set under that group
+        orderedGroups = newSelect("distinct CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONGROUP.SORTING")
+                                    .from("CLASSIFICATIONGROUP")
+                                    .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID")
+                                    .where("CLASSIFICATIONTYPE.OBJECT_TYPE", objectTypes[i])
+                                    .orderBy("CLASSIFICATIONGROUP.SORTING")
+                                    .table();
+        
+        var persistedClassificationObj = {}
+        //private callback function that processes the achieved scores per object type
+        function _processAchievedScoresBatchFn(pBatchData, pBatchNum)
+        {
+            //logic from above applies here aswell
+            for (ii = 0; ii < pBatchData.length; ii++) 
             {
-                archievedScoresObject[pBatchData[ii][0]] = {};
-                helperObject[pBatchData[ii][0]] = "";
-                groupString[pBatchData[ii][0]] = ""; //groupString is another helper object to store all the groupIds
+                [uid, classificationGroupId, classificationTypeId, classificationScore, classificationScorePercent, classificationScoreSaved, classificationTypeFilter, classificationId, classificationScoreTitle] = pBatchData[ii];
+
+                if(!helperObject.hasOwnProperty(uid)) //uid
+                {
+                    achievedScoresObj[uid] = {};
+                    groupObject[uid] = ""; //groupObject is another helper object to store all the groupIds
+                    achievedScoresTypeObj[uid] = {};
+                    persistedClassificationObj[uid] = {};
+                    helperObject[uid] = "";
+                }
+                if(!helperObject.hasOwnProperty(uid + classificationGroupId)) //classificationGroup
+                {
+                    groupObject[uid] = groupObject[uid].toString() + classificationGroupId.toString() +" ";
+                    achievedScoresObj[uid][classificationGroupId] = {};
+                    achievedScoresTypeObj[uid][classificationGroupId] = {};
+                    persistedClassificationObj[uid][classificationGroupId] = {};
+                    helperObject[uid + classificationGroupId] = "";
+                }
+                if(!helperObject.hasOwnProperty(uid + classificationTypeId)) //classificationType
+                {
+                    if(_isRelevant())
+                    {
+                        if(achievedScoresObj[uid][classificationGroupId]["Score"] == undefined)
+                            achievedScoresObj[uid][classificationGroupId]["Score"] = 0;
+                        score = eMath.addDec(parseFloat(achievedScoresObj[uid][classificationGroupId]["Score"]), parseFloat(classificationScore));
+                        achievedScoresObj[uid][classificationGroupId]["Score"] = score;
+                        achievedScoresObj[uid][classificationGroupId]["Grade"] = ClassificationUtils.getGradingFromObject(
+                            gradingObject[objectTypes[i]], classificationGroupId, score, bestPossibleScoresGroupObj[uid][classificationGroupId]);
+                        
+                        if(parseFloat(classificationScore) != parseFloat(classificationScoreSaved) && classificationScore != undefined)
+                        {
+
+                            achievedScoresTypeObj[uid][classificationGroupId][classificationId] = [parseFloat(classificationScore)];
+                        }
+                        persistedClassificationObj[uid][classificationGroupId][classificationTypeId] = {};//store all classificationtypes that we have for that dataset in persistedClassificationObj
+                        helperObject[uid + classificationTypeId] = "";
+                    }
+                    else
+                    {
+                        deleteCond = newWhere("CLASSIFICATION.CLASSIFICATIONID", classificationId);
+                        deleteCond.deleteData(true, "CLASSIFICATION");
+                        outputInformation[objectTypes[i]].persistentDatasetsUpdated++;
+                        
+                        helperObject[uid + classificationTypeId] = "";
+                    }
+                }
             }
-            if(!helperObject.hasOwnProperty(pBatchData[ii][0] + pBatchData[ii][1])) //classificationGroup
+        }
+
+        if(!storedClassificationFlag)
+        {
+            correctCondition = newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", groupsThatNeedUpdate, SqlBuilder.IN())
+        }
+        else
+        {
+            correctCondition = newWhere(currentObjectColumn, objectRowIdArray, SqlBuilder.IN())
+        }
+
+        achievedScoresStmt = newSelect(currentObjectColumn + ", CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, \n\
+                                            CLASSIFICATION.CLASSIFICATIONTYPE_ID, "+ SqlBuilder.caseWhen(newWhere("CLASSIFICATIONSCORE.SCOREPERCENT/100*CLASSIFICATIONTYPE.SCOREPOINTS is null"))
+                                                            .then("0")
+                                                            .elseValue("CLASSIFICATIONSCORE.SCOREPERCENT/100*CLASSIFICATIONTYPE.SCOREPOINTS")
+                                                            .toString()+ ", \n\
+                                            "+SqlBuilder.caseWhen(newWhere("CLASSIFICATIONSCORE.SCOREPERCENT/100 is null"))
+                                                            .then("0")
+                                                            .elseValue("CLASSIFICATIONSCORE.SCOREPERCENT/100")
+                                                            .toString()+", CLASSIFICATION.SCOREPOINTS, CLASSIFICATIONTYPE.FILTER, \n\
+                                            CLASSIFICATION.CLASSIFICATIONID, CLASSIFICATIONSCORE.TITLE")
+                                        .from(currentObjectTable)
+                                        .join("CLASSIFICATION", "CLASSIFICATION.OBJECT_ROWID = " + currentObjectColumn)
+                                        .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATION.CLASSIFICATIONTYPE_ID")
+                                        .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATION.VALUE = CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID")
+                                        .where(correctCondition);
+
+        if(isOrganisation)
+            achievedScoresStmt.and("CONTACT.PERSON_ID is null");
+
+        achievedScoresStmt.orderBy(currentObjectColumn + ", CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, CLASSIFICATIONSCORE.SCOREPERCENT asc");
+
+        bestPossibleScoreStmt = newSelect(currentObjectColumn + ", CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, CLASSIFICATION.CLASSIFICATIONTYPE_ID,\n\
+                                                CLASSIFICATIONTYPE.FILTER")
+                                        .from(currentObjectTable)
+                                        .join("CLASSIFICATION", "CLASSIFICATION.OBJECT_ROWID = " + currentObjectColumn)
+                                        .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATION.CLASSIFICATIONTYPE_ID")
+                                        .where(correctCondition);
+        if(isOrganisation)
+            bestPossibleScoreStmt.and("CONTACT.PERSON_ID is null");
+
+        bestPossibleScoreStmt.orderBy(currentObjectColumn + ", CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID");
+
+        bestPossibleScoresGroupObj = {};
+        helperObject = {};
+        bestPossibleScoreStmt.pageSize(100)
+            .forEachPage(_buildBestPossibleScoresGroupObjFn);
+
+        achievedScoresTypeObj = {};
+        helperObject = {};
+        achievedScoresObj = {};
+        achievedScoresStmt.pageSize(100)
+            .forEachPage(_processAchievedScoresBatchFn);
+        
+        if(storedClassificationFlag != true)
+            _insertPersistendClassificationDataIfNeeded();
+        //do this after all the data is collected since the achievedScoresStmt returns several records for each rowId. 
+        //If this would be done in the batch function it would result in false classificationstorage-results because not all records for a rowId have been used
+        for (var row_Id in achievedScoresObj)
+        {   
+            
+            chainedGrading = classificationStorageObject[objectTypes[i]][row_Id][1];
+            
+            for (var groupId in achievedScoresObj[row_Id]) 
+            {
+                position = 0;
+                
+                for (ii = 0; ii < orderedGroups.length; ii++) {
+                    if (orderedGroups[ii][0] == groupId)
+                    {
+                        position = ii; //current position
+                        break;
+                    }
+                }
+                if(achievedScoresObj[row_Id][groupId]["Grade"] != undefined)
+                    chainedGrading = StringUtils.replaceAt(chainedGrading, position, achievedScoresObj[row_Id][groupId]["Grade"]); //update the stored classificationString for each dataset
+                else
+                {
+                    chainedGrading = StringUtils.replaceAt(chainedGrading, position, "-"); //update the stored classificationString -> remove for irrelevant groups
+                }
+            }
+
+            for (ii = 0; iii < orderedGroups.length; ii++) //the empty gradings have been ignored, but should be filled with "-"
+            {
+                if(!groupObject[row_Id].toString().includes(orderedGroups[ii][0].toString())) //check which ones aren't included and add "-" for those at correct the position
+                {
+                    chainedGrading = chainedGrading.substring(0, ii) + "-" + chainedGrading.substring(ii, chainedGrading.length);
+                }
+            }
+
+            //update the specified dataset if the already stored ClassificatioNValue differs from the freshly calculated one
+            cond = newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", row_Id)
+                .and("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypes[i])
+                .and("CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE", chainedGrading, SqlBuilder.NOT_EQUAL());
+            if(new RegExp("^-+$").test(chainedGrading) == true || chainedGrading == "-")
+            {
+                count = newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", row_Id).deleteData(true, "CLASSIFICATIONSTORAGE");
+                deleted = true;
+            }
+            else
             {
-                groupString[pBatchData[ii][0]] = groupString[pBatchData[ii][0]].toString() + pBatchData[ii][1].toString() +" ";
-                archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]] = {};
-                helperObject[pBatchData[ii][0] + pBatchData[ii][1]] = "";
+                count = Number(cond.updateData(true, table, column, null, [chainedGrading]));
+                deleted = false;
             }
-            if(!helperObject.hasOwnProperty(pBatchData[ii][0] + pBatchData[ii][2])) //classificationType
+
+            outputInformation[objectTypes[i]].checkedElements++;
+            if(storedClassificationFlag && !deleted)
+            {
+                newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", row_Id).updateData(true, "CLASSIFICATIONSTORAGE", ["OUTDATED"], null, [0])
+            }
+            if (count > 0)
             {
-                if(archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]]["Score"] == undefined)
-                    archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]]["Score"] = 0;
-                score = eMath.addDec(parseFloat(archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]]["Score"]), parseFloat(pBatchData[ii][3]));
-                archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]]["Score"] = score;
-                archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]]["Grade"] = ClassificationUtils.getGradingFromObject(gradingObject[objectTypes[i]], pBatchData[ii][1], score);
-                helperObject[pBatchData[ii][0] + pBatchData[ii][2]] = "";
+                outputInformation[objectTypes[i]].updatedElements += count;
+            }
+            else
+            {
+                outputInformation[objectTypes[i]].nonChangedElements++;
             }
         }
-    }
+        
+        if(achievedScoresObj.length == 0)
+        {
+            _insertPersistendClassificationDataIfNeeded2()
+        }
 
-    var achievedScoresStmt = newSelect(currentObjectColumn + ", CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, \n\
-                                        CLASSIFICATION.CLASSIFICATIONTYPE_ID, CLASSIFICATIONSCORE.SCORE")
-                                    .from(currentObjectTable)
-                                    .join("CLASSIFICATION", "CLASSIFICATION.OBJECT_ROWID = " + currentObjectColumn)
-                                    .join("CLASSIFICATIONSCORE", "CLASSIFICATION.CLASSIFICATIONSCORE_ID = CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID")
-                                    .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATION.CLASSIFICATIONTYPE_ID");
+        //loop trough achievedScoresTypeObj and update the stored (persistent) data if needed
+        for (var index in achievedScoresTypeObj)
+        {
+            for (var indexII in achievedScoresTypeObj[index]) 
+            {
+                for (var indexIII in achievedScoresTypeObj[index][indexII]) 
+                {
+                    var scorepoints;
+                    var columns = [];
+                    var values = [];
+                    if(Array.isArray(achievedScoresTypeObj[index][indexII][indexIII])) //if isArray == true: scorepoints have to be updated
+                    {
+                        scorepoints = Number(achievedScoresTypeObj[index][indexII][indexIII][0]);
+                    }
 
-    if(isOrganisation)
-        achievedScoresStmt.where("CONTACT.PERSON_ID is null");
+                    cond = newWhere("CLASSIFICATION.CLASSIFICATIONID", indexIII);
 
-    achievedScoresStmt.orderBy(currentObjectColumn + ", CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, CLASSIFICATIONSCORE.SCORE asc");
-    achievedScoresStmt.pageSize(100)
-                        .forEachPage(_processAchievedScoresBatchFn);
+                    if(scorepoints != undefined)
+                    {
+                        columns.push("SCOREPOINTS");
+                        values.push(scorepoints);
+                    }
+                    cond.updateData(true, "CLASSIFICATION", columns, null, values);
+                    outputInformation[objectTypes[i]].persistentDatasetsUpdated++;
+                }
+            }
+        }
+    }
+    
+    if(!storedClassificationFlag)
+    {    for (i = 0; i < scoreArray.length; i++)
+        {
+            let cond = newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", scoreArray[i][2]);
+            cond.updateData(true, "CLASSIFICATIONTYPE", ["OUTDATED"], null, [0]);
+        }
+    }
 
-    //do this after all the data is collected since the achievedScoresStmt returns several records for each rowId. 
-    //If this would be done in the batch function it would result in false classificationstorage-results because not all records for a rowId are used
-    for (var row_Id in archievedScoresObject)
+    outputInfo = outputInfo  + JSON.stringify(outputInformation) + "\n";
+    storedClassificationFlag = false;
+}
+if(runUpdating == 0)
+{
+    outputInfo = outputInfo  + "No Data has been updated, everything already up-to-date"
+}
+logging.log(outputInfo);
+
+
+/**
+ * Builds filteredRecsObj Object which stores all the included Datasets to the specific filter.
+ * (loops trough classificationTypesFilterObj and uses either entites.getRow or an select for every different filter)
+ */
+function _buildFilteredRecsObject()
+{
+    filteredRecsObj = {}; //reset for every objectType
+    executeGetRows = true; //reset for every objectTyp
+    
+    for (var index in classificationTypesFilterObj[objectTypes[i]])
     {
-        chainedGrading = "";
-        //chain all the Classifications together
-        for (var row_IdI in archievedScoresObject[row_Id]) 
+        for (var indexIndex in classificationTypesFilterObj[objectTypes[i]][index]) 
         {
-            chainedGrading += archievedScoresObject[row_Id][row_IdI]["Grade"]
+            var unparsedFilter = classificationTypesFilterObj[objectTypes[i]][index][indexIndex];
+            var filter = JSON.parse(unparsedFilter).filter;
+            //filteredRecsObj uses the filter as the key -> if multiple indicators use the exact same filtercondition we only have to get these rows once
+            if(filteredRecsObj[classificationTypesFilterObj[objectTypes[i]][index][indexIndex]] == undefined)
+            {
+                if(filter["childs"]["0"] != undefined) // ignore empty filters
+                {
+                    //no "." in the name means its a field of the entity itself: use entities.getRow and JditoFilterUtils.filterRecords 
+                    //to check whether or not the Filter excludes this row
+                    if(!filter["childs"]["0"]["name"].includes(".")) 
+                    {
+                        if(executeGetRows) //only do this once for every object type, since the rows don't change depending on the filter
+                        {
+                            var loadConfig = entities.createConfigForLoadingRows()
+                            .entity(ContextUtils.getEntity(objectTypes[i]))
+                            .fields(filterFields);
+
+                            var rows = entities.getRows(loadConfig);
+                            var filterableRows = [];
+                            for (ii = 0; ii < rows.length; ii++) {
+                                filterableRows[ii] = filterFields.map(function (field)
+                                {
+                                    value = null;
+                                    if (field in rows[ii])
+                                        value = rows[ii][field];
+                                    return value;
+                                });
+                            }
+                            executeGetRows = false;
+                        }
+                        //filter gets used after using entities.getRow and not in the loadconfig, since we can have multiple filters 
+                        //and don't want to do entities.getRow for every single one 
+                        filteredRecsObj[unparsedFilter] = JditoFilterUtils.filterRecords(filterFields, filterableRows, filter);
+                    }
+                    else //else: currently a count is made whith the filtercondition as the where clause --> poor performance
+                    {
+                        if(objectTypes[i] == "Organisation")
+                        {
+                            filteredRecsObj[unparsedFilter] = newSelect("CONTACT.CONTACTID")
+                                            .from("ORGANISATION")
+                                            .join("CONTACT", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null")
+                                            .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID")
+                                            .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID")
+                                            .where(db.toFilterCondition(JSON.stringify(filter), "Organisation_entity"))
+                                            .and("ORGANISATION.ORGANISATIONID", OrgUtils.getPrivateOrganisationId(), SqlBuilder.NOT_EQUAL())
+                                            .table();
+                        }
+                        else if(objectTypes[i] == "Salesproject")
+                        {
+                            filteredRecsObj[unparsedFilter] = newSelect("SALESPROJECT.SALESPROJECTID")
+                                            .from("SALESPROJECT")
+                                            .leftJoin("CONTACT", "SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID")
+                                            .leftJoin("ORGANISATION", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID")
+                                            .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID") 
+                                            .where(db.toFilterCondition(JSON.stringify(filter), "Salesproject_entity"))
+                                            .table();
+                        }
+                    }
+                }
+            }
         }
+    }
+}
 
-        for (var iii = 0; iii < orderedGroups.length; iii++) //the empty gradings have been ignored, but should be filled with "-"
+/**
+ * Checks whether or not the classificationType is relevant for the current dataset 
+ * (looping trough classificationTypesNoFilterObj if it's included there: no filter is set and it's relevant, 
+ * othwerwises uses _isRelevantFilter() to check whether or not it get's excluded by the set filter)
+ * returns true/false
+ */
+function _isRelevant()
+{
+    var include = false;
+    
+    if(classificationTypeFilter == "" || classificationTypeFilter == undefined)
+    {
+        for (var index in classificationTypesNoFilterObj[objectTypes[i]])
         {
-            if(!groupString[row_Id].toString().includes(orderedGroups[iii][0].toString())) //check which ones aren't included and add "-" for those at correct the position
+            for (var indexIndex in classificationTypesNoFilterObj[objectTypes[i]][index])
             {
-                chainedGrading = chainedGrading.substring(0, iii) + "-" + chainedGrading.substring(iii, chainedGrading.length);
+                if(classificationTypesNoFilterObj[objectTypes[i]][index][indexIndex] != undefined)
+                {    
+                    include = true;
+                    break;
+                }
             }
         }
+    }
+    else
+    {
+        include = _isRelevantFilter();
+    }
+    return include;
+}
+
+/**
+ * Checks whether or not the classificationType is relevant for the current dataset, 
+ * (loops trough filteredRecsObj to check whether or not the filter excluded the dataset)
+ * returns true/false
+ */
+function _isRelevantFilter()
+{
+    var include = false;
+    var recs = filteredRecsObj[classificationTypeFilter];
+    if(recs != undefined)
+    {
+        include = recs.some(function (rec) {return rec[0] == uid});
+    }
+    return include;
+}
+
+
+function _buildBestPossibleScoresGroupObjFn(pBatchData, pBatchNum)
+{
+    //logic from above applies here aswell
+    for (ii = 0; ii < pBatchData.length; ii++) 
+    {
+        [uid, classificationGroupId, classificationTypeId, classificationTypeFilter, classificationScoreTitle, classificationTypeFilter] = pBatchData[ii];
 
-        //update the specified dataset if the already stored ClassificatioNValue differs from the freshly calculated one
-        cond = newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", row_Id)
-            .and("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypes[i])
-            .and("CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE", chainedGrading, SqlBuilder.NOT_EQUAL());
-        var count = Number(cond.updateData(true, table, column, null, [chainedGrading]));
-        if (count > 0)
+        if(!helperObject.hasOwnProperty(uid)) //uid
         {
-            outputInformation[objectTypes[i]].updatedElements += count;
+            bestPossibleScoresGroupObj[uid] = {};
+            helperObject[uid] = "";
         }
-        else
+        if(!helperObject.hasOwnProperty(uid + classificationGroupId)) //classificationGroup
         {
-            outputInformation[objectTypes[i]].nonChangedElements++;
+            bestPossibleScoresGroupObj[uid][classificationGroupId] = "";
+            helperObject[uid + classificationGroupId] = "";
+        }
+        if(!helperObject.hasOwnProperty(uid + classificationTypeId)) //classificationType
+        {
+            if(_isRelevant() != false)
+            {
+                if(bestPossibleScoresGroupObj[uid][classificationGroupId] == "")
+                    bestPossibleScoresGroupObj[uid][classificationGroupId] = 0;
+                if(bestPossibleScoresObj[objectTypes[i]][classificationGroupId] != undefined && bestPossibleScoresObj[objectTypes[i]][classificationGroupId][classificationTypeId] != undefined)
+                    bestPossibleScoresGroupObj[uid][classificationGroupId] = eMath.addInt(Number(bestPossibleScoresGroupObj[uid][classificationGroupId]), Number(bestPossibleScoresObj[objectTypes[i]][classificationGroupId][classificationTypeId]));
+
+                helperObject[uid + classificationTypeId] = "";
+            }
         }
     }
 }
 
-var outputInfo = "updateClassifications_serverProcess output is:\n" + JSON.stringify(outputInformation);
-logging.log(outputInfo);
\ No newline at end of file
+function _insertPersistendClassificationDataIfNeeded()
+{   
+    var objectsWithClassification = newSelect("distinct CLASSIFICATION.OBJECT_ROWID")
+                                                .from("CLASSIFICATION")
+                                                .where("CLASSIFICATION.OBJECT_TYPE", objectTypes[i])
+                                                .arrayColumn();
+    for (z = 0; z < objectsWithClassification.length; z++) {
+        
+        uid = objectsWithClassification[z];
+        var columns = ["CLASSIFICATION.CLASSIFICATIONID"
+                        , "CLASSIFICATION.VALUE"
+                        , "CLASSIFICATION.CLASSIFICATIONTYPE_ID"
+                        , "CLASSIFICATION.OBJECT_TYPE"
+                        , "CLASSIFICATION.OBJECT_ROWID"
+                        , "CLASSIFICATION.SCOREPOINTS"
+                        ];
+
+        for (var groupId in outdatedClassificationTypeObj[objectTypes[i]])
+        {
+            for (var typeId in outdatedClassificationTypeObj[objectTypes[i]][groupId])
+            {
+                classificationTypeFilter = outdatedClassificationTypeObj[objectTypes[i]][groupId][typeId]["classificationTypeFilter"];
+                if(!persistedClassificationObj[uid][groupId].hasOwnProperty(typeId) && _isRelevant())
+                {
+                    var values = [util.getNewUUID()
+                                    , " "
+                                    , typeId
+                                    , objectTypes[i]
+                                    , uid
+                                    , "0"
+                                ];
+                    db.insertData("CLASSIFICATION", columns, null, values);
+                    outputInformation[objectTypes[i]].persistentDatasetsUpdated++;
+                }
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod b/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod
index 52e9c03b7cf5d4c0792dd5f4ea13a6676520a729..2ba0b1ef3bf179083e4c64eb0ca8d4c6748a4e0e 100644
--- a/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod
+++ b/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>updateClassifications_serverProcess</name>
   <title>Update all Classification entries in the system</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/process/updateClassifications_serverProcess/documentation.adoc</documentation>
   <process>%aditoprj%/process/updateClassifications_serverProcess/process.js</process>
   <alias>Data_alias</alias>
   <variants>
diff --git a/process/workflowDeploy_rest/workflowDeploy_rest.aod b/process/workflowDeploy_rest/workflowDeploy_rest.aod
index 05c891a90280224cd574f42e6347203f67386f3a..ad6fb04bf2304ee5c01e7dd785ff274e146e82f7 100644
--- a/process/workflowDeploy_rest/workflowDeploy_rest.aod
+++ b/process/workflowDeploy_rest/workflowDeploy_rest.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>workflowDeploy_rest</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/workflowDeploy_rest/process.js</process>
diff --git a/process/workflowExtension_serverProcess/process.js b/process/workflowExtension_serverProcess/process.js
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e41601e19704431dcbd03f6022eb9eead22368a1 100644
--- a/process/workflowExtension_serverProcess/process.js
+++ b/process/workflowExtension_serverProcess/process.js
@@ -0,0 +1,15 @@
+import("Context_lib");
+import("Classification_lib");
+import("Workflow_lib");
+import("system.vars");
+import("Observation_lib")
+
+var localVariables = JSON.parse(vars.get("$local.variablesWorkflow"));
+var targetId = localVariables["targetId"];
+var entityName = ContextUtils.getEntity(localVariables["targetContext"]);
+var rowData = JSON.parse(localVariables[WorkflowVariables.ROWDATA()]);
+var changedRows = JSON.parse(localVariables[WorkflowVariables.CHANGED_ROWS()]);
+
+Observation.checkObservation(JSON.parse(vars.get("$local.variablesWorkflow")));
+
+ClassificationUtils.setClassificationStorageDatasetsOutdated([targetId], entityName, rowData, changedRows); 
diff --git a/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod b/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod
index d9ed92e0f4df987544d59237d139ec5c4d0a8458..c344dc7204460dbcff99ddb0c5d92ef5c1656fe6 100644
--- a/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod
+++ b/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>workflowExtension_serverProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/workflowExtension_serverProcess/process.js</process>
+  <alias>Data_alias</alias>
   <variants>
     <element>EXECUTABLE</element>
   </variants>
diff --git a/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod b/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod
index 9d33ad873277ea65215132f0999519ec2e699e08..c52adefed8b5466a9f677e271f2e094ecfd7070d 100644
--- a/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod
+++ b/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod
@@ -1,11 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>workflowLinkTracking_rest</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/workflowLinkTracking_rest/process.js</process>
   <publishAsWebservice v="false" />
   <style>REST</style>
-  <loginTypeId>internal.none</loginTypeId>
+  <loginTypeId>
+    <element>internal.none</element>
+  </loginTypeId>
   <restrictedRoles />
   <alias>Data_alias</alias>
   <variants>
diff --git a/process/workflowPrivileges_rest/workflowPrivileges_rest.aod b/process/workflowPrivileges_rest/workflowPrivileges_rest.aod
index 5a75e4758d9beb4122312853a53092986eb8b853..5ea1497835d807d18c23333b742ad6125d3777f0 100644
--- a/process/workflowPrivileges_rest/workflowPrivileges_rest.aod
+++ b/process/workflowPrivileges_rest/workflowPrivileges_rest.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>workflowPrivileges_rest</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/workflowPrivileges_rest/process.js</process>
diff --git a/process/workflowRoles_rest/workflowRoles_rest.aod b/process/workflowRoles_rest/workflowRoles_rest.aod
index 4f15d52de42e555e108da701ae778db1197ada7e..6cfb124a66132d6976ebf4201c34f5854d6abda2 100644
--- a/process/workflowRoles_rest/workflowRoles_rest.aod
+++ b/process/workflowRoles_rest/workflowRoles_rest.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>workflowRoles_rest</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/workflowRoles_rest/documentation.adoc</documentation>
diff --git a/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod b/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod
index 7922e7f73b3bc4dc4a9beddb7e1c984564411765..24c524d5bbe0a4c81636d114333f22a9f69043e8 100644
--- a/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod
+++ b/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>workflowServiceTaskParams_rest</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/workflowServiceTaskParams_rest/documentation.adoc</documentation>
diff --git a/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod b/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod
index ea3dfbea15a55987d24139a247e60142a9c41790..189d4377abed5818ead11c35ab8892788b3c4974 100644
--- a/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod
+++ b/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>workflowServiceTasks_rest</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/workflowServiceTasks_rest/documentation.adoc</documentation>
diff --git a/process/workflowSignal_rest/process.js b/process/workflowSignal_rest/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..83fe2b22065777c24df4990abcaecad8fffb2487
--- /dev/null
+++ b/process/workflowSignal_rest/process.js
@@ -0,0 +1,23 @@
+import("Workflow_lib");
+import("system.workflow");
+import("system.util");
+
+function restpost (pRequest)
+{
+    var request = JSON.parse(pRequest);
+    
+    var signalObj = JSON.parse(util.decodeBase64String(request.body));
+    if (signalObj && signalObj.signal && WorkflowUtils.engineIsEnabled())
+    {
+        var signal = signalObj.signal;
+        var processInstanceId = signalObj.processInstanceId || null;
+        var variables = signalObj.variables || {};
+        
+        workflow.signalEventReceived(signal, variables, processInstanceId);
+        
+        request.response.statuscode = 200;
+        request.response.body = JSON.stringify(signalObj);
+    }
+    
+    return JSON.stringify(request);
+}
\ No newline at end of file
diff --git a/process/workflowSignal_rest/workflowSignal_rest.aod b/process/workflowSignal_rest/workflowSignal_rest.aod
new file mode 100644
index 0000000000000000000000000000000000000000..db28e29d522c6089bc2bf21bea4c58d67da5f56f
--- /dev/null
+++ b/process/workflowSignal_rest/workflowSignal_rest.aod
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>workflowSignal_rest</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/workflowSignal_rest/process.js</process>
+  <publishAsWebservice v="true" />
+  <style>REST</style>
+  <restAcceptedMimeType>application/json</restAcceptedMimeType>
+  <restDeliveredMimeType>application/json</restDeliveredMimeType>
+  <variants>
+    <element>EXECUTABLE</element>
+  </variants>
+</process>
diff --git a/process/workflowUsers_rest/workflowUsers_rest.aod b/process/workflowUsers_rest/workflowUsers_rest.aod
index 6669992f8a6350bc781118d4751bb12f8f679d05..ff6c8aa88c1d43861d49315a697ad537f3419a24 100644
--- a/process/workflowUsers_rest/workflowUsers_rest.aod
+++ b/process/workflowUsers_rest/workflowUsers_rest.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process 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/process/1.2.1">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
   <name>workflowUsers_rest</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/process/workflowUsers_rest/documentation.adoc</documentation>
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..67a1a52f76abd63922d48d8fa5526f1e470c94a2
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,8 @@
+# xRM
+
+## Useful documents to get started
+
+* [Coding Guidelines](https://neon.adito.de/client/KnowledgeManagement/full?id=dc6e3066-2228-4d04-b9b6-dac792d5bfec)
+* [Customizing Manual](https://neon.adito.de/client/KnowledgeManagement/full?id=534c07da-387a-46e2-b5ab-040a5c1b0ab2)
+* [Designer Manual](https://neon.adito.de/client/KnowledgeManagement/full?id=56507a00-9c49-4be3-b4d5-9f83cb442ff7)
+* [Documentation Overview](https://neon.adito.de/client/KnowledgeManagement/full?id=42a481e3-b27d-446a-8a0b-fe5bffafc2ec)
\ No newline at end of file
diff --git a/rendererDefinition/badge/badge.aod b/rendererDefinition/badge/badge.aod
new file mode 100644
index 0000000000000000000000000000000000000000..e606110fda400df9776157bae1529e0f1e31fe32
--- /dev/null
+++ b/rendererDefinition/badge/badge.aod
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rendererDefinition 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/rendererDefinition/1.0.0">
+  <name>badge</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <rendererType>BADGE</rendererType>
+  <rendererConfig>
+    <badgeRendererConfig>
+      <name>rendererConfig</name>
+    </badgeRendererConfig>
+  </rendererConfig>
+</rendererDefinition>
diff --git a/rendererDefinition/discount/discount.aod b/rendererDefinition/discount/discount.aod
new file mode 100644
index 0000000000000000000000000000000000000000..1e4519c869b81bee8cdec97818a76bc17b1f332e
--- /dev/null
+++ b/rendererDefinition/discount/discount.aod
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rendererDefinition 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/rendererDefinition/1.0.0">
+  <name>discount</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <rendererType>NUMBERFIELD</rendererType>
+  <rendererConfig>
+    <numberFieldRendererConfig>
+      <name>rendererConfig</name>
+      <numberfieldStep v="5" />
+    </numberFieldRendererConfig>
+  </rendererConfig>
+</rendererDefinition>
diff --git a/rendererDefinition/numberInput/numberInput.aod b/rendererDefinition/numberInput/numberInput.aod
new file mode 100644
index 0000000000000000000000000000000000000000..16f103371640f5e6288e79607d636117c685e9a0
--- /dev/null
+++ b/rendererDefinition/numberInput/numberInput.aod
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rendererDefinition 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/rendererDefinition/1.0.0">
+  <name>numberInput</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <rendererType>NUMBERFIELD</rendererType>
+  <rendererConfig>
+    <numberFieldRendererConfig>
+      <name>rendererConfig</name>
+    </numberFieldRendererConfig>
+  </rendererConfig>
+</rendererDefinition>
diff --git a/report/Offer_report/Offer_report.aod b/report/Offer_report/Offer_report.aod
index 737a6889a7a04378f01339685a85661f15da8849..b273251e794bcddc566cbff154b432b35bae704b 100644
--- a/report/Offer_report/Offer_report.aod
+++ b/report/Offer_report/Offer_report.aod
@@ -33,14 +33,6 @@
         <icon>REPORT_24</icon>
         <enabled v="true" />
         <layoutPosition>POSITION_TOP</layoutPosition>
-        <customComponents>
-          <rcCommandButton>
-            <name>Button</name>
-            <onClick>%aditoprj%/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js</onClick>
-            <title>Senden per E-Mail</title>
-            <imageData>%aditoprj%/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png</imageData>
-          </rcCommandButton>
-        </customComponents>
       </ribbonTask>
     </ribbonTasks>
   </ribbon>
diff --git a/report/Offer_report/reportData.jrxml b/report/Offer_report/reportData.jrxml
index f2afe8275137822933e3b91b78f69ef96e2879dd..76b33d239d03b4c903aed440ea6f8c4b5c30df50 100644
--- a/report/Offer_report/reportData.jrxml
+++ b/report/Offer_report/reportData.jrxml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report1" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e7a916c8-3f9a-497d-84bb-3909b15271ea">
-	<property name="ireport.zoom" value="1.9487171000000014"/>
+	<property name="ireport.zoom" value="1.7715610000000064"/>
 	<property name="ireport.x" value="0"/>
-	<property name="ireport.y" value="190"/>
+	<property name="ireport.y" value="279"/>
 	<parameter name="myAddr" class="java.lang.String"/>
 	<parameter name="Pos" class="java.lang.String"/>
 	<parameter name="Articledescription" class="java.lang.String"/>
@@ -24,7 +24,7 @@
 	<parameter name="OfferDeliveryTerm" class="java.lang.String"/>
 	<parameter name="responsible" class="java.lang.String"/>
 	<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
-		<defaultValueExpression><![CDATA["C:\\Entwicklung\\0.0\\project\\basic2\\report\\Offer_report\\"]]></defaultValueExpression>
+		<defaultValueExpression><![CDATA["C:\\Users\\s.neumaier\\Documents\\AditoProjects\\basic_2020.2\\report\\Offer_report\\"]]></defaultValueExpression>
 	</parameter>
 	<parameter name="adito.datasource.subdata" class="java.lang.Object"/>
 	<parameter name="SUMITEMSUM" class="java.lang.Double"/>
@@ -32,6 +32,11 @@
 	<parameter name="adito.image.myLogo" class="java.lang.String"/>
 	<parameter name="printDiscount" class="java.lang.String"/>
 	<parameter name="directlyResponsible" class="java.lang.String"/>
+	<parameter name="subTotal" class="java.lang.String"/>
+	<parameter name="InvoiceDiscount" class="java.lang.String"/>
+	<parameter name="TotalWithoutVat" class="java.lang.String"/>
+	<parameter name="TotalWithVat" class="java.lang.String"/>
+	<parameter name="printHeadDiscount" class="java.lang.String"/>
 	<queryString>
 		<![CDATA[]]>
 	</queryString>
@@ -53,6 +58,9 @@
 	<field name="OFFER_HEADER" class="java.lang.String"/>
 	<field name="ITEMSUM" class="java.lang.String"/>
 	<field name="OFFER_FOOTER" class="java.lang.String"/>
+	<field name="OFFER_DISCOUNT" class="java.lang.String"/>
+	<field name="OFFER_DISCOUNTED_NET" class="java.lang.String"/>
+	<field name="OFFER_DISCOUNTSUM" class="java.lang.String"/>
 	<sortField name="OFFER_OFFERID"/>
 	<group name="OFFERID" isStartNewPage="true">
 		<groupExpression><![CDATA[$F{OFFER_OFFERID}]]></groupExpression>
@@ -233,19 +241,69 @@
 			</band>
 		</groupHeader>
 		<groupFooter>
-			<band height="24">
+			<band height="23">
 				<line>
 					<reportElement x="356" y="4" width="196" height="1" uuid="228a3e86-96b6-470f-b9d8-9c566a0f1065"/>
 				</line>
 				<textField pattern="#,##0.00;-#,##0.00">
-					<reportElement x="452" y="6" width="100" height="15" uuid="f71cd6ef-6a10-4bd5-9bd5-4c8de5a276f1"/>
+					<reportElement x="469" y="8" width="83" height="15" uuid="f71cd6ef-6a10-4bd5-9bd5-4c8de5a276f1"/>
 					<textElement textAlignment="Right">
-						<font size="8"/>
+						<font size="8" isBold="true"/>
 					</textElement>
 					<textFieldExpression><![CDATA[$P{SUMITEMSUM}]]></textFieldExpression>
 				</textField>
+				<textField>
+					<reportElement x="356" y="8" width="113" height="15" uuid="c505a568-afb9-4cb3-9d15-b7803aeff207"/>
+					<textElement>
+						<font size="8" isBold="true"/>
+					</textElement>
+					<textFieldExpression><![CDATA[$P{subTotal}]]></textFieldExpression>
+				</textField>
 			</band>
-			<band height="18">
+			<band height="34">
+				<printWhenExpression><![CDATA[!$P{printHeadDiscount}.equals("0")]]></printWhenExpression>
+				<textField isStretchWithOverflow="true">
+					<reportElement positionType="Float" x="469" y="19" width="83" height="15" uuid="26cc2b42-75a8-4e17-a674-f75a83465476">
+						<printWhenExpression><![CDATA[!$P{printHeadDiscount}.equals("0")]]></printWhenExpression>
+					</reportElement>
+					<textElement textAlignment="Right">
+						<font size="8" isBold="true"/>
+						<paragraph lineSpacing="Proportional"/>
+					</textElement>
+					<textFieldExpression><![CDATA[$F{OFFER_DISCOUNTED_NET}]]></textFieldExpression>
+				</textField>
+				<textField isStretchWithOverflow="true">
+					<reportElement positionType="Float" x="356" y="19" width="113" height="15" uuid="05470803-14c1-4ecc-81f0-de432ec80c27">
+						<printWhenExpression><![CDATA[!$P{printHeadDiscount}.equals("0")]]></printWhenExpression>
+					</reportElement>
+					<textElement>
+						<font size="8" isBold="true"/>
+						<paragraph lineSpacing="Proportional"/>
+					</textElement>
+					<textFieldExpression><![CDATA[$P{Total} + " " + $F{OFFER_CURRENCY} + " " + $P{TotalWithoutVat}]]></textFieldExpression>
+				</textField>
+				<textField isStretchWithOverflow="true">
+					<reportElement positionType="Float" x="356" y="2" width="113" height="15" uuid="152d4841-b63c-4cd3-bc6b-935af23ad0b8">
+						<printWhenExpression><![CDATA[!$P{printHeadDiscount}.equals("0")]]></printWhenExpression>
+					</reportElement>
+					<textElement>
+						<font size="8"/>
+						<paragraph lineSpacing="Proportional"/>
+					</textElement>
+					<textFieldExpression><![CDATA[$F{OFFER_DISCOUNT} + " % " + $P{InvoiceDiscount}]]></textFieldExpression>
+				</textField>
+				<textField isStretchWithOverflow="true">
+					<reportElement positionType="Float" x="469" y="2" width="83" height="15" uuid="e205d256-1ac5-439b-9b9c-3735d7a301df">
+						<printWhenExpression><![CDATA[!$P{printHeadDiscount}.equals("0")]]></printWhenExpression>
+					</reportElement>
+					<textElement textAlignment="Right">
+						<font size="8"/>
+						<paragraph lineSpacing="Proportional"/>
+					</textElement>
+					<textFieldExpression><![CDATA[$F{OFFER_DISCOUNTSUM}]]></textFieldExpression>
+				</textField>
+			</band>
+			<band height="19">
 				<subreport>
 					<reportElement isPrintRepeatedValues="false" x="355" y="2" width="196" height="15" isRemoveLineWhenBlank="true" uuid="8683c745-01bf-44aa-af62-a6ba881a9edd"/>
 					<subreportParameter name="PlusSalestax">
@@ -257,46 +315,47 @@
 			</band>
 			<band height="33">
 				<textField>
-					<reportElement x="20" y="13" width="100" height="20" uuid="112f15db-0989-430e-b2c4-61f975f7b8a4">
-						<printWhenExpression><![CDATA[!$P{OfferPaymentTerm}.equals("")]]></printWhenExpression>
-					</reportElement>
-					<textElement>
-						<font size="8"/>
-					</textElement>
-					<textFieldExpression><![CDATA[$P{PaymentConditions}]]></textFieldExpression>
-				</textField>
-				<textField>
-					<reportElement x="122" y="13" width="100" height="20" uuid="8149be09-d439-4e1a-a853-f82bd5e5683e"/>
+					<reportElement x="122" y="12" width="100" height="20" uuid="8149be09-d439-4e1a-a853-f82bd5e5683e"/>
 					<textElement>
 						<font size="8"/>
 					</textElement>
 					<textFieldExpression><![CDATA[$P{OfferPaymentTerm}]]></textFieldExpression>
 				</textField>
+				<line>
+					<reportElement x="356" y="29" width="196" height="1" uuid="982cac61-6b87-4439-93cb-6c89fcc7932c"/>
+					<graphicElement>
+						<pen lineWidth="3.0" lineStyle="Double"/>
+					</graphicElement>
+				</line>
 				<textField>
-					<reportElement x="402" y="8" width="90" height="20" uuid="c3444576-6cb8-47f2-9dc9-e892a91ceb07"/>
-					<textElement textAlignment="Right">
+					<reportElement x="356" y="7" width="113" height="20" uuid="c3444576-6cb8-47f2-9dc9-e892a91ceb07"/>
+					<textElement textAlignment="Left">
 						<font size="8" isBold="true"/>
 					</textElement>
-					<textFieldExpression><![CDATA[$P{Total} + " " + $F{OFFER_CURRENCY}]]></textFieldExpression>
+					<textFieldExpression><![CDATA[$P{Total} + " " + $F{OFFER_CURRENCY} + " " + $P{TotalWithVat}]]></textFieldExpression>
 				</textField>
 				<line>
-					<reportElement x="356" y="2" width="196" height="1" uuid="8973e664-cfc0-4b52-bd0d-c80a49910da2"/>
-				</line>
-				<line>
-					<reportElement x="356" y="30" width="196" height="1" uuid="982cac61-6b87-4439-93cb-6c89fcc7932c"/>
-					<graphicElement>
-						<pen lineWidth="3.0" lineStyle="Double"/>
-					</graphicElement>
+					<reportElement x="356" y="1" width="196" height="1" uuid="8973e664-cfc0-4b52-bd0d-c80a49910da2"/>
 				</line>
 				<textField pattern="###0.00;-###0.00">
-					<reportElement x="491" y="8" width="59" height="20" uuid="75bb0951-e562-4170-a5c2-731d3219ec66"/>
+					<reportElement x="469" y="7" width="81" height="20" uuid="75bb0951-e562-4170-a5c2-731d3219ec66"/>
 					<textElement textAlignment="Right">
 						<font size="8" isBold="true"/>
 					</textElement>
 					<textFieldExpression><![CDATA[$P{TOTAL}]]></textFieldExpression>
 				</textField>
+				<textField>
+					<reportElement x="20" y="12" width="100" height="20" uuid="112f15db-0989-430e-b2c4-61f975f7b8a4">
+						<printWhenExpression><![CDATA[!$P{OfferPaymentTerm}.equals("")]]></printWhenExpression>
+					</reportElement>
+					<textElement>
+						<font size="8"/>
+					</textElement>
+					<textFieldExpression><![CDATA[$P{PaymentConditions}]]></textFieldExpression>
+				</textField>
 			</band>
 			<band height="20">
+				<printWhenExpression><![CDATA[($F{OFFER_FOOTER} != null && !$F{OFFER_FOOTER}.trim().isEmpty())]]></printWhenExpression>
 				<textField>
 					<reportElement x="20" y="0" width="100" height="20" uuid="75b328c0-4ab1-478d-afb8-0ed8974da1af">
 						<printWhenExpression><![CDATA[!$P{OfferDeliveryTerm}.equals("")]]></printWhenExpression>
@@ -315,7 +374,6 @@
 				</textField>
 			</band>
 			<band height="20">
-				<printWhenExpression><![CDATA[($F{OFFER_FOOTER} != null && !$F{OFFER_FOOTER}.trim().isEmpty())]]></printWhenExpression>
 				<textField isStretchWithOverflow="true">
 					<reportElement x="20" y="0" width="530" height="20" uuid="2a2d0fe8-9c83-43b7-913d-a551a9879608"/>
 					<textElement>
diff --git a/report/Offer_report/reportData_subreport1.jrxml b/report/Offer_report/reportData_subreport1.jrxml
index 45e05cbc8afa6664aeeca709bcf3ec6afcf86df2..2429050e564354bcdb770e4cdb3ce3d989251f82 100644
--- a/report/Offer_report/reportData_subreport1.jrxml
+++ b/report/Offer_report/reportData_subreport1.jrxml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="reportData_subreport1" pageWidth="200" pageHeight="802" columnWidth="200" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="65da6912-abcf-40ed-a854-750d851fe857">
-	<property name="ireport.zoom" value="6.72749994932561"/>
+	<property name="ireport.zoom" value="4.177248169415656"/>
 	<property name="ireport.x" value="0"/>
 	<property name="ireport.y" value="0"/>
 	<parameter name="PlusSalestax" class="java.lang.String"/>
diff --git a/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png b/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png
deleted file mode 100644
index 49cda7d673d367ab30051c9aa9dda1dcfad22177..0000000000000000000000000000000000000000
Binary files a/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png and /dev/null differ
diff --git a/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js b/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js
deleted file mode 100644
index 354885d3893c22e85f81c745e62614f8b636523b..0000000000000000000000000000000000000000
--- a/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import("system.text");
-import("system.swing");
-import("system.translate");
-import("system.question");
-import("system.vars");
-import("system.db");
-
-//@TODO: remove
-
-var details = vars.get("$global.RptOfferOrderDetails");
-var orgid = db.cell("select ORGANISATION_ID from CONTACT where CONTACTID = '" + details[1] + "'");
-if (orgid.substr(0, 2) == '0 ') // Privatperson
-{
-    var count = db.cell("select count(*) from COMMUNICATION where medium_id = 3 and ISSTANDARD = 1 and CONTACT_ID = '" + details[1] + "'");
-    if (count == "0") question.showMessage(translate.text("no standard email office"));
-    else
-        sendAutoMail( translate.text("Offer") + " " + details[0], details[1], "Email_Angebot", details[2], "AGB", [], [["SPNR", details[5]]] );
-}
-else // Funktion - Person in Firma
-{
-    var orgrelid = db.cell("select CONTACTID from CONTACT where ORGANISATION_ID = '" + orgid + "'");
-    var relobjid = db.array(db.COLUMN, "select ORGANISATION_ID from OBJECTRELATION join CONTACT on CONTACTID = DEST_ID where SOURCE_ID = '" + orgrelid + "' and RELVALUE = 9");
-       contactid = db.array(db.COLUMN, "select CONTACTID from CONTACT left join PERSON on PERSONID = PERSON_ID"
-        + " where CONTACT.STATUS = 1 and ORGANISATION_ID in ('" + orgid + "', '" + relobjid.join("','") + "')");
-    
-    vars.set("$local.relids", "'" + contactid.join("','") + "'");
-        vars.set("$local.cmb_person_to", details[1]); //Empfänger vorbelegen
-    contactid = swing.askUserQuestion("Email", "DLG_CHOOSE_PERSON_FOREMAIL")
-    if ( contactid == null )	contactid = ""; //Abbruch geklickt
-    else
-    {
-        var reltoid = contactid["DLG_CHOOSE_PERSON_FOREMAIL.cmb_person_to"];
-
-        var relccid = text.decodeMS(contactid["DLG_CHOOSE_PERSON_FOREMAIL.tbl_person_cc"]);
-        if (relccid.length == 0)	contactid = ""; // keine Person markiert und OK geklickt
-        else	
-            relccid = db.array(db.COLUMN, "select ADDR from COMMUNICATION where MEDIUM_ID = 3 and ISSTANDARD = 1 and "
-                + "CONTACT_ID in ('" + relccid.join("','") + "') and CONTACT_ID <> '" + reltoid + "'");
-
-        if ( reltoid != "" ) 
-            sendAutoMail( translate.text(details[3]) + " " + details[0], reltoid, "Email_" + details[3], details[2], "AGB", relccid, [["SPNR", details[5]]] );
-        else question.showMessage(translate.text("Put Reciever Into To"));
-    }
-}
\ No newline at end of file
diff --git a/report/Reminder_report/reportData.jrxml b/report/Reminder_report/reportData.jrxml
index 1347b1ef959b34c58be528e8eecfb4bc139ff51a..ecbfcaa763c5fd38ea839ee2e483d79b57bf80ea 100644
--- a/report/Reminder_report/reportData.jrxml
+++ b/report/Reminder_report/reportData.jrxml
@@ -2,7 +2,7 @@
 <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Mahnung" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e7a916c8-3f9a-497d-84bb-3909b15271ea">
 	<property name="ireport.zoom" value="2.1435888100000016"/>
 	<property name="ireport.x" value="0"/>
-	<property name="ireport.y" value="0"/>
+	<property name="ireport.y" value="192"/>
 	<parameter name="myAddr" class="java.lang.String"/>
 	<parameter name="Kontenabstimmung" class="java.lang.String"/>
 	<parameter name="Rech.-Nr" class="java.lang.String"/>
@@ -114,14 +114,14 @@
 				</textField>
 				<textField>
 					<reportElement x="307" y="0" width="81" height="15" uuid="000feb72-9b7d-42e6-ade9-8e12359c3eef"/>
-					<textElement>
+					<textElement textAlignment="Right">
 						<font size="8"/>
 					</textElement>
 					<textFieldExpression><![CDATA[$R{Rechnungsbetrag}]]></textFieldExpression>
 				</textField>
 				<textField>
 					<reportElement x="430" y="0" width="81" height="15" uuid="8eee46c0-f3c3-4563-b1b1-746aeb7e73c6"/>
-					<textElement>
+					<textElement textAlignment="Right">
 						<font size="8"/>
 					</textElement>
 					<textFieldExpression><![CDATA[$P{OutstandingAmount}]]></textFieldExpression>
@@ -170,14 +170,14 @@
 				<textFieldExpression><![CDATA[$P{Reminder}]]></textFieldExpression>
 			</textField>
 			<textField pattern="dd.MM.yyyy">
-				<reportElement x="388" y="192" width="100" height="20" uuid="5141d92f-3325-445b-b616-90630c1648f7"/>
+				<reportElement x="411" y="192" width="100" height="20" uuid="5141d92f-3325-445b-b616-90630c1648f7"/>
 				<textElement textAlignment="Right">
 					<font size="8"/>
 				</textElement>
 				<textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
 			</textField>
-			<textField>
-				<reportElement x="13" y="232" width="294" height="20" uuid="3f7d1c4a-a326-436b-831d-5da9fd255bf0"/>
+			<textField isStretchWithOverflow="true">
+				<reportElement x="13" y="232" width="542" height="20" isPrintWhenDetailOverflows="true" uuid="3f7d1c4a-a326-436b-831d-5da9fd255bf0"/>
 				<textElement>
 					<font size="8" isBold="true"/>
 				</textElement>
diff --git a/report/Salesorder_report/Salesorder_report.aod b/report/Salesorder_report/Salesorder_report.aod
index 51a1a8215cab817858158f3307f3e3180e1b15ff..764967a65bf10f470b6c7b0c6939082935b34483 100644
--- a/report/Salesorder_report/Salesorder_report.aod
+++ b/report/Salesorder_report/Salesorder_report.aod
@@ -32,14 +32,6 @@
         <icon>REPORT_24</icon>
         <enabled v="true" />
         <layoutPosition>POSITION_TOP</layoutPosition>
-        <customComponents>
-          <rcCommandButton>
-            <name>Button</name>
-            <onClick>%aditoprj%/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js</onClick>
-            <title>Senden per E-Mail</title>
-            <imageData>%aditoprj%/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png</imageData>
-          </rcCommandButton>
-        </customComponents>
       </ribbonTask>
     </ribbonTasks>
   </ribbon>
diff --git a/report/Salesorder_report/reportData.jrxml b/report/Salesorder_report/reportData.jrxml
index 496fcde2e9eb86deb652b4884531c1b77c2a40fb..de40d4296db8e207a4f843841e4601ca1eda934b 100644
--- a/report/Salesorder_report/reportData.jrxml
+++ b/report/Salesorder_report/reportData.jrxml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Beleg" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e7a916c8-3f9a-497d-84bb-3909b15271ea">
-	<property name="ireport.zoom" value="1.0"/>
-	<property name="ireport.x" value="0"/>
-	<property name="ireport.y" value="0"/>
+	<property name="ireport.zoom" value="2.3579476910000023"/>
+	<property name="ireport.x" value="29"/>
+	<property name="ireport.y" value="905"/>
 	<parameter name="myAddr" class="java.lang.String"/>
 	<parameter name="Artikelbezeichnung" class="java.lang.String"/>
 	<parameter name="Artikel-Nr" class="java.lang.String"/>
@@ -27,7 +27,7 @@
 	<parameter name="SUMITEMSUM" class="java.lang.Double"/>
 	<parameter name="TOTAL" class="java.lang.String"/>
 	<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
-		<defaultValueExpression><![CDATA["C:\\Entwicklung\\stable2019\\project\\basic\\report\\Salesorder_report\\"]]></defaultValueExpression>
+		<defaultValueExpression><![CDATA["C:\\Entwicklung\\2020.2\\project\\basic2\\report\\Salesorder_report\\"]]></defaultValueExpression>
 	</parameter>
 	<parameter name="adito.datasource.subdata" class="java.lang.Object" isForPrompting="false"/>
 	<parameter name="adito.image.myLogo" class="java.lang.String"/>
@@ -77,7 +77,7 @@
 	<variable name="Menge_Einheit" class="java.lang.String">
 		<variableExpression><![CDATA[$F{QUANTITY}.toString() + " " + $F{UNITTEXT}]]></variableExpression>
 	</variable>
-	<group name="SALESORDERID">
+	<group name="SALESORDERID" isStartNewPage="true">
 		<groupExpression><![CDATA[$F{SALESORDERID}]]></groupExpression>
 		<groupHeader>
 			<band height="53">
@@ -302,6 +302,15 @@
 					<textFieldExpression><![CDATA[$P{OrderDeliveryTerm}]]></textFieldExpression>
 				</textField>
 			</band>
+			<band height="50">
+				<textField isStretchWithOverflow="true">
+					<reportElement x="0" y="0" width="555" height="31" uuid="678c4956-6136-49ba-8199-ed41c384e3ea"/>
+					<textElement>
+						<font size="8"/>
+					</textElement>
+					<textFieldExpression><![CDATA[$F{FOOTER}]]></textFieldExpression>
+				</textField>
+			</band>
 		</groupFooter>
 	</group>
 	<group name="VAT">
@@ -397,17 +406,6 @@
 			</textField>
 		</band>
 	</detail>
-	<columnFooter>
-		<band height="21" splitType="Stretch">
-			<textField isStretchWithOverflow="true">
-				<reportElement x="0" y="0" width="555" height="20" uuid="678c4956-6136-49ba-8199-ed41c384e3ea"/>
-				<textElement>
-					<font size="8"/>
-				</textElement>
-				<textFieldExpression><![CDATA[$F{FOOTER}]]></textFieldExpression>
-			</textField>
-		</band>
-	</columnFooter>
 	<pageFooter>
 		<band height="46" splitType="Stretch">
 			<textField pattern="EEEEE dd MMMMM yyyy">
diff --git a/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png b/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png
deleted file mode 100644
index 49cda7d673d367ab30051c9aa9dda1dcfad22177..0000000000000000000000000000000000000000
Binary files a/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png and /dev/null differ
diff --git a/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js b/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js
deleted file mode 100644
index dad46b278aff6020f827b7cc76b00dd4dac82d27..0000000000000000000000000000000000000000
--- a/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import("system.text");
-import("system.question");
-import("system.translate");
-import("system.swing");
-import("system.vars");
-import("system.db");
-
-//@TODO: remove
-
-var details = vars.get("$global.RptOfferOrderDetails");
-var orgid = db.array(db.ROW, "select ORG_ID, LANG from RELATION where RELATIONID = '" + details[1] + "'");
-if (orgid[0].substr(0, 2) == '0 ') // Privatperson
-{
-    var count = db.cell("select count(*) from COMM where medium_id = 3 and STANDARD = 1 and RELATION_ID = '" + details[1] + "'");
-    if (count == "0") question.showMessage(translate.text("No Standard-E-Mail available!"));
-    else
-        sendAutoMail( translate.text(details[3]) + " " + details[0], details[1], details[4], details[2], details[5], relccid, [["SPNR", details[6]]], orgid[1] );
-}
-else // Funktion - Person in Firma
-{
-    var orgrelid = db.cell("select RELATIONID from RELATION where ORG_ID = '" + orgid + "'");
-    var relobjid = db.array(db.COLUMN, "select ORG_ID from OBJECTRELATION join RELATION on RELATIONID = DEST_ID where SOURCE_ID = '" + orgrelid + "' and RELVALUE = 9");
-    relationid = db.array(db.COLUMN, "select RELATIONID from RELATION left join PERS on PERSID = PERS_ID"
-        + " where RELATION.STATUS = 1 and ORG_ID in ('" + orgid[0] + "', '" + relobjid.join("','") + "')");
-    
-    vars.set("$local.relids", "'" + relationid.join("','") + "'");
-    vars.set("$local.cmb_pers_to", details[1]); //Empfänger vorbelegen
-        
-    relationid = swing.askUserQuestion("Email", "DLG_CHOOSE_PERS_FOREMAIL")
-    if ( relationid == null ) relationid = ""; //Abbruch geklickt
-    else
-    {
-        var reltoid = relationid["DLG_CHOOSE_PERS_FOREMAIL.cmb_pers_to"];
-        var language = db.cell("select LANG from RELATION where RELATIONID = '" + reltoid + "'")
-
-        var relccid = text.decodeMS(relationid["DLG_CHOOSE_PERS_FOREMAIL.tbl_pers_cc"]);
-        if (relccid.length == 0) relationid = ""; // keine Person markiert und OK geklickt
-        else	
-            relccid = db.array(db.COLUMN, "select ADDR from COMM where MEDIUM_ID = 3 and STANDARD = 1 and "
-                + "RELATION_ID in ('" + relccid.join("','") + "') and RELATION_ID <> '" + reltoid + "'");
-
-        if ( reltoid != "" ) 
-            sendAutoMail( translate.text(details[3]) + " " + details[0], reltoid, details[4], details[2], details[5], relccid, [["SPNR", details[6]]], language );
-        else question.showMessage(translate.text("Please enter Addressee in 'to'"));
-    }
-}
\ No newline at end of file