diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ComunicationMedium_IdDatatype.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ComunicationMedium_IdDatatype.xml
index 3e4f1fbd5b8f119ecc58649bab722422cfdf571b..7153295dc12d1b84566a0af057f0f65bf706f3e9 100644
--- a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ComunicationMedium_IdDatatype.xml
+++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ComunicationMedium_IdDatatype.xml
@@ -1,7 +1,17 @@
 <?xml version="1.1" encoding="UTF-8" standalone="no"?>
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
-                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-    <changeSet author="b.ulrich" id="a9f53bcd-b541-4a46-bd40-a21f7fae7aba">
-        <modifyDataType columnName="MEDIUM_ID" newDataType="CHAR(36)" tableName="COMMUNICATION"/> 
+                   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 dbms="derby" author="b.ulrich" id="bd334096-a6ce-4739-b272-753a85ff103e">
+        <sql>
+            ALTER TABLE COMMUNICATION ADD COLUMN MEDIUM_ID_NEW CHAR(36);
+            UPDATE COMMUNICATION SET MEDIUM_ID_NEW=MEDIUM_ID;
+            ALTER TABLE COMMUNICATION DROP COLUMN MEDIUM_ID;
+            RENAME COLUMN COMMUNICATION.MEDIUM_ID_NEW TO MEDIUM_ID;
+        </sql>
     </changeSet>
+    
+    <changeSet dbms="!derby" author="b.ulrich" id="17c1eb73-3131-4a2b-bf9a-913590767c79">
+        <modifyDataType tableName="COMMUNICATION" columnName="MEDIUM_ID" newDataType="CHAR(36)"/>
+    </changeSet>
+
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml
index 14c64bfefe06b69e868de85bdf8ab9fcd6a093c1..ec607aa9383d71b3ad3c4d1bd8b785c16d489981 100644
--- a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml
+++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml
@@ -1,7 +1,16 @@
 <?xml version="1.1" encoding="UTF-8" standalone="no"?>
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-    <changeSet author="b.ulrich" id="5a0d5d3f-e849-4584-8082-481b1411d1fc">
-        <modifyDataType columnName="DOCUMENTTEMPLATE_ID" newDataType="CHAR(36)" tableName="DOCUMENTTEMPLATE"/> 
+    <changeSet dbms="derby" author="b.ulrich" id="83c25119-cf41-42ab-b42f-370195f9de87">
+        <sql>
+            ALTER TABLE DOCUMENTTEMPLATE ADD COLUMN DOCUMENTTEMPLATEID_NEW CHAR(36);
+            UPDATE DOCUMENTTEMPLATE SET DOCUMENTTEMPLATEID_NEW=DOCUMENTTEMPLATEID;
+            ALTER TABLE DOCUMENTTEMPLATE DROP COLUMN DOCUMENTTEMPLATEID;
+            RENAME COLUMN DOCUMENTTEMPLATE.DOCUMENTTEMPLATEID_NEW TO DOCUMENTTEMPLATEID;
+        </sql>
+    </changeSet>
+    
+    <changeSet dbms="!derby" author="b.ulrich" id="85ba6a61-9318-4118-ac4c-e33730f6581d">
+        <modifyDataType tableName="DOCUMENTTEMPLATE" columnName="DOCUMENTTEMPLATEID" newDataType="CHAR(36)"/>
     </changeSet>
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ExportTemplateDatatype.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ExportTemplateDatatype.xml
index 7de92277180d51eb97a2cb562328e8e46751b43d..237c9fd9e447f01353d895dba2a7c1123e684471 100644
--- a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ExportTemplateDatatype.xml
+++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ExportTemplateDatatype.xml
@@ -1,10 +1,26 @@
 <?xml version="1.1" encoding="UTF-8" standalone="no"?>
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-    <changeSet author="b.ulrich" id="77ee7dcd-cf5b-47ea-a59a-2b1230fad818">
-        <modifyDataType columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)" tableName="EXPORTTEMPLATEPLACEOFUSE"/>
-        <modifyDataType columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)" tableName="EXPORTTEMPLATEFIELD"/>
-        <modifyDataType columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)" tableName="EXPORTTEMPLATESELECTION"/>
-        
+        <changeSet dbms="derby" author="b.ulrich" id="9c551ee3-f4f0-46e4-a671-943b58c74432">
+        <sql>
+            ALTER TABLE EXPORTTEMPLATEPLACEOFUSE ADD COLUMN EXPORTTEMPLATE_ID_NEW CHAR(36);
+            UPDATE EXPORTTEMPLATEPLACEOFUSE SET EXPORTTEMPLATE_ID_NEW=EXPORTTEMPLATE_ID;
+            ALTER TABLE EXPORTTEMPLATEPLACEOFUSE DROP COLUMN EXPORTTEMPLATE_ID;
+            RENAME COLUMN EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATE_ID_NEW TO EXPORTTEMPLATE_ID;
+             ALTER TABLE EXPORTTEMPLATEFIELD ADD COLUMN EXPORTTEMPLATE_ID_NEW CHAR(36);
+            UPDATE EXPORTTEMPLATEFIELD SET EXPORTTEMPLATE_ID_NEW=EXPORTTEMPLATE_ID;
+            ALTER TABLE EXPORTTEMPLATEFIELD DROP COLUMN EXPORTTEMPLATE_ID;
+            RENAME COLUMN EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID_NEW TO EXPORTTEMPLATE_ID;
+             ALTER TABLE EXPORTTEMPLATESELECTION ADD COLUMN EXPORTTEMPLATE_ID_NEW CHAR(36);
+            UPDATE EXPORTTEMPLATESELECTION SET EXPORTTEMPLATE_ID_NEW=EXPORTTEMPLATE_ID;
+            ALTER TABLE EXPORTTEMPLATESELECTION DROP COLUMN EXPORTTEMPLATE_ID;
+            RENAME COLUMN EXPORTTEMPLATESELECTION.EXPORTTEMPLATE_ID_NEW TO EXPORTTEMPLATE_ID;
+        </sql>
+    </changeSet>
+    
+    <changeSet dbms="!derby" author="b.ulrich" id="a53a2f38-3788-44a2-a151-13b3853ccb74">
+        <modifyDataType tableName="EXPORTTEMPLATEPLACEOFUSE" columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)"/>
+        <modifyDataType tableName="EXPORTTEMPLATEFIELD" columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)"/>
+        <modifyDataType tableName="EXPORTTEMPLATESELECTION" columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)"/>
     </changeSet>
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2020.1.2/changelog.xml b/.liquibase/Data_alias/basic/2020.1.2/changelog.xml
index 7564d2c1056f082eed989a808b8dd3c36756a230..88aba8706e9098e1a1b35abad171c97f0dab8e9d 100644
--- a/.liquibase/Data_alias/basic/2020.1.2/changelog.xml
+++ b/.liquibase/Data_alias/basic/2020.1.2/changelog.xml
@@ -1,9 +1,8 @@
 <?xml version="1.1" encoding="UTF-8" standalone="no"?>
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
-    <include file="AlterDocumentTemplatePlaceOfUseDatatype/changelog.xml" relativeToChangelogFile="true"/>
+    <include file="AlterDatatypeOfKeyColumnsToChar/changelog.xml" relativeToChangelogFile="true"/>
     <include file="AddNullableToDateNew.xml" relativeToChangelogFile="true" />
-    <include file="insert_workflowCategory_keyword.xml" relativeToChangelogFile="true"/>
     <include relativeToChangelogFile="true" file="drop_salesorder_unpaid.xml"/>
     <include relativeToChangelogFile="true" file="drop_salesorder_versnr.xml"/>
 </databaseChangeLog>
diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 80c4686210790a754e8528e02b583a833eebcfb3..dbe878d7be0c6e3f4b7dd8c645fcb4547262337b 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -1180,12 +1180,12 @@
                 <name>MEDIUM_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
+                <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <title>Medium</title>
                 <description></description>
                 <customProperties>
@@ -8237,9 +8237,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -8272,10 +8272,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -8529,9 +8529,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -8557,10 +8557,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -8647,9 +8647,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -8696,10 +8696,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -8835,9 +8835,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -8954,10 +8954,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -9267,9 +9267,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -9309,10 +9309,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -11573,9 +11573,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -11601,10 +11601,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -11885,9 +11885,9 @@
                 <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -11920,10 +11920,10 @@
                 <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
+                <columnType v="91" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -14019,12 +14019,12 @@
                 <name>EXPORTTEMPLATE_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
+                <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -14345,12 +14345,12 @@
                 <name>EXPORTTEMPLATE_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
+                <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -14400,12 +14400,12 @@
                 <name>EXPORTTEMPLATE_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
+                <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod
index b9e852b3b2ae077b24a41200d051dad37e408a9a..c9855622f5a88df06c57b8c307adf3df0b6b88e7 100644
--- a/entity/AnyContact_entity/AnyContact_entity.aod
+++ b/entity/AnyContact_entity/AnyContact_entity.aod
@@ -4,7 +4,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/AnyContact_entity/documentation.adoc</documentation>
   <contentTitleProcess>%aditoprj%/entity/AnyContact_entity/contentTitleProcess.js</contentTitleProcess>
