diff --git a/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/create_Ticket_table.xml b/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/create_Ticket_table.xml
index 80423ffb13e2082be2aa530082e21ee97051f2ac..a28b84b18fda2812b4273853ef5afd8a78aae8d6 100644
--- a/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/create_Ticket_table.xml
+++ b/.liquibase/Data_alias/basic/2019.1.4/Ticketmanagement/create_Ticket_table.xml
@@ -1,6 +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="j.hoermann" id="15176b40-4b5e-48a9-8dfc-4540b01595c8">
+        <preConditions onFail="CONTINUE">
+            <not>
+                <tableExists tableName="TICKET"/>
+            </not>
+        </preConditions>
+        
         <createTable tableName="TICKET">
             <column name="TICKETID" type="CHAR(36)">
                 <constraints primaryKey="true" primaryKeyName="PK_TICKET_TICKETID"/>
@@ -12,6 +18,13 @@
             <column name="TICKETTYPE" type="VARCHAR(36)"/>
         </createTable>
         
+        <sql dbms="mssql">
+            DECLARE @ConstraintName nvarchar(200)
+            SELECT @ConstraintName = CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE TABLE_NAME = 'TASK' AND COLUMN_NAME = 'CODE'
+            IF @ConstraintName IS NOT NULL
+                EXEC('ALTER TABLE TASK DROP CONSTRAINT ' + @ConstraintName)
+        </sql>
+        <dropNotNullConstraint tableName="TASK" columnName="CODE" columnDataType="INTEGER"/>
         <dropColumn tableName="TASK" columnName="CODE"/>
     </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.1.4/alter_activityLink.xml b/.liquibase/Data_alias/basic/2019.1.4/alter_activityLink.xml
index 108c30fec50d07609f1fc73f106092a0724349ff..1bdf7bf46c8ddf6db4ba388a689ad68b1fbe7c05 100644
--- a/.liquibase/Data_alias/basic/2019.1.4/alter_activityLink.xml
+++ b/.liquibase/Data_alias/basic/2019.1.4/alter_activityLink.xml
@@ -9,13 +9,15 @@
         </sql>
     </changeSet>
     
-    <changeSet author="j.hoermann" id="9a86323f-a299-42a5-937a-f5e37d0db507">
-        <preConditions onFail="CONTINUE">
-            <not>
-                <dbms type="derby" />
-            </not>
-        </preConditions>
-
+    <changeSet dbms="!derby,!mssql" author="j.hoermann" id="9a86323f-a299-42a5-937a-f5e37d0db507">
         <modifyDataType tableName="ACTIVITYLINK" columnName="ACTIVITY_ID" newDataType="CHAR(36)"/>
     </changeSet>
+    
+    <changeSet dbms="mssql" author="s.listl" id="e8961eb9-80af-4a60-98cb-3cd843f2424a">
+        <dropIndex tableName="ACTIVITYLINK" indexName="IDX_ACTIVITYLINK_ACTIVITY_ID"/>
+        <modifyDataType tableName="ACTIVITYLINK" columnName="ACTIVITY_ID" newDataType="CHAR(36)"/>
+        <createIndex indexName="IDX_ACTIVITYLINK_ACTIVITY_ID" tableName="ACTIVITYLINK">
+            <column name="ACTIVITY_ID" />
+        </createIndex>
+    </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2020.0.2/Memberroles/alter_member.xml b/.liquibase/Data_alias/basic/2020.0.2/Memberroles/alter_member.xml
index d3dac713b4650952e08b611d697963e946adfb08..1be81f5ac3f01d510ceddb07ff864088a0079536 100644
--- a/.liquibase/Data_alias/basic/2020.0.2/Memberroles/alter_member.xml
+++ b/.liquibase/Data_alias/basic/2020.0.2/Memberroles/alter_member.xml
@@ -2,6 +2,11 @@
 <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="28627941-6c9b-46e8-922a-b4660b33723c">
+        <preConditions onFail="CONTINUE">
+            <columnExists tableName="OBJECTMEMBER" columnName="DECIDER"/>
+        </preConditions>
+        <dropNotNullConstraint tableName="OBJECTMEMBER" columnName="DECIDER" columnDataType="TINYINT"/>
+        <dropDefaultValue tableName="OBJECTMEMBER" columnName="DECIDER"/>
         <dropColumn tableName="OBJECTMEMBER" columnName="DECIDER"/>
     </changeSet>
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.1.1/AlterTablesToDatetime.xml b/.liquibase/Data_alias/basic/2020.1.1/AlterTablesToDatetime.xml
new file mode 100644
index 0000000000000000000000000000000000000000..92147dd087bcae4ce573c2d5b6ee55a4673ae914
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.1.1/AlterTablesToDatetime.xml
@@ -0,0 +1,130 @@
+<?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="3ce820fb-e29e-47cd-9083-fc2c2e1c8358">
+        <sql>
+            ALTER TABLE CAMPAIGN ADD COLUMN DATE_NEW_NEW TIMESTAMP;
+            UPDATE CAMPAIGN SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP);
+            ALTER TABLE CAMPAIGN DROP COLUMN DATE_NEW;
+            RENAME COLUMN CAMPAIGN.DATE_NEW_NEW TO DATE_NEW;
+        </sql>
+
+        <sql>
+            ALTER TABLE CAMPAIGN ADD COLUMN DATE_EDIT_NEW TIMESTAMP;
+            UPDATE CAMPAIGN SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP);
+            ALTER TABLE CAMPAIGN DROP COLUMN DATE_EDIT;
+            RENAME COLUMN CAMPAIGN.DATE_EDIT_NEW TO DATE_EDIT;
+        </sql>
+
+        <sql>
+            ALTER TABLE CAMPAIGNCOST ADD COLUMN DATE_NEW_NEW TIMESTAMP;
+            UPDATE CAMPAIGNCOST SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP);
+            ALTER TABLE CAMPAIGNCOST DROP COLUMN DATE_NEW;
+            RENAME COLUMN CAMPAIGNCOST.DATE_NEW_NEW TO DATE_NEW;
+        </sql>
+
+        <sql>
+            ALTER TABLE CAMPAIGNCOST ADD COLUMN DATE_EDIT_NEW TIMESTAMP;
+            UPDATE CAMPAIGNCOST SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP);
+            ALTER TABLE CAMPAIGNCOST DROP COLUMN DATE_EDIT;
+            RENAME COLUMN CAMPAIGNCOST.DATE_EDIT_NEW TO DATE_EDIT;
+        </sql>
+
+        <sql>
+            ALTER TABLE CAMPAIGNPARTICIPANT ADD COLUMN DATE_NEW_NEW TIMESTAMP;
+            UPDATE CAMPAIGNPARTICIPANT SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP);
+            ALTER TABLE CAMPAIGNPARTICIPANT DROP COLUMN DATE_NEW;
+            RENAME COLUMN CAMPAIGNPARTICIPANT.DATE_NEW_NEW TO DATE_NEW;
+        </sql>
+
+        <sql>
+            ALTER TABLE CAMPAIGNPARTICIPANT ADD COLUMN DATE_EDIT_NEW TIMESTAMP;
+            UPDATE CAMPAIGNPARTICIPANT SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP);
+            ALTER TABLE CAMPAIGNPARTICIPANT DROP COLUMN DATE_EDIT;
+            RENAME COLUMN CAMPAIGNPARTICIPANT.DATE_EDIT_NEW TO DATE_EDIT;
+        </sql>
+
+        <sql>
+            ALTER TABLE CAMPAIGNSTEP ADD COLUMN DATE_NEW_NEW TIMESTAMP;
+            UPDATE CAMPAIGNSTEP SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP);
+            ALTER TABLE CAMPAIGNSTEP DROP COLUMN DATE_NEW;
+            RENAME COLUMN CAMPAIGNSTEP.DATE_NEW_NEW TO DATE_NEW;
+        </sql>
+
+        <sql>
+            ALTER TABLE CAMPAIGNSTEP ADD COLUMN DATE_EDIT_NEW TIMESTAMP;
+            UPDATE CAMPAIGNSTEP SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP);
+            ALTER TABLE CAMPAIGNSTEP DROP COLUMN DATE_EDIT;
+            RENAME COLUMN CAMPAIGNSTEP.DATE_EDIT_NEW TO DATE_EDIT;
+        </sql>
+
+        <sql>
+            ALTER TABLE DOCUMENTTEMPLATELINK ADD COLUMN DATE_NEW_NEW TIMESTAMP;
+            UPDATE DOCUMENTTEMPLATELINK SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP);
+            ALTER TABLE DOCUMENTTEMPLATELINK DROP COLUMN DATE_NEW;
+            RENAME COLUMN DOCUMENTTEMPLATELINK.DATE_NEW_NEW TO DATE_NEW;
+        </sql>
+
+        <sql>
+            ALTER TABLE DOCUMENTTEMPLATELINK ADD COLUMN DATE_EDIT_NEW TIMESTAMP;
+            UPDATE DOCUMENTTEMPLATELINK SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP);
+            ALTER TABLE DOCUMENTTEMPLATELINK DROP COLUMN DATE_EDIT;
+            RENAME COLUMN DOCUMENTTEMPLATELINK.DATE_EDIT_NEW TO DATE_EDIT;
+        </sql>
+
+        <sql>
+            ALTER TABLE DUPLICATESCANNER ADD COLUMN DATE_NEW_NEW TIMESTAMP;
+            UPDATE DUPLICATESCANNER SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP);
+            ALTER TABLE DUPLICATESCANNER DROP COLUMN DATE_NEW;
+            RENAME COLUMN DUPLICATESCANNER.DATE_NEW_NEW TO DATE_NEW;
+        </sql>
+
+        <sql>
+            ALTER TABLE DUPLICATESCANNER ADD COLUMN DATE_EDIT_NEW TIMESTAMP;
+            UPDATE DUPLICATESCANNER SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP);
+            ALTER TABLE DUPLICATESCANNER DROP COLUMN DATE_EDIT;
+            RENAME COLUMN DUPLICATESCANNER.DATE_EDIT_NEW TO DATE_EDIT;
+        </sql>
+
+        <sql>
+            ALTER TABLE DUPLICATESCANNERRESULTFIELDCONFIG ADD COLUMN DATE_NEW_NEW TIMESTAMP;
+            UPDATE DUPLICATESCANNERRESULTFIELDCONFIG SET DATE_NEW_NEW=CAST ( DATE_NEW as TIMESTAMP);
+            ALTER TABLE DUPLICATESCANNERRESULTFIELDCONFIG DROP COLUMN DATE_NEW;
+            RENAME COLUMN DUPLICATESCANNERRESULTFIELDCONFIG.DATE_NEW_NEW TO DATE_NEW;
+        </sql>
+
+        <sql>
+            ALTER TABLE DUPLICATESCANNERRESULTFIELDCONFIG ADD COLUMN DATE_EDIT_NEW TIMESTAMP;
+            UPDATE DUPLICATESCANNERRESULTFIELDCONFIG SET DATE_EDIT_NEW=CAST ( DATE_EDIT as TIMESTAMP);
+            ALTER TABLE DUPLICATESCANNERRESULTFIELDCONFIG DROP COLUMN DATE_EDIT;
+            RENAME COLUMN DUPLICATESCANNERRESULTFIELDCONFIG.DATE_EDIT_NEW TO DATE_EDIT;
+        </sql>
+    </changeSet>
+    
+    <changeSet author="s.pongratz" id="4e15c97b-5de8-40ac-945b-b5267d71896f">
+        <preConditions onFail="CONTINUE">
+            <not>
+                <dbms type="derby" />
+            </not>
+        </preConditions>
+        <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="CAMPAIGN"/>
+        <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="CAMPAIGN"/>
+        
+        <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="CAMPAIGNCOST"/>
+        <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="CAMPAIGNCOST"/>
+        
+        <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="CAMPAIGNPARTICIPANT"/>
+        <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="CAMPAIGNPARTICIPANT"/>
+        
+        <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="CAMPAIGNSTEP"/>
+        <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="CAMPAIGNSTEP"/>
+        
+        <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="DOCUMENTTEMPLATELINK"/>
+        <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="DOCUMENTTEMPLATELINK"/>
+        
+        <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="DUPLICATESCANNER"/>
+        <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="DUPLICATESCANNER"/>
+        
+        <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="DUPLICATESCANNERRESULTFIELDCONFIG"/>
+        <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="DUPLICATESCANNERRESULTFIELDCONFIG"/>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2020.1.1/changelog.xml b/.liquibase/Data_alias/basic/2020.1.1/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f5686ce22ccea6e17c577957774efd2009a0dd7f
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.1.1/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="AlterTablesToDatetime.xml"/>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/campaign.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/campaign.xml
index 23e5ec6d78c1bb8205a5ac24c2788323d28f3e22..4325860e610d648af7e2cd15dccb125aa4093043 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/campaign.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/campaign.xml
@@ -5,8 +5,8 @@
     <insert tableName="campaign">
       <column name="CAMPAIGNID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CURRENCY" value="EUR"/>
-      <column name="DATE_EDIT" valueDate="2019-09-04"/>
-      <column name="DATE_NEW" valueDate="2019-09-02"/>
+      <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DESCRIPTION" value="Prüfung unserer Software durch Teilnehmer"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="NAME" value="CRM-Scan"/>
@@ -17,7 +17,7 @@
     <insert tableName="campaign">
       <column name="CAMPAIGNID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/>
       <column name="CURRENCY" value="EUR"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DESCRIPTION" value="Messe um neue Kontakte zu akquirieren."/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="NAME" value="Vertriebsmesse"/>
@@ -27,7 +27,7 @@
     <insert tableName="campaign">
       <column name="CAMPAIGNID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CURRENCY" value="EUR"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DESCRIPTION" value="Zweijährige Messe."/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="NAME" value="Hannovermesse"/>
@@ -37,7 +37,7 @@
     <insert tableName="campaign">
       <column name="CAMPAIGNID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CURRENCY" value="EUR"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DESCRIPTION" value="An unsererem  Kundentag können sich bestehende Kunden und Interessenten  austauschen."/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="NAME" value="Interner Kundentag"/>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/campaigncost.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/campaigncost.xml
index 975282c6face3e55ba4230041b8a95756dbcae2d..e69675be11c23b35cd6b055ace9e0aa7dd08fb4d 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/campaigncost.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/campaigncost.xml
@@ -6,7 +6,7 @@
       <column name="CAMPAIGNCOSTID" value="09e7f86f-983d-4e68-bf19-54018fa9b230"/>
       <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/>
       <column name="CATEGORY" value="SHIPCOST"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="NET" valueNumeric="250.00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -15,7 +15,7 @@
       <column name="CAMPAIGNSTEP_ID" value="fd5d676b-94a3-441e-9b55-eceffc2a0b49"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CATEGORY" value="LAYOUTCOST"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="NET" valueNumeric="250.00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -23,7 +23,7 @@
       <column name="CAMPAIGNCOSTID" value="293f7a24-191a-4ccd-83c2-4adf976d8dcd"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CATEGORY" value="LAYOUTCOST"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="NET" valueNumeric="1000.00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -32,7 +32,7 @@
       <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CATEGORY" value="LAYOUTCOST"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="NET" valueNumeric="500.00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -40,7 +40,7 @@
       <column name="CAMPAIGNCOSTID" value="7b8fd98d-f947-46d8-ad6b-271378aca137"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CATEGORY" value="PRINTCOST"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="NET" valueNumeric="250.00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -48,7 +48,7 @@
       <column name="CAMPAIGNCOSTID" value="bb77c632-a0a1-4bfb-89de-8a80dc00d8ff"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CATEGORY" value="LAYOUTCOST"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="NET" valueNumeric="1000.00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -56,7 +56,7 @@
       <column name="CAMPAIGNCOSTID" value="c2a145a2-3e12-4a1c-825a-d5555256062a"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CATEGORY" value="PRINTCOST"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="NET" valueNumeric="500.00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -65,7 +65,7 @@
       <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/>
       <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/>
       <column name="CATEGORY" value="PRINTCOST"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="NET" valueNumeric="100.00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -74,7 +74,7 @@
       <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CATEGORY" value="SHIPCOST"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="NET" valueNumeric="150.00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/campaignparticipant.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/campaignparticipant.xml
index ebd41aced6c555daaadb61f81e73326210665b76..0fff301b1de269c2f2f3153faa780f3378343fd8 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/campaignparticipant.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/campaignparticipant.xml
@@ -7,7 +7,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="6c612f91-0160-4f09-9103-dccee7f7a6b7"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -15,7 +15,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -23,8 +23,8 @@
       <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="29271db0-4253-46c9-b7c2-5e25376b9d19"/>
-      <column name="DATE_EDIT" valueDate="2019-09-04"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_EDIT" value="Admin"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -33,7 +33,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="7a34d9d0-04c7-478c-a8e2-f584fe625c45"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -41,7 +41,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -49,8 +49,8 @@
       <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="7a34d9d0-04c7-478c-a8e2-f584fe625c45"/>
-      <column name="DATE_EDIT" valueDate="2019-09-04"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_EDIT" value="Admin"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -59,8 +59,8 @@
       <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52"/>
-      <column name="DATE_EDIT" valueDate="2019-09-04"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_EDIT" value="Admin"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -69,8 +69,8 @@
       <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/>
-      <column name="DATE_EDIT" valueDate="2019-09-04"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_EDIT" value="Admin"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -79,7 +79,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="d8c1e4c9-35b4-45c8-bf4c-eb55137cd25c"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -87,8 +87,8 @@
       <column name="CAMPAIGNSTEP_ID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="4cc98357-25f3-462b-898c-440f9faf4b97"/>
-      <column name="DATE_EDIT" valueDate="2019-09-04"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_EDIT" value="Admin"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
@@ -97,7 +97,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="1868bd3a-05af-4b7f-a633-e3aec50ac45c"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -105,7 +105,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -113,7 +113,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="19c6bf30-cd8b-40df-980c-ce71c92c194c"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -121,7 +121,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="45635aca-7971-43df-a683-c80c86cb58cc"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -129,7 +129,7 @@
       <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -137,7 +137,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -145,7 +145,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="6e667085-bb97-4039-8dfe-2230002985e0"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -153,7 +153,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="d4c1bec3-656f-45ec-ae03-1c4d729d99fe"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -161,7 +161,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -169,7 +169,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="d4c1bec3-656f-45ec-ae03-1c4d729d99fe"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -177,7 +177,7 @@
       <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/>
       <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/>
       <column name="CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -185,7 +185,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="a8a5f214-8165-4627-bee2-bceb3578147e"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -193,7 +193,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="6e667085-bb97-4039-8dfe-2230002985e0"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -201,7 +201,7 @@
       <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/>
       <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/>
       <column name="CONTACT_ID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/>
-      <column name="DATE_NEW" valueDate="2019-11-15"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -209,7 +209,7 @@
       <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CONTACT_ID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -217,7 +217,7 @@
       <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -225,7 +225,7 @@
       <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -233,7 +233,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="3ac53b27-450d-4a2a-9160-bb223b8deef8"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -241,7 +241,7 @@
       <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/>
       <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/>
       <column name="CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -249,7 +249,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="a8a5f214-8165-4627-bee2-bceb3578147e"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -257,7 +257,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -265,7 +265,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="d3ec3869-b710-44d9-b20f-50f0724631ac"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -273,7 +273,7 @@
       <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="3ac53b27-450d-4a2a-9160-bb223b8deef8"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -281,7 +281,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="1868bd3a-05af-4b7f-a633-e3aec50ac45c"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -289,7 +289,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -297,7 +297,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="29271db0-4253-46c9-b7c2-5e25376b9d19"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -305,7 +305,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="d8c1e4c9-35b4-45c8-bf4c-eb55137cd25c"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -313,7 +313,7 @@
       <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/>
       <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/>
       <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -321,7 +321,7 @@
       <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="2c427e51-0434-40b3-ad00-3a9076067e03"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -329,7 +329,7 @@
       <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -337,7 +337,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -345,7 +345,7 @@
       <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -353,7 +353,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -361,7 +361,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -369,7 +369,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -377,7 +377,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="2c427e51-0434-40b3-ad00-3a9076067e03"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -385,7 +385,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -393,7 +393,7 @@
       <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -401,7 +401,7 @@
       <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CONTACT_ID" value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -409,7 +409,7 @@
       <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="4cc98357-25f3-462b-898c-440f9faf4b97"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -417,7 +417,7 @@
       <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -425,7 +425,7 @@
       <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CONTACT_ID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -433,7 +433,7 @@
       <column name="CAMPAIGNSTEP_ID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="45635aca-7971-43df-a683-c80c86cb58cc"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -441,7 +441,7 @@
       <column name="CAMPAIGNSTEP_ID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/>
       <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/>
       <column name="CONTACT_ID" value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -449,7 +449,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -457,7 +457,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="d3ec3869-b710-44d9-b20f-50f0724631ac"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -465,7 +465,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -473,7 +473,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -481,7 +481,7 @@
       <column name="CAMPAIGNSTEP_ID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="CONTACT_ID" value="6c612f91-0160-4f09-9103-dccee7f7a6b7"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -489,7 +489,7 @@
       <column name="CAMPAIGNSTEP_ID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="CONTACT_ID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="campaignparticipant">
@@ -497,7 +497,7 @@
       <column name="CAMPAIGNSTEP_ID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="CONTACT_ID" value="19c6bf30-cd8b-40df-980c-ce71c92c194c"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
   </changeSet>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/campaignstep.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/campaignstep.xml
index 079375cbb2fdc1d0fa6036dc1bb28ad4e40561ad..ae0ae1dbbb10d980700280ac9c16ee2b18ff4beb 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/campaignstep.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/campaignstep.xml
@@ -6,7 +6,7 @@
       <column name="CAMPAIGNSTEPID" value="07609efc-170a-451e-907a-6f6b236e0a3c"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="DATE_END" valueDate="2019-09-30"/>
-      <column name="DATE_NEW" valueDate="2019-09-03"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-09-23"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="100"/>
@@ -21,7 +21,7 @@
       <column name="CAMPAIGNSTEPID" value="161e57aa-3ea6-46bc-a3eb-5a577b858c20"/>
       <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/>
       <column name="DATE_END" valueDate="2019-09-25"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-09-04"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="100"/>
@@ -34,7 +34,7 @@
       <column name="CAMPAIGNSTEPID" value="2d89fd53-76e4-4dfa-8941-d0a80b040849"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="DATE_END" valueDate="2019-10-17"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-10-03"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="35"/>
@@ -49,7 +49,7 @@
       <column name="CAMPAIGNSTEPID" value="67178f4b-600b-4b56-ae79-5c39ecba5593"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="DATE_END" valueDate="2019-10-02"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-09-26"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="50"/>
@@ -64,7 +64,7 @@
       <column name="CAMPAIGNSTEPID" value="72bc62eb-41b1-49e5-93b7-28afd8b59416"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="DATE_END" valueDate="2019-09-25"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-09-04"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="100"/>
@@ -77,7 +77,7 @@
       <column name="CAMPAIGNSTEPID" value="72ea7e64-d5bf-44eb-a523-3f2da411fe6d"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="DATE_END" valueDate="2019-10-28"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-10-18"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="35"/>
@@ -92,7 +92,7 @@
       <column name="CAMPAIGNSTEPID" value="76295722-96f0-4992-a2d4-8defe962bf9a"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="DATE_END" valueDate="2019-10-16"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-10-10"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="50"/>
@@ -107,7 +107,7 @@
       <column name="CAMPAIGNSTEPID" value="963dc8b8-55e4-4e22-8162-a706dbeefa94"/>
       <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/>
       <column name="DATE_END" valueDate="2019-10-09"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-09-25"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="100"/>
@@ -122,7 +122,7 @@
       <column name="CAMPAIGNSTEPID" value="96793400-415d-42a6-b4d1-a52d1b2c5baa"/>
       <column name="CAMPAIGN_ID" value="680de39f-7f1c-4dca-8c67-9c16c3395c3f"/>
       <column name="DATE_END" valueDate="2019-09-23"/>
-      <column name="DATE_NEW" valueDate="2019-09-02"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-09-02"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="100"/>
@@ -135,7 +135,7 @@
       <column name="CAMPAIGNSTEPID" value="a91a8a7c-1547-4707-a7aa-cc0ce7056ebe"/>
       <column name="CAMPAIGN_ID" value="996b8af6-13f4-4606-a303-69f941cf6f13"/>
       <column name="DATE_END" valueDate="2019-10-17"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-10-10"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="15"/>
@@ -150,7 +150,7 @@
       <column name="CAMPAIGNSTEPID" value="caf3aad7-9f9a-44de-abd1-129cd00363cf"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="DATE_END" valueDate="2019-09-25"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-09-04"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="100"/>
@@ -163,7 +163,7 @@
       <column name="CAMPAIGNSTEPID" value="fbfcf9a2-66b3-404f-a5e6-beef285ceb83"/>
       <column name="CAMPAIGN_ID" value="d633ce70-5841-4a26-aaed-95980af49966"/>
       <column name="DATE_END" valueDate="2019-10-22"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-10-20"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="50"/>
@@ -178,7 +178,7 @@
       <column name="CAMPAIGNSTEPID" value="fd5d676b-94a3-441e-9b55-eceffc2a0b49"/>
       <column name="CAMPAIGN_ID" value="a10eaf09-7230-4889-a601-776de71cb71b"/>
       <column name="DATE_END" valueDate="2019-10-02"/>
-      <column name="DATE_NEW" valueDate="2019-09-04"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DATE_START" valueDate="2019-09-25"/>
       <column name="EMPLOYEE_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
       <column name="MAXPARTICIPANTS" valueNumeric="50"/>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplatelink.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplatelink.xml
index 4bdd168b843605d649eddbb8583590c077089106..bc4b2e4b8359d11154d4e9cb2240d9daab7c3f67 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplatelink.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/documenttemplatelink.xml
@@ -3,14 +3,14 @@
   <changeSet author="autogenerated" id="17856652-ace7-45c3-9f9f-640e8ed24fe3">
     <delete tableName="documenttemplatelink"/>
     <insert tableName="documenttemplatelink">
-      <column name="DATE_NEW" valueDate="2019-10-17"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DOCUMENTTEMPLATELINKID" value="b6704427-602c-4e5b-8e57-5207136e0413"/>
       <column name="DOCUMENTTEMPLATE_ID_CHILD" value="e70b9ef1-f0a3-4cd2-b3cd-fa7b4229ee73"/>
       <column name="DOCUMENTTEMPLATE_ID_PARENT" value="1cabdde7-870e-4094-a0f7-a335ded3536a"/>
       <column name="USER_NEW" value="Admin"/>
     </insert>
     <insert tableName="documenttemplatelink">
-      <column name="DATE_NEW" valueDate="2019-10-17"/>
+      <column name="DATE_NEW" valueDate="2020-06-26T00:00:00"/>
       <column name="DOCUMENTTEMPLATELINKID" value="f55b35f4-c915-455a-9e18-70f1709ea72b"/>
       <column name="DOCUMENTTEMPLATE_ID_CHILD" value="e70b9ef1-f0a3-4cd2-b3cd-fa7b4229ee73"/>
       <column name="DOCUMENTTEMPLATE_ID_PARENT" value="12da39a8-6fc9-4220-b09d-179cd611a814"/>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/duplicates/duplicatescanner.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/duplicates/duplicatescanner.xml
index f45f6f3a0807e07f62c1f665e3e1ee51f129906a..e1c57fcd49efdb883e3bf6bf15b5ccf4f4b58877 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/duplicates/duplicatescanner.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/duplicates/duplicatescanner.xml
@@ -10,9 +10,9 @@
             <column name="ID_FIELD_NAME" value="CONTACTID" />
             <column name="SCAN_PATTERN" value="firstname:({&quot;entityfield&quot;: &quot;FIRSTNAME&quot;}) AND lastname:({&quot;entityfield&quot;: &quot;LASTNAME&quot;})" />
             <column name="USER_NEW" value="Admin" />
-            <column name="DATE_NEW" valueDate="2019-07-19" />
+            <column name="DATE_NEW" valueDate="2020-06-26T00:00:00" />
             <column name="USER_EDIT" value="Admin" />
-            <column name="DATE_EDIT" valueDate="2019-07-19" />
+            <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00" />
     </insert>
     <insert tableName="duplicatescanner">
             <column name="ID" value="8fa3ab66-cc01-45b6-88f3-a9e76bad7db0" />
@@ -22,9 +22,9 @@
             <column name="ID_FIELD_NAME" value="CONTACTID" />
             <column name="SCAN_PATTERN" value="name:({&quot;entityfield&quot;: &quot;NAME&quot;, &quot;exclude&quot;: [&quot;gmbh&quot;, &quot;co&quot;, &quot;kg&quot;, &quot;ag&quot;, &quot;bank&quot;, &quot;deutsche&quot;, &quot;van&quot;, &quot;software&quot;, &quot;medien&quot;, &quot;print&quot;] }) AND city:({&quot;entityfield&quot;: &quot;STANDARD_CITY&quot;})" />
             <column name="USER_NEW" value="Admin" />
-            <column name="DATE_NEW" valueDate="2019-07-19" />
+            <column name="DATE_NEW" valueDate="2020-06-26T00:00:00" />
             <column name="USER_EDIT" value="Admin" />
-            <column name="DATE_EDIT" valueDate="2019-07-19" />
+            <column name="DATE_EDIT" valueDate="2020-06-26T00:00:00" />
     </insert> 
   </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml
index eee29581d9dcafac77aceb7875c2a9c0a1a00c36..50c63b65a63025ae582f679ca7b2051471c3fd9e 100644
--- a/.liquibase/Data_alias/changelog.xml
+++ b/.liquibase/Data_alias/changelog.xml
@@ -12,6 +12,7 @@
     <include relativeToChangelogFile="true" file="basic/2020.0.2/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2020.0.3/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2020.1.0/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="basic/2020.1.1/changelog.xml"/>
     
     <!--enable this only when you definetly want to overwrite the existing data with demo records:--> 
     <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>-->
diff --git a/.liquibase/_____SYSTEMALIAS/basic/Workflow/webserviceUser_flowableIdmService.xml b/.liquibase/_____SYSTEMALIAS/basic/Workflow/webserviceUser_flowableIdmService.xml
index 0a2ee09d6b8b500b6cedb743a27d400a0529bd1e..a6c0bda8efa8be2321086abe97773941cd65a657 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/Workflow/webserviceUser_flowableIdmService.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/Workflow/webserviceUser_flowableIdmService.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="s.listl" id="">
+    <changeSet author="s.listl" id="198892eb-e2a6-4550-9a42-a4d016aa4d11">
     <insert tableName="ASYS_USERS">
       <column name="GROUPID" value="BASIC"/>
       <column name="NAME" value="_____USER_6283cfd9-cf4d-4711-95a1-9b0d74526e01"/>
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml
index d045c99388757f245242ffd31e52d3fabcab6a9c..8da1987f7f317b85caeeb264cb4869f7e412aa26 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml
@@ -7,11 +7,11 @@
         </column>
         <column name="BACKPACK" type="CLOB"/>
         <column name="CAPTION" type="VARCHAR(512)"/>
-        <column name="CREATIONDATE" type="BIGINT"/>
+        <column name="CREATEDATE" type="TIMESTAMP"/>
+        <column name="DELETEDATE" type="TIMESTAMP"/>
         <column name="DESCRIPTION" type="VARCHAR(1023)"/>
         <column name="FORCEDPRIORITY" type="VARCHAR(15)"/>
         <column name="ICON_INFO" type="VARCHAR(1023)"/>
-        <column name="LIFETIME" type="BIGINT"/>
         <column name="LINK_INFO" type="VARCHAR(1023)"/>
         <column name="ORIGINATORNAME" type="VARCHAR(63)"/>
         <column name="RECIPIENTUSERIDS" type="CLOB"/>
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers.xml
index f09fdfb3185d0e64479373048402a51b628866ad..d26f8cd8e93f8b5c1bfdae1ffb1bb093b6513d39 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers.xml
@@ -1,6 +1,6 @@
 <?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="m.sieber" id="">
+<changeSet author="m.sieber" id="b54fd2e4-77a8-4b5d-b006-5c8290d270b6">
     <createTable tableName="ASYS_TIMERS">
         <column name="TIMERID" type="VARCHAR(127)">
             <constraints primaryKey="true" primaryKeyName="PK_ASYS_TIMERS_TIMERID"/>
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 5c5a397fcd634356f2a2440c0d6fa69d2b4a1c74..fea891c550df4d29827915634728cef5af053042 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml
@@ -1,6 +1,6 @@
 <?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="m.sieber" id="">
+<changeSet author="m.sieber" id="bbc95b35-05e4-4279-aa6c-fc05f0245e3a">
     <createTable tableName="ASYS_TIMERS_SERVERRUNS">
         <column name="SERVERID" type="VARCHAR(127)">
             <constraints nullable="false"/>
diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml
index c0b26e22fe876d4d5b191f76ee0d80dfb01a8496..b9105d5ca550931b9ea46ff6c7e7e66672a863ae 100644
--- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml
+++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml
@@ -20,5 +20,8 @@
         <column name="DATE_EDIT" type="DATETIME"/>
         <column name="DATE_NEW" type="DATETIME"/>
     </createTable>
+    <createIndex indexName="idx_asysusers_groupid" tableName="ASYS_USERS">
+        <column name="GROUPID"/>
+    </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 06901c17a5ee9fae60cfaf16c684d29b93499f6b..80c4686210790a754e8528e02b583a833eebcfb3 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -8237,9 +8237,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -8272,10 +8272,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="true" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -8529,9 +8529,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -8557,10 +8557,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="true" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -8647,9 +8647,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -8696,10 +8696,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="true" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -8835,9 +8835,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -8954,10 +8954,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="true" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -9267,9 +9267,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -9309,10 +9309,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="true" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -11573,9 +11573,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -11601,10 +11601,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="true" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -11885,9 +11885,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -11920,10 +11920,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="91" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="true" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
diff --git a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod
index 5203479895dfe3fc038912256877e49c31669aa3..3c5aedffe5464e5e778a25b4372abeb59ea701e4 100644
--- a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod
+++ b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod
@@ -1568,12 +1568,12 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>CREATIONDATE</name>
+                <name>CREATEDATE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-5" />
-                <size v="19" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -1582,12 +1582,12 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>LIFETIME</name>
+                <name>DELETEDATE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-5" />
-                <size v="19" />
-                <scale v="0" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -1712,7 +1712,7 @@
           <entityDb>
             <name>ASYS_PERMISSIONSET</name>
             <dbName></dbName>
-            <idColumn>PERMISSIONSETID</idColumn>
+            <idColumn>ASYS_PERMISSIONSETID</idColumn>
             <idGeneratorType v="0" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
@@ -1816,7 +1816,7 @@
           <entityDb>
             <name>ASYS_PERMISSIONACTION</name>
             <dbName></dbName>
-            <idColumn>PERMISSIONACTIONID</idColumn>
+            <idColumn>ASYS_PERMISSIONACTIONID</idColumn>
             <idGeneratorType v="0" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index 0d0a112f0c5bf19ba9ee893659b494b388606b3b..d4c06eaeedeef0b7f545ecd501cc99da61458769 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -488,11 +488,6 @@
         <entityName>Appointment_entity</entityName>
         <fieldName>LinkedAppointments</fieldName>
       </dependency>
-      <children>
-        <entityParameter>
-          <name>LinkedObjectId_param</name>
-        </entityParameter>
-      </children>
     </entityConsumer>
     <entityActionField>
       <name>newSupportticket</name>
diff --git a/entity/Activity_entity/entityfields/attributes/children/objectrowid_param/code.js b/entity/Activity_entity/entityfields/attributes/children/objectrowid_param/code.js
deleted file mode 100644
index a8267b62060b4bd30cedaba4713f4421a6e6f9ff..0000000000000000000000000000000000000000
--- a/entity/Activity_entity/entityfields/attributes/children/objectrowid_param/code.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$field.ACTIVITYID"));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/attributes/children/objecttype_param/code.js b/entity/Activity_entity/entityfields/attributes/children/objecttype_param/code.js
deleted file mode 100644
index 008915f61deac19ccdd40fff81701de63eb3b6a2..0000000000000000000000000000000000000000
--- a/entity/Activity_entity/entityfields/attributes/children/objecttype_param/code.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("Context_lib");
-
-result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/keywordcategory/children/containername_param/valueProcess.js b/entity/Activity_entity/entityfields/keywordcategory/children/containername_param/valueProcess.js
deleted file mode 100644
index 7b43ff2f6bef70bf04cd150c46dd7d9f921cf5d0..0000000000000000000000000000000000000000
--- a/entity/Activity_entity/entityfields/keywordcategory/children/containername_param/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-result.string($KeywordRegistry.activityCategory());
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/link/children/activityid_param/valueProcess.js b/entity/Activity_entity/entityfields/link/children/activityid_param/valueProcess.js
deleted file mode 100644
index a8267b62060b4bd30cedaba4713f4421a6e6f9ff..0000000000000000000000000000000000000000
--- a/entity/Activity_entity/entityfields/link/children/activityid_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$field.ACTIVITYID"));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/moduletrees/children/contextname/valueProcess.js b/entity/Activity_entity/entityfields/moduletrees/children/contextname/valueProcess.js
deleted file mode 100644
index 109d9bf5c8ea2825f9da796529721deab9a96d9f..0000000000000000000000000000000000000000
--- a/entity/Activity_entity/entityfields/moduletrees/children/contextname/valueProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.string("Activity");
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/newmail/onActionProcess.js b/entity/Activity_entity/entityfields/newmail/onActionProcess.js
deleted file mode 100644
index 097887a005788a6f5cc554e228879456082c4f21..0000000000000000000000000000000000000000
--- a/entity/Activity_entity/entityfields/newmail/onActionProcess.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import("system.db");
-import("system.vars");
-import("system.neon");
-import("KeywordRegistry_basic");
-
-
-var params = {
-    "DocumentTemplateType_param" : $KeywordRegistry.documentTemplateType$mail()
-}
-
-//neon.openContext("DocumentTemplate", "DocumentTemplateFilterSmall_view", null, neon.OPERATINGSTATE_SEARCH, params);
-//neon.openContext("DocumentTemplate", "DocumentTemplateFilterSmall_view", null, null, null, params);
-neon.openContext("DocumentTemplate", null, null, neon.OPERATINGSTATE_SEARCH, params);
-
diff --git a/entity/AddressValidation_entity/entityfields/cityvalidatior/children/type_param/valueProcess.js b/entity/AddressValidation_entity/entityfields/cityvalidatior/children/type_param/valueProcess.js
deleted file mode 100644
index 07a8e649c2c8a47b00f727a51543e5e695d7a7f5..0000000000000000000000000000000000000000
--- a/entity/AddressValidation_entity/entityfields/cityvalidatior/children/type_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("WsValidation_lib");
-import("system.result");
-
-result.string(AddressValidationType.get().TYPE_CITY_NOMINATIM.key);
\ No newline at end of file
diff --git a/entity/AddressValidation_entity/entityfields/zipvalidator/children/type_param/valueProcess.js b/entity/AddressValidation_entity/entityfields/zipvalidator/children/type_param/valueProcess.js
deleted file mode 100644
index fda16aa510156d5a9e059f1cb3a19ea1e72ef61e..0000000000000000000000000000000000000000
--- a/entity/AddressValidation_entity/entityfields/zipvalidator/children/type_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("WsValidation_lib");
-import("system.result");
-
-result.string(AddressValidationType.get().TYPE_ZIP_NOMINATIM.key);
\ No newline at end of file
diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod
index 5e6122b2767b55c3ccc21429bfe61a9fe01d84d7..a8fab2595e8795a739e854e715f1669bbd0477ac 100644
--- a/entity/Address_entity/Address_entity.aod
+++ b/entity/Address_entity/Address_entity.aod
@@ -451,6 +451,7 @@
     </entityField>
     <entityProvider>
       <name>QuickEntryAdresses</name>
+      <documentation>%aditoprj%/entity/Address_entity/entityfields/quickentryadresses/documentation.adoc</documentation>
       <dependencies>
         <entityDependency>
           <name>d677a301-2038-4ccd-baa1-5f986e290564</name>
diff --git a/entity/Address_entity/conditionProcess.js b/entity/Address_entity/conditionProcess.js
deleted file mode 100644
index 2a2a40bad76b7c7bf6a7845b81df92b5cfa85ee2..0000000000000000000000000000000000000000
--- a/entity/Address_entity/conditionProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("Sql_lib");
-import("system.db");
-import("system.result");
-
-//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026
-result.string(newWhereIfSet("ADDRESS.CONTACT_ID", "$param.ContactId_param").toString());
diff --git a/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/valueProcess.js b/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/valueProcess.js
deleted file mode 100644
index 167d3dc35f38110620b4eb5e6004b4c4454578f2..0000000000000000000000000000000000000000
--- a/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-result.string($KeywordRegistry.addressType());
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/orgaddresses/children/contacttype_param/code.js b/entity/Address_entity/entityfields/orgaddresses/children/contacttype_param/code.js
deleted file mode 100644
index 85a095aeb8aaaff00b627db260104e8790cb3a03..0000000000000000000000000000000000000000
--- a/entity/Address_entity/entityfields/orgaddresses/children/contacttype_param/code.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.object(1);
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/persaddresses/children/contacttype_param/code.js b/entity/Address_entity/entityfields/persaddresses/children/contacttype_param/code.js
deleted file mode 100644
index ee2a3d7dfb188a0e175b68c1cf815af5842aa34f..0000000000000000000000000000000000000000
--- a/entity/Address_entity/entityfields/persaddresses/children/contacttype_param/code.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.object(2);
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/quickentryadresses/documentation.adoc b/entity/Address_entity/entityfields/quickentryadresses/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..02f8ddcf3a0a317172962c6c7eafaaa7f7a86c12
--- /dev/null
+++ b/entity/Address_entity/entityfields/quickentryadresses/documentation.adoc
@@ -0,0 +1,3 @@
+= QuickEntry_entity - Addresses
+
+Provides all addresses for QuickEntry
\ No newline at end of file
diff --git a/entity/Address_entity/recordcontainers/childgroup/affectedIds.js b/entity/Address_entity/recordcontainers/childgroup/affectedIds.js
deleted file mode 100644
index cd9ce4eca596f562519fd3e40d69d57afad64c62..0000000000000000000000000000000000000000
--- a/entity/Address_entity/recordcontainers/childgroup/affectedIds.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.object([vars.getString("$local.idvalue")]);
\ No newline at end of file
diff --git a/entity/Address_entity/recordcontainers/childgroup/query.js b/entity/Address_entity/recordcontainers/childgroup/query.js
deleted file mode 100644
index c0ba9e3c53936a0e77923eb3d126c5ac144cea1d..0000000000000000000000000000000000000000
--- a/entity/Address_entity/recordcontainers/childgroup/query.js
+++ /dev/null
@@ -1,22 +0,0 @@
-import("Sql_lib");
-import("system.db");
-import("system.result");
-import("system.vars");
-
-var affectedIds;
-if (vars.exists("$local.idvalue")) {
-    affectedIds = vars.get("$local.idvalue");
-}
-
-var addressSelect = newSelect("ADDRESS.ADDRESSID as \"_uid_\", \n\
-                               ADDRESS.ADDRESSID, \n\
-                               ADDRESS.ZIP as ZIP, \n\
-                               ADDRESS.CITY as CITY, \n\
-                               ADDRESS.COUNTRY, \n\
-                               ADDRESS.ADDRESS, \n\
-                               ADDRESS.BUILDINGNO")
-                            .from("ADDRESS")
-                            .whereIfSet("ADDRESS.ADDRESSID", affectedIds, SqlBuilder.IN())
-                            .orderBy("ADDRESS.ADDRESSID")
-
-result.string(addressSelect.toString("1=2"));
\ 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 199ad53da66642101b7ce8a6a5bfe6397f72fb4d..bc66933dac2bbe757bf545283d13fa4ef9f373f3 100644
--- a/entity/Address_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Address_entity/recordcontainers/db/onDBInsert.js
@@ -1,3 +1,4 @@
+import("Sql_lib");
 import("system.logging");
 import("KeywordRegistry_basic");
 import("DataPrivacy_lib");
@@ -7,7 +8,7 @@ import("Keyword_lib");
 
 var rowdata = vars.get("$local.rowdata");
 var addrType = rowdata["ADDRESS.ADDR_TYPE"];
-
+var id = rowdata["ADDRESS.CONTACT_ID"];
 var typeParam = vars.get("$param.ContactType_param");
 
 if (!typeParam && vars.exists("$param.PersonContactId_param") && vars.getString("$param.PersonContactId_param"))
@@ -22,7 +23,27 @@ if (typeParam === "contact")
 else if (typeParam === "organisation")
     scopeType = "Organisation"
 
-new StandardObject("Address", vars.get("$local.uid"), scopeType, rowdata["ADDRESS.CONTACT_ID"])
-    .onObjectInsert(vars.exists("$param.ReplaceStandardAddress_param") ? vars.get("$param.ReplaceStandardAddress_param") : undefined)
+new StandardObject("Address", vars.get("$local.uid"), scopeType, id)
+    .onObjectInsert(vars.exists("$param.ReplaceStandardAddress_param") ? vars.get("$param.ReplaceStandardAddress_param") : undefined);
+
+//adds the orgaddress as standard address to all the contact's that were created before the org had an address
+if(scopeType == "Organisation") 
+{
+    var contacts = newSelect("CONTACTID")
+                            .from("CONTACT")
+                            .where("CONTACT.ORGANISATION_ID", newSelect("CONTACT.ORGANISATION_ID")
+                                                                        .from("CONTACT")
+                                                                        .where("CONTACT.CONTACTID", id)
+                                                                        .cell())
+                            .and("CONTACT.PERSON_ID is not null")
+                            .arrayColumn();
+
+    if(contacts.length > 0)
+        for (var i = 0; i < contacts.length; i++) 
+        {
+                new StandardObject("Address", vars.get("$local.uid"), "Person", contacts[i])
+                    .onObjectInsert(vars.exists("$param.ReplaceStandardAddress_param") ? vars.get("$param.ReplaceStandardAddress_param") : undefined);
+        }
+}
 
 DataPrivacyUtils.notifyNeedDataPrivacyUpdate(rowdata["ADDRESS.CONTACT_ID"], vars.get("$param.ShowDsgvoMessage_param"));
diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod
index ea4b4e03bb85dfca064ee1c4401f5174f586b282..764fffc4fd77721dcdae4ec59576865446464b97 100644
--- a/entity/AnyContact_entity/AnyContact_entity.aod
+++ b/entity/AnyContact_entity/AnyContact_entity.aod
@@ -82,10 +82,12 @@
     <entityField>
       <name>ADDRESS_ID</name>
       <title>standard address</title>
+      <groupable v="true" />
       <displayValueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/address_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>LANGUAGE</name>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>ORGANISATION_ID</name>
@@ -98,13 +100,13 @@
     </entityField>
     <entityField>
       <name>STATUS</name>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>contactType</name>
       <description>Relation type. Value is based on the existance or non-existance of ORGANISATION_ID and PERSON_ID.
 See ContactUtils.getRelationTypeByPersOrg for possible values</description>
       <contentType>NUMBER</contentType>
-      <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/contactType/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>ORGANISATION_NAME</name>
@@ -177,6 +179,28 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description>
       <name>AvatarText_param</name>
       <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/avatartext_param/valueProcess.js</valueProcess>
     </entityParameter>
+    <entityProvider>
+      <name>ContactsByIds</name>
+      <documentation>%aditoprj%/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc</documentation>
+      <dependencies>
+        <entityDependency>
+          <name>0206f7a8-fd58-47e8-8b7a-5ff4531e56fb</name>
+          <entityName>QuickEntry_entity</entityName>
+          <fieldName>OrgAndPersDuplicates</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>ContactIds_param</name>
+      <expose v="true" />
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc b/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..bcf8477de138099f6d6302445c8a5930b79690eb
--- /dev/null
+++ b/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc
@@ -0,0 +1,3 @@
+= AnyContact_entity - ContactsByIds
+
+The list of contacts can be filtered by providing the contact ids in the parameter "ContactIds_param"
\ No newline at end of file
diff --git a/entity/AnyContact_entity/entityfields/contacttype/valueProcess.js b/entity/AnyContact_entity/entityfields/contacttype/valueProcess.js
deleted file mode 100644
index 1974bb4d5a7c88145de2d44d53a22c00ece7aab3..0000000000000000000000000000000000000000
--- a/entity/AnyContact_entity/entityfields/contacttype/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Contact_lib")
-
-result.object(ContactUtils.getContactType(vars.get("$field.CONTACTID"), vars.get("$field.PERSON_ID"), vars.get("$field.ORGANISATION_ID")));
\ No newline at end of file
diff --git a/entity/AnyContact_entity/entityfields/date_edit/valueProcess.js b/entity/AnyContact_entity/entityfields/date_edit/valueProcess.js
deleted file mode 100644
index 710ac8a06a9911f82ff222c7d9d231846ca93fb2..0000000000000000000000000000000000000000
--- a/entity/AnyContact_entity/entityfields/date_edit/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.vars");
-import("system.result");
-import("system.neon");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
diff --git a/entity/AnyContact_entity/entityfields/date_new/valueProcess.js b/entity/AnyContact_entity/entityfields/date_new/valueProcess.js
deleted file mode 100644
index 3a0d59096cd2de39b6098f1ed95af580dcebfce0..0000000000000000000000000000000000000000
--- a/entity/AnyContact_entity/entityfields/date_new/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.vars");
-import("system.result");
-import("system.neon");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
diff --git a/entity/AnyContact_entity/entityfields/user_edit/valueProcess.js b/entity/AnyContact_entity/entityfields/user_edit/valueProcess.js
deleted file mode 100644
index 1581e18d9763043ae602b98658f87cb0a3b0c967..0000000000000000000000000000000000000000
--- a/entity/AnyContact_entity/entityfields/user_edit/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.vars");
-import("system.result");
-import("system.neon");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
diff --git a/entity/AnyContact_entity/entityfields/user_new/valueProcess.js b/entity/AnyContact_entity/entityfields/user_new/valueProcess.js
deleted file mode 100644
index 7c566863b493d778b72dea7d8822f6a59333e77d..0000000000000000000000000000000000000000
--- a/entity/AnyContact_entity/entityfields/user_new/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.vars");
-import("system.result");
-import("system.neon");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
diff --git a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js
index b6d99a470cfc19de9e0beacdc2df797236c64e85..a793d04a1b1ac773414d333e4ccc4e645b1df960 100644
--- a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js
@@ -24,10 +24,13 @@ if (vars.getString("$param.WithPrivatePersons_param") == "true")
                                         .and("CONTACT.PERSON_ID is not null"));
 }
     
-
 //exclude private organisation
 var cond = newWhereIfSet(conditionPrivateOrganisation)
                .andIfSet("CONTACT.ORGANISATION_ID", orgContactId);
 
+var contactIds = vars.exists("$param.ContactIds_param") && vars.get("$param.ContactIds_param");
+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/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod
index a88c2b6e6d636b7e7c8b39c6815377002469eb4f..28c70af66100db91d5c2b61eea6d9ff584fb5832 100644
--- a/entity/Appointment_entity/Appointment_entity.aod
+++ b/entity/Appointment_entity/Appointment_entity.aod
@@ -288,9 +288,6 @@
         <jDitoRecordFieldMapping>
           <name>STATUS.value</name>
         </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>LINKS.value</name>
-        </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>DESCRIPTION.value</name>
         </jDitoRecordFieldMapping>
diff --git a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js
index 1537137ac8ec8fb412f232a80567dcafa4a93a5e..7e8972a145953d11163f3fccc1879487dea6e31b 100644
--- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js
@@ -107,8 +107,7 @@ function buildEntry(pEntry, pMasterentry)
             organizer,
             owner,
             attendees, 
-            status, 
-            links, 
+            status,  
             description, 
             location, 
             '', 
diff --git a/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/stateProcess.js b/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/stateProcess.js
index 8d1104b5aaa31e686a00a58b47dba81fe63ead08..1d16d29705904d8d5e24c0c3990b0d6b9693bcca 100644
--- a/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/stateProcess.js
+++ b/entity/Attribute_entity/entityfields/attributeactions/children/newchildattribute/stateProcess.js
@@ -3,7 +3,7 @@ import("system.result");
 import("system.vars");
 import("system.neon");
 
-if(vars.get("$sys.selection").length == 1 && vars.get("$field.ATTRIBUTE_TYPE") == $AttributeTypes.GROUP.toString())
-    result.string(neon.COMPONENTSTATE_EDITABLE)
+if(vars.get("$sys.selection").length == 1 && (vars.get("$field.ATTRIBUTE_TYPE") == $AttributeTypes.GROUP.toString() || vars.get("$field.ATTRIBUTE_TYPE") == $AttributeTypes.OBJECTSELECTION.toString()))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
 else
-    result.string(neon.COMPONENTSTATE_DISABLED)
\ No newline at end of file
+    result.string(neon.COMPONENTSTATE_DISABLED);
\ No newline at end of file
diff --git a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod
index 5a1cd9c9bb57983c6221069d7f2492eb5e86063c..e75ed952327e55f4b5e62fd7d5ffc4c90ba2d144 100644
--- a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod
+++ b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod
@@ -3,17 +3,18 @@
   <name>BulkMailAddRecipients_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/BulkMailAddRecipients_entity/documentation.adoc</documentation>
-  <recordContainer>jdito</recordContainer>
+  <recordContainer>datalessConfig</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
     </entityProvider>
     <entityField>
       <name>UID</name>
+      <state>EDITABLE</state>
     </entityField>
     <entityField>
       <name>recipientCountMessage</name>
-      <state>READONLY</state>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -22,6 +23,7 @@
       <consumer>BulkMails</consumer>
       <linkedContext>BulkMail</linkedContext>
       <mandatory v="true" />
+      <state>EDITABLE</state>
       <displayValueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/bulkmail_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
@@ -39,20 +41,28 @@
     <entityField>
       <name>recipientContactIds</name>
       <description>the filtered contactIds (contactIds that are not already in the bulkmail and don't have a commrestriction)</description>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js</valueProcess>
     </entityField>
+    <entityActionField>
+      <name>addRecipients</name>
+      <title>Add Recipients</title>
+      <onActionProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:AT</iconId>
+      <state>DISABLED</state>
+      <stateProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityField>
+      <name>recipientCount</name>
+      <documentation>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc</documentation>
+      <state>EDITABLE</state>
+      <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
-    <jDitoRecordContainer>
-      <name>jdito</name>
-      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
-      <contentProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
-      <onInsert>%aditoprj%/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/onInsert.js</onInsert>
-      <recordFieldMappings>
-        <jDitoRecordFieldMapping>
-          <name>UID.value</name>
-        </jDitoRecordFieldMapping>
-      </recordFieldMappings>
-    </jDitoRecordContainer>
+    <datalessRecordContainer>
+      <name>datalessConfig</name>
+      <alias>Data_alias</alias>
+    </datalessRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/onInsert.js b/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/onActionProcess.js
similarity index 100%
rename from entity/BulkMailAddRecipients_entity/recordcontainers/jdito/onInsert.js
rename to entity/BulkMailAddRecipients_entity/entityfields/addrecipients/onActionProcess.js
diff --git a/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..361fb440599d3efccdfbb22747deae2b585fc3b0
--- /dev/null
+++ b/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js
@@ -0,0 +1,9 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+var count = vars.getString("$field.recipientCount");
+
+if (count == "0" || !count || vars.get("$sys.validationerrors"))
+    result.string(neon.COMPONENTSTATE_DISABLED);
+else
+    result.string(neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js
index 107d0af5ed33fdbed773fc5e8bbac0952a303646..9705275249c269d4a34d59acf53a49f83fa02521 100644
--- a/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js
+++ b/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js
@@ -5,4 +5,10 @@ import("system.vars");
 var contactIds = JSON.parse(vars.getString("$param.ContactIds_param"));
 var bulkMailId = vars.get("$field.BULKMAIL_ID");
 
-result.string(JSON.stringify(BulkMailUtils.filterNewRecipients(bulkMailId, contactIds)));
\ No newline at end of file
+var res;
+if (bulkMailId)
+    res = JSON.stringify(BulkMailUtils.filterNewRecipients(bulkMailId, contactIds));
+else
+    res = null;
+    
+result.string(res);
\ No newline at end of file
diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc b/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..cb66eaab85eed332b2f4d5e7c5e7bce70540b357
--- /dev/null
+++ b/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc
@@ -0,0 +1,6 @@
+This field contains the count of the participants that can be added as string.
+A value of null or empty string "" means that the count could not be determined (for example because no bulkmail was chosen).
+A value of "0" means that the count could be determined but none of the participants can be added (for example because all selected participants are already in the bulkmail).
+For example, a value of "12" means that 12 of the given participants can be added.
+
+This information is needed for disabling the action to proceed and to provide a message for the user.
\ No newline at end of file
diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d04634f708b5331a305b800553ec8c5c9bd1b2fb
--- /dev/null
+++ b/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js
@@ -0,0 +1,11 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+
+var res = "";
+if (vars.get("$field.recipientContactIds"))
+{
+    res = JSON.parse(vars.getString("$field.recipientContactIds")).length;
+}
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js
index a6023f60ee9164727f8856620af8d95cf04ad01d..ca3a11b99b6ee086734022d909edae33de24f635 100644
--- a/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js
+++ b/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js
@@ -2,8 +2,14 @@ import("system.translate");
 import("system.result");
 import("system.vars");
 
-if (vars.get("$field.BULKMAIL_ID"))
+var count = vars.getString("$field.recipientCount")
+var res = "";
+if (count && !vars.get("$sys.validationerrors"))
 {
-    var count = JSON.parse(vars.getString("$field.recipientContactIds")).length;
-    result.string(translate.withArguments("%0 new recipients will be added to the bulk mail.", [String(count)]));
-}
\ No newline at end of file
+    if (count == "0")
+        res = translate.text("No new recipients found that can be added to the bulk mail.");
+    else
+        res = translate.withArguments("%0 new recipients will be added to the bulk mail.", [count]);
+}
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/contentProcess.js b/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/contentProcess.js
deleted file mode 100644
index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000
--- a/entity/BulkMailAddRecipients_entity/recordcontainers/jdito/contentProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.result");
-import("system.vars");
-
-//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003
-var rows = [];
-if (vars.get("$local.idvalues"))
-    rows = vars.get("$local.idvalues").map(function (id) {return [id];});
-
-result.object(rows);
\ No newline at end of file
diff --git a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod
index 59218772f1dd9a28bb56351fe7c0be8a46c19ae5..70e8a0f2629b1d0048edcb5781c0a84012128218 100644
--- a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod
+++ b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod
@@ -6,25 +6,28 @@
   <siblings>
     <element>BulkMail_entity</element>
   </siblings>
-  <recordContainer>jdito</recordContainer>
+  <recordContainer>datalessRecordContainer</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
     </entityProvider>
     <entityField>
       <name>UID</name>
+      <state>EDITABLE</state>
     </entityField>
     <entityField>
       <name>TESTING_CONTACT_ID</name>
       <title>Contact</title>
       <consumer>Contacts</consumer>
       <linkedContext>AnyContact</linkedContext>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/BulkMailTesting_entity/entityfields/testing_contact_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/BulkMailTesting_entity/entityfields/testing_contact_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>TESTING_EMAIL_ADDRESS</name>
       <title>Recipient address</title>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/BulkMailTesting_entity/entityfields/testing_email_address/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -32,6 +35,7 @@
       <title>Save settings</title>
       <contentType>BOOLEAN</contentType>
       <dropDownProcess>%aditoprj%/entity/BulkMailTesting_entity/entityfields/savesettings/dropDownProcess.js</dropDownProcess>
+      <state>EDITABLE</state>
     </entityField>
     <entityParameter>
       <name>BulkMailId_param</name>
@@ -46,18 +50,17 @@
         <fieldName>#PROVIDER</fieldName>
       </dependency>
     </entityConsumer>
+    <entityActionField>
+      <name>testMail</name>
+      <title>Test email</title>
+      <onActionProcess>%aditoprj%/entity/BulkMailTesting_entity/entityfields/testmail/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CLIPBOARD_CHECK</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
-    <jDitoRecordContainer>
-      <name>jdito</name>
-      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
-      <contentProcess>%aditoprj%/entity/BulkMailTesting_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
-      <onInsert>%aditoprj%/entity/BulkMailTesting_entity/recordcontainers/jdito/onInsert.js</onInsert>
-      <recordFieldMappings>
-        <jDitoRecordFieldMapping>
-          <name>UID.value</name>
-        </jDitoRecordFieldMapping>
-      </recordFieldMappings>
-    </jDitoRecordContainer>
+    <datalessRecordContainer>
+      <name>datalessRecordContainer</name>
+      <alias>Data_alias</alias>
+    </datalessRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/BulkMailTesting_entity/recordcontainers/jdito/onInsert.js b/entity/BulkMailTesting_entity/entityfields/testmail/onActionProcess.js
similarity index 100%
rename from entity/BulkMailTesting_entity/recordcontainers/jdito/onInsert.js
rename to entity/BulkMailTesting_entity/entityfields/testmail/onActionProcess.js
diff --git a/entity/BulkMailTesting_entity/recordcontainers/jdito/contentProcess.js b/entity/BulkMailTesting_entity/recordcontainers/jdito/contentProcess.js
deleted file mode 100644
index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000
--- a/entity/BulkMailTesting_entity/recordcontainers/jdito/contentProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.result");
-import("system.vars");
-
-//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003
-var rows = [];
-if (vars.get("$local.idvalues"))
-    rows = vars.get("$local.idvalues").map(function (id) {return [id];});
-
-result.object(rows);
\ No newline at end of file
diff --git a/entity/BulkMail_entity/entityfields/testmail/onActionProcess.js b/entity/BulkMail_entity/entityfields/testmail/onActionProcess.js
index 3852daca44d122f7a011d6fe4559d34cf7390321..3845e374537d50e6e9ab706741a4a672d7208d04 100644
--- a/entity/BulkMail_entity/entityfields/testmail/onActionProcess.js
+++ b/entity/BulkMail_entity/entityfields/testmail/onActionProcess.js
@@ -10,7 +10,7 @@ var testingEmail = vars.get("$field.TESTING_EMAIL_ADDRESS");
 if (testingContact && testingEmail)
     BulkMailUtils.sendBulkMailOnServer(vars.get("$field.BULKMAILID"), [[testingContact, testingEmail]]);
 else
-    neon.openContext("BulkMailTesting", "BulkMailTesting_view", null, neon.OPERATINGSTATE_NEW, {
+    neon.openContext("BulkMailTesting", "BulkMailTesting_view", null, neon.OPERATINGSTATE_VIEW, {
         "BulkMailId_param" : vars.get("$field.BULKMAILID")
     });
 
diff --git a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod
index 0a50fc3645daeb83d429228509346f025d45950d..427c1e2626f0baade4750445935fb8b335212bf9 100644
--- a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod
+++ b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod
@@ -8,7 +8,7 @@
     <element>CampaignParticipant_entity</element>
   </siblings>
   <onValidation>%aditoprj%/entity/CampaignAddParticipants_entity/onValidation.js</onValidation>
-  <recordContainer>jdito</recordContainer>
+  <recordContainer>datalessConfig</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
@@ -18,7 +18,7 @@
       <title>Campaign</title>
       <consumer>CampaignConsumer</consumer>
       <mandatory v="true" />
-      <state>AUTO</state>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaign_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaign_id/displayValueProcess.js</displayValueProcess>
       <onValueChange>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaign_id/onValueChange.js</onValueChange>
@@ -40,7 +40,7 @@
     </entityField>
     <entityField>
       <name>campaignParticipantMessage</name>
-      <state>READONLY</state>
+      <state>EDITABLE</state>
       <onValueChangeTypes>
         <element>PROCESS</element>
       </onValueChangeTypes>
@@ -75,6 +75,7 @@
     </entityConsumer>
     <entityField>
       <name>UID</name>
+      <state>EDITABLE</state>
     </entityField>
     <entityParameter>
       <name>currentCampaignId_param</name>
@@ -102,15 +103,18 @@
     <entityField>
       <name>campaignStepCurrentParticipantCount</name>
       <title>Current participants</title>
+      <state>EDITABLE</state>
       <displayValueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaignstepcurrentparticipantcount/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>campaignStepMaxParticipantCount</name>
       <title>Max participants</title>
+      <state>EDITABLE</state>
       <displayValueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/campaignstepmaxparticipantcount/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>isUpdate</name>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/isupdate/valueProcess.js</valueProcess>
     </entityField>
     <entityParameter>
@@ -123,8 +127,17 @@
     </entityParameter>
     <entityField>
       <name>isOperationValid</name>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/isoperationvalid/valueProcess.js</valueProcess>
     </entityField>
+    <entityActionField>
+      <name>AddParticipants</name>
+      <title>Add Participants</title>
+      <onActionProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js</onActionProcess>
+      <iconId>NEON:GROUP_APPOINTMENT</iconId>
+      <state>DISABLED</state>
+      <stateProcess>%aditoprj%/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js</stateProcess>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
@@ -138,5 +151,9 @@
         </jDitoRecordFieldMapping>
       </recordFieldMappings>
     </jDitoRecordContainer>
+    <datalessRecordContainer>
+      <name>datalessConfig</name>
+      <alias>Data_alias</alias>
+    </datalessRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..bbf377c5c3803bd9e8c294d1de8ce1ccca72e0d6
--- /dev/null
+++ b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js
@@ -0,0 +1,153 @@
+import("system.neon");
+import("Sql_lib");
+import("system.vars");
+import("system.db");
+import("system.util");
+import("Campaign_lib");
+
+var cols = [];
+
+var participantRowIds = JSON.parse(vars.getString("$param.campaignParticipantsRowIds_param"));
+var participantCondition = "";
+var conditionSourceTableName = vars.getString("$param.dataSourceTableName_param");
+
+var campaignId = vars.getString("$field.CAMPAIGN_ID");
+var newCampaignStepId = vars.getString("$field.CAMPAIGNSTEP_ID");
+var isUpdate = vars.get("$field.isUpdate");
+
+var colNamesCampaignParticipantLog = CampaignUtils.getParticipantLogInsertColumnNames();
+
+if(participantRowIds != null && participantRowIds.length > 0)
+{
+    let contactIdsToHandle = participantRowIds;
+    
+    if(isUpdate == "false")
+        contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByRowIds(campaignId, participantRowIds);
+    
+    _handleRowIds(contactIdsToHandle, campaignId);
+}
+else
+{
+    participantCondition = JSON.parse(vars.getString("$param.campaignParticipantsCondition_param")).condition;
+    _handleCondition(campaignId, conditionSourceTableName, participantCondition);
+}
+
+if (!vars.exists("$param.currentCampaignId_param") || !vars.get("$param.currentCampaignId_param"))
+    neon.openContext("Campaign", "CampaignMain_view", [campaignId], neon.OPERATINGSTATE_VIEW, null);
+
+function _handleCondition(pCampaignId, pTargetTableName, pCondition)
+{
+    let contactIdsToHandle = [];
+    
+    let useRightJoinToGetOrgs = "false";
+    if(pTargetTableName == "ORGANISATION")
+    {
+        useRightJoinToGetOrgs = "true";
+        pCondition += "  and PERSON.PERSONID is NULL"
+    }
+        
+    /*
+     * If it's an update of participants, get the participants defined by the condition in the selected campaign
+     * Because they already are participants, no restrictions apply to the affected IDs.
+     * 
+     * Otherwise the participants ought to be inserted. The only restriction right now is, hat the participants to be inserted
+     * can't already be in this specific campaign. Therefore all IDs hat are defined by the condition and not in the campaign are selected.
+     */
+    if(isUpdate == "true")
+    {
+        contactIdsToHandle = CampaignUtils.GetContactIdsInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs)
+    }
+    else
+        contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs);
+    
+    _handleRowIds(contactIdsToHandle, pCampaignId);
+}
+
+function _handleRowIds(pParticipantRowIds, pCampaignId)
+{
+    var oldStepIds = {};
+    if(isUpdate == "true")
+    {
+        cols = [ "CAMPAIGNSTEP_ID",
+        "USER_EDIT",
+        "DATE_EDIT"
+        ];
+        let oldSteps = newSelect("CAMPAIGNPARTICIPANTID, CAMPAIGNSTEP_ID")
+        .from("CAMPAIGNPARTICIPANT")
+        .whereIfSet("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds, SqlBuilder.IN())
+        .and("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId)
+        .table(true);
+                        
+        oldSteps.forEach(function (step)
+        {
+            this[step[0]] = step[1];
+        }, oldStepIds);
+    }
+    else
+    {
+        cols = [ "CAMPAIGNPARTICIPANTID"
+        ,"CONTACT_ID"
+        ,"CAMPAIGN_ID"
+        ,"CAMPAIGNSTEP_ID"
+        ,"USER_NEW"
+        ,"DATE_NEW"
+        ];
+    }
+
+    let statementArray = [];
+    let logArray = [];
+
+    for (participant in pParticipantRowIds)
+    {
+        let campaignParticipantLogId = util.getNewUUID();
+
+        if(isUpdate == "true")
+        {
+            let oldCampaignStepId = oldStepIds[pParticipantRowIds[participant]] || "";
+            let updatedValues = [newCampaignStepId,
+            vars.get("$sys.user"),
+            vars.get("$sys.date")];
+
+            let condition = newWhere("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds[participant])
+            .or("CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID", pParticipantRowIds[participant]);
+                                 
+            let valsCampaignParticipantLog = [
+            pParticipantRowIds[participant], 
+            campaignId, 
+            newCampaignStepId, 
+            campaignParticipantLogId,
+            vars.get("$sys.user"), 
+            vars.get("$sys.date"), 
+            oldCampaignStepId
+            ];
+
+            statementArray.push(["CAMPAIGNPARTICIPANT", cols, null, updatedValues, condition.build()]);
+            logArray.push(["CAMPAIGNPARTICIPANTLOG", colNamesCampaignParticipantLog, null, valsCampaignParticipantLog]);
+        }
+        else
+        {
+            let campaignParticipantId = util.getNewUUID();
+
+            let valsCampaignParticipant = [ campaignParticipantId
+            , pParticipantRowIds[participant]
+            , campaignId
+            , newCampaignStepId
+            , vars.get("$sys.user")
+            , vars.get("$sys.date")
+            ];
+
+            let valsCampaignParticipantLog = new Array(campaignParticipantId, campaignId, newCampaignStepId, campaignParticipantLogId, vars.get("$sys.user"), vars.get("$sys.date"));
+
+            statementArray.push(["CAMPAIGNPARTICIPANT", cols, null, valsCampaignParticipant]);
+        }
+    }
+    if(isUpdate == "true")
+    {
+        db.updates(statementArray)
+    }
+    else
+        db.inserts(statementArray);
+    if(logArray.length > 0)
+        db.inserts(logArray);
+}
+
diff --git a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..be5aec2ba0d4f21dc0a169a53489021c880b3c8b
--- /dev/null
+++ b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if (vars.get("$sys.validationerrors"))
+    result.string(neon.COMPONENTSTATE_DISABLED);
+else
+    result.string(neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
diff --git a/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js b/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js
index 44bfa0e717f9ed3d3ad50b2e759b2a558a61fef6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js
@@ -1,153 +0,0 @@
-import("system.neon");
-import("Sql_lib");
-import("system.vars");
-import("system.db");
-import("system.util");
-import("Campaign_lib");
-
-var cols = [];
-
-var participantRowIds = JSON.parse(vars.getString("$param.campaignParticipantsRowIds_param"));
-var participantCondition = "";
-var conditionSourceTableName = vars.getString("$param.dataSourceTableName_param");
-
-var campaignId = vars.getString("$field.CAMPAIGN_ID");
-var newCampaignStepId = vars.getString("$field.CAMPAIGNSTEP_ID");
-var isUpdate = vars.get("$field.isUpdate");
-
-var colNamesCampaignParticipantLog = CampaignUtils.getParticipantLogInsertColumnNames();
-
-if(participantRowIds != null && participantRowIds.length > 0)
-{
-    let contactIdsToHandle = participantRowIds;
-    
-    if(isUpdate == "false")
-        contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByRowIds(campaignId, participantRowIds);
-    
-    _handleRowIds(contactIdsToHandle, campaignId);
-}
-else
-{
-    participantCondition = JSON.parse(vars.getString("$param.campaignParticipantsCondition_param")).condition;
-    _handleCondition(campaignId, conditionSourceTableName, participantCondition);
-}
-
-if (!vars.exists("$param.currentCampaignId_param") || !vars.get("$param.currentCampaignId_param"))
-    neon.openContext("Campaign", "CampaignMain_view", [campaignId], neon.OPERATINGSTATE_VIEW, null);
-
-function _handleCondition(pCampaignId, pTargetTableName, pCondition)
-{
-    let contactIdsToHandle = [];
-    
-    let useRightJoinToGetOrgs = "false";
-    if(pTargetTableName == "ORGANISATION")
-    {
-        useRightJoinToGetOrgs = "true";
-        pCondition += "  and PERSON.PERSONID is NULL"
-    }
-        
-    /*
-     * If it's an update of participants, get the participants defined by the condition in the selected campaign
-     * Because they already are participants, no restrictions apply to the affected IDs.
-     * 
-     * Otherwise the participants ought to be inserted. The only restriction right now is, hat the participants to be inserted
-     * can't already be in this specific campaign. Therefore all IDs hat are defined by the condition and not in the campaign are selected.
-     */
-    if(isUpdate == "true")
-    {
-        contactIdsToHandle = CampaignUtils.GetContactIdsInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs)
-    }
-    else
-        contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs);
-    
-    _handleRowIds(contactIdsToHandle, pCampaignId);
-}
-
-function _handleRowIds(pParticipantRowIds, pCampaignId)
-{
-    var oldStepIds = {};
-    if(isUpdate == "true")
-    {
-        cols = [ "CAMPAIGNSTEP_ID",
-                 "USER_EDIT",
-                 "DATE_EDIT"
-                ];
-        let oldSteps = newSelect("CAMPAIGNPARTICIPANTID, CAMPAIGNSTEP_ID")
-                        .from("CAMPAIGNPARTICIPANT")
-                        .whereIfSet("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds, SqlBuilder.IN())
-                        .and("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId)
-                        .table(true);
-                        
-        oldSteps.forEach(function (step)
-        {
-            this[step[0]] = step[1];
-        }, oldStepIds);
-    }
-    else
-    {
-        cols = [ "CAMPAIGNPARTICIPANTID"
-        ,"CONTACT_ID"
-        ,"CAMPAIGN_ID"
-        ,"CAMPAIGNSTEP_ID"
-        ,"USER_NEW"
-        ,"DATE_NEW"
-        ];
-    }
-
-    let statementArray = [];
-    let logArray = [];
-
-    for (participant in pParticipantRowIds)
-    {
-        let campaignParticipantLogId = util.getNewUUID();
-
-        if(isUpdate == "true")
-        {
-            let oldCampaignStepId = oldStepIds[pParticipantRowIds[participant]] || "";
-            let updatedValues = [newCampaignStepId,
-                            vars.get("$sys.user"),
-                            vars.get("$sys.date")];
-
-            let condition = newWhere("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds[participant])
-                                 .or("CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID", pParticipantRowIds[participant]);
-                                 
-            let valsCampaignParticipantLog = [
-                pParticipantRowIds[participant], 
-                campaignId, 
-                newCampaignStepId, 
-                campaignParticipantLogId,
-                vars.get("$sys.user"), 
-                vars.get("$sys.date"), 
-                oldCampaignStepId
-            ];
-
-            statementArray.push(["CAMPAIGNPARTICIPANT", cols, null, updatedValues, condition.build()]);
-            logArray.push(["CAMPAIGNPARTICIPANTLOG", colNamesCampaignParticipantLog, null, valsCampaignParticipantLog]);
-        }
-        else
-        {
-            let campaignParticipantId = util.getNewUUID();
-
-            let valsCampaignParticipant = [ campaignParticipantId
-            , pParticipantRowIds[participant]
-            , campaignId
-            , newCampaignStepId
-            , vars.get("$sys.user")
-            , vars.get("$sys.date")
-            ];
-
-            let valsCampaignParticipantLog = new Array(campaignParticipantId, campaignId, newCampaignStepId, campaignParticipantLogId, vars.get("$sys.user"), vars.get("$sys.date"));
-
-            statementArray.push(["CAMPAIGNPARTICIPANT", cols, null, valsCampaignParticipant]);
-        }
-    }
-    if(isUpdate == "true")
-        {
-            db.updates(statementArray)
-        }
-    else
-        db.inserts(statementArray);
-    if(logArray.length > 0)
-        db.inserts(logArray);
-}
-
diff --git a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod
index 5686a654510804c5582ec45ca999421ad7cea021..051deb0ceea090c270fb0b24b3896c9ec9959094 100644
--- a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod
+++ b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod
@@ -120,12 +120,6 @@
           <name>CAMPAIGN_ID.value</name>
           <recordfield>CAMPAIGN.CAMPAIGNID</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>CAMPAIGN_NAME.value</name>
-          <recordfield>CAMPAIGN.NAME</recordfield>
-          <isFilterable v="true" />
-          <isLookupFilter v="true" />
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>DATE_END.value</name>
           <recordfield>CAMPAIGNSTEP.DATE_END</recordfield>
@@ -150,10 +144,6 @@
           <name>STEP_ID.value</name>
           <recordfield>CAMPAIGNSTEP.CAMPAIGNSTEPID</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>STEP_NAME.value</name>
-          <recordfield>CAMPAIGNSTEP.NAME</recordfield>
-        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
     <jDitoRecordContainer>
diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod
index 6a95fa2e17f2edbf5014e8e7c0e81640cdb999a7..5c0c8448cd84839a753fd36b32d653fcbfc16827 100644
--- a/entity/Contact_entity/Contact_entity.aod
+++ b/entity/Contact_entity/Contact_entity.aod
@@ -47,6 +47,7 @@
     <entityField>
       <name>DEPARTMENT</name>
       <title>Department</title>
+      <groupable v="true" />
       <dropDownProcess>%aditoprj%/entity/Contact_entity/entityfields/department/dropDownProcess.js</dropDownProcess>
       <textInputAllowed v="true" />
     </entityField>
@@ -103,6 +104,7 @@
     <entityField>
       <name>ADDRESS_ID</name>
       <title>standard address</title>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/address_id/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -143,6 +145,7 @@
       <name>LANGUAGE</name>
       <title>Language</title>
       <consumer>Languages</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/language/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Contact_entity/entityfields/language/displayValueProcess.js</displayValueProcess>
@@ -189,6 +192,7 @@
       <name>STATUS</name>
       <title>Status</title>
       <consumer>KeywordContactStates</consumer>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/status/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Contact_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
     </entityField>
diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod
index e93a7dabbb417af046c96c4d1ed70df6aac8897d..51dab19fa4733bd1cf91075fa059b823317b0a96 100644
--- a/entity/Contract_entity/Contract_entity.aod
+++ b/entity/Contract_entity/Contract_entity.aod
@@ -29,6 +29,7 @@
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
       <inputFormat>dd.MM.yyyy</inputFormat>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>CONTRACTEND</name>
@@ -38,6 +39,7 @@
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
       <inputFormat>dd.MM.yyyy</inputFormat>
+      <groupable v="true" />
       <onValueChange>%aditoprj%/entity/Contract_entity/entityfields/contractend/onValueChange.js</onValueChange>
     </entityField>
     <entityField>
@@ -53,6 +55,7 @@
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
       <inputFormat>dd.MM.yyyy</inputFormat>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/contractstart/valueProcess.js</valueProcess>
       <onValueChange>%aditoprj%/entity/Contract_entity/entityfields/contractstart/onValueChange.js</onValueChange>
     </entityField>
@@ -60,12 +63,14 @@
       <name>CONTRACTSTATUS</name>
       <title>${CONTRACT_STATUS}</title>
       <consumer>ContractStates</consumer>
+      <groupable v="true" />
       <displayValueProcess>%aditoprj%/entity/Contract_entity/entityfields/contractstatus/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>CONTRACTTYPE</name>
       <title>Type of contract</title>
       <consumer>ContractTypes</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
       <displayValueProcess>%aditoprj%/entity/Contract_entity/entityfields/contracttype/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -73,6 +78,7 @@
       <name>PAYMENT</name>
       <title>Payment method</title>
       <consumer>ContractPayments</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
       <displayValueProcess>%aditoprj%/entity/Contract_entity/entityfields/payment/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -188,10 +194,12 @@
     <entityField>
       <name>CONTACT_ORG_ID</name>
       <title>Company</title>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>CONTACT_PERSON_ID</name>
       <title>Person</title>
+      <groupable v="true" />
     </entityField>
     <entityConsumer>
       <name>Documents</name>
@@ -482,14 +490,6 @@
           <name>CONTACT_PERSON_ID.value</name>
           <recordfield>CONTACT.PERSON_ID</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>PERSON_FIRSTNAME.value</name>
-          <recordfield>PERSON.FIRSTNAME</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>PERSON_LASTNAME.value</name>
-          <recordfield>PERSON.LASTNAME</recordfield>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>PAYMENT.displayValue</name>
           <expression>%aditoprj%/entity/Contract_entity/recordcontainers/db/recordfieldmappings/payment.displayvalue/expression.js</expression>
@@ -545,10 +545,6 @@
           <name>CONTRACTCODE</name>
           <indexFieldType>TEXT_PLAIN</indexFieldType>
         </indexRecordFieldMapping>
-        <indexRecordFieldMapping>
-          <name>CUSTOMERCODE</name>
-          <indexFieldType>TEXT_PLAIN</indexFieldType>
-        </indexRecordFieldMapping>
         <indexRecordFieldMapping>
           <name>CONTACT_ORG_ID.value</name>
           <indexFieldType>STRING</indexFieldType>
diff --git a/entity/Contract_entity/recordcontainers/index/query.js b/entity/Contract_entity/recordcontainers/index/query.js
index b0797ceb1fba98977f0b70822229f384ba7eeed6..0b7612604a0518ed4437906473ea5f0caf38e248 100644
--- a/entity/Contract_entity/recordcontainers/index/query.js
+++ b/entity/Contract_entity/recordcontainers/index/query.js
@@ -13,7 +13,6 @@ var querySelect = newSelect("CONTRACTID " //as "_uid_"
                             + ", " + sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Type of contract") + ":'", 
                                     KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractType(), "CONTRACTTYPE")]) //as "_description_"
                             + ", CONTRACTCODE "
-                            + ", CUSTOMERCODE " 
                             + ", CONTACT.ORGANISATION_ID" //as CONTACT_ORG_ID
                             + ", ORGANISATION.NAME" //as "CONTACT_ORG_ID.displayValue" 
                             + ", CONTRACT.CONTACT_ID")
diff --git a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod
index da8a7c8b479f7dc608d5ceb9251aac1c5f433e50..1dfd409f9133b0587fc210804eea99d76a88b34d 100644
--- a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod
+++ b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod
@@ -151,6 +151,12 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityActionField>
+      <name>SafeAndOpenReport</name>
+      <title>and open Report</title>
+      <onActionProcess>%aditoprj%/entity/DSGVOInfo_entity/entityfields/safeandopenreport/onActionProcess.js</onActionProcess>
+      <isSaveAction v="true" />
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/DSGVOInfo_entity/entityfields/safeandopenreport/onActionProcess.js b/entity/DSGVOInfo_entity/entityfields/safeandopenreport/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9a6195801a21eb56a3224dd1f1ceabf02890e50e
--- /dev/null
+++ b/entity/DSGVOInfo_entity/entityfields/safeandopenreport/onActionProcess.js
@@ -0,0 +1,20 @@
+import("system.vars");
+import("DataPrivacy_lib");
+
+var entityData = vars.get("$local.entitydata");
+
+var params = {
+        datasource: entityData["DATASOURCE"],
+        transmission: entityData["TRANSMISSION"],
+        recipient: entityData["RECIPIENT"],
+        garantees: entityData["GUARANTEE"],
+        requestDate: entityData["dateRequest"],
+        deadline: entityData["deadline"],
+        deadlineDate: entityData["dateDeadline"]
+    };
+
+var contactId = entityData["param.ContactId_param"];
+var reportType = entityData["param.ReportType_param"];
+
+if (reportType)
+    DataPrivacyUtils.openReport(contactId, reportType, params);
\ No newline at end of file
diff --git a/entity/DSGVOInfo_entity/recordcontainers/db/onDBInsert.js b/entity/DSGVOInfo_entity/recordcontainers/db/onDBInsert.js
index ef08b6011add55be5ac2961455eb1d455f16d0c1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/entity/DSGVOInfo_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/DSGVOInfo_entity/recordcontainers/db/onDBInsert.js
@@ -1,15 +0,0 @@
-import("system.vars");
-import("DataPrivacy_lib");
-
-var rowdata = vars.get("$local.rowdata");
-
-if (vars.get("$param.ReportType_param"))
-    DataPrivacyUtils.openReport(vars.get("$param.ContactId_param"), vars.get("$param.ReportType_param"), {
-        datasource: rowdata["DSGVOINFO.DATASOURCE"],
-        transmission: rowdata["DSGVOINFO.TRANSMISSION"],
-        recipient: rowdata["DSGVOINFO.RECIPIENT"],
-        garantees: rowdata["DSGVOINFO.GUARANTEE"],
-        requestDate: vars.get("$field.dateRequest"),
-        deadline: vars.get("$field.deadline"),
-        deadlineDate: vars.get("$field.dateDeadline")
-    });
\ No newline at end of file
diff --git a/entity/DSGVOInfo_entity/recordcontainers/db/onDBUpdate.js b/entity/DSGVOInfo_entity/recordcontainers/db/onDBUpdate.js
index ef08b6011add55be5ac2961455eb1d455f16d0c1..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/entity/DSGVOInfo_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/DSGVOInfo_entity/recordcontainers/db/onDBUpdate.js
@@ -1,15 +0,0 @@
-import("system.vars");
-import("DataPrivacy_lib");
-
-var rowdata = vars.get("$local.rowdata");
-
-if (vars.get("$param.ReportType_param"))
-    DataPrivacyUtils.openReport(vars.get("$param.ContactId_param"), vars.get("$param.ReportType_param"), {
-        datasource: rowdata["DSGVOINFO.DATASOURCE"],
-        transmission: rowdata["DSGVOINFO.TRANSMISSION"],
-        recipient: rowdata["DSGVOINFO.RECIPIENT"],
-        garantees: rowdata["DSGVOINFO.GUARANTEE"],
-        requestDate: vars.get("$field.dateRequest"),
-        deadline: vars.get("$field.deadline"),
-        deadlineDate: vars.get("$field.dateDeadline")
-    });
\ No newline at end of file
diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod
index 9c5bab5bdbc546fed183346758af0d40ff54ba55..fa1098dc639a05b340f5fc1a6fda4ca95bb2d521 100644
--- a/entity/Document_entity/Document_entity.aod
+++ b/entity/Document_entity/Document_entity.aod
@@ -57,6 +57,7 @@
       <name>BINDATA_UPLOAD</name>
       <title>File</title>
       <contentType>FILE</contentType>
+      <mandatory v="true" />
       <onValueChange>%aditoprj%/entity/Document_entity/entityfields/bindata_upload/onValueChange.js</onValueChange>
       <onValueChangeTypes>
         <element>MASK</element>
diff --git a/entity/Email_entity/Email_entity.aod b/entity/Email_entity/Email_entity.aod
index b328022e7bb7911735abc0e14869cb594e133bce..670910b84410344ceb0bc8d6f47d8d1ea5cf3202 100644
--- a/entity/Email_entity/Email_entity.aod
+++ b/entity/Email_entity/Email_entity.aod
@@ -3,7 +3,7 @@
   <name>Email_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Email_entity/documentation.adoc</documentation>
-  <recordContainer>jdito</recordContainer>
+  <recordContainer>datalessRecordContainer</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
@@ -18,12 +18,14 @@
     </entityProvider>
     <entityField>
       <name>UID</name>
+      <state>EDITABLE</state>
     </entityField>
     <entityField>
       <name>DOCUMENT_TEMPLATE</name>
       <title>Document Template</title>
       <consumer>DocumentTemplates</consumer>
       <linkedContext>DocumentTemplate</linkedContext>
+      <state>EDITABLE</state>
     </entityField>
     <entityConsumer>
       <name>DocumentTemplates</name>
@@ -53,6 +55,7 @@
       <title>Recipient</title>
       <consumer>EmailAddresses</consumer>
       <textInputAllowed v="true" />
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/Email_entity/entityfields/recipient/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Email_entity/entityfields/recipient/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -79,6 +82,7 @@
       <name>bindata</name>
       <title>Custom template</title>
       <contentType>FILE</contentType>
+      <state>EDITABLE</state>
     </entityField>
     <entityActionField>
       <name>downloadTemplate</name>
@@ -93,6 +97,7 @@
     </entityParameter>
     <entityField>
       <name>comingfrom</name>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/Email_entity/entityfields/comingfrom/valueProcess.js</valueProcess>
     </entityField>
     <entityParameter>
@@ -106,23 +111,24 @@
     <entityField>
       <name>subject</name>
       <title>Subject</title>
+      <state>EDITABLE</state>
     </entityField>
     <entityParameter>
       <name>EmailFilename</name>
       <expose v="true" />
     </entityParameter>
+    <entityActionField>
+      <name>sendMail</name>
+      <title>send mail</title>
+      <onActionProcess>%aditoprj%/entity/Email_entity/entityfields/sendmail/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:AT</iconId>
+      <stateProcess>%aditoprj%/entity/Email_entity/entityfields/sendmail/stateProcess.js</stateProcess>
+    </entityActionField>
   </entityFields>
   <recordContainers>
-    <jDitoRecordContainer>
-      <name>jdito</name>
-      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
-      <contentProcess>%aditoprj%/entity/Email_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
-      <onInsert>%aditoprj%/entity/Email_entity/recordcontainers/jdito/onInsert.js</onInsert>
-      <recordFieldMappings>
-        <jDitoRecordFieldMapping>
-          <name>UID.value</name>
-        </jDitoRecordFieldMapping>
-      </recordFieldMappings>
-    </jDitoRecordContainer>
+    <datalessRecordContainer>
+      <name>datalessRecordContainer</name>
+      <alias>Data_alias</alias>
+    </datalessRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Email_entity/entityfields/recipient/valueProcess.js b/entity/Email_entity/entityfields/recipient/valueProcess.js
index 3ad60d78a7acdb319c06b3a1bf67e775f71a15d0..28712f38d11117f0241a65aa12bac0cd0f7e89f9 100644
--- a/entity/Email_entity/entityfields/recipient/valueProcess.js
+++ b/entity/Email_entity/entityfields/recipient/valueProcess.js
@@ -3,14 +3,14 @@ import("system.result");
 import("system.neon");
 import("system.vars");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+if (vars.get("$this.value") == null)
 {
     if (vars.exists("$param.Recipient_param") && vars.get("$param.Recipient_param"))
         result.string(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("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.RECIPIENT").includes("@"))
+else if (!vars.get("$field.RECIPIENT").includes("@"))
     result.string(newSelect("ADDR")
                         .from("COMMUNICATION")
                         .where("COMMUNICATION.COMMUNICATIONID", vars.get("$this.value")).cell());
\ No newline at end of file
diff --git a/entity/Email_entity/recordcontainers/jdito/onInsert.js b/entity/Email_entity/entityfields/sendmail/onActionProcess.js
similarity index 99%
rename from entity/Email_entity/recordcontainers/jdito/onInsert.js
rename to entity/Email_entity/entityfields/sendmail/onActionProcess.js
index b266465e5e7d8102995d9f786ab61d9c84080438..3042a292b76f3871dc01286424cf353a51e85412 100644
--- a/entity/Email_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/Email_entity/entityfields/sendmail/onActionProcess.js
@@ -8,7 +8,6 @@ import("Contact_lib");
 import("Document_lib");
 import("system.question");
 
-
 var attachments = JSON.parse(vars.get("$param.Attachments_param"));
 var senderContactId = vars.get("$param.ContactId_param");
 var bindata =  new FileUpload(vars.get("$field.bindata"));
diff --git a/entity/Email_entity/entityfields/sendmail/stateProcess.js b/entity/Email_entity/entityfields/sendmail/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a3e809eef1cfe32e6d9ea3c849043949aa40e01
--- /dev/null
+++ b/entity/Email_entity/entityfields/sendmail/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if (vars.get("$sys.validationerrors"))
+    result.string(neon.COMPONENTSTATE_DISABLED);
+else
+    result.string(neon.COMPONENTSTATE_EDITABLE);
diff --git a/entity/Email_entity/recordcontainers/jdito/contentProcess.js b/entity/Email_entity/recordcontainers/jdito/contentProcess.js
deleted file mode 100644
index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000
--- a/entity/Email_entity/recordcontainers/jdito/contentProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.result");
-import("system.vars");
-
-//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003
-var rows = [];
-if (vars.get("$local.idvalues"))
-    rows = vars.get("$local.idvalues").map(function (id) {return [id];});
-
-result.object(rows);
\ No newline at end of file
diff --git a/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js b/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js
index 3f92b2d22659c0b37d58f51750ddfcb1eda385c9..67aab71c1ae1e5db3595a0fa0e8bab3789a24ef8 100644
--- a/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js
+++ b/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js
@@ -3,8 +3,11 @@ import("system.vars");
 import("system.tools");
 
 var allRoles = tools.getAllRoles();
-var roleTitle = vars.get("$field.ROLE");
-if (roleTitle in allRoles)
-    roleTitle = allRoles[roleTitle][0];
+var roleTitle = vars.get("$this.value")
+if(roleTitle != null)
+{
+    if (roleTitle in allRoles)
+        roleTitle = allRoles[roleTitle][0];
 
-result.string(roleTitle);
\ No newline at end of file
+    result.string(roleTitle);
+}
\ No newline at end of file
diff --git a/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js b/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js
index b9cece778787960b813a01dffbff120df704b2e1..a798b7a80f57f615439eab376b8db4b13a48fedd 100644
--- a/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js
@@ -3,6 +3,7 @@ import("system.vars");
 import("system.tools");
 
 var roles = [];
+var singleRole = [];
 var userTitle = vars.exists("$param.UserTitle_param") && vars.get("$param.UserTitle_param");
 var allRoles = tools.getAllRoles();
 
@@ -33,8 +34,23 @@ if (ids != null)
             if (role[0] == ids[i])
                 return true;
         }
-        return false;
+        return ids[i];
     });
 }
-    
-result.object(roles);
\ No newline at end of file
+if(roles == undefined || roles.length > 0)
+    result.object(roles);
+else
+{
+    var currentRole = vars.get("$field.ROLE")
+    roles = roles.filter(function(role) 
+    {
+        for (let i = 0; i < ids.length; i++)
+        {
+            if (role[0] == currentRole)
+                return true;
+        }
+        return vars.get("$field.ROLE");
+    });
+    singleRole[0] = [currentRole.toUpperCase(), currentRole.toUpperCase(), allRoles[currentRole][0], "Role"];
+    result.object(singleRole)
+}
\ No newline at end of file
diff --git a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
index c71abcd85ffe75e618a0c6200d47d934392b62fd..de7cb9ab35c7b24aa5e1906d5068e532e53662fb 100644
--- a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
+++ b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
@@ -5,13 +5,14 @@
   <documentation>%aditoprj%/entity/ExportTemplateSelection_entity/documentation.adoc</documentation>
   <title>Exporttempalte Selection</title>
   <contentTitleProcess>%aditoprj%/entity/ExportTemplateSelection_entity/contentTitleProcess.js</contentTitleProcess>
-  <recordContainer>jDito</recordContainer>
+  <recordContainer>datalessRecordContainer</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
     </entityProvider>
     <entityField>
       <name>EXPORTTEMPLATESELECTIONID</name>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/exporttemplateselectionid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -19,6 +20,7 @@
       <title>Exporttemplate</title>
       <consumer>ExportTemplateComsumer</consumer>
       <mandatory v="true" />
+      <state>EDITABLE</state>
       <displayValueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/exporttemplate_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityParameter>
@@ -45,14 +47,17 @@
     </entityConsumer>
     <entityField>
       <name>UID</name>
+      <state>EDITABLE</state>
     </entityField>
     <entityField>
       <name>FILENAME</name>
       <title>Filename</title>
+      <state>EDITABLE</state>
       <tooltip>Automatically generates an defaulttitle if left Blank</tooltip>
     </entityField>
     <entityField>
       <name>selection</name>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/selection/valueProcess.js</valueProcess>
     </entityField>
     <entityParameter>
@@ -61,20 +66,21 @@
     </entityParameter>
     <entityField>
       <name>comingfrom</name>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/comingfrom/valueProcess.js</valueProcess>
     </entityField>
+    <entityActionField>
+      <name>safeandexport</name>
+      <title>export using the selected  template</title>
+      <onActionProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js</onActionProcess>
+      <iconId>NEON:EXPORT</iconId>
+      <stateProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/safeandexport/stateProcess.js</stateProcess>
+    </entityActionField>
   </entityFields>
   <recordContainers>
-    <jDitoRecordContainer>
-      <name>jDito</name>
-      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
-      <contentProcess>%aditoprj%/entity/ExportTemplateSelection_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
-      <onInsert>%aditoprj%/entity/ExportTemplateSelection_entity/recordcontainers/jdito/onInsert.js</onInsert>
-      <recordFieldMappings>
-        <jDitoRecordFieldMapping>
-          <name>UID.value</name>
-        </jDitoRecordFieldMapping>
-      </recordFieldMappings>
-    </jDitoRecordContainer>
+    <datalessRecordContainer>
+      <name>datalessRecordContainer</name>
+      <alias>Data_alias</alias>
+    </datalessRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/ExportTemplateSelection_entity/entityfields/exporttemplateselectionid/valueProcess.js b/entity/ExportTemplateSelection_entity/entityfields/exporttemplateselectionid/valueProcess.js
index 6ff4a9c1959d04bc196a5b0f742958ac9cb73152..c6978d123834d829432f7912bd849615e1b8c5be 100644
--- a/entity/ExportTemplateSelection_entity/entityfields/exporttemplateselectionid/valueProcess.js
+++ b/entity/ExportTemplateSelection_entity/entityfields/exporttemplateselectionid/valueProcess.js
@@ -1,7 +1,6 @@
-import("system.neon");
+import("system.vars");
 import("system.result");
 import("system.util");
-import("system.vars");
 
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
+if(vars.get("$this.value") == null)
     result.string(util.getNewUUID());
\ No newline at end of file
diff --git a/entity/ExportTemplateSelection_entity/recordcontainers/jdito/onInsert.js b/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js
similarity index 100%
rename from entity/ExportTemplateSelection_entity/recordcontainers/jdito/onInsert.js
rename to entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js
diff --git a/entity/ExportTemplateSelection_entity/entityfields/safeandexport/stateProcess.js b/entity/ExportTemplateSelection_entity/entityfields/safeandexport/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a3e809eef1cfe32e6d9ea3c849043949aa40e01
--- /dev/null
+++ b/entity/ExportTemplateSelection_entity/entityfields/safeandexport/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if (vars.get("$sys.validationerrors"))
+    result.string(neon.COMPONENTSTATE_DISABLED);
+else
+    result.string(neon.COMPONENTSTATE_EDITABLE);
diff --git a/entity/ExportTemplateSelection_entity/recordcontainers/jdito/contentProcess.js b/entity/ExportTemplateSelection_entity/recordcontainers/jdito/contentProcess.js
deleted file mode 100644
index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000
--- a/entity/ExportTemplateSelection_entity/recordcontainers/jdito/contentProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.result");
-import("system.vars");
-
-//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003
-var rows = [];
-if (vars.get("$local.idvalues"))
-    rows = vars.get("$local.idvalues").map(function (id) {return [id];});
-
-result.object(rows);
\ No newline at end of file
diff --git a/entity/Leadimport_entity/Leadimport_entity.aod b/entity/Leadimport_entity/Leadimport_entity.aod
index 5c483b9f63d00e93dc890594bc436b40fb45f62e..b794f161e46182f88b34adf15eb7670350f3b11a 100644
--- a/entity/Leadimport_entity/Leadimport_entity.aod
+++ b/entity/Leadimport_entity/Leadimport_entity.aod
@@ -242,6 +242,7 @@
       <title>Upload new file</title>
       <onActionProcess>%aditoprj%/entity/Leadimport_entity/entityfields/uploadnewfile/onActionProcess.js</onActionProcess>
       <iconId>VAADIN:UPLOAD_ALT</iconId>
+      <state>INVISIBLE</state>
     </entityActionField>
     <entityField>
       <name>information</name>
@@ -260,7 +261,7 @@
       <onActionProcess>%aditoprj%/entity/Leadimport_entity/entityfields/load_data/onActionProcess.js</onActionProcess>
       <isMenuAction v="true" />
       <iconId>VAADIN:CLOUD_DOWNLOAD</iconId>
-      <state>INVISIBLE</state>
+      <state>EDITABLE</state>
     </entityActionField>
     <entityConsumer>
       <name>LeadTempC</name>
diff --git a/entity/Letter_entity/Letter_entity.aod b/entity/Letter_entity/Letter_entity.aod
index ee8ee1576e79872ea9f0366716643c7afd04106a..8bab19f92a2debbaf0ff15063e43609467f98db8 100644
--- a/entity/Letter_entity/Letter_entity.aod
+++ b/entity/Letter_entity/Letter_entity.aod
@@ -4,19 +4,21 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Letter_entity/documentation.adoc</documentation>
   <onValidation>%aditoprj%/entity/Letter_entity/onValidation.js</onValidation>
-  <recordContainer>jdito</recordContainer>
+  <recordContainer>datalessConfig</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
     </entityProvider>
     <entityField>
       <name>UID</name>
+      <state>EDITABLE</state>
     </entityField>
     <entityField>
       <name>DOCUMENT_TEMPLATE</name>
       <title>Document Template</title>
       <consumer>DocumentTemplates</consumer>
       <linkedContext>DocumentTemplate</linkedContext>
+      <state>EDITABLE</state>
     </entityField>
     <entityConsumer>
       <name>DocumentTemplates</name>
@@ -44,6 +46,7 @@
       <name>bindata</name>
       <title>Custom template</title>
       <contentType>FILE</contentType>
+      <state>EDITABLE</state>
     </entityField>
     <entityActionField>
       <name>downloadTemplate</name>
@@ -54,24 +57,26 @@
     </entityActionField>
     <entityField>
       <name>comingfrom</name>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/Letter_entity/entityfields/comingfrom/valueProcess.js</valueProcess>
     </entityField>
     <entityParameter>
       <name>ComingFrom_param</name>
       <expose v="true" />
     </entityParameter>
+    <entityActionField>
+      <name>downloadLetterAndCreateActivity</name>
+      <title>Download letter and create Activity</title>
+      <onActionProcess>%aditoprj%/entity/Letter_entity/entityfields/downloadletterandcreateactivity/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:DOWNLOAD_ALT</iconId>
+      <state>DISABLED</state>
+      <stateProcess>%aditoprj%/entity/Letter_entity/entityfields/downloadletterandcreateactivity/stateProcess.js</stateProcess>
+    </entityActionField>
   </entityFields>
   <recordContainers>
-    <jDitoRecordContainer>
-      <name>jdito</name>
-      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
-      <contentProcess>%aditoprj%/entity/Letter_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
-      <onInsert>%aditoprj%/entity/Letter_entity/recordcontainers/jdito/onInsert.js</onInsert>
-      <recordFieldMappings>
-        <jDitoRecordFieldMapping>
-          <name>UID.value</name>
-        </jDitoRecordFieldMapping>
-      </recordFieldMappings>
-    </jDitoRecordContainer>
+    <datalessRecordContainer>
+      <name>datalessConfig</name>
+      <alias>Data_alias</alias>
+    </datalessRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Letter_entity/recordcontainers/jdito/onInsert.js b/entity/Letter_entity/entityfields/downloadletterandcreateactivity/onActionProcess.js
similarity index 89%
rename from entity/Letter_entity/recordcontainers/jdito/onInsert.js
rename to entity/Letter_entity/entityfields/downloadletterandcreateactivity/onActionProcess.js
index f82590e6fcb0df7f693a219f05579bddae213eda..840d399140a26629f7d42a2dce81995ac1758d39 100644
--- a/entity/Letter_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/Letter_entity/entityfields/downloadletterandcreateactivity/onActionProcess.js
@@ -24,3 +24,5 @@ if (template)
 
     ActivityUtils.createNewActivity(null, links, null, null, translate.text("Letter"), text.parseDocument(content), $KeywordRegistry.activityDirection$outgoing(), [[template.filename, content, false]]);
 }
+else
+    throw new Error("Error while using a document template: The provided template does not contain data.");
\ No newline at end of file
diff --git a/entity/Letter_entity/entityfields/downloadletterandcreateactivity/stateProcess.js b/entity/Letter_entity/entityfields/downloadletterandcreateactivity/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f52d9a4f1aaef64c96319e83b2f5dae4da376fcd
--- /dev/null
+++ b/entity/Letter_entity/entityfields/downloadletterandcreateactivity/stateProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if (vars.get("$sys.validationerrors") || (!vars.get("$field.bindata") && !vars.get("$field.DOCUMENT_TEMPLATE")))
+    result.string(neon.COMPONENTSTATE_DISABLED);
+else
+    result.string(neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
diff --git a/entity/Letter_entity/recordcontainers/jdito/contentProcess.js b/entity/Letter_entity/recordcontainers/jdito/contentProcess.js
deleted file mode 100644
index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000
--- a/entity/Letter_entity/recordcontainers/jdito/contentProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.result");
-import("system.vars");
-
-//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003
-var rows = [];
-if (vars.get("$local.idvalues"))
-    rows = vars.get("$local.idvalues").map(function (id) {return [id];});
-
-result.object(rows);
\ No newline at end of file
diff --git a/entity/MemberRoles_entity/contentTitleProcess.js b/entity/MemberRoles_entity/contentTitleProcess.js
index cdb5d2367c9e46074b268b96b200fa347b9c5ecf..163260409e0b50da23db6289380f09fde28da60c 100644
--- a/entity/MemberRoles_entity/contentTitleProcess.js
+++ b/entity/MemberRoles_entity/contentTitleProcess.js
@@ -1,4 +1,5 @@
 import("system.vars");
 import("system.result");
+import("system.translate")
 
-result.string(vars.getString("$field.TITLE"));
\ No newline at end of file
+result.string(translate.text(vars.getString("$field.TITLE")));
\ No newline at end of file
diff --git a/entity/Notification_entity/Notification_entity.aod b/entity/Notification_entity/Notification_entity.aod
index 32689181066c4c089b9cb02d88ba84063f371310..05ab81cea74020a8b9ef2aa3bfa4266073bcda10 100644
--- a/entity/Notification_entity/Notification_entity.aod
+++ b/entity/Notification_entity/Notification_entity.aod
@@ -37,11 +37,11 @@
       <title>title</title>
     </entityField>
     <entityField>
-      <name>CREATIONDATE</name>
+      <name>CREATEDATE</name>
       <title>Date</title>
       <contentType>DATE</contentType>
       <resolution>MINUTE</resolution>
-      <valueProcess>%aditoprj%/entity/Notification_entity/entityfields/creationdate/valueProcess.js</valueProcess>
+      <valueProcess>%aditoprj%/entity/Notification_entity/entityfields/createdate/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>DESCRIPTION</name>
@@ -57,7 +57,8 @@
       <valueProcess>%aditoprj%/entity/Notification_entity/entityfields/icon/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
-      <name>LIFETIME</name>
+      <name>DELETEDATE</name>
+      <contentType>DATE</contentType>
     </entityField>
     <entityField>
       <name>ORIGINATORNAME</name>
@@ -120,10 +121,6 @@
         </entityActionField>
       </children>
     </entityActionGroup>
-    <entityActionField>
-      <name>rowClickAction</name>
-      <onActionProcess>%aditoprj%/entity/Notification_entity/entityfields/rowclickaction/onActionProcess.js</onActionProcess>
-    </entityActionField>
     <entityField>
       <name>RESOLVEDPRIORITY</name>
       <title>priority</title>
@@ -166,6 +163,7 @@
       <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>c4e34b96-6081-4d04-8377-040a8ed3e14c</name>
@@ -199,7 +197,6 @@
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>CREATIONDATE.value</name>
-          <recordfield>ASYS_NOTIFICATIONCONTENTS.CREATIONDATE</recordfield>
           <isFilterable v="true" />
           <isLookupFilter v="true" />
         </dbRecordFieldMapping>
@@ -213,10 +210,6 @@
           <name>FORCEDPRIORITY.value</name>
           <recordfield>ASYS_NOTIFICATIONCONTENTS.FORCEDPRIORITY</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>LIFETIME.value</name>
-          <recordfield>ASYS_NOTIFICATIONCONTENTS.LIFETIME</recordfield>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>ORIGINATORNAME.value</name>
           <recordfield>ASYS_NOTIFICATIONCONTENTS.ORIGINATORNAME</recordfield>
@@ -253,12 +246,6 @@
           <name>ICON.value</name>
           <recordfield>ASYS_NOTIFICATIONCONTENTS.ICON_INFO</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>CALCULATEDPRIORITY.value</name>
-          <recordfield>ASYS_NOTIFICATIONCONTENTS.FORCEDPRIORITY</recordfield>
-          <isFilterable v="true" />
-          <isLookupFilter v="true" />
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>RESOLVEDPRIORITY.value</name>
           <recordfield>ASYS_NOTIFICATIONS.RESOLVEDPRIORITY</recordfield>
@@ -269,6 +256,14 @@
           <name>ID.value</name>
           <recordfield>ASYS_NOTIFICATIONS.ID</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CREATEDATE.value</name>
+          <recordfield>ASYS_NOTIFICATIONCONTENTS.CREATEDATE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DELETEDATE.value</name>
+          <recordfield>ASYS_NOTIFICATIONCONTENTS.DELETEDATE</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Notification_entity/entityfields/creationdate/valueProcess.js b/entity/Notification_entity/entityfields/createdate/valueProcess.js
similarity index 50%
rename from entity/Notification_entity/entityfields/creationdate/valueProcess.js
rename to entity/Notification_entity/entityfields/createdate/valueProcess.js
index 99a8091366e2ac7f301452706d5cfdff5e320a0d..139597f9cb07c5d48bed18984ec4747f4b4f3438 100644
--- a/entity/Notification_entity/entityfields/creationdate/valueProcess.js
+++ b/entity/Notification_entity/entityfields/createdate/valueProcess.js
@@ -1,2 +1,2 @@
-
-
+
+
diff --git a/entity/Notification_entity/entityfields/rowclickaction/onActionProcess.js b/entity/Notification_entity/entityfields/rowclickaction/onActionProcess.js
deleted file mode 100644
index 5ee955fd6389e03589d671d10bb0f51aa70a8bb2..0000000000000000000000000000000000000000
--- a/entity/Notification_entity/entityfields/rowclickaction/onActionProcess.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import("system.vars");
-import("system.tools");
-import("system.notification");
-import("system.neon");
-
-var user = tools.getCurrentUser();
-var selectedNotifications = vars.get("$sys.selection");
-
-for(var i = 0; i < selectedNotifications.length; i++)
-    notification.updateUserNotificationState(user["name"], selectedNotifications[i], notification.STATE_CONFIRMED);
-
-neon.refresh();
\ No newline at end of file
diff --git a/entity/Notification_entity/entityfields/setnotificationstate/children/setread/onActionProcess.js b/entity/Notification_entity/entityfields/setnotificationstate/children/setread/onActionProcess.js
index 5ee955fd6389e03589d671d10bb0f51aa70a8bb2..608c454e87cb33460b61a4999fb77372ccaab864 100644
--- a/entity/Notification_entity/entityfields/setnotificationstate/children/setread/onActionProcess.js
+++ b/entity/Notification_entity/entityfields/setnotificationstate/children/setread/onActionProcess.js
@@ -9,4 +9,4 @@ var selectedNotifications = vars.get("$sys.selection");
 for(var i = 0; i < selectedNotifications.length; i++)
     notification.updateUserNotificationState(user["name"], selectedNotifications[i], notification.STATE_CONFIRMED);
 
-neon.refresh();
\ No newline at end of file
+//neon.refreshAll();
\ No newline at end of file
diff --git a/entity/Notification_entity/recordcontainers/db/onDBDelete.js b/entity/Notification_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..05d1a30c0a4efc49d64aab055ed9b58109aba6f6
--- /dev/null
+++ b/entity/Notification_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.notification");
+
+// Deletes notificationContents from its table, if there are no
+notification.deleteContentIfOrphan(vars.get("$field.ID"), vars.get("$field.CONTENTID"));
\ No newline at end of file
diff --git a/entity/Notification_entity/recordcontainers/db/orderClauseProcess.js b/entity/Notification_entity/recordcontainers/db/orderClauseProcess.js
index 15d1007bb140ce734179a58e7bd41488577d72ea..86103719abde99edd46ff3be4155f6acc4e3219a 100644
--- a/entity/Notification_entity/recordcontainers/db/orderClauseProcess.js
+++ b/entity/Notification_entity/recordcontainers/db/orderClauseProcess.js
@@ -3,5 +3,5 @@ import("system.db");
 
 result.object({
     "ASYS_NOTIFICATIONS.STATE": db.DESCENDING,
-    "ASYS_NOTIFICATIONCONTENTS.CREATIONDATE": db.DESCENDING
+    "ASYS_NOTIFICATIONCONTENTS.CREATEDATE": db.DESCENDING
     });
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js b/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js
index a84e5d27e3d72d014a9b67046111649c98ed4099..d71f4187a27a06b8cd729143f27d7c6ecab4ee3a 100644
--- a/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js
+++ b/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js
@@ -25,7 +25,7 @@ if (vars.exists("$sys.selection") && vars.getString("$sys.selection"))
         var params = {
             "ObjectIds_param" : JSON.stringify(parentIds),
             "ObjectTypes_param" : JSON.stringify(parentObjectTypes),
-            "RelationType_param" : vars.get("$field.OBJECTRELATIONTYPEID")
+            "RelationTypes_param" : vars.get("$field.OBJECTRELATIONTYPEID")
         };
 
         neon.openContext("ObjectTree", "ObjectTreeEdit_view", null, neon.OPERATINGSTATE_NEW, params);
diff --git a/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js
index 6dad72dac58144e1246329a26405c1de0f7e8845..87ebf6111df6a09ba98f8c23763be72593d1dbea 100644
--- a/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js
+++ b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js
@@ -2,7 +2,7 @@ import("system.neon");
 import("system.vars");
 import("system.result");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.RelationType_param") && vars.get("$param.RelationType_param"))
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.RelationTypes_param") && vars.get("$param.RelationTypes_param"))
 {
-    result.string(vars.get("$param.RelationType_param"))
+    result.string(vars.get("$param.RelationTypes_param"));
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index 18b73ee9d79ca1d272ecba210f69d47f240fa849..48fe414838b8a3bfa78d78a7a57e768a8f82aa26 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -37,6 +37,7 @@
       <name>CURRENCY</name>
       <title>Currency</title>
       <consumer>KeywordCurrencies</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/currency/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/currency/valueProcess.js</valueProcess>
@@ -58,6 +59,7 @@
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
       <inputFormat>dd.MM.yyyy</inputFormat>
+      <groupable v="true" />
       <mandatory v="true" />
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/offerdate/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offerdate/valueProcess.js</valueProcess>
@@ -73,6 +75,7 @@
       <title>Probability</title>
       <consumer>KeywordProbabilities</consumer>
       <contentType>NUMBER</contentType>
+      <groupable v="true" />
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/displayValueProcess.js</displayValueProcess>
@@ -81,6 +84,7 @@
       <name>STATUS</name>
       <title>Status</title>
       <consumer>KeywordOfferStates</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/status/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/status/valueProcess.js</valueProcess>
@@ -155,7 +159,9 @@
       <name>NET</name>
       <title>Total net</title>
       <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00</outputFormat>
       <inputFormat>#,##0.00</inputFormat>
+      <groupable v="true" />
       <state>READONLY</state>
       <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/net/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -226,12 +232,14 @@
       <name>CONTACT_ORG_ID</name>
       <title>Company</title>
       <consumer>Organisations</consumer>
+      <groupable v="true" />
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/contact_org_id/stateProcess.js</stateProcess>
     </entityField>
     <entityField>
       <name>CONTACT_PERSON_ID</name>
       <title>Person</title>
       <consumer>Persons</consumer>
+      <groupable v="true" />
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/contact_person_id/stateProcess.js</stateProcess>
     </entityField>
     <entityConsumer>
@@ -524,6 +532,7 @@
       <name>PAYMENTTERMS</name>
       <title>Payment term</title>
       <consumer>KeywordPaymentTerm</consumer>
+      <groupable v="true" />
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/paymentterms/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/paymentterms/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/paymentterms/displayValueProcess.js</displayValueProcess>
@@ -532,6 +541,7 @@
       <name>DELIVERYTERMS</name>
       <title>Delivery specification</title>
       <consumer>KeywordDeliveryTerm</consumer>
+      <groupable v="true" />
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/deliveryterms/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/deliveryterms/displayValueProcess.js</displayValueProcess>
@@ -911,6 +921,7 @@
       <documentation>%aditoprj%/entity/Offer_entity/entityfields/contact_id/documentation.adoc</documentation>
       <title>Contact</title>
       <consumer>AnyContacts</consumer>
+      <groupable v="true" />
       <linkedContextProcess>%aditoprj%/entity/Offer_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess>
       <mandatory v="true" />
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/contact_id/stateProcess.js</stateProcess>
@@ -1008,6 +1019,10 @@
         <fieldName>#PROVIDER</fieldName>
       </dependency>
     </entityConsumer>
+    <entityAggregateField>
+      <name>NET_aggregate</name>
+      <parentField>NET</parentField>
+    </entityAggregateField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -1241,6 +1256,11 @@
           <name>ISOLANGUAGE.displayValue</name>
           <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/isolanguage.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <aggregateFieldDbMapping>
+          <name>NET_aggregate.value</name>
+          <recordfield>OFFER.NET</recordfield>
+          <aggregateType>SUM</aggregateType>
+        </aggregateFieldDbMapping>
       </recordFieldMappings>
       <filterExtensions>
         <filterExtensionSet>
@@ -1266,10 +1286,6 @@
           <name>OFFERCODE.value</name>
           <indexFieldType>STRING</indexFieldType>
         </indexRecordFieldMapping>
-        <indexRecordFieldMapping>
-          <name>CUSTOMERCODE.value</name>
-          <indexFieldType>STRING</indexFieldType>
-        </indexRecordFieldMapping>
         <indexRecordFieldMapping>
           <name>CONTACT_ID.value</name>
           <indexFieldType>STRING</indexFieldType>
diff --git a/entity/Offer_entity/recordcontainers/index/query.js b/entity/Offer_entity/recordcontainers/index/query.js
index 608db62da009bb4eb785ecbd14c9f10f8dbb351d..6026dd62b0e7e82195b1597e9907f011545ce07f 100644
--- a/entity/Offer_entity/recordcontainers/index/query.js
+++ b/entity/Offer_entity/recordcontainers/index/query.js
@@ -13,7 +13,6 @@ var querySelect = newSelect("OFFER.OFFERID " // as "_uid_",
                         + ", " + sqlHelper.concat([sqlHelper.cast("OFFER.OFFERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.offerStatus(), "OFFER.STATUS")], " | ") //as "_title_"
                         + ", " + sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Description") + ":'", sqlHelper.castLob("OFFER.INFO", 250)]) // as "_description_"  
                         + ", OFFER.OFFERCODE"
-                        + ", ORGANISATION.CUSTOMERCODE " 
                         + ", OFFER.CONTACT_ID "
                         + ", CONTACT.ORGANISATION_ID " // as CONTACT_ORG_ID
                         + ", ORGANISATION.NAME") // as "CONTACT_ORG_ID.displayValue"
diff --git a/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/price_aggregate.value/expression.js b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/price_aggregate.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..6a3e3167e6a5d3a3ec8b30eefd928c665c58dc4a
--- /dev/null
+++ b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/price_aggregate.value/expression.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("OFFERITEM.PRICE * OFFERITEM.QUANTITY * ((100 - OFFERITEM.DISCOUNT) / 100)");
\ No newline at end of file
diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod
index 30c65d442d8e914dbe9ed081c33c60132450794a..2c8082ea9ffdf2565a44890ffea392bdef4f298d 100644
--- a/entity/Order_entity/Order_entity.aod
+++ b/entity/Order_entity/Order_entity.aod
@@ -50,6 +50,7 @@
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
       <inputFormat>dd.MM.yyyy</inputFormat>
+      <groupable v="true" />
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesorderdate/valueProcess.js</valueProcess>
     </entityField>
@@ -134,6 +135,7 @@
       <name>NET</name>
       <title>Total net</title>
       <contentType>NUMBER</contentType>
+      <groupable v="true" />
       <state>READONLY</state>
       <valueProcess></valueProcess>
       <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/net/displayValueProcess.js</displayValueProcess>
@@ -189,11 +191,13 @@
       <name>CONTACT_ORG_ID</name>
       <title>Company</title>
       <consumer>Organisations</consumer>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>CONTACT_PERSON_ID</name>
       <title>Person</title>
       <consumer>Persons</consumer>
+      <groupable v="true" />
     </entityField>
     <entityConsumer>
       <name>AnyContacts</name>
@@ -349,6 +353,7 @@
       <name>OFFER_ID</name>
       <title>Offer</title>
       <consumer>Offers</consumer>
+      <groupable v="true" />
       <linkedContext>Offer</linkedContext>
       <state>AUTO</state>
       <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offer_id/valueProcess.js</valueProcess>
@@ -434,6 +439,7 @@
       <documentation>%aditoprj%/entity/Order_entity/entityfields/ordertype/documentation.adoc</documentation>
       <title>Order Type</title>
       <consumer>KeywordOrderTypes</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
       <usePermissions v="true" />
       <valueProcess>%aditoprj%/entity/Order_entity/entityfields/ordertype/valueProcess.js</valueProcess>
@@ -444,6 +450,7 @@
       <documentation>%aditoprj%/entity/Order_entity/entityfields/orderstatus/documentation.adoc</documentation>
       <title>Sent</title>
       <contentType>BOOLEAN</contentType>
+      <groupable v="true" />
       <dropDownProcess>%aditoprj%/entity/Order_entity/entityfields/orderstatus/dropDownProcess.js</dropDownProcess>
       <valueProcess>%aditoprj%/entity/Order_entity/entityfields/orderstatus/valueProcess.js</valueProcess>
     </entityField>
@@ -465,6 +472,7 @@
       <documentation>%aditoprj%/entity/Order_entity/entityfields/cancellation/documentation.adoc</documentation>
       <title>${ORDER_CANCELLED}</title>
       <contentType>BOOLEAN</contentType>
+      <groupable v="true" />
       <dropDownProcess>%aditoprj%/entity/Order_entity/entityfields/cancellation/dropDownProcess.js</dropDownProcess>
       <valueProcess>%aditoprj%/entity/Order_entity/entityfields/cancellation/valueProcess.js</valueProcess>
     </entityField>
@@ -489,6 +497,7 @@
       <title>Pay date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <groupable v="true" />
       <stateProcess>%aditoprj%/entity/Order_entity/entityfields/paydate/stateProcess.js</stateProcess>
     </entityField>
     <entityField>
@@ -1208,10 +1217,6 @@
           <name>SALESORDERCODE.value</name>
           <indexFieldType>STRING</indexFieldType>
         </indexRecordFieldMapping>
-        <indexRecordFieldMapping>
-          <name>CUSTOMERCODE.value</name>
-          <indexFieldType>STRING</indexFieldType>
-        </indexRecordFieldMapping>
         <indexRecordFieldMapping>
           <name>CONTACT_ID.value</name>
           <indexFieldType>STRING</indexFieldType>
diff --git a/entity/Order_entity/recordcontainers/index/query.js b/entity/Order_entity/recordcontainers/index/query.js
index 63f49bc6ea56f4a5754372cdd2184319f5a2c519..f0f600b464a18cfbe610b23dbd3889337d28dc15 100644
--- a/entity/Order_entity/recordcontainers/index/query.js
+++ b/entity/Order_entity/recordcontainers/index/query.js
@@ -12,7 +12,6 @@ var querySelect = newSelect("SALESORDERID " // as "_uid_"
                         + ", " + sqlHelper.concat([sqlHelper.cast("SALESORDERCODE", SQLTYPES.CHAR, 10)], " | ") // as "_title_" 
                         + ", " + sqlHelper.concat(["ORGANISATION.NAME"], " | ") // as "_description_" 
                         + ", SALESORDERCODE" 
-                        + ", CUSTOMERCODE"
                         + ", SALESORDER.CONTACT_ID"
                         + ", CONTACT.ORGANISATION_ID " //as CONTACT_ORG_ID
                         + ", ORGANISATION.NAME ") //as "CONTACT_ORG_ID.displayValue"
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index 96b76098fde1ff72a627226316fcbca2d88d72cc..875ad026d6d26f22daffee578b7e83c580b1639e 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -39,6 +39,7 @@
       <name>LANGUAGE</name>
       <title>Language</title>
       <consumer>Languages</consumer>
+      <groupable v="true" />
       <selectionMode>SINGLE</selectionMode>
       <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/language/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/language/displayValueProcess.js</displayValueProcess>
@@ -56,6 +57,7 @@
       <name>STATUS</name>
       <title>Status</title>
       <consumer>KeywordContactStates</consumer>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/status/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -63,6 +65,7 @@
       <name>TYPE</name>
       <title>Type</title>
       <consumer>KeywordOrganisationTypes</consumer>
+      <groupable v="true" />
       <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/type/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
@@ -785,6 +788,7 @@
       <title>Turnover Current Year</title>
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00€</outputFormat>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnovercurrentyear/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -792,6 +796,7 @@
       <title>Turnover Last Year</title>
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00€</outputFormat>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/turnoverlastyear/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -948,7 +953,6 @@
     <entityProvider>
       <name>SelfDuplicatesProvider</name>
       <titlePlural>Duplicates</titlePlural>
-      <recordContainer>index</recordContainer>
     </entityProvider>
     <entityParameter>
       <name>OnlyShowContactIds_param</name>
@@ -1003,6 +1007,7 @@
     </entityActionGroup>
     <entityField>
       <name>STANDARD_COUNTRY</name>
+      <groupable v="true" />
     </entityField>
     <entityParameter>
       <name>OnlyOwnSupervised_param</name>
@@ -1022,6 +1027,7 @@
         </entityParameter>
         <entityParameter>
           <name>DuplicateCurrentContactId_param</name>
+          <title></title>
           <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/duplicatecurrentcontactid_param/valueProcess.js</valueProcess>
         </entityParameter>
         <entityParameter>
@@ -1066,9 +1072,11 @@
     </entityField>
     <entityField>
       <name>STANDARD_ZIP</name>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>STANDARD_CITY</name>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>ORGANISATION_REPORT_DATA</name>
diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
index 68b83abdba534ab6e967244ddbab5057150be017..d33e137213bc04c9d971f030d68840ab0e9c46b4 100644
--- a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
+++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
@@ -8,7 +8,7 @@ if(sysSelection.length > 0)     //if data selected -> use selected data
     params = {
         "selectedData_param" : JSON.stringify(sysSelection),
         "comingFrom_param" : vars.get("$sys.currentcontextname")}
-    neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+    neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
 }
 else                            //else -> use Filtercondition
 {
@@ -16,6 +16,6 @@ else                            //else -> use Filtercondition
     params = {
         "selectedData_param" : JSON.stringify(sysFilter),
         "comingFrom_param" : vars.get("$sys.currentcontextname")}
-    neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+    neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
 }
 
diff --git a/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js b/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js
index fdbb29bfe3953fb655929382d1c4f393330c2d0a..27d043515ab626d29f0d3453c64ed6c053c8b2a9 100644
--- a/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js
+++ b/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js
@@ -1,6 +1,5 @@
 import("system.project");
 import("system.indexsearch");
-import("system.logging");
 import("system.vars");
 import("DuplicateScanner_lib");
 import("system.result");
@@ -8,11 +7,11 @@ import("system.result");
 var scannerName = "OrganisationDuplicates";
 var targetEntity = "Organisation_entity";
 var valuesToCheck = {};
-var entityFieldsToLoad = DuplicateScannerUtils.GetEntityFieldsFromConfig(scannerName, targetEntity);
+var entityFieldsToLoad = DuplicateScannerUtils.getEntityFieldObjectFromConfig(scannerName, targetEntity);
 
 var idsForEmptyResult = JSON.stringify(["nodata"]);
 
-if (entityFieldsToLoad == null || entityFieldsToLoad.length == 0)
+if (entityFieldsToLoad == null)
     result.string(idsForEmptyResult);
 else
 {
@@ -23,17 +22,22 @@ else
     vars.get("$field.STANDARD_CITY");
     vars.get("$field.STANDARD_ZIP");
     vars.get("$field.STANDARD_ADDRESS");
-
-    for (let fieldname in entityFieldsToLoad) 
-    { 
-        var field = entityFieldsToLoad[fieldname];
+    
+    var allFieldsToLoad = entityFieldsToLoad.entityFields.concat(entityFieldsToLoad.entityIdField);
+    allFieldsToLoad.forEach(function (field)
+    {
         var fieldValue = vars.get("$field." + field);
-
         if (fieldValue)
-           valuesToCheck[field] = fieldValue;
-    }
-
-    var scanResults = DuplicateScannerUtils.ScanForDuplicates(scannerName, targetEntity, valuesToCheck, null) || [];
+            valuesToCheck[field] = fieldValue;
+    });
+    
+    var scanResults = [];
+    
+    //don't search if only the id field has a value
+    var fieldsToCheck = Object.keys(valuesToCheck);
+    if (!(fieldsToCheck.length === 0 || (fieldsToCheck.length === 1 && entityFieldsToLoad.entityIdField in valuesToCheck)))
+        scanResults = DuplicateScannerUtils.ScanForDuplicates(scannerName, targetEntity, valuesToCheck, null) || [];
+    
     var duplicateIds = scanResults.map(function (scanResult)
     {
         return scanResult[indexsearch.FIELD_ID];
diff --git a/entity/Organisation_entity/recordcontainers/index/affectedIds.js b/entity/Organisation_entity/recordcontainers/index/affectedIds.js
index a8b02566f9728cbe5a6c53033c884d780b6a71b8..ee11b9a9e9cf1d5ef4297d4b25d2da7fd27210a7 100644
--- a/entity/Organisation_entity/recordcontainers/index/affectedIds.js
+++ b/entity/Organisation_entity/recordcontainers/index/affectedIds.js
@@ -4,11 +4,13 @@ import("system.vars");
 import("IndexSearch_lib");
 import("Sql_lib");
 
-var infoContainer, onUpdFn, tableName, res;
+var infoContainer, onUpdFn, tableName, res, action;
 
 tableName = vars.get("$local.table");
 idValue = vars.get("$local.idvalue");
-infoContainer =  IndexsearchUtils.createAffectedInfoContainer(idValue, null, vars.get("$local.action")
+action = vars.get("$local.action");
+
+infoContainer =  IndexsearchUtils.createAffectedInfoContainer(idValue, null, action
     ,function (){return vars.get("$local.columns")}
     ,function (){return vars.get("$local.oldvalues")}
     ,function (){return vars.get("$local.values")});
@@ -19,13 +21,21 @@ switch (tableName)
         res = [idValue];
         break;    
     case "ORGANISATION":
-        res = newSelect("CONTACT.CONTACTID")
+        //if an organisation is created or deleted there is no need to do this for the ORGANISATION and CONTACT-table twice, since everytime a 
+        //entry in ORGANISATION is done´, it is also done in CONTACT which is handled in the switch case above => skip then the ORGANISATION-part
+        //(also on delete the record does not exist anymore)
+        if (action == "U") 
+        {
+            res = newSelect("CONTACT.CONTACTID")
                 .from("CONTACT")
                 .where("CONTACT.PERSON_ID is null")
                 .and("CONTACT.ORGANISATION_ID", idValue)
                 .arrayColumn();
+        }
         break;
     case "ADDRESS":
+        //do not skip here if it's a delete action since it could be that only an address is removed and not a whole record-set of 
+        //organisation, address, communication, etc.
         res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){
             return newSelect("ADDRESS.CONTACT_ID")
                     .from("ADDRESS")
@@ -34,6 +44,8 @@ switch (tableName)
         });
         break;
     case "COMMUNICATION":
+        //do not skip here if it's a delete action since it could be that only a communication-entry is removed and not a whole record-set of 
+        //organisation, address, communication, etc.
         res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){
             return newSelect("COMMUNICATION.CONTACT_ID")
                     .from("COMMUNICATION")
@@ -41,10 +53,10 @@ switch (tableName)
                     .arrayColumn();
         });
         break;
-    default:
-        res = [];   //needed, because the Index is being rebuilt if nothing gets returned
 }
 
+//needed, because the complete index (fullIndexer) is being rebuilt if nothing gets returned here
+if (res)
     result.object(res);
-    
-
+else
+    result.object([]);
diff --git a/entity/PermissionDetail_entity/PermissionDetail_entity.aod b/entity/PermissionDetail_entity/PermissionDetail_entity.aod
index 6746dfb9da55635d8b67b594885eb04d61a923ec..8b2a82d1248e5a526244505511c3a5150ea748fe 100644
--- a/entity/PermissionDetail_entity/PermissionDetail_entity.aod
+++ b/entity/PermissionDetail_entity/PermissionDetail_entity.aod
@@ -205,6 +205,7 @@
       <name>FULLPERMISSIONS</name>
       <title>Full Permissions</title>
       <contentType>BOOLEAN</contentType>
+      <stateProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/fullpermissions/stateProcess.js</stateProcess>
     </entityField>
   </entityFields>
   <recordContainers>
diff --git a/entity/PermissionDetail_entity/entityfields/fullpermissions/stateProcess.js b/entity/PermissionDetail_entity/entityfields/fullpermissions/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..52866af7edce3c73cc8645e1c1c35a677db802d1
--- /dev/null
+++ b/entity/PermissionDetail_entity/entityfields/fullpermissions/stateProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if (vars.get("$field.ACCESSTYPE") == "E") {
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+} else {
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js b/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js
index f89d3520f1571cbc1459227f2b645a043755569b..13867052def94e3b1bf143b3829ca589152043f3 100644
--- a/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/permissionactions/children/permissionid_param/valueProcess.js
@@ -8,8 +8,7 @@ import("Permission_lib");
 var alias = SqlUtils.getSystemAlias();
 var rootPermId = "";
 var entity = vars.get("$field.ENTITY");
-var roleTitle = vars.get("$field.ROLE");
-var roleName = PermissionUtil.resolveRoleTitle(roleTitle);
+var roleName = vars.get("$field.ROLE");
 var cond = vars.get("$field.CONDITION");
 var field = vars.get("$field.FIELD");
 var accesstype = vars.get("$field.ACCESSTYPE");
diff --git a/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js b/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js
index 98e5767b30c59a1788fcdd6c57a66f21abf28742..d6e0383c0faed9c6e730fd388d1065305b4511e5 100644
--- a/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js
+++ b/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js
@@ -21,6 +21,7 @@ var actionsInDb = PermissionUtil.getActions([permId]);
 var actionsAsStringArray = vars.get("$field.ACTION").split(","); // only useful while working with already existing permissions
 var emptyCond = PermissionUtil.getEmptyCondString(entityName);
 var isDefaultPermission = (permCondInput != emptyCond && permCondInput != "") ? false : true;
+var hasCondChanged = PermissionUtil.isDiff(permId, permCondInput, "COND", "ASYS_PERMISSION");
 
 var deletedRows = vars.get("$field.PermissionActions.deletedRows");
 var changedRows = vars.get("$field.PermissionActions.changedRows");
@@ -35,8 +36,8 @@ if (fullPermissions == 0 || fullPermissions == "") {
     }
 
     if (
-        (deletedRows.length == actionsAsStringArray.length && changedRows.length == 0 && insertedRows.length == 0)
-        || (deletedRows.length == 0 && changedRows.length == 0 && insertedRows.length == 0)       
+        ((deletedRows.length == actionsAsStringArray.length && changedRows.length == 0 && insertedRows.length == 0)
+        || (deletedRows.length == 0 && changedRows.length == 0 && insertedRows.length == 0)) && !hasCondChanged
         ) {
         result.string(translate.text("Permissions without actions are invalid!"));
     }
diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js b/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js
index 17630943af16e67b664032d937be8e2f63bcd1cb..a52bffff51140a626a5e5560c0410e05bf6f9d33 100644
--- a/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/PermissionDetail_entity/recordcontainers/jdito/onInsert.js
@@ -34,13 +34,13 @@ if (fullPermissions == 1) {
     
     // === ENTITY === //
     var entitySetId = PermissionUtil.insertSet("", entityName, roleName, "", ACCESSLEVEL_ENTITY); // entity level set
-    var entityPermId = PermissionUtil.insertPermission(entitySetId, "", "1", null); // entity level permission
+    var entityPermId = PermissionUtil.insertPermission(entitySetId, null, "1", null); // entity level permission
     PermissionUtil.insertAction(entityPermId, ACTION_VIEW, null); // action view
     PermissionUtil.insertAction(entityPermId, ACTION_CREATE, null); // action create
 
     // === RECORD === //
     var recordSetId = PermissionUtil.insertSet(entitySetId, entityName, roleName, "", ACCESSLEVEL_RECORD); // record level set
-    var recordPermId = PermissionUtil.insertPermission(recordSetId, "", "1", null); // record level permission
+    var recordPermId = PermissionUtil.insertPermission(recordSetId, null, "1", null); // record level permission
     PermissionUtil.insertAction(recordPermId, ACTION_READ, null); // read
     PermissionUtil.insertAction(recordPermId, ACTION_UPDATE, null); // update
     PermissionUtil.insertAction(recordPermId, ACTION_DELETE, null); // delete
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index d8bfbd275ac29413e596bd0b43dc2348f0b01f1a..61aa30e669c5d98bfa405cc9fb26e8848dfa290c 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -60,6 +60,7 @@
       <name>SALUTATION</name>
       <title>Salutation</title>
       <consumer>Salutations</consumer>
+      <mandatory v="true" />
     </entityField>
     <entityField>
       <name>TITLE</name>
@@ -288,6 +289,7 @@
       <name>LANGUAGE</name>
       <title>Language</title>
       <consumer>Languages</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Person_entity/entityfields/language/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/language/displayValueProcess.js</displayValueProcess>
@@ -438,6 +440,7 @@
       <name>ADDRESS_ID</name>
       <title>Address</title>
       <consumer>ContactAndOrganisationAddresses</consumer>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Person_entity/entityfields/address_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/address_id/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -578,6 +581,7 @@
       <name>STATUS</name>
       <title>Status</title>
       <consumer>KeywordContactStates</consumer>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Person_entity/entityfields/status/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -616,6 +620,7 @@
     <entityField>
       <name>DEPARTMENT</name>
       <title>Department</title>
+      <groupable v="true" />
       <dropDownProcess>%aditoprj%/entity/Person_entity/entityfields/department/dropDownProcess.js</dropDownProcess>
       <textInputAllowed v="true" />
     </entityField>
@@ -894,6 +899,7 @@
     <entityField>
       <name>STANDARD_COUNTRY</name>
       <title>Country</title>
+      <groupable v="true" />
     </entityField>
     <entityConsumer>
       <name>SelfDuplicatesUncached</name>
@@ -928,19 +934,23 @@
       <name>COMMRESTRICTIONS_ACTIVE</name>
       <title>Commrestrictions</title>
       <color>$priority-high-color</color>
+      <groupable v="true" />
       <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/commrestrictions_active/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>STANDARD_ZIP</name>
       <title>ZIP</title>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>STANDARD_ADDRESS</name>
       <title>Address</title>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>STANDARD_CITY</name>
       <title>City</title>
+      <groupable v="true" />
     </entityField>
     <entityProvider>
       <name>QuickEntryContacts</name>
@@ -1184,12 +1194,15 @@
     </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>
@@ -1477,10 +1490,6 @@
           <isFilterable v="true" />
           <filtertype>EXTENDED</filtertype>
         </consumerMapping>
-        <dbRecordFieldMapping>
-          <name>OrganisationContactId.value</name>
-          <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisationcontactid.value/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>ORGANISATION_CONTACTID.value</name>
           <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisation_contactid.value/expression.js</expression>
diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
index 7b5bf332a2c00f4b6bf433aa9309a3c6034bbc7b..2ad35007ff37100b2d33ffa1443d026442cb976e 100644
--- a/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
+++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
@@ -8,7 +8,7 @@ if(sysSelection.length > 0)     //if data selected -> use selected data
     params = {
         "selectedData_param" : JSON.stringify(sysSelection),
         "comingFrom_param" : vars.get("$sys.currentcontextname")}
-    neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+    neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
 }
 else                            //else -> use Filtercondition
 {
@@ -16,5 +16,5 @@ else                            //else -> use Filtercondition
     params = {
         "selectedData_param" : JSON.stringify(sysFilter),
         "comingFrom_param" : vars.get("$sys.currentcontextname")}
-    neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+    neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
 }
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js b/entity/Person_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js
index 495e2c4503d7e5d36426e013ac66bf55a049a2d4..ce8253a306e0c1bc08dbca4b7e344a68518bf2a0 100644
--- a/entity/Person_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js
+++ b/entity/Person_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js
@@ -5,65 +5,56 @@ import("system.vars");
 import("DuplicateScanner_lib");
 import("system.result");
 
-let scannerName = "PersonDuplicates";
-let targetEntity = "Person_entity";
-let valuesToCheck = {};
-var entityFieldsToLoad = DuplicateScannerUtils.GetEntityFieldsFromConfig(scannerName, targetEntity);
+var scannerName = "PersonDuplicates";
+var targetEntity = "Person_entity";
+var valuesToCheck = {};
+var entityFieldsToLoad = DuplicateScannerUtils.getEntityFieldObjectFromConfig(scannerName, targetEntity);
 
-if(entityFieldsToLoad == null || entityFieldsToLoad.length == 0)
-    result.string(JSON.stringify(["nodata"]));
+var idsForEmptyResult = JSON.stringify(["nodata"]);
+
+if (entityFieldsToLoad == null)
+    result.string(idsForEmptyResult);
 else
 {
     //Read the values of all available entity fields and write the fieldname7value combination
     //as key/value pairs into an object. This is used to trigger the scan for duplicates
 
-   vars.get("$field.STANDARD_CITY");
-   vars.get("$field.STANDARD_ZIP");
-   vars.get("$field.STANDARD_ADDRESS");
-   vars.get("$field.FIRSTNAME");
-   vars.get("$field.LASTNAME");
-   vars.get("$field.PersAddresses.insertedRows")
-   vars.get("$field.PersAddresses.changedRows")
-   vars.get("$field.PersAddresses.deletedRows")
-
-
-   let field = '';
-   let fieldValue = '';
-   for (fieldname in entityFieldsToLoad)
-   { 
-       field = entityFieldsToLoad[fieldname];
-       fieldValue = vars.get("$field." + field);
-
-       if(fieldValue != null && fieldValue != "")
-       {
-           valuesToCheck[field] = fieldValue;
-       }
-   }
-
-   let scanResults = DuplicateScannerUtils.ScanForDuplicates(scannerName, targetEntity,
-   valuesToCheck, null);
-
-   let duplicateIds = [];
-
-   if(scanResults != undefined && scanResults != null)
-   {
-       //Run thru every duplicate result and read out the id. 
-       //Do it now to have a simple array on all usages lateron.
-       for (let i = 0; i < scanResults.length; i++)
-       {
-           let duplicateContactId = scanResults[i][indexsearch.FIELD_ID];
-           duplicateIds.push(duplicateContactId);
-       }
-   }
-
-   /*
-    * To achieve that if there are no duplicates, no contacts should be shown and therefore returned by the 
-    * recordcontainer, an invalid id gets returned. It then is used in the conditionProcess to load the duplicates.
-    * Because of its invalidity, no records are shown.
-   */
-   if(duplicateIds.length == 0)
-       result.string(JSON.stringify(["nodata"]));
-   else
-       result.string(JSON.stringify(duplicateIds));
-}
-
+    vars.get("$field.STANDARD_CITY");
+    vars.get("$field.STANDARD_ZIP");
+    vars.get("$field.STANDARD_ADDRESS");
+    vars.get("$field.FIRSTNAME");
+    vars.get("$field.LASTNAME");
+    vars.get("$field.PersAddresses.insertedRows")
+    vars.get("$field.PersAddresses.changedRows")
+    vars.get("$field.PersAddresses.deletedRows")
+    
+    var allFieldsToLoad = entityFieldsToLoad.entityFields.concat(entityFieldsToLoad.entityIdField);
+    allFieldsToLoad.forEach(function (field)
+    {
+        var fieldValue = vars.get("$field." + field);
+        if (fieldValue)
+            valuesToCheck[field] = fieldValue;
+    });
+    
+    var scanResults = [];
+    
+    //don't search if only the id field has a value
+    var fieldsToCheck = Object.keys(valuesToCheck);
+    if (!(fieldsToCheck.length === 0 || (fieldsToCheck.length === 1 && entityFieldsToLoad.entityIdField in valuesToCheck)))
+        scanResults = DuplicateScannerUtils.ScanForDuplicates(scannerName, targetEntity, valuesToCheck, null) || [];
+    
+    var duplicateIds = scanResults.map(function (duplicate)
+    {
+        return duplicate[indexsearch.FIELD_ID];
+    });
+
+    /*
+     * To achieve that if there are no duplicates, no contacts should be shown and therefore returned by the 
+     * recordcontainer, an invalid id gets returned. It then is used in the conditionProcess to load the duplicates.
+     * Because of its invalidity, no records are shown.
+     */
+    if (duplicateIds.length == 0)
+        result.string(idsForEmptyResult);
+    else
+        result.string(JSON.stringify(duplicateIds));
+}
\ No newline at end of file
diff --git a/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisationcontactid.value/expression.js b/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisationcontactid.value/expression.js
deleted file mode 100644
index 56d6932fbb4a5a6202133f0da069a1cf3243a4a6..0000000000000000000000000000000000000000
--- a/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisationcontactid.value/expression.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("Sql_lib");
-
-result.string("(select CONTACTID from CONTACT orgContact where PERSON_ID is null and ORGANISATION.ORGANISATIONID = orgContact.ORGANISATION_ID)");
\ No newline at end of file
diff --git a/entity/Person_entity/recordcontainers/index/affectedIds.js b/entity/Person_entity/recordcontainers/index/affectedIds.js
index 1cbcfeeb6850a41a4d13165adc198e5e10eb94c8..6a5716e6cc8f003f680f186b5bc46a13033e808b 100644
--- a/entity/Person_entity/recordcontainers/index/affectedIds.js
+++ b/entity/Person_entity/recordcontainers/index/affectedIds.js
@@ -4,11 +4,13 @@ import("system.vars");
 import("IndexSearch_lib");
 import("Sql_lib");
 
-var infoContainer, onUpdFn, tableName, res;
+var infoContainer, onUpdFn, tableName, res, action;
 
 tableName = vars.get("$local.table");
 idValue = vars.get("$local.idvalue");
-infoContainer =  IndexsearchUtils.createAffectedInfoContainer(idValue, null, vars.get("$local.action")
+action = vars.get("$local.action");
+
+infoContainer =  IndexsearchUtils.createAffectedInfoContainer(idValue, null, action
     ,function (){return vars.get("$local.columns")}
     ,function (){return vars.get("$local.oldvalues")}
     ,function (){return vars.get("$local.values")});
@@ -19,19 +21,32 @@ switch (tableName)
         res = [idValue];
         break;    
     case "PERSON":
-        res = newSelect("CONTACT.CONTACTID")
-                    .from("CONTACT")
-                    .where("CONTACT.PERSON_ID", idValue)
-                    .arrayColumn();
+        //if a contact person is created or deleted there is no need to determine the index-uid for the PERSON and CONTACT-table, since everytime a 
+        //entry in PERSON is done, there is also  one mande in the CONTACT table which is handled in the switch case above 
+        //=> skip then the PERSON-part (also on delete the record does not exist anymore)
+        if (action == "U") 
+        {
+            res = newSelect("CONTACT.CONTACTID")
+                .from("CONTACT")
+                .where("CONTACT.PERSON_ID", idValue)
+                .arrayColumn();
+        }
         break;
     case "ORGANISATION":
-        res = newSelect("CONTACT.CONTACTID")
-                    .from("CONTACT")
-                    .where("CONTACT.ORGANISATION_ID", idValue)
-                    .and("CONTACT.PERSON_ID is not null")
-                    .arrayColumn();
+        //an organisation can only be deleted if there are no persons left and if  an organisation is created there is no entry for person that has
+        //to be indexed => only in the update-case necessary
+        if (action == "U") 
+        {
+            res = newSelect("CONTACT.CONTACTID")
+                        .from("CONTACT")
+                        .where("CONTACT.ORGANISATION_ID", idValue)
+                        .and("CONTACT.PERSON_ID is not null")
+                        .arrayColumn();
+        }
         break;
     case "ADDRESS":
+        //do not skip here if it's a delete action since it could be that only an address is removed and not a whole record-set of organisation,
+        //person, address, communication, etc.
         res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){
             return newSelect("ADDRESS.CONTACT_ID")
                     .from("ADDRESS")
@@ -40,6 +55,8 @@ switch (tableName)
         });
         break;
     case "COMMUNICATION":
+        //do not skip here if it's a delete action since it could be that only a communication-entry is removed and not a whole record-set of 
+        //organisation, person, address, communication, etc.
         res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){
             return newSelect("COMMUNICATION.CONTACT_ID")
                     .from("COMMUNICATION")
@@ -47,9 +64,10 @@ switch (tableName)
                     .arrayColumn();
         });
         break;
-    default:
-        res = [];   //needed, because the Index is being rebuilt if nothing gets returned
-        break;
 }
 
-    result.object(res);
\ No newline at end of file
+//needed, because the complete index (fullIndexer) is being rebuilt if nothing gets returned here
+if (res)
+    result.object(res);
+else
+    result.object([]);
diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod
index 87871e04a0b855f31100bc83b883457f13f11d72..6b97e94cfbe88f96d63d68a50c202c814691ebfa 100644
--- a/entity/Product_entity/Product_entity.aod
+++ b/entity/Product_entity/Product_entity.aod
@@ -26,6 +26,7 @@
       <name>GROUPCODEID</name>
       <title>Product Group</title>
       <consumer>KeywordProductGroupcodes</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
       <displayValueProcess>%aditoprj%/entity/Product_entity/entityfields/groupcodeid/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -57,6 +58,7 @@
       <name>STATUS</name>
       <title>Active</title>
       <contentType>BOOLEAN</contentType>
+      <groupable v="true" />
       <dropDownProcess>%aditoprj%/entity/Product_entity/entityfields/status/dropDownProcess.js</dropDownProcess>
       <valueProcess>%aditoprj%/entity/Product_entity/entityfields/status/valueProcess.js</valueProcess>
     </entityField>
@@ -64,6 +66,7 @@
       <name>UNIT</name>
       <title>Unit</title>
       <consumer>KeywordQuantityUnits</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Product_entity/entityfields/unit/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Product_entity/entityfields/unit/displayValueProcess.js</displayValueProcess>
@@ -194,6 +197,7 @@
       <name>CONTACT_ID</name>
       <title>Developer</title>
       <consumer>Organisations</consumer>
+      <groupable v="true" />
       <linkedContext>Organisation</linkedContext>
       <displayValueProcess>%aditoprj%/entity/Product_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
       <onValueChangeTypes>
diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod
index 6d1292a40239e42a8ef9289f48e981d54275b310..a6d245878b3cac5cd80f3ed42f8d1888cb3000ee 100644
--- a/entity/Productprice_entity/Productprice_entity.aod
+++ b/entity/Productprice_entity/Productprice_entity.aod
@@ -30,13 +30,15 @@
     </entityField>
     <entityField>
       <name>FROMQUANTITY</name>
-      <title>From no. of units</title>
+      <title>Valid from</title>
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0</outputFormat>
       <inputFormat>#,##0</inputFormat>
       <mandatory v="true" />
       <state>AUTO</state>
+      <titleProcess>%aditoprj%/entity/Productprice_entity/entityfields/fromquantity/titleProcess.js</titleProcess>
       <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/fromquantity/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Productprice_entity/entityfields/fromquantity/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>PRICE</name>
@@ -317,6 +319,10 @@
           <name>PRODUCT_ID.displayValue</name>
           <expression>%aditoprj%/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>FROMQUANTITY.displayValue</name>
+          <expression>%aditoprj%/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Productprice_entity/entityfields/fromquantity/displayValueProcess.js b/entity/Productprice_entity/entityfields/fromquantity/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7b30f11d5ecb07a98f5c68666a73f3ee7e786086
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/fromquantity/displayValueProcess.js
@@ -0,0 +1,16 @@
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("Sql_lib");
+import("system.result");
+import("system.vars");
+
+
+var value = vars.get("$field.FROMQUANTITY")
+var productid = vars.get("$field.PRODUCT_ID")
+var unit = newSelect("UNIT")
+                    .from("PRODUCT")
+                    .where("PRODUCT.PRODUCTID", productid)
+                    .cell();
+
+if(value)
+    result.string(value + " " + KeywordUtils.getViewValue($KeywordRegistry.quantityUnit(), unit));
diff --git a/entity/Productprice_entity/entityfields/fromquantity/titleProcess.js b/entity/Productprice_entity/entityfields/fromquantity/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c1ace705cdc0454a56b3e9b628023c5d593b93d0
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/fromquantity/titleProcess.js
@@ -0,0 +1,21 @@
+import("system.translate");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("Sql_lib");
+import("system.result");
+import("system.vars");
+import("system.neon")
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && 
+    vars.get("$field.PRODUCT_ID") != null && vars.get("$field.PRODUCT_ID") != undefined && vars.get("$field.PRODUCT_ID") != "")
+{
+    var productid = vars.get("$field.PRODUCT_ID")
+    var unit = newSelect("UNIT")
+                    .from("PRODUCT")
+                    .where("PRODUCT.PRODUCTID", productid)
+                    .cell();
+                    
+    result.string(translate.text("Valid from (as ") + KeywordUtils.getViewValue($KeywordRegistry.quantityUnit(), unit) + ")");
+}
+else
+    result.string(translate.text("Valid from"));
\ No newline at end of file
diff --git a/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js b/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d2ad815005cb83931979b4390e103fbdb198533
--- /dev/null
+++ b/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js
@@ -0,0 +1,14 @@
+import("system.result");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.SQLTYPES");
+import("Sql_lib");
+
+
+var helper = new SqlMaskingUtils();
+
+var res =  newSelect(helper.concat([helper.cast("PRODUCTPRICE.FROMQUANTITY", SQLTYPES.CHAR, 36), "' '", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.quantityUnit(), "PRODUCT.UNIT")], "|"))
+                        .from("PRODUCT")
+                        .where("PRODUCT.PRODUCTID = PRODUCTPRICE.PRODUCT_ID")
+                        .toString()
+result.string(res)
\ No newline at end of file
diff --git a/entity/QuickEntry_entity/QuickEntry_entity.aod b/entity/QuickEntry_entity/QuickEntry_entity.aod
index 3a754cdb58b33ee3c98c2e2e277719f675006c28..ac7e1e7e1bcc4d93f1c0e8270c9386530dfeae40 100644
--- a/entity/QuickEntry_entity/QuickEntry_entity.aod
+++ b/entity/QuickEntry_entity/QuickEntry_entity.aod
@@ -67,10 +67,13 @@
     <entityField>
       <name>FIRSTNAME</name>
       <title>Firstname</title>
+      <mandatoryProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/firstname/mandatoryProcess.js</mandatoryProcess>
     </entityField>
     <entityField>
       <name>LASTNAME</name>
       <title>Lastname</title>
+      <mandatoryProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/lastname/mandatoryProcess.js</mandatoryProcess>
+      <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/lastname/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>PERSON_TITLE</name>
@@ -81,6 +84,7 @@
       <name>PERSON_SALUTATION</name>
       <title>Salutation</title>
       <consumer>Salutations</consumer>
+      <mandatoryProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/person_salutation/mandatoryProcess.js</mandatoryProcess>
     </entityField>
     <entityField>
       <name>PERSON_CONTACT_ID</name>
@@ -224,6 +228,24 @@
       <stateProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/leadquickacquisition/stateProcess.js</stateProcess>
       <onValueChange>%aditoprj%/entity/QuickEntry_entity/entityfields/leadquickacquisition/onValueChange.js</onValueChange>
     </entityField>
+    <entityConsumer>
+      <name>OrgAndPersDuplicates</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AnyContact_entity</entityName>
+        <fieldName>ContactsByIds</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactIds_param</name>
+          <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/contactids_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>WithPrivatePersons_param</name>
+          <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
diff --git a/entity/QuickEntry_entity/entityfields/lastname/mandatoryProcess.js b/entity/QuickEntry_entity/entityfields/lastname/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c5a419766d570f6091355c47f0362d476d2a4c71
--- /dev/null
+++ b/entity/QuickEntry_entity/entityfields/lastname/mandatoryProcess.js
@@ -0,0 +1,10 @@
+import("system.logging");
+import("system.result");
+import("system.vars");
+
+var insertedRows = vars.get("$field.Adresses.insertedRows");
+var isInserted = insertedRows.some(function (row){
+    return row["ZIP"] || row["CITY"] || row["ADDRESS"];
+})
+
+result.string(isInserted);
\ No newline at end of file
diff --git a/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/contactids_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/contactids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..206a4b979fde0a202db52865656708e74b5f2d3f
--- /dev/null
+++ b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/contactids_param/valueProcess.js
@@ -0,0 +1,87 @@
+import("system.indexsearch");
+import("system.vars");
+import("DuplicateScanner_lib");
+import("system.result");
+
+//trigger refresh
+vars.get("$field.FIRSTNAME");
+vars.get("$field.LASTNAME");
+
+var uid = vars.get("$field.UID");
+var idsForEmptyResult = JSON.stringify(["nodata"]);
+var duplicateScans = [];
+
+duplicateScans.push(["PersonDuplicates", "Person_entity", {"CONTACTID" : uid}]);
+
+vars.get("$field.Contacts.insertedRows").forEach(function (contact)
+{
+    duplicateScans.push(["PersonDuplicates", "Person_entity", contact]);
+});
+
+var organisationName = vars.get("$field.ORGANISATION_NAME");
+//although the standard address is not set at this point, it can be assumed that it will be the first one
+var firstOrganisationAddress = vars.get("$field.OrgAddresses.insertedRows")[0];
+if (organisationName || firstOrganisationAddress)
+{
+    var city = null;
+    var zipCode = null;
+    var address = null;
+    
+    if (firstOrganisationAddress)
+    {
+        city = firstOrganisationAddress["CITY"];
+        zipCode = firstOrganisationAddress["ZIP"];
+        address = firstOrganisationAddress["ADDRESS"];
+    }
+    
+    duplicateScans.push(["OrganisationDuplicates", "Organisation_entity", {
+        "CONTACTID" : uid,
+        "NAME" : organisationName,
+        "STANDARD_CITY" : city,
+        "STANDARD_ZIP" : zipCode,
+        "STANDARD_ADDRESS" : address
+    }]);
+}
+
+var duplicates = duplicateScans.reduce(function (duplicateArr, [scannerName, entity, fieldValues])
+{
+    return duplicateArr.concat(_getDuplicates(scannerName, entity, fieldValues));
+}, []);
+
+if (duplicates.length === 0)
+    result.string(idsForEmptyResult);
+else
+    result.string(JSON.stringify(duplicates));
+
+
+function _getDuplicates (pScannerName, pEntity, pEntityFieldValues)
+{
+    var fieldsToLoad = DuplicateScannerUtils.getEntityFieldObjectFromConfig(pScannerName, pEntity);
+    if (fieldsToLoad == null)
+        return [];
+    
+    var valuesToCheck = {};
+    
+    var allFieldsToLoad = fieldsToLoad.entityFields.concat(fieldsToLoad.entityIdField);
+    allFieldsToLoad.forEach(function (field)
+    {
+        var fieldValue = field in pEntityFieldValues
+            ? pEntityFieldValues[field]
+            : vars.get("$field." + field);
+        if (fieldValue)
+            valuesToCheck[field] = fieldValue;
+    });
+    
+    //don't search if only the id field has a value
+    var fieldsToCheck = Object.keys(valuesToCheck);
+    if (fieldsToCheck.length === 0 || (fieldsToCheck.length === 1 && fieldsToLoad.entityIdField in valuesToCheck))
+        return [];
+    
+    var scanResults = DuplicateScannerUtils.ScanForDuplicates(pScannerName, pEntity, valuesToCheck, null) || [];
+    var duplicateIds = scanResults.map(function (duplicate)
+    {
+        return duplicate[indexsearch.FIELD_ID];
+    });
+
+    return duplicateIds;
+}
diff --git a/entity/AnyContact_entity/entityfields/withprivat_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js
similarity index 56%
rename from entity/AnyContact_entity/entityfields/withprivat_param/valueProcess.js
rename to entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js
index 755662df1632264e94e6a4d766bb65ead50a553d..40effa0178464da0c7850912345f19c7fa95975a 100644
--- a/entity/AnyContact_entity/entityfields/withprivat_param/valueProcess.js
+++ b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js
@@ -1,3 +1,3 @@
 import("system.result");
 
-result.string("0")
\ No newline at end of file
+result.string(true);
\ No newline at end of file
diff --git a/entity/QuickEntry_entity/entityfields/person_salutation/mandatoryProcess.js b/entity/QuickEntry_entity/entityfields/person_salutation/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..612c7e81d16e51455c5f693c1f4a58579a2b0548
--- /dev/null
+++ b/entity/QuickEntry_entity/entityfields/person_salutation/mandatoryProcess.js
@@ -0,0 +1,15 @@
+import("system.logging");
+import("system.result");
+import("system.vars");
+
+var isMandatory = false;
+if (vars.get("$field.LASTNAME") != "")
+    isMandatory = true;
+else {
+    var insertedRows = vars.get("$field.Adresses.insertedRows");//this is the list of person contact addresses
+    isMandatory = insertedRows.some(function (row){
+        return row["ZIP"] || row["CITY"] || row["ADDRESS"];
+    });
+}
+
+result.string(isMandatory);
\ No newline at end of file
diff --git a/entity/Role_entity/recordcontainers/jdito/contentProcess.js b/entity/Role_entity/recordcontainers/jdito/contentProcess.js
index 0f67d474c580225d5785b8ebfdde880267506a75..25ef04f7b115f5000691f3747eb8d9d4d0b269d0 100644
--- a/entity/Role_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Role_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("JditoFilter_lib");
 import("Util_lib");
 import("system.translate");
 import("system.vars");
@@ -39,6 +40,31 @@ if (selectedRole != null) {
     });
 }
 
+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 = ["UID", "ROLENAME", "ROLETITLE", "ROLETYPE", "ROLEDESCRIPTION", "USERCOUNT", "IS_ASSIGNABLE"];
+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;
+    }
+};
+res = JditoFilterUtils.filterRecords(filterFields, res, filter.filter, filterFns);
+
+
 var order = vars.get("$local.order");
 var columnOrder = {
     "ROLENAME.value" : 1,
diff --git a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
index e1b1ae86aa099b9a04db9c5c87bdac18327e69e5..7480acbbffe1ba2eab7426d9778cf3aa20b5ae3a 100644
--- a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
+++ b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
@@ -110,10 +110,6 @@
           <name>SALESPROJECT_ID.value</name>
           <recordfield>SALESPROJECT_TOUCHPOINT.SALESPROJECT_ID</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>SOURCE.displayValue</name>
-          <expression>%aditoprj%/entity/SalesprojectSource_entity/recordcontainers/db/recordfieldmappings/source.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>INFO.value</name>
           <recordfield>SALESPROJECT_TOUCHPOINT.INFO</recordfield>
diff --git a/entity/SalesprojectSource_entity/recordcontainers/db/recordfieldmappings/source.displayvalue/expression.js b/entity/SalesprojectSource_entity/recordcontainers/db/recordfieldmappings/source.displayvalue/expression.js
deleted file mode 100644
index 9c2c59e5d23fee5e9c0318ba05d33739a47af82e..0000000000000000000000000000000000000000
--- a/entity/SalesprojectSource_entity/recordcontainers/db/recordfieldmappings/source.displayvalue/expression.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectSource(), "SALESPROJECT_TOUCHPOINT.TOUCHPOINT");
-result.string(sql);
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index a31ef81019864a39ed7aafc09e5a6f7785858156..7aa021aebf71dcbdf51155ce8a6746e3452891a6 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -40,6 +40,7 @@
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
       <inputFormat>dd.MM.yyyy</inputFormat>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/enddate/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -51,6 +52,7 @@
       <name>PHASE</name>
       <title>Phase</title>
       <consumer>SalesprojectPhaseStepper</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
       <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/phase/valueProcess.js</valueProcess>
@@ -77,6 +79,7 @@
       <name>CONTACT_ID</name>
       <title>Company</title>
       <consumer>Organisations</consumer>
+      <groupable v="true" />
       <linkedContext>Organisation</linkedContext>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/contact_id/valueProcess.js</valueProcess>
@@ -94,6 +97,7 @@
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
       <inputFormat>dd.MM.yyyy</inputFormat>
+      <groupable v="true" />
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/startdate/valueProcess.js</valueProcess>
     </entityField>
@@ -101,6 +105,7 @@
       <name>STATUS</name>
       <title>Status</title>
       <consumer>KeywordStates</consumer>
+      <groupable v="true" />
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/status/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
@@ -117,6 +122,7 @@
       <description></description>
       <contentType>NUMBER</contentType>
       <inputFormat>#0</inputFormat>
+      <groupable v="true" />
       <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
@@ -131,6 +137,7 @@
       <name>PROBABILITY</name>
       <title>Probability</title>
       <consumer>KeywordProbabilties</consumer>
+      <groupable v="true" />
       <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/probability/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
@@ -620,6 +627,7 @@
     <entityField>
       <name>ClassificationResult</name>
       <title>Classification</title>
+      <groupable v="true" />
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/classificationresult/valueProcess.js</valueProcess>
     </entityField>
@@ -703,6 +711,7 @@
       <title>Project type</title>
       <description>own field for setting the project type attribute in the new mode, required for creating Salesprojects in QuickEntry</description>
       <consumer>ProjectTypeAttribute</consumer>
+      <groupable v="true" />
     </entityField>
     <entityConsumer>
       <name>ProjectTypeAttribute</name>
diff --git a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod
index 64e53ac644c696c3d9585c619eb3d35afc8133ea..cfcb2ee7353ee49d7cbc5062a8dc4411a4fa8d61 100644
--- a/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod
+++ b/entity/SerialLetterAddRecipients_entity/SerialLetterAddRecipients_entity.aod
@@ -3,7 +3,7 @@
   <name>SerialLetterAddRecipients_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/SerialLetterAddRecipients_entity/documentation.adoc</documentation>
-  <recordContainer>jdito</recordContainer>
+  <recordContainer>datalessRecordContainer</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
@@ -13,17 +13,21 @@
       <title>Serial letter</title>
       <consumer>SerialLetters</consumer>
       <mandatory v="true" />
+      <state>EDITABLE</state>
       <displayValueProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/serialletter_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>UID</name>
+      <state>EDITABLE</state>
     </entityField>
     <entityField>
       <name>recipientContactIds</name>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>recipientCountMessage</name>
+      <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js</valueProcess>
     </entityField>
     <entityParameter>
@@ -38,18 +42,23 @@
         <fieldName>#PROVIDER</fieldName>
       </dependency>
     </entityConsumer>
+    <entityActionField>
+      <name>addParticipants</name>
+      <title>Add Recipients</title>
+      <onActionProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:ENVELOPES</iconId>
+      <stateProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityField>
+      <name>recipientcount</name>
+      <state>EDITABLE</state>
+      <valueProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/recipientcount/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
-    <jDitoRecordContainer>
-      <name>jdito</name>
-      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
-      <contentProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
-      <onInsert>%aditoprj%/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/onInsert.js</onInsert>
-      <recordFieldMappings>
-        <jDitoRecordFieldMapping>
-          <name>UID.value</name>
-        </jDitoRecordFieldMapping>
-      </recordFieldMappings>
-    </jDitoRecordContainer>
+    <datalessRecordContainer>
+      <name>datalessRecordContainer</name>
+      <alias>Data_alias</alias>
+    </datalessRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/onInsert.js b/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/onActionProcess.js
similarity index 100%
rename from entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/onInsert.js
rename to entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/onActionProcess.js
diff --git a/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/stateProcess.js b/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..84710cec86a7041bf5a0287825fede7f4fc4b4fe
--- /dev/null
+++ b/entity/SerialLetterAddRecipients_entity/entityfields/addparticipants/stateProcess.js
@@ -0,0 +1,9 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+var count = vars.getString("$field.recipientcount");
+
+if (count == "0" || !count || vars.get("$sys.validationerrors"))
+    result.string(neon.COMPONENTSTATE_DISABLED);
+else
+    result.string(neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
diff --git a/entity/SerialLetterAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js
index 724fccc6b1b9cd1c8f4c02a78293e71794e3362e..8a46791dce81c87d35e2c6cf4e985156068e211b 100644
--- a/entity/SerialLetterAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js
+++ b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js
@@ -8,15 +8,13 @@ import("Sql_lib");
 import("system.vars");
 
 var contactIds = JSON.parse(vars.getString("$param.ContactIds_param"));
+var serialLetterId = vars.get("$field.SERIALLETTER_ID")
 
-contactIds = newSelect("CONTACTID")
-                .from("CONTACT")
-                .where("CONTACT.CONTACTID", contactIds, SqlBuilder.IN())
-                .and(null, newSelect("LETTERRECIPIENTID")
-                    .from("LETTERRECIPIENT")
-                    .where("LETTERRECIPIENT.CONTACT_ID = CONTACT.CONTACTID")
-                    .and("LETTERRECIPIENT.SERIALLETTER_ID", "$field.SERIALLETTER_ID"), SqlBuilder.NOT_EXISTS()) //only add contacts that aren't already recipients
-                .and(ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$letter(), true)) //check if there's a commrestriction
-                .array(db.COLUMN)
+var res;
+if (serialLetterId)
+    res = JSON.stringify(BulkMailUtils.filterNewRecipients(serialLetterId, contactIds));
+else
+    res = null;
+    
+result.string(res);
 
-result.string(JSON.stringify(contactIds));
diff --git a/entity/SerialLetterAddRecipients_entity/entityfields/recipientcount/valueProcess.js b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcount/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fe08abf37cc4e9d273b350803d1fe86320bb0cc9
--- /dev/null
+++ b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcount/valueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+
+var res = "";
+if (vars.get("$field.recipientContactIds"))
+{
+    res = JSON.parse(vars.getString("$field.recipientContactIds")).length;
+}
+
+result.string(res);
diff --git a/entity/SerialLetterAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js
index 498e4d8494c31a112e65d92ac7412856a822b8a8..2b4640522a0c4e9846c48c703bfb48d31a71490f 100644
--- a/entity/SerialLetterAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js
+++ b/entity/SerialLetterAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js
@@ -2,8 +2,13 @@ import("system.translate");
 import("system.result");
 import("system.vars");
 
-if (vars.get("$field.SERIALLETTER_ID"))
+var count = vars.getString("$field.recipientcount")
+var res = "";
+if (count && !vars.get("$sys.validationerrors"))
 {
-    var count = JSON.parse(vars.getString("$field.recipientContactIds")).length;
-    result.string(translate.withArguments("%0 new recipients will be added to the serial letter.", [String(count)]));
-}
\ No newline at end of file
+    if (count == "0")
+        res = translate.text("No new recipients found that can be added to the serial letter.");
+    else
+        res = translate.withArguments("%0 new recipients will be added to the serial letter.", [count]);
+}
+result.string(res);
\ No newline at end of file
diff --git a/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/contentProcess.js b/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/contentProcess.js
deleted file mode 100644
index e197aca8b7760073849e21fb581b065c47215654..0000000000000000000000000000000000000000
--- a/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/contentProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.result");
-import("system.vars");
-
-//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003
-var rows = [];
-if (vars.get("$local.idvalues"))
-    rows = vars.get("$local.idvalues").map(function (id) {return [id];});
-
-result.object(rows);
\ No newline at end of file
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 0be99b99ff62a5d371fa7c3147fcf23fa13fc07c..aa736a459ee93a5fe679f9fcf01cc8c1a86545a4 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -52,6 +52,7 @@
       <name>REQUESTOR_CONTACT_ID</name>
       <title>{$TASK_REQUESTOR}</title>
       <consumer>ContactRequestors</consumer>
+      <groupable v="true" />
       <linkedContext>Person</linkedContext>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/requestor_contact_id/valueProcess.js</valueProcess>
@@ -61,6 +62,7 @@
       <name>EDITOR_CONTACT_ID</name>
       <title>{$TASK_EDITOR}</title>
       <consumer>ContactEditors</consumer>
+      <groupable v="true" />
       <linkedContext>Person</linkedContext>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/editor_contact_id/valueProcess.js</valueProcess>
@@ -83,6 +85,7 @@
       <resolution>MINUTE</resolution>
       <outputFormat>dd.MM.yyyy HH:mm</outputFormat>
       <inputFormat>dd.MM.yyyy HH:mm</inputFormat>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/maturity_date/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
diff --git a/entity/Usersettings_entity/Usersettings_entity.aod b/entity/Usersettings_entity/Usersettings_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..eb65941d79ad231c6a6aef600ca4c232f0b5e8fb
--- /dev/null
+++ b/entity/Usersettings_entity/Usersettings_entity.aod
@@ -0,0 +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.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14">
+  <name>Usersettings_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <title>Settings</title>
+  <titlePlural>Settings</titlePlural>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>_____SYSTEMALIAS</jDitoRecordAlias>
+      <onInsert>%aditoprj%/entity/Usersettings_entity/recordcontainers/jdito/onInsert.js</onInsert>
+      <recordFieldMappings>
+        <jDitoRecordFieldMapping>
+          <name>UID.value</name>
+        </jDitoRecordFieldMapping>
+      </recordFieldMappings>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/Usersettings_entity/recordcontainers/jdito/onInsert.js b/entity/Usersettings_entity/recordcontainers/jdito/onInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..0ffdd02fcbce683e436c0030ffe0517135c6ceda
--- /dev/null
+++ b/entity/Usersettings_entity/recordcontainers/jdito/onInsert.js
@@ -0,0 +1 @@
+// TODO
\ No newline at end of file
diff --git a/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js b/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js
index b689b3021904eba4df607ccb40bdb16b72cf746d..412b3644103fb32f8c640a802d03e2c8ef5782da 100644
--- a/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/VisitPlanEntry_entity/recordcontainers/jdito/onUpdate.js
@@ -6,7 +6,7 @@ import("system.vars");
 
 var rowData = vars.get("$local.rowdata");
 
-var valuesEntry = [
+var values = [
     rowData["ENTRYDATE.value"],
     rowData["BEGIN_TIME.value"],
     rowData["END_TIME.value"],
@@ -24,6 +24,6 @@ var columns = [
 
 var columnTypes = db.getColumnTypes("VISITPLANENTRY", columns, db.getCurrentAlias());
 
-var cond = newWhere("VISITPLANENTRY.VISITPLANENTRYID", vars.get("$field.UID"));
+var cond = newWhere("VISITPLANENTRY.VISITPLANENTRYID", vars.get("$field.UID")).toString();
 
 db.updateData("VISITPLANENTRY", columns, columnTypes, values, cond);
diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
index f40acbba7672272556e64ce01b90ed8fd93e5b6b..26a88f95717ce53ce1723ca71443089d0e3a1540 100644
--- a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("system.eMath");
 import("system.tools");
 import("PostalAddress_lib");
 import("system.translate");
@@ -17,15 +18,14 @@ import("Util_lib");
 import("Address_lib");
 
 var recommendationData = [];
-
+var tmpData = [];
 var activitySubQuery = "";
 
-activitySubQuery = newSelect("ENTRYDATE")
+activitySubQuery = newSelect("max(ENTRYDATE)")
                                 .from("ACTIVITY")
                                 .join("ACTIVITYLINK", "ACTIVITYID = ACTIVITY_ID")
-                                .where("ACTIVITYLINK.OBJECT_ROWID", "CONTACTID")
+                                .where("ACTIVITYLINK.OBJECT_ROWID = org.ORGANISATIONID")
                                 .and("ACTIVITY.CATEGORY", "VISIT")
-                                .orderBy("ENTRYDATE desc").cell()
 
 var idValues = false;
 if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
@@ -34,6 +34,8 @@ if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
 //dynamic Recommendations
 //recommended Organisations containing the attribute Visit Frequency
 
+if(idValues == false)
+{
     var visitFrequencyData = newSelect(["org.ORGANISATIONID", "NAME", 
                                             newSelect("CONTACT.CONTACTID")
                                                         .from("CONTACT")
@@ -64,6 +66,7 @@ if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
                                         .join("AB_ATTRIBUTERELATION", "visitPlanFrequency.OBJECT_ROWID = CONTACT.CONTACTID", "visitPlanFrequency")
                                         .where(["AB_ATTRIBUTERELATION", "AB_ATTRIBUTE_ID", "visitPlanFrequency"], $AttributeRegistry.visitPlanFrequency())
                                         .table();
+ }
 
 var recommendationSQLData = newSelect(["VISITRECOMMENDATIONID", "VISITRECOMMENDATION.CONTACT_ID", "PRIORITY", "DUE_DATE", "SOURCE", "INFO", AddressUtils.formatOnelineSql(), 
     newSelect("CONTACT.CONTACTID")
@@ -106,7 +109,7 @@ recommendationSQLData = recommendationSQLData.table();
 
 for( let i = 0; i < recommendationSQLData.length; i++)
 {
-    var tmpData = [];
+    tmpData = [];
 
     var organisationName = ContactUtils.getFullTitleByContactId(recommendationSQLData[i][1])
     if(recommendationSQLData[i][2])
@@ -139,74 +142,78 @@ for( let i = 0; i < recommendationSQLData.length; i++)
     recommendationData.push(tmpData);
 }
 
-var monthly = datetime.ONE_DAY * 31;
-var semiannually = datetime.ONE_DAY * 183;
-var quarterly = datetime.ONE_DAY * 93;
-var yearly = datetime.ONE_DAY * 365;
+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);
 
-for (let i = 0; i < visitFrequencyData.length; i++)
+if(idValues == false)
 {
-    let tmpData = [];
-    
-    let title = "";
-   
-    if(visitFrequencyData[i][9])
+    for (var i = 0; i < visitFrequencyData.length; i++)
     {
-        let user = tools.getUserByAttribute(tools.CONTACTID, visitFrequencyData[i][9]);
-        title = user[tools.TITLE]
-    }
+        tmpData = [];
 
-    tmpData[0] = visitFrequencyData[i][0];                 //UID
-    tmpData[1] = visitFrequencyData[i][1];                 //Organisation Name
-    tmpData[3] = visitFrequencyData[i][2];                 //Address
-    tmpData[5] = visitFrequencyData[i][4];                 //Source of Priority
-    tmpData[8] = "";
-    tmpData[9] = visitFrequencyData[i][5];                 //CONTACT_ID
-    tmpData[2] = visitFrequencyData[i][6];                 //Date_Planned
-    var dueDate = "";
-    var lastVisitDate = "";
-
-    if((visitFrequencyData[i][6]).length == 0)
-    {
-        dueDate = datetime.date();
-    }
-    else
-    {
-        lastVisitDate = parseInt(visitFrequencyData[i][6]);
-        switch(visitFrequencyData[i][4])
+        let title = "";
+
+        if(visitFrequencyData[i][9])
         {
-            case $AttributeRegistry.visitPlanFrequency$monthly():
-            {
-                dueDate = lastVisitDate + monthly;
-                break;
-            }
-            case $AttributeRegistry.visitPlanFrequency$quarterly():
-            {
-                dueDate = lastVisitDate + quarterly;
-                break;
-            }
-            case $AttributeRegistry.visitPlanFrequency$semiannually():
-            {
-                dueDate = lastVisitDate + semiannually;
-                break;
-            }
-            case $AttributeRegistry.visitPlanFrequency$yearly():
-            {
-                dueDate = lastVisitDate + yearly;
-                break;
-            }
-            default:
+            let user = tools.getUserByAttribute(tools.CONTACTID, visitFrequencyData[i][9]);
+            title = user[tools.TITLE]
+        }
+
+        tmpData[0] = visitFrequencyData[i][0];                 //UID
+        tmpData[1] = visitFrequencyData[i][1];                 //Organisation Name
+        tmpData[3] = visitFrequencyData[i][2];                 //Address
+        tmpData[5] = visitFrequencyData[i][4];                 //Source of Priority
+        tmpData[8] = "";
+        tmpData[9] = visitFrequencyData[i][5];                 //last visit
+        tmpData[2] = visitFrequencyData[i][6];                 //CONTACT_ID
+        var dueDate = "";
+        var lastVisitDate = "";
+
+        if((visitFrequencyData[i][5]).length == 0)
+        {
+            dueDate = datetime.date();
+        }
+        else
+        {
+            lastVisitDate = visitFrequencyData[i][5];
+            switch(visitFrequencyData[i][3])
             {
-                break;
+                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
 
-    recommendationData.push(tmpData);
+        tmpData[7] = dueDate;                                       //Due Date
+        tmpData[4] = getPrioByDueDate(dueDate);                     //Priority
+
+        recommendationData.push(tmpData);
+    }
 }
 
 
diff --git a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
index 5719de94c66c1f01c91b39451f9d96deb117f2c6..155a2f033dee8feaa814013907c364934edb0bd2 100644
--- a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
+++ b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
@@ -38,6 +38,12 @@
           <iconId>VAADIN:EXTERNAL_LINK</iconId>
           <stateProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/tableactions/children/openmodeler/stateProcess.js</stateProcess>
         </entityActionField>
+        <entityActionField>
+          <name>createModel</name>
+          <title>Create model</title>
+          <onActionProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/tableactions/children/createmodel/onActionProcess.js</onActionProcess>
+          <iconId>NEON:PLUS</iconId>
+        </entityActionField>
       </children>
     </entityActionGroup>
     <entityField>
@@ -197,6 +203,17 @@
     <entityField>
       <name>VERSION_TITLE</name>
     </entityField>
+    <entityParameter>
+      <name>IsWorkflowImport_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityActionField>
+      <name>editWorkflow</name>
+      <title>Edit workflow</title>
+      <onActionProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/editworkflow/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:EDIT</iconId>
+      <tooltip>Edit workflow</tooltip>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
diff --git a/entity/WorkflowDefinition_entity/entityfields/editworkflow/onActionProcess.js b/entity/WorkflowDefinition_entity/entityfields/editworkflow/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..bc22afc6b2cfb545954d6a8c15c873387b97fde5
--- /dev/null
+++ b/entity/WorkflowDefinition_entity/entityfields/editworkflow/onActionProcess.js
@@ -0,0 +1,14 @@
+import("system.vars");
+import("Workflow_lib");
+import("system.workflow");
+import("system.util");
+import("system.neon");
+
+var processXML = workflow.getProcessXML(vars.get("$field.UID"));
+if (processXML)
+{
+    processXML = util.decodeBase64String(processXML);
+    var model = new WorkflowModelerApiCall().processXML(processXML).importModel();
+    if (model)
+        neon.openUrl(WorkflowUtils.getModelerUrl(model.id, true), false);
+}
\ No newline at end of file
diff --git a/entity/WorkflowDefinition_entity/entityfields/tableactions/children/createmodel/onActionProcess.js b/entity/WorkflowDefinition_entity/entityfields/tableactions/children/createmodel/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..82689600b7a620743de9485b99a43849e497c01b
--- /dev/null
+++ b/entity/WorkflowDefinition_entity/entityfields/tableactions/children/createmodel/onActionProcess.js
@@ -0,0 +1,3 @@
+import("system.neon");
+
+neon.openContext("WorkflowModel", null, null, neon.OPERATINGSTATE_NEW, {});
\ No newline at end of file
diff --git a/entity/WorkflowDefinition_entity/entityfields/tableactions/children/openmodeler/onActionProcess.js b/entity/WorkflowDefinition_entity/entityfields/tableactions/children/openmodeler/onActionProcess.js
index d9191cac3d1dade9d54d832816f6b93943aac2f2..802a66fb9632b688fbdf95e3a471edcac47c652c 100644
--- a/entity/WorkflowDefinition_entity/entityfields/tableactions/children/openmodeler/onActionProcess.js
+++ b/entity/WorkflowDefinition_entity/entityfields/tableactions/children/openmodeler/onActionProcess.js
@@ -3,4 +3,4 @@ import("system.neon");
 
 var modelerUrl = WorkflowUtils.getModelerUrl();
 if (modelerUrl)
-    neon.openUrl(modelerUrl, true);
\ No newline at end of file
+    neon.openUrl(modelerUrl + "/#/processes", true);
\ No newline at end of file
diff --git a/entity/WorkflowDefinition_entity/recordcontainers/jdito/onInsert.js b/entity/WorkflowDefinition_entity/recordcontainers/jdito/onInsert.js
index d4269f1ca146ecab555909a1aa39a34420ea345b..bb8e8692e251f74c6d0813b81ae8d4f18e7347dc 100644
--- a/entity/WorkflowDefinition_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/WorkflowDefinition_entity/recordcontainers/jdito/onInsert.js
@@ -1,17 +1,24 @@
-import("Employee_lib");
 import("system.workflow");
 import("system.neon");
 import("system.vars");
-import("system.util");
 import("system.notification");
 import("Document_lib");
+import("Employee_lib");
+import("system.translate")
+import("Workflow_lib");
 
 var upload = new FileUpload(vars.get("$field.FILEUPLOAD"));
 var rowData = vars.get("$local.rowdata");
 
-var xml = util.decodeBase64String(upload.bindata);
-
-//the xml could be invalid
-try {
-    workflow.deployProcess(rowData["KEY.value"], xml);
-} catch (ex) {}
+if (upload.isFilled()) 
+{
+    if (workflow.deployProcess(rowData["KEY.value"], upload.getBase64DecodedData()) === null)
+    {
+        var notificationConfig = notification.createConfig()
+            .addUserWithId(EmployeeUtils.getCurrentUserId())
+            .notificationType("WorkflowDeployFailed")
+            .caption(translate.text("Workflow deploy failed"))
+            .description(translate.text("The workflow could not be deployed"));
+        notification.addNotificationWith(notificationConfig);
+    }
+}
\ No newline at end of file
diff --git a/entity/WorkflowModel_entity/WorkflowModel_entity.aod b/entity/WorkflowModel_entity/WorkflowModel_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..0829152a67cdfd9ff43a5f9514a755d47cb36b91
--- /dev/null
+++ b/entity/WorkflowModel_entity/WorkflowModel_entity.aod
@@ -0,0 +1,59 @@
+<?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.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14">
+  <name>WorkflowModel_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/WorkflowModel_entity/documentation.adoc</documentation>
+  <title>Workflow Model</title>
+  <contentTitleProcess>%aditoprj%/entity/WorkflowModel_entity/contentTitleProcess.js</contentTitleProcess>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityActionField>
+      <name>openModelEditor</name>
+      <title>and open modeler</title>
+      <onActionProcess>%aditoprj%/entity/WorkflowModel_entity/entityfields/openmodeleditor/onActionProcess.js</onActionProcess>
+      <isSaveAction v="true" />
+    </entityActionField>
+    <entityField>
+      <name>KEY</name>
+      <title>Key</title>
+      <mandatory v="true" />
+    </entityField>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityField>
+      <name>DESCRIPTION</name>
+      <title>Description</title>
+      <contentType>LONG_TEXT</contentType>
+    </entityField>
+    <entityField>
+      <name>NAME</name>
+      <title>Name</title>
+      <mandatory v="true" />
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <contentProcess>%aditoprj%/entity/WorkflowModel_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <onInsert>%aditoprj%/entity/WorkflowModel_entity/recordcontainers/jdito/onInsert.js</onInsert>
+      <recordFieldMappings>
+        <jDitoRecordFieldMapping>
+          <name>UID.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>KEY.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>NAME.value</name>
+        </jDitoRecordFieldMapping>
+        <jDitoRecordFieldMapping>
+          <name>DESCRIPTION.value</name>
+        </jDitoRecordFieldMapping>
+      </recordFieldMappings>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/AnyContact_entity/entityfields/contacts/children/contactid_param/valueProcess.js b/entity/WorkflowModel_entity/contentTitleProcess.js
similarity index 52%
rename from entity/AnyContact_entity/entityfields/contacts/children/contactid_param/valueProcess.js
rename to entity/WorkflowModel_entity/contentTitleProcess.js
index 7b6137b4d105e9ba592cf8ef6e796fb838a32b09..28fd67de270b497ba718dd4e91766bd22936f67e 100644
--- a/entity/AnyContact_entity/entityfields/contacts/children/contactid_param/valueProcess.js
+++ b/entity/WorkflowModel_entity/contentTitleProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.CONTACTID"));
\ No newline at end of file
+result.string(vars.get("$field.NAME"));
\ No newline at end of file
diff --git a/entity/WorkflowModel_entity/documentation.adoc b/entity/WorkflowModel_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..fbcfd36592f56a682d0c2c2e81ec8ffc58580c09
--- /dev/null
+++ b/entity/WorkflowModel_entity/documentation.adoc
@@ -0,0 +1,4 @@
+= WorkflowModel_entity
+
+This entity is used to represent workflow models inside the workflow modeler. The jdito-recordcontainer uses the modeler's REST api to retrieve the process
+models. Because of that, this entity needs the workflow modeler to be running.
\ No newline at end of file
diff --git a/entity/WorkflowModel_entity/entityfields/openmodeleditor/onActionProcess.js b/entity/WorkflowModel_entity/entityfields/openmodeleditor/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a7ebffe2899cad5a9213dd85275a7cf4cf147c99
--- /dev/null
+++ b/entity/WorkflowModel_entity/entityfields/openmodeleditor/onActionProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.neon");
+import("Workflow_lib");
+
+var createdModelId = vars.exists("$context.createdModelId") ? vars.get("$context.createdModelId") : null;
+if (createdModelId)
+{
+    vars.set("$context.createdModelId", null);
+    neon.openUrl(WorkflowUtils.getModelerUrl(createdModelId, true), false);
+}
\ No newline at end of file
diff --git a/entity/WorkflowModel_entity/recordcontainers/jdito/contentProcess.js b/entity/WorkflowModel_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..530ee738d5243e1eec82ae1bf38a43d4daa45d76
--- /dev/null
+++ b/entity/WorkflowModel_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,29 @@
+import("system.result");
+import("system.vars");
+import("Workflow_lib");
+
+var models;
+
+if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
+{
+    models = vars.get("$local.idvalues").map(function (id)
+    {
+        return new WorkflowModelerApiCall().modelId(id).getModel();
+    });
+}
+else
+    models = new WorkflowModelerApiCall().getModels();
+
+models = models.map(
+/** @param {WorkflowModel} model */
+function (model)
+{
+    return [
+        model.id,
+        model.key,
+        model.name,
+        model.description
+    ];
+});
+
+result.object(models);
\ No newline at end of file
diff --git a/entity/WorkflowModel_entity/recordcontainers/jdito/onInsert.js b/entity/WorkflowModel_entity/recordcontainers/jdito/onInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..cc77bbf874e9985fecc1fedc734982713112b86b
--- /dev/null
+++ b/entity/WorkflowModel_entity/recordcontainers/jdito/onInsert.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("Workflow_lib");
+
+var rowdata = vars.get("$local.rowdata");
+
+var workflowModel = new WorkflowModel(rowdata["UID.value"], rowdata["NAME.value"], rowdata["KEY.value"], rowdata["DESCRIPTION.value"]);
+var createdModel = new WorkflowModelerApiCall().model(workflowModel).createModel();
+if (createdModel)
+    vars.set("$context.createdModelId", createdModel.id);
\ No newline at end of file
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index cfa2e9c9be05a7b4c7e20b7047026e1a4116ece4..f32d5f97f0963a35286bac0842e7f823d580201a 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -6773,9 +6773,6 @@
     <entry>
       <key>Offer No.</key>
     </entry>
-    <entry>
-      <key>Version %0</key>
-    </entry>
     <entry>
       <key>of other on this employee's calendar</key>
     </entry>
@@ -6786,7 +6783,55 @@
       <key>Offerrequest</key>
     </entry>
     <entry>
-      <key>data</key>
+      <key>Full Permissions</key>
+    </entry>
+    <entry>
+      <key>Full permissions already assigned</key>
+    </entry>
+    <entry>
+      <key>Import Daten</key>
+    </entry>
+    <entry>
+      <key>Import Logs</key>
+    </entry>
+    <entry>
+      <key>Transferdaten</key>
+    </entry>
+    <entry>
+      <key>Valid from (as </key>
+    </entry>
+    <entry>
+      <key>${SQL_LIB_FIELD_WRONG_FORMAT}</key>
+    </entry>
+    <entry>
+      <key>Settings</key>
+    </entry>
+    <entry>
+      <key>No new recipients found that can be added to the bulk mail.</key>
+    </entry>
+    <entry>
+      <key>Add Recipients</key>
+    </entry>
+    <entry>
+      <key>Add Participants</key>
+    </entry>
+    <entry>
+      <key>Download letter and create Activity</key>
+    </entry>
+    <entry>
+      <key>and open Report</key>
+    </entry>
+    <entry>
+      <key>export</key>
+    </entry>
+    <entry>
+      <key>export using the selected  template</key>
+    </entry>
+    <entry>
+      <key>No new recipients found that can be added to the serial letter.</key>
+    </entry>
+    <entry>
+      <key>send mail</key>
     </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 297c496a68433d8c9e84ce33f27866a9b03c0b3f..7d8ec08a7b60354c748b9a25bfb6c35dd7a7c297 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -6,6 +6,10 @@
   <country></country>
   <variant></variant>
   <keyValueMap>
+    <entry>
+      <key>Settings</key>
+      <value>Einstellungen</value>
+    </entry>
     <entry>
       <key>{SEARCH_INDEX_TITLE}</key>
       <value>Suche</value>
@@ -77,6 +81,10 @@
       <key>Has marketing approved this step?</key>
       <value>Hat das Marketing diesem Schritt zugestimmt?</value>
     </entry>
+    <entry>
+      <key>Create model</key>
+      <value>Modell erstellen</value>
+    </entry>
     <entry>
       <key>Task done</key>
       <value>Aufgabe abgeschlossen</value>
@@ -305,7 +313,7 @@
     </entry>
     <entry>
       <key>${SQL_LIB_FIELD_WRONG_FORMAT} field: %0</key>
-      <value>Das Feld %0 hat ein falsches Format. Das Datenbankfeld muss wie "tablename.columnname" ("ORGANISATION.NAME") oder als Array mit Column-alias formatiert sein: ["ORGANISATION", "NAME", "myorgAlias"]</value>
+      <value>" ("%0") hat ein falsches Format. Das Datenbankfeld muss wie "tablename.columnname" ("ORGANISATION.NAME") oder als Array mit Column-alias formatiert sein: ["ORGANISATION", "NAME", "myorgAlias"]</value>
     </entry>
     <entry>
       <key>Attribute \"%0\" can't be used more than %1.</key>
@@ -691,6 +699,10 @@
       <key>None</key>
       <value>Keine</value>
     </entry>
+    <entry>
+      <key>Edit workflow</key>
+      <value>Workflow bearbeiten</value>
+    </entry>
     <entry>
       <key>Date of request</key>
       <value>Datum der Anforderung</value>
@@ -2085,6 +2097,10 @@
       <key>{$TASK_STATUS}</key>
       <value>Status</value>
     </entry>
+    <entry>
+      <key>and open modeler</key>
+      <value>und Modeler öffnen</value>
+    </entry>
     <entry>
       <key>Task</key>
       <value>Aufgabe</value>
@@ -7770,6 +7786,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Quick Entry</key>
+      <value>Schnelleingabe</value>
     </entry>
     <entry>
       <key>Additional Contacts</key>
@@ -8170,6 +8187,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Send email</key>
+      <value>E-Mail losschicken</value>
     </entry>
     <entry>
       <key>Activites</key>
@@ -8667,6 +8685,10 @@ Bitte Datumseingabe prüfen</value>
       <key>set New</key>
       <value>Neu setzen</value>
     </entry>
+    <entry>
+      <key>${SQL_LIB_FIELD_WRONG_FORMAT}</key>
+      <value>Das Feld "</value>
+    </entry>
     <entry>
       <key>Product Group</key>
       <value>Produktgruppe</value>
@@ -8681,9 +8703,6 @@ Bitte Datumseingabe prüfen</value>
       <key>Offer No.</key>
       <value>Angebots Nr.</value>
     </entry>
-    <entry>
-      <key>Version %0</key>
-    </entry>
     <entry>
       <key>of other on this employee's calendar</key>
       <value>von den Anderen auf den Kalender dieses Mitarbeiters</value>
@@ -8697,7 +8716,58 @@ Bitte Datumseingabe prüfen</value>
       <value>Angebotsanfrage</value>
     </entry>
     <entry>
-      <key>data</key>
+      <key>Full Permissions</key>
+    </entry>
+    <entry>
+      <key>Full permissions already assigned</key>
+    </entry>
+    <entry>
+      <key>Import Daten</key>
+    </entry>
+    <entry>
+      <key>Import Logs</key>
+    </entry>
+    <entry>
+      <key>Transferdaten</key>
+    </entry>
+    <entry>
+      <key>Valid from (as </key>
+      <value>gültig ab (in </value>
+    </entry>
+    <entry>
+      <key>No new recipients found that can be added to the bulk mail.</key>
+      <value>Keine neuen Empfänger, die zur Serienmail hinzugefügt werden können, gefunden.</value>
+    </entry>
+    <entry>
+      <key>Add Recipients</key>
+      <value>Empfänger hinzufügen</value>
+    </entry>
+    <entry>
+      <key>Add Participants</key>
+      <value>Teilnehmer hinzufügen</value>
+    </entry>
+    <entry>
+      <key>Download letter and create Activity</key>
+      <value>Brief herunterladen und Aktivität erstellen</value>
+    </entry>
+    <entry>
+      <key>and open Report</key>
+      <value>und Report öffnen</value>
+    </entry>
+    <entry>
+      <key>export</key>
+    </entry>
+    <entry>
+      <key>export using the selected  template</key>
+      <value>Mit der ausgewählten Vorlage Exportieren</value>
+    </entry>
+    <entry>
+      <key>No new recipients found that can be added to the serial letter.</key>
+      <value>Keine neuen Empfänger, die zum  Serienbrief werden können, gefunden.</value>
+    </entry>
+    <entry>
+      <key>send mail</key>
+      <value>E-Mail losschicken</value>
     </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 6b3c84ea6235206e04b715f9df49d1d37fa61386..40c367a50dbcf0c18340e45272f77ed124779931 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -3397,7 +3397,7 @@
     </entry>
     <entry>
       <key>${SQL_LIB_FIELD_WRONG_FORMAT} field: %0</key>
-      <value>Field %0 is in an incorrect format. The database field has to be like "tablename.columnname" ("ORGANISATION.NAME") or as array with column-alias: ["ORGANISATION", "NAME", "myorgAlias"]</value>
+      <value> "%0" is in an incorrect format. The database field has to be like "tablename.columnname" ("ORGANISATION.NAME") or as array with column-alias: ["ORGANISATION", "NAME", "myorgAlias"]</value>
     </entry>
     <entry>
       <key>New Support ticket</key>
@@ -6826,6 +6826,10 @@
     <entry>
       <key>set New</key>
     </entry>
+    <entry>
+      <key>${SQL_LIB_FIELD_WRONG_FORMAT}</key>
+      <value>The Field</value>
+    </entry>
     <entry>
       <key>Product Group</key>
     </entry>
@@ -6838,9 +6842,6 @@
     <entry>
       <key>Offer No.</key>
     </entry>
-    <entry>
-      <key>Version %0</key>
-    </entry>
     <entry>
       <key>of other on this employee's calendar</key>
     </entry>
@@ -6851,7 +6852,52 @@
       <key>Offerrequest</key>
     </entry>
     <entry>
-      <key>data</key>
+      <key>Full Permissions</key>
+    </entry>
+    <entry>
+      <key>Full permissions already assigned</key>
+    </entry>
+    <entry>
+      <key>Import Daten</key>
+    </entry>
+    <entry>
+      <key>Import Logs</key>
+    </entry>
+    <entry>
+      <key>Transferdaten</key>
+    </entry>
+    <entry>
+      <key>Valid from (as </key>
+    </entry>
+    <entry>
+      <key>Settings</key>
+    </entry>
+    <entry>
+      <key>No new recipients found that can be added to the bulk mail.</key>
+    </entry>
+    <entry>
+      <key>Add Recipients</key>
+    </entry>
+    <entry>
+      <key>Add Participants</key>
+    </entry>
+    <entry>
+      <key>Download letter and create Activity</key>
+    </entry>
+    <entry>
+      <key>and open Report</key>
+    </entry>
+    <entry>
+      <key>export</key>
+    </entry>
+    <entry>
+      <key>export using the selected  template</key>
+    </entry>
+    <entry>
+      <key>No new recipients found that can be added to the serial letter.</key>
+    </entry>
+    <entry>
+      <key>send mail</key>
     </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
diff --git a/neonContext/AnyContact/AnyContact.aod b/neonContext/AnyContact/AnyContact.aod
index b3ce579fd4d5518679329ca568db58c58b837450..60b312b57241794a478599dee7f52f3385a205d0 100644
--- a/neonContext/AnyContact/AnyContact.aod
+++ b/neonContext/AnyContact/AnyContact.aod
@@ -9,5 +9,9 @@
       <name>1ea0b1ed-c2b5-4b8c-b359-27ffdef6e5ea</name>
       <view>AnyContactLookup_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>45efa66c-b525-447c-8e16-014942843299</name>
+      <view>AnyContactDuplicates_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/EmployeeRole/EmployeeRole.aod b/neonContext/EmployeeRole/EmployeeRole.aod
index 526799067a53b3978a49f37d6acd482e5eba591c..0d7f026ed0920a637c045aa8e7df99af27ffc888 100644
--- a/neonContext/EmployeeRole/EmployeeRole.aod
+++ b/neonContext/EmployeeRole/EmployeeRole.aod
@@ -2,6 +2,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>EmployeeRole</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterView>EmployeeRoleFilter_view</filterView>
+  <editView>EmployeeRoleGenericEdit_view</editView>
   <entity>EmployeeRole_entity</entity>
   <references>
     <neonViewReference>
@@ -12,5 +14,9 @@
       <name>6ec0af90-47aa-4f94-8e05-7c535bd4c965</name>
       <view>EmployeeRoleEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>7edde309-9804-4d46-8ac0-d7642f66b584</name>
+      <view>EmployeeRoleGenericEdit_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/Usersettings/Usersettings.aod b/neonContext/Usersettings/Usersettings.aod
new file mode 100644
index 0000000000000000000000000000000000000000..e5ed3a702a70624c78dab49b48452718f2f5a41b
--- /dev/null
+++ b/neonContext/Usersettings/Usersettings.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>Usersettings</name>
+  <title>Settings</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <editView>UsersettingsEdit_view</editView>
+  <entity>Usersettings_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>40cbd631-043c-44d9-b79b-e7675b69bf7f</name>
+      <view>UsersettingsEdit_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/WorkflowModel/WorkflowModel.aod b/neonContext/WorkflowModel/WorkflowModel.aod
new file mode 100644
index 0000000000000000000000000000000000000000..4b31ba4526e5e0890fe3da72d0dfa974bdf39474
--- /dev/null
+++ b/neonContext/WorkflowModel/WorkflowModel.aod
@@ -0,0 +1,19 @@
+<?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>WorkflowModel</name>
+  <title>Workflow Model</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <editView>WorkflowModelEdit_view</editView>
+  <lookupView>WorkflowModelLookup_view</lookupView>
+  <entity>WorkflowModel_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>4d3b7269-7dc9-4e00-8a09-e337ca0df800</name>
+      <view>WorkflowModelEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>82156d4a-1db1-48d4-88e7-f098ca1f432a</name>
+      <view>WorkflowModelLookup_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonNotificationType/WorkflowDeployFailed/WorkflowDeployFailed.aod b/neonNotificationType/WorkflowDeployFailed/WorkflowDeployFailed.aod
new file mode 100644
index 0000000000000000000000000000000000000000..0dafa63d64f6b95f97e57c35925e18c59cc9dca3
--- /dev/null
+++ b/neonNotificationType/WorkflowDeployFailed/WorkflowDeployFailed.aod
@@ -0,0 +1,8 @@
+<?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>WorkflowDeployFailed</name>
+  <title>Workflow deploy failed</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:EXCLAMATION_CIRCLE</icon>
+  <deletePerLogout v="true" />
+</neonNotificationType>
diff --git a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
index ba2044f00ffade1ed9180f61e4edd1f39519959d..b5fff0f4acee7b41242f8fa1e6a29f92e971fb03 100644
--- a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
+++ b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
@@ -4,9 +4,9 @@
   <title>Connections</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -24,5 +24,19 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>1391397e-d956-4231-915e-b7de718c1172</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>299356e8-a97f-40ae-b8ca-cebbf4e3edb3</name>
+          <entityField>OBJECT_ROWID</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod b/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..ff719ed37110b4efdcbba745efc705ea856e2e85
--- /dev/null
+++ b/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6">
+  <name>AnyContactDuplicates_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <hideActions v="true" />
+      <entityField>#ENTITY</entityField>
+      <hideHeader v="true" />
+      <title>Duplicates</title>
+      <columns>
+        <neonTableColumn>
+          <name>c37eef9d-3e62-4353-8499-fae685376761</name>
+          <entityField>#IMAGE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>39645840-a9ca-4d72-a1a1-0355810243de</name>
+          <entityField>ORGANISATION_NAME</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>556ac9f2-c0ce-4401-83d1-f17ead6e14f4</name>
+          <entityField>PERSON_FULL_NAME</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>aa4ce6ed-7f7d-477c-accd-81a2f02a72e6</name>
+          <entityField>STANDARD_PHONE_COMMUNICATION</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>3f5d8420-f3f2-4845-b4a9-14d31905bd9f</name>
+          <entityField>STANDARD_EMAIL_COMMUNICATION</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>c90379c3-f74b-4344-bc56-8e7863bb8f65</name>
+          <entityField>ADDRESS_ID</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/AttributeEdit_view/AttributeEdit_view.aod b/neonView/AttributeEdit_view/AttributeEdit_view.aod
index 0fc737d7a9419e4ddd808f45f0396afe416ffd2d..5668d586c04c0e91bed27a582690be7b0cdab2dd 100644
--- a/neonView/AttributeEdit_view/AttributeEdit_view.aod
+++ b/neonView/AttributeEdit_view/AttributeEdit_view.aod
@@ -3,6 +3,7 @@
   <name>AttributeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
diff --git a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod
index ba8aacfcce8bcbaeb347f0fed98403252e7bb948..bcc1303d8a36c78c9f778bd192efafa8e184bf9a 100644
--- a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod
+++ b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod
@@ -3,6 +3,7 @@
   <name>AttributeRelationTreeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod
index 020e26cb6eca65dc71f4bf0780524495d66f7e11..b51a66ffd812ac5f4afbec1d20584fe3be8998b9 100644
--- a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod
+++ b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod
@@ -3,16 +3,19 @@
   <name>BulkMailAddRecipientsEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <isOverlay v="false" />
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
-    <noneLayout>
+    <boxLayout>
       <name>layout</name>
-    </noneLayout>
+    </boxLayout>
   </layout>
   <children>
     <genericViewTemplate>
       <name>Generic</name>
       <editMode v="true" />
       <entityField>#ENTITY</entityField>
+      <informationField>recipientCountMessage</informationField>
       <fields>
         <entityFieldLink>
           <name>96932894-43f2-471f-b511-3b38bd5f93cb</name>
@@ -20,16 +23,12 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
-    <genericViewTemplate>
-      <name>Message</name>
-      <hideLabels v="true" />
+    <actionsViewTemplate>
+      <name>ContinueActions</name>
+      <actions>
+        <element>addRecipients</element>
+      </actions>
       <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>e29ba637-3638-4c72-bdb7-65034636a882</name>
-          <entityField>recipientCountMessage</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
+    </actionsViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod
index 9c73eeba5854f7ba404cae292ee24e74db0bfefd..1ad8a7d50ee24f76d4d1f2a0c43c82e2841a28c2 100644
--- a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod
+++ b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod
@@ -3,6 +3,7 @@
   <name>BulkMailRecipientEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod
index a8afe33edbc0e7ae0bc894ca7ea5e21900185dd3..5f4bc454fb6344b87ddf7931df64a3643da870ea 100644
--- a/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod
+++ b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -38,5 +38,32 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>recipientActions</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>b2b619e2-3626-4ce4-8840-37a87af0657f</name>
+          <entityField>ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>36aa4057-22ba-4a9e-b055-d272c366c23e</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8b75c1fc-71ce-4b38-aa51-81ee8a42564b</name>
+          <entityField>EMAIL_ADDRESS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>c904c6c0-b2e8-4192-a952-d4f1f6612dee</name>
+          <entityField>STATUS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d50f00d4-2f29-4eb3-8475-aa359deec572</name>
+          <entityField>SENTDATE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod
index d6a28b0e5a90472e501dc46ddbe7049f2c5ec0e8..d3a8fa5c4e91d33df9a3b0e52819cd55bb5810de 100644
--- a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod
+++ b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod
@@ -3,6 +3,7 @@
   <name>BulkMailTesting_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
@@ -12,6 +13,7 @@
     <genericViewTemplate>
       <name>Generic</name>
       <editMode v="true" />
+      <hideEmptyFields v="false" />
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
@@ -28,5 +30,12 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <actionsViewTemplate>
+      <name>ContinueActions</name>
+      <actions>
+        <element>testMail</element>
+      </actions>
+      <entityField>#ENTITY</entityField>
+    </actionsViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod b/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod
index 4464e7f51ed6b6d0d944e9240bec79ae895e4f5c..51e47fdf6319fc525098bfd9ec85a8432ed0503a 100644
--- a/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod
+++ b/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod
@@ -3,6 +3,8 @@
   <name>CampaignAddParticipantsEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <isOverlay v="false" />
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <headerFooterLayout>
       <name>layout</name>
@@ -44,5 +46,12 @@
       <entityField>#ENTITY</entityField>
       <view>campaignParticipantMessage_view</view>
     </neonViewReference>
+    <actionsViewTemplate>
+      <name>ContinueActions</name>
+      <actions>
+        <element>AddParticipants</element>
+      </actions>
+      <entityField>#ENTITY</entityField>
+    </actionsViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
index 02fbf1f73cfb036a2f9110da99ae6a7bd4538ed3..cb1f3d2f26abe217b3d0c4d8aec538aacee07795 100644
--- a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
+++ b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
@@ -3,6 +3,7 @@
   <name>CampaignCostEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
index 1c6ff6c48019fbf402ea7d092e0adeda01c5fbb2..1cfa11b98bd196b97633c48a548cfd3c00abf4a4 100644
--- a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
+++ b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
@@ -4,11 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
   <layout>
-    <drawerLayout>
+    <groupLayout>
       <name>layout</name>
-      <layoutCaption>Fix costs</layoutCaption>
-      <fixedDrawer v="true" />
-    </drawerLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -25,5 +23,19 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>9d36a33f-b619-4922-9811-acd73bf67b22</name>
+          <entityField>CATEGORY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>7b4972ee-1433-4318-bcf4-5298dc4c8cc6</name>
+          <entityField>NET</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/CampaignEdit_view/CampaignEdit_view.aod b/neonView/CampaignEdit_view/CampaignEdit_view.aod
index e3575ea7ca61091a386613eef4c5ca54e1b975d9..e16693943d7e5b050d64c854e6e3a0208cef9dfc 100644
--- a/neonView/CampaignEdit_view/CampaignEdit_view.aod
+++ b/neonView/CampaignEdit_view/CampaignEdit_view.aod
@@ -5,6 +5,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <icon>VAADIN:GROUP</icon>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
diff --git a/neonView/CampaignFilter_view/CampaignFilter_view.aod b/neonView/CampaignFilter_view/CampaignFilter_view.aod
index dbecc7344fc4102df3ab2d193d4e0c5e7568efaa..a30c1ab9f1f355ef861347d260fd2e120700499d 100644
--- a/neonView/CampaignFilter_view/CampaignFilter_view.aod
+++ b/neonView/CampaignFilter_view/CampaignFilter_view.aod
@@ -48,9 +48,9 @@
     </neonDashletConfiguration>
   </dashletConfigurations>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -91,5 +91,42 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>NAME</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>64423d78-0f0c-42d8-ad41-5ae5ae46b98b</name>
+          <entityField>#IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>70375a55-2195-4d6a-85c2-885105c52a95</name>
+          <entityField>NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e017184f-a7ea-4190-a9ad-5b07a5936dc8</name>
+          <entityField>EMPLOYEE_CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0d875d4e-087d-47d2-aa1d-c24476751516</name>
+          <entityField>DATE_START</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>f8ca8c65-24ec-462b-9fe0-b3cf0b35e6b1</name>
+          <entityField>DATE_END</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>f4dfaed8-7d1b-4503-9c11-af090c11adf2</name>
+          <entityField>STATUS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>57fbf1e1-cdc3-4315-a0c4-f1cdeb193993</name>
+          <entityField>DESCRIPTION</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod
index 29f449231ecba1c58ac62bb81b290c0745475ba7..6539d7a4d36249efc9252b43feb7ab58483090cf 100644
--- a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod
+++ b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod
@@ -4,6 +4,7 @@
   <title>Add participant to Campaign</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <headerFooterLayout>
       <name>layout</name>
diff --git a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod
index 73545bc020da031f116bb1abd417abec0b138820..7d4a4e5d2a84ef5c9f155fc6f2d4b9bd223fc1e8 100644
--- a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod
+++ b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod
@@ -6,9 +6,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -40,5 +40,36 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>FilterViewActionGroup</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>9ded1920-58ef-4fc1-ac92-07522c7c06d4</name>
+          <entityField>ADVERTISINGBAN_ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>f406134b-b1c3-4fae-9f6d-771827d0fb01</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>c7831772-15e4-49bb-ba84-647136c3002e</name>
+          <entityField>CAMPAIGNSTEP_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>664cb6d0-48f9-48bf-9934-2fdb40501771</name>
+          <entityField>STANDARD_EMAIL_COMMUNICATION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>b5cf0352-2bb7-4219-afab-49ffd8c46fcc</name>
+          <entityField>STANDARD_PHONE_COMMUNICATION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>88e47cfc-d8cd-4192-aa70-3afb8588f75a</name>
+          <entityField>#TITLE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod
index 798bf2f4820caaf0ca4b74da33ab518269632094..65f90217df30f11791d438ff19ea290ba522e654 100644
--- a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod
+++ b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod
@@ -4,6 +4,7 @@
   <title>Neuer Kampagnenschritt</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod
index 4d1b88d108ceacc6d45bd7aa14dd00050e2a8eb2..df00821f423a60a11108767bd997bea3198c8710 100644
--- a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod
+++ b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod
@@ -6,9 +6,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -56,5 +56,39 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>2246fe5a-d4ed-454a-9007-6c1716ad2a1e</name>
+          <entityField>#IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>890e5593-1283-443d-b3d3-400de594048e</name>
+          <entityField>SORTING</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>2fcf7f79-84fa-482f-b076-d174c51a4f78</name>
+          <entityField>NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>68d15b2a-ca00-43dd-b8ad-9be188f6817c</name>
+          <entityField>EMPLOYEE_CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>a2d623c5-1b79-4991-9659-b9c75995a3b9</name>
+          <entityField>DATE_START</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8a430953-7fd3-4937-8e21-86eab88fd0f7</name>
+          <entityField>DATE_END</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>cf22f88f-186f-4df5-bafb-d0ea9e2035de</name>
+          <entityField>CurrentMaxParticipantsInfo</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod
index ce0367ee27c098499cd335ea1ec6e28c5ed2cb23..fde3568e952b0346a17a8a4fe005d46bc41cd490 100644
--- a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod
+++ b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod
@@ -3,6 +3,7 @@
   <name>ClassificationAdminEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
diff --git a/neonView/ClassificatonAdminPreview_view/ClassificatonAdminPreview_view.aod b/neonView/ClassificatonAdminPreview_view/ClassificatonAdminPreview_view.aod
index 16b271ef5d9c46746da39d5da9c35fac8c76a587..2d8fc5a44b010ad8e28036dd1685784eb75a20b9 100644
--- a/neonView/ClassificatonAdminPreview_view/ClassificatonAdminPreview_view.aod
+++ b/neonView/ClassificatonAdminPreview_view/ClassificatonAdminPreview_view.aod
@@ -2,7 +2,8 @@
 <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6">
   <name>ClassificatonAdminPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <size>SMALL</size>
+  <isOverlay v="false" />
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod b/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod
index ad2dac1349fa9676520cde6e07ebb80c0197bb83..29ebb148c72534308c92c4a75a65077122bd422e 100644
--- a/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod
+++ b/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod
@@ -2,7 +2,8 @@
 <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6">
   <name>ClassificatonPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <size>SMALL</size>
+  <isOverlay v="false" />
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod b/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod
index b256776422908f7740636b7217d2d1987485062a..8a4ff768fa40e083af9a83ea9d76df586d9e6df3 100644
--- a/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod
+++ b/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod
@@ -6,9 +6,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -38,5 +38,16 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>ICON</element>
+        <element>MEDIUM</element>
+        <element>STARTDATE</element>
+        <element>EMPLOYEE_INVOLVED</element>
+        <element>REASON</element>
+      </linkedColumns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod
index c871dc4a95c79c79418a28de5c53d5f46d955ea9..fc757ef341327759a27d89928ef0fd23ffbd64a3 100644
--- a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod
+++ b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod
@@ -3,6 +3,7 @@
   <name>CommRestrictionSmallEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod
index f8d3684ea4e4b9c29fba807492008c988bbf65fc..18c53dad65ec9f0029c712c2fd48522d8c07db53 100644
--- a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod
+++ b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -23,5 +23,19 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>6abb2c5b-9213-43a8-b8b2-760707d02197</name>
+          <entityField>MEDIUM_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>90a3f44f-590f-4995-8abf-3e70ff0a2a49</name>
+          <entityField>ADDR</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod
index d84ce0cc352439fccab4c721d43604171cb1c7e9..ae4b045d5f0371d9e6a027219786e043b7d9a5b1 100644
--- a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod
+++ b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod
@@ -3,6 +3,7 @@
   <name>CompetitionEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/CompetitionFilter_view/CompetitionFilter_view.aod b/neonView/CompetitionFilter_view/CompetitionFilter_view.aod
index a3b6deb3bc7201f36b52b77355e7645959a34bea..cc9122ea36d33e6cc79642c9fa3fd7ae08a91eae 100644
--- a/neonView/CompetitionFilter_view/CompetitionFilter_view.aod
+++ b/neonView/CompetitionFilter_view/CompetitionFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -48,5 +48,39 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>dac103a0-9f98-4220-a138-0744ab99a8ce</name>
+          <entityField>IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9dd8ef4a-1dee-4bbf-94cf-0fbbf6409cf6</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>02e3e380-523e-4639-98c7-14d48fa1d1af</name>
+          <entityField>PHASE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>ad904fb2-9b96-47b7-981e-5198e6bda1f5</name>
+          <entityField>STATUS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>78bf17da-18bd-409e-9567-5b90d5de8e10</name>
+          <entityField>DATE_CANCELLED</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>a839c353-9434-4077-8fe7-63c073450989</name>
+          <entityField>REASON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>868ab0cc-cf9f-40c9-8f29-552c6c4e4fbb</name>
+          <entityField>INFO</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ContractFilter_view/ContractFilter_view.aod b/neonView/ContractFilter_view/ContractFilter_view.aod
index 419a745a93e9f6f4f2082350b88f3f9f91981522..f92d2bd17a33c1a20b623fd4e43c14114962124e 100644
--- a/neonView/ContractFilter_view/ContractFilter_view.aod
+++ b/neonView/ContractFilter_view/ContractFilter_view.aod
@@ -25,9 +25,9 @@
     </neonDashletConfiguration>
   </dashletConfigurations>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -75,5 +75,46 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>CONTRACTCODE</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>74328115-44f3-4d7c-8933-faa63f1471b4</name>
+          <entityField>IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>2b19050c-2369-4c7c-8fae-78c1fbbe5d45</name>
+          <entityField>CONTRACTCODE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>3e56a229-3185-40d8-ace7-ea6e27b9270c</name>
+          <entityField>CONTRACTTYPE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>eae37ce9-1977-4ba3-88be-e7407fb0c810</name>
+          <entityField>CONTACT_ORG_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>377ce8a8-ebb6-4d1c-a800-70645203a3c2</name>
+          <entityField>CONTACT_PERSON_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>b262598f-4730-4963-8c77-aeb83a4a0b70</name>
+          <entityField>CONTRACTSTATUS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e82273bb-a870-44c1-bd7c-408145f500b9</name>
+          <entityField>CONTRACTSTART</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>642dfddc-ec90-4833-8454-f15564073989</name>
+          <entityField>CONTRACTEND</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod
index a1412b7df96c63bd08f055d0a4e52402d40ddc28..b10ce1465adaebeadf62b7a025c6c08c50e0961c 100644
--- a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod
+++ b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod
@@ -3,6 +3,7 @@
   <name>DSGVOEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/DSGVOFilter_view/DSGVOFilter_view.aod b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod
index 62ad6edfd374b75d8892b2f0fcb25cd2773fcbd0..0be528e00a0be5d48a8357a58e729bad5f6475db 100644
--- a/neonView/DSGVOFilter_view/DSGVOFilter_view.aod
+++ b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod
@@ -5,9 +5,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -42,5 +42,33 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>DSGVOActions</favoriteActionGroup1>
+      <favoriteActionGroup2>Reports</favoriteActionGroup2>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>0a3d452a-842b-429f-a05d-4a7ee0fb3b15</name>
+          <entityField>DSGVOTYPE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6702080b-d609-492f-b7b5-206296783776</name>
+          <entityField>VALUE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>4048ac56-74e5-4a1a-86e0-6f638ed1f5f0</name>
+          <entityField>STATUORITYSOURCE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>4a9ce64b-b554-4fb6-9fa3-48e389df8289</name>
+          <entityField>PURPOSE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>29b57663-dce8-4644-ab0d-71a19c18c5ec</name>
+          <entityField>VALID_TO</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod
index e360f16cba2eae6a1271ff9cd031590d16a9ede3..322834185a83b93efde46f10ee93dcc1f9c66f96 100644
--- a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod
+++ b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod
@@ -3,6 +3,8 @@
   <name>DSGVOInfoEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <isOverlay v="false" />
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod
index 102967f03d35268ff603ef13ca694a3961fb676b..16b162e36e1f40868b649f8033af7cd7ef25bf23 100644
--- a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod
+++ b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod
@@ -3,6 +3,7 @@
   <name>DSGVOPreviewAnonym_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod
index 5ecc817a4fdd94323c0df32bd3c914f8a7e2661b..dbd985c9477eb4df3b09527182866eddc41f9fb9 100644
--- a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod
+++ b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod
@@ -3,6 +3,7 @@
   <name>DefaultAdminView_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
diff --git a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod
index 0d61c3068bb3143c4845617c8fd8762c90e87af6..88a2787707419ee251f0cca03aaf2c71c4e68e11 100644
--- a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod
+++ b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod
@@ -3,6 +3,7 @@
   <name>DescriptionTranslationEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod
index 96d8531f12d8b4e07a0f3d7fb8c67bfa5ed25679..4d86b266dc54aa4f1a2a8439b5740339593201e3 100644
--- a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod
+++ b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod
@@ -3,9 +3,9 @@
   <name>DescriptionTranslationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -22,5 +22,19 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>a9046b9c-0324-4e19-a22b-ae39c6a1c8c4</name>
+          <entityField>LANG</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d99b1676-04e7-4edb-9db5-4574c02675c9</name>
+          <entityField>DESCRIPTION</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/DocumentEdit_view/DocumentEdit_view.aod b/neonView/DocumentEdit_view/DocumentEdit_view.aod
index fa065f847d10b1b1d5624143f26ce0594e56e875..987ec495b6dacc5a0a19666e7985ebcdee26acee 100644
--- a/neonView/DocumentEdit_view/DocumentEdit_view.aod
+++ b/neonView/DocumentEdit_view/DocumentEdit_view.aod
@@ -3,6 +3,7 @@
   <name>DocumentEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/DocumentFilter_view/DocumentFilter_view.aod b/neonView/DocumentFilter_view/DocumentFilter_view.aod
index af7ec71ce1e45d87b66a8a8468f031f6def3bbaf..3da41e270af4f4f9a4ff44d1d784f1254bad35bb 100644
--- a/neonView/DocumentFilter_view/DocumentFilter_view.aod
+++ b/neonView/DocumentFilter_view/DocumentFilter_view.aod
@@ -4,11 +4,23 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
+    <tilesViewTemplate>
+      <name>Tiles</name>
+      <iconField>ICON</iconField>
+      <titleField>NAME</titleField>
+      <subtitleField>TYPE</subtitleField>
+      <descriptionField>SIZE</descriptionField>
+      <infoTopField>IS_MAIN_DOCUMENT</infoTopField>
+      <infoBottomField>DATE_EDIT</infoBottomField>
+      <favoriteActionGroup1>Document_actions</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+      <isCreatable v="true" />
+    </tilesViewTemplate>
     <tableViewTemplate>
       <name>Documents</name>
       <favoriteActionGroup1>Document_actions</favoriteActionGroup1>
@@ -40,5 +52,32 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>Document_actions</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>e9438bff-d061-4fff-bcf8-2995cdb636bd</name>
+          <entityField>NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>2db45402-1cc7-49bd-b083-7baa8a5a97fc</name>
+          <entityField>TYPE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>5a80b191-9a93-4225-b768-875b7e055760</name>
+          <entityField>SIZE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>b5500348-5e58-4977-a89f-c4f802aef939</name>
+          <entityField>DATE_EDIT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>66e4c1e2-30c9-4dc6-a450-090484c195d5</name>
+          <entityField>IS_MAIN_DOCUMENT</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod
index e47b7daf74cc9c0787e0a6693b187b14d0cd67ce..fae9c9be8a773334223fe011c34141db1c3700cc 100644
--- a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod
+++ b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod
@@ -5,6 +5,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod b/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod
index 1dfb98e23b35322327f34099b0869cab957a5a1f..c09f4a9cc317e29c243f81d13878e6d83475a093 100644
--- a/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod
+++ b/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod
@@ -6,11 +6,19 @@
   <icon>VAADIN:FILE_FONT</icon>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
+    <tilesViewTemplate>
+      <name>Tiles</name>
+      <titleField>NAME</titleField>
+      <subtitleField>KIND</subtitleField>
+      <descriptionField>ISOLANGUAGE</descriptionField>
+      <entityField>#ENTITY</entityField>
+      <isCreatable v="true" />
+    </tilesViewTemplate>
     <treeTableViewTemplate>
       <name>SearchTree</name>
       <parentField>KIND</parentField>
diff --git a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod
index ecb3846d023d75e63c2584c74aa98728d7a3526f..1ffb18b8f7876404e349e3e985579cc9a6f342df 100644
--- a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod
+++ b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod
@@ -3,9 +3,9 @@
   <name>DuplicateScannerFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -13,7 +13,7 @@
       <favoriteActionGroup2></favoriteActionGroup2>
       <favoriteActionGroup3>RunActionGroup</favoriteActionGroup3>
       <entityField>#ENTITY</entityField>
-      <isCreatable v="false" />
+      <isCreatable v="true" />
       <isDeletable v="false" />
       <isEditable v="true" />
       <columns>
@@ -27,5 +27,20 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup3>RunActionGroup</favoriteActionGroup3>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>2ce9962e-4e3e-4cd6-b391-0f61505459f4</name>
+          <entityField>FILTER_NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6730d89f-4190-4767-b3a0-a63231477ed4</name>
+          <entityField>ENTITY_TO_SCAN_NAME</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/EmailEdit_view/EmailEdit_view.aod b/neonView/EmailEdit_view/EmailEdit_view.aod
index 2e045348b8c9b47c1a7950cc340c4ef62ca1894b..0606c5788a5daf17f8e709d6cf7311fc0628a307 100644
--- a/neonView/EmailEdit_view/EmailEdit_view.aod
+++ b/neonView/EmailEdit_view/EmailEdit_view.aod
@@ -3,6 +3,8 @@
   <name>EmailEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <isOverlay v="false" />
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
@@ -12,6 +14,7 @@
     <genericViewTemplate>
       <name>Generic</name>
       <editMode v="true" />
+      <hideEmptyFields v="false" />
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
@@ -38,6 +41,7 @@
     <genericViewTemplate>
       <name>Generic2</name>
       <editMode v="true" />
+      <hideEmptyFields v="false" />
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
@@ -46,5 +50,12 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <actionsViewTemplate>
+      <name>ContinueActions</name>
+      <actions>
+        <element>sendMail</element>
+      </actions>
+      <entityField>#ENTITY</entityField>
+    </actionsViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/EmployeePassword_view/EmployeePassword_view.aod b/neonView/EmployeePassword_view/EmployeePassword_view.aod
index 5636958a54174ad4fe54577f116a17a3a1c973dd..9309f0b748f33a80f026f36212d45d6dfadcb3fe 100644
--- a/neonView/EmployeePassword_view/EmployeePassword_view.aod
+++ b/neonView/EmployeePassword_view/EmployeePassword_view.aod
@@ -3,6 +3,7 @@
   <name>EmployeePassword_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod
index 7465778ee33495ccf4933262214c5e5bf7981002..92618fbb9cb53540380f007f2f59a5cc92903a57 100644
--- a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod
+++ b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod
@@ -3,14 +3,13 @@
   <name>EmployeeRoleFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
       <name>Table</name>
-      <inlineEdit v="true" />
       <entityField>#ENTITY</entityField>
       <autoNewRow v="true" />
       <columns>
@@ -24,5 +23,19 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>72537ee6-32e9-4ec3-b809-287b538a0bff</name>
+          <entityField>ROLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>836cd20f-32bd-411d-9282-e197f0b6534c</name>
+          <entityField>UID</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..28e2345dee0299e75b7ad8b9a69c7625554c7edb
--- /dev/null
+++ b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_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.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6">
+  <name>EmployeeRoleGenericEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>generic</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>d7333f5e-1ec2-4169-b135-e0fa31bc5f3d</name>
+          <entityField>ROLE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>4ff47cc3-15e9-4e91-9f16-919c226009b4</name>
+          <entityField>UID</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod
index 8e8d27dc5890b899fecd433e15342f0b30e2c546..8291821119db91fcd12efa43e385320d1f3f7cc1 100644
--- a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod
+++ b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -40,5 +40,35 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>bf2f11c2-8cf0-40da-9692-d09bf8391679</name>
+          <entityField>TITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>53869967-de33-4f9e-aa36-a11475892322</name>
+          <entityField>ISOLANGUAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6c25b35a-c655-4840-a9a7-37a7ac309e1b</name>
+          <entityField>DESCRIPTION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d8b6fb15-fd7a-4489-9547-f49070861e16</name>
+          <entityField>SENTENCESEPARATOR</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>67a5f45e-8a45-4d23-8de3-00a9c7da87ac</name>
+          <entityField>FIELDSEPARATOR</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>ea7f9ff5-a168-4f57-92c8-036c262bc147</name>
+          <entityField>FIELDDELIMITER</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod
index 8f4438e929b58e38b9a8a6ae8dff7649bdf20e92..7a9b755b2040d6f09825ca7133ccaf29750c34c5 100644
--- a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod
+++ b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod
@@ -3,6 +3,7 @@
   <name>ExportTemplateSelectionEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
@@ -12,6 +13,7 @@
     <genericViewTemplate>
       <name>generic</name>
       <editMode v="true" />
+      <hideEmptyFields v="false" />
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
@@ -24,5 +26,12 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <actionsViewTemplate>
+      <name>ContinueActions</name>
+      <actions>
+        <element>safeandexport</element>
+      </actions>
+      <entityField>#ENTITY</entityField>
+    </actionsViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ForecastEdit_view/ForecastEdit_view.aod b/neonView/ForecastEdit_view/ForecastEdit_view.aod
index 2447c90ed89c21873af66426bd60c98f3a788082..fe71618badc57d0394b5b8bf28484c9eddc2dc73 100644
--- a/neonView/ForecastEdit_view/ForecastEdit_view.aod
+++ b/neonView/ForecastEdit_view/ForecastEdit_view.aod
@@ -3,6 +3,7 @@
   <name>ForecastEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/ForecastFilter_view/ForecastFilter_view.aod b/neonView/ForecastFilter_view/ForecastFilter_view.aod
index 0f145394a3a6929b3550e45c47b412bad58327d3..400bfb57ed5d2ddfb4f425fe3d4279b6dfc084d0 100644
--- a/neonView/ForecastFilter_view/ForecastFilter_view.aod
+++ b/neonView/ForecastFilter_view/ForecastFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -35,5 +35,27 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>9bdb1cf9-5348-464d-84fb-747d509b0eef</name>
+          <entityField>GROUPCODE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>93475c8e-b916-4d4f-986d-7f7aa5963b7f</name>
+          <entityField>DATE_START</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>270e0ea4-89e4-41bf-a822-66bfe4f9e37d</name>
+          <entityField>VOLUME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>fa491370-9243-4531-b496-750c45ba69fa</name>
+          <entityField>INFO</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod
index fe2226b31e69ec9a4fc14f22ba0e6eccaac4e94c..4bcc0eda9db13670681a509f2a80c3314cf743b9 100644
--- a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod
+++ b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod
@@ -3,6 +3,7 @@
   <name>ImportFieldEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod b/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod
index cd613e10494ceeffc817c90cdf28f758582df87c..ee18157579207f465825d5d80ba93a4958f77494 100644
--- a/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod
+++ b/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
diff --git a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod
index 9731a5c1ed23490b2066ba77c2b093c5df21c57a..1e906c4ad4030738fcf891530a0ac48e06760f73 100644
--- a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod
+++ b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod
@@ -3,6 +3,7 @@
   <name>KeywordAttributeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
diff --git a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod
index 29ad4b2f81fd6c8f054a396900c81d912cafd855..9072b6df51f606f4caae6ec016e30d5ad94ab6be 100644
--- a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod
+++ b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -36,5 +36,27 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>5b5dbd07-4965-4038-a692-8c4992820da4</name>
+          <entityField>#ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>f1e9f968-4b54-4923-a5e4-876097d9e340</name>
+          <entityField>CONTAINER</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>5054102d-62aa-43c4-9a38-5ed7d31eecb9</name>
+          <entityField>NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e3976bf7-4d2b-4831-a62d-023dd9dd1a9f</name>
+          <entityField>TYPE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod
index 1e7e0083e0a75b2ed5c8c3ea53c100b7601578d3..d759384a7067f6e2324dd206641fda2bf2ace168 100644
--- a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod
+++ b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod
@@ -3,6 +3,7 @@
   <name>KeywordEntryEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
diff --git a/neonView/LeadFilter_view/LeadFilter_view.aod b/neonView/LeadFilter_view/LeadFilter_view.aod
index 2bef6bfa82c215f71039f375d5740376a0a46446..75dc1286e761b80a2542f345752bc68373da2343 100644
--- a/neonView/LeadFilter_view/LeadFilter_view.aod
+++ b/neonView/LeadFilter_view/LeadFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -64,5 +64,55 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>caa4f4c2-d5a9-42e0-b4fa-79cbd4d78055</name>
+          <entityField>LEADDUP_STATUS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>a5a1696a-7c8d-47db-9711-20f18964ad7a</name>
+          <entityField>LEAD_SALUTATION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>f4f2c24d-7a1e-4e5e-92d1-8601c26c64f9</name>
+          <entityField>LEAD_TITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>75eb31aa-3134-4c36-8c88-f6831929e012</name>
+          <entityField>LEAD_FIRSTNAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>c3d93da2-c10c-4bbc-85af-3f4a1a96d1dd</name>
+          <entityField>LEAD_LASTNAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>c2e27500-3238-4f4d-b2d8-2fc37fbde7ef</name>
+          <entityField>LEAD_NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>68bd6f39-4e93-4e0a-8925-25cd24b151c1</name>
+          <entityField>LEAD_COUNTRY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>758439b3-4792-48d9-a495-b02de7adf18f</name>
+          <entityField>LEAD_ZIP</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>a30d40b3-a8e2-4299-b609-5c90b380d92a</name>
+          <entityField>LEAD_CITY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>1d664e68-639e-47b2-bae6-ad41e57fadcd</name>
+          <entityField>LEAD_ADDRESS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>1b3ed325-773c-4c73-accb-8f4c7224fa04</name>
+          <entityField>LEAD_SOURCE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/LeadLogFilter_view/LeadLogFilter_view.aod b/neonView/LeadLogFilter_view/LeadLogFilter_view.aod
index 87f73eba1b43176f3996f340fcd2978bf1c5e671..7faeebe7aacecb268bf2574b6a5cb577026418dc 100644
--- a/neonView/LeadLogFilter_view/LeadLogFilter_view.aod
+++ b/neonView/LeadLogFilter_view/LeadLogFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -35,5 +35,31 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>08e7aa5e-2343-4127-b3f3-226e27b96074</name>
+          <entityField>DATE_NEW</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>f9fa0186-7226-4210-b160-2d237b221d93</name>
+          <entityField>USER_NEW</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>80b5562d-e1b7-4460-aa83-6ca144548003</name>
+          <entityField>IMPORTSOURCE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>035d105c-e3d1-4e5a-8301-f6bed9852fe4</name>
+          <entityField>IMPORTERRORS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>94877e7b-fc5d-4767-95c7-139cc354664d</name>
+          <entityField>IMPORTROWS</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/LeadPreview_view/LeadPreview_view.aod b/neonView/LeadPreview_view/LeadPreview_view.aod
index a2f3ac9c161bc8e3a4a3ece5289c7347eb6af2be..dcd3b2353828fb0da8b71e3b42b3bcd4658be49a 100644
--- a/neonView/LeadPreview_view/LeadPreview_view.aod
+++ b/neonView/LeadPreview_view/LeadPreview_view.aod
@@ -4,6 +4,7 @@
   <title>Lead preview</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/LeadTempFilter_view/LeadTempFilter_view.aod b/neonView/LeadTempFilter_view/LeadTempFilter_view.aod
index a41fe2fc89d35046ea6ef9d85f691b8af04f0934..8b51e246b49096fc00023045ca8855480f10c4c9 100644
--- a/neonView/LeadTempFilter_view/LeadTempFilter_view.aod
+++ b/neonView/LeadTempFilter_view/LeadTempFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -140,5 +140,131 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>375665e1-5a04-460d-a601-7f008c86fc58</name>
+          <entityField>COLUMN01</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e50a33aa-a4e2-43f9-9fe8-c2fdb43b7c86</name>
+          <entityField>COLUMN02</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>a465c86d-ac7f-4c7b-a82e-1eb8a9ff3676</name>
+          <entityField>COLUMN03</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>77660cd8-af4d-40da-8675-07e41f06aedc</name>
+          <entityField>COLUMN04</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>916e36d0-730a-42f6-ac39-2b0ba2c8ae99</name>
+          <entityField>COLUMN05</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>bbfa424e-8926-45cf-b19a-4e6dba4eb626</name>
+          <entityField>COLUMN06</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8c70bce0-a4cb-43bf-b51c-52561b9cdc44</name>
+          <entityField>COLUMN07</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0426ae0c-de13-4cc6-ab3d-7788eb8a4a1c</name>
+          <entityField>COLUMN08</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>7dc69993-74cf-4e30-9d48-606e06d59b57</name>
+          <entityField>COLUMN09</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6624735f-e07f-4e0b-872d-303090be196c</name>
+          <entityField>COLUMN10</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>4aae3eb9-4ed5-4dae-ba15-fcae4a9ca869</name>
+          <entityField>COLUMN11</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>4c61a04a-a78e-45bc-ba83-a06a0470f75b</name>
+          <entityField>COLUMN12</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>60b0fd18-ba97-46e5-b107-72686e54017d</name>
+          <entityField>COLUMN13</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>05e367fd-73e9-4fdc-94ae-a293f9c986ae</name>
+          <entityField>COLUMN14</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>7869a522-1365-4b20-b9d9-ad6945a2a3d1</name>
+          <entityField>COLUMN15</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>c0ed0e3c-5611-4016-8f31-fd8728b7df49</name>
+          <entityField>COLUMN16</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>620d9f9b-4320-405a-a7e0-606631dad06a</name>
+          <entityField>COLUMN17</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>254fc5a8-6da0-42dd-9d00-a11ca3630897</name>
+          <entityField>COLUMN18</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>a0452691-427c-4460-b514-c85dfb1e5e1d</name>
+          <entityField>COLUMN19</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>42714091-0c89-4ddd-90ce-f3a3f86f86ac</name>
+          <entityField>COLUMN20</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>ffb38c25-f12a-40e3-96e3-aaeb779e40e6</name>
+          <entityField>COLUMN21</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>1d619397-b6c4-44ba-a5b2-646ca4a5c512</name>
+          <entityField>COLUMN22</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8d2a46c2-df70-47cf-95a8-2b1152c5f884</name>
+          <entityField>COLUMN23</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>99bacf20-0c59-4817-bc78-4cf358a6d946</name>
+          <entityField>COLUMN24</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e2e5779a-6efc-45bf-99ca-56d7eb2bb237</name>
+          <entityField>COLUMN25</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>20943194-d6b3-4e48-ad73-f20ea83425cb</name>
+          <entityField>COLUMN26</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>55190e5b-99f9-479c-b371-d2ece0058e17</name>
+          <entityField>COLUMN27</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e4499761-04e5-4a5b-9469-d256fa90336f</name>
+          <entityField>COLUMN28</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>668f83de-e9ef-4df2-bba3-e69bf4f5aa68</name>
+          <entityField>COLUMN29</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d6bc67b2-3b09-4d31-bc30-32bbdd4c3523</name>
+          <entityField>COLUMN30</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod
index 411a8ae00c68f6b2bb9cba766995468f335cd682..32007efecfefdc5c8a42ac23ccfa18e73b30d8c9 100644
--- a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod
+++ b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod
@@ -3,6 +3,7 @@
   <name>LeadimportDocEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/LeadimportFilter_view/LeadimportFilter_view.aod b/neonView/LeadimportFilter_view/LeadimportFilter_view.aod
index 1122e15a3df7a430c31d7acd05e718342c90bfb9..111d9ee2c1cdce3a3c7b90663c78d668a22e4538 100644
--- a/neonView/LeadimportFilter_view/LeadimportFilter_view.aod
+++ b/neonView/LeadimportFilter_view/LeadimportFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -35,5 +35,31 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>5b550d07-b92f-4429-a9f7-e18013aa3280</name>
+          <entityField>#IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e25d671d-50c8-4c77-9a2b-8214b0b87814</name>
+          <entityField>NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>3ffd6131-6064-4ca2-958b-50f7eef0b3e1</name>
+          <entityField>IMPORTSOURCE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>5fe0eed1-ed45-478d-b84e-ad65e1e5fd0a</name>
+          <entityField>LEADIMPORT_DATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9563e615-fc93-406f-8cbb-2eceafc5bcc4</name>
+          <entityField>STATUS</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/LetterEdit_view/LetterEdit_view.aod b/neonView/LetterEdit_view/LetterEdit_view.aod
index 12d5de308579ed419403fff7904916ccde24d3c8..5f77590bb269118a0a01ecfdee2b6b0f8f969432 100644
--- a/neonView/LetterEdit_view/LetterEdit_view.aod
+++ b/neonView/LetterEdit_view/LetterEdit_view.aod
@@ -3,6 +3,8 @@
   <name>LetterEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <isOverlay v="false" />
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
@@ -38,5 +40,12 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <actionsViewTemplate>
+      <name>ContinueActions</name>
+      <actions>
+        <element>downloadLetterAndCreateActivity</element>
+      </actions>
+      <entityField>#ENTITY</entityField>
+    </actionsViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod b/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod
index c6323009dbfc0a4788867c0ba0c351c1cb92f5ac..6bb0a1766a827bc1c3aca1b73ee207cc58d96acf 100644
--- a/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod
+++ b/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod
@@ -3,6 +3,7 @@
   <name>LetterRecipientEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod b/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod
index d4697ca34132c13da3a33dedf50860997733cb6f..2527705649e2aacea831bb62b2f8c4f1d4618b92 100644
--- a/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod
+++ b/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -30,5 +30,24 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>recipientActions</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>f338176b-7bc3-4d4c-94cb-304e7e2bd6ed</name>
+          <entityField>ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>ed4a9f8a-6a15-4fcd-b9ac-72cfbe64560c</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>1d6e8494-e022-47e9-a690-6cdeafd87004</name>
+          <entityField>ADDRESS_ID</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod b/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod
index fad28a618b1f1e86b397f291a859d8c90841b345..046d2f8787fa44504542c665a131526969cb6c25 100644
--- a/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod
+++ b/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod
@@ -44,5 +44,24 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>Reloading_actionGroup</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>dd9a98c1-3f6e-4bc5-b0bf-272b37112214</name>
+          <entityField>DATE_NEW</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>16aaf8c1-a573-4246-ac74-221a7b978862</name>
+          <entityField>USER_NEW</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>cdcca5f4-eb23-477c-9618-54f4e1fe6dbb</name>
+          <entityField>DESCRIPTION</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/MemberEdit_view/MemberEdit_view.aod b/neonView/MemberEdit_view/MemberEdit_view.aod
index 386180b112ec3d210335743eb4e4eb8ed7ea369c..d87d067090a65f8cfca284782ffe693ce7d5de51 100644
--- a/neonView/MemberEdit_view/MemberEdit_view.aod
+++ b/neonView/MemberEdit_view/MemberEdit_view.aod
@@ -3,6 +3,7 @@
   <name>MemberEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/MemberFilter_view/MemberFilter_view.aod b/neonView/MemberFilter_view/MemberFilter_view.aod
index 6aa71af982f6de040309303f5d02767cb4deda42..c432d26441eea86fa088802e5af8e6e2d738ce86 100644
--- a/neonView/MemberFilter_view/MemberFilter_view.aod
+++ b/neonView/MemberFilter_view/MemberFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -47,5 +47,39 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>88973b9d-09af-4d67-8b25-ea6b456314a2</name>
+          <entityField>IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d84b10a1-593a-4c2f-ba35-4fb80c362850</name>
+          <entityField>PERSON_FULL_NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>22eb0efc-61b3-48fe-989d-2dd4e70ea780</name>
+          <entityField>ORGANISATION_NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>7d5b671c-af93-416c-b774-bd2bc671f048</name>
+          <entityField>DEPARTMENT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>06451ab6-4d94-40eb-8ac1-466259ad35fb</name>
+          <entityField>CONTACTROLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>87770e60-967b-4411-9eb3-0397fda4663e</name>
+          <entityField>POSITION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>2dc17972-2e5a-424a-b069-2b8f04b35f6c</name>
+          <entityField>MEMBERROLE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/NotificationFilter_view/NotificationFilter_view.aod b/neonView/NotificationFilter_view/NotificationFilter_view.aod
index bb14afb0a269a9c52da65d1333fc78f34be935ee..cc12313a6470ee4aa7d9a2a6ac1a905f942ab28f 100644
--- a/neonView/NotificationFilter_view/NotificationFilter_view.aod
+++ b/neonView/NotificationFilter_view/NotificationFilter_view.aod
@@ -28,7 +28,7 @@
   <children>
     <timelineViewTemplate>
       <name>NotificationTimeline</name>
-      <dateField>CREATIONDATE</dateField>
+      <dateField>CREATEDATE</dateField>
       <titleField>CAPTION</titleField>
       <descriptionField>DESCRIPTION</descriptionField>
       <iconIdField>ICON</iconIdField>
@@ -38,7 +38,7 @@
       <name>NotificationTable</name>
       <favoriteActionGroup1>setNotificationState</favoriteActionGroup1>
       <inlineEdit v="true" />
-      <entryAction>rowClickAction</entryAction>
+      <entryAction></entryAction>
       <iconField>ICON</iconField>
       <titleField>CAPTION</titleField>
       <subtitleField>RESOLVEDPRIORITY</subtitleField>
@@ -53,7 +53,7 @@
         </neonTableColumn>
         <neonTableColumn>
           <name>0ed20b46-be6a-424c-a583-a3f7496ec3f9</name>
-          <entityField>CREATIONDATE</entityField>
+          <entityField>CREATEDATE</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>3bf425ed-227c-4768-b339-4794aa0d6063</name>
@@ -79,7 +79,7 @@
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>2b2d8359-3746-4fa2-8f51-859e50ead9ef</name>
-          <entityField>CREATIONDATE</entityField>
+          <entityField>CREATEDATE</entityField>
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>efefd3d9-7961-4299-aa7e-24d313ad6454</name>
diff --git a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod
index d2db8c528fe3376a1762f878308f8b02050bc6d7..e354b3573f2c0e6a617136a1983c8b456b77cfa6 100644
--- a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod
+++ b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod
@@ -3,6 +3,7 @@
   <name>ObjectRelationTypeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod
index 05517f80a374d9004e504925ae6ff0eaff0564e9..9e6fa80dafd8382e7d758b5a939012c86d664edd 100644
--- a/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod
+++ b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod
@@ -3,9 +3,9 @@
   <name>ObjectRelationTypeFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -41,5 +41,36 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>removeActionGroup</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>7a7dda46-ba05-4ec8-a95f-8de362f9b5dc</name>
+          <entityField>ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>fe395ac9-8780-4324-8464-c7ebc1524498</name>
+          <entityField>SOURCE_RELATION_TITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0946f000-6341-4294-ab4c-4d84ab7afa76</name>
+          <entityField>SOURCE_OBJECT_TYPE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9915014e-2e5f-4257-9197-b21e5ec09321</name>
+          <entityField>DEST_RELATION_TITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0e8d7695-1c47-44e2-9fcb-078c7b85e78e</name>
+          <entityField>DEST_OBJECT_TYPE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>75bfacac-b0a8-4766-af46-f7d51221dcc7</name>
+          <entityField>HIERARCHY</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod
index 2c5be168944512a063b753a4087148d970cfc958..922ada4bc69f3589ee407b648469eb3d281f7fb2 100644
--- a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod
+++ b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod
@@ -3,6 +3,7 @@
   <name>ObjectTreeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod
index ae9b992177b09f09a5ec0812f55720f1e749ae59..3497cce9b4d21634068d93c6e65c3f3135056f3c 100644
--- a/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod
+++ b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <treeViewTemplate>
diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod
index c1a048989f55375d660ca83cf9d853b3d64e79b0..28fb45b5ae0dc0f8a90f1205e21d0d28f7c25652 100644
--- a/neonView/OfferFilter_view/OfferFilter_view.aod
+++ b/neonView/OfferFilter_view/OfferFilter_view.aod
@@ -44,9 +44,9 @@
     </neonDashletConfiguration>
   </dashletConfigurations>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -94,5 +94,47 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>TreeTable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>FullOfferCode</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>d5482be9-bc51-4b23-b33d-3e50819d5a64</name>
+          <entityField>IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8efb48cb-ebbf-43c7-b227-592db20fd738</name>
+          <entityField>FullOfferCode</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d60e10fd-6e77-45e7-98d8-8a4abf457a89</name>
+          <entityField>CONTACT_ORG_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>083a59f6-3db9-41ea-8bba-3077239fd84a</name>
+          <entityField>CONTACT_PERSON_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>cfae46a9-1fce-4c63-b92f-4253b47fd5b3</name>
+          <entityField>STATUS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>bc5c1349-aabe-4d99-a614-06315895aa6a</name>
+          <entityField>OFFERDATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9f552c79-b5e1-405b-aafa-c2504ca84c34</name>
+          <entityField>NET</entityField>
+          <aggregateEntityField>NET_aggregate</aggregateEntityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>53adfe2e-1eb3-4b0e-9ffd-61d040cbba5c</name>
+          <entityField>PROBABILITY</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/OfferPreview_view/OfferPreview_view.aod b/neonView/OfferPreview_view/OfferPreview_view.aod
index 72e0b0fb1525cdea0428598d31a5e0a90bd01d2e..83392a97061b4c5719cbade740c5d64d5cd1f09a 100644
--- a/neonView/OfferPreview_view/OfferPreview_view.aod
+++ b/neonView/OfferPreview_view/OfferPreview_view.aod
@@ -24,6 +24,10 @@
       <drawerCaption>Details</drawerCaption>
       <entityField>#ENTITY</entityField>
       <fields>
+        <entityFieldLink>
+          <name>44e6dc8e-4f90-454b-9be5-f96c66ce36ec</name>
+          <entityField>CURRENCY</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>8d780ff6-9ca0-4067-b2b1-6e092c62253e</name>
           <entityField>STATUS</entityField>
diff --git a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod
index eed722c82a4a869a648fd30c45c295ce74b90988..b249c4127083a8fe0539db54d714c517a64e5081 100644
--- a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod
+++ b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod
@@ -3,6 +3,7 @@
   <name>OfferitemEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/OrderDunning_view/OrderDunning_view.aod b/neonView/OrderDunning_view/OrderDunning_view.aod
index 6ef528dfeec851868f23594811da0d684135d943..0a20b0fdb87726636ef6602445cb916027492bb3 100644
--- a/neonView/OrderDunning_view/OrderDunning_view.aod
+++ b/neonView/OrderDunning_view/OrderDunning_view.aod
@@ -3,6 +3,7 @@
   <name>OrderDunning_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/OrderFilter_view/OrderFilter_view.aod b/neonView/OrderFilter_view/OrderFilter_view.aod
index a2e78f0e5b2026ff927a575f00db07f0df555d7c..6c1a61083eee585b71fe7f577ebac63b47d25263 100644
--- a/neonView/OrderFilter_view/OrderFilter_view.aod
+++ b/neonView/OrderFilter_view/OrderFilter_view.aod
@@ -44,9 +44,9 @@
     </neonDashletConfiguration>
   </dashletConfigurations>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -99,5 +99,26 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>IMAGE</element>
+        <element>FullOrderCode</element>
+        <element>ORDERTYPE</element>
+        <element>CONTACT_ORG_ID</element>
+        <element>CONTACT_PERSON_ID</element>
+        <element>ORDERSTATUS</element>
+        <element>SALESORDERDATE</element>
+        <element>CANCELLATION</element>
+        <element>NET</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>02e3c101-e4c4-4389-b372-8186b7f1e942</name>
+          <entityField>FullOrderCode</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/OrderPaid_view/OrderPaid_view.aod b/neonView/OrderPaid_view/OrderPaid_view.aod
index 542d3cea94c66a40b1468e849272d3994b82d377..67d17a1b948fe34f88e3f50b5fdab14d543d8b4a 100644
--- a/neonView/OrderPaid_view/OrderPaid_view.aod
+++ b/neonView/OrderPaid_view/OrderPaid_view.aod
@@ -3,6 +3,7 @@
   <name>OrderPaid_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod
index f8d657ccffe3e815a7efbb0077952e91eb37e571..bcc6e174805d9a3f9f6d9289302c4141db0d380d 100644
--- a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod
+++ b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod
@@ -3,6 +3,7 @@
   <name>OrderitemEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
index 0e3ad8432133524192cd495cf611c6c0e06572cb..e6eaeeb9f9ee7a2ca057202848bb3b97657f9382 100644
--- a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
+++ b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -57,5 +57,51 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>d07130dd-7727-45cc-8f8c-ae5d2972d21d</name>
+          <entityField>ITEMPOSITION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>ff782187-b2b7-4470-bc38-6b08c4772eec</name>
+          <entityField>PRODUCT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>38b5a413-9f07-44ec-86b0-a4fe45c9b0c8</name>
+          <entityField>QUANTITY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>4998fc65-67b7-465d-9891-808dcf0fe080</name>
+          <entityField>UNIT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>b4470ca6-89e8-421b-bb91-7d32f9c48aa2</name>
+          <entityField>PRICE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0c533079-4b39-4412-8de5-086bf7a08706</name>
+          <entityField>DISCOUNT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e545cb87-e4a5-4154-89b1-1f88a6d59fde</name>
+          <entityField>VAT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9ac44050-ea77-43d2-b0fe-f7ca411b91e7</name>
+          <entityField>OPTIONAL</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>4d4f204a-1c2b-4587-93b9-df03f31da38e</name>
+          <entityField>INFO</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>c44b5bc2-4283-4dca-bd20-bd048e05fe45</name>
+          <entityField>TotalPrice</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod
index f686c4105cecaa42daad5a20520394dac92415ed..70cc47cbd63e649e23277ff71e0c73332b0493fc 100644
--- a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod
+++ b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod
@@ -3,6 +3,7 @@
   <name>OrganisationEditDefaults_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod
index bf0627608ee7b8dc96295b24265ec8512dd3ca1c..81ab662529757a2607ec8dc7421c97a730400b11 100644
--- a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod
+++ b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod
@@ -11,6 +11,11 @@
     </boxLayout>
   </layout>
   <children>
+    <neonViewReference>
+      <name>f2fa0351-15af-4d1c-b7dd-0e42d9c7889f</name>
+      <entityField>SelfDuplicatesUncached</entityField>
+      <view>OrganisationDuplicateEditview_view</view>
+    </neonViewReference>
     <genericViewTemplate>
       <name>Edit</name>
       <editMode v="true" />
diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
index f8c447378a26d517bb9521f3913d82b9ac037d79..960c454e103af41d7e9cf5740ae51aec1b1047f5 100644
--- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
+++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
@@ -42,16 +42,15 @@
     </neonDashletConfiguration>
   </dashletConfigurations>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
       <name>Organisations</name>
       <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
       <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2>
-      <favoriteActionGroup3>exportTemplateActionGroup</favoriteActionGroup3>
       <subtitleField>CUSTOMERCODE_DISPLAY_fieldGroup</subtitleField>
       <entityField>#ENTITY</entityField>
       <linkedColumns>
@@ -92,5 +91,48 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
+      <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>NAME</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>222c9da2-928c-4a93-a7a5-074e1c61a25c</name>
+          <entityField>PICTURE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>1be5029e-f49a-4922-ad38-e5b23082e3a1</name>
+          <entityField>NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d25437c6-059c-456d-b5a1-1fe3f016305b</name>
+          <entityField>CUSTOMERCODE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>83b4c558-1c18-43f3-bf63-562b004092e8</name>
+          <entityField>LANGUAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>2c8450d2-a8a5-49d3-92c5-bf08d32a46db</name>
+          <entityField>STATUS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d134034c-e391-4df3-9205-465d8a390996</name>
+          <entityField>STANDARD_EMAIL_COMMUNICATION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8095afda-d4dc-4b63-badd-4c3b0977d975</name>
+          <entityField>STANDARD_PHONE_COMMUNICATION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>22edc290-b170-4a70-a997-9f168a876158</name>
+          <entityField>ADDRESS_ID</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod b/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod
index f69ce1fd0b79ed5b8c6e4c7021cfc8aebbbc9f64..38481861ae2a8cc4905adeae38f659cf0c1084a2 100644
--- a/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod
+++ b/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod
@@ -3,9 +3,9 @@
   <name>PermissionActionFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <noneLayout>
+    <groupLayout>
       <name>layout</name>
-    </noneLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -18,5 +18,15 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>f94b90bd-4684-476a-9765-d7e468116c88</name>
+          <entityField>ACTION</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod
index a4db8ae43595e7da54ef9d297a606963b19cfa28..9e557d4f2eed1a851d46cd2b4d2525f38304ecb2 100644
--- a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod
+++ b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod
@@ -3,6 +3,7 @@
   <name>PermissionCalendarEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod
index 5ecedcd546cbab3ed67131c473e4889eee8b94d3..8671d21b95c8bc5d16f7bdcc597f4d6a0924cfb7 100644
--- a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod
+++ b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod
@@ -3,6 +3,7 @@
   <name>PermissionCalendarPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <headerFooterLayout>
       <name>layout</name>
diff --git a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod
index dcc9351f309a7beb179453cf183aa62d8b0a3e35..b38046275b1de3d27e9720088053b6cac8503ca9 100644
--- a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod
+++ b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod
@@ -3,6 +3,7 @@
   <name>PermissionDetailEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
diff --git a/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod b/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod
index e3be84842a72340e3668d7d70374b25e5fff20ed..2d45766d2389e16518347c649ea2d2576d91ddc2 100644
--- a/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod
+++ b/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -34,5 +34,30 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>TITLE</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>d1b2e22a-d498-4210-98af-e23af4373a0c</name>
+          <entityField>#ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>55d733cc-e7dc-411b-abf6-7fdd25ee1985</name>
+          <entityField>UID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>00ed2afa-028d-4342-9398-66264b566521</name>
+          <entityField>TITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>dd5ed711-0ed0-4d2a-9569-0b97cb2cb731</name>
+          <entityField>DESCRIPTION</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod b/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod
index 3aff085559a51361708f7d927c514986aa47dff1..6dd2bd1678311ebb3eb3fa9e640485aeb5dad868 100644
--- a/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod
+++ b/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod
@@ -5,9 +5,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -46,5 +46,39 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>703cc584-ce6a-4c8c-8978-82c9860224ae</name>
+          <entityField>#ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>bc7559c2-e9d5-42e9-8b61-a09046acf440</name>
+          <entityField>ENTITY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>28a0ec9d-25b2-4fac-864d-e7938ccf6786</name>
+          <entityField>ACTION_VIEW</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0d03d52c-2771-4f9c-a1a9-f6de6b36b810</name>
+          <entityField>ACTION_CREATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>981ff8df-b75c-49cd-b3f4-62bba6e5965b</name>
+          <entityField>ACTION_READ</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>3e9dfbd8-db73-480d-8a50-12cd18638d4f</name>
+          <entityField>ACTION_UPDATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>f0f6aace-aeae-42bd-be95-8b05f2ff087a</name>
+          <entityField>ACTION_DELETE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod
index d9eced958be10729f65d710bc9ecb20df41d8900..94e88b257d1b94e481ef9fc6350931d736155286 100644
--- a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod
+++ b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod
@@ -3,9 +3,9 @@
   <name>PersonDuplicatesFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -29,5 +29,20 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>PersonOpenClusterDetailActionGroup</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>060c69aa-242a-4141-acd1-b82a76d99521</name>
+          <entityField>CLUSTER_DESCRIPTION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>67458881-0d45-406e-a362-852711b09bd1</name>
+          <entityField>COUNT_DUPLICATES_IN_CLUSTER</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod
index 54c9e8ef1f349e67040751faa140fbd966c029dc..4be76fd469771d104f909dba2d23f4379c4e8218 100644
--- a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod
+++ b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod
@@ -3,6 +3,7 @@
   <name>PersonEditDefaults_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod
index 92c24c81f17e75d96a3a82386bf3e27a778b0020..3de6433f11f0721a7a9d21644f7201c33dd0c364 100644
--- a/neonView/PersonFilter_view/PersonFilter_view.aod
+++ b/neonView/PersonFilter_view/PersonFilter_view.aod
@@ -42,16 +42,15 @@
     </neonDashletConfiguration>
   </dashletConfigurations>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
       <name>Persons</name>
       <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
       <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2>
-      <favoriteActionGroup3>exportTemplateActionGroup</favoriteActionGroup3>
       <hideActions v="false" />
       <iconField>PICTURE</iconField>
       <titleField>NAME_fieldGroup</titleField>
@@ -101,5 +100,53 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1>
+      <favoriteActionGroup2>DuplicateActions</favoriteActionGroup2>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>FIRSTNAME</element>
+        <element>LASTNAME</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>ae9f20e2-8c64-43a7-b3ce-00c3af4974f7</name>
+          <entityField>PICTURE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6281826b-4828-4b81-aef8-faba542f615f</name>
+          <entityField>SALUTATION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>00f4c0d2-5ca1-42c1-a33f-870bba3cf4d1</name>
+          <entityField>TITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>5f145bd4-f9ce-4528-9299-3f5b69247e23</name>
+          <entityField>FIRSTNAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>28e9fee0-d274-4579-b6a6-27063bcf5631</name>
+          <entityField>LASTNAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>f5c45f34-bd67-481f-af42-fb42637f45f9</name>
+          <entityField>ORGANISATION_CONTACTID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>69d95f18-5e7e-4f0f-ab37-86392537ccec</name>
+          <entityField>STANDARD_EMAIL_COMMUNICATION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>bb6ed3fc-4221-4c13-98e2-05d51f5adc43</name>
+          <entityField>STANDARD_PHONE_COMMUNICATION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>23230997-0da6-43b2-a665-b4c96c29c61d</name>
+          <entityField>ADDRESS_ID</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod b/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod
index 4234df3eedcf68a5af98c10d7339a564e34ecf21..3e106ebb254d6d7ae3657a443f0d6ca9241484f3 100644
--- a/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod
+++ b/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod
@@ -3,9 +3,9 @@
   <name>PrivatePersonFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -22,5 +22,19 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>8ef2af01-9e23-4d54-a814-f1941ec1e422</name>
+          <entityField>FIRSTNAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>60074b46-841e-406f-a2ef-4a08724b7d69</name>
+          <entityField>LASTNAME</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod
index 387d74f3285e1eb59e30495f882b8a95ab122621..6048f3f0bdfefff3c4b9228280e9fbd8580946eb 100644
--- a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod
+++ b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod
@@ -3,6 +3,7 @@
   <name>Prod2ProdEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/ProductFilter_view/ProductFilter_view.aod b/neonView/ProductFilter_view/ProductFilter_view.aod
index 862edca87f4d9ee84da3383de365141f2f9e3c58..3f86ddd7ed38a5909124edfb0004546921b8305e 100644
--- a/neonView/ProductFilter_view/ProductFilter_view.aod
+++ b/neonView/ProductFilter_view/ProductFilter_view.aod
@@ -3,6 +3,7 @@
   <name>ProductFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
+  <isOverlay v="false" />
   <dashletConfigurations>
     <neonDashletConfiguration>
       <name>AllProductsDashlet</name>
@@ -25,11 +26,21 @@
     </neonDashletConfiguration>
   </dashletConfigurations>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
+    <tilesViewTemplate>
+      <name>Tiles</name>
+      <iconField>#IMAGE</iconField>
+      <titleField>PRODUCTNAME</titleField>
+      <subtitleField>GROUPCODEID</subtitleField>
+      <descriptionField>STATUS</descriptionField>
+      <tilePresentation>PORTRAIT</tilePresentation>
+      <entityField>#ENTITY</entityField>
+      <isCreatable v="true" />
+    </tilesViewTemplate>
     <tableViewTemplate>
       <name>Products</name>
       <titleField>PRODUCTNAME</titleField>
@@ -69,5 +80,42 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>PRODUCTNAME</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>3b2cd2ab-4540-4b74-a154-932963400b98</name>
+          <entityField>#IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>a56f5566-0dbc-4d7c-bbe6-e089c8bb7528</name>
+          <entityField>PRODUCTCODE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>ae82c6c0-6c34-4adf-b6ea-e8a1bdc7dce0</name>
+          <entityField>PRODUCTNAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>52784020-0df7-4059-b732-13451e2378d9</name>
+          <entityField>GROUPCODEID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>967979d0-859b-40c1-921d-3ca243cb2509</name>
+          <entityField>STATUS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e49eaac4-e86d-4134-9abd-f261dbf3ff97</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>311331ce-d63c-4f4b-be9c-342f7ca69990</name>
+          <entityField>UNIT</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod
index 7f6a3df722fe978f510467df7e1740db369ca8d9..f2c6e8dac43e719b5612feb930cdb341f50861df 100644
--- a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod
+++ b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod
@@ -4,6 +4,7 @@
   <title>Price list</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
index 10cc59f7fe3da242256e6e224acc5916d2c4a82b..f19f9c4d30be0d8b0db3961e302d3af219e437cb 100644
--- a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
+++ b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -55,5 +55,51 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>ff01f68a-48e0-4c80-8055-b7fef22e7f8d</name>
+          <entityField>IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>1a6070c7-b66b-4835-a90d-3c5b2057f2ad</name>
+          <entityField>PRODUCT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>838afd20-a737-47c5-8caf-0ff7ea81d8d2</name>
+          <entityField>PRICELIST</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d726c669-878d-488e-9323-426ee8e16deb</name>
+          <entityField>VALID_FROM</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>27fb5553-c75e-417b-a965-7506cb1da0f8</name>
+          <entityField>VALID_TO</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>cd3d8e9c-9c12-4406-83e8-07100f49486b</name>
+          <entityField>PRICE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0ca0e585-c5c8-4b3e-9024-7d38770a768a</name>
+          <entityField>CURRENCY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9f4ebc5e-41e3-4a0a-af28-8bfc08a597b7</name>
+          <entityField>BUYSELL</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>069323a2-d8b4-4046-99d3-747aeb86f729</name>
+          <entityField>FROMQUANTITY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>272f1c87-e5d1-44c4-81df-4e4c5d455d24</name>
+          <entityField>VAT</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod
index 125b8e68227eb55b31d980298602ea778117f519..9598c3420b1a7b9b9a6128c50848a370f9f61a62 100644
--- a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod
+++ b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod
@@ -11,6 +11,11 @@
     </boxLayout>
   </layout>
   <children>
+    <neonViewReference>
+      <name>adf71384-2c12-401b-a3aa-89ed23e757c2</name>
+      <entityField>OrgAndPersDuplicates</entityField>
+      <view>AnyContactDuplicates_view</view>
+    </neonViewReference>
     <genericViewTemplate>
       <name>GeneralData</name>
       <editMode v="true" />
diff --git a/neonView/RoleFilter_view/RoleFilter_view.aod b/neonView/RoleFilter_view/RoleFilter_view.aod
index 40fcb8fe3ca4b97ddbfdf27d1993da61872d525c..724b573a3a35ae1ab216c5d1f6a6a525fd3808a1 100644
--- a/neonView/RoleFilter_view/RoleFilter_view.aod
+++ b/neonView/RoleFilter_view/RoleFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -46,5 +46,38 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>ROLETITLE</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>d6624366-6f57-4c81-b2ef-4776297b94a7</name>
+          <entityField>#ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>27d8023d-2867-4e3b-8586-33e2e91086b9</name>
+          <entityField>ROLENAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9698900e-d897-4bdd-a3ef-5eb5857b5052</name>
+          <entityField>ROLETITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9dd955e3-e4dd-4d3b-aedd-1261ab77f947</name>
+          <entityField>ROLETYPE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9f64b198-dc4a-46ba-80fa-9e8e6f15298b</name>
+          <entityField>USERCOUNT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>46a68706-86d0-43c4-8d66-2f1d8ccf94b6</name>
+          <entityField>ROLEDESCRIPTION</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
index eb772b2550d92d9a193420a6ba3e94b7b38f98e9..ba76e0e4a28920348d217127cf31a6d5fe743cac 100644
--- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
+++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
@@ -44,9 +44,9 @@
     </neonDashletConfiguration>
   </dashletConfigurations>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -99,5 +99,46 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>PROJECTTITLE</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>c3c8cd94-5bb4-46bb-a61b-fec67fcc4841</name>
+          <entityField>IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>90e4ddd7-1e1c-48da-a347-adadf075d9f0</name>
+          <entityField>PROJECTCODE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9b7b8a15-4a8d-41cb-bb46-3b1ed573dc6e</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>392b25fe-e7ce-463e-ae92-af426d523c2a</name>
+          <entityField>PROJECTTITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>745d6192-4817-49e6-8cb2-8470c9c25f4d</name>
+          <entityField>STARTDATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>a30a05a8-cb36-46a7-8e03-d5d186fa2498</name>
+          <entityField>ENDDATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d1967168-bbec-4124-a526-e544388b4904</name>
+          <entityField>PHASE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e1fb4cd5-8b56-4564-a1ad-24c3b95a3335</name>
+          <entityField>STATUS</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
index bde1614e741833117ed53d0829ce50e526c80cfa..056fcc4af211527fda469af4fa6ae96e8a8abdd9 100644
--- a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
+++ b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
@@ -3,6 +3,7 @@
   <name>SalesprojectSourceEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
index 4bf0e5707146e11537345675169638a223bfc9d5..6bac5280054d1d3eb7fc0bd1da08593013fc6f23 100644
--- a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
+++ b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -36,5 +36,27 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>d5894f2f-9068-4228-9b2e-1928d9348c49</name>
+          <entityField>ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d761beb9-f626-422f-906a-cd06470c9162</name>
+          <entityField>ENTRYDATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0107bb1a-a372-4212-8170-1b5670d910d3</name>
+          <entityField>TOUCHPOINT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>c0a07fac-6265-4fb8-acc3-90571930ced2</name>
+          <entityField>INFO</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/SalutationEdit_view/SalutationEdit_view.aod b/neonView/SalutationEdit_view/SalutationEdit_view.aod
index ebbb601e04d5e06c43c046a6eddce6deb667c789..3179d62093fcc07b1f389b13d5cb250ba2706d28 100644
--- a/neonView/SalutationEdit_view/SalutationEdit_view.aod
+++ b/neonView/SalutationEdit_view/SalutationEdit_view.aod
@@ -3,6 +3,7 @@
   <name>SalutationEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
diff --git a/neonView/SalutationFilter_view/SalutationFilter_view.aod b/neonView/SalutationFilter_view/SalutationFilter_view.aod
index 9c60dce1f71f932d1fc696e1b470e6b01f70caac..d424e3369026a46a995b7a418cbf838ac36568c2 100644
--- a/neonView/SalutationFilter_view/SalutationFilter_view.aod
+++ b/neonView/SalutationFilter_view/SalutationFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -46,5 +46,39 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>359d3b3e-9a07-43ca-8eaa-53f8d6b77f68</name>
+          <entityField>ISOLANGUAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0f146186-2fc1-4031-a85b-e50e75d06e6d</name>
+          <entityField>SALUTATION_TEXT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>1b878c19-86d6-45e3-9b96-b7afe6f2697d</name>
+          <entityField>TITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>378fbe99-2a87-4db2-a973-fa4c1513d611</name>
+          <entityField>HEADLINE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>5860e6bb-d8d0-43b6-bbc6-d04703cdad4c</name>
+          <entityField>LETTERSALUTATION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e123d84b-31fe-4a87-b16e-acda3e86a450</name>
+          <entityField>SEX</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>08857e02-fae9-4603-9c22-c2033dacb5bc</name>
+          <entityField>SORT</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod
index 893f8b29c5171616eb0a3cf698dcc096f7602291..b3b8d67e1ba188142d23e3795d039485844f397b 100644
--- a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod
+++ b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod
@@ -3,6 +3,8 @@
   <name>SerialLetterAddRecipientsEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <isOverlay v="false" />
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
@@ -12,7 +14,9 @@
     <genericViewTemplate>
       <name>Generic</name>
       <editMode v="true" />
+      <hideEmptyFields v="false" />
       <entityField>#ENTITY</entityField>
+      <informationField>recipientCountMessage</informationField>
       <fields>
         <entityFieldLink>
           <name>c289afee-ed44-48d7-8f2a-50c1bffb886e</name>
@@ -31,5 +35,12 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <actionsViewTemplate>
+      <name>ContinueActions</name>
+      <actions>
+        <element>addParticipants</element>
+      </actions>
+      <entityField>#ENTITY</entityField>
+    </actionsViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod b/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod
index 99ae318ad39b5c4eab650f9c2ce798c56531e5bc..b95fda0d5aa82fbe89860b1c2df7197bdfa39a30 100644
--- a/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod
+++ b/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -38,5 +38,34 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>TITLE</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>cae0d686-5109-4106-9b35-421e79e265db</name>
+          <entityField>ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>a5a9f4f1-14ad-4997-94c7-f76de7c5f8da</name>
+          <entityField>TITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>dc1a061a-95fa-499e-aee4-9b49aed28cfc</name>
+          <entityField>STATUS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>ec667f9a-65e3-482c-a459-87545b22af2a</name>
+          <entityField>DOCUMENTTEMPLATE_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>88b074e6-587a-477f-97d6-fde128cae267</name>
+          <entityField>DESCRIPTION</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/StockFilter_view/StockFilter_view.aod b/neonView/StockFilter_view/StockFilter_view.aod
index 8d3f13f1ae79f0d6259f88f95ed8fb85566b5380..cad57413e4d53e58c0299304425d869b393aaa75 100644
--- a/neonView/StockFilter_view/StockFilter_view.aod
+++ b/neonView/StockFilter_view/StockFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -40,5 +40,35 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>de16c7a3-4b19-4c5d-8461-bad53e443349</name>
+          <entityField>IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>0fc3771b-7c0f-47fe-bde3-f906bf5a6dcf</name>
+          <entityField>WAREHOUSE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6299bef1-3e71-4b9a-86b2-a158b29f5e26</name>
+          <entityField>ENTRYDATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>5671f232-2e76-48da-9ba2-9ee6ed76db3e</name>
+          <entityField>IN_OUT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>c7a6d186-fa87-4a20-bbe1-106add5e86eb</name>
+          <entityField>QUANTITY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>5ae998fc-1353-4f66-a455-34bcc34aa5df</name>
+          <entityField>REFNUMBER</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod
index 97a66920520249d66cfd7f70dc3c81494be07e3a..ed3af83d74e6237cd4298704707bde0e2f485502 100644
--- a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod
+++ b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod
@@ -46,7 +46,6 @@
     </timelineViewTemplate>
     <tableViewTemplate>
       <name>TicketsTable</name>
-      <favoriteActionGroup1>tableActions</favoriteActionGroup1>
       <iconField>TASK_PRIORITY_ICON</iconField>
       <titleField>TASK_SUBJECT</titleField>
       <subtitleField>TASK_STATUS</subtitleField>
@@ -95,5 +94,50 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>TASK_SUBJECT</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>32792588-0db9-4a67-a9e8-e1ba0c78f109</name>
+          <entityField>TASK_PRIORITY_ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>25e8c98f-1cd9-49a8-9925-f0e9e8557b74</name>
+          <entityField>TASK_STATUS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>771e21d6-52c8-41a5-8076-dbb4968a6b75</name>
+          <entityField>TASK_SUBJECT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>69f1d750-e60d-449c-a106-d5a5fc2dab3a</name>
+          <entityField>TASK_REQUESTOR_CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>76ee953d-6dc8-491e-8fab-9cc51a3c331e</name>
+          <entityField>TASK_EDITOR_CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>366e79da-a889-4394-b2e1-34907001dd77</name>
+          <entityField>TASK_PRIORITY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6ff5f84a-295c-484b-8178-5110a907db05</name>
+          <entityField>TASK_MATURITY_DATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>7ec4261e-b1de-4a99-bc5b-424171cd1fc7</name>
+          <entityField>TASK_PROGRESS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>87f10c70-f1cd-4733-ad35-fba053450b0f</name>
+          <entityField>TASK_DESCRIPTION</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod
index d0b539575566ffe660c133db915bbcdba2e3a8f3..83268457a49e851f0329c787d3b4e498adb9a620 100644
--- a/neonView/TaskFilter_view/TaskFilter_view.aod
+++ b/neonView/TaskFilter_view/TaskFilter_view.aod
@@ -90,5 +90,50 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>SUBJECT</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>5f7f1277-f658-4322-afac-f8e22810db68</name>
+          <entityField>PRIORITY_ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e27c8c20-a61b-4d86-91f1-7f2a45c6368c</name>
+          <entityField>STATUS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>51d3032a-af2a-42c0-a467-4cf31446f537</name>
+          <entityField>SUBJECT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8cbcf70f-f108-417a-8cbd-7ed681cca45b</name>
+          <entityField>REQUESTOR_CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>b6f0a3f3-5ea8-427a-a02a-4d999e344e07</name>
+          <entityField>EDITOR_CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>834c9424-3ad3-474d-90b2-7eb879e3ee86</name>
+          <entityField>PRIORITY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>38aa316c-21ba-4ea6-9e6b-43b63fa24382</name>
+          <entityField>MATURITY_DATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8c3b89a3-93ea-4d55-ac8d-4a2525ae938e</name>
+          <entityField>PROGRESS</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>dc66b99a-1387-425a-ad2b-3ab44ee5234a</name>
+          <entityField>DESCRIPTION</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod
index 4589f7054e06a30aea9734e2202a9109e48547e1..f9e1e3aa8a206dd68d46341407e4d7091065f3e3 100644
--- a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod
+++ b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod
@@ -3,9 +3,9 @@
   <name>TaskLinkFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -23,5 +23,19 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>e11fec33-a836-484a-b2ae-4cad3d7a2dcd</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>203fb87c-34c3-41dc-a33a-f023f91bc025</name>
+          <entityField>OBJECT_ROWID</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod
index 9fd5eb0d8ee263ac5948e8be89a376c1e80d1e9e..231020b4962ac1c21622fe25641624037f7c1caa 100644
--- a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod
+++ b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod
@@ -3,6 +3,7 @@
   <name>TimetrackingEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
index c07ce5696483d9c9b284f80d52fadaf3842f4e6d..d56fbc0ca0b5edfc59b07f8a84cb7ee26af64943 100644
--- a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
+++ b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
@@ -5,9 +5,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -36,5 +36,27 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>314436db-0a9e-4113-ab70-7922a7a03ab5</name>
+          <entityField>TRACKINGDATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>b1551ffe-f551-461f-9475-804da440507c</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9c11f5e2-3e7a-4383-8fa7-c816ca61067b</name>
+          <entityField>TRACKINGMINUTES</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>eabe811c-4349-4974-bd18-9679d01836f0</name>
+          <entityField>INFO</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod
index db6c8958cc8ef6b07b0eef1bfc2f956ea3e4d0d7..6b4b8b73154e60819b752b795acd9e93de7f23b5 100644
--- a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod
+++ b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod
@@ -18,15 +18,14 @@
     </neonDashletConfiguration>
   </dashletConfigurations>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
       <name>mailsTable</name>
       <favoriteActionGroup1>ToActivity_ActionGroup</favoriteActionGroup1>
-      <favoriteActionGroup2>DownloadMail_ActionGroup</favoriteActionGroup2>
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
@@ -51,5 +50,32 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>ToActivity_ActionGroup</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>1d197952-0732-4af2-a41e-7d490c679762</name>
+          <entityField>#IMAGE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9c4aced8-9013-4164-95f5-84dcd40d6659</name>
+          <entityField>SUBJECT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>57036eee-6bd4-411d-a751-c1b04c11e0f0</name>
+          <entityField>SENTDATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>80a3a730-d446-4755-9d25-e57f71ddb157</name>
+          <entityField>SENDER</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>294022d8-e47b-4190-9149-f4343d746975</name>
+          <entityField>RECIPIENTS</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod
index 480dac8ed6d457278c9be62a1945aee8bcbc7711..dec9ecc2091d723dd1c8cc91780346fe776c9b53 100644
--- a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod
+++ b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod
@@ -4,6 +4,7 @@
   <title>Link e-mail addresses to contacts</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <headerFooterLayout>
       <name>layout</name>
diff --git a/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..2625a04f4de17ef81b06ad3d372dc755085180ce
--- /dev/null
+++ b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6">
+  <name>UsersettingsEdit_view</name>
+  <title>Settings</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Edit</name>
+      <editMode v="true" />
+      <hideEmptyFields v="false" />
+      <entityField>#ENTITY</entityField>
+      <isEditable v="true" />
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod b/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod
index 36b89a250e33f257ffba7003cb5a65c36524f87a..d11ac479a593f7dea6bd16945f2c04f469f68113 100644
--- a/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod
+++ b/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod
@@ -3,6 +3,7 @@
   <name>VisitPlanEmployeeWeekEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod b/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod
index 84584b718e513b36cea457f6e6fd19a00751b40d..4eab72067414457b5e31a3b9ce0358d9b3d43a48 100644
--- a/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod
+++ b/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -51,5 +51,47 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>555cdb41-0bad-40e8-afad-f389ff0a9910</name>
+          <entityField>icon</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>adc127e2-1093-40ef-a3ec-efdc416c062d</name>
+          <entityField>WEEK</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6a11aa05-3879-46f2-9944-2006d9caf928</name>
+          <entityField>YEAR</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>bb232878-5316-4b8f-9c0e-02833e588544</name>
+          <entityField>PERSON_ID</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8db139d9-7dd7-4ea2-9c73-1c0accec2ef5</name>
+          <entityField>entriescount</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>58679095-36c2-4330-80cc-541a05e8b3cb</name>
+          <entityField>entriesplannedcount</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>80dcac4b-1104-4399-bd43-9874f3060d7b</name>
+          <entityField>entries_appoint_count</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e34666e8-c1d7-431c-912e-f9bfaa2e94f8</name>
+          <entityField>entries_activity_count</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>08fb15e6-6b79-45b2-8133-d2ab0f7ddea6</name>
+          <entityField>INFO</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod
index 3e4bee135d241994a1210b5afbef05d6bf67a818..7c1d4abf3b4166c10b31c6b3caed3362dff0bba5 100644
--- a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod
+++ b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod
@@ -3,6 +3,8 @@
   <name>VisitPlanEmployeeWeekPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <isOverlay v="false" />
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <headerFooterLayout>
       <name>layout</name>
diff --git a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod
index 69433069c2a760ea96f1919145fc9ac450b2ea29..950d8706d14ac77e9e0f45694cd50f8b4abb9fc1 100644
--- a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod
+++ b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod
@@ -3,6 +3,7 @@
   <name>VisitPlanEntryEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod
index 3f6a787f4a8bf4bc1faad535b28ccce8aef50778..d58550498e10e16ee96233d559788ae0c579063b 100644
--- a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod
+++ b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod
@@ -3,6 +3,7 @@
   <name>VisitRecommendationEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod
index fd33a5b5de963a569ebacd15c97033f1dd756857..c841039215a5b2ef2c4b23d68650e385f56a3bcf 100644
--- a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod
+++ b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -47,5 +47,40 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>newEntryGroup</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>297bae8e-4d8c-4fbf-90fb-240369d48ff9</name>
+          <entityField>PRIORITY_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>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8f02f53e-8e60-4c71-9fb3-5a4b32ff0776</name>
+          <entityField>PRIORITY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>df091097-bd7a-413f-8737-b065ac9398c3</name>
+          <entityField>PRIORITY_SOURCE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>c2ca0e43-a94f-460b-8a42-4bc3a3755213</name>
+          <entityField>DUE_DATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>2fa2eb56-28ec-4bdc-a1ff-1ca0e26ab407</name>
+          <entityField>INFO</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod
index d121c250b33e093a8eac9491bdb3fe90e6ec8758..d0aaeebbaa361abc7c40f805605710e08afe8167 100644
--- a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod
+++ b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod
@@ -3,6 +3,8 @@
   <name>WorkflowDefinitionEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <isOverlay v="false" />
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
@@ -15,17 +17,13 @@
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
-          <name>bfec3b64-2cc5-4e51-b321-6d898ddaca9e</name>
+          <name>42a373cb-956d-4c0a-8a4e-ece1b64c9a95</name>
           <entityField>FILEUPLOAD</entityField>
         </entityFieldLink>
         <entityFieldLink>
           <name>88c2c956-966a-4ad9-b744-ccb729b024bc</name>
           <entityField>KEY</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>14bd4671-d876-430e-8574-277118395ff0</name>
-          <entityField>ISACTIVE</entityField>
-        </entityFieldLink>
       </fields>
     </genericViewTemplate>
   </children>
diff --git a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod
index 595adfca1ccb73785d2dd9a9f66da399de710608..a4e33a131b80ffae09321355f1d9a5f6e4d9f621 100644
--- a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod
+++ b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod
@@ -46,5 +46,31 @@
       <entityField>#ENTITY</entityField>
       <isCreatable v="true" />
     </tilesViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup1>tableActions</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>NAME</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>755d3865-3c89-472e-8e2b-20c4daac5062</name>
+          <entityField>NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>cfce2402-216d-4368-8b25-d8c7193bb0ad</name>
+          <entityField>CATEGORY</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>c6adcb39-3456-4dfc-b8a6-833598a7a63f</name>
+          <entityField>VERSION</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>7bdd8cca-92fa-4bd8-8ad8-92d0d7d0d159</name>
+          <entityField>ISACTIVE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod
index 4262fe6771f9726d021ba92d834d13feabf867b8..de087d4217ef8d9c72ab6850fff3f142e215cb04 100644
--- a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod
+++ b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod
@@ -13,7 +13,9 @@
       <iconField>DIAGRAM</iconField>
       <titleField>NAME</titleField>
       <subtitleField>KEY</subtitleField>
+      <favoriteAction1>editWorkflow</favoriteAction1>
       <entityField>#ENTITY</entityField>
+      <isEditable v="false" />
     </cardViewTemplate>
     <genericViewTemplate>
       <name>Generic</name>
@@ -33,10 +35,6 @@
           <name>9ae7bada-afb2-48d4-9aa0-b2bd5bd17379</name>
           <entityField>ISACTIVE</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>013085a5-c833-42ee-b907-aa268edb1ea3</name>
-          <entityField>CATEGORY</entityField>
-        </entityFieldLink>
         <entityFieldLink>
           <name>6b06cf99-37b1-4901-a502-81bb590faa92</name>
           <entityField>DESCRIPTION</entityField>
diff --git a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod
index fa2aa1afdf42ed3a758511132e6d0ff66324c5a3..ac1fc2fe5b40ed6fae98393f22b27d7f48a5a679 100644
--- a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod
+++ b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod
@@ -3,6 +3,7 @@
   <name>WorkflowInstanceEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod
index 4ec2fb81fea717b9d06bcf4ba327efe295cae15c..4a851422779112622824df0992f1cea32e752166 100644
--- a/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod
+++ b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod
@@ -45,5 +45,34 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>NAME</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>ad732392-8a70-43e9-8f2f-f155788aed7f</name>
+          <entityField>ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>60130614-a984-49e8-9cad-5b303e9eb7a4</name>
+          <entityField>NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>9acc2a53-4d57-47c5-b455-0a1057113367</name>
+          <entityField>START_TIME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8ebbf540-663f-44a4-9442-d5cb670ecb25</name>
+          <entityField>ISACTIVE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>3ab45851-129f-419c-9580-cc0a0badba03</name>
+          <entityField>PROCESSDEFINITION_VERSION</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod
index fef72a84bd140b51bc7a321ae61f8a5ec3b7b085..ff969c13fd5106db0abe14c18565a1da7b8d87d6 100644
--- a/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod
+++ b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod
@@ -44,5 +44,31 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>44acbe41-b06c-45e9-894e-a5690eb2b3f6</name>
+          <entityField>ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>301b6f7e-e54a-4d67-a3e0-02af753c2dca</name>
+          <entityField>ACTIVITY_NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>15a20f1b-d940-4390-859c-32a1bed53037</name>
+          <entityField>ACTIVITY_TYPE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>913383c1-2f71-4846-bfad-44e29cc31788</name>
+          <entityField>START_TIME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>bd3d9f6d-7733-43c2-be69-5fa4620c32f3</name>
+          <entityField>END_TIME</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod b/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b03c3813ded7ad328d49edd4da3f22ecd3656dac
--- /dev/null
+++ b/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6">
+  <name>WorkflowModelEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>SMALL</size>
+  <isOverlay v="true" />
+  <overlayOrientation>PORTRAIT</overlayOrientation>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Generic</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>9dfd354c-7745-4b84-a69a-34308e9186f0</name>
+          <entityField>NAME</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>70c10b5d-3058-45b8-9a24-69a91259f058</name>
+          <entityField>KEY</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>86472557-ab8c-475c-8e83-c9423e5125b4</name>
+          <entityField>DESCRIPTION</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod b/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..051bb98fe84d47bcf0d18813b114e93eedf42076
--- /dev/null
+++ b/neonView/WorkflowModelLookup_view/WorkflowModelLookup_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.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6">
+  <name>WorkflowModelLookup_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>1860eca1-6350-4071-b36a-c57397c60a24</name>
+          <entityField>NAME</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>187c1d79-44d9-4028-8c1a-5f7f3df6501b</name>
+          <entityField>KEY</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>dc760770-4bd5-4ba8-babf-b7c2965200c3</name>
+          <entityField>DESCRIPTION</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod
index 145d17fe5d0dd84aff2592f565cb03f042c831fd..43ae59380522779a39c44e344ba411241ee7fe88 100644
--- a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod
+++ b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod
@@ -3,6 +3,7 @@
   <name>WorkflowSignalEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <noneLayout>
       <name>layout</name>
diff --git a/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod b/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod
index 15874fe38d83022e49d356df3f2474b6061bf7a7..3bfbce1fac88a64f8fb7643d021bd282331e970a 100644
--- a/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod
+++ b/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod
@@ -4,9 +4,9 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -27,5 +27,23 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>d15db403-5322-4eff-88f4-9e2dede2cf8c</name>
+          <entityField>SIGNAL_NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>3d860219-151f-45d4-833a-bfbdb2f6c4d8</name>
+          <entityField>TRIGGER_EVENT</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>3b822cbd-18c6-4e07-8973-6303b75613d2</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod b/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod
index cdac1faccf7f16acf27044fd57f434dea9502e3c..9c98d1fe51548d2c24a3f1e415cf83a1de05e69d 100644
--- a/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod
+++ b/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod
@@ -3,9 +3,9 @@
   <name>WorkflowStartConfigFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -24,5 +24,19 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>4874074f-80af-4e99-8449-2a4dc4428360</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>d479a082-ea95-40c6-81a2-9318fcf9ce98</name>
+          <entityField>TRIGGER_EVENT</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod
index e9ea47e30645195dbcd33fab0fe84b5f8559be1e..e767b57ecab4a5860104fa431687defd3a610220 100644
--- a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod
+++ b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod
@@ -47,5 +47,34 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>NAME</element>
+      </linkedColumns>
+      <columns>
+        <neonTreeTableColumn>
+          <name>ecebb948-037e-4fc2-a9f9-13a4a9e5cf0d</name>
+          <entityField>ICON</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>df5789cd-7513-4612-a1d9-bee5a298ad41</name>
+          <entityField>NAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>378bee17-fb36-4e45-a965-170990ab16f0</name>
+          <entityField>CREATE_TIME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>911011cd-af7a-42d3-be9a-94ccdcba2fc9</name>
+          <entityField>DUEDATE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>5831ff31-f49e-45c5-85ee-5bda027e3eb7</name>
+          <entityField>ASSIGNEE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod
index f78e19032c0ae565ce7efb8fbe2aa292e4e98c2c..e25ada40292a5745c12a15e959f0f61700355c2b 100644
--- a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod
+++ b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod
@@ -3,6 +3,7 @@
   <name>WorkflowTaskForm_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod
index 494564da2ddbaf8fd7c527db312dc1640550ea1f..bf61df8ebf51aed671e004a5ee13daa2663b5512 100644
--- a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod
+++ b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod
@@ -3,6 +3,7 @@
   <name>WorkflowTaskPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <headerFooterLayout>
       <name>layout</name>
diff --git a/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod b/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod
index 6e6b3fe111c6c9e1414c8cafa00bc452c083800c..6de8d6e623ef5a4ee8afe8d150bf74c01b486bcd 100644
--- a/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod
+++ b/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod
@@ -3,9 +3,9 @@
   <name>WorkflowVariableValueFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -25,5 +25,19 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>Treetable</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>3f579cbb-c0d9-4b3f-8b62-3a77bae3d239</name>
+          <entityField>VARIABLENAME</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>f34bf572-66e2-4269-a75d-4bbcf678208c</name>
+          <entityField>VARIABLEVALUE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/campaignParticipantMessage_view/campaignParticipantMessage_view.aod b/neonView/campaignParticipantMessage_view/campaignParticipantMessage_view.aod
index fd667347c2afdca12346e7f189980fdf17c1f22e..f11aa26b7622597f92bbebfaa15af9b47767ff8e 100644
--- a/neonView/campaignParticipantMessage_view/campaignParticipantMessage_view.aod
+++ b/neonView/campaignParticipantMessage_view/campaignParticipantMessage_view.aod
@@ -11,6 +11,7 @@
     <genericViewTemplate>
       <name>Message_view</name>
       <hideLabels v="true" />
+      <hideEmptyFields v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
index 4559d69c44f92bde5d2cfc3d3a79436859a1c573..5a3ae3b71b41c6205c08d1b791638ac250219ccc 100644
--- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
+++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
@@ -100,7 +100,7 @@
     <customStringProperty>
       <name>workflow.modelerUrl</name>
       <description></description>
-      <property>http://localhost:8080/flowable-modeler/#/processes</property>
+      <property>http://localhost:8080/flowable-modeler/</property>
     </customStringProperty>
     <customBooleanProperty>
       <name>ai.salesprojectProbability</name>
diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js
index 9c667f3770c0aeab7853b9d8ad6bfae02981b5b1..5b093fee0e2d95cd7ccb60bf5851513fcc3f7e74 100644
--- a/process/AttributeFilter_lib/process.js
+++ b/process/AttributeFilter_lib/process.js
@@ -222,7 +222,7 @@ AttributeFilterExtensionMaker.getFilterCondition = function(pObjectType, pFilter
             condition = newWhere(["AB_ATTRIBUTERELATION", dbField], SqlUtils.escapeVars(pRawValue), pOperatorName == "=" ? SqlBuilder.EQUAL() : SqlBuilder.NOT_EQUAL());
         else
         {
-            condition = pCondition.replace(pColumnPlaceholder, dbField, "g");
+            condition = StringUtils.replaceAll(pCondition, pColumnPlaceholder, dbField);
         }
         
         //a SqlBuilder.IN() in a newWhere is not used here since the subselect can contain a placeholder
diff --git a/process/Bulkmail_lib/process.js b/process/Bulkmail_lib/process.js
index 81a3986c28047db9fa60e6ba408283818ee67146..ede9be7097f894fb89139076e79f0c1305f4b015 100644
--- a/process/Bulkmail_lib/process.js
+++ b/process/Bulkmail_lib/process.js
@@ -162,7 +162,7 @@ BulkMailUtils.openAddRecipientView = function (pContactIds)
     var params = {
         "ContactIds_param" : pContactIds
     };
-    neon.openContext("BulkMailAddRecipients", "BulkMailAddRecipientsEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+    neon.openContext("BulkMailAddRecipients", "BulkMailAddRecipientsEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
 }
 
 /**
@@ -431,7 +431,7 @@ SerialLetterUtils.openAddRecipientView = function (pContactIds)
     var params = {
         "ContactIds_param" : pContactIds
     };
-    neon.openContext("SerialLetterAddRecipients", "SerialLetterAddRecipientsEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+    neon.openContext("SerialLetterAddRecipients", "SerialLetterAddRecipientsEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
 }
 
 /**
diff --git a/process/Campaign_lib/process.js b/process/Campaign_lib/process.js
index 76a6c808995051fdfa248ab0177b7b3e8fb4a7bd..b38ab24f96c87d6895583dcb9f2b787ea503fd34 100644
--- a/process/Campaign_lib/process.js
+++ b/process/Campaign_lib/process.js
@@ -693,5 +693,5 @@ _CampaignUtils._openAddParticipantContext = function(pContext, pTargetDataExpres
     params["isUpdate_param"] = false;
     params["dataSourceTableName_param"] = pSourceTableName;
     
-    neon.openContext(pContext, null, null, neon.OPERATINGSTATE_NEW, params);
+    neon.openContext(pContext, "CampaignAddParticipantsEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
 }
\ No newline at end of file
diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js
index 3c5b6496b4e3f1cef3bea17b27c212dc43761af4..ae3c193044abef89337c2be2e823dc4020ce1008 100644
--- a/process/DocumentTemplate_lib/process.js
+++ b/process/DocumentTemplate_lib/process.js
@@ -23,6 +23,7 @@ import("Keyword_lib");
 import("Placeholder_lib");
 import("Email_lib");
 import("MimeType_lib");
+import("Util_lib");
 
 /**
  * Object for working with document templates, holds the content and type of the template.
@@ -105,8 +106,9 @@ DocumentTemplate.prototype._resolveEmbeddedTemplate = function ()
         });
 
         // Note: some embedded templates in embedded templates may be replaced, but this is NOT SUPPORTED, as it only works if the second template is not already replaced at that time.
-        placeholders.forEach(function(pPlaceholder) {
-            replacedContent = replacedContent.replace(PlaceholderUtils.formatPlaceholder(pPlaceholder[0]), pPlaceholder[1], "g")
+        placeholders.forEach(function(pPlaceholder) 
+        {
+            replacedContent = StringUtils.replaceAll(replacedContent, PlaceholderUtils.formatPlaceholder(pPlaceholder[0]), pPlaceholder[1], "g");
         }, this);
         
         this._subtemplatedContent = util.encodeBase64String(replacedContent);
@@ -522,7 +524,7 @@ TemplateHelper._replaceText = function (pText, pReplacements, pSpecialCharFilter
     pText = pText.replace(new RegExp(PlaceholderUtils.getRegexpMatchAll(pSpecialCharFilterRegexpPart), "gi"), function(pFound) {
         let foundFiltered = pFound.replace(new RegExp(pSpecialCharFilterRegexpPart, "gi"),"");
         return pReplacements[foundFiltered] ? pReplacements[foundFiltered] : pFound;
-    }, "gi")
+    });
 
     return pText;        
 }
@@ -669,7 +671,7 @@ TemplateHelper._getReplacedODT = function (pTemplate, pReplacements, pTableData)
                  */
                 for (let placeholder in replacements)
                 {
-                    currentBody = currentBody.replace(placeholder,
+                    currentBody = StringUtils.replaceAll(currentBody, placeholder, 
                         replacements[placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&amp;"), "ig");
                 }
                 
@@ -709,7 +711,7 @@ TemplateHelper._getReplacedODT = function (pTemplate, pReplacements, pTableData)
             var styles = util.decodeBase64String(pack.getFromZip(pODTFileName, "styles.xml"));
             for (let placeholder in pReplacements[0])
             {
-                styles = styles.replace(placeholder,
+                styles = StringUtils.replaceAll(styles, placeholder,
                     pReplacements[0][placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&amp;"), "ig");
             }
             pack.addToZip(pODTFileName, "styles.xml", util.encodeBase64String(styles));
@@ -772,7 +774,7 @@ LetterUtils.openNewLetter = function (pContactId, pComingFrom)
         "ContactId_param" : pContactId,
         "ComingFrom_param" : pComingFrom
     };
-    neon.openContext("Letter", "LetterEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+    neon.openContext("Letter", "LetterEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
 }
 
 /**
diff --git a/process/DuplicateScanner_lib/process.js b/process/DuplicateScanner_lib/process.js
index 3576d4dcf361c9a5a42faf46d65d33f7d2157a89..ed3ef2cce6bc01136003468b6c39ac2781c38cd4 100644
--- a/process/DuplicateScanner_lib/process.js
+++ b/process/DuplicateScanner_lib/process.js
@@ -801,6 +801,32 @@ DuplicateScannerUtils.GetEntityFieldsFromConfig = function(pFilterName, pTargetE
     return entityFields;
 }
 
+/**
+ * Loads the configured entity fields required for the given duplicate scanner.
+ * 
+ *  @param {String} pFilterName the name of the scanner
+ *  @param {String} pTargetEntity the target entity
+ *  @return {Object} an object with two properties:
+ *      <ul>
+ *          <li>entityFields: array of entity fields</li>
+ *          <li>entityIdField: the id field name as string</li>
+ *      </ul>
+ */
+DuplicateScannerUtils.getEntityFieldObjectFromConfig = function (pFilterName, pTargetEntity)
+{
+    var indexPattern = _DuplicateScannerUtils._loadIndexPattern(pFilterName, pTargetEntity);
+    if (!indexPattern)
+        return null;
+    var fieldConfigs = _DuplicateScannerUtils._loadEntityFieldConfigsFromPattern(indexPattern);
+    if (fieldConfigs == null || fieldConfigs.length === 0)
+        return null;
+    
+    return {
+        entityFields : _DuplicateScannerUtils._loadEntityFieldsFromFieldConfigs(fieldConfigs),
+        entityIdField : _DuplicateScannerUtils._loadEntityIdField(pFilterName, pTargetEntity)
+    };
+}
+
 DuplicateScannerUtils.GetUnrelatedRelationsForDuplicate = function(pDuplicateId)
 {
     let unrelatedIds = [];
@@ -910,9 +936,8 @@ pResultFields, pRecordIdValueToIgnore, pFormatValuesConsumeWebserviceCallback, p
     let ignoreSourceRecordPattern = _DuplicateScannerUtils._getIgnoreSourceRecordPattern(pRecordIdValueToIgnore);
 
     let indexPatternWithValues = _DuplicateScannerUtils._replacePlaceholderForValuesInPattern(pIndexPattern, pEntityFieldConfigValuesRay);
-    indexPatternWithValues = ignoreSourceRecordPattern + indexPatternWithValues + ")";
 
-    possibleDuplicates = _DuplicateScannerUtils._callIndexSearch(pTargetEntity, indexPatternWithValues, pResultFields, 100);
+    possibleDuplicates = _DuplicateScannerUtils._callIndexSearch(pTargetEntity, indexPatternWithValues, ignoreSourceRecordPattern, pResultFields, 100);
     
     if(possibleDuplicates == null)
         return null;
@@ -948,11 +973,12 @@ _DuplicateScannerUtils._isUseExternalWebservice = function(pFilterName, pTargetE
  * 
  * @param {String} pTargetEntity Entity which has been configured
  * @param {String} pIndexPatternWithValues The pattern used to search. Has to contain the values already.
+ * @param {String} pIdFilter The filter pattern used to exclude the current record from the result.
  * @param {String} pResultFields The result field config. Use "DuplicateScannerUtils.LoadResultFields"
  * @param {String} pResultSetRows todo
  * @returns {[["key", "value"]] || null} Array of Key-Value-Pairs based on the configured pResultFields, if no pattern exists null
  */
-_DuplicateScannerUtils._callIndexSearch = function(pTargetEntity, pIndexPatternWithValues, pResultFields, pResultSetRows)
+_DuplicateScannerUtils._callIndexSearch = function(pTargetEntity, pIndexPatternWithValues, pIdFilter, pResultFields, pResultSetRows)
 {
     logging.log(pIndexPatternWithValues)
     //The indexPattern can't be null because it is required to run the search.
@@ -961,9 +987,13 @@ _DuplicateScannerUtils._callIndexSearch = function(pTargetEntity, pIndexPatternW
     let indexQuery = indexsearch.createIndexQuery()
                                 .setPattern(pIndexPatternWithValues)
                                 .setEntities([pTargetEntity])
+//                                .addFilter(pIdFilter);
                                 // .setDefaultOperator(indexsearch.OPERATOR_AND)
                                 //.addSearchFields("Person_entity.FIRSTNAME", "Person_entity.LASTNAME", "Person_entity.CONTACTID")
                                 //.setRows(pResultSetRows);
+    if(pIdFilter && pIdFilter.length > 0)
+        indexQuery.addFilter(pIdFilter);
+    
     indexQuery = _DuplicateScannerUtils._setResultFields(indexQuery, pResultFields);
     return indexsearch.searchIndex(indexQuery);
 }
@@ -1102,14 +1132,20 @@ _DuplicateScannerUtils._buildDeleteCachedUnrelatedDuplicateQuery = function(pSou
 }
 
 /*
- * Creates a pattern which excludes the field and it's value
+ * Creates a filter pattern which excludes results with the provided id from the search. 
  *
- * @param {String} pRecordIdValueToIgnore The fields value
- * @returns {String} Pattern which excludes the gived field in combination with the value
+ * @param {String} pRecordIdValueToIgnore The id value to exclude from the result.
+ * @returns {String} Filter pattern which excludes hits with the given id (index) from the result.
  */
 _DuplicateScannerUtils._getIgnoreSourceRecordPattern = function(pRecordIdValueToIgnore)
 {
-    return "( +( -" + indexsearch.FIELD_ID + ":(" + pRecordIdValueToIgnore + ") ) ";
+    // creates -_local_id_:"<pRecordIdValueToIgnore>"
+    if(pRecordIdValueToIgnore && pRecordIdValueToIgnore.length > 0)
+        return indexsearch.buildPattern(indexsearch.createPatternConfig().minus(
+                            indexsearch.createPhraseTerm(pRecordIdValueToIgnore)
+                            .setIndexField(indexsearch.FIELD_ID)
+                        ));
+    return null;
 }
 
 _DuplicateScannerUtils._buildUpdateContactIdStatements = function(pTableInfos, pSourceContactId, pTargetContactId, pAlias)
diff --git a/process/Email_lib/process.js b/process/Email_lib/process.js
index 2393fee4b38cea9c67566988bf561a3c8a119949..d14798db16fadb33871b64b0a2dd879987fec383 100644
--- a/process/Email_lib/process.js
+++ b/process/Email_lib/process.js
@@ -90,7 +90,7 @@ EmailWritingUtils.openNewMail = function (pToContactId, pToEmailAddress, pComing
     if (pToEmailAddress)
         params.Recipient_param = pToEmailAddress;
     
-    neon.openContext("Email", "EmailEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+    neon.openContext("Email", "EmailEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
 }
 
 EmailWritingUtils.getMailbridgeAddress = function ()
diff --git a/process/Entity_lib/process.js b/process/Entity_lib/process.js
index 2e00cc8b9f1b726bab18bca4603751b12ec94c4d..93360446bcf5ed3682da3749fd127d9c10002322 100644
--- a/process/Entity_lib/process.js
+++ b/process/Entity_lib/process.js
@@ -1,3 +1,4 @@
+import("system.process");
 import("system.translate");
 import("system.entities");
 import("system.result");
@@ -371,4 +372,149 @@ EntityConsumerUtils.rmInsertedConsumerRows = function(pConsumer)
     {
         neon.deleteRecord(pConsumer, row["#UID"]);
     });
-};
\ No newline at end of file
+};
+
+/**
+ * Object that makes getting the current consumer rows of an entity easier.
+ * 
+ * @param {Array} [pRows] The rows that should be initially loaded into the object, in most cases that would be the stored records.
+ */
+function EntityConsumerRowsHelper (pRows)
+{
+    this._uidField = "#UID";
+    this._consumer = null;
+    this._rows = pRows || [];
+}
+
+/**
+ * Static function for getting all current rows of a consumer with all changes applied (insertedRows, changedRows, deletedRows).
+ * 
+ * @param {String} pConsumer the name of the consumer
+ * @param {String[]} pFields the entity fields that should be loaded, this only affects the stored rows that are loaded from the consumer entity
+ * @return {Object[]} current consumer rows
+ * @example
+ * var currentAttributes = EntityConsumerRowsHelper.getCurrentConsumerRows("Attributes", ["AB_ATTRIBUTE_ID", "VALUE"]);
+ */
+EntityConsumerRowsHelper.getCurrentConsumerRows = function (pConsumer, pFields)
+{
+    return new EntityConsumerRowsHelper()
+        .consumer(pConsumer)
+        .fetchRowsFromConsumer(pFields)
+        .applyConsumerRowChanges()
+        .getRows();
+}
+
+/**
+ * Sets the consumer that is used for loading the rows.
+ * 
+ * @param {String} pConsumer the name of the consumer
+ * @return {EntityConsumerRowsHelper} current object
+ */
+EntityConsumerRowsHelper.prototype.consumer = function (pConsumer)
+{
+    this._consumer = pConsumer;
+    return this;
+}
+
+/**
+ * Loads the stored rows from the consumer into the object.
+ * 
+ * @param {String[]} pFields the entity fields that should be loaded
+ * @return {EntityConsumerRowsHelper} current object
+ */
+EntityConsumerRowsHelper.prototype.fetchRowsFromConsumer = function (pFields)
+{
+    if (!pFields)
+        pFields = [this._uidField];
+    else if (pFields.indexOf(this._uidField) === -1)
+        pFields.push(this._uidField);
+    
+    var loadConfig = entities.createConfigForLoadingConsumerRows()
+        .consumer(this._consumer)
+        .fields(pFields);
+    this._rows = entities.getRows(loadConfig);
+    return this;
+}
+
+/**
+ * Applies all current changes to the consumer rows (insertedRows, changedRows, deletedRows).
+ * 
+ * @return {EntityConsumerRowsHelper} current object
+ */
+EntityConsumerRowsHelper.prototype.applyConsumerRowChanges = function ()
+{
+    var insertedRows = vars.get("$field." + this._consumer + ".insertedRows");
+    var changedRows = vars.get("$field." + this._consumer + ".changedRows");
+    var deletedRows = vars.get("$field." + this._consumer + ".deletedRows");
+    
+    if (deletedRows && deletedRows.length > 0)
+        this.removeRows(deletedRows);
+    if (changedRows && changedRows.length > 0)
+        this.changeRows(changedRows);
+    if (insertedRows && insertedRows.length > 0)
+        this.appendRows(insertedRows);
+    
+    return this;
+}
+
+/**
+ * Adds rows to the object.
+ * 
+ * @param {Object[]} pRowsToAppend the rows that should be added (insertedRows)
+ * @return {EntityConsumerRowsHelper} current object
+ */
+EntityConsumerRowsHelper.prototype.appendRows = function (pRowsToAppend)
+{
+    this._rows = this._rows.concat(pRowsToAppend);
+    return this;
+}
+
+/**
+ * Updates the given rows in the object.
+ * 
+ * @param {Object[]} pRowsToChange the rows that should be changed, they replace existing rows based on the uid (changedRows)
+ * @return {EntityConsumerRowsHelper} current object
+ */
+EntityConsumerRowsHelper.prototype.changeRows = function (pRowsToChange)
+{
+    var changeCatalog = {};
+    pRowsToChange.forEach(function (changedRow)
+    {
+        changeCatalog[changedRow[this._uidField]] = changedRow;
+    });
+    this._rows = this._rows.map(function (row)
+    {
+        return row[this._uidField] in changeCatalog ? changeCatalog[row[this._uidField]] : row;
+    });
+    return this;
+}
+
+/**
+ * Removes the given rows from the object.
+ * 
+ * @param {Object[]} pRowsToRemove the rows that should be removed (deletedRows)
+ * @return {EntityConsumerRowsHelper} current object
+ */
+EntityConsumerRowsHelper.prototype.removeRows = function (pRowsToRemove)
+{
+    var deleteCatalog = {};
+    pRowsToRemove.forEach(function (deletedRow)
+    {
+        deleteCatalog[deletedRow[this._uidField]] = true;
+    });
+    this._rows = this._rows.filter(function (row)
+    {
+        return !deleteCatalog[row[this._uidField]];
+    });
+    return this;
+}
+
+/**
+ * Returns all rows inside the object.
+ * 
+ * @return {Object[]} all the current rows
+ */
+EntityConsumerRowsHelper.prototype.getRows = function ()
+{
+    return this._rows;
+}
diff --git a/process/Importer_lib/process.js b/process/Importer_lib/process.js
index 430c8e0aa7734b65247a12799a2181d0610594a8..bf55280364bd354a92e30fc2471468d76dcfcd49 100644
--- a/process/Importer_lib/process.js
+++ b/process/Importer_lib/process.js
@@ -1322,7 +1322,7 @@ function Importer(pConfig)
                         //- document in the comment why it should not be used and when it will cause other problems
                         //- find another solution to prevent the unterminated string errors
                         if(pEvalScript)
-                            return res.replace("'", "\\\\u0027", "g").replace("\"", "\\\\u0022", "g").replace("\r", "\\\\u000D", "g").replace("\n", "\\\\u000A", "g");
+                            return res.replace(/'/g, "\\\\u0027").replace(/"/, "\\\\u0022").replace(/\r/g, "\\\\u000D").replace(/\n/g, "\\\\u000A");
                         else
                             return res;
                     }
@@ -1336,7 +1336,7 @@ function Importer(pConfig)
                         //- document in the comment why it should not be used and when it will cause other problems
                         //- find another solution to prevent the unterminated string errors
                         if(pEvalScript)
-                            return inp[Number(pNumber)].replace("'", "\\\\u0027", "g").replace("\"", "\\\\u0022", "g").replace("\r", "\\\\u000D", "g").replace("\n", "\\\\u000A", "g");
+                            return inp[Number(pNumber)].replace(/'/g, "\\\\u0027").replace(/"/, "\\\\u0022").replace(/\r/g, "\\\\u000D").replace(/\n/g, "\\\\u000A");
                         else
                             return inp[Number(pNumber)];
                     }
diff --git a/process/IndexSearch_lib/process.js b/process/IndexSearch_lib/process.js
index 532ec972fe333d7fb1e89cf731d3127c8bd20a1b..be35ad2cc8c0a24fabe76bd57ba2a64d9ce9b310 100644
--- a/process/IndexSearch_lib/process.js
+++ b/process/IndexSearch_lib/process.js
@@ -5,20 +5,66 @@ import("system.text");
  * provides static methods for special handling of entities in JDito-Processes
  * do not create an instance of this
  * 
- * TODO: lib has to be updated with new Indexsearch when it is available
- * 
  * @class
  */
 function IndexsearchUtils() {}
 
 /**
- * TODO: Comment everything!
+ * Searches within an affectedInfoContainer for an id value <br/>
+ * This id value can be used in the affectedIds-process of an index-recordContainer for example <br/>
+ * 
+ * Depending on the provided action the given ID-field is searched in: <br/>
+ * <ul>
+ * <li>the newValues (action: I), no other values are yet present</li>
+ * <li>the oldValues (action: D), other values are not anymore present</li>
+ * <li>another source by calling a function (action: U), in the update case only values are provided that acutally changed so 
+ *      another source (usually the dattabase) is needed to perform the lookup</li>
+ * <li>Otherwise an empty array is given (action X for example)</li>
+ * </ul>
+ * 
+ * @param {String} fieldname                <p> Name of the field that shall be searched within the infocontainer
+ * @param {Object} affectedInfoContainer    <p> affectedInfoContainer like it is provided by the IndexsearchUtils.createAffectedInfoContainer-function
+ *
+ * @param {Function} updateFn               <p> a callback function that is called when an update-action is provided in the affectedInfoContianer 
+ *                                          (which means there are no [useful] newvalues/oldvalues) 
+ *
+ * @return {Array}                          <p> 1D-array of Strings with all affectedIds that where found depeding on the information in the 
+ *                                          affectedInfoContainer
+ * @example 
+ * //example for an affectedIds-procces for a indexer that is built on top of the database table OFFER
+ * //explanations of the example are written as code-comments
+ * ...imports, variables and more code here...
+ * //this is always the uid of the record that has been changed, so if an OFFER-entry has been changed the OFFERID is returned, if an OFFERITEM-entry 
+ * //has been changed the OFFERITEMID is returned and so on
+ * var idValue = vars.get("$local.idvalue");
+ * var infoContainer =  ...code for creating a infoContainer...
  * 
- * @param {} fieldname
- * @param {} affectedInfoContainer
- * @param {} updateFn
+ * switch (tableName)//the tableName is always the name of the DB table that has been changed (changed = inserted, updated or deleted)
+ * {
+ *     //if the OFFER itself has been changed it's very easy because it's possible to return the OFFERID directly
+ *     case "OFFER": 
+ *         res = [idValue];
+ *         break;    
+ *     //for other items (like the OFFERITEM in this exmaple) however it is not that easy, because the index-UID is needed as result in the 
+ *     //affectedIdsProcess, so we have find the correct OFFERID for the OFFERITEM that has been changed
+ *     // therefore we have to define the columnname of the index-UID we are searching within our table (here: OFFER_ID) and we have to define a 
+ *     //callback function that returns the index-UID with for the given ID of the record that has been changed [to see why we need a function see the
+ *     //descriptiontext of this function]
+ *     case "OFFERITEM": 
+ *         res = IndexsearchUtils.getAffectedIdValues("OFFER_ID", infoContainer, function (offerItemId){
+ *             return newSelect("OFFERITEM.OFFER_ID")
+ *             .from("OFFERITEM")
+ *             .where("OFFERITEM.OFFERITEMID", offerItemId)
+ *             .arrayColumn();
+ *         });
+ *         break;
+ * }
  * 
- * @return {}
+ * //this needed as a savegate, because the Index is being rebuilt by the indexer if nothing gets returned => do a final check here!
+ * if (res)
+ *     result.object(res);
+ * else
+ *     result.object([]);
  */
 IndexsearchUtils.getAffectedIdValues = function(fieldname, affectedInfoContainer, updateFn) {
     var affectedIds;
@@ -26,30 +72,51 @@ IndexsearchUtils.getAffectedIdValues = function(fieldname, affectedInfoContainer
     {
         case "I":
             affectedIds = affectedInfoContainer.newValues[affectedInfoContainer.columns.indexOf(fieldname)];
-            affectedIds = affectedIds ? [affectedIds] : []
+            affectedIds = affectedIds ? [affectedIds] : [];//check if affectedIds are present because otherwise we may would return [null]
             break;
         case "U":
             affectedIds = updateFn.call(null, affectedInfoContainer.id);
             break;
         case "D":
             affectedIds = affectedInfoContainer.oldValues[affectedInfoContainer.columns.indexOf(fieldname)];
-            affectedIds = affectedIds ? [affectedIds] : []
+            affectedIds = affectedIds ? [affectedIds] : [];//check if affectedIds are present because otherwise we may would return [null]
             break;
     }
-    return affectedIds || [];
+    if(affectedIds)
+        return affectedIds;
+    else
+        return [];
 }
 
 /**
- * TODO: Comment everything!
+ * Builds an object with various properties and returns the newly created object.
+ * The object that is retruned is so called affectedInfoContainer, but the type and prototype is still object.<br/>
+ * <br/>
+ * Each object represents one audited change in a db table with a sepcific type (insert, update, delete, etc.) for one row. 
+ * The object is basically a unified blueprint for such a change.<br/>
+ * <br/>
+ * Main purpose of the object is to make the handling of given values within a affectedIdProcess in an entity-indexRecordContainer easier.
+ * However it could be used in other cases too, for example in the auditProcess.
  * 
- * @param {} changedIdValue
- * @param {} changedTable
- * @param {} action
- * @param {} columnsFn
- * @param {} oldValueFn
- * @param {} newValueFn
+ * @param {String} changedIdValue   <p> UID of the row where the change has been audited
+ * @param {String} changedTable     <p> name of the db table where the change has been audited
+ * @param {String} action           <p> action type of the audited change in short form, for exmaple: I, U, D, ...
+ * @param {Function} columnsFn      <p> callbackFunction that has to return an array with the column names of the audited table
+ * @param {Function} oldValueFn     <p> callbackFunction that has to return an array with the new values that exist after the audited change
+ * @param {Function} newValueFn     <p> callbackFunction that has to return an array with the old values that have existed before the audited change
  * 
- * @return {}
+ * @return {Object} object with the following properties (values depend on the parameters):
+ * <ul>
+ * <li>id: uid of the changed record</li>
+ * <li>table: name of the database table of the changed record</li>
+ * <li>action: type of the change, this is usually "I" for insert, "U" for update, "D" for delete and "X" for unknown</li>
+ * <li>columns: array of column names of the table that have been audited (if present)</li>
+ * <li>oldValues: detemined values before the change (if present)</li>
+ * <li>newValues: detemined values after the change (if present)</li>
+ * </ul>
+ * <br/>
+ * Note that this only what the object SHOULD contain, the actual values depend on the input parameters.
+ *
  */
 IndexsearchUtils.createAffectedInfoContainer = function(changedIdValue, changedTable, action, columnsFn, oldValueFn, newValueFn) {
     var res, internalStorage;
diff --git a/process/Leadimport_lib/process.js b/process/Leadimport_lib/process.js
index 12ee0883e8b9d49b2556cbf740a459580afaf2b3..bfc4a50283b447f3395af80a3ad50b0d4eaabd5f 100644
--- a/process/Leadimport_lib/process.js
+++ b/process/Leadimport_lib/process.js
@@ -167,7 +167,7 @@ LeadImportUtils.importData = function(pDataFields, pDataTypes, pFieldDef, pField
     var persRet;
     
     //------create organisation
-    if (LeadValues["NAME"] != "")//only if Organame is filled
+    if (LeadValues["NAME"].trim() != "")//only if Organame is filled
     {
         orgObjID = "Organisation";//for attribute
         orgRet = LeadImportUtils.insertOrg(pDataFields, pDataTypes,  pFieldDef, pFieldValues, pUser, pDate);
@@ -183,7 +183,7 @@ LeadImportUtils.importData = function(pDataFields, pDataTypes, pFieldDef, pField
         }
     }
     //------create person
-    if (LeadValues[ "LASTNAME" ] != "")//only if lastname is filled
+    if (LeadValues["LASTNAME"].trim() != "")//only if lastname is filled
     {
         persObjID = "Person";//for attribute
         persRet = LeadImportUtils.insertPers(pDataFields, pDataTypes,  pFieldDef, pFieldValues, orgid, LeadValues, pUser, pDate);
diff --git a/process/Liquibase_lib/process.js b/process/Liquibase_lib/process.js
index f9c9cd59c90eeaa0390c58964c39957977bc59e8..09973aa50b9da66a5ffe9810f76762c3bdf9cf97 100644
--- a/process/Liquibase_lib/process.js
+++ b/process/Liquibase_lib/process.js
@@ -61,7 +61,7 @@ LiquiUtils.exportAllTablesAsLiquibaseFiles = function(pOutFolderPath, pAuthor, p
 *
 * @param {String} pPath file-path where the files and folders will be created; the folder must be on the server 
 * @param {String} pTableName name of the DB-table that will be exported; this is also the name of the file that is stored
-* @param {Array} pColumns db-columns within the table that will be exported
+* @param {Array} [pColumns=all columns within the table] db-columns within the table that will be exported
 * @param {String} [pCondition=none] db-condition to limit the data that will be exported; if nothing given the whole content will be exported
 * @param {String} [pAuthor="autogenerated"] author that will be written into the liquibase-changeset
 * @param {Boolean} [pIncludeClearTableDirective=false] if true, a delete element is added at the beginning of the changeset for the table
diff --git a/process/Loghistory_lib/process.js b/process/Loghistory_lib/process.js
index fa07e912c734554fe0e1955b5e3f926f889630fc..0f88ed09dad643c6204a9fd30a67d2caff2e07fb 100644
--- a/process/Loghistory_lib/process.js
+++ b/process/Loghistory_lib/process.js
@@ -109,12 +109,13 @@ LogHistoryExecutor.prototype.execute = function ()
         IDs: ["OBJECT_ROWID", "AB_ATTRIBUTE_ID"],
         Description: translate.text("Attribute", this.translationLanguage)
     };
+    
+    var oldvalues = {};
+    var newvalues = {};
 
     if (extra[this.affectedTable])
     {
         var conf = extra[this.affectedTable];
-        var oldvalues = {};
-        var newvalues = {};
 
         for(i = 0; i < this.columns.length; i++ )
         {
@@ -179,27 +180,27 @@ LogHistoryExecutor.prototype.execute = function ()
             if (logfield && logfield.log)
             {
                 if (this.sqlAction != 'I' && this.oldValues[i] != "") 
-                    this.oldValues[i] = this._getFormattedValue(this.columns[i], logfield, this.oldValues[i]);
+                    oldvalues[i] = this._getFormattedValue(this.columns[i], logfield, this.oldValues[i]);
                 if (this.sqlAction != 'D' && this.newValues[i] != "") 
-                    this.newValues[i] = this._getFormattedValue(this.columns[i], logfield, this.newValues[i]);
+                    newvalues[i] = this._getFormattedValue(this.columns[i], logfield, this.newValues[i]);
                 
                 var logfieldTitle = (logfield.title ? translate.text(logfield.title, this.translationLanguage) : translate.text("Value", this.translationLanguage));
-                if (this.sqlAction == 'U' && this.oldValues[i] != this.newValues[i])
+                if (this.sqlAction == 'U' && oldvalues[i] != newvalues[i])
                 {
                     //TODO: CLOB-check should be done by viewing the structure column type
                     //use .trim() for "[CLOB]" check because in some case the value "[CLOB]\n" my be given
-                    if (this.oldValues[i] != null && (this.oldValues[i].trim() == "[CLOB]" || this.oldValues[i].trim() == ""))
-                        description.push(translate.withArguments("%0 \"%1\"", [logfieldTitle + ":", this.newValues[i]], this.translationLanguage));
+                    if (oldvalues[i] != null && (oldvalues[i].trim() == "[CLOB]" || oldvalues[i].trim() == ""))
+                        description.push(translate.withArguments("%0 \"%1\"", [logfieldTitle + ":", newvalues[i]], this.translationLanguage));
                     else
-                        description.push(translate.withArguments("%0 from \"%1\" to \"%2\"", [logfieldTitle + ":", this.oldValues[i], this.newValues[i]], this.translationLanguage));
+                        description.push(translate.withArguments("%0 from \"%1\" to \"%2\"", [logfieldTitle + ":", oldvalues[i], newvalues[i]], this.translationLanguage));
                         
                 }
                 //use .trim() for "[CLOB]" check because in some case the value "[CLOB]\n" my be given
-                if (this.sqlAction == 'I' && this.newValues[i] != "" && this.newValues[i] != null && this.newValues[i].trim() != "[CLOB]")
-                    description.push(logfieldTitle + ": \"" + this.newValues[i] + "\"");
+                if (this.sqlAction == 'I' && newvalues[i] != "" && newvalues[i] != null && newvalues[i].trim() != "[CLOB]")
+                    description.push(logfieldTitle + ": \"" + newvalues[i] + "\"");
                 //use .trim() for "[CLOB]" check because in some case the value "[CLOB]\n" my be given
-                if (this.sqlAction == 'D' && this.oldValues[i] != "" && this.oldValues[i] != null  && this.oldValues[i].trim() != "[CLOB]")
-                    description.push(logfieldTitle + ": \"" + this.oldValues[i] + "\"");
+                if (this.sqlAction == 'D' && oldvalues[i] != "" && oldvalues[i] != null  && oldvalues[i].trim() != "[CLOB]")
+                    description.push(logfieldTitle + ": \"" + oldvalues[i] + "\"");
             }
         }
         if (this.sqlAction == "U")
diff --git a/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod b/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod
new file mode 100644
index 0000000000000000000000000000000000000000..fe86c4d1f97ec9f9611d761f65c14d51c27e3f02
--- /dev/null
+++ b/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod
@@ -0,0 +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">
+  <name>ObjectRelationTypeRegistry_basic</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/ObjectRelationTypeRegistry_basic/process.js</process>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/ObjectRelationTypeRegistry_basic/process.js b/process/ObjectRelationTypeRegistry_basic/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..75f299aac41c10ce61de109fae2cb07930a5fad6
--- /dev/null
+++ b/process/ObjectRelationTypeRegistry_basic/process.js
@@ -0,0 +1,15 @@
+/**
+ * Provides static functionality for a registry of objectrelation-type ids. <br/>
+ * <br/>
+ * The reason for this is a convenient usage within jdito-code and autocomplete functionality within the designer. <br/>
+ * Addtional benefits of using the "constants" (in fact they are functions that return always the same value) are better readability of the code and
+ * more stable code regarding to changes.
+ * 
+ * @class
+ *
+ */
+function $ObjectRelationTypeRegistry(){}
+
+//currently it's empty here but this library may be used in the future to provide ObjectRelationTypes within jdito code
+//add semi-constants for different objectRelationTypes to use them in the jdito code instead of IDs
+//$ObjectRelationTypeRegistry.myObjectRelationType = function(){return "<<uid of the type>>";};
diff --git a/process/Organisation_lib/process.js b/process/Organisation_lib/process.js
index 622b86c386ba03047f92019a9860f8c133f4c628..5532a6817dbac7d0f8a0e0a70dd26c7237f9725d 100644
--- a/process/Organisation_lib/process.js
+++ b/process/Organisation_lib/process.js
@@ -123,7 +123,7 @@ OrgUtils.buildOrgReport = function(pOrgId, pContactId)
 
     //select people from the organization
     var persData = newSelect("SALUTATION, TITLE, FIRSTNAME, LASTNAME "
-                            + ",CONTACTROLE as PERSFUNCITON, DEPARTMENT as PERSDEPARTMENT "
+                            + ",CONTACTPOSITION as PERSFUNCITON, DEPARTMENT as PERSDEPARTMENT "
                             + ",(" + CommUtil.getStandardSubSqlMail() + ")"
                             + ",(" + CommUtil.getStandardSubSqlPhone() + ")"
                             + ",ORGANISATION_ID, CONTACTID")
diff --git a/process/Permission_lib/process.js b/process/Permission_lib/process.js
index c7f95aca93b2e9a813bbf10254731ed5f9587cbf..fcb7a7086c7058d276aea897d12d898781e1d61f 100644
--- a/process/Permission_lib/process.js
+++ b/process/Permission_lib/process.js
@@ -239,13 +239,13 @@ function PermissionUtil () {}
     }
 
     /**
-     * get the entity for a specific permissionset.
+     * Get the entity for a specific permissionset.
      * 
      * @param {String} pSetId the id of the permission set
      * 
      * @return {String} the entity name or an empty string if not found
      */
-    PermissionUtil._getEntity = function(pSetId) {
+    PermissionUtil.getEntity = function(pSetId) {
         return newSelect("ENTITY_ID", alias)
         .from("ASYS_PERMISSIONSET")
         .whereIfSet("ASYS_PERMISSIONSET.ASYS_PERMISSIONSETID", pSetId)
@@ -260,7 +260,7 @@ function PermissionUtil () {}
      * @result {String} returns id of default permission of given set. Never 'null', empty string if there is no result.
      */
     PermissionUtil.getPermissionWithoutCond = function(pSetId) {
-        var emptyCond = PermissionUtil.getEmptyCondString(PermissionUtil._getEntity(pSetId));
+        var emptyCond = PermissionUtil.getEmptyCondString(PermissionUtil.getEntity(pSetId));
 
         return newSelect("ASYS_PERMISSIONID", alias)
         .from("ASYS_PERMISSION")
@@ -280,7 +280,7 @@ function PermissionUtil () {}
      * @result {String[]} returns the ids of permissions with conditions of a given permission set. The result can never be null.
      */
     PermissionUtil.getPermissionWithCond = function(pSetId) {
-        var emptyCond = PermissionUtil.getEmptyCondString(PermissionUtil._getEntity(pSetId));
+        var emptyCond = PermissionUtil.getEmptyCondString(PermissionUtil.getEntity(pSetId));
     
         return newSelect("ASYS_PERMISSIONID", alias)
         .from("ASYS_PERMISSION")
@@ -446,7 +446,7 @@ function PermissionUtil () {}
      * 
      * @param {String} pParentSetId parent permission set, mandatory
      * 
-     * @param {String} pCond condition of the permission, empty if no condition
+     * @param {String} pCond condition of the permission, null if no condition
      * 
      * @param {String} pCondType condition Type of the permission, should always be 1
      * 
@@ -463,12 +463,15 @@ function PermissionUtil () {}
         "COND"
         ];
         var permId;
+        var cond = (pCond == null ? PermissionUtil.getEmptyCondString(PermissionUtil.getEntity(pParentSetId)) : pCond);
+        
         if (pPermId != null && pPermId != "" && pPermId != undefined) {
             permId = pPermId;
         } else {
             permId = util.getNewUUID(); 
         }
-        var vals = [pParentSetId, permId, pCondType, pCond];
+        
+        var vals = [pParentSetId, permId, pCondType, cond];
         db.insertData(table, cols, null, vals, alias);  
         return permId;
     }
diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js
index fb933d980b271bc431bdd4715c15d07243981ade..3039c1cf1cbd1468351cd93493862d3d91fbd47c 100644
--- a/process/Sql_lib/process.js
+++ b/process/Sql_lib/process.js
@@ -535,7 +535,7 @@ SqlCondition.prototype._prepare = function(field, value, cond, fieldType) {
         }
         else
         {
-            throw new Error(translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field]));
+            throw new Error(translate.text("${SQL_LIB_FIELD_WRONG_FORMAT}") + field + translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field]));
         }
     }
     else
@@ -547,7 +547,7 @@ SqlCondition.prototype._prepare = function(field, value, cond, fieldType) {
         }
         else
         {
-            throw new Error(translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field.toSource()]));
+            throw new Error(translate.text("${SQL_LIB_FIELD_WRONG_FORMAT}") + field.toSource() + translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field.toSource()]));
         }
     }
     
@@ -4012,7 +4012,7 @@ SqlUtils.parseField = function(pField)
         if (pointPos > 0 && pointPos < pField.length-1)
             alias = pField;
         else
-            throw new Error(translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [pField]));
+            throw new Error(translate.text("${SQL_LIB_FIELD_WRONG_FORMAT}") + pField + translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [pField]));
     }
     else
     {
@@ -4025,7 +4025,7 @@ SqlUtils.parseField = function(pField)
             pField = pField[0] + "." + pField[1];
         }
         else
-            throw new Error(translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field.toSource()]));
+            throw new Error(translate.text("${SQL_LIB_FIELD_WRONG_FORMAT}") + field.toSource() + translate.withArguments("${SQL_LIB_FIELD_WRONG_FORMAT} field: %0", [field.toSource()]));
     }
     return [alias, pField]
 }
diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js
index 9f046efd158cd92f8d7334fec36d43353692258e..30e6b6b27aac5415eadfcaa53db1fcfc88a9ad5a 100644
--- a/process/Util_lib/process.js
+++ b/process/Util_lib/process.js
@@ -15,6 +15,34 @@ import("system.datetime");
 import("Offer_lib");
 import("Date_lib");
 
+/**
+ * Class containing static utility functions for regular expression objects (RegExp)
+ * Do not create an instance of this
+ * 
+ * @class
+ */
+function RegExpUtils(){}
+
+/**
+ * Escapes characters of a string that shall be passed to a RegExp 1:1 <br/>
+ * This is necessary because the RegExp-constructor uses the given string directly as pattern as you can see here:<br/>
+ * new RegExp("^t.*t$") <=> /^t.*t$/<br/>
+ * while<br/>
+ * new RegExp(escapeStr("^t.*t$")) <=> /\^t\.\*t\$/<br/>
+ * The first will match any string taht starts with "t" and ends with "t" like the word "test". <br/>
+ * The second one will match only the string "^t.*t$".<br/>
+ * You have to decide what you want to use as a RegExp and what is correct for your case.<br/>
+ * 
+ * @param {String} pStringForRegExp <p/>The plain string that has to be escaped to be used as an RegExp
+ *
+ * @return {String} the escaped string
+ */
+RegExpUtils.escapePatternStr = function (pStringForRegExp)
+{
+    //source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
+    return pStringForRegExp.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
+};
+
 /**
  * Class containing static utility functions for string-actions
  * Do not create an instance of this
@@ -23,6 +51,58 @@ import("Date_lib");
  */
 function StringUtils(){}
 
+/**
+ * Searches and replaces all matches of a string within another string with a given replacement.
+ * This will not modifiy the original string but return a new string with the applied replacements.
+ * In the current version of the rhino-javascript-engine the String.prototype.replaceAll-function is not implemented, therefor it's necessary to have
+ * a separate function for this.
+ *
+ * @param {String} pPlainInputStr           <p/>String where the matches of the searched word are replaced
+ * @param {String} pPlainSearchStr          <p/>Value that is replaced in the pPlainInputStr; this has to be a plain string
+ * @param {String|function} pReplacement    <p/>A string or a function for the replacement-value just like the String.prototype.replace(...) accepts
+ * @param {String} [pFlags="g"]             <p/>If specified, flags is a string that contains the modifier-flags to add 
+ *                                              (for exmaple "i", "m", "im", etc.;
+ *                                          <p/> for more details take a look at the constructor of the standard-javascript RegExp the "g" modifier 
+ *                                               is added automatically, so there is no need to set this modifier
+ *
+ * @return {String} <p/>A new string, with all matches of the given search string replaced by a replacement
+ * 
+ * @example
+ * 
+ * var is = "an apple is an apple is an APPLE";
+ * 
+ * var r1 = StringUtils.replaceAll(is, "apple", "orange");
+ * var r2 = StringUtils.replaceAll(is, "apple", "orange", "g");
+ * var r3 = StringUtils.replaceAll(is, "apple", "orange", "i");
+ * var r4 = StringUtils.replaceAll(is, "apple", "orange", "ig");
+ * var r5 = StringUtils.replaceAll(is, "apple", function (){
+ *     return "orangeFn";
+ * }, "ig");
+ * var r6 = StringUtils.replaceAll("example with RegExp  symbols like: - * [] / \\ $$", "$$", "dollarsymbols");
+ * 
+ * logging.log("r1:" + r1) //logs: r1:an orange is an orange is an APPLE
+ * logging.log("r2:" + r2) //logs: r2:an orange is an orange is an APPLE
+ * logging.log("r3:" + r3) //logs: r3:an orange is an orange is an orange
+ * logging.log("r4:" + r4) //logs: r4:an orange is an orange is an orange
+ * logging.log("r5:" + r5) //logs: r5:an orangeFn is an orangeFn is an orangeFn
+ * logging.log("r6:" + r6) //logs: r6:example with RegExp  symbols like: - * [] / \ dollarsymbols
+ */
+StringUtils.replaceAll = function(pPlainInputStr, pPlainSearchStr, pReplacement, pFlags)
+{
+    //flags after creating the RegExp object are read only, so we have to determine the flags to bet set before creating the RegExp object
+    var regExpFlags;
+    if (pFlags)
+        if (pFlags.search("g") != -1)
+            regExpFlags = pFlags;
+        else
+            regExpFlags = "g" + pFlags;
+    else
+        regExpFlags = "g";
+    
+    var searchRegExp = new RegExp(RegExpUtils.escapePatternStr(pPlainSearchStr), regExpFlags);
+    return pPlainInputStr.replace(searchRegExp, pReplacement);
+};
+
 /**
  * concats severel elements by a separator; the separator is only applied if a element is not null and not an empty string "";
  *
diff --git a/process/Workflow_lib/process.js b/process/Workflow_lib/process.js
index 179875a721eeee920de4ed7fa72752661fcefbe9..2387f13ee8f9bf28e21f6c0d5123178a7d14518e 100644
--- a/process/Workflow_lib/process.js
+++ b/process/Workflow_lib/process.js
@@ -8,6 +8,10 @@ import("system.vars");
 import("system.entities");
 import("system.workflow");
 import("KeywordRegistry_basic");
+import("system.net");
+import("system.auth");
+import("system.util");
+import("MimeType_lib");
 
 /**
  * Provides general functions for working with workflows and the workflow engine.
@@ -80,9 +84,17 @@ WorkflowUtils.engineIsEnabled = function ()
  *
  * @return {String} the url of the workflow modeler
  */
-WorkflowUtils.getModelerUrl = function ()
+WorkflowUtils.getModelerUrl = function (pModelId, pIsEditor)
 {
-    return project.getPreferenceValue("custom.workflow.modelerUrl", "");
+    var modelerUrl = project.getPreferenceValue("custom.workflow.modelerUrl", "").replace(/\/$/, "");
+    if (pModelId)
+    {
+        if (pIsEditor)
+            modelerUrl += "/#/editor/" + pModelId;
+        else
+            modelerUrl += "/#/processes/" + pModelId;
+    }
+    return modelerUrl;
 }
 
 /**
@@ -391,3 +403,251 @@ WorkflowServiceTaskParameter.ENUM = function ()
 {
     return "enum";
 }
+
+/**
+ * Representation of a process model from the modeler
+ */
+function WorkflowModel (pId, pName, pKey, pDescription)
+{
+    this.id = pId;
+    this.name = pName;
+    this.key = pKey;
+    this.description = pDescription || "";
+    this.lastUpdated = new Date();
+    this.createdBy = WorkflowModelerApiCall.getDefaultRestUser();
+    this.lastUpdatedBy = this.createdBy;
+    this.latestVersion = true;
+    this.version = 1;
+    this.comment = null;
+    this.modelType = 0;
+    this.tenantId = null;
+}
+
+/**
+ * Creates a new WorkflowModel object with the properties of the given object. This is used for deserialization.
+ * 
+ * @param {Object} pPropertyObj object containing the properties to set
+ * @return {WorkflowModel} a new WorkflowModel object with the given properties
+ */
+WorkflowModel.fromObject = function (pPropertyObj)
+{
+    return Object.assign(new WorkflowModel(), pPropertyObj);
+}
+
+/**
+ * An object that provides functions for using the REST API of the workflow modeler
+ */
+function WorkflowModelerApiCall ()
+{
+    this._baseUrl = WorkflowUtils.getModelerUrl();
+    this._modelId = null;
+    this._model = null;
+    this._processXML = null;
+    
+    this._authUser = WorkflowModelerApiCall.getDefaultRestUser();
+    this._authPassword = WorkflowModelerApiCall.getDefaultRestPassword();
+    
+}
+
+/**
+ * Configuration for the urls that are used for webservices of the modeler's rest api
+ */
+WorkflowModelerApiCall.urls = {
+    MODEL : function (pModelId)
+    {
+        return "/api/editor/models/" + pModelId;
+    },
+    MODEL_NEWVERSION : function (pModelId)
+    {
+        return "/api/editor/models/" + pModelId + "/newversion";
+    },
+    MODEL_THUMBNAIL : function (pModelId)
+    {
+        return "/api/editor/models/" + pModelId + "/thumbnail";
+    },
+    MODEL_JSON : function (pModelId)
+    {
+        return "/api/editor/models/" + pModelId + "/editor/json";
+    },
+    MODEL_IMPORT : function ()
+    {
+        return "/api/editor/import-process-xml";
+    },
+    MODELS : function ()
+    {
+        return "/api/editor/models";
+    }
+};
+
+/**
+ * Gets the default user for the rest api.
+ * 
+ * @return {String} the username
+ */
+WorkflowModelerApiCall.getDefaultRestUser = function ()
+{
+    return "admin";
+}
+
+/**
+ * Gets the default password for the rest api.
+ * 
+ * @return {String} the password
+ */
+WorkflowModelerApiCall.getDefaultRestPassword = function ()
+{
+    return "test";
+}
+
+/**
+ * Sets the model id.
+ * 
+ * @param {String} pModelId
+ * @return {WorkflowModelerApiCall} current object
+ */
+WorkflowModelerApiCall.prototype.modelId = function (pModelId)
+{
+    this._modelId = pModelId;
+    return this;
+}
+
+/**
+ * Sets the workflow model that is required for create and update.
+ * 
+ * @param {WorkflowModel} pModel
+ * @return {WorkflowModelerApiCall} current object
+ */
+WorkflowModelerApiCall.prototype.model = function (pModel)
+{
+    this._model = pModel;
+    if (this._modelId == null && pModel.id != null)
+        this._modelId = pModel.id;
+    return this;
+}
+
+/**
+ * Sets the process xml that is required for an import to the modeler.
+ * 
+ * @param {String} pProcessXML the bpmn2.0 process xml
+ * @return {WorkflowModelerApiCall} current object
+ */
+WorkflowModelerApiCall.prototype.processXML = function (pProcessXML)
+{
+    this._processXML = pProcessXML;
+    return this;
+}
+
+/**
+ * Sets the user and the password for basic auth
+ * 
+ * @param {String} pUser the user
+ * @param {String} pPassword the password
+ * @return {WorkflowModelerApiCall} current object
+ */
+WorkflowModelerApiCall.prototype.setBasicAuth = function (pUser, pPassword)
+{
+    this._authUser = pUser;
+    this._authPassword = pPassword;
+    return this;
+}
+
+/**
+ * Helper function to make rest calls
+ */
+WorkflowModelerApiCall.prototype._callWebservice = function (pUrl, pHttpMethod, pHeaders, pBody, pDataTypeSend, pQueryParams)
+{
+    if (!this._baseUrl)
+        return null;
+        
+    var restConfig = net.createConfigForRestWebserviceCall()
+        .url(this._baseUrl + pUrl)
+        .dataTypeJDitoAccept(util.DATA_TEXT)
+        .dataTypeJDitoSend(util.DATA_TEXT)
+        .dataTypeSend(pDataTypeSend || MimeTypes.JSON())
+        .dataTypeAccept(MimeTypes.JSON())
+        .actionType(pHttpMethod);
+        
+    if (pHeaders)
+    {
+        for (let headerName in pHeaders)
+            restConfig.addHeader(headerName, pHeaders[headerName]);
+    }
+    if (pQueryParams)
+    {
+        for (let paramName in pQueryParams)
+            restConfig.addQueryParameter(paramName, pQueryParams[paramName]);
+    }
+    if (pBody)
+        restConfig.requestEntity(pBody);
+    
+    var authConfig = this._authUser != null
+        ? auth.createConfigForBasicAuth().userName(this._authUser).password(this._authPassword)
+        : auth.createConfigForNoAuth();
+    
+    return net.callRestWebservice(restConfig, authConfig);
+}
+
+/**
+ * Retrieves a process model from the workflow modeler rest api
+ * 
+ * @return {WorkflowModel}
+ */
+WorkflowModelerApiCall.prototype.getModel = function ()
+{
+    var modelJson = this._callWebservice(WorkflowModelerApiCall.urls.MODEL(this._modelId), net.GET);
+    if (!modelJson)
+        return null;
+    
+    return WorkflowModel.fromObject(JSON.parse(modelJson));
+}
+
+/**
+ * Loads the models from the workflow modeler.
+ * 
+ * @return {WorkflowModel[]} array of models
+ */
+WorkflowModelerApiCall.prototype.getModels = function (pFilter)
+{
+    var headers = pFilter ? {filter : pFilter} : null;
+    var modelsJson = this._callWebservice(WorkflowModelerApiCall.urls.MODELS(), net.GET, headers);
+    
+    if (!modelsJson)
+        return [];
+    
+    var models = JSON.parse(modelsJson).data || [];
+    
+    return models.map(function (model)
+    {
+        return WorkflowModel.fromObject(model);
+    });
+}
+
+/**
+ * Creates a new process model in the workflow modeler over the rest api
+ * 
+ * @return {WorkflowModel} representation of the created model
+ */
+WorkflowModelerApiCall.prototype.createModel = function ()
+{
+    var modelJson = this._callWebservice(WorkflowModelerApiCall.urls.MODELS(), net.POST, null, JSON.stringify(this._model));
+    if (!modelJson)
+        return null;
+    
+    return WorkflowModel.fromObject(JSON.parse(modelJson));
+}
+
+/**
+ * Imports a bpmn2.0 xml into the workflow modeler. If a model with the same key already exists, a new version will be created.
+ * 
+ * @return {WorkflowModel} representation of the created model
+ */
+WorkflowModelerApiCall.prototype.importModel = function ()
+{
+    var modelJson = this._callWebservice(WorkflowModelerApiCall.urls.MODEL_IMPORT(), net.POST, null, this._processXML, MimeTypes.TXT(), {userName : this._authUser});
+    if (!modelJson)
+        return null;
+    
+    return WorkflowModel.fromObject(JSON.parse(modelJson));
+}
+
+
diff --git a/process/workflowDeploy_rest/process.js b/process/workflowDeploy_rest/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..82c3ed4a98aedf4504ec4d250b36a6d6f4e19f90
--- /dev/null
+++ b/process/workflowDeploy_rest/process.js
@@ -0,0 +1,22 @@
+import("system.workflow");
+import("system.util");
+
+function restpost (pRequest)
+{
+    var request = JSON.parse(pRequest);
+    
+    var processObj = JSON.parse(util.decodeBase64String(request.body));
+    if (processObj && processObj.processXML)
+    {
+        var processIds = workflow.getProcessIds(processObj.processXML);
+        processIds = processIds != null ? JSON.parse(processIds) : [];
+        if (processIds.length > 0)
+        {
+            processObj.deploymentId = workflow.deployProcess(processIds[0], processObj.processXML);
+            request.response.statuscode = 200;
+            request.response.body = JSON.stringify(processObj);
+        }
+    }
+    
+    return JSON.stringify(request);
+}
\ No newline at end of file
diff --git a/process/workflowDeploy_rest/workflowDeploy_rest.aod b/process/workflowDeploy_rest/workflowDeploy_rest.aod
new file mode 100644
index 0000000000000000000000000000000000000000..05c891a90280224cd574f42e6347203f67386f3a
--- /dev/null
+++ b/process/workflowDeploy_rest/workflowDeploy_rest.aod
@@ -0,0 +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">
+  <name>workflowDeploy_rest</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/workflowDeploy_rest/process.js</process>
+  <publishAsWebservice v="true" />
+  <style>REST</style>
+  <restAcceptedMimeType>application/json</restAcceptedMimeType>
+  <restDeliveredMimeType>application/json</restDeliveredMimeType>
+  <jditoWebserviceUser>flowableIdmService</jditoWebserviceUser>
+  <variants>
+    <element>EXECUTABLE</element>
+  </variants>
+</process>