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..fd7b4c34897c0014a93213511af9a34c19572d93
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2020.1.1/AlterTablesToDatetime.xml
@@ -0,0 +1,36 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="s.pongratz" id="b2894de0-4a19-4fcb-9412-0a5e91bfec80">
+        <!--<modifyDataType columnName="VALID_TO" newDataType="DATETIME" tableName="DSGVO"/>-->
+        <modifyDataType columnName="DATE_NEW" newDataType="DATETIME" tableName="DSGVO"/>
+        <modifyDataType columnName="DATE_EDIT" newDataType="DATETIME" tableName="DSGVO"/>
+        
+        <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_START" newDataType="DATETIME" tableName="CAMPAIGNSTEP"/>
+        <modifyDataType columnName="DATE_END" 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"/>
+        
+        <!--<modifyDataType columnName="ENTRYDATE" newDataType="DATETIME" tableName="VISITPLANENTRY"/>
+        
+        <modifyDataType columnName="DATEOFBIRTH" newDataType="DATETIME" tableName="PERSON"/>-->
+    </changeSet>
+</databaseChangeLog>
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/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_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/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..174d18bdf2e02d632566658b9ce602aacf9d7388 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,6 +100,7 @@
     </entityField>
     <entityField>
       <name>STATUS</name>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>contactType</name>
@@ -177,6 +180,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/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/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/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..6bb015cb39a37b2b6a4ebc1fb28fbb225534cf58 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>
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/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..0968837cb500a102196278911944e12c5390f590 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>
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..6bec26be42531a4a59b275c0674feb1be0099d62 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>
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/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index d8bfbd275ac29413e596bd0b43dc2348f0b01f1a..446f310d7bc96179cfbcae4721156500e1110b61 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>
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/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/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..40effa0178464da0c7850912345f19c7fa95975a
--- /dev/null
+++ b/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+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/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index 44bc9ab626639e8b99a9f08b176e85a2b8b8d61b..33c8be5fa863f20bd086cdaae53dddae0f233b54 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/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..ad03b6522afbd48721fe07d03882c99076bef351 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>
@@ -305,7 +309,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>
@@ -7770,6 +7774,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Quick Entry</key>
+      <value>Schnelleingabe</value>
     </entry>
     <entry>
       <key>Additional Contacts</key>
@@ -8170,6 +8175,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Send email</key>
+      <value>E-Mail losschicken</value>
     </entry>
     <entry>
       <key>Activites</key>
@@ -8667,6 +8673,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 +8691,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 +8704,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/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/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 fabe25804f2c65f094e89b445c6d10e8f458bd2a..920128f5ff6cb8f4bb2f8378f524c6b4528e3240 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>
@@ -95,5 +95,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..59a9e0f0bd08a03da9afa0b0d6ec613276279bce 100644
--- a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod
+++ b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod
@@ -3,6 +3,7 @@
   <name>WorkflowDefinitionEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <size>SMALL</size>
+  <overlayOrientation>PORTRAIT</overlayOrientation>
   <layout>
     <boxLayout>
       <name>layout</name>
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/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/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/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js
index 9c667f3770c0aeab7853b9d8ad6bfae02981b5b1..fba1180f3e320d66a2c09961d1eba5cfc49380bd 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 = pCondition.replace(new RegExp(pColumnPlaceholder, "g"), 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..486e493fefb492ead224c144e88f270af6d84634 100644
--- a/process/DocumentTemplate_lib/process.js
+++ b/process/DocumentTemplate_lib/process.js
@@ -106,7 +106,7 @@ 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")
+            replacedContent = replacedContent.replace(new RegExp(PlaceholderUtils.formatPlaceholder(pPlaceholder[0]), "g"), pPlaceholder[1])
         }, this);
         
         this._subtemplatedContent = util.encodeBase64String(replacedContent);
@@ -522,7 +522,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,8 +669,8 @@ TemplateHelper._getReplacedODT = function (pTemplate, pReplacements, pTableData)
                  */
                 for (let placeholder in replacements)
                 {
-                    currentBody = currentBody.replace(placeholder,
-                        replacements[placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&amp;"), "ig");
+                    currentBody = currentBody.replace(new RegExp(placeholder, "ig"),
+                        replacements[placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&amp;"));
                 }
                 
                 
@@ -709,8 +709,8 @@ 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,
-                    pReplacements[0][placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&amp;"), "ig");
+                styles = styles.replace(new RegExp(placeholder, "ig"),
+                    pReplacements[0][placeholder].replace(/\n/ig, "<text:line-break/>").replace(/&/ig, "&amp;"));
             }
             pack.addToZip(pODTFileName, "styles.xml", util.encodeBase64String(styles));
             return true;
@@ -772,7 +772,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/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/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]
 }