-  <onInit>%aditoprj%/entity/AnyContact_entity/onInit.js</onInit>
+  <initFilterProcess>%aditoprj%/entity/AnyContact_entity/initFilterProcess.js</initFilterProcess>
   <imageProcess>%aditoprj%/entity/AnyContact_entity/imageProcess.js</imageProcess>
   <recordContainer>db</recordContainer>
   <entityFields>
diff --git a/entity/AnyContact_entity/initFilterProcess.js b/entity/AnyContact_entity/initFilterProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..695577262bdb7ee4519993bcaf130262075e81ca
--- /dev/null
+++ b/entity/AnyContact_entity/initFilterProcess.js
@@ -0,0 +1,19 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var statusInactive = $KeywordRegistry.contactStatus$inactive();
+var filter = {
+    type: "group",
+    operator: "AND",
+    childs: [{
+        type: "row",
+        name: "STATUS",
+        operator: "NOT_EQUAL",
+        contenttype: "TEXT",
+        key: statusInactive,
+        value: KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusInactive)
+    }]
+};
+
+result.string(JSON.stringify(filter));
\ No newline at end of file
diff --git a/entity/AnyContact_entity/onInit.js b/entity/AnyContact_entity/onInit.js
deleted file mode 100644
index a75a8d405e273b1b3e026251a305676c2ccbd9ad..0000000000000000000000000000000000000000
--- a/entity/AnyContact_entity/onInit.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import("system.neon");
-import("Keyword_lib");
-import("system.vars");
-import("KeywordRegistry_basic");
-
-var statusFilterElement = {
-        "type":"row",
-        "name":"STATUS",
-        "operator":"NOT_EQUAL",
-        "key":$KeywordRegistry.contactStatus$inactive(),
-        "contenttype": "TEXT"
-};
-    
-statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key);
-    
-var filter = {
-        "type":"group",
-        "operator":"AND",
-        "childs": [statusFilterElement]
-};
-    
-filter = JSON.stringify(filter);
-neon.setFilter("#ENTITY", filter);
\ No newline at end of file
diff --git a/entity/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod
index 28c70af66100db91d5c2b61eea6d9ff584fb5832..c68158fb3304f71cc78829cd7f1490171a04782b 100644
--- a/entity/Appointment_entity/Appointment_entity.aod
+++ b/entity/Appointment_entity/Appointment_entity.aod
@@ -183,6 +183,7 @@
         <entityParameter>
           <name>AppointmentState_param</name>
           <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/appointmentlinks/children/appointmentstate_param/valueProcess.js</valueProcess>
+          <expose v="false" />
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/Appointment_entity/entityfields/begin/valueProcess.js b/entity/Appointment_entity/entityfields/begin/valueProcess.js
index 494b5d528f0bac0d2135955a873332e8a462641b..87e3ad4739d488a6973d66b2320eac4c6e31dfd4 100644
--- a/entity/Appointment_entity/entityfields/begin/valueProcess.js
+++ b/entity/Appointment_entity/entityfields/begin/valueProcess.js
@@ -19,8 +19,8 @@ if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$para
 /**
  * Sets explicitly the start date when a preset is sent from the core, due to a move or resize event from the user. Do not remove.
  */
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$param.Entry_param"))
-{
-    let event = JSON.parse(vars.getString("$param.Entry_param"));
-    result.string(event[calendars.DTSTART]);
-}
\ No newline at end of file
+//if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$param.Entry_param"))
+//{
+//    var event = JSON.parse(vars.getString("$param.Entry_param"));
+//    result.string(event[calendars.DTSTART]);
+//}
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/end/valueProcess.js b/entity/Appointment_entity/entityfields/end/valueProcess.js
index 23262e1a868e63515d37b22d4124b1d79728cc74..4f9cd21b8a46a565aab9140cd54114628d793305 100644
--- a/entity/Appointment_entity/entityfields/end/valueProcess.js
+++ b/entity/Appointment_entity/entityfields/end/valueProcess.js
@@ -19,8 +19,8 @@ if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$para
 /**
  * Sets explicitly the end date when a preset is sent from the core, due to a move or resize event from the user. Do not remove.
  */
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$param.Entry_param"))
-{
-    let event = JSON.parse(vars.getString("$param.Entry_param"));
-    result.string(event[calendars.DTEND]);
-}
\ No newline at end of file
+//if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$param.Entry_param"))
+//{
+//    let event = JSON.parse(vars.getString("$param.Entry_param"));
+//    result.string(event[calendars.DTEND]);
+//}
\ No newline at end of file
diff --git a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js
index 7e8972a145953d11163f3fccc1879487dea6e31b..e56415a0faf52007f91bcc4e92f9ae20aebfa819 100644
--- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js
@@ -13,7 +13,25 @@ import("system.neon");
 var appointmentSelect = newSelect("APPOINTMENT_ID").from("AB_APPOINTMENTLINK");
 var appointmentUids;
 
-if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$local.idvalues") != null && vars.get("$local.idvalues") != "")
+/**
+ * Will be used, if the user is operating the calendar.
+ */
+if(vars.exists("$param.Entry_param") && vars.get("$param.Entry_param"))
+{
+    var entry = JSON.parse(vars.getString("$param.Entry_param"));
+
+    var masterEntry = null;
+    if (vars.exists("$param.MasterEntry_param") && vars.get("$param.MasterEntry_param") != "") {
+        masterEntry = JSON.parse(vars.getString("$param.MasterEntry_param"));
+    }
+
+    //@TODO Icon 
+    result.object([
+        buildEntry(entry, masterEntry)
+    ]);
+}
+
+else if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$local.idvalues") != null && vars.get("$local.idvalues") != "")
 {
     var selectedids = vars.get("$local.idvalues");
     result.object([buildEntry(calendars.getEntry(selectedids, null, null), null)]);
@@ -35,23 +53,6 @@ else if(vars.getString("$param.LinkedObjectId_param") != undefined)
     appointmentSelect.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", "$param.LinkedObjectId_param")
     result.object(buildEntriesFromUids(appointmentSelect.table()));
 }
-/**
- * Will be used, if the user is operating the calendar.
- */
-else if(vars.exists("$param.Entry_param") && vars.get("$param.Entry_param"))
-{
-    var entry = JSON.parse(vars.getString("$param.Entry_param"));
-
-    var masterEntry = null;
-    if (vars.exists("$param.MasterEntry_param") && vars.get("$param.MasterEntry_param") != "") {
-        masterEntry = JSON.parse(vars.getString("$param.MasterEntry_param"));
-    }
-
-    //@TODO Icon 
-    result.object([
-        buildEntry(entry, masterEntry)
-    ]);
-}
 
 function buildEntriesFromUids(appointmentUids)
 {
diff --git a/entity/AttributeUsage_entity/entityfields/date_new/valueProcess.js b/entity/AttributeUsage_entity/entityfields/date_new/valueProcess.js
deleted file mode 100644
index 7acb3c80848f54a4c6dfee5efa7a5b8514dd4a71..0000000000000000000000000000000000000000
--- a/entity/AttributeUsage_entity/entityfields/date_new/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.vars");
-import("system.result");
-import("system.neon");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
diff --git a/entity/AttributeUsage_entity/entityfields/user_new/valueProcess.js b/entity/AttributeUsage_entity/entityfields/user_new/valueProcess.js
deleted file mode 100644
index a8a5e28793c742f8f3e10907976e746faf43c67c..0000000000000000000000000000000000000000
--- a/entity/AttributeUsage_entity/entityfields/user_new/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.vars");
-import("system.result");
-import("system.neon");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/date_new/valueProcess.js b/entity/Attribute_entity/entityfields/date_new/valueProcess.js
deleted file mode 100644
index 7acb3c80848f54a4c6dfee5efa7a5b8514dd4a71..0000000000000000000000000000000000000000
--- a/entity/Attribute_entity/entityfields/date_new/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.vars");
-import("system.result");
-import("system.neon");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/keywordattributetype/children/containername_param/valueProcess.js b/entity/Attribute_entity/entityfields/keywordattributetype/children/containername_param/valueProcess.js
deleted file mode 100644
index dc6dfca332983312b5fc1181f8a357c182ac603f..0000000000000000000000000000000000000000
--- a/entity/Attribute_entity/entityfields/keywordattributetype/children/containername_param/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-result.string($KeywordRegistry.attributeType());
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/user_new/valueProcess.js b/entity/Attribute_entity/entityfields/user_new/valueProcess.js
deleted file mode 100644
index a8a5e28793c742f8f3e10907976e746faf43c67c..0000000000000000000000000000000000000000
--- a/entity/Attribute_entity/entityfields/user_new/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.vars");
-import("system.result");
-import("system.neon");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/participantscommrestiction/children/contactid_param/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/participantscommrestiction/children/contactid_param/valueProcess.js
deleted file mode 100644
index f5825a6c09c99e0530939a270bcd81cfbc0c2d5b..0000000000000000000000000000000000000000
--- a/entity/CampaignParticipant_entity/entityfields/participantscommrestiction/children/contactid_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("system.vars");
-
-result.string(vars.getString("$field.CONTACT_ID"));
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/entityfields/selectedcampaign/onValueChange.js b/entity/CampaignParticipant_entity/entityfields/selectedcampaign/onValueChange.js
deleted file mode 100644
index 2bf64744b6548030c6db0cb825f376192bfdf5e1..0000000000000000000000000000000000000000
--- a/entity/CampaignParticipant_entity/entityfields/selectedcampaign/onValueChange.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.neon");
-
-
-neon.setFieldValue("$field.SYSTEMTEMPLATE", templateId);
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/campaign_id/valueProcess.js b/entity/CampaignStep_entity/entityfields/campaign_id/valueProcess.js
index b91c3634ae7fa3229e120ed364433b3f7787b276..04d8b224fd5596fc97753ed1afd61ad16cee5b4c 100644
--- a/entity/CampaignStep_entity/entityfields/campaign_id/valueProcess.js
+++ b/entity/CampaignStep_entity/entityfields/campaign_id/valueProcess.js
@@ -3,5 +3,5 @@ import("system.result");
 import("system.vars");
 
 //For creation of new Step in CampaignMainView
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.campaignId_param") && vars.get("$param.campaignId_param"))
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.campaignId_param") && vars.get("$param.campaignId_param") && !vars.get("$this.value"))
     result.string(vars.get("$param.campaignId_param"));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/state.displayvalue/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/state.displayvalue/expression.js
deleted file mode 100644
index f0e8a44adee3749dafae8e5cba1b67c52701e01a..0000000000000000000000000000000000000000
--- a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/state.displayvalue/expression.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.campaignStepState(), "CAMPAIGNSTEP.STATUS");
-result.string(sql);
\ No newline at end of file
diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod
index a9420fd4fbb060bb56b80f2efa888981a719029e..6f35c476eb9f55b732f36f8bf0a22a9a1cd02921 100644
--- a/entity/Campaign_entity/Campaign_entity.aod
+++ b/entity/Campaign_entity/Campaign_entity.aod
@@ -624,10 +624,6 @@
           <name>CURRENCY.displayValue</name>
           <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>COUNT.value</name>
-          <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression>
-        </dbRecordFieldMapping>
         <aggregateFieldDbMapping>
           <name>COUNT_aggregate.value</name>
           <recordfield>CAMPAIGN.CAMPAIGNID</recordfield>
diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod
index 82c35b3c618ecc933e74b694daa96ad9f97cbfa4..ad05310a9dd5d918ce46a6b17a4ec7564dad10ba 100644
--- a/entity/Contact_entity/Contact_entity.aod
+++ b/entity/Contact_entity/Contact_entity.aod
@@ -8,8 +8,8 @@
   <grantUpdateProcess>%aditoprj%/entity/Contact_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/Contact_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Contact_entity/contentTitleProcess.js</contentTitleProcess>
-  <onInit>%aditoprj%/entity/Contact_entity/onInit.js</onInit>
   <onValidation>%aditoprj%/entity/Contact_entity/onValidation.js</onValidation>
+  <initFilterProcess>%aditoprj%/entity/Contact_entity/initFilterProcess.js</initFilterProcess>
   <iconId>VAADIN:USERS</iconId>
   <titlePlural>Contacts</titlePlural>
   <recordContainer>db</recordContainer>
diff --git a/entity/Contact_entity/initFilterProcess.js b/entity/Contact_entity/initFilterProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..695577262bdb7ee4519993bcaf130262075e81ca
--- /dev/null
+++ b/entity/Contact_entity/initFilterProcess.js
@@ -0,0 +1,19 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var statusInactive = $KeywordRegistry.contactStatus$inactive();
+var filter = {
+    type: "group",
+    operator: "AND",
+    childs: [{
+        type: "row",
+        name: "STATUS",
+        operator: "NOT_EQUAL",
+        contenttype: "TEXT",
+        key: statusInactive,
+        value: KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusInactive)
+    }]
+};
+
+result.string(JSON.stringify(filter));
\ No newline at end of file
diff --git a/entity/Contact_entity/onInit.js b/entity/Contact_entity/onInit.js
deleted file mode 100644
index ad4324c7682881b8e9ca470e334269ae822ec522..0000000000000000000000000000000000000000
--- a/entity/Contact_entity/onInit.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import("system.neon");
-import("Keyword_lib");
-import("system.vars");
-import("KeywordRegistry_basic");
-
-var statusFilterElement = {
-        "type":"row",
-        "name":"STATUS",
-        "operator":"NOT_EQUAL",
-        "key":$KeywordRegistry.contactStatus$inactive(),
-        "contenttype": vars.get("$property.STATUS.contentType")
-};
-    
-statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key);
-    
-var filter = {
-        "type":"group",
-        "operator":"AND",
-        "childs": [statusFilterElement]
-};
-    
-filter = JSON.stringify(filter);
-neon.setFilter("#ENTITY", filter);
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
index 55ac5773b3cb1302c26846d766e066c70d64222f..4ea71164c3cd8f2f93b39be55a3555cbf9b8090a 100644
--- a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
@@ -234,7 +234,7 @@ function _getEntryData(pObjectId, pDirection, pRelationType1, pRelationType2, pP
     if (pRelationType1 == undefined || pRelationType2 == undefined) 
         return [];
     
-    var [myNum, otherNum] = pDirection == "normal" ? [2, 1] : [1, 2];
+    var [myNum, otherNum] = pDirection == "normal" ? [1, 2] : [2, 1];
     
     onConditionForRelationTypeJoin = newWhere("AB_OBJECTRELATIONTYPEID = AB_OBJECTRELATIONTYPE" + myNum)
         .and("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1", pRelationType1)
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index 26fe1fdb3d81b895c3116377537320ae54a77d70..cbd7cb44ef5d77d0e3656bfe5867f3c3f68ce8f8 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -7,8 +7,9 @@
   <title>Company</title>
   <grantDeleteProcess>%aditoprj%/entity/Organisation_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Organisation_entity/contentTitleProcess.js</contentTitleProcess>
-  <onInit>%aditoprj%/entity/Organisation_entity/onInit.js</onInit>
+  <afterUiInit>%aditoprj%/entity/Organisation_entity/afterUiInit.js</afterUiInit>
   <afterOperatingState>%aditoprj%/entity/Organisation_entity/afterOperatingState.js</afterOperatingState>
+  <initFilterProcess>%aditoprj%/entity/Organisation_entity/initFilterProcess.js</initFilterProcess>
   <iconId>VAADIN:BUILDING</iconId>
   <imageProcess>%aditoprj%/entity/Organisation_entity/imageProcess.js</imageProcess>
   <titlePlural>Companies</titlePlural>
diff --git a/entity/Organisation_entity/afterUiInit.js b/entity/Organisation_entity/afterUiInit.js
new file mode 100644
index 0000000000000000000000000000000000000000..d529418d07b0567a96364d831a8a27194c2eca23
--- /dev/null
+++ b/entity/Organisation_entity/afterUiInit.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.vars");
+import("Context_lib");
+import("Attribute_lib");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes");
\ No newline at end of file
diff --git a/entity/Organisation_entity/initFilterProcess.js b/entity/Organisation_entity/initFilterProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..26ce7fa02bbaeaa2d25db318aa011b67278354cc
--- /dev/null
+++ b/entity/Organisation_entity/initFilterProcess.js
@@ -0,0 +1,19 @@
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+import("system.result");
+
+var statusInactive = $KeywordRegistry.contactStatus$inactive();
+var filter = {
+    type: "group",
+    operator: "AND",
+    childs: [{
+        type: "row",
+        name: "STATUS",
+        operator: "NOT_EQUAL",
+        contenttype: "TEXT",
+        key: statusInactive,
+        value: KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusInactive)
+    }]
+};
+    
+result.string(JSON.stringify(filter));
\ No newline at end of file
diff --git a/entity/Organisation_entity/onInit.js b/entity/Organisation_entity/onInit.js
deleted file mode 100644
index b9717583554415c62b48c4ad8304aceb87245938..0000000000000000000000000000000000000000
--- a/entity/Organisation_entity/onInit.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-import("system.neon");
-import("system.vars");
-import("Context_lib");
-import("Attribute_lib");
-
-var statusFilterElement = {
-        "type":"row",
-        "name":"STATUS",
-        "operator":"NOT_EQUAL",
-        "key":$KeywordRegistry.contactStatus$inactive(),
-        "contenttype": "TEXT"
-};
-    
-statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key);
-    
-var filter = {
-        "type":"group",
-        "operator":"AND",
-        "childs": [statusFilterElement]
-};
-    
-filter = JSON.stringify(filter);
-neon.setFilter("#ENTITY", filter);
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-{
-    AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes");
-}
diff --git a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod
index a238832f1d236913854ff9ffa634281c3081d5ec..c2faec477ab09d9a7d1b57c5c8f74b8f4bf4fc19 100644
--- a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod
+++ b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod
@@ -96,6 +96,7 @@
           <isMenuAction v="true" />
           <isObjectAction v="false" />
           <isSelectionAction v="false" />
+          <iconId>VAADIN:USER</iconId>
           <state>AUTO</state>
           <tooltip></tooltip>
         </entityActionField>
@@ -104,6 +105,7 @@
           <title>Receive new Department Permission</title>
           <onActionProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/addactions/children/receivenewdepartmentpermissiondealteraction/onActionProcess.js</onActionProcess>
           <isObjectAction v="false" />
+          <iconId>VAADIN:GROUP</iconId>
           <state>AUTO</state>
         </entityActionField>
       </children>
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index cbabea32766c97f2a7d1faa4fcc2ede5fd2a3048..907d1408a4c2c5606ddcc61e47249d015939e3e3 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -10,9 +10,10 @@
   </siblings>
   <grantDeleteProcess>%aditoprj%/entity/Person_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Person_entity/contentTitleProcess.js</contentTitleProcess>
-  <onInit>%aditoprj%/entity/Person_entity/onInit.js</onInit>
+  <afterUiInit>%aditoprj%/entity/Person_entity/afterUiInit.js</afterUiInit>
   <onValidation>%aditoprj%/entity/Person_entity/onValidation.js</onValidation>
   <afterOperatingState>%aditoprj%/entity/Person_entity/afterOperatingState.js</afterOperatingState>
+  <initFilterProcess>%aditoprj%/entity/Person_entity/initFilterProcess.js</initFilterProcess>
   <iconId>VAADIN:USERS</iconId>
   <imageProcess>%aditoprj%/entity/Person_entity/imageProcess.js</imageProcess>
   <usePermissions v="false" />
diff --git a/entity/Person_entity/afterUiInit.js b/entity/Person_entity/afterUiInit.js
new file mode 100644
index 0000000000000000000000000000000000000000..d529418d07b0567a96364d831a8a27194c2eca23
--- /dev/null
+++ b/entity/Person_entity/afterUiInit.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.vars");
+import("Context_lib");
+import("Attribute_lib");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes");
\ No newline at end of file
diff --git a/entity/Person_entity/initFilterProcess.js b/entity/Person_entity/initFilterProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..26ce7fa02bbaeaa2d25db318aa011b67278354cc
--- /dev/null
+++ b/entity/Person_entity/initFilterProcess.js
@@ -0,0 +1,19 @@
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+import("system.result");
+
+var statusInactive = $KeywordRegistry.contactStatus$inactive();
+var filter = {
+    type: "group",
+    operator: "AND",
+    childs: [{
+        type: "row",
+        name: "STATUS",
+        operator: "NOT_EQUAL",
+        contenttype: "TEXT",
+        key: statusInactive,
+        value: KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusInactive)
+    }]
+};
+    
+result.string(JSON.stringify(filter));
\ No newline at end of file
diff --git a/entity/Person_entity/onInit.js b/entity/Person_entity/onInit.js
deleted file mode 100644
index 1958e327f289481afe51088aa62d5d57af3a782f..0000000000000000000000000000000000000000
--- a/entity/Person_entity/onInit.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-import("system.neon");
-import("system.vars");
-import("Context_lib");
-import("Attribute_lib");
-
-var statusFilterElement = {
-        "type":"row",
-        "name":"STATUS",
-        "operator":"NOT_EQUAL",
-        "key":$KeywordRegistry.contactStatus$inactive(),
-        "contenttype": "TEXT"
-};
-    
-statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key);
-    
-var filter = {
-        "type":"group",
-        "operator":"AND",
-        "childs": [statusFilterElement]
-};
-    
-filter = JSON.stringify(filter);
-neon.setFilter("#ENTITY", filter);   
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-{
-    AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes");
-}
diff --git a/entity/Salesproject_entity/onValidation.js b/entity/Salesproject_entity/onValidation.js
index e0b1e589a7543108c938f3dbb1d9c75b58908753..c9618796815b4f0e83c28c43a12320cd981a3ed9 100644
--- a/entity/Salesproject_entity/onValidation.js
+++ b/entity/Salesproject_entity/onValidation.js
@@ -1,3 +1,4 @@
+import("system.translate");
 import("system.result");
 import("Date_lib");
 import("system.vars");
@@ -6,4 +7,6 @@ var startDate = vars.get("$field.STARTDATE");
 var endDate = vars.get("$field.ENDDATE");
 
 if (!DateUtils.validateBeginnBeforeEnd(startDate, endDate))
-    result.string(DateUtils.getValidationFailString());
\ No newline at end of file
+    result.string(DateUtils.getValidationFailString());
+else if(!vars.get("$field.PROJECTTITLE") && vars.get("$field.PROJECTTYPE") && vars.exists("$param.PresetTitle_param"))
+    result.string(translate.text("The Sales Project can only be filled when a company has been specified"));
\ No newline at end of file
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 14cdb18785867088dbb7220fa1bb33afc7b479a3..64f381e93f98b991c2c8502acfc95780050d98c6 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -6,8 +6,9 @@
   <title>Task</title>
   <grantDeleteProcess>%aditoprj%/entity/Task_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Task_entity/contentTitleProcess.js</contentTitleProcess>
-  <onInit>%aditoprj%/entity/Task_entity/onInit.js</onInit>
+  <afterUiInit>%aditoprj%/entity/Task_entity/afterUiInit.js</afterUiInit>
   <onValidation>%aditoprj%/entity/Task_entity/onValidation.js</onValidation>
+  <initFilterProcess>%aditoprj%/entity/Task_entity/initFilterProcess.js</initFilterProcess>
   <iconId>VAADIN:TASKS</iconId>
   <iconIdProcess>%aditoprj%/entity/Task_entity/iconIdProcess.js</iconIdProcess>
   <titlePlural>Tasks</titlePlural>
diff --git a/entity/Task_entity/afterUiInit.js b/entity/Task_entity/afterUiInit.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f108ba446930b67156ba07b5e880b1ff371117a
--- /dev/null
+++ b/entity/Task_entity/afterUiInit.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("ActivityTask_lib");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    TaskUtils.addLinkRecords("$param.ObjectId_param", "$param.RowId_param", "$param.PresetLinks_param", "$field.PARENT_CONTEXT", "$field.PARENT_ID");
\ No newline at end of file
diff --git a/entity/Task_entity/initFilterProcess.js b/entity/Task_entity/initFilterProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..39b6e0b2e29be0e89c1cf8279ab9c9ae93a74ab9
--- /dev/null
+++ b/entity/Task_entity/initFilterProcess.js
@@ -0,0 +1,19 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var statusEnded = $KeywordRegistry.taskStatus$ended();
+var filter = {
+    type: "group",
+    operator: "AND",
+    childs: [{
+        type: "row",
+        name: "STATUS",
+        operator: "NOT_EQUAL",
+        contenttype: "TEXT",
+        key: statusEnded,
+        value: KeywordUtils.getViewValue($KeywordRegistry.taskStatus(), statusEnded)
+    }]
+};
+
+result.string(JSON.stringify(filter));
\ No newline at end of file
diff --git a/entity/Task_entity/onInit.js b/entity/Task_entity/onInit.js
deleted file mode 100644
index 0a610862cbb9ecae7e44e15eabbc31b0b20eceda..0000000000000000000000000000000000000000
--- a/entity/Task_entity/onInit.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import("system.neon");
-import("system.vars");
-import("system.neon");
-import("ActivityTask_lib");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-var recordState = vars.get("$sys.recordstate");
-if(recordState == neon.OPERATINGSTATE_NEW)
-{
-    TaskUtils.addLinkRecords("$param.ObjectId_param", "$param.RowId_param", "$param.PresetLinks_param", "$field.PARENT_CONTEXT", "$field.PARENT_ID");
-}
-else if (recordState != neon.OPERATINGSTATE_SEARCH)
-{
-    var statusFilterElement = {
-        "type":"row",
-        "name":"STATUS",
-        "operator":"NOT_EQUAL",
-        "key":$KeywordRegistry.taskStatus$ended(),
-        "contenttype": "TEXT"
-    };
-    statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.taskStatus(), statusFilterElement.key);
-    
-    var filter = {
-        "type":"group",
-        "operator":"AND",
-        "childs": [statusFilterElement]
-    };
-    filter = JSON.stringify(filter);
-    neon.setFilter("#ENTITY", filter);
-}
\ No newline at end of file
diff --git a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
index 1cd52f7035f12fffa8d282df67384589bd7c0eb5..db719f1fd0c9f75968b75227ffc77044223ce190 100644
--- a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
+++ b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod
@@ -7,7 +7,6 @@
   <grantCreateProcess>%aditoprj%/entity/WorkflowDefinition_entity/grantCreateProcess.js</grantCreateProcess>
   <grantDelete v="false" />
   <contentTitleProcess>%aditoprj%/entity/WorkflowDefinition_entity/contentTitleProcess.js</contentTitleProcess>
-  <onInit>%aditoprj%/entity/WorkflowDefinition_entity/onInit.js</onInit>
   <iconId>VAADIN:DROP</iconId>
   <titlePlural>Workflow definitions</titlePlural>
   <recordContainer>jdito</recordContainer>
diff --git a/entity/WorkflowDefinition_entity/entityfields/categorykeyword/children/containername_param/valueProcess.js b/entity/WorkflowDefinition_entity/entityfields/categorykeyword/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d79eb290d58d4f19fbd534e91b252388749224ce
--- /dev/null
+++ b/entity/WorkflowDefinition_entity/entityfields/categorykeyword/children/containername_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.workflowCategory());
\ No newline at end of file
diff --git a/entity/WorkflowDefinition_entity/onInit.js b/entity/WorkflowDefinition_entity/onInit.js
deleted file mode 100644
index 7199fd35b05e991cb7f35e577f1a7e593a28c60e..0000000000000000000000000000000000000000
--- a/entity/WorkflowDefinition_entity/onInit.js
+++ /dev/null
@@ -1,20 +0,0 @@
-import("system.neon");
-import("system.vars");
-import("system.translate");
-
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW && vars.get("$sys.viewmode") == neon.FRAME_VIEWMODE_DATASET)
-{
-    var filterOnlyUnfinished = {
-        type : "group",
-        operator : "AND",
-        childs : [{
-            type : "row",
-            name : "ISFINISHED",
-            operator : "EQUAL",
-            value : translate.text("No"),
-            key : "false",
-            contenttype : "BOOLEAN"
-        }]
-    };
-    neon.setFilter("Instances", JSON.stringify(filterOnlyUnfinished));
-}
\ No newline at end of file
diff --git a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod
index 37c5a337ba3fef1c5b2d8e9c3574bbea5404ef21..765793b9f379e0c813bca3b508491cf0dcba0421 100644
--- a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod
+++ b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod
@@ -5,6 +5,7 @@
   <documentation>%aditoprj%/entity/WorkflowInstance_entity/documentation.adoc</documentation>
   <title>Workflow instance</title>
   <contentTitleProcess>%aditoprj%/entity/WorkflowInstance_entity/contentTitleProcess.js</contentTitleProcess>
+  <initFilterProcess>%aditoprj%/entity/WorkflowInstance_entity/initFilterProcess.js</initFilterProcess>
   <titlePlural>Workflow instances</titlePlural>
   <recordContainer>jdito</recordContainer>
   <entityFields>
diff --git a/entity/WorkflowInstance_entity/initFilterProcess.js b/entity/WorkflowInstance_entity/initFilterProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..80a38560e27c2236fec97c140cbce55462a7c809
--- /dev/null
+++ b/entity/WorkflowInstance_entity/initFilterProcess.js
@@ -0,0 +1,17 @@
+import("system.result");
+import("system.translate");
+
+var filterOnlyUnfinished = {
+    type : "group",
+    operator : "AND",
+    childs : [{
+        type : "row",
+        name : "ISFINISHED",
+        operator : "EQUAL",
+        value : translate.text("No"),
+        key : "false",
+        contenttype : "BOOLEAN"
+    }]
+};
+
+result.string(JSON.stringify(filterOnlyUnfinished));
\ No newline at end of file
diff --git a/entity/WorkflowTask_entity/WorkflowTask_entity.aod b/entity/WorkflowTask_entity/WorkflowTask_entity.aod
index f5bcf9949894d5335e68613b990e62b9066e0208..3ffbe846c77cc3e4d64c7ed734ff2399dc30450a 100644
--- a/entity/WorkflowTask_entity/WorkflowTask_entity.aod
+++ b/entity/WorkflowTask_entity/WorkflowTask_entity.aod
@@ -27,6 +27,7 @@
     </entityField>
     <entityField>
       <name>FORMDEFINITION</name>
+      <valueProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>FORMRESULT</name>
@@ -257,9 +258,6 @@
           <isFilterable v="true" />
           <isLookupFilter v="true" />
         </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>FORMDEFINITION.value</name>
-        </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>FORMRESULT.value</name>
         </jDitoRecordFieldMapping>
diff --git a/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js b/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8fc3f05f70c0f41c45cc8b15489f265bfd8695d4
--- /dev/null
+++ b/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.vars");
+import("system.workflow");
+import("system.neon");
+
+//the value of this field can be set by the onValueChange process of FORMRESULT
+
+if (vars.get("$this.value") == null)
+    result.string(workflow.getFormProperties(vars.get("$field.UID")));
\ No newline at end of file
diff --git a/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js b/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js
index de6e83f10c3755c6281daacaedff352aeb93ba55..ed15981f641e6ef0941c2d5298ba177b24c8a080 100644
--- a/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js
@@ -96,7 +96,6 @@ result.object((function ()
             task.processDefinitionId,
             task.processInstanceId,
             Date.parse(task.createTime).toString(),
-            workflow.getFormProperties(task.id) || "",
             "",
             variables.USER_ID || "",
             task.description || "",
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index ed12fc0f39983f65d9e03fa38e9411b86427147a..d339195f21f074660303e10b1a80ce278c3bb123 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -6807,55 +6807,73 @@
       <key>Settings</key>
     </entry>
     <entry>
-      <key>workflow notification</key>
+      <key>No new recipients found that can be added to the bulk mail.</key>
     </entry>
     <entry>
-      <key>Permission received</key>
+      <key>Add Recipients</key>
     </entry>
     <entry>
-      <key>leadimport notification</key>
+      <key>Add Participants</key>
     </entry>
     <entry>
-      <key>granted permission</key>
+      <key>Download letter and create Activity</key>
     </entry>
     <entry>
-      <key>bulk mail sent</key>
+      <key>and open Report</key>
     </entry>
     <entry>
-      <key>download ready</key>
+      <key>export</key>
     </entry>
     <entry>
-      <key>No new recipients found that can be added to the bulk mail.</key>
+      <key>export using the selected  template</key>
     </entry>
     <entry>
-      <key>Add Recipients</key>
+      <key>No new recipients found that can be added to the serial letter.</key>
     </entry>
     <entry>
-      <key>Add Participants</key>
+      <key>send mail</key>
     </entry>
     <entry>
-      <key>Download letter and create Activity</key>
+      <key>and open modeler</key>
     </entry>
     <entry>
-      <key>and open Report</key>
+      <key>Create model</key>
     </entry>
     <entry>
-      <key>export</key>
+      <key>Edit workflow</key>
     </entry>
     <entry>
-      <key>export using the selected  template</key>
+      <key>Receive new Department Permission</key>
     </entry>
     <entry>
-      <key>No new recipients found that can be added to the serial letter.</key>
+      <key>Receive new User Permission</key>
     </entry>
     <entry>
-      <key>send mail</key>
+      <key>workflow notification</key>
     </entry>
     <entry>
-      <key>Add new Department Permission</key>
+      <key>Permission received</key>
     </entry>
-     <entry>
-      <key>Add new User Permission</key>
+    <entry>
+      <key>leadimport notification</key>
+    </entry>
+    <entry>
+      <key>granted permission</key>
+    </entry>
+    <entry>
+      <key>bulk mail sent</key>
+    </entry>
+    <entry>
+      <key>download ready</key>
+    </entry>
+    <entry>
+      <key>Total in euros</key>
+    </entry>
+    <entry>
+      <key>Workflow Model</key>
+    </entry>
+    <entry>
+      <key>The Sales Project can only be filled when a company has been specified</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 a4c956a47885f4d1a8c17b2e4c016cc676c2df32..f62aa2329c256caefa04592d5baee0d201e9aae6 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -8187,6 +8187,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Send email</key>
+      <value>E-Mail losschicken</value>
     </entry>
     <entry>
       <key>Activites</key>
@@ -8264,6 +8265,10 @@ Bitte Datumseingabe prüfen</value>
       <key>Contactreport</key>
       <value>Kontaktbericht</value>
     </entry>
+    <entry>
+      <key>The Sales Project can only be filled when a company has been specified</key>
+      <value>Das Vertriebsprojekt kann nur ausgefüllt werden, wenn eine Firma angegeben ist</value>
+    </entry>
     <entry>
       <key>Appointment planned</key>
       <value>Termin vereinbart</value>
@@ -8578,6 +8583,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Zip</key>
+      <value>PLZ</value>
     </entry>
     <entry>
       <key>type</key>
@@ -8734,67 +8740,69 @@ Bitte Datumseingabe prüfen</value>
       <value>gültig ab (in </value>
     </entry>
     <entry>
-      <key>workflow notification</key>
+      <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>Permission received</key>
-      <value>erhaltene Berechtigung</value>
+      <key>Add Recipients</key>
+      <value>Empfänger hinzufügen</value>
     </entry>
     <entry>
-      <key>leadimport notification</key>
+      <key>Add Participants</key>
+      <value>Teilnehmer hinzufügen</value>
     </entry>
     <entry>
-      <key>granted permission</key>
-      <value>vergebene Berechtigung</value>
+      <key>Download letter and create Activity</key>
+      <value>Brief herunterladen und Aktivität erstellen</value>
     </entry>
     <entry>
-      <key>bulk mail sent</key>
+      <key>and open Report</key>
+      <value>und Report öffnen</value>
     </entry>
     <entry>
-      <key>download ready</key>
+      <key>export</key>
     </entry>
     <entry>
-      <key>Receive new Department Permission</key>
-      <value>Neue Abteilungs-Berechtigung erhalten</value>
+      <key>export using the selected  template</key>
+      <value>Mit der ausgewählten Vorlage Exportieren</value>
     </entry>
     <entry>
-      <key>Receive new User Permission</key>
-      <value>Neue Benutzer-Berechtigung erhalten</value>
+      <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>export</key>
+      <key>send mail</key>
+      <value>E-Mail losschicken</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>
+      <key>Receive new Department Permission</key>
     </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>
+      <key>Receive new User Permission</key>
     </entry>
     <entry>
-      <key>export using the selected  template</key>
-      <value>Mit der ausgewählten Vorlage Exportieren</value>
+      <key>workflow notification</key>
     </entry>
     <entry>
-      <key>send mail</key>
-      <value>E-Mail losschicken</value>
+      <key>Permission received</key>
     </entry>
     <entry>
-      <key>Download letter and create Activity</key>
-      <value>Brief herunterladen und Aktivität erstellen</value>
+      <key>leadimport notification</key>
     </entry>
     <entry>
-      <key>Add Participants</key>
-      <value>Teilnehmer hinzufügen</value>
+      <key>granted permission</key>
     </entry>
     <entry>
-      <key>and open Report</key>
-      <value>und Report öffnen</value>
+      <key>bulk mail sent</key>
     </entry>
     <entry>
-      <key>Add Recipients</key>
-      <value>Empfänger hinzufügen</value>
+      <key>download ready</key>
+    </entry>
+    <entry>
+      <key>Total in euros</key>
+    </entry>
+    <entry>
+      <key>Workflow Model</key>
     </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 f795919fd82d323b6293b5b6ada7effe00920d07..dd32b2a7b3caf16d762271d43e41d228628bf79d 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -6873,55 +6873,73 @@
       <key>Settings</key>
     </entry>
     <entry>
-      <key>workflow notification</key>
+      <key>No new recipients found that can be added to the bulk mail.</key>
     </entry>
     <entry>
-      <key>Permission received</key>
+      <key>Add Recipients</key>
     </entry>
     <entry>
-      <key>leadimport notification</key>
+      <key>Add Participants</key>
     </entry>
     <entry>
-      <key>granted permission</key>
+      <key>Download letter and create Activity</key>
     </entry>
     <entry>
-      <key>bulk mail sent</key>
+      <key>and open Report</key>
     </entry>
     <entry>
-      <key>download ready</key>
+      <key>export</key>
     </entry>
     <entry>
-      <key>No new recipients found that can be added to the bulk mail.</key>
+      <key>export using the selected  template</key>
     </entry>
     <entry>
-      <key>Add Recipients</key>
+      <key>No new recipients found that can be added to the serial letter.</key>
     </entry>
     <entry>
-      <key>Add Participants</key>
+      <key>send mail</key>
     </entry>
     <entry>
-      <key>Download letter and create Activity</key>
+      <key>Receive new Department Permission</key>
     </entry>
     <entry>
-      <key>and open Report</key>
+      <key>Receive new User Permission</key>
     </entry>
     <entry>
-      <key>export</key>
+      <key>and open modeler</key>
     </entry>
     <entry>
-      <key>export using the selected  template</key>
+      <key>Create model</key>
     </entry>
     <entry>
-      <key>No new recipients found that can be added to the serial letter.</key>
+      <key>Edit workflow</key>
     </entry>
     <entry>
-      <key>send mail</key>
+      <key>workflow notification</key>
     </entry>
     <entry>
-      <key>Receive new Department Permission</key>
+      <key>Permission received</key>
     </entry>
     <entry>
-      <key>Receive new User Permission</key>
+      <key>leadimport notification</key>
+    </entry>
+    <entry>
+      <key>granted permission</key>
+    </entry>
+    <entry>
+      <key>bulk mail sent</key>
+    </entry>
+    <entry>
+      <key>download ready</key>
+    </entry>
+    <entry>
+      <key>Total in euros</key>
+    </entry>
+    <entry>
+      <key>Workflow Model</key>
+    </entry>
+    <entry>
+      <key>The Sales Project can only be filled when a company has been specified</key>
     </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
diff --git a/neonContext/Product/Product.aod b/neonContext/Product/Product.aod
index 455bfd342154a96988ccb39462c28d9f9ddee768..7d36aaa10f0f067db17fc1a209b7905efb611917 100644
--- a/neonContext/Product/Product.aod
+++ b/neonContext/Product/Product.aod
@@ -8,7 +8,7 @@
   <filterView>ProductFilter_view</filterView>
   <editView>ProductEdit_view</editView>
   <previewView>ProductPreview_view</previewView>
-  <lookupView>ProductFilter_view</lookupView>
+  <lookupView>ProductLookup_view</lookupView>
   <entity>Product_entity</entity>
   <references>
     <neonViewReference>
@@ -27,5 +27,9 @@
       <name>5580ead4-2257-4cdb-a3ac-5e7067c4c1ab</name>
       <view>ProductPreview_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>ec872778-87d1-4070-a3da-3808da326119</name>
+      <view>ProductLookup_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
index 23c9de063b24cd94a46c4d2e998832ff9c752798..727a644d89918b72ba8e573978d45cf9f7118157 100644
--- a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
+++ b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
@@ -27,6 +27,7 @@
       <organizerField>ORGANIZER</organizerField>
       <ownerField>OWNER</ownerField>
       <categoriesField>CATEGORIES</categoriesField>
+      <recurrenceIdField>RECURRENCEID</recurrenceIdField>
       <favoriteActionGroup1>PartStatActionGroup</favoriteActionGroup1>
       <favoriteActionGroup2>seriesActionGroup</favoriteActionGroup2>
       <entityField>#ENTITY</entityField>
diff --git a/neonView/ProductLookup_view/ProductLookup_view.aod b/neonView/ProductLookup_view/ProductLookup_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..e038ed3765c689f36212619cc246abf2196bd6f9
--- /dev/null
+++ b/neonView/ProductLookup_view/ProductLookup_view.aod
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6">
+  <name>ProductLookup_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/neonView/ProductLookup_view/documentation.adoc</documentation>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>table</name>
+      <titleField>PRODUCTNAME</titleField>
+      <subtitleField>PRODUCTCODE</subtitleField>
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>PRODUCTNAME</element>
+      </linkedColumns>
+      <columns>
+        <neonTableColumn>
+          <name>6d4cafea-bc73-4df1-949e-1aba224780ed</name>
+          <entityField>#IMAGE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>ef5fa8f0-7a72-4201-ad2e-44496490d2b2</name>
+          <entityField>PRODUCTCODE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>35834ce8-cd8b-452f-b558-484d2a3a8f02</name>
+          <entityField>PRODUCTNAME</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>f125dbe5-3f46-46dc-b037-4765b115997f</name>
+          <entityField>GROUPCODEID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>40b14795-afcb-4ae5-b5df-cd667a5b8219</name>
+          <entityField>STATUS</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>86fce471-6d2e-4066-9bdb-2ed04f940f7d</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>2a2e74e4-dc45-4133-92d6-f2797fc3dcd7</name>
+          <entityField>UNIT</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ProductLookup_view/documentation.adoc b/neonView/ProductLookup_view/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..38d4dc8ee1b0f1fd3d772287075d7adb212b09df
--- /dev/null
+++ b/neonView/ProductLookup_view/documentation.adoc
@@ -0,0 +1,3 @@
+== ProductLookup_view
+
+Needed, because using the normal filterview as the lookup would result in the tileTemplate being used as the lookup.
\ No newline at end of file
diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js
index f64477390ffc247d5e6fd9768f2840dae133c1e1..81a5208ba9200da0a4296046c55485446b2f78a5 100644
--- a/process/AttributeFilter_lib/process.js
+++ b/process/AttributeFilter_lib/process.js
@@ -155,7 +155,7 @@ AttributeFilterExtensionMaker.getFilterValues = function(pFilter)
     var attrType = name.type;
     if (attrType == $AttributeTypes.VOID.toString())
         attrType = $AttributeTypes.BOOLEAN.toString();
-    var res = AttributeUtil.getPossibleListValues(attributeId, attrType);
+    var res = AttributeUtil.getPossibleListValues(attributeId, attrType, true);
     if (res == null)
         res = [];
     return res;
diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js
index 40eed67b874f583649eda1b1369df0ea870e9921..9fd2230221263fd1de7423ef86b50dd8fbdfe473 100644
--- a/process/Attribute_lib/process.js
+++ b/process/Attribute_lib/process.js
@@ -148,7 +148,7 @@ AttributeUtil.getPossibleListValues = function (pAttributeId, pAttributeType, pI
 {
     var attributeId = pAttributeId;
     var attrType = pAttributeType.trim();
-    var onlyActives = (pIncludeInactives == undefined ? false : pIncludeInactives);
+    var onlyActives = !pIncludeInactives;
     if (attrType == $AttributeTypes.COMBO.toString())
     {
         var valuesSelect = newSelect("AB_ATTRIBUTEID, ATTRIBUTE_NAME")
diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js
index 83ad817a1b9487b240e512d26d127e7f2b6a74e8..59bed651862041d08e72db34ad3256cab51d8acc 100644
--- a/process/Context_lib/process.js
+++ b/process/Context_lib/process.js
@@ -593,20 +593,6 @@ ContextUtils.getSelectMap  = function()
                             $KeywordRegistry.taskStatus$customerChecks(),
                         ])
                         .setCreationDateField("TASK.START_DATE")
-            ,"SupportTicket": ContextSelector.create("TICKET", "TICKETID", "TASK.SUBJECT")
-                        .setJoinExpression("left join TASK on TASK.TASKID = TICKET.TASK_ID left join TASKLINK on TASKLINK.TASK_ID = TASK.TASKID")
-                        .setCondition(newWhere("TICKET.TICKETTYPE", $KeywordRegistry.ticketType$supportTicket()))
-                        .setContactIdField("TASKLINK.OBJECT_ROWID")
-                        .setStateField("TASK.STATUS")
-                        .setActiveStates([
-                            $KeywordRegistry.taskStatus$new(),
-                            $KeywordRegistry.taskStatus$unassigned(),
-                            $KeywordRegistry.taskStatus$assigned(),
-                            $KeywordRegistry.taskStatus$inProgress(),
-                            $KeywordRegistry.taskStatus$waiting(),
-                            $KeywordRegistry.taskStatus$customerChecks(),
-                        ])
-                        .setCreationDateField("TASK.START_DATE")
             ,"BulkMail" : ContextSelector.create("BULKMAIL", "BULKMAILID", "NAME")
             ,"SerialLetter" : ContextSelector.create("SERIALLETTER", "SERIALLETTERID", "TITLE")
             ,"Leadimport": ContextSelector.create("LEADIMPORT", "LEADIMPORTID")
diff --git a/process/DocxTemplater_lib/process.js b/process/DocxTemplater_lib/process.js
index e9cd6c748fa3f8ba17d1c5c13795ee659ab3459d..8306c0421438b2cdc1e8f38940979b25bb0ba41e 100644
--- a/process/DocxTemplater_lib/process.js
+++ b/process/DocxTemplater_lib/process.js
@@ -85,7 +85,7 @@ function _getAutoNewLineModule()
             if (value == null)
                 value = options.nullGetter(part);
             else
-                value = value.replace(/(\r\n)|(\n)|(\r)/g, "\n<w:br/>");
+                value = value.replace(/(\r\n)|(\n)|(\r)/g, "</w:t></w:r><w:r><w:br/></w:r><w:r><w:t xml:space=\"preserve\">");
 
             return {
                 value: value
diff --git a/process/Email_lib/process.js b/process/Email_lib/process.js
index a8645c40d5c729a1546a105048f48020e1369931..94a4ab8ba9daa08c1021663cb1d6435a661e94c7 100644
--- a/process/Email_lib/process.js
+++ b/process/Email_lib/process.js
@@ -28,6 +28,7 @@ function EmailWritingUtils () {}
  * @param {Array} [pAttachments] attachments in a array (base64 encoded).
  * @param {String} pSubject an optional subject.
  * @param {String} [pEmailFilename] filename of the email.
+ * @param {Placeholder[]} [pAdditionalPlaceholders] additional placeholders
  * @return {Array} the eml document as array with [filename, base64]
  */
 EmailWritingUtils.openMailTemplate = function (pToRecipients, pSenderContactId, pTemplateId, pRecipientContactId, pBindata, pAttachments, pSubject, pEmailFilename, pAdditionalPlaceholders)
@@ -169,6 +170,7 @@ Email.fromRFC = function (pBase64RFC)
  * @param {String} [pTemplateId] UUID of the explicit template which shall used. (optional)
  * @param {String} [pContactId] (required)
  * @param {String} [pBindata] (required)
+ * @param {Placeholder[]} [pAdditionalPlaceholders] additional placeholders
  * @return {Email} a new Email object
  */
 Email.fromTemplate = function (pTemplateId, pContactId, pBindata, pAdditionalPlaceholders)
diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js
index 9e6137b3ebbc088ec3a49495ac7a8b138cd5c7bd..d24d07552af5498326763f378b323980a41d0737 100644
--- a/process/JditoFilter_lib/process.js
+++ b/process/JditoFilter_lib/process.js
@@ -1,6 +1,7 @@
 import("system.tools");
 import("system.logging");
 import("Sql_lib");
+import("system.datetime");
 
 /**
  * object for filtering records
@@ -117,6 +118,8 @@ JditoFilter.prototype.checkRecord = function (pRow)
             case "TIMEFRAME_EQUAL":
             case "TIMEFRAME_COMING":
             case "TIMEFRAME_PAST":
+                var [start, end] = datetime.resolveRelativeDateExpression(pFilterValue);
+                return pRowValue >= start && pRowValue <= end;
         }
     }
 }
@@ -211,16 +214,163 @@ JditoFilterUtils.filterRecords = function (pColumns, pRecords, pFilter, pCustomC
  */
 JditoFilterUtils.getSqlCondition = function (pFilter, pTable, pTableAlias, pColumnOrFnMap)
 {
-    var condition = newWhere();
+    var filterTranslator = new FilterSqlTranslator(pFilter)
+        .table(pTable, pTableAlias);
     
-    var ignoreCase = JditoFilterUtils.isUserIgnoreCase();
-    
-    if (!pFilter)
+    if (pColumnOrFnMap)
+    {
+        for (let fieldName in pColumnOrFnMap)
+        {
+            var columnOrFn = pColumnOrFnMap[fieldName];
+            if (typeof columnOrFn === "function")
+                filterTranslator.addSpecialFieldConditionFn(fieldName, columnOrFn);
+            else
+                filterTranslator.addSqlFieldMapping(fieldName, columnOrFn);
+        }
+    }
+    return filterTranslator.getSqlCondition();
+}
+
+/**
+ * @return {boolean} the selectionIgnoreCase property of the current user, defaults to true
+ */
+JditoFilterUtils.isUserIgnoreCase = function ()
+{
+    var user = tools.getCurrentUser();
+    var ignoreCase = user ? user[tools.PARAMS][tools.SELECTION_IGNORECASE] : "";
+    return ignoreCase == "" || /true/i.test(ignoreCase);
+}
+
+/**
+ * Object for translating a filter object to a sql condition.
+ * 
+ * @param {Object} pFilter the filter object that should be used
+ * @param {String} pTable the database table to build the condition for
+ */
+function FilterSqlTranslator (pFilter, pTable)
+{
+    this._filter = null;
+    this.filter(pFilter);
+    this._table = pTable;
+    this._tableAlias = null;
+    this._dbAlias = null;
+    this._sqlFieldMappings = {};
+    this._fieldConditionFns = {};
+    this._ignoreCase = JditoFilterUtils.isUserIgnoreCase();
+}
+
+/**
+ * Sets the filter of the object
+ * 
+ * @param {Object} pFilter the filter object that should be used
+ * @return {FilterSqlTranslator} current object
+ */
+FilterSqlTranslator.prototype.filter = function (pFilter)
+{
+    if (pFilter)
+    {
+        if (typeof pFilter !== "object")
+            throw new TypeError("FilterSqlTranslator: Wrong type for the filter, expected 'object' but got '" + (typeof pFilter) + "'");
+        this._filter = pFilter.filter || pFilter;
+    }
+    return this;
+}
+
+/**
+ * Sets the filter of the object
+ * 
+ * @param {String} pFilter the filter object that should be used as JSON string
+ * @return {FilterSqlTranslator} current object
+ */
+FilterSqlTranslator.prototype.filterJSON = function (pFilter)
+{
+    return this.filter(JSON.parse(pFilter));
+}
+
+/**
+ * Sets the table of the object
+ * 
+ * @param {String} pTable the database table to build the condition for
+ * @param {String} [pTableAlias] the alias of the table
+ * @return {FilterSqlTranslator} current object
+ */
+FilterSqlTranslator.prototype.table = function (pTable, pTableAlias)
+{
+    this._table = pTable;
+    if (pTableAlias)
+        this._tableAlias = pTableAlias;
+    return this;
+}
+
+/**
+ * Adds a special database field mapping for the given field that will be used for the sql condition
+ * 
+ * @param {String} pFieldName the field name
+ * @param {String|String[]} pDBField the database field ("TABLE.COLUMN" or ["TABLE", "COLUMN", "alias"])
+ * @return {FilterSqlTranslator} current object
+ */
+FilterSqlTranslator.prototype.addSqlFieldMapping = function (pFieldName, pDBField)
+{
+    this._sqlFieldMappings[pFieldName] = pDBField;
+    return this;
+}
+
+/**
+ * Adds a special function for building the condition for the given field. The function must return a sql condition (SqlBuilder or String)
+ * 
+ * @param {String} pFieldName the field name
+ * @param {Function} pConditionFn a function that generates the condition
+ * @return {FilterSqlTranslator} current object
+ */
+FilterSqlTranslator.prototype.addSpecialFieldConditionFn = function (pFieldName, pConditionFn)
+{
+    this._fieldConditionFns[pFieldName] = pConditionFn;
+    return this;
+}
+
+/**
+ * Sets the database alias
+ * 
+ * @param {String} pAlias the alias to be used
+ * @return {FilterSqlTranslator} current object
+ */
+FilterSqlTranslator.prototype.dbAlias = function (pAlias)
+{
+    this._dbAlias = pAlias;
+    return this;
+}
+
+/**
+ * Changes whether the condition should be case-insensitive for text
+ * 
+ * @param {boolean} [pIgnoreCase=true] if it should be case-insensitive
+ * @return {FilterSqlTranslator} current object
+ */
+FilterSqlTranslator.prototype.ignoreCase = function (pIgnoreCase)
+{
+    //"", 0 , false -> false, everything else is considered true
+    this._ignoreCase = pIgnoreCase != false;
+    return this;
+}
+
+/**
+ * Builds the sql condition from the filter
+ * 
+ * @return {SqlBuilder} the sql condition
+ */
+FilterSqlTranslator.prototype.getSqlCondition = function ()
+{
+    var condition = new SqlBuilder(this._dbAlias).where();
+    if (!this._filter)
         return condition;
-    if (!pColumnOrFnMap)
-        pColumnOrFnMap = {};
     
-    _addCondition.call(condition, pFilter, pFilter.operator);
+    var table = this._table;
+    var tableAlias = this._tableAlias;
+    var ignoreCase = this._ignoreCase;
+    var sqlFieldMappings = this._sqlFieldMappings;
+    var fieldConditionFns = this._fieldConditionFns;
+    
+    _addCondition.call(condition, this._filter, this._filter.operator);
     
     return condition;
     
@@ -230,47 +380,61 @@ JditoFilterUtils.getSqlCondition = function (pFilter, pTable, pTableAlias, pColu
     {
         if (pFilter.type == "row")
         {
-            if (pFilter.name in pColumnOrFnMap)
+            var sqlField, condition;
+            var filterValue = (pFilter.key || pFilter.value);
+            if (pFilter.name in fieldConditionFns)
             {
-                pFilter.name = pColumnOrFnMap[pFilter.name];
+                var conditionFn = fieldConditionFns[pFilter.name];
+                
+                condition = conditionFn.call(null, filterValue, pFilter.operator);
+                if (pOperator == "AND")
+                    this.andIfSet(condition);
+                else if (pOperator == "OR")
+                    this.orIfSet(condition);
+                
+                return;
+            }
+            
+            if (pFilter.name in sqlFieldMappings)
+            {
+                sqlField = sqlFieldMappings[sqlField];
                 
                 //possibility to explicitly set the value to null/false so that the field is ignored
-                if (pFilter.name === null || pFilter.name === false)
+                if (sqlField === null || sqlField === false)
                     return;
             }
-            else if (pTable && pTableAlias)
-                pFilter.name = [pTable, pFilter.name, pTableAlias];
-            else if (pTable)
-                pFilter.name = pTable + "." + pFilter.name;
-            
-            pFilter.value = (pFilter.key || pFilter.value);
+            else if (table && tableAlias)
+                sqlField = [table, pFilter.name, tableAlias];
+            else if (table)
+                sqlField = table + "." + pFilter.name;
             
-            var condition;
-            if (typeof(pFilter.name) === "function")
+            var generatedCondition = _getCondition(filterValue, pFilter.operator, sqlField);
+            if (generatedCondition instanceof SqlBuilder || typeof generatedCondition === "string")
             {
-                condition = pFilter.name.call(null, pFilter.value, pFilter.operator);
                 if (pOperator == "AND")
-                    this.andIfSet(condition);
+                    this.andIfSet(generatedCondition);
                 else if (pOperator == "OR")
-                    this.orIfSet(condition);
+                    this.orIfSet(generatedCondition);
             }
             else
             {
-                let isStringType, filterValue;
-                [condition, filterValue, isStringType] = _getCondition(pFilter.value, pFilter.operator);
+                var isStringType = pFilter.contenttype != "NUMBER" 
+                    && pFilter.contenttype != "DATE" 
+                    && pFilter.contenttype != "BOOLEAN";
+                [condition, filterValue] = generatedCondition;
                 if (isStringType && ignoreCase)
                     condition = condition.replace("#", "UPPER(#)").replace("?", "UPPER(?)");
-                
+
                 if (pOperator == "AND")
-                    this.andIfSet(pFilter.name, filterValue, condition);
+                    this.andIfSet(sqlField, filterValue, condition);
                 else if (pOperator == "OR")
-                    this.orIfSet(pFilter.name, filterValue, condition);
+                    this.orIfSet(sqlField, filterValue, condition);
             }
         }
         else if (pFilter.type == "group")
         {
-            let subCondition = newWhere();
-            let operator = pFilter.operator;
+            var subCondition = newWhere();
+            var operator = pFilter.operator;
             pFilter.childs.forEach(function (cond)
             {
                 _addCondition.call(subCondition, cond, operator);
@@ -282,45 +446,41 @@ JditoFilterUtils.getSqlCondition = function (pFilter, pTable, pTableAlias, pColu
         }
     }
     
-    //returns [condition, value with wildcards, is a string type] depending on the operator
-    function _getCondition (pValue, pOperator)
+    //returns [condition, value with wildcards] depending on the operator
+    function _getCondition (pValue, pOperator, pField)
     {
         switch (pOperator)
         {
             case "CONTAINS":
-                return [SqlBuilder.LIKE(), "%" + pValue + "%", true];
+                return [SqlBuilder.LIKE(), "%" + pValue + "%"];
             case "CONTAINSNOT":
-                return [SqlBuilder.NOT_LIKE(), "%" + pValue + "%", true];
+                return [SqlBuilder.NOT_LIKE(), "%" + pValue + "%"];
             case "STARTSWITH":
-                return [SqlBuilder.LIKE(), pValue + "%", true];
+                return [SqlBuilder.LIKE(), pValue + "%"];
             case "ENDSWITH":
-                return [SqlBuilder.LIKE(), "%" + pValue, true];
+                return [SqlBuilder.LIKE(), "%" + pValue];
             case "EQUAL":
-                return [SqlBuilder.EQUAL(), pValue, true];
+                return [SqlBuilder.EQUAL(), pValue];
             case "NOT_EQUAL":
-                return [SqlBuilder.NOT_EQUAL(), pValue, true];
+                return [SqlBuilder.NOT_EQUAL(), pValue];
             case "LESS":
-                return [SqlBuilder.LESS(), pValue, false];
+                return [SqlBuilder.LESS(), pValue];
             case "LESS_OR_EQUAL":
-                return [SqlBuilder.LESS_OR_EQUAL(), pValue, false];
+                return [SqlBuilder.LESS_OR_EQUAL(), pValue];
             case "GREATER":
-                return [SqlBuilder.GREATER(), pValue, false];
+                return [SqlBuilder.GREATER(), pValue];
             case "GREATER_OR_EQUAL":
-                return [SqlBuilder.GREATER_OR_EQUAL(), pValue, false];
+                return [SqlBuilder.GREATER_OR_EQUAL(), pValue];
             case "ISNULL":
-                return ["# is null", pValue, false];
+                return pField + " is null";
             case "ISNOTNULL":
-                return ["# is not null", pValue, false];
+                return pField + " is not null";
+            case "TIMEFRAME_EQUAL":
+            case "TIMEFRAME_COMING":
+            case "TIMEFRAME_PAST":
+                var [start, end] = datetime.resolveRelativeDateExpression(pValue);
+                return newWhere(pField, start, SqlBuilder.GREATER_OR_EQUAL())
+                    .and(pField, end, SqlBuilder.LESS_OR_EQUAL());
         }
     }
-}
-
-/**
- * @return {boolean} the selectionIgnoreCase property of the current user, defaults to true
- */
-JditoFilterUtils.isUserIgnoreCase = function ()
-{
-    var user = tools.getCurrentUser();
-    var ignoreCase = user ? user[tools.PARAMS][tools.SELECTION_IGNORECASE] : "";
-    return ignoreCase == "" || /true/i.test(ignoreCase);
-}
+}
\ No newline at end of file