diff --git a/.aditoprj/blueprints/CreateExportAction.xml b/.aditoprj/blueprints/CreateExportAction.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c6df83894e53e19d6001d4d84337e48b622108aa
--- /dev/null
+++ b/.aditoprj/blueprints/CreateExportAction.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<blueprint name="Create Export Action">
+    <type>entityActionField</type>
+    <parameters>
+    </parameters>
+    <data>
+        <document name="context"><![CDATA[
+            <entity VERSION="1.3.17">
+             <entityFields>
+               <entityActionField>
+          <name>export</name>
+          <title>Export</title>
+          <onActionProcess>import("ExportTemplate_lib");
+import("system.vars");
+
+var selection = vars.get("$sys.selection");
+
+if(selection.length == 0)     //no selection -> use Filtercondition;
+{
+    selection = vars.get("$sys.filter");
+}
+
+ExportTemplateUtils.addParticipants(JSON.stringify(selection), vars.get("$sys.currentcontextname"));</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
+          <iconId>NEON:EXPORT</iconId>
+          <stateProcess>import("system.result");
+import("FilterViewAction_lib");
+import("system.vars");
+
+var contactCount = vars.get("$sys.datarowcount");
+
+result.string(FilterViewActionUtils.getComponentStateByRowCount(contactCount));</stateProcess>
+          <tooltip>Export fields of this table</tooltip>
+          <tooltipProcess>import("system.translate");
+import("system.result");
+
+result.string(translate.text("Export columns using a exporttemplate"));</tooltipProcess>
+        </entityActionField>
+             </entityFields>
+        </entity>
+    ]]></document>
+    </data>
+</blueprint>
diff --git a/.aditoprj/ignoredScanServiceTasks.json b/.aditoprj/ignoredScanServiceTasks.json
index 281e1fb24c155ee9fcd08c22336fe8d816083af3..7a82a0675d76038ae9b1c576dcc22b21ae577991 100644
--- a/.aditoprj/ignoredScanServiceTasks.json
+++ b/.aditoprj/ignoredScanServiceTasks.json
@@ -219,19 +219,19 @@
     {
       "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod",
       "line": -1,
-      "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhaseFunnelChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]",
+      "description": "Dead Reference \"#EXTENSION.Phase_filter.Phase_filter#TEXT\" located in: PhaseFunnelChart/defaultGroupFields/#EXTENSION.Phase_filter.Phase_filter#TEXT [67]",
       "groupName": "nb-tasklist-error"
     },
     {
       "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod",
       "line": -1,
-      "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhasePieChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]",
+      "description": "Dead Reference \"#EXTENSION.Phase_filter.Phase_filter#TEXT\" located in: PhasePieChart/defaultGroupFields/#EXTENSION.Phase_filter.Phase_filter#TEXT [67]",
       "groupName": "nb-tasklist-error"
     },
     {
       "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod",
       "line": -1,
-      "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhasePyramidChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]",
+      "description": "Dead Reference \"#EXTENSION.Phase_filter.Phase_filter#TEXT\" located in: PhasePyramidChart/defaultGroupFields/#EXTENSION.Phase_filter.Phase_filter#TEXT [67]",
       "groupName": "nb-tasklist-error"
     },
     {
@@ -245,6 +245,42 @@
       "line": -1,
       "description": "Dead Reference \"#EXTENSION.Month.Month#NUMBER\" located in: dynamicChart/defaultGroupFields/#EXTENSION.Month.Month#NUMBER [67]",
       "groupName": "nb-tasklist-error"
+    },
+	{
+      "target": "neonView/TurnoverDynamicMultiDataChart_view/TurnoverDynamicMultiDataChart_view.aod",
+      "line": -1,
+      "description": "Dead Reference \"#EXTENSION.Month_filter.Month_filter#TEXT\" located in: ColumnChart/defaultGroupFields/#EXTENSION.Month_filter.Month_filter#TEXT [67]",
+      "groupName": "nb-tasklist-error"
+    },
+	{
+      "target": "neonView/TurnoverDynamicMultiDataChart_view/TurnoverDynamicMultiDataChart_view.aod",
+      "line": -1,
+      "description": "Dead Reference \"#EXTENSION.Month_filter.Month_filter#TEXT\" located in: LineChart/defaultGroupFields/#EXTENSION.Month_filter.Month_filter#TEXT [67]",
+      "groupName": "nb-tasklist-error"
+    },
+	{
+      "target": "neonView/TurnoverDynamicMultiDataChart_view/TurnoverDynamicMultiDataChart_view.aod",
+      "line": -1,
+      "description": "Dead Reference \"#EXTENSION.Month_filter.Month_filter#TEXT\" located in: AreaChart/defaultGroupFields/#EXTENSION.Month_filter.Month_filter#TEXT [67]",
+      "groupName": "nb-tasklist-error"
+    },
+	{
+      "target": "neonView/TurnoverDynamicMultiDataChart_view/TurnoverDynamicMultiDataChart_view.aod",
+      "line": -1,
+      "description": "Dead Reference \"#EXTENSION.Month_filter.Month_filter#TEXT\" located in: BarChart/defaultGroupFields/#EXTENSION.Month_filter.Month_filter#TEXT [67]",
+      "groupName": "nb-tasklist-error"
+    },
+	{
+      "target": "neonView/TurnoverDynamicMultiDataChart_view/TurnoverDynamicMultiDataChart_view.aod",
+      "line": -1,
+      "description": "Dead Reference \"#EXTENSION.Month_filter.Month_filter#TEXT\" located in: SplineChart/defaultGroupFields/#EXTENSION.Month_filter.Month_filter#TEXT [67]",
+      "groupName": "nb-tasklist-error"
+    },
+	{
+      "target": "neonView/TurnoverDynamicMultiDataChart_view/TurnoverDynamicMultiDataChart_view.aod",
+      "line": -1,
+      "description": "Dead Reference \"#EXTENSION.Month_filter.Month_filter#TEXT\" located in: TreeTable/defaultGroupFields/#EXTENSION.Month_filter.Month_filter#TEXT [67]",
+      "groupName": "nb-tasklist-error"
     }
   ]
 }
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.0/changelog.xml b/.liquibase/Data_alias/basic/2021.1.0/changelog.xml
index d23a18f8fb29173c0522892be410c03620a6c31d..14de37ddbc5272cbdc21cb6f1518f454f8dab1d4 100644
--- a/.liquibase/Data_alias/basic/2021.1.0/changelog.xml
+++ b/.liquibase/Data_alias/basic/2021.1.0/changelog.xml
@@ -8,8 +8,6 @@
     <include relativeToChangelogFile="true" file="offerWorkflow/add_ab_keyword_entry_activityCategory.xml"/>
     <include relativeToChangelogFile="true" file="create_standardWorkflow.xml"/>
 
-    <include relativeToChangelogFile="true" file="EwsContactSync/create_ewsInfoLog.xml"/>
-    <include relativeToChangelogFile="true" file="EwsContactSync/add_AB_SYNCCONTACT_updateContact.xml"/>
     <include relativeToChangelogFile="true" file="Advertising/changelog.xml"/>
     <include relativeToChangelogFile="true" file="Bulkmail/changelog.xml"/>
     <include relativeToChangelogFile="true" file="Addressvalidation/changelog.xml"/>
diff --git a/.liquibase/Data_alias/basic/2021.1.1/insert_AnonymisierungsOrganisation.xml b/.liquibase/Data_alias/basic/2021.1.1/insert_AnonymisierungsOrganisation.xml
index cc4eeb1e5bf3fde9facaa0014a87fb1c7800690a..60a075ecb022cdd8442a56c0510803a1107272cc 100644
--- a/.liquibase/Data_alias/basic/2021.1.1/insert_AnonymisierungsOrganisation.xml
+++ b/.liquibase/Data_alias/basic/2021.1.1/insert_AnonymisierungsOrganisation.xml
@@ -22,7 +22,7 @@
 		<delete tableName="ORGANISATION">
 			<where>ORGANISATIONID = ?</where>
 			<whereParams>
-				<param value="0" />
+				<param value="1" />
 			</whereParams>
 		</delete>
 	</rollback>
diff --git a/.liquibase/Data_alias/basic/2021.1.3/changelog.xml b/.liquibase/Data_alias/basic/2021.1.3/changelog.xml
index 5d3231a62d21134397109c21ea19ed5f94235c10..e6ef5bf468f382fad3e8bd05c3e8f1befe0dc104 100644
--- a/.liquibase/Data_alias/basic/2021.1.3/changelog.xml
+++ b/.liquibase/Data_alias/basic/2021.1.3/changelog.xml
@@ -3,7 +3,6 @@
     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="defaultWeblinks/changelog.xml"/>
-    <include relativeToChangelogFile="true" file="Advertising/changelog.xml"/>
     <include relativeToChangelogFile="true" file="Checklist/changelog.xml"/>
     <include relativeToChangelogFile="true" file="Member/changelog.xml"/>
     <include relativeToChangelogFile="true" file="Salesproject/changelog.xml"/>
diff --git a/.liquibase/Data_alias/basic/2021.1.3/Advertising/alter_AdvertisingAddDefaultColumns.xml b/.liquibase/Data_alias/basic/2021.2.0/Advertising/alter_AdvertisingAddDefaultColumns.xml
similarity index 100%
rename from .liquibase/Data_alias/basic/2021.1.3/Advertising/alter_AdvertisingAddDefaultColumns.xml
rename to .liquibase/Data_alias/basic/2021.2.0/Advertising/alter_AdvertisingAddDefaultColumns.xml
diff --git a/.liquibase/Data_alias/basic/2021.1.3/Advertising/alter_AdvertisingItemChangeItemPositionColumnType.xml b/.liquibase/Data_alias/basic/2021.2.0/Advertising/alter_AdvertisingItemChangeItemPositionColumnType.xml
similarity index 100%
rename from .liquibase/Data_alias/basic/2021.1.3/Advertising/alter_AdvertisingItemChangeItemPositionColumnType.xml
rename to .liquibase/Data_alias/basic/2021.2.0/Advertising/alter_AdvertisingItemChangeItemPositionColumnType.xml
diff --git a/.liquibase/Data_alias/basic/2021.1.3/Advertising/alter_AdvertisingItemDropColumns.xml b/.liquibase/Data_alias/basic/2021.2.0/Advertising/alter_AdvertisingItemDropColumns.xml
similarity index 100%
rename from .liquibase/Data_alias/basic/2021.1.3/Advertising/alter_AdvertisingItemDropColumns.xml
rename to .liquibase/Data_alias/basic/2021.2.0/Advertising/alter_AdvertisingItemDropColumns.xml
diff --git a/.liquibase/Data_alias/basic/2021.1.3/Advertising/alter_AdvertisingItemDropForeignKey.xml b/.liquibase/Data_alias/basic/2021.2.0/Advertising/alter_AdvertisingItemDropForeignKey.xml
similarity index 100%
rename from .liquibase/Data_alias/basic/2021.1.3/Advertising/alter_AdvertisingItemDropForeignKey.xml
rename to .liquibase/Data_alias/basic/2021.2.0/Advertising/alter_AdvertisingItemDropForeignKey.xml
diff --git a/.liquibase/Data_alias/basic/2021.1.3/Advertising/alter_AdvertisingRenameRowId.xml b/.liquibase/Data_alias/basic/2021.2.0/Advertising/alter_AdvertisingRenameRowId.xml
similarity index 100%
rename from .liquibase/Data_alias/basic/2021.1.3/Advertising/alter_AdvertisingRenameRowId.xml
rename to .liquibase/Data_alias/basic/2021.2.0/Advertising/alter_AdvertisingRenameRowId.xml
diff --git a/.liquibase/Data_alias/basic/2021.1.3/Advertising/alter_productAdvertisingDatatype.xml b/.liquibase/Data_alias/basic/2021.2.0/Advertising/alter_productAdvertisingDatatype.xml
similarity index 100%
rename from .liquibase/Data_alias/basic/2021.1.3/Advertising/alter_productAdvertisingDatatype.xml
rename to .liquibase/Data_alias/basic/2021.2.0/Advertising/alter_productAdvertisingDatatype.xml
diff --git a/.liquibase/Data_alias/basic/2021.1.3/Advertising/changelog.xml b/.liquibase/Data_alias/basic/2021.2.0/Advertising/changelog.xml
similarity index 100%
rename from .liquibase/Data_alias/basic/2021.1.3/Advertising/changelog.xml
rename to .liquibase/Data_alias/basic/2021.2.0/Advertising/changelog.xml
diff --git a/.liquibase/Data_alias/basic/2021.1.0/EwsContactSync/add_AB_SYNCCONTACT_updateContact.xml b/.liquibase/Data_alias/basic/2021.2.0/EwsContactSync/add_AB_SYNCCONTACT_updateContact.xml
similarity index 100%
rename from .liquibase/Data_alias/basic/2021.1.0/EwsContactSync/add_AB_SYNCCONTACT_updateContact.xml
rename to .liquibase/Data_alias/basic/2021.2.0/EwsContactSync/add_AB_SYNCCONTACT_updateContact.xml
diff --git a/.liquibase/Data_alias/basic/2021.2.0/EwsContactSync/changelog.xml b/.liquibase/Data_alias/basic/2021.2.0/EwsContactSync/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4b416e736e987f916c7653a1c0541f1e9f6018b7
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.0/EwsContactSync/changelog.xml
@@ -0,0 +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">
+    <include relativeToChangelogFile="true" file="add_AB_SYNCCONTACT_updateContact.xml"/>
+    <include relativeToChangelogFile="true" file="create_ewsInfoLog.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.0/EwsContactSync/create_ewsInfoLog.xml b/.liquibase/Data_alias/basic/2021.2.0/EwsContactSync/create_ewsInfoLog.xml
similarity index 100%
rename from .liquibase/Data_alias/basic/2021.1.0/EwsContactSync/create_ewsInfoLog.xml
rename to .liquibase/Data_alias/basic/2021.2.0/EwsContactSync/create_ewsInfoLog.xml
diff --git a/.liquibase/Data_alias/basic/2021.2.0/Export/add_ExportTemplateFields_Dependency_ID.xml b/.liquibase/Data_alias/basic/2021.2.0/Export/add_ExportTemplateFields_Dependency_ID.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f32a31b9b21c986a24ed06c0aa65f37bf83dfe11
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.0/Export/add_ExportTemplateFields_Dependency_ID.xml
@@ -0,0 +1,19 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="s.pongratz" id="bcf10957-f79e-48b7-8a7b-013cfebe23bc">
+        <addColumn tableName="EXPORTTEMPLATEFIELD">
+            <column name="EXPORTTEMPLATEPLACEOFUSE_ID" type="CHAR(36)" />
+            
+            <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+    </changeSet>
+    
+    <changeSet author="s.pongratz" id="a573c6b0-41ba-4bf1-99f5-b9c2c184dcc2">
+        <createIndex indexName="IDX_EXPORTTEMPLATEPOU_ID" tableName="EXPORTTEMPLATEFIELD">
+            <column name="EXPORTTEMPLATEPLACEOFUSE_ID"/>
+        </createIndex>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.0/Export/add_ExportTemplatePlaceOfUse.xml b/.liquibase/Data_alias/basic/2021.2.0/Export/add_ExportTemplatePlaceOfUse.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e5d45f305e725e82ede22b39669c89b331f3f1e0
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.0/Export/add_ExportTemplatePlaceOfUse.xml
@@ -0,0 +1,23 @@
+<?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="8cd938e0-bffc-46ab-8009-b2e2c099c4e3">
+        <addColumn tableName="EXPORTTEMPLATEPLACEOFUSE">
+            <column name="TITLE" type="NVARCHAR(150)"/>
+            <column name="EXPORTTEMPLATEPLACEOFUSE_ID" type="CHAR(36)" />
+            
+            <column name="OBJECT_FILTER" type="NCLOB" />
+            
+            <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+    </changeSet>
+    <changeSet author="s.pongratz" id="b8121ece-f3ee-4899-a7d9-c61762cdf1a1">
+        <createIndex indexName="IDX_ETPOU_ID" tableName="EXPORTTEMPLATEPLACEOFUSE">
+            <column name="EXPORTTEMPLATEPLACEOFUSE_ID"/>
+        </createIndex>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.0/Export/changelog.xml b/.liquibase/Data_alias/basic/2021.2.0/Export/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..44a347e06d1ea9d4664f4d2ee98b1be874402a82
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.0/Export/changelog.xml
@@ -0,0 +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">
+    <include relativeToChangelogFile="true" file="add_ExportTemplatePlaceOfUse.xml"/>
+    <include relativeToChangelogFile="true" file="add_ExportTemplateFields_Dependency_ID.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.0/MSTeams/changelog.xml b/.liquibase/Data_alias/basic/2021.2.0/MSTeams/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..18db840a17b45feb22de2a4863929d91bf316cb2
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.0/MSTeams/changelog.xml
@@ -0,0 +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">
+    <include relativeToChangelogFile="true" file="drop_mstTeamLink.xml"/>
+    <include relativeToChangelogFile="true" file="insert_mstTeamAttribute.xml"/>
+    <include relativeToChangelogFile="true" file="insert_KeqwordEntryMSTActivityDirection.xml"/>
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2021.2.0/MSTeams/drop_mstTeamLink.xml b/.liquibase/Data_alias/basic/2021.2.0/MSTeams/drop_mstTeamLink.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e0eb40951f8ce85c3c5236241e74ca4a4fa041f8
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.0/MSTeams/drop_mstTeamLink.xml
@@ -0,0 +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">
+    <changeSet author="" id="79d8f115-929f-4d4e-a961-0aefb807d90f">
+        <dropTable tableName="MST_TEAMLINK"/>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.0/MSTeams/insert_KeqwordEntryMSTActivityDirection.xml b/.liquibase/Data_alias/basic/2021.2.0/MSTeams/insert_KeqwordEntryMSTActivityDirection.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c296cdc99133b13c2ff97335d66be54a535f2448
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.0/MSTeams/insert_KeqwordEntryMSTActivityDirection.xml
@@ -0,0 +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="p.neub" id="29a9e33a-4c3f-4409-af9f-d676ef399103">
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="7e21e85e-8091-48cb-8bdc-e7bef7fa1f80"/>
+            <column name="AB_KEYWORD_CATEGORY_ID" value="a5206aff-79f8-413e-a76d-4cb9d39694d3"/>
+            <column name="KEYID" value="MST-MESSAGE"/>
+            <column name="TITLE" value="MS-Teams Message"/>
+            <column name="CONTAINER" value="ActivityCategory"/>
+            <column name="SORTING" valueNumeric="8"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.0/MSTeams/insert_mstTeamAttribute.xml b/.liquibase/Data_alias/basic/2021.2.0/MSTeams/insert_mstTeamAttribute.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b6cf990d0d9591e74dc31d676a17748cba060eb2
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.2.0/MSTeams/insert_mstTeamAttribute.xml
@@ -0,0 +1,20 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="p.neub" id="e14b152c-e772-40d3-b49a-d314cd0f38e4">
+        <insert tableName="AB_ATTRIBUTE">
+            <column name="AB_ATTRIBUTEID" value="9a93f671-fa9e-4783-8ae8-6cef76b3f62f"/>
+            <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+            <column name="ATTRIBUTE_NAME" value="Team"/>
+            <column name="ATTRIBUTE_TYPE" value="OBJECTSELECTION"/>
+            <column name="DROPDOWNDEFINITION" value="MSTTeam_entity"/>
+        </insert>
+        <insert tableName="AB_ATTRIBUTEUSAGE">
+            <column name="AB_ATTRIBUTEUSAGEID" value="0929cd01-b445-42fc-8878-eebed8dabfd0"/>
+            <column name="AB_ATTRIBUTE_ID" value="9a93f671-fa9e-4783-8ae8-6cef76b3f62f"/>
+            <column name="MAX_COUNT" valueNumeric="1"/>
+            <column name="OBJECT_TYPE" value="Salesproject"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.2.0/changelog.xml b/.liquibase/Data_alias/basic/2021.2.0/changelog.xml
index b00d7a17d331af5267ec416d244dc6275b92b8ba..513864be1bf2aceadfd05d13db364660aafc8db1 100644
--- a/.liquibase/Data_alias/basic/2021.2.0/changelog.xml
+++ b/.liquibase/Data_alias/basic/2021.2.0/changelog.xml
@@ -3,9 +3,13 @@
     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="Duplicate/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="Advertising/changelog.xml"/>
     <include relativeToChangelogFile="true" file="TopicTree/changelog.xml"/>
     <include relativeToChangelogFile="true" file="CampaignStep/changelog.xml"/>
     <include relativeToChangelogFile="true" file="Offer/changelog.xml"/>
     <include relativeToChangelogFile="true" file="xRM-Service/changelog.xml"/>
     <include relativeToChangelogFile="true" file="Mosaico/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="MSTeams/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="EwsContactSync/changelog.xml"/>
+    <include relativeToChangelogFile="true" file="Export/changelog.xml"/>
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2021.2.0/xRM-Service/Keywords/update_ActivityCategory.xml b/.liquibase/Data_alias/basic/2021.2.0/xRM-Service/Keywords/update_ActivityCategory.xml
index 04ab8b15b3465ff496e2b2127c153da6f1af7d67..9c435ad41b374a00c04b65a95be9081917b91d60 100644
--- a/.liquibase/Data_alias/basic/2021.2.0/xRM-Service/Keywords/update_ActivityCategory.xml
+++ b/.liquibase/Data_alias/basic/2021.2.0/xRM-Service/Keywords/update_ActivityCategory.xml
@@ -28,15 +28,6 @@
             <column  name="AB_KEYWORD_ATTRIBUTE_ID"  value="25e3cad8-3661-49ae-aed0-dbf98ce8a620"/>  
             <column  name="CHAR_VALUE"  value="VAADIN:AUTOMATION"/>
             <column  name="BOOL_VALUE"  valueNumeric="0"/>
-    </insert>  
-    <insert    
-                  
-                tableName="ab_keyword_attribute">  
-            <column  name="AB_KEYWORD_ATTRIBUTEID"  value="25e3cad8-3661-49ae-aed0-dbf98ce8a620"/> 
-            <column  name="NAME"  value="defaultAvatarRepresentation"/>  
-            <column  name="KIND"  value="CHAR_VALUE"/> 
-            <column  name="CONTAINER"  value="ActivityCategory"/>  
-            <column  name="AB_KEYWORD_CATEGORY_ID"  value="a5206aff-79f8-413e-a76d-4cb9d39694d3"/>
-    </insert>      
+    </insert>
   </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/_demoData/changelog.xml b/.liquibase/Data_alias/basic/_demoData/changelog.xml
index 0f8fd6f15e6939e296eec6fc54d80128f2b42d97..fa3ea507e0c2a01a2ad3e0cc9b80a58a9bb0abc4 100644
--- a/.liquibase/Data_alias/basic/_demoData/changelog.xml
+++ b/.liquibase/Data_alias/basic/_demoData/changelog.xml
@@ -77,7 +77,6 @@
   <include file="generatedData/mail_log.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/mail_run.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/mst_team.xml" relativeToChangelogFile="true"/>
-  <include file="generatedData/mst_teamlink.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/objectmember.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/observation.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/offer.xml" relativeToChangelogFile="true"/>
@@ -113,4 +112,4 @@
   <include file="generatedData/weblink_click.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/workflowsignal.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/workflowstartconfig.xml" relativeToChangelogFile="true"/>
-</databaseChangeLog>
\ No newline at end of file
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/ab_keyword_category.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/ab_keyword_category.xml
index 4b76571007573a113c2c1739363f0c06b948cd2e..805aedf463a33f629096870093bd8300384aaf76 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/ab_keyword_category.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/ab_keyword_category.xml
@@ -614,5 +614,41 @@
       <column name="SORTINGBY" valueNumeric="0"/>
       <column name="SORTINGDIRECTION" value="ASC"/>
     </insert>
+    <insert  tableName="AB_KEYWORD_CATEGORY">  
+       <column  name="AB_KEYWORD_CATEGORYID"  value="fd79afd3-7bea-4733-9ba6-6b784724c1a0"/>  
+       <column  name="NAME"  value="TICKETCONCLUSION"/>  
+       <column  name="SORTINGBY"  valueNumeric="0"/>  
+       <column  name="SORTINGDIRECTION"  value="ASC"/> 
+    </insert> 
+    <insert tableName="AB_KEYWORD_CATEGORY">
+      <column name="AB_KEYWORD_CATEGORYID" value="7aef07f1-a947-4303-a72b-ae871e02c130"/>
+      <column name="NAME" value="EmployeeGroupStatus"/>
+      <column name="SORTINGBY" valueNumeric="0"/>
+      <column name="SORTINGDIRECTION" value="ASC"/>
+    </insert>
+    <insert tableName="AB_KEYWORD_CATEGORY">
+      <column name="AB_KEYWORD_CATEGORYID" value="7723f275-e9b2-4a77-92de-e2e558638664"/>
+      <column name="NAME" value="InboxFilterComponent"/>
+      <column name="SORTINGBY" valueNumeric="0"/>
+      <column name="SORTINGDIRECTION" value="ASC"/>
+    </insert>
+    <insert tableName="AB_KEYWORD_CATEGORY">
+      <column name="AB_KEYWORD_CATEGORYID" value="b9232d1a-f948-4c7e-9797-0783b8a4b84e"/>
+      <column name="NAME" value="InboxFilterTarget"/>
+      <column name="SORTINGBY" valueNumeric="0"/>
+      <column name="SORTINGDIRECTION" value="ASC"/>
+    </insert>
+    <insert tableName="AB_KEYWORD_CATEGORY">
+      <column name="AB_KEYWORD_CATEGORYID" value="65a70dee-7cdf-4648-9851-211c2d3d2141"/>
+      <column name="NAME" value="InboxStatus"/>
+      <column name="SORTINGBY" valueNumeric="0"/>
+      <column name="SORTINGDIRECTION" value="ASC"/>
+    </insert>
+    <insert tableName="AB_KEYWORD_CATEGORY">
+      <column name="AB_KEYWORD_CATEGORYID" value="11af1945-8649-44c8-a6c0-3100f8673c78"/>
+      <column name="NAME" value="TicketCategory"/>
+      <column name="SORTINGBY" valueNumeric="0"/>
+      <column name="SORTINGDIRECTION" value="ASC"/>
+    </insert> 
   </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/communication.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/communication.xml
index 907cc685669e41648203fab04c08b3076e287c7a..794d7a94192b6f7944dc118e6687b22ea8adb9ae 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/communication.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/communication.xml
@@ -1539,4 +1539,4 @@
             <column name="OBJECT_ROWID" value="59c9d416-0a39-4948-a540-f439178fbafe"/>
         </insert>
     </changeSet>
-</databaseChangeLog>
\ No newline at end of file
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplate.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplate.xml
index 873fb1848500de115bc983a22e347ef455296060..143a6c1549e4c07dbc7feeef1a4d4961898c34da 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplate.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplate.xml
@@ -1,54 +1,83 @@
-<?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="autogenerated" id="61e54a43-888e-4762-a188-45046738a877">
-    <delete tableName="exporttemplate"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+  <changeSet author="s.pongratz" id="b0d902bd-317a-4a61-a0c3-c88d4697fe34">
     <insert tableName="exporttemplate">
-      <column name="FIELDDELIMITER" value="quotation mark"/>
-      <column name="ISOLANGUAGE" value="deu"/>
-      <column name="DATE_EDIT" valueDate="2020-03-02T10:43:24"/>
-      <column name="DESCRIPTION" value="Anrede, Vor und Nachname sowie Email und Telefonnummer"/>
-      <column name="USER_EDIT" value="Admin"/>
-      <column name="TITLE" value="Personen und Kontaktmöglichkeiten"/>
-      <column name="EXPORTTEMPLATEID" value="3acf26f9-4807-4661-8084-c0c21c593c81"/>
-      <column name="FIELDSEPARATOR" value="tabulator"/>
-      <column name="SENTENCESEPARATOR" value="carriage return and line feed"/>
-      <column name="USER_NEW" value="Admin"/>
+      <column name="EXPORTTEMPLATEID" value="3acf26f9-4807-4661-8084-c0c21c593c81" />
+      <column name="TITLE" value="Personen und Kontaktmöglichkeiten" />
+      <column name="FIELDSEPARATOR" value="tabulator" />
+      <column name="SENTENCESEPARATOR" value="carriage return and line feed" />
+      <column name="FIELDDELIMITER" value="quotation mark" />
+      <column name="ISOLANGUAGE" value="deu" />
+      <column name="DESCRIPTION" value="Anrede, Vor und Nachname sowie Email und Telefonnummer" />
+      <column name="DATE_EDIT" valueDate="2020-03-02T10:43:24" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" value="Admin" />
+      <column name="USER_NEW" value="Admin" />
     </insert>
     <insert tableName="exporttemplate">
-      <column name="FIELDDELIMITER" value="quotation mark"/>
-      <column name="ISOLANGUAGE" value="eng"/>
-      <column name="DATE_EDIT" valueDate="2020-03-02T10:43:24"/>
-      <column name="DESCRIPTION" value="Anrede, Vor und Nachname sowie Email und Telefonnummer"/>
-      <column name="USER_EDIT" value="Admin"/>
-      <column name="TITLE" value="Personen und Kontaktmöglichkeiten (Englisch)"/>
-      <column name="EXPORTTEMPLATEID" value="84eb1373-3745-4455-a0a7-32cf62c8d4dc"/>
-      <column name="FIELDSEPARATOR" value="tabulator"/>
-      <column name="SENTENCESEPARATOR" value="carriage return and line feed"/>
-      <column name="USER_NEW" value="Admin"/>
+      <column name="EXPORTTEMPLATEID" value="5aaa7d13-3b12-45b5-a794-1f702e31051a" />
+      <column name="TITLE" value="Empfänger der Serienmail" />
+      <column name="FIELDSEPARATOR" value="semicolon" />
+      <column name="SENTENCESEPARATOR" value="carriage return and line feed" />
+      <column name="FIELDDELIMITER" value="quotation mark" />
+      <column name="ISOLANGUAGE" />
+      <column name="DESCRIPTION" value="Liste der Empfänger der ausgewählten Serienmails mit Status usw" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="USER_NEW" />
     </insert>
     <insert tableName="exporttemplate">
-      <column name="FIELDDELIMITER" value="quotation mark"/>
-      <column name="ISOLANGUAGE" value="deu"/>
-      <column name="DATE_EDIT" valueDate="2020-03-02T10:43:24"/>
-      <column name="DESCRIPTION" value="Name mit Anrede, Titel und vollständiger Addresse"/>
-      <column name="USER_EDIT" value="Admin"/>
-      <column name="TITLE" value="Personen mit Anschriften"/>
-      <column name="EXPORTTEMPLATEID" value="86b48d2c-3850-4778-9240-45cf79396a0a"/>
-      <column name="FIELDSEPARATOR" value="semicolon"/>
-      <column name="SENTENCESEPARATOR" value="carriage return and line feed"/>
-      <column name="USER_NEW" value="Admin"/>
+      <column name="EXPORTTEMPLATEID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="TITLE" value="Übersicht Vertriebsprojekte" />
+      <column name="FIELDSEPARATOR" value="semicolon" />
+      <column name="SENTENCESEPARATOR" value="carriage return and line feed" />
+      <column name="FIELDDELIMITER" value="quotation mark" />
+      <column name="ISOLANGUAGE" />
+      <column name="DESCRIPTION" value="Übersicht von Vertriebsprojekten" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="USER_NEW" />
     </insert>
     <insert tableName="exporttemplate">
-      <column name="FIELDDELIMITER" value="quotation mark"/>
-      <column name="ISOLANGUAGE" value="deu"/>
-      <column name="DATE_EDIT" valueDate="2020-03-02T10:43:24"/>
-      <column name="DESCRIPTION" value="Firmen und deren Addressen"/>
-      <column name="USER_EDIT" value="Admin"/>
-      <column name="TITLE" value="Firmen mit Addressen"/>
-      <column name="EXPORTTEMPLATEID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3"/>
-      <column name="FIELDSEPARATOR" value="comma"/>
-      <column name="SENTENCESEPARATOR" value="carriage return and line feed"/>
-      <column name="USER_NEW" value="Admin"/>
+      <column name="EXPORTTEMPLATEID" value="86b48d2c-3850-4778-9240-45cf79396a0a" />
+      <column name="TITLE" value="Personen mit Anschriften" />
+      <column name="FIELDSEPARATOR" value="semicolon" />
+      <column name="SENTENCESEPARATOR" value="carriage return and line feed" />
+      <column name="FIELDDELIMITER" value="quotation mark" />
+      <column name="ISOLANGUAGE" value="deu" />
+      <column name="DESCRIPTION" value="Name mit Anrede, Titel und vollständiger Adresse" />
+      <column name="DATE_EDIT" valueDate="2020-03-02T10:43:24" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" value="Admin" />
+      <column name="USER_NEW" value="Admin" />
+    </insert>
+    <insert tableName="exporttemplate">
+      <column name="EXPORTTEMPLATEID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="TITLE" value="Teilnehmerliste" />
+      <column name="FIELDSEPARATOR" value="semicolon" />
+      <column name="SENTENCESEPARATOR" value="carriage return and line feed" />
+      <column name="FIELDDELIMITER" value="quotation mark" />
+      <column name="ISOLANGUAGE" />
+      <column name="DESCRIPTION" value="Teilnehmerliste mit allen relevanten Daten, Vorname, Name, Firma usw." />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="USER_NEW" />
+    </insert>
+    <insert tableName="exporttemplate">
+      <column name="EXPORTTEMPLATEID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3" />
+      <column name="TITLE" value="Firmen mit Adressen" />
+      <column name="FIELDSEPARATOR" value="comma" />
+      <column name="SENTENCESEPARATOR" value="carriage return and line feed" />
+      <column name="FIELDDELIMITER" value="quotation mark" />
+      <column name="ISOLANGUAGE" value="deu" />
+      <column name="DESCRIPTION" value="Firmen und deren Adressen" />
+      <column name="DATE_EDIT" valueDate="2020-03-02T10:43:24" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" value="Admin" />
+      <column name="USER_NEW" value="Admin" />
     </insert>
   </changeSet>
-</databaseChangeLog>
\ No newline at end of file
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplatefield.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplatefield.xml
index b0c7acf8736af48ff2321381a6630cad79a6d1c9..9fd2ca3f7ea57fc3bcd8214f43491719c828c484 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplatefield.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplatefield.xml
@@ -1,144 +1,489 @@
-<?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="autogenerated" id="69fd0952-c01c-4b65-960a-4bb53d11ba31">
-    <delete tableName="exporttemplatefield"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+  <changeSet author="s.pongratz" id="cb95f3fd-b07a-4a10-9c97-f1a990abc164">
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81"/>
-      <column name="FIELD" value="{@lastname@}"/>
-      <column name="SORTING" valueNumeric="3"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="0804cb9a-0cfb-43d6-bd37-2680e24604b0"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="06087ff5-a22c-4f35-94fc-d738aaec6eb6" />
+      <column name="EXPORTTEMPLATE_ID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="FIELD" value="RESPONSIBLE_CONTACT_ID" />
+      <column name="SORTING" valueNumeric="6" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="dbcc278e-bcc3-45d2-8315-502efbec6714" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="84eb1373-3745-4455-a0a7-32cf62c8d4dc"/>
-      <column name="FIELD" value="{@firstname@}"/>
-      <column name="SORTING" valueNumeric="2"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="10194e81-65d8-4a12-acd3-123d6a692fba"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="064fcc0b-2a26-4dc4-9d90-4289022b5638" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="PROJECTCODE" />
+      <column name="SORTING" valueNumeric="1" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a"/>
-      <column name="FIELD" value="{@country@}"/>
-      <column name="SORTING" valueNumeric="5"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="224cf307-fe26-4a6b-aae8-61190a2bff19"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="07ff173f-23db-4b04-9cde-d3c278ab999f" />
+      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3" />
+      <column name="FIELD" value="STANDARD_COUNTRY" />
+      <column name="SORTING" valueNumeric="2" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="86865c59-aa8b-4511-bf3d-b069395c684d" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81"/>
-      <column name="FIELD" value="{@salutation@}"/>
-      <column name="SORTING" valueNumeric="1"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="300aeca0-0de8-4225-99ce-bcbb850016aa"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="0d50e14b-4447-488c-b1ca-ec093bc5440a" />
+      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3" />
+      <column name="FIELD" value="ADDRESS_ID" />
+      <column name="SORTING" valueNumeric="5" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="86865c59-aa8b-4511-bf3d-b069395c684d" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a"/>
-      <column name="FIELD" value="{@lastname@}"/>
-      <column name="SORTING" valueNumeric="4"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="330bc05f-501e-4774-85bc-046347829dda"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="1428942a-f595-4d9a-8e30-8506b360eb9b" />
+      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a" />
+      <column name="FIELD" value="STANDARD_ZIP" />
+      <column name="SORTING" valueNumeric="6" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="4f036ac7-b1bf-4667-9177-7c0d444b1819" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81"/>
-      <column name="FIELD" value="{@phone@}"/>
-      <column name="SORTING" valueNumeric="4"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="334146d9-7950-4c59-9b07-d89eb57a0da2"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="252abd36-6dbd-49cd-a7f4-e8d99a061d88" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="STARTDATE" />
+      <column name="SORTING" valueNumeric="7" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a"/>
-      <column name="FIELD" value="{@firstname@}"/>
-      <column name="SORTING" valueNumeric="3"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="34c65722-937f-4741-9c08-48a841e19527"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="2a270e64-55c2-4521-a509-77a7c4f024cb" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="volumeWeighted" />
+      <column name="SORTING" valueNumeric="13" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3"/>
-      <column name="FIELD" value="{@address@}"/>
-      <column name="SORTING" valueNumeric="5"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="5ebc3ae4-80dd-497e-a26e-f275769f81e4"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="2e686a67-ac5c-407b-9b38-2f40168efdb1" />
+      <column name="EXPORTTEMPLATE_ID" value="5aaa7d13-3b12-45b5-a794-1f702e31051a" />
+      <column name="FIELD" value="CONTACT_ID" />
+      <column name="SORTING" valueNumeric="2" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="9dd3dadf-4a98-42b2-8ed3-534791b5dc9c" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a"/>
-      <column name="FIELD" value="{@zipCode@}"/>
-      <column name="SORTING" valueNumeric="7"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="779f6222-d1e8-4ec3-953a-31cb27115b9a"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="31be21ec-f403-42a3-a600-558b2e0133f3" />
+      <column name="EXPORTTEMPLATE_ID" value="5aaa7d13-3b12-45b5-a794-1f702e31051a" />
+      <column name="FIELD" value="EMAIL_ADDRESS" />
+      <column name="SORTING" valueNumeric="3" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="9dd3dadf-4a98-42b2-8ed3-534791b5dc9c" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81"/>
-      <column name="FIELD" value="{@email@}"/>
-      <column name="SORTING" valueNumeric="5"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="8fd83e1e-e2ef-499c-9425-0da511fdb6fb"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="32872d18-d88d-40db-afee-3d5e8d1317ab" />
+      <column name="EXPORTTEMPLATE_ID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="FIELD" value="CAMPAIGNSTEP_ID" />
+      <column name="SORTING" valueNumeric="5" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="dbcc278e-bcc3-45d2-8315-502efbec6714" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="84eb1373-3745-4455-a0a7-32cf62c8d4dc"/>
-      <column name="FIELD" value="{@salutation@}"/>
-      <column name="SORTING" valueNumeric="1"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="a9fae3fa-e2c1-4c34-a264-e74bc93e6ac9"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="34afc9f5-633d-4504-a04b-0e99b8b159a9" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="PHASE" />
+      <column name="SORTING" valueNumeric="9" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a"/>
-      <column name="FIELD" value="{@salutation@}"/>
-      <column name="SORTING" valueNumeric="1"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="acb36d07-089e-4a25-a0c2-694b06e74ae5"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="3bac8770-f493-4500-b61c-ba8c8430eb6b" />
+      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a" />
+      <column name="FIELD" value="STANDARD_COUNTRY" />
+      <column name="SORTING" valueNumeric="5" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="4f036ac7-b1bf-4667-9177-7c0d444b1819" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="84eb1373-3745-4455-a0a7-32cf62c8d4dc"/>
-      <column name="FIELD" value="{@lastname@}"/>
-      <column name="SORTING" valueNumeric="3"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="ba303e1b-40c9-4fef-bbdf-6d16ab0dbeb0"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="43d1c9fa-bfb1-4d29-b03d-d7bda33e38f0" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="DATE_NEW" />
+      <column name="SORTING" valueNumeric="6" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3"/>
-      <column name="FIELD" value="{@country@}"/>
-      <column name="SORTING" valueNumeric="2"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="bfeb9284-6db4-4d15-a07b-9b3f21fe9c22"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="4aa7c73e-4fae-4453-ba1f-740d291b0210" />
+      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81" />
+      <column name="FIELD" value="LASTNAME" />
+      <column name="SORTING" valueNumeric="3" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="408eba99-bcc3-4308-9b2c-1a4495e01a0f" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a"/>
-      <column name="FIELD" value="{@address@}"/>
-      <column name="SORTING" valueNumeric="8"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="bffb3d69-7774-438e-85b2-81fc0629462a"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="58a0832a-05bd-4fc6-b190-7224caf01ba8" />
+      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81" />
+      <column name="FIELD" value="SALUTATION" />
+      <column name="SORTING" valueNumeric="1" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="408eba99-bcc3-4308-9b2c-1a4495e01a0f" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3"/>
-      <column name="FIELD" value="{@region@}"/>
-      <column name="SORTING" valueNumeric="3"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="c245bf8e-1d99-4d85-834c-64613bad5042"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="58a2a677-8459-4292-a8c7-5818f3568cac" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="ENDDATE" />
+      <column name="SORTING" valueNumeric="8" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3"/>
-      <column name="FIELD" value="{@zipCode@}"/>
-      <column name="SORTING" valueNumeric="4"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="c39bb945-ecd2-4836-9cee-002178ae9709"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="5c86ea95-be1f-4eb2-9b12-02bb35f5a532" />
+      <column name="EXPORTTEMPLATE_ID" value="5aaa7d13-3b12-45b5-a794-1f702e31051a" />
+      <column name="FIELD" value="NAME" />
+      <column name="SORTING" valueNumeric="1" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="4fba481d-310a-45aa-b1ff-d1667dab141f" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="84eb1373-3745-4455-a0a7-32cf62c8d4dc"/>
-      <column name="FIELD" value="{@phone@}"/>
-      <column name="SORTING" valueNumeric="4"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="cacce4e9-c9ad-4dd3-ac43-79684ef57008"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="7d36b12a-db74-4d21-908d-56902caaee86" />
+      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81" />
+      <column name="FIELD" value="FIRSTNAME" />
+      <column name="SORTING" valueNumeric="2" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="408eba99-bcc3-4308-9b2c-1a4495e01a0f" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="84eb1373-3745-4455-a0a7-32cf62c8d4dc"/>
-      <column name="FIELD" value="{@email@}"/>
-      <column name="SORTING" valueNumeric="5"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="d01169d3-aab0-4233-b5ec-02ede86995cf"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="7db7cf51-5da9-41f4-911d-87f322c1bc68" />
+      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a" />
+      <column name="FIELD" value="ADDRESS_ID" />
+      <column name="SORTING" valueNumeric="7" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="4f036ac7-b1bf-4667-9177-7c0d444b1819" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3"/>
-      <column name="FIELD" value="{@orgname@}"/>
-      <column name="SORTING" valueNumeric="1"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="e153ea76-5e68-497a-8a3e-9bb40ce734b3"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="896ec040-5b57-4ca6-b4e5-42cadd18682a" />
+      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a" />
+      <column name="FIELD" value="SALUTATION" />
+      <column name="SORTING" valueNumeric="1" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="4f036ac7-b1bf-4667-9177-7c0d444b1819" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a"/>
-      <column name="FIELD" value="{@title@}"/>
-      <column name="SORTING" valueNumeric="2"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="e1b5c9c8-846a-4195-af5c-09e923c1c1c6"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="8e0f578f-43dc-43d3-8c48-ec174f466c23" />
+      <column name="EXPORTTEMPLATE_ID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="FIELD" value="STANDARD_EMAIL_COMMUNICATION" />
+      <column name="SORTING" valueNumeric="7" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="dbcc278e-bcc3-45d2-8315-502efbec6714" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81"/>
-      <column name="FIELD" value="{@firstname@}"/>
-      <column name="SORTING" valueNumeric="2"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="e319ac75-3468-4167-8f0d-568a0dfaef7d"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="97607099-0219-4245-a5e7-a340973e74ea" />
+      <column name="EXPORTTEMPLATE_ID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="FIELD" value="STANDARD_PHONE_COMMUNICATION" />
+      <column name="SORTING" valueNumeric="8" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="dbcc278e-bcc3-45d2-8315-502efbec6714" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
     <insert tableName="exporttemplatefield">
-      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a"/>
-      <column name="FIELD" value="{@region@}"/>
-      <column name="SORTING" valueNumeric="6"/>
-      <column name="EXPORTTEMPLATEFIELDID" value="e9f1cd83-5652-4f5b-913b-40dea9eda1c8"/>
+      <column name="EXPORTTEMPLATEFIELDID" value="98ab5af0-f780-4723-b64f-9dc186eb4fc5" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="VOLUME" />
+      <column name="SORTING" valueNumeric="12" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="98deeade-09b5-46b3-b0d8-b8ecc3950f90" />
+      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81" />
+      <column name="FIELD" value="STANDARD_EMAIL_COMMUNICATION" />
+      <column name="SORTING" valueNumeric="5" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="408eba99-bcc3-4308-9b2c-1a4495e01a0f" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="999b389f-2e64-433d-8acc-f1a62f49942c" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="PROBABILITY" />
+      <column name="SORTING" valueNumeric="11" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="9bd8c67a-2a07-4998-b47e-b6eccfc28a9b" />
+      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a" />
+      <column name="FIELD" value="TITLE" />
+      <column name="SORTING" valueNumeric="2" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="4f036ac7-b1bf-4667-9177-7c0d444b1819" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="9e6cc3fa-dbb1-49bd-839b-6999f289194c" />
+      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a" />
+      <column name="FIELD" value="FIRSTNAME" />
+      <column name="SORTING" valueNumeric="3" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="4f036ac7-b1bf-4667-9177-7c0d444b1819" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="a2f51b99-0add-424c-ba85-8ad690b4d33d" />
+      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3" />
+      <column name="FIELD" value="STANDARD_ZIP" />
+      <column name="SORTING" valueNumeric="4" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="86865c59-aa8b-4511-bf3d-b069395c684d" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="a3fd3c48-9b00-4de6-9fed-044b89266508" />
+      <column name="EXPORTTEMPLATE_ID" value="5aaa7d13-3b12-45b5-a794-1f702e31051a" />
+      <column name="FIELD" value="STATUS" />
+      <column name="SORTING" valueNumeric="5" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="9dd3dadf-4a98-42b2-8ed3-534791b5dc9c" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="aa33fc39-ca51-4cd9-a11a-e9fbdb2e2d2d" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="PROJECTTITLE" />
+      <column name="SORTING" valueNumeric="2" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="ab0190b1-fbb5-485f-ade7-e1953f14bc27" />
+      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81" />
+      <column name="FIELD" value="STANDARD_PHONE_COMMUNICATION" />
+      <column name="SORTING" valueNumeric="4" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="408eba99-bcc3-4308-9b2c-1a4495e01a0f" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="ada14af6-4daf-4448-bbbf-baa70c3b69ac" />
+      <column name="EXPORTTEMPLATE_ID" value="5aaa7d13-3b12-45b5-a794-1f702e31051a" />
+      <column name="FIELD" value="IS_TEST_RECIPIENT" />
+      <column name="SORTING" valueNumeric="4" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="9dd3dadf-4a98-42b2-8ed3-534791b5dc9c" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="adf9b254-aece-4a52-a48b-ddd559507810" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="STATUS" />
+      <column name="SORTING" valueNumeric="10" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="ae2c4074-c8b2-458e-8afc-e395b7d0b033" />
+      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3" />
+      <column name="FIELD" value="NAME" />
+      <column name="SORTING" valueNumeric="1" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="86865c59-aa8b-4511-bf3d-b069395c684d" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="c1fc93ee-93c0-46c5-a5f8-50ee48730fff" />
+      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a" />
+      <column name="FIELD" value="LASTNAME" />
+      <column name="SORTING" valueNumeric="4" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="4f036ac7-b1bf-4667-9177-7c0d444b1819" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="c245bf8e-1d99-4d85-834c-64613bad5042" />
+      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3" />
+      <column name="FIELD" value="{@region@}" />
+      <column name="SORTING" valueNumeric="3" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="c6958ee7-0043-40c5-9e4d-36e0539a7108" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="InactiveTime" />
+      <column name="SORTING" valueNumeric="5" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="c6c5b3f4-463a-46d4-a41d-e626d0779ffe" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="CONTACT_ID" />
+      <column name="SORTING" valueNumeric="3" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="cef3af15-0882-4d9b-998e-33c1a8a3bb16" />
+      <column name="EXPORTTEMPLATE_ID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="FIELD" value="FIRSTNAME" />
+      <column name="SORTING" valueNumeric="2" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e0a19680-fd01-49a3-9993-ac57fc37d403" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="d32d0a6b-c315-47e8-bedf-ff49b529d232" />
+      <column name="EXPORTTEMPLATE_ID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="FIELD" value="LASTNAME" />
+      <column name="SORTING" valueNumeric="3" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e0a19680-fd01-49a3-9993-ac57fc37d403" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="db86c14a-3eef-4910-aa06-ff2d1a19d92d" />
+      <column name="EXPORTTEMPLATE_ID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="FIELD" value="NAME" />
+      <column name="SORTING" valueNumeric="1" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="a148ad53-b921-45f0-81d4-e573a5c05661" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="dbb557ad-00eb-402f-b4e7-e90a86d228d4" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="FIELD" value="CLASSIFICATIONVALUE" />
+      <column name="SORTING" valueNumeric="4" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="e296802a-04a5-4860-8f8c-63be42dd932b" />
+      <column name="EXPORTTEMPLATE_ID" value="5aaa7d13-3b12-45b5-a794-1f702e31051a" />
+      <column name="FIELD" value="SENTDATE" />
+      <column name="SORTING" valueNumeric="6" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="9dd3dadf-4a98-42b2-8ed3-534791b5dc9c" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplatefield">
+      <column name="EXPORTTEMPLATEFIELDID" value="f0311199-5555-4eda-8964-752857d0bbb9" />
+      <column name="EXPORTTEMPLATE_ID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="FIELD" value="CONTACT_ORGANISATION_ID" />
+      <column name="SORTING" valueNumeric="4" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="dbcc278e-bcc3-45d2-8315-502efbec6714" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
   </changeSet>
-</databaseChangeLog>
\ No newline at end of file
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplateplaceofuse.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplateplaceofuse.xml
index a48b54def84be4bde31a284e85a5d5dc0c82855e..40a5c48680df6d7a3f727f01428cddaa26224117 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplateplaceofuse.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/exporttemplateplaceofuse.xml
@@ -1,26 +1,161 @@
-<?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="autogenerated" id="fb7d1b86-3a39-4fe4-b963-0c61abebca52">
-    <delete tableName="exporttemplateplaceofuse"/>
+<?xml version="1.0" encoding="UTF-8"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+  <changeSet author="s.pongratz" id="2ab02746-44f6-414e-922c-0b43ea0f3ab3">
     <insert tableName="exporttemplateplaceofuse">
-      <column name="EXPORTTEMPLATE_ID" value="84eb1373-3745-4455-a0a7-32cf62c8d4dc"/>
-      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="135975c6-6c7a-408b-93e3-f04239503ff0"/>
-      <column name="PLACEOFUSE" value="Person"/>
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="408eba99-bcc3-4308-9b2c-1a4495e01a0f" />
+      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81" />
+      <column name="PLACEOFUSE" value="Person" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" />
+      <column name="OBJECT_FILTER" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" value="Admin" />
+      <column name="DATE_EDIT" valueDate="2021-09-29T08:05:30" />
     </insert>
     <insert tableName="exporttemplateplaceofuse">
-      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81"/>
-      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="408eba99-bcc3-4308-9b2c-1a4495e01a0f"/>
-      <column name="PLACEOFUSE" value="Person"/>
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="4f036ac7-b1bf-4667-9177-7c0d444b1819" />
+      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a" />
+      <column name="PLACEOFUSE" value="Person" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" />
+      <column name="OBJECT_FILTER" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" value="Admin" />
+      <column name="DATE_EDIT" valueDate="2021-09-29T08:40:37" />
     </insert>
     <insert tableName="exporttemplateplaceofuse">
-      <column name="EXPORTTEMPLATE_ID" value="86b48d2c-3850-4778-9240-45cf79396a0a"/>
-      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="4f036ac7-b1bf-4667-9177-7c0d444b1819"/>
-      <column name="PLACEOFUSE" value="Person"/>
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="4fba481d-310a-45aa-b1ff-d1667dab141f" />
+      <column name="EXPORTTEMPLATE_ID" value="5aaa7d13-3b12-45b5-a794-1f702e31051a" />
+      <column name="PLACEOFUSE" value="BulkMail" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" />
+      <column name="OBJECT_FILTER" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="DATE_NEW" valueDate="2021-09-30T11:19:47" />
+      <column name="USER_EDIT" value="Admin" />
+      <column name="DATE_EDIT" valueDate="2021-09-30T11:40:16" />
     </insert>
     <insert tableName="exporttemplateplaceofuse">
-      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3"/>
-      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="86865c59-aa8b-4511-bf3d-b069395c684d"/>
-      <column name="PLACEOFUSE" value="Organisation"/>
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="510ce9f1-9903-4978-9457-7bb85e85c71c" />
+      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3" />
+      <column name="PLACEOFUSE" value="Offeritem" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="94b03949-623a-4898-91cf-32ff21befaac" />
+      <column name="OBJECT_FILTER" value="{&quot;entity&quot;:&quot;Offeritem_entity&quot;,&quot;filter&quot;:{&quot;type&quot;:&quot;group&quot;,&quot;operator&quot;:&quot;AND&quot;,&quot;childs&quot;:[]}}" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="DATE_NEW" valueDate="2021-09-29T09:30:33" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplateplaceofuse">
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="58390700-4308-45c2-865f-ea86cb38e7f5" />
+      <column name="EXPORTTEMPLATE_ID" value="3acf26f9-4807-4661-8084-c0c21c593c81" />
+      <column name="PLACEOFUSE" value="Address" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="408eba99-bcc3-4308-9b2c-1a4495e01a0f" />
+      <column name="OBJECT_FILTER" value="{&quot;entity&quot;:&quot;Address_entity&quot;,&quot;filter&quot;:{&quot;type&quot;:&quot;group&quot;,&quot;operator&quot;:&quot;AND&quot;,&quot;childs&quot;:[]}}" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="DATE_NEW" valueDate="2021-09-29T08:26:27" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplateplaceofuse">
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="58c8768c-0d1b-4a68-a7c1-4d2d35fe3431" />
+      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3" />
+      <column name="PLACEOFUSE" value="Address" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="86865c59-aa8b-4511-bf3d-b069395c684d" />
+      <column name="OBJECT_FILTER" value="{&quot;entity&quot;:&quot;Address_entity&quot;,&quot;filter&quot;:{&quot;type&quot;:&quot;group&quot;,&quot;operator&quot;:&quot;AND&quot;,&quot;childs&quot;:[]}}" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="DATE_NEW" valueDate="2021-09-29T09:32:08" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplateplaceofuse">
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="86865c59-aa8b-4511-bf3d-b069395c684d" />
+      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3" />
+      <column name="PLACEOFUSE" value="Organisation" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" />
+      <column name="OBJECT_FILTER" />
+      <column name="USER_NEW" />
+      <column name="DATE_NEW" />
+      <column name="USER_EDIT" value="Admin" />
+      <column name="DATE_EDIT" valueDate="2021-09-29T08:49:04" />
+    </insert>
+    <insert tableName="exporttemplateplaceofuse">
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="94b03949-623a-4898-91cf-32ff21befaac" />
+      <column name="EXPORTTEMPLATE_ID" value="f399dc64-11b8-4490-ad24-53c9c3fc6df3" />
+      <column name="PLACEOFUSE" value="Offer" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="86865c59-aa8b-4511-bf3d-b069395c684d" />
+      <column name="OBJECT_FILTER" value="{&quot;entity&quot;:&quot;Offer_entity&quot;,&quot;filter&quot;:{&quot;type&quot;:&quot;group&quot;,&quot;operator&quot;:&quot;AND&quot;,&quot;childs&quot;:[]}}" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="DATE_NEW" valueDate="2021-09-29T09:30:23" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplateplaceofuse">
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="9dd3dadf-4a98-42b2-8ed3-534791b5dc9c" />
+      <column name="EXPORTTEMPLATE_ID" value="5aaa7d13-3b12-45b5-a794-1f702e31051a" />
+      <column name="PLACEOFUSE" value="BulkMailRecipient" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="4fba481d-310a-45aa-b1ff-d1667dab141f" />
+      <column name="OBJECT_FILTER" value="{&quot;entity&quot;:&quot;BulkMailRecipient_entity&quot;,&quot;filter&quot;:{&quot;type&quot;:&quot;group&quot;,&quot;operator&quot;:&quot;AND&quot;,&quot;childs&quot;:[]}}" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="DATE_NEW" valueDate="2021-09-30T11:20:24" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplateplaceofuse">
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="a148ad53-b921-45f0-81d4-e573a5c05661" />
+      <column name="EXPORTTEMPLATE_ID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="PLACEOFUSE" value="Campaign" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" />
+      <column name="OBJECT_FILTER" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="DATE_NEW" valueDate="2021-09-30T11:04:56" />
+      <column name="USER_EDIT" value="Admin" />
+      <column name="DATE_EDIT" valueDate="2021-09-30T11:07:11" />
+    </insert>
+    <insert tableName="exporttemplateplaceofuse">
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="dbcc278e-bcc3-45d2-8315-502efbec6714" />
+      <column name="EXPORTTEMPLATE_ID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="PLACEOFUSE" value="CampaignParticipant" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="a148ad53-b921-45f0-81d4-e573a5c05661" />
+      <column name="OBJECT_FILTER" value="{&quot;entity&quot;:&quot;CampaignParticipant_entity&quot;,&quot;filter&quot;:{&quot;type&quot;:&quot;group&quot;,&quot;operator&quot;:&quot;AND&quot;,&quot;childs&quot;:[]}}" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="DATE_NEW" valueDate="2021-09-30T11:07:59" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplateplaceofuse">
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="e0a19680-fd01-49a3-9993-ac57fc37d403" />
+      <column name="EXPORTTEMPLATE_ID" value="8a7fefcd-3e35-4bbf-8ad2-f10d4ed1d66b" />
+      <column name="PLACEOFUSE" value="Person" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" value="dbcc278e-bcc3-45d2-8315-502efbec6714" />
+      <column name="OBJECT_FILTER" value="{&quot;entity&quot;:&quot;Person_entity&quot;,&quot;filter&quot;:{&quot;type&quot;:&quot;group&quot;,&quot;operator&quot;:&quot;AND&quot;,&quot;childs&quot;:[]}}" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="DATE_NEW" valueDate="2021-09-30T11:25:58" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
+    </insert>
+    <insert tableName="exporttemplateplaceofuse">
+      <column name="EXPORTTEMPLATEPLACEOFUSEID" value="e6f81233-685f-434c-99e4-4ab2c4adbeff" />
+      <column name="EXPORTTEMPLATE_ID" value="726f7fa4-510f-407b-b42c-53f70df3f529" />
+      <column name="PLACEOFUSE" value="Salesproject" />
+      <column name="TITLE" />
+      <column name="EXPORTTEMPLATEPLACEOFUSE_ID" />
+      <column name="OBJECT_FILTER" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="DATE_NEW" valueDate="2021-09-30T11:42:32" />
+      <column name="USER_EDIT" />
+      <column name="DATE_EDIT" />
     </insert>
   </changeSet>
-</databaseChangeLog>
\ No newline at end of file
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/mst_team.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/mst_team.xml
index dfb7506b9d264a176bbfa7cee102fcd78c5db249..23e77fc417a6d82f6b4b2fcca23d9c10d6466b79 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/mst_team.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/mst_team.xml
@@ -3,4 +3,4 @@
   <changeSet author="autogenerated" id="7ad7747a-cafd-4c32-813c-a23e47450f9e">
     <delete tableName="mst_team"/>
   </changeSet>
-</databaseChangeLog>
\ No newline at end of file
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/mst_teamlink.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/mst_teamlink.xml
deleted file mode 100644
index cb4100baa199c70eadfcabe4058aa74dfa30b230..0000000000000000000000000000000000000000
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/mst_teamlink.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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="autogenerated" id="c71eff7a-751b-487f-928d-c888e544df40">
-    <delete tableName="mst_teamlink"/>
-  </changeSet>
-</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml
index e211a0f400b6d71748232707325c22af7fbf936c..b55ed31802b0171eb979ba27c488a46982645380 100644
--- a/.liquibase/Data_alias/changelog.xml
+++ b/.liquibase/Data_alias/changelog.xml
@@ -28,7 +28,7 @@
     <include relativeToChangelogFile="true" file="basic/2021.1.2/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2021.1.3/changelog.xml"/>
     <include relativeToChangelogFile="true" file="basic/2021.2.0/changelog.xml"/>
-    
+
     <include relativeToChangelogFile="true" file="basic/workflows/changelog.xml" context="workflow"/>
     <include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index d8cabfd34c6534dd6a89db36b5b43dd3bf13d82e..f3a9f0c3849ae2ab3d3fd61e12e986b45062fd63 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -1242,7 +1242,7 @@
                 <name>ISSTANDARD</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -1645,8 +1645,8 @@
                 <name>ADVERTISING</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="1" />
+                <columnType v="-7" />
+                <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -1925,7 +1925,7 @@
                 <name>OPTIONAL</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -1945,7 +1945,7 @@
                 <name>TAKEPRICE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -2449,7 +2449,7 @@
                 <name>IN_OUT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -2688,7 +2688,7 @@
                 <name>VAT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2" />
+                <columnType v="3" />
                 <size v="14" />
                 <scale v="2" />
                 <notNull v="false" />
@@ -2714,8 +2714,8 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <size v="19" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -2848,7 +2848,7 @@
                 <name>NET</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2" />
+                <columnType v="3" />
                 <size v="14" />
                 <scale v="2" />
                 <notNull v="false" />
@@ -2873,7 +2873,7 @@
                 <name>HEADER</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
+                <columnType v="-1" />
                 <size v="2147483647" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -2935,7 +2935,7 @@
                 <name>ADDRESS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
+                <columnType v="-1" />
                 <size v="2147483647" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -3008,7 +3008,7 @@
                 <name>INFO</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
+                <columnType v="-1" />
                 <size v="2147483647" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -3030,8 +3030,8 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <size v="19" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -3058,8 +3058,8 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <size v="19" />
+                <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -3113,7 +3113,7 @@
                 <name>FOOTER</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
+                <columnType v="-1" />
                 <size v="2147483647" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -3155,7 +3155,7 @@
                 <name>DISCOUNT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2" />
+                <columnType v="3" />
                 <size v="14" />
                 <scale v="2" />
                 <notNull v="false" />
@@ -3169,7 +3169,7 @@
                 <name>DISCOUNTED_NET</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2" />
+                <columnType v="3" />
                 <size v="14" />
                 <scale v="2" />
                 <notNull v="false" />
@@ -3183,7 +3183,7 @@
                 <name>DISCOUNTED_VAT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2" />
+                <columnType v="3" />
                 <size v="14" />
                 <scale v="2" />
                 <notNull v="false" />
@@ -3442,7 +3442,7 @@
                 <name>OPTIONAL</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -3913,48 +3913,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>CURRENCY</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="3" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>CURRENCYRATE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="6" />
-                <size v="12" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>VOLUMEFOREIGNCURRENCY</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="3" />
-                <size v="14" />
-                <scale v="2" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -4386,20 +4344,6 @@
                   </customJDitoProperty>
                 </customProperties>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>HAS_ATTACHMENTS</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="4" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -4765,7 +4709,7 @@
                 <name>CANCELLATION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -5047,7 +4991,7 @@
                 <name>ORDERSTATUS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -5515,8 +5459,8 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <size v="19" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -5608,7 +5552,7 @@
                 <name>DESCRIPTION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
+                <columnType v="-1" />
                 <size v="2147483647" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -5710,8 +5654,8 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <size v="19" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -6212,7 +6156,7 @@
                 <name>ATTRIBUTE_ACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -6781,7 +6725,7 @@
                 <name>ISESSENTIAL</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -6886,7 +6830,7 @@
                 <name>ISACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -7011,7 +6955,7 @@
                 <name>ISACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -7202,7 +7146,7 @@
                 <name>BOOL_VALUE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -8882,7 +8826,7 @@
                 <name>ALL_TICKET_CATEGORIES</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -10468,9 +10412,9 @@
                 <name>VOLUME</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="3" />
-                <size v="14" />
-                <scale v="2" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -10631,20 +10575,6 @@
                   </customBooleanProperty>
                 </customProperties>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>VOLUMEFOREIGNCURRENCY</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="3" />
-                <size v="14" />
-                <scale v="2" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -11057,7 +10987,7 @@
                 <name>CREATEACTIVITIES</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -11099,7 +11029,7 @@
                 <name>USE_TEMPLATE_ATTACHMENTS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -11385,7 +11315,7 @@
                 <name>IS_TEST_RECIPIENT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -11567,7 +11497,7 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="50" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -11623,7 +11553,7 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="50" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -11665,7 +11595,7 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="50" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -11744,20 +11674,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>HAS_ATTACHMENTS</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="4" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>EDITOR_CONTACT_ID</name>
                 <dbName></dbName>
@@ -12750,7 +12666,7 @@
                 <name>ONSITE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -12764,7 +12680,7 @@
                 <name>RESPONSIBLE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -14416,6 +14332,104 @@
                   </entityDependency>
                 </dependencies>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>EXPORTTEMPLATEPLACEOFUSE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_FILTER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-1" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TITLE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="150" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -14742,32 +14756,102 @@
                   </entityDependency>
                 </dependencies>
               </entityFieldDb>
-            </entityFields>
-          </entityDb>
-          <entityDb>
-            <name>EXPORTTEMPLATESELECTION</name>
-            <dbName></dbName>
-            <idColumn>EXPORTTEMPLATESELECTIONID</idColumn>
-            <idGeneratorType v="0" />
-            <idGeneratorInterval v="1" />
-            <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/exporttemplateselection/documentation.adoc</documentation>
-            <title></title>
-            <description></description>
-            <auditSyncConfig>
-              <name>auditSyncConfig</name>
-              <auditMode v="0" />
-              <syncActive v="false" />
-              <syncComplete v="true" />
-              <syncDirection v="1" />
-              <syncIds></syncIds>
-            </auditSyncConfig>
-            <entityFields>
               <entityFieldDb>
-                <name>EXPORTTEMPLATESELECTIONID</name>
+                <name>DATE_EDIT</name>
                 <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
-                <size v="36" />
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>EXPORTTEMPLATEPLACEOFUSE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>EXPORTTEMPLATESELECTION</name>
+            <dbName></dbName>
+            <idColumn>EXPORTTEMPLATESELECTIONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/exporttemplateselection/documentation.adoc</documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>EXPORTTEMPLATESELECTIONID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="true" />
@@ -16215,62 +16299,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>VALIDTO</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="23" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>ADVISERSTATUS</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>VALIDFROM</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="23" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>ADVISERROLE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -17600,82 +17628,6 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
-          <entityDb>
-            <name>MST_TEAMLINK</name>
-            <dbName></dbName>
-            <idColumn>MST_TEAMLINKID</idColumn>
-            <idGeneratorType v="0" />
-            <idGeneratorInterval v="1" />
-            <documentation></documentation>
-            <title></title>
-            <description></description>
-            <auditSyncConfig>
-              <name>auditSyncConfig</name>
-              <auditMode v="0" />
-              <syncActive v="false" />
-              <syncComplete v="true" />
-              <syncDirection v="1" />
-              <syncIds></syncIds>
-            </auditSyncConfig>
-            <entityFields>
-              <entityFieldDb>
-                <name>OBJECT_ROWID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>MST_TEAM_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>MST_TEAMLINKID</name>
-                <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="true" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>OBJECT_TYPE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="63" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-            </entityFields>
-          </entityDb>
           <entityDb>
             <name>MST_TEAM</name>
             <dbName></dbName>
@@ -17712,7 +17664,7 @@
                 <name>IS_ARCHIVED</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -17754,8 +17706,8 @@
                 <name>GENERAL_CHANNELID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="48" />
+                <columnType v="12" />
+                <size v="200" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -17905,7 +17857,7 @@
                 <name>TRIGGEREVENTDELETE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -17918,7 +17870,7 @@
                 <name>TRIGGEREVENTINSERT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -17931,7 +17883,7 @@
                 <name>TRIGGEREVENTUPDATE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -18243,7 +18195,7 @@
                 <name>AUTO</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -18271,7 +18223,7 @@
                 <name>FILTER_USED</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -18999,7 +18951,7 @@
                 <name>ISREDIRECT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -19693,7 +19645,7 @@
                 <name>ISACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -20179,7 +20131,7 @@
                 <name>IS_DEFAULT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -21727,7 +21679,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ews_info_log/entityfields/user_id/documentation.adoc</documentation>
                 <title></title>
                 <description></description>
@@ -21741,7 +21693,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ews_info_log/entityfields/priority/documentation.adoc</documentation>
                 <title></title>
                 <description></description>
@@ -21783,7 +21735,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <documentation>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/ews_info_log/entityfields/type/documentation.adoc</documentation>
                 <title></title>
                 <description></description>
@@ -21910,7 +21862,7 @@
                 <name>ISACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -21920,20 +21872,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>ACTION_TYPE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>EMAIL_FILTER_HANDLINGID</name>
                 <dbName></dbName>
@@ -21949,130 +21887,17 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>ISFALLTHROUGH</name>
+                <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <columnType v="93" />
+                <size v="19" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="true" />
+                <index v="false" />
                 <documentation></documentation>
-                <title>Responsible</title>
-                <description></description>
-                <customProperties>
-                  <customBooleanProperty>
-                    <name>log</name>
-                    <global v="false" />
-                    <property v="true" />
-                  </customBooleanProperty>
-                  <customJDitoProperty>
-                    <name>translate4Log</name>
-                    <global v="false" />
-                    <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/advertising/entityfields/responsible_id/customproperties/translate4log/property.js</property>
-                  </customJDitoProperty>
-                </customProperties>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>CONTACT_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="true" />
-                <documentation></documentation>
-                <title>Contact</title>
-                <description></description>
-                <customProperties>
-                  <customBooleanProperty>
-                    <name>log</name>
-                    <global v="false" />
-                    <property v="true" />
-                  </customBooleanProperty>
-                  <customJDitoProperty>
-                    <name>translate4log</name>
-                    <global v="false" />
-                    <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/advertising/entityfields/contact_id/customproperties/translate4log/property.js</property>
-                  </customJDitoProperty>
-                </customProperties>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>OBJECT_TYPE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="63" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>CURRENCY</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title>Currency</title>
-                <description></description>
-                <customProperties>
-                  <customBooleanProperty>
-                    <name>log</name>
-                    <global v="false" />
-                    <property v="true" />
-                  </customBooleanProperty>
-                </customProperties>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>STATUS</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title>Status</title>
-                <description></description>
-                <customProperties>
-                  <customBooleanProperty>
-                    <name>log</name>
-                    <global v="false" />
-                    <property v="true" />
-                  </customBooleanProperty>
-                  <customStringProperty>
-                    <name>keyword</name>
-                    <global v="false" />
-                    <property>advertisingStatus</property>
-                  </customStringProperty>
-                </customProperties>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>DATE_EDIT</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
+                <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
@@ -22080,8 +21905,8 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <size v="19" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -22117,20 +21942,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>OBJECT_ROWID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -22183,7 +21994,7 @@
                 <name>PRICE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2" />
+                <columnType v="3" />
                 <size v="14" />
                 <scale v="2" />
                 <notNull v="false" />
@@ -22205,8 +22016,8 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
+                <size v="19" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -22218,7 +22029,7 @@
                 <name>QUANTITY</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2" />
+                <columnType v="3" />
                 <size v="14" />
                 <scale v="2" />
                 <notNull v="false" />
@@ -22239,7 +22050,7 @@
                 <name>INFO</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
+                <columnType v="-1" />
                 <size v="2147483647" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -22314,7 +22125,7 @@
                 <name>TARGETAMOUNT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2" />
+                <columnType v="3" />
                 <size v="14" />
                 <scale v="2" />
                 <notNull v="false" />
@@ -22334,8 +22145,8 @@
                 <name>ITEMPOSITION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="30" />
+                <columnType v="4" />
+                <size v="10" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -22377,96 +22188,6 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>USER_NEW</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="50" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>SENT</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="5" />
-                <size v="5" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-            </entityFields>
-          </entityDb>
-          <entityDb>
-            <name>CURRENCYRATE</name>
-            <dbName></dbName>
-            <idColumn>CURRENCYRATEID</idColumn>
-            <idGeneratorType v="0" />
-            <idGeneratorInterval v="1" />
-            <documentation></documentation>
-            <title></title>
-            <description></description>
-            <auditSyncConfig>
-              <name>auditSyncConfig</name>
-              <auditMode v="0" />
-              <syncActive v="false" />
-              <syncComplete v="true" />
-              <syncDirection v="1" />
-              <syncIds></syncIds>
-            </auditSyncConfig>
-            <entityFields>
-              <entityFieldDb>
-                <name>CURRENCYRATEID</name>
-                <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="true" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>TARGETCURRENCYISO</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="3" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>DATE_EDIT</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="93" />
                 <size v="19" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -22476,48 +22197,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>CURRENCYRATE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="6" />
-                <size v="12" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>DATE_NEW</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="19" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>SOURCECURRENCYISO</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="3" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>USER_NEW</name>
                 <dbName></dbName>
@@ -22533,27 +22212,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>VALID_FROM</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="19" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>USER_EDIT</name>
+                <name>SENT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="50" />
+                <columnType v="-7" />
+                <size v="3" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -22693,25 +22358,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>ROW_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>WORKFLOWSIGNAL_NAME</name>
+                <name>USER_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="250" />
+                <size v="50" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -22721,7 +22372,7 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_EDIT</name>
+                <name>USER_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
@@ -22735,15 +22386,15 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_NEW</name>
+                <name>OBJECT_ROWID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="50" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -23036,7 +22687,7 @@
                 <name>ACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -23592,7 +23243,7 @@
                 <name>STATE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
+                <columnType v="12" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -23930,7 +23581,7 @@
                 <name>ACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -23959,7 +23610,7 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="50" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -24071,7 +23722,7 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="50" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -24112,7 +23763,7 @@
                 <name>REVIEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -24202,7 +23853,7 @@
                 <name>STATUS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
+                <columnType v="12" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -24306,8 +23957,8 @@
                 <name>SEND_MAIL</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-7" />
-                <size v="3" />
+                <columnType v="5" />
+                <size v="5" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -24418,7 +24069,7 @@
                 <name>DEFAULTSIGNATURE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -24476,20 +24127,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>THRESHOLD</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="3" />
-                <size v="5" />
-                <scale v="2" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>ATTRIBUTE_FILTERID</name>
                 <dbName></dbName>
@@ -24532,20 +24169,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>COMPARISON_METHOD</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -24938,7 +24561,7 @@
                 <name>BASETEMPLATE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
+                <columnType v="12" />
                 <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -24966,9 +24589,142 @@
                 <name>CATEGORY</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>SALESORDERLINK</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>SALESORDERLINKID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>OBJECT_ROWID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SALESORDERLINKID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SALESORDER_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
diff --git a/aliasDefinition/Data_alias_noAudit/Data_alias_noAudit.aod b/aliasDefinition/Data_alias_noAudit/Data_alias_noAudit.aod
index b3519c357f472cb7e6708fa5e34c80e7d237ab3a..330076bb4dcfbdedefc2c99bbf41680b9218dde8 100644
--- a/aliasDefinition/Data_alias_noAudit/Data_alias_noAudit.aod
+++ b/aliasDefinition/Data_alias_noAudit/Data_alias_noAudit.aod
@@ -375,6 +375,104 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>EXPORTTEMPLATEPLACEOFUSE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_FILTER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-1" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TITLE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="150" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -691,7 +789,7 @@
                 <name>AUTO</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -803,7 +901,7 @@
                 <name>FILTER_USED</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -813,6 +911,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>POS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -1285,20 +1397,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>OUTDATED</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="-6" />
-                <size v="3" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>OBJECT_TYPE</name>
                 <dbName></dbName>
@@ -1369,6 +1467,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>SORTING</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -3117,9 +3229,9 @@
                 <name>PROBABILITY</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="3" />
-                <size v="6" />
-                <scale v="2" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -3375,7 +3487,7 @@
                 <name>OPTIONAL</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -3639,7 +3751,7 @@
                 <name>IN_OUT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -4651,6 +4763,34 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>ALL_TICKET_CATEGORIES</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-7" />
+                <size v="3" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TEMPLATECONTENT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-1" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -4877,7 +5017,7 @@
                 <name>ISACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -5189,7 +5329,7 @@
                 <name>BOOL_VALUE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -5393,34 +5533,14 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-            </entityFields>
-          </entityDb>
-          <entityDb>
-            <name>DATABASECHANGELOG</name>
-            <dbName></dbName>
-            <idColumn></idColumn>
-            <idGeneratorType v="1" />
-            <idGeneratorInterval v="1" />
-            <documentation></documentation>
-            <title></title>
-            <description></description>
-            <auditSyncConfig>
-              <name>auditSyncConfig</name>
-              <auditMode v="0" />
-              <syncActive v="false" />
-              <syncComplete v="true" />
-              <syncDirection v="1" />
-              <syncIds></syncIds>
-            </auditSyncConfig>
-            <entityFields>
               <entityFieldDb>
-                <name>EXECTYPE</name>
+                <name>EMAIL_DESCRIPTION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="10" />
+                <columnType v="-1" />
+                <size v="2147483647" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -5428,13 +5548,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DATEEXECUTED</name>
+                <name>DATE_EDIT_STATUS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
                 <size v="19" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -5442,13 +5562,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>ORDEREXECUTED</name>
+                <name>MEDIUM</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="4" />
-                <size v="10" />
+                <columnType v="12" />
+                <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -5456,7 +5576,7 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>COMMENTS</name>
+                <name>ALTERNATIVE_PHONEADDR</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
@@ -5470,13 +5590,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>AUTHOR</name>
+                <name>CC_RECIPIENTS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="255" />
+                <size v="500" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -5484,11 +5604,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>CONTEXTS</name>
+                <name>CONCLUSION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="255" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5498,11 +5618,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>MD5SUM</name>
+                <name>DATE_BEGIN</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="35" />
+                <columnType v="93" />
+                <size v="19" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5512,11 +5632,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DESCRIPTION</name>
+                <name>INBOX_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="255" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5526,11 +5646,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>LIQUIBASE</name>
+                <name>EMAIL_SUBJECT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="20" />
+                <size v="150" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5540,11 +5660,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DEPLOYMENT_ID</name>
+                <name>MAILSIGNATURE_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="10" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5554,13 +5674,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>ID</name>
+                <name>ORDER_ID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="255" />
+                <columnType v="1" />
+                <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -5568,11 +5688,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>TAG</name>
+                <name>SENDER_EMAIL</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="255" />
+                <size v="254" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5582,11 +5702,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>LABELS</name>
+                <name>CATEGORY</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="255" />
+                <size v="36" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5596,13 +5716,257 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>FILENAME</name>
+                <name>ALTERNATIVE_EMAILADDR</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
                 <size v="255" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>EDITOR_CONTACT_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_END</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>DATABASECHANGELOG</name>
+            <dbName></dbName>
+            <idColumn></idColumn>
+            <idGeneratorType v="1" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>EXECTYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATEEXECUTED</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ORDEREXECUTED</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>COMMENTS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>AUTHOR</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTEXTS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MD5SUM</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="35" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DESCRIPTION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>LIQUIBASE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="20" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DEPLOYMENT_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TAG</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>LABELS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>FILENAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -7181,7 +7545,7 @@
                 <name>IS_TEST_RECIPIENT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -7989,7 +8353,7 @@
                 <name>TRIGGEREVENTDELETE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -8003,7 +8367,7 @@
                 <name>TRIGGEREVENTINSERT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -8017,7 +8381,7 @@
                 <name>TRIGGEREVENTUPDATE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -8278,25 +8642,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>OUTDATED</name>
+                <name>OBJECT_TYPE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
-                <size v="3" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>OBJECT_TYPE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="63" />
+                <columnType v="12" />
+                <size v="63" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -8489,7 +8839,7 @@
                 <name>IS_ARCHIVED</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -8621,8 +8971,8 @@
                 <name>ADVERTISING</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="1" />
+                <columnType v="-7" />
+                <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -9081,7 +9431,7 @@
                 <name>ISESSENTIAL</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -9151,7 +9501,7 @@
                 <name>ISACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -9689,6 +10039,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>WORKFLOWDEFINITION_KEY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -11279,7 +11643,7 @@
                 <name>USE_TEMPLATE_ATTACHMENTS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -11377,7 +11741,7 @@
                 <name>CREATEACTIVITIES</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -11513,6 +11877,34 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>ISOLANGUAGE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="3" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MOSAICOTEMPLATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -11537,7 +11929,7 @@
                 <name>ISSTANDARD</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -12291,82 +12683,6 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
-          <entityDb>
-            <name>MST_TEAMLINK</name>
-            <dbName></dbName>
-            <idColumn>MST_TEAMLINKID</idColumn>
-            <idGeneratorType v="0" />
-            <idGeneratorInterval v="1" />
-            <documentation></documentation>
-            <title></title>
-            <description></description>
-            <auditSyncConfig>
-              <name>auditSyncConfig</name>
-              <auditMode v="0" />
-              <syncActive v="false" />
-              <syncComplete v="true" />
-              <syncDirection v="1" />
-              <syncIds></syncIds>
-            </auditSyncConfig>
-            <entityFields>
-              <entityFieldDb>
-                <name>OBJECT_ROWID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>MST_TEAM_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>MST_TEAMLINKID</name>
-                <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="true" />
-                <index v="true" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>OBJECT_TYPE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="63" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-            </entityFields>
-          </entityDb>
           <entityDb>
             <name>CONTRACT</name>
             <dbName></dbName>
@@ -13481,7 +13797,7 @@
                 <name>ONSITE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -13537,7 +13853,7 @@
                 <name>RESPONSIBLE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -13745,7 +14061,7 @@
                 <name>OPTIONAL</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -13759,7 +14075,7 @@
                 <name>TAKEPRICE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -14023,7 +14339,7 @@
                 <name>ATTRIBUTE_ACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -14589,6 +14905,76 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>EXPORTTEMPLATEPLACEOFUSE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -14891,7 +15277,7 @@
                 <name>CANCELLATION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -15213,7 +15599,7 @@
                 <name>ORDERSTATUS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -17469,7 +17855,7 @@
                 <name>IS_DEFAULT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -18019,7 +18405,7 @@
                 <name>ISACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -18053,7 +18439,7 @@
                 <name>ISREDIRECT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -18575,7 +18961,7 @@
                 <name>ISACTIVE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -18801,20 +19187,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>FREE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="-6" />
-                <size v="3" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>USER_EDIT</name>
                 <dbName></dbName>
@@ -18861,8 +19233,8 @@
                 <name>ITEMPOSITION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="30" />
+                <columnType v="4" />
+                <size v="10" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -18927,25 +19299,11 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>ACTUALAMOUNT</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="3" />
-                <size v="14" />
-                <scale v="2" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>SENT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-6" />
+                <columnType v="-7" />
                 <size v="3" />
                 <scale v="0" />
                 <notNull v="true" />
@@ -19206,27 +19564,55 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>ROW_ID</name>
+                <name>OBJECT_ROWID</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="1" />
                 <size v="36" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
-            </entityFields>
-          </entityDb>
-          <entityDb>
-            <name>SALESORDERLINK</name>
-            <dbName></dbName>
-            <idColumn>SALESORDERLINKID</idColumn>
-            <idGeneratorType v="0" />
-            <idGeneratorInterval v="1" />
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>SALESORDERLINK</name>
+            <dbName></dbName>
+            <idColumn>SALESORDERLINKID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
             <documentation></documentation>
             <title></title>
             <description></description>
@@ -19589,6 +19975,1973 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
+          <entityDb>
+            <name>MOSAICOTEMPLATE</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>MOSAICOTEMPLATEID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>ISOLANGUAGE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="3" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CATEGORY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MOSAICOTEMPLATEID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>BASETEMPLATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTENT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-1" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>METADATA</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-1" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>NAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="250" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>TOPICTREERELATION</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>TOPICTREERELATIONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>OBJECT_ROWID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TOPICTREE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DESCRIPTION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-1" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TOPICTREERELATIONID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SORT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>INBOXFILTERGROUP</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>INBOXFILTERGROUPID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>DATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INBOXFILTERGROUPID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>STATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>PRIORITY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>NAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>INBOX_EMPLOYEEGROUP_RELATION</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>INBOX_EMPLOYEEGROUP_RELATIONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>EMPLOYEEGROUP_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INBOX_EMPLOYEEGROUP_RELATIONID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INBOX_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>EMPLOYEEGROUP_RULEGROUP</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>EMPLOYEEGROUP_RULEGROUPID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>DATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>EMPLOYEEGROUP_RULEGROUPID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>STATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>NAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>INBOXFILTER</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>INBOXFILTERID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>INBOXFILTERGROUP_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TICKETTEMPLATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INBOXFILTERID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>COMPONENT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SEARCHTERM</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>EMPLOYEEGROUP</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>EMPLOYEEGROUPID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>DATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>STATUS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>EMPLOYEEGROUPID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>GROUPNAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>INBOXFILTERGROUP_RELATION</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>INBOXFILTERGROUP_RELATIONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>INBOXFILTERGROUP_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INBOXFILTERGROUP_RELATIONID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INBOX_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>EMPLOYEEGROUP_CONTACT_RELATION</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>EMPLOYEEGROUP_CONTACT_RELATIONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>EMPLOYEEGROUP_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>EMPLOYEEGROUP_CONTACT_RELATIONID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTACT_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>TICKETTEMPLATE</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>TICKETTEMPLATEID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>ACTIVE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-7" />
+                <size v="3" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MATURING_TIME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONCLUSION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONCLUSION_MAILBRIDGE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INBOX_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>PRIORITY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TICKETTEMPLATEID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DOCUMENTTEMPLATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>STATUS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DESCRIPTION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-1" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CATEGORY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TEMPLATENO</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INDIVIDUAL_ANSWER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>REVIEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-7" />
+                <size v="3" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TITLE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="100" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TEMPLATENAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="100" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>STATUS_MAILBRIDGE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>INBOX</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>INBOXID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>CLOSURE_DAYS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>STATUS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>EMAIL_ADDRESS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="254" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INBOXDATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INBOXID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>REOPEN_DELAY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>NAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="30" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>MAILSIGNATURE</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>MAILSIGNATUREID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>ANSWER_MAIL_ADDRESS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="254" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DOCUMENTTEMPLATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SEND_MAIL</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="5" />
+                <size v="5" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MAIL_ADDRESS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="254" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SIGNATURE_DOCUMENTTEMPLATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INBOX_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DEFAULTSIGNATURE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-7" />
+                <size v="3" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>MAILSIGNATUREID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DEFAULT_TICKETTEMPLATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>WORKFLOW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>TOPICTREE</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>TOPICTREEID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>TOPICTREEID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ACTIVE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-7" />
+                <size v="3" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SORTING_LAYER_5</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SORTING_LAYER_6</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TOPIC</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SORTING_LAYER_1</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SORTING_LAYER_2</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SORTING_LAYER_3</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SORTING_LAYER_4</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DESCRIPTION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="500" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ASSIGNEDTO</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ATTRIBUTE_FILTER</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>ATTRIBUTE_FILTERID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>INBOXFILTERGROUP_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ATTRIBUTE_FILTERID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>COMPONENT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SEARCHTERM</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>EMPLOYEEGROUP_RULEGROUP_RELATION</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>EMPLOYEEGROUP_RULEGROUP_RELATIONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>EMPLOYEEGROUP_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>EMPLOYEEGROUP_RULEGROUP_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>EMPLOYEEGROUP_RULEGROUP_RELATIONID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>EMPLOYEEGROUP_RULE</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>EMPLOYEEGROUP_RULEID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>EMPLOYEEGROUP_RULEGROUP_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>COND</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="-1" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>EMPLOYEEGROUP_RULEID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>NAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>DOCUMENTTEMPLATE_TICKETCATEGORY</name>
+            <category></category>
+            <dbName></dbName>
+            <idColumn>DOCUMENTTEMPLATE_TICKETCATEGORYID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>DOCUMENTTEMPLATE_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DOCUMENTTEMPLATE_TICKETCATEGORYID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CLASSIFICATION</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="19" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
         </entities>
       </entityGroup>
     </aliasDefDb>
diff --git a/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js b/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js
index 415e8d2a1af6a882e10fdc486befb142aa59713e..738c1a7ab7fbcce5cfacd7a11d57d3122be0c30c 100644
--- a/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js
+++ b/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js
@@ -14,11 +14,8 @@ var res = {
         "groupByKeyword":"OrderType"
     }, 
     "Contract": {}, 
-    "SupportTicket": {        
-        "subContext":"TaskLink",
-        "childField":"TASK_ID",
-        "parentField":"TASK_TASKID",
-        "contactIdField":"OBJECT_ROWID"
+    "SupportTicket": {
+        "connectionField":"TASK_REQUESTOR_CONTACT_ID"
     },
     "Campaign": {        
         "subContext":"CampaignParticipant",
diff --git a/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js
index 709b1c0e1937ff93ce1bf32478b6d0e411028554..69466b380b6c92539ae4becbda49f0347ba2e286 100644
--- a/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js
@@ -15,8 +15,8 @@ if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"
     && vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"))
 {
     var contextList = JSON.parse(vars.get("$param.ObjectType_param"));
-    var contactId = JSON.parse(vars.get("$param.ObjectRowId_param"));
-    var data = _get360Data(contactId, contextList);
+    var contactIds = JSON.parse(vars.get("$param.ObjectRowId_param"));
+    var data = _get360Data(contactIds, contextList);
     
     // #1075280 added null-check to prevent misbehaviour
     if(vars.get("$local.idvalues") != null)
@@ -59,7 +59,7 @@ function _get360Data(pContactId, pContextList)
                 var roles = newSelect(["OBJECTMEMBER.OBJECT_ROWID", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.MemberRole(), "MEMBERROLE")])
                                         .from("OBJECTMEMBER")
                                         .where("OBJECTMEMBER.OBJECT_TYPE", "Salesproject")
-                                        .and("OBJECTMEMBER.CONTACT_ID", contactId)
+                                        .and("OBJECTMEMBER.CONTACT_ID", contactIds)
                                         .orderBy("OBJECTMEMBER.OBJECT_ROWID")
                                         .table();
                 //one select outside of the for each for performance, we assign the roles to roleObj so we can add them in the for each accordingly
diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index d639aeae48ff82576bdc3a45d10d7b3b1b8a8666..08af2bf5706a87ab3197f78d2934e59620172a60 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -576,7 +576,7 @@
       <children>
         <entityActionField>
           <name>importFromTeams</name>
-          <title>Import from Teams</title>
+          <title>Import from MS Teams</title>
           <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js</onActionProcess>
         </entityActionField>
       </children>
@@ -746,16 +746,10 @@
       <name>advertising_id</name>
       <title>Advertising material</title>
       <linkedContext>Advertising</linkedContext>
+      <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/advertising_id/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/advertising_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Activity_entity/entityfields/advertising_id/displayValueProcess.js</displayValueProcess>
     </entityField>
-    <entityConsumer>
-      <name>Objects</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Object_entity</entityName>
-      </dependency>
-    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Activity_entity/entityfields/advertising_id/stateProcess.js b/entity/Activity_entity/entityfields/advertising_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dbbb5ad6f1905a8d2847953b633d92dad63398b1
--- /dev/null
+++ b/entity/Activity_entity/entityfields/advertising_id/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+var state = neon.COMPONENTSTATE_INVISIBLE;
+if(vars.get("$this.value"))
+{
+    state = neon.COMPONENTSTATE_AUTO;
+}
+result.string(state);
diff --git a/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js b/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js
index 2708ddc1ec8a3c626e049d0956bd4b116ed2c10b..7807ac22eb5026361d342c5352ce7dbebffa26d0 100644
--- a/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js
+++ b/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js
@@ -1,7 +1,18 @@
-import("system.vars");
-import("system.neon");
 import("system.result");
+import("system.neon");
+import("system.vars");
+import("Attribute_lib");
+import("AttributeRegistry_basic");
 import("MSTeams_lib");
 
-var isTeamsEnabled = vars.get("$param.ObjectId_param") in MSTeamsUtils.getTeamLinkContexts() && MSTeamsUtils.isTeamsEnabled();
-result.string(isTeamsEnabled ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
+var objectId = vars.get("$param.ObjectId_param");
+var rowId = vars.get("$param.RowId_param");
+var editable = MSTeamsUtils.isTeamsEnabled() && objectId && rowId && new AttributeRelationQuery(
+    rowId, $AttributeRegistry.mstTeam(), objectId).getSingleAttributeValue();
+    
+var res = neon.COMPONENTSTATE_INVISIBLE;
+if(editable)
+{
+    res = neon.COMPONENTSTATE_EDITABLE;
+}
+result.string(res);
diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod
index 4fa663250bca6df6a05c342da3881c282e87c1c1..1cfe28c6019782ac295bace24ef002e4a268a69c 100644
--- a/entity/Address_entity/Address_entity.aod
+++ b/entity/Address_entity/Address_entity.aod
@@ -15,6 +15,7 @@
       <mandatory v="true" />
       <textInputAllowed v="false" />
       <stateProcess>%aditoprj%/entity/Address_entity/entityfields/address/stateProcess.js</stateProcess>
+      <titleProcess>%aditoprj%/entity/Address_entity/entityfields/address/titleProcess.js</titleProcess>
       <tooltip></tooltip>
       <onValueChange>%aditoprj%/entity/Address_entity/entityfields/address/onValueChange.js</onValueChange>
       <onValueChangeTypes>
diff --git a/entity/Address_entity/entityfields/address/titleProcess.js b/entity/Address_entity/entityfields/address/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..389db9f1cd064665bc68f5799f91084c47103ad8
--- /dev/null
+++ b/entity/Address_entity/entityfields/address/titleProcess.js
@@ -0,0 +1,11 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+
+var key = vars.get("$field.ADDR_TYPE");
+if (key == $KeywordRegistry.addressType$post())
+{
+    result.string(translate.text("Post office box number"));
+}
diff --git a/entity/Address_entity/entityfields/buildingno/stateProcess.js b/entity/Address_entity/entityfields/buildingno/stateProcess.js
index ed5e161dcc793ca6dc3a379eea6d6b3445eb3b3c..433311c2893f6328bab6780c878efe20064f989c 100644
--- a/entity/Address_entity/entityfields/buildingno/stateProcess.js
+++ b/entity/Address_entity/entityfields/buildingno/stateProcess.js
@@ -1,10 +1,12 @@
+import("KeywordRegistry_basic");
 import("system.neon");
 import("system.result");
 import("system.vars");
 
+var key = vars.get("$field.ADDR_TYPE");
 // The field is only displayed in edit mode because there is the "formattedAddress" field which one shows the fromated address.
 // If the field has a Value it would be displayed next to the formattedAddress field in view mode, so in this case the state is set to invisible.
-if (vars.get("$sys.recordstate") == "" || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW)
+if (vars.get("$sys.recordstate") == "" || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW || key == $KeywordRegistry.addressType$post())
 {
     result.string(neon.COMPONENTSTATE_INVISIBLE);
 }
\ No newline at end of file
diff --git a/entity/AttributeFilter_entity/AttributeFilter_entity.aod b/entity/AttributeFilter_entity/AttributeFilter_entity.aod
index d23d907b6eb4769ffd40b533343ea221663d2ac4..365718d1c4b0d9e2a46fe82fc910943cd3e64e8e 100644
--- a/entity/AttributeFilter_entity/AttributeFilter_entity.aod
+++ b/entity/AttributeFilter_entity/AttributeFilter_entity.aod
@@ -21,7 +21,7 @@
     </entityField>
     <entityField>
       <name>COMPONENT</name>
-      <title>Component</title>
+      <title>Search component</title>
       <consumer>KeywordComponent</consumer>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/AttributeFilter_entity/entityfields/component/valueProcess.js</valueProcess>
diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
index 272c64f4f8e08ec92a7f39388059893d33595d5b..a894eef2247fdd0d13224792bd7318f54dbd522d 100644
--- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod
+++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
@@ -4,9 +4,13 @@
   <title>Attribute</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/AttributeRelation_entity/documentation.adoc</documentation>
+  <siblings>
+    <element>Salesproject_entity</element>
+  </siblings>
   <grantUpdateProcess>%aditoprj%/entity/AttributeRelation_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/AttributeRelation_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/AttributeRelation_entity/contentTitleProcess.js</contentTitleProcess>
+  <afterSave>%aditoprj%/entity/AttributeRelation_entity/afterSave.js</afterSave>
   <titlePlural>Attributes</titlePlural>
   <recordContainer>jdito</recordContainer>
   <entityFields>
diff --git a/entity/AttributeRelation_entity/afterSave.js b/entity/AttributeRelation_entity/afterSave.js
new file mode 100644
index 0000000000000000000000000000000000000000..221f6eebcd5f71e989c3c76d4aa6d575c6c684d2
--- /dev/null
+++ b/entity/AttributeRelation_entity/afterSave.js
@@ -0,0 +1,18 @@
+import("system.teams");
+import("system.vars");
+import("system.project");
+import("AttributeRegistry_basic");
+
+if(vars.get("$field.AB_ATTRIBUTE_ID") == $AttributeRegistry.mstTeam())
+{
+    var teamId = vars.get("$field.VALUE");
+    var appId = project.getInstanceConfigValue("teamsAppId");
+    try
+    {
+        appId && teams.addApp(teamId, appId);
+    }
+    catch(ex)
+    {
+        // App is allready added
+    }
+}
diff --git a/entity/BulkMail_entity/BulkMail_entity.aod b/entity/BulkMail_entity/BulkMail_entity.aod
index 19f43ebcb586a085f8f43e823fd2d4dace177c97..5a95e209f60d6d026a2f8406f132dc440eaa1b37 100644
--- a/entity/BulkMail_entity/BulkMail_entity.aod
+++ b/entity/BulkMail_entity/BulkMail_entity.aod
@@ -550,6 +550,17 @@
           <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/observeactionogroup/children/cancelobservation/stateProcess.js</stateProcess>
           <titleProcess>%aditoprj%/entity/BulkMail_entity/entityfields/observeactionogroup/children/cancelobservation/titleProcess.js</titleProcess>
         </entityActionField>
+        <entityActionField>
+          <name>export</name>
+          <title>Export</title>
+          <onActionProcess>%aditoprj%/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/onActionProcess.js</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
+          <iconId>NEON:EXPORT</iconId>
+          <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/stateProcess.js</stateProcess>
+          <tooltip>Export fields of this table</tooltip>
+          <tooltipProcess>%aditoprj%/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/tooltipProcess.js</tooltipProcess>
+        </entityActionField>
       </children>
     </entityActionGroup>
     <entityActionField>
diff --git a/entity/BulkMail_entity/contentDescriptionProcess.js b/entity/BulkMail_entity/contentDescriptionProcess.js
index d954efdae7962397780136ac64484f72cabc284a..4695e9188d68bddc1cfe09f677fbf5d3cd1c5602 100644
--- a/entity/BulkMail_entity/contentDescriptionProcess.js
+++ b/entity/BulkMail_entity/contentDescriptionProcess.js
@@ -1,5 +1,7 @@
+import("KeywordRegistry_basic");
+import("system.translate");
 import("Keyword_lib");
 import("system.result");
 import("system.vars");
 
-result.string(KeywordUtils.getViewValue("BulkMailStatus", vars.get("$field.STATUS")));
\ No newline at end of file
+result.string(translate.text("Status") + ": "+ KeywordUtils.getViewValue($KeywordRegistry.bulkMailStatus(), vars.get("$field.STATUS")));
\ No newline at end of file
diff --git a/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/onActionProcess.js b/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c68dcef71d0a7db12fd4d25819640764899dbad
--- /dev/null
+++ b/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/onActionProcess.js
@@ -0,0 +1,11 @@
+import("ExportTemplate_lib");
+import("system.vars");
+
+var selection = vars.get("$sys.selection");
+
+if(selection.length == 0)     //no selection -> use Filtercondition;
+{
+    selection = vars.get("$sys.filter");
+}
+
+ExportTemplateUtils.addParticipants(JSON.stringify(selection), vars.get("$sys.currentcontextname"));
\ No newline at end of file
diff --git a/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/stateProcess.js b/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7fc578ee7942eeb948f08d3dd86f5950d3fa1c41
--- /dev/null
+++ b/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/stateProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("FilterViewAction_lib");
+import("system.vars");
+
+var contactCount = vars.get("$sys.datarowcount");
+
+result.string(FilterViewActionUtils.getComponentStateByRowCount(contactCount));
\ No newline at end of file
diff --git a/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/tooltipProcess.js b/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/tooltipProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4aaaed5c074ef854441aa45e3e7993b2f77c04c4
--- /dev/null
+++ b/entity/BulkMail_entity/entityfields/observeactionogroup/children/export/tooltipProcess.js
@@ -0,0 +1,4 @@
+import("system.translate");
+import("system.result");
+
+result.string(translate.text("Export columns using a exporttemplate"));
\ No newline at end of file
diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod
index 15fab50f35ce1f2913fcb8acb86e88c0b67304c8..f2379d3a6494932a6dd60629f32c45c4a53c33f3 100644
--- a/entity/Campaign_entity/Campaign_entity.aod
+++ b/entity/Campaign_entity/Campaign_entity.aod
@@ -42,6 +42,17 @@
           <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
           <titleProcess>%aditoprj%/entity/Campaign_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
         </entityActionField>
+        <entityActionField>
+          <name>export</name>
+          <title>Export</title>
+          <onActionProcess>%aditoprj%/entity/Campaign_entity/entityfields/observeactiongroup/children/export/onActionProcess.js</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
+          <iconId>NEON:EXPORT</iconId>
+          <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/observeactiongroup/children/export/stateProcess.js</stateProcess>
+          <tooltip>Export fields of this table</tooltip>
+          <tooltipProcess>%aditoprj%/entity/Campaign_entity/entityfields/observeactiongroup/children/export/tooltipProcess.js</tooltipProcess>
+        </entityActionField>
       </children>
     </entityActionGroup>
     <entityProvider>
diff --git a/entity/Campaign_entity/entityfields/observeactiongroup/children/export/onActionProcess.js b/entity/Campaign_entity/entityfields/observeactiongroup/children/export/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c68dcef71d0a7db12fd4d25819640764899dbad
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/observeactiongroup/children/export/onActionProcess.js
@@ -0,0 +1,11 @@
+import("ExportTemplate_lib");
+import("system.vars");
+
+var selection = vars.get("$sys.selection");
+
+if(selection.length == 0)     //no selection -> use Filtercondition;
+{
+    selection = vars.get("$sys.filter");
+}
+
+ExportTemplateUtils.addParticipants(JSON.stringify(selection), vars.get("$sys.currentcontextname"));
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/observeactiongroup/children/export/stateProcess.js b/entity/Campaign_entity/entityfields/observeactiongroup/children/export/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7fc578ee7942eeb948f08d3dd86f5950d3fa1c41
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/observeactiongroup/children/export/stateProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("FilterViewAction_lib");
+import("system.vars");
+
+var contactCount = vars.get("$sys.datarowcount");
+
+result.string(FilterViewActionUtils.getComponentStateByRowCount(contactCount));
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/observeactiongroup/children/export/tooltipProcess.js b/entity/Campaign_entity/entityfields/observeactiongroup/children/export/tooltipProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4aaaed5c074ef854441aa45e3e7993b2f77c04c4
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/observeactiongroup/children/export/tooltipProcess.js
@@ -0,0 +1,4 @@
+import("system.translate");
+import("system.result");
+
+result.string(translate.text("Export columns using a exporttemplate"));
\ No newline at end of file
diff --git a/entity/ChecklistEntryValue_entity/ChecklistEntryValue_entity.aod b/entity/ChecklistEntryValue_entity/ChecklistEntryValue_entity.aod
index e61fa7ee535103d03f036a4f73489b40d987ca6a..2eb878e8a508ae477f8bf474c5a7a8c04dab20c0 100644
--- a/entity/ChecklistEntryValue_entity/ChecklistEntryValue_entity.aod
+++ b/entity/ChecklistEntryValue_entity/ChecklistEntryValue_entity.aod
@@ -107,12 +107,18 @@
       <title>Fullfilled</title>
       <contentType>IMAGE</contentType>
     </entityField>
+    <entityParameter>
+      <name>Presentationmode_param</name>
+      <expose v="true" />
+      <documentation>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/presentationmode_param/documentation.adoc</documentation>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
       <name>jDito</name>
       <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
       <contentProcess>%aditoprj%/entity/ChecklistEntryValue_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <rowCountProcess>%aditoprj%/entity/ChecklistEntryValue_entity/recordcontainers/jdito/rowCountProcess.js</rowCountProcess>
       <recordFieldMappings>
         <jDitoRecordFieldMapping>
           <name>UID.value</name>
diff --git a/entity/ChecklistEntryValue_entity/entityfields/presentationmode_param/documentation.adoc b/entity/ChecklistEntryValue_entity/entityfields/presentationmode_param/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..815090a034af0645247ab091d83260c143c19d38
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/entityfields/presentationmode_param/documentation.adoc
@@ -0,0 +1,5 @@
+== Presentationmode_param
+
+This param is getting used by the entities that are displaying the checklist in their mainview. 
+They are returning their sys.presentationmode so we can use it in our contentProcess to check whether or not we are in the mainview to only then load the checklistEntryValues.
+Currently it's not possible to check for the sys.presentationmode in here since it always returns null.
\ No newline at end of file
diff --git a/entity/ChecklistEntryValue_entity/recordcontainers/jdito/contentProcess.js b/entity/ChecklistEntryValue_entity/recordcontainers/jdito/contentProcess.js
index 023eef27710a4453ef6dfa7b3edef5db0576fa32..d8dfabcf2b190e57fc95e1000b88ddf32fbfa1aa 100644
--- a/entity/ChecklistEntryValue_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/ChecklistEntryValue_entity/recordcontainers/jdito/contentProcess.js
@@ -7,60 +7,63 @@ import("system.datetime");
 import("Sql_lib");
 import("ChecklistEntryRegistry_basic");
 
-var checklistIds = JSON.parse(vars.get("$param.ChecklistIds_param"));
+var data = [];
+if(vars.get("$param.Presentationmode_param") == "FULL")
+{
+    var checklistIds = JSON.parse(vars.get("$param.ChecklistIds_param"));
 
-var data = newSelect([
-    "CHECKLISTENTRYVALUE.CHECKLISTENTRYVALUEID",
-    "CHECKLISTENTRY.AUTO",
-    "CHECKLISTENTRY.CHECKLISTENTRYID",
-    "CHECKLISTENTRY.TITLE",
-    "CHECKLISTENTRY.FILTER_USED",
-    "CHECKLISTENTRY.COND",
-    "CHECKLISTENTRYVALUE.DONEUSER",
-    "CHECKLISTENTRYVALUE.DONEDATE",
-    "CHECKLISTENTRYVALUE.IS_FULFILLED",
-    "CHECKLISTENTRYVALUE.OBJECT_ROWID",
-    "CHECKLISTENTRYVALUE.OBJECT_TYPE",
-    "CHECKLISTENTRYVALUE.DATE_EDIT",
-    "CHECKLISTENTRYVALUE.DATE_NEW",
-    "CHECKLISTENTRYVALUE.USER_EDIT",
-    "CHECKLISTENTRYVALUE.USER_NEW"
-]).from("CHECKLISTENTRY")
-.leftJoin(
-    "CHECKLISTENTRYVALUE",
-    newWhere("CHECKLISTENTRYVALUE.CHECKLISTENTRY_ID = CHECKLISTENTRY.CHECKLISTENTRYID")
-    .and("CHECKLISTENTRYVALUE.OBJECT_ROWID", vars.get("$param.ObjectRowId_param"))
-    .andIfSet("CHECKLISTENTRYVALUE.OBJECT_TYPE", vars.get("$param.ObjectType_param"))
-).whereIfSet("CHECKLISTENTRY.CHECKLIST_ID", checklistIds, SqlBuilder.IN())
-.orderBy("CHECKLISTENTRY.POS asc")
-.table();
+    data = newSelect([
+        "CHECKLISTENTRYVALUE.CHECKLISTENTRYVALUEID",
+        "CHECKLISTENTRY.AUTO",
+        "CHECKLISTENTRY.CHECKLISTENTRYID",
+        "CHECKLISTENTRY.TITLE",
+        "CHECKLISTENTRY.FILTER_USED",
+        "CHECKLISTENTRY.COND",
+        "CHECKLISTENTRYVALUE.DONEUSER",
+        "CHECKLISTENTRYVALUE.DONEDATE",
+        "CHECKLISTENTRYVALUE.IS_FULFILLED",
+        "CHECKLISTENTRYVALUE.OBJECT_ROWID",
+        "CHECKLISTENTRYVALUE.OBJECT_TYPE",
+        "CHECKLISTENTRYVALUE.DATE_EDIT",
+        "CHECKLISTENTRYVALUE.DATE_NEW",
+        "CHECKLISTENTRYVALUE.USER_EDIT",
+        "CHECKLISTENTRYVALUE.USER_NEW"
+    ]).from("CHECKLISTENTRY")
+    .leftJoin(
+        "CHECKLISTENTRYVALUE",
+        newWhere("CHECKLISTENTRYVALUE.CHECKLISTENTRY_ID = CHECKLISTENTRY.CHECKLISTENTRYID")
+        .and("CHECKLISTENTRYVALUE.OBJECT_ROWID", vars.get("$param.ObjectRowId_param"))
+        .andIfSet("CHECKLISTENTRYVALUE.OBJECT_TYPE", vars.get("$param.ObjectType_param"))
+    ).whereIfSet("CHECKLISTENTRY.CHECKLIST_ID", checklistIds, SqlBuilder.IN())
+    .orderBy("CHECKLISTENTRY.POS asc")
+    .table();
 
-for(let i = 0; i < data.length; i++)
-{
-    data[i][0] = data[i][0] || util.getNewUUID();
-    data[i][3] = translate.text(data[i][3]);
-    data[i][8] = data[i][8] || "0";
-    data[i][9] = data[i][9] || vars.get("$param.ObjectRowId_param");
-    data[i][10] = data[i][10] || vars.get("$param.ObjectType_param");
-    data[i][12] = data[i][12] || datetime.date();
-    data[i][14] = data[i][14] || vars.get("$sys.user");
-    
-    if(parseInt(data[i][1]))
+    for(let i = 0; i < data.length; i++)
     {
-        var checklistEntry;
-        if (Utils.toBoolean(data[i][4])) // FILTER_USED
-        {
-            checklistEntry = $ChecklistEntryRegistry["filter"]();
-            data[i][8] = checklistEntry.verifierFn(vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param"), data[i][5]) ? "1" : "0";
-        }
-        else
+        data[i][0] = data[i][0] || util.getNewUUID();
+        data[i][3] = translate.text(data[i][3]);
+        data[i][8] = data[i][8] || "0";
+        data[i][9] = data[i][9] || vars.get("$param.ObjectRowId_param");
+        data[i][10] = data[i][10] || vars.get("$param.ObjectType_param");
+        data[i][12] = data[i][12] || datetime.date();
+        data[i][14] = data[i][14] || vars.get("$sys.user");
+
+        if(parseInt(data[i][1]))
         {
-            checklistEntry = $ChecklistEntryRegistry[data[i][3]]();
-            data[i][8] = checklistEntry.verifierFn(vars.get("$param.ObjectRowId_param")) ? "1" : "0";
-            data[i][3] = checklistEntry.title;
+            var checklistEntry;
+            if (Utils.toBoolean(data[i][4])) // FILTER_USED
+            {
+                checklistEntry = $ChecklistEntryRegistry["filter"]();
+                data[i][8] = checklistEntry.verifierFn(vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param"), data[i][5]) ? "1" : "0";
+            }
+            else
+            {
+                checklistEntry = $ChecklistEntryRegistry[data[i][3]]();
+                data[i][8] = checklistEntry.verifierFn(vars.get("$param.ObjectRowId_param")) ? "1" : "0";
+                data[i][3] = checklistEntry.title;
+            }
         }
+        data[i][15] = Utils.toBoolean(data[i][8]) ? "NEON:MQL" : ""; //icon
     }
-    data[i][15] = Utils.toBoolean(data[i][8]) ? "NEON:MQL" : ""; //icon
 }
-
 result.object(data);
diff --git a/entity/ChecklistEntryValue_entity/recordcontainers/jdito/rowCountProcess.js b/entity/ChecklistEntryValue_entity/recordcontainers/jdito/rowCountProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f4f77893f4f1042e9366d2de709a29bc1dbdf040
--- /dev/null
+++ b/entity/ChecklistEntryValue_entity/recordcontainers/jdito/rowCountProcess.js
@@ -0,0 +1,20 @@
+import("system.result");
+import("Sql_lib");
+import("system.vars");
+
+var data = [];
+if(vars.get("$param.Presentationmode_param") == "FULL")
+{
+    var checklistIds = JSON.parse(vars.get("$param.ChecklistIds_param"));
+
+    data = newSelect("1")
+    .from("CHECKLISTENTRY")
+    .leftJoin(
+        "CHECKLISTENTRYVALUE",
+        newWhere("CHECKLISTENTRYVALUE.CHECKLISTENTRY_ID = CHECKLISTENTRY.CHECKLISTENTRYID")
+        .and("CHECKLISTENTRYVALUE.OBJECT_ROWID", vars.get("$param.ObjectRowId_param"))
+        .andIfSet("CHECKLISTENTRYVALUE.OBJECT_TYPE", vars.get("$param.ObjectType_param"))
+    ).whereIfSet("CHECKLISTENTRY.CHECKLIST_ID", checklistIds, SqlBuilder.IN())
+    .table();
+}
+result.object(data.length);
\ No newline at end of file
diff --git a/entity/Checklist_entity/onValidation.js b/entity/Checklist_entity/onValidation.js
index bb96aaead786afa975ca5f16c64bb192c940c69c..6e96a4be9c95707686ffaccbb50086f31210da42 100644
--- a/entity/Checklist_entity/onValidation.js
+++ b/entity/Checklist_entity/onValidation.js
@@ -9,7 +9,7 @@ var validationString = "";
 var context = vars.get("$field.CHECKLIST_CONTEXT");
 if(context == "Salesproject")
 {
-    validationString = translate.text("A Phase filter has to be set when creating a checklistentry for the Salesproject context.")
+    validationString = translate.text("A Phase filter has to be set when creating a checklistentry for the Salesproject Context.")
     var childs = JSON.parse(vars.get("$field.COND"))["filter"]["childs"];
     
     for (i = 0; i < childs.length; i++)
diff --git a/entity/Competition_entity/entityfields/reason/displayValueProcess.js b/entity/Competition_entity/entityfields/reason/displayValueProcess.js
index 04cf61d4794b75ff2b7357f562c3aeef19537451..8d62990a61b8cf202d84fb1af8efa98423cf7ea8 100644
--- a/entity/Competition_entity/entityfields/reason/displayValueProcess.js
+++ b/entity/Competition_entity/entityfields/reason/displayValueProcess.js
@@ -5,7 +5,7 @@ import("system.vars");
 import("system.text");
 
 var reasonViewValue = [];
-var reasons = text.decodeMs(vars.get("$field.REASON"));
+var reasons = text.decodeMS(vars.get("$field.REASON"));
 
 var reasonObject = vars.get("$property.REASON.dropDown");
 
diff --git a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
index 17f075c645ad79860c201c3534a6310a24fd70a4..1f4270024c189074fb928c3d230af6e1e498df48 100644
--- a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
+++ b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
@@ -165,7 +165,6 @@
       <onValueChangeTypes>
         <element>MASK</element>
       </onValueChangeTypes>
-      <onValidation></onValidation>
     </entityField>
     <entityConsumer>
       <name>DocumentTemplateTypeCategory</name>
diff --git a/entity/DocumentTemplate_entity/entityfields/bindata/onValueChange.js b/entity/DocumentTemplate_entity/entityfields/bindata/onValueChange.js
index b6482e533bfaca580e8687788e6860726fe8520f..0f764f5e3f168f6916af16d84e27a1fad880e478 100644
--- a/entity/DocumentTemplate_entity/entityfields/bindata/onValueChange.js
+++ b/entity/DocumentTemplate_entity/entityfields/bindata/onValueChange.js
@@ -6,7 +6,7 @@ import("system.vars");
 // --> only set in $field.Content.valueProcess if $field.Content is null and set it from here only if MASK triggered change
 if((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW))
 {
-    [content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$field."), new FileUpload(vars.get("$local.value")));
+    [content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$field.DOCUMENTTEMPLATEID"), new FileUpload(vars.get("$local.value")));
 
     vars.set("$context.currentTemplateType", type);
     vars.set("$field.Content", content);
diff --git a/entity/DocumentTemplate_entity/entityfields/classification/stateProcess.js b/entity/DocumentTemplate_entity/entityfields/classification/stateProcess.js
index 3e355079f4d1a56e8cb0750909f476765d887614..6fcf14fa75d5ac836bd68df2ee8fed4bbc6835ae 100644
--- a/entity/DocumentTemplate_entity/entityfields/classification/stateProcess.js
+++ b/entity/DocumentTemplate_entity/entityfields/classification/stateProcess.js
@@ -4,10 +4,11 @@ import("system.vars");
 import("system.result");
 import("system.neon");
 
-if(vars.get("$field.KIND") == $KeywordRegistry.documentTemplateType$attachment() 
-|| vars.get("$field.KIND") == $KeywordRegistry.documentTemplateType$signature()
-|| vars.get("$field.KIND") == $KeywordRegistry.documentTemplateType$replymail()
-    && vars.exists("$context.currentTemplateType") && vars.get("$context.currentTemplateType") != DocumentTemplate.types.ODT)
+if((vars.get("$field.KIND") == $KeywordRegistry.documentTemplateType$attachment() 
+    || vars.get("$field.KIND") == $KeywordRegistry.documentTemplateType$signature()
+    || vars.get("$field.KIND") == $KeywordRegistry.documentTemplateType$replymail())
+|| (vars.get("$field.KIND") == $KeywordRegistry.documentTemplateType$letter()
+    && vars.exists("$context.currentTemplateType") && vars.get("$context.currentTemplateType") != DocumentTemplate.types.ODT))
 {
     result.string(neon.COMPONENTSTATE_DISABLED);
 }
diff --git a/entity/EmployeeGroupContactRelation_entity/EmployeeGroupContactRelation_entity.aod b/entity/EmployeeGroupContactRelation_entity/EmployeeGroupContactRelation_entity.aod
index 964b64aa8e9a81cfbe45a723b2cafad844a9d9c4..289e21e87ed155012e2ea6ba6403d1fafa0a0341 100644
--- a/entity/EmployeeGroupContactRelation_entity/EmployeeGroupContactRelation_entity.aod
+++ b/entity/EmployeeGroupContactRelation_entity/EmployeeGroupContactRelation_entity.aod
@@ -17,6 +17,7 @@
       <consumer>Employees</consumer>
       <linkedContextProcess></linkedContextProcess>
       <displayValueProcess>%aditoprj%/entity/EmployeeGroupContactRelation_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/EmployeeGroupContactRelation_entity/entityfields/contact_id/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>EMPLOYEEGROUP_CONTACT_RELATIONID</name>
diff --git a/entity/EmployeeGroupContactRelation_entity/entityfields/contact_id/onValidation.js b/entity/EmployeeGroupContactRelation_entity/entityfields/contact_id/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..89007aafec39152c565838fe3b89fdeefe7c4c3c
--- /dev/null
+++ b/entity/EmployeeGroupContactRelation_entity/entityfields/contact_id/onValidation.js
@@ -0,0 +1,19 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var sql = new SqlBuilder()
+                    .selectCount("CONTACT_ID")
+                    .from("EMPLOYEEGROUP_CONTACT_RELATION")
+                    .where("EMPLOYEEGROUP_CONTACT_RELATION.CONTACT_ID", vars.get("$field.CONTACT_ID"))
+                    .and("EMPLOYEEGROUP_CONTACT_RELATION.EMPLOYEEGROUP_ID", vars.get("$field.EMPLOYEEGROUP_ID"))
+                    .andIfSet("EMPLOYEEGROUP_CONTACT_RELATION.EMPLOYEEGROUP_CONTACT_RELATIONID", vars.get("$field.EMPLOYEEGROUP_CONTACT_RELATIONID"),SqlBuilder.NOT_EQUAL())
+                    .cell();
+
+
+if (sql > 0 )
+{
+    result.string(translate.text("Employee already selected") + ".");
+}
diff --git a/entity/EmployeeGroupRuleGroup_entity/EmployeeGroupRuleGroup_entity.aod b/entity/EmployeeGroupRuleGroup_entity/EmployeeGroupRuleGroup_entity.aod
index b46580ea5bcf69b18c5cf43da210b641f11366d3..2d96b5aaf88b57df50d9a2aa00d84db3d68502d4 100644
--- a/entity/EmployeeGroupRuleGroup_entity/EmployeeGroupRuleGroup_entity.aod
+++ b/entity/EmployeeGroupRuleGroup_entity/EmployeeGroupRuleGroup_entity.aod
@@ -31,6 +31,7 @@
       <name>NAME</name>
       <title>Name</title>
       <mandatory v="true" />
+      <onValidation>%aditoprj%/entity/EmployeeGroupRuleGroup_entity/entityfields/name/onValidation.js</onValidation>
     </entityField>
     <entityConsumer>
       <name>EmpGroupRules</name>
diff --git a/entity/EmployeeGroupRuleGroup_entity/entityfields/name/onValidation.js b/entity/EmployeeGroupRuleGroup_entity/entityfields/name/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..2e1930affbd4098a8d1ef811958273041ea1d9e8
--- /dev/null
+++ b/entity/EmployeeGroupRuleGroup_entity/entityfields/name/onValidation.js
@@ -0,0 +1,17 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var sql = new SqlBuilder()
+                    .selectCount("NAME")
+                    .from("EMPLOYEEGROUP_RULEGROUP")
+                    .where("EMPLOYEEGROUP_RULEGROUP.NAME", vars.get("$field.NAME"))
+                    .and("EMPLOYEEGROUP_RULEGROUP.EMPLOYEEGROUP_RULEGROUPID", vars.get("sys.uid"),SqlBuilder.NOT())
+                    .cell();
+
+if (sql > 0)
+{
+    result.string(translate.text("Name has to be unique") + ".");
+}
\ No newline at end of file
diff --git a/entity/EmployeeGroupRule_entity/EmployeeGroupRule_entity.aod b/entity/EmployeeGroupRule_entity/EmployeeGroupRule_entity.aod
index 1c235b5a30f278f46c5a6c593a7d1365e1c3b489..f53e3460a1c2478956099f11a8bb0c2109c89f9d 100644
--- a/entity/EmployeeGroupRule_entity/EmployeeGroupRule_entity.aod
+++ b/entity/EmployeeGroupRule_entity/EmployeeGroupRule_entity.aod
@@ -36,6 +36,7 @@
       <name>NAME</name>
       <title>Name</title>
       <mandatory v="true" />
+      <onValidation>%aditoprj%/entity/EmployeeGroupRule_entity/entityfields/name/onValidation.js</onValidation>
     </entityField>
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
diff --git a/entity/EmployeeGroupRule_entity/entityfields/name/onValidation.js b/entity/EmployeeGroupRule_entity/entityfields/name/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..6cd8121c41e8437c62ae7265945b9ff48507a15e
--- /dev/null
+++ b/entity/EmployeeGroupRule_entity/entityfields/name/onValidation.js
@@ -0,0 +1,16 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var sql = new SqlBuilder()
+                        .selectCount("NAME")
+                        .from("EMPLOYEEGROUP_RULEGROUP")
+                        .where("EMPLOYEEGROUP_RULEGROUP.NAME", vars.get("$field.NAME"))
+                        .andIfSet("EMPLOYEEGROUP_RULEGROUP.EMPLOYEEGROUP_RULEGROUPID", vars.get("$field.EMPLOYEEGROUP_RULEGROUP_ID"),SqlBuilder.NOT_EQUAL())
+                        .cell();
+if (sql > 0)
+{
+    result.string(translate.text("Name has to be unique") + ".");
+}
\ No newline at end of file
diff --git a/entity/EmployeeGroup_entity/EmployeeGroup_entity.aod b/entity/EmployeeGroup_entity/EmployeeGroup_entity.aod
index 7166da239b1f917854bacf1061491d459ea2a1ad..da7a223f92849ab3bb95a659ecd53f8f30845bd7 100644
--- a/entity/EmployeeGroup_entity/EmployeeGroup_entity.aod
+++ b/entity/EmployeeGroup_entity/EmployeeGroup_entity.aod
@@ -21,6 +21,7 @@
       <name>GROUPNAME</name>
       <title>Group name</title>
       <mandatory v="true" />
+      <onValidation>%aditoprj%/entity/EmployeeGroup_entity/entityfields/groupname/onValidation.js</onValidation>
     </entityField>
     <entityProvider>
       <name>EmployeesGroups</name>
diff --git a/entity/EmployeeGroup_entity/entityfields/groupname/onValidation.js b/entity/EmployeeGroup_entity/entityfields/groupname/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..2556968f99e2f972b472208d5405c38b5e4fbed3
--- /dev/null
+++ b/entity/EmployeeGroup_entity/entityfields/groupname/onValidation.js
@@ -0,0 +1,16 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var sql = new SqlBuilder()
+                        .selectCount("GROUPNAME")
+                        .from("EMPLOYEEGROUP")
+                        .where("EMPLOYEEGROUP.GROUPNAME", vars.get("$field.GROUPNAME"))
+                        .and("EMPLOYEEGROUP.EMPLOYEEGROUPID", vars.get("sys.uid"),SqlBuilder.NOT())
+                        .cell();
+if (sql > 0)
+{
+    result.string(translate.text("Name has to be unique") + ".");
+}
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod b/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod
index 971d3efbf5b977a3fb4487665096b021cc0616fe..657050d20ec94a04c0eff6c74a61d1c7e04bb17e 100644
--- a/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod
+++ b/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod
@@ -4,6 +4,11 @@
   <title>Export Template Field</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ExportTemplateField_entity/documentation.adoc</documentation>
+  <siblings>
+    <element>ExportTemplatePlaceOfUse_entity</element>
+  </siblings>
+  <grantUpdate v="false" />
+  <contentTitleProcess>%aditoprj%/entity/ExportTemplateField_entity/contentTitleProcess.js</contentTitleProcess>
   <titlePlural>Export Template Fields</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -29,13 +34,20 @@
       <title>Field</title>
       <mandatory v="true" />
       <dropDownProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/field/dropDownProcess.js</dropDownProcess>
+      <stateProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/field/stateProcess.js</stateProcess>
+      <displayValueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/field/displayValueProcess.js</displayValueProcess>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
     </entityField>
     <entityProvider>
       <name>ExportTemplateFields</name>
       <documentation>%aditoprj%/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/documentation.adoc</documentation>
     </entityProvider>
     <entityParameter>
-      <name>ExportTemplateField_param</name>
+      <name>ExportTemplateId_param</name>
       <expose v="true" />
     </entityParameter>
     <entityField>
@@ -44,12 +56,75 @@
       <contentType>NUMBER</contentType>
       <outputFormat>###</outputFormat>
       <inputFormat>###</inputFormat>
-      <mandatory v="true" />
+      <mandatory v="false" />
     </entityField>
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>ExportTemplatePlacesOfUse</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>ExportTemplatePlaceOfUse_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ExportTemplateId_param</name>
+          <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>EXPORTTEMPLATEPLACEOFUSE_ID</name>
+      <title>Place of Use</title>
+      <consumer>ExportTemplatePlacesOfUse</consumer>
+      <mandatory v="true" />
+      <onValueChange>%aditoprj%/entity/ExportTemplateField_entity/entityfields/exporttemplateplaceofuse_id/onValueChange.js</onValueChange>
+    </entityField>
+    <entityField>
+      <name>placeOfUse</name>
+      <title>Place of Use</title>
+      <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/placeofuse/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/placeofuse/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityActionGroup>
+      <name>MoveActions</name>
+      <title>Move</title>
+      <children>
+        <entityActionField>
+          <name>Down</name>
+          <title></title>
+          <onActionProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/moveactions/children/down/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:ANGLE_DOWN</iconId>
+          <stateProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/moveactions/children/down/stateProcess.js</stateProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>Up</name>
+          <title></title>
+          <onActionProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/moveactions/children/up/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:ANGLE_UP</iconId>
+          <stateProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/moveactions/children/up/stateProcess.js</stateProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -58,6 +133,8 @@
       <isReadOnly v="false" />
       <conditionProcess>%aditoprj%/entity/ExportTemplateField_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/ExportTemplateField_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBInsert>%aditoprj%/entity/ExportTemplateField_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
+      <onDBDelete>%aditoprj%/entity/ExportTemplateField_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
       <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
@@ -76,10 +153,30 @@
           <name>SORTING.value</name>
           <recordfield>EXPORTTEMPLATEFIELD.SORTING</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>EXPORTTEMPLATEFIELD.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>EXPORTTEMPLATEFIELD.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>EXPORTTEMPLATEFIELD.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>EXPORTTEMPLATEFIELD.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>EXPORTTEMPLATEPLACEOFUSE_ID.value</name>
+          <recordfield>EXPORTTEMPLATEFIELD.EXPORTTEMPLATEPLACEOFUSE_ID</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
-          <name>7236de85-f623-4f6a-9ff5-d9014a2f7a4c</name>
+          <name>4cec9829-254f-4588-9abf-a224a390a172</name>
           <tableName>EXPORTTEMPLATEFIELD</tableName>
           <primaryKey>EXPORTTEMPLATEFIELDID</primaryKey>
           <isUIDTable v="true" />
diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js b/entity/ExportTemplateField_entity/contentTitleProcess.js
similarity index 53%
rename from entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js
rename to entity/ExportTemplateField_entity/contentTitleProcess.js
index ada1bccad1d8dba906a5f5db4d9289e0abf3f44f..52bd0deb2169ccfd1f5d531869b4e2fe4304d298 100644
--- a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js
+++ b/entity/ExportTemplateField_entity/contentTitleProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.TEAMNAME"));
\ No newline at end of file
+result.string(vars.get("$field.FIELD"));
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/date_edit/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2af46a8e46789056c6c341a8e4e087f8e1edc0c4
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/date_new/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d5cf2ff4f91546bf853125bec438493692a5e048
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/exporttemplate_id/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/exporttemplate_id/valueProcess.js
index 76dc5ef71d45ba4b444c21383abcbd8281f1e26f..fe71bb2cb95ec8ed9488118ac627cf17d082bc69 100644
--- a/entity/ExportTemplateField_entity/entityfields/exporttemplate_id/valueProcess.js
+++ b/entity/ExportTemplateField_entity/entityfields/exporttemplate_id/valueProcess.js
@@ -1,9 +1,10 @@
 import("system.result");
 import("system.neon");
 import("system.vars");
+import("Util_lib");
 
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+if(Utils.isNotNullOrEmptyString(vars.getString("$param.ExportTemplateId_param")) && Utils.isNullOrEmptyString(vars.getString("$this.value")))
 {
-    if(vars.exists("$param.ExportTemplateField_param") && vars.get("$param.ExportTemplateField_param") != null)
-        result.string(vars.getString("$param.ExportTemplateField_param"));    
-}
\ No newline at end of file
+    result.string(vars.getString("$param.ExportTemplateId_param")); 
+}
+           
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/exporttemplateplaceofuses/children/exporttemplateid_param/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/exporttemplateplaceofuses/children/exporttemplateid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..be49d03de451c24366fc615db9b981efb4e15661
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/exporttemplateplaceofuses/children/exporttemplateid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.ExportTemplateId_param"))
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..be49d03de451c24366fc615db9b981efb4e15661
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.ExportTemplateId_param"))
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/field/displayValueProcess.js b/entity/ExportTemplateField_entity/entityfields/field/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..173f0d3ec44861d0b1c3e5c3da2a8ae9559e72ad
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/field/displayValueProcess.js
@@ -0,0 +1,18 @@
+import("system.result");
+import("system.project");
+import("Util_lib");
+import("system.vars");
+import("system.entities");
+import("Context_lib");
+
+if (Utils.isNotNullOrEmptyString(vars.getString("$this.value")))
+{
+    let type = vars.getString("$field.placeOfUse");
+
+    if (Utils.isNotNullOrEmptyString(type))
+    {
+        var fields = project.getEntityStructure(ContextUtils.getEntity(type)).fields;
+    
+        result.string(fields[vars.getString("$this.value")].title);
+    }
+}
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/field/dropDownProcess.js b/entity/ExportTemplateField_entity/entityfields/field/dropDownProcess.js
index 3c830477d519292b231f502d1caa9cffc392f984..671728966e3d1b25b66fd779e4aad824133e89ab 100644
--- a/entity/ExportTemplateField_entity/entityfields/field/dropDownProcess.js
+++ b/entity/ExportTemplateField_entity/entityfields/field/dropDownProcess.js
@@ -1,15 +1,31 @@
+import("ExportTemplate_lib");
+import("Util_lib");
+import("system.vars");
+import("system.entities");
+import("Context_lib");
+import("system.project");
 import("system.result");
 import("Placeholder_lib");
-import("system.text")
+import("system.text");
 
+let type = vars.getString("$field.placeOfUse");
 
-//The current selection of Exportfields is created by using the Placeholder function "PlaceholderUtils.getPlaceholders()".
-//if you want to add more fields, you just have to add the function "CustomPlaceholderUtils.getPlaceholders()" to the dropDownProcess 
-//and add the desired Fields as placeholders in the CustomPlaceholder_lib.
+if (!Utils.isNullOrEmpty(type))
+{
+    var resultFields = [];
+    var entity = ContextUtils.getEntity(type);
+    var fields = project.getEntityStructure(entity).fields;
+    var excludeFields = ExportTemplateUtils.excludedFields()[entity] || [];
+        
+    for (var field in fields)
+    {
+        if (fields[field].fieldType == project.ENTITYFIELDTYPE_FIELD && excludeFields.indexOf(field) == -1)
+        {
+            let title = fields[field].title ? fields[field].title : fields[field].name;
+            resultFields.push([fields[field].name, title]);
+        }
+  
+    }
 
-    
-var placeholders = PlaceholderUtils.getPlaceholders(null, true).map(function (placeholder){
-    return [placeholder.getFormattedName(), placeholder.title || placeholder.getFormattedName()];
-})
-
-result.object(placeholders);
\ No newline at end of file
+    result.object(resultFields);
+}
diff --git a/entity/ExportTemplateField_entity/entityfields/field/stateProcess.js b/entity/ExportTemplateField_entity/entityfields/field/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..871d7d670a1603b16fc0a86ad3ad344a87eecba1
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/field/stateProcess.js
@@ -0,0 +1,14 @@
+import("Util_lib");
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (Utils.isNullOrEmptyString(vars.get("$field.EXPORTTEMPLATEPLACEOFUSE_ID")) 
+    && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
+else
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
diff --git a/entity/ExportTemplateField_entity/entityfields/moveactions/children/down/onActionProcess.js b/entity/ExportTemplateField_entity/entityfields/moveactions/children/down/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c06102416278aac37343d7c70a2151f57debd9f2
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/moveactions/children/down/onActionProcess.js
@@ -0,0 +1,15 @@
+import("system.vars");
+import("Sql_lib");
+import("system.neon");
+
+// The sorting value of the following field is set to the current sorting value
+newWhere("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", vars.get("$field.EXPORTTEMPLATE_ID"))
+.and("EXPORTTEMPLATEFIELD.SORTING", parseInt(vars.get("$field.SORTING")) + 1)
+.updateFields({"SORTING":vars.get("$field.SORTING")}, "EXPORTTEMPLATEFIELD");
+
+// The sorting is increased by one for the current field
+newWhere("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", vars.get("$field.EXPORTTEMPLATE_ID"))
+.and("EXPORTTEMPLATEFIELD.EXPORTTEMPLATEFIELDID", vars.get("$field.EXPORTTEMPLATEFIELDID"))
+.updateFields({"SORTING":(parseInt(vars.get("$field.SORTING")) + 1)}, "EXPORTTEMPLATEFIELD");
+
+neon.refreshAll();
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/moveactions/children/down/stateProcess.js b/entity/ExportTemplateField_entity/entityfields/moveactions/children/down/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..aeb2fdc86a54722b08df6d06a7e6e99c691e8689
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/moveactions/children/down/stateProcess.js
@@ -0,0 +1,14 @@
+import("Sql_lib");
+import("system.result");
+import("system.vars");
+import("system.neon");
+
+let maxSorting = newSelect(new SqlMaskingUtils().max("SORTING"))
+.from("EXPORTTEMPLATEFIELD")
+.where("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", vars.get("$field.EXPORTTEMPLATE_ID"))
+.cell();
+
+if (vars.get("$field.SORTING") == maxSorting) 
+{
+    result.string(neon.COMPONENTSTATE_DISABLED);
+}
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/moveactions/children/up/onActionProcess.js b/entity/ExportTemplateField_entity/entityfields/moveactions/children/up/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2835e61598f7386c73ac100e57f1ade18bc4d47e
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/moveactions/children/up/onActionProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("Sql_lib");
+import("system.neon");
+
+newWhere("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", vars.get("$field.EXPORTTEMPLATE_ID"))
+.and("EXPORTTEMPLATEFIELD.SORTING", parseInt(vars.get("$field.SORTING")) - 1)
+.updateFields({"SORTING":vars.get("$field.SORTING")}, "EXPORTTEMPLATEFIELD");
+
+newWhere("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", vars.get("$field.EXPORTTEMPLATE_ID"))
+.and("EXPORTTEMPLATEFIELD.EXPORTTEMPLATEFIELDID", vars.get("$field.EXPORTTEMPLATEFIELDID"))
+.updateFields({"SORTING":(parseInt(vars.get("$field.SORTING")) - 1)}, "EXPORTTEMPLATEFIELD");
+
+neon.refreshAll();
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/moveactions/children/up/stateProcess.js b/entity/ExportTemplateField_entity/entityfields/moveactions/children/up/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ff98b8b28e4578c4468b50ecef18acb36e628797
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/moveactions/children/up/stateProcess.js
@@ -0,0 +1,9 @@
+import("Util_lib");
+import("system.result");
+import("system.vars");
+import("system.neon");
+
+if (vars.get("$field.SORTING") == 1 || Utils.isNullOrEmpty(vars.get("$field.SORTING"))) 
+{
+    result.string(neon.COMPONENTSTATE_DISABLED);
+}
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/placeofuse/displayValueProcess.js b/entity/ExportTemplateField_entity/entityfields/placeofuse/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1634464ae492abc975dd02449be0d684362faa23
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/placeofuse/displayValueProcess.js
@@ -0,0 +1,11 @@
+import("Util_lib");
+import("system.vars");
+import("Context_lib");
+import("system.project");
+import("system.result");
+
+if (Utils.isNotNullOrEmptyString(vars.getString("$this.value")))
+{
+    let title = ContextUtils.getTranslatedTitle(vars.getString("$this.value")) || vars.getString("$this.value");
+    result.string(title);
+}
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/placeofuse/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/placeofuse/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ff5f51c28d2599e9a73ee18b02d4d20a4bab195
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/placeofuse/valueProcess.js
@@ -0,0 +1,22 @@
+import("Util_lib");
+import("system.result");
+import("system.entities");
+import("system.vars");
+
+let loadConfig = entities.createConfigForLoadingConsumerRows()
+.consumer("ExportTemplatePlacesOfUse")
+.fields(["PLACEOFUSE", "#UID"]);
+
+let filtertConsumerRows = entities.getRows(loadConfig).find(_findUIDRow, {
+    UID: vars.get("$field.EXPORTTEMPLATEPLACEOFUSE_ID")
+});
+
+if (!Utils.isNullOrEmpty(filtertConsumerRows))
+{
+    result.string(filtertConsumerRows["PLACEOFUSE"]);
+}
+
+function _findUIDRow (pRow)
+{
+    return pRow["#UID"] === this.UID;
+}
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/user_edit/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b874a7ac426b8e99383ac949299b9753e4951f2b
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/entityfields/user_new/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3f8db68b950a0505d6179cb67c14dde624c45070
--- /dev/null
+++ b/entity/ExportTemplateField_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/recordcontainers/db/conditionProcess.js b/entity/ExportTemplateField_entity/recordcontainers/db/conditionProcess.js
index 0a8fd4155c358a1f28eecdeba07050276ed58e5b..5195254f656b5dfbc0ad70e280064dcc56dc4458 100644
--- a/entity/ExportTemplateField_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/ExportTemplateField_entity/recordcontainers/db/conditionProcess.js
@@ -2,6 +2,6 @@ import("system.vars");
 import("system.result");
 import("Sql_lib");
 
-var cond = newWhereIfSet("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", "$param.ExportTemplateField_param");
+var cond = newWhereIfSet("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", "$param.ExportTemplateId_param");
 result.string(cond);
 
diff --git a/entity/ExportTemplateField_entity/recordcontainers/db/onDBDelete.js b/entity/ExportTemplateField_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..0ad3890b048495757cfe3eb70ac5d85356d19df0
--- /dev/null
+++ b/entity/ExportTemplateField_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,18 @@
+import("system.vars");
+import("Sql_lib");
+import("system.db");
+
+let updateStatements = [];
+let sorting = vars.get("$field.SORTING");
+let fields = newSelect("EXPORTTEMPLATEFIELD.EXPORTTEMPLATEFIELDID")
+.from("EXPORTTEMPLATEFIELD")
+.where("EXPORTTEMPLATEFIELD.SORTING",sorting, SqlBuilder.GREATER())
+.and("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", vars.get("$field.EXPORTTEMPLATE_ID"))
+.orderBy("EXPORTTEMPLATEFIELD.SORTING").arrayColumn();
+
+fields.forEach(function (pFieldId, pIndex){
+    updateStatements.push(newWhere("EXPORTTEMPLATEFIELD.EXPORTTEMPLATEFIELDID", pFieldId)
+    .buildUpdateStatement({"SORTING" : parseInt(sorting) + pIndex }, "EXPORTTEMPLATEFIELD"));
+});
+
+db.updates(updateStatements);
\ No newline at end of file
diff --git a/entity/ExportTemplateField_entity/recordcontainers/db/onDBInsert.js b/entity/ExportTemplateField_entity/recordcontainers/db/onDBInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..f6607d593faf825e45e834c3bd225fc980dc5eca
--- /dev/null
+++ b/entity/ExportTemplateField_entity/recordcontainers/db/onDBInsert.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("Sql_lib");
+
+let sorting = newSelect([new SqlMaskingUtils().max("EXPORTTEMPLATEFIELD.SORTING")])
+.from("EXPORTTEMPLATEFIELD")
+.where("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", vars.get("$field.EXPORTTEMPLATE_ID"))
+.cell();
+
+sorting = parseInt(sorting);
+
+// The field is only sorted in the onInsert, so I can make sure that it is very likely that there are not two identical numbers.
+newWhere("EXPORTTEMPLATEFIELD.EXPORTTEMPLATEFIELDID", vars.get("$local.uid"))
+    .updateFields({"SORTING" : ((sorting ? sorting : 0) +1) }, "EXPORTTEMPLATEFIELD")
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod b/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod
index 5ef84de7e6b853b11d7cf013ed96e5f854cb3ef9..c641aa1da42c27646c590d0659e150ec4a1a24f8 100644
--- a/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod
+++ b/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod
@@ -4,18 +4,68 @@
   <title>Place of Use</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/documentation.adoc</documentation>
-  <titlePlural>Places of Usage</titlePlural>
+  <siblings>
+    <element>ExportTemplateField_entity</element>
+  </siblings>
+  <grantUpdate v="false" />
+  <contentTitleProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/contentTitleProcess.js</contentTitleProcess>
+  <titlePlural>Dependencies</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
     </entityProvider>
+    <entityActionField>
+      <name>openAdminView</name>
+      <title>Open admin view</title>
+      <onActionProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
+      <isMenuAction v="true" />
+      <isObjectAction v="true" />
+      <iconId>VAADIN:CURLY_BRACKETS</iconId>
+      <stateProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/openadminview/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <contentType>DATE</contentType>
+      <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <contentType>DATE</contentType>
+      <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
     <entityField>
       <name>EXPORTTEMPLATEPLACEOFUSEID</name>
       <title>EXPORTTEMPLATEPLACEOFUSEID</title>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuseid/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>EXPORTTEMPLATEPLACEOFUSE_ID</name>
+      <title>Predecessor</title>
+      <consumer>ExportTemplatePlacesOfUse</consumer>
+      <mandatory v="true" />
+      <mandatoryProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/mandatoryProcess.js</mandatoryProcess>
+      <stateProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/stateProcess.js</stateProcess>
+      <onValueChange>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
+    </entityField>
     <entityField>
       <name>EXPORTTEMPLATE_ID</name>
       <title>Exporttemplate</title>
@@ -26,69 +76,124 @@
       <name>PLACEOFUSE</name>
       <documentation>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/documentation.adoc</documentation>
       <title>Place of use</title>
-      <consumer>ContextExportTemplatePlaceOfUse</consumer>
+      <consumer>Contexts</consumer>
       <mandatory v="true" />
+      <stateProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/stateProcess.js</stateProcess>
+      <titleProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/titleProcess.js</titleProcess>
       <displayValueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/displayValueProcess.js</displayValueProcess>
+      <onValueChange>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/onValueChange.js</onValueChange>
+    </entityField>
+    <entityField>
+      <name>OBJECT_FILTER</name>
+      <title>Filter</title>
+      <contentType>FILTER_TREE</contentType>
+      <stateProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/object_filter/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/object_filter/valueProcess.js</valueProcess>
     </entityField>
+    <entityParameter>
+      <name>ExportTemplateId_param</name>
+      <expose v="true" />
+      <mandatory v="true" />
+    </entityParameter>
     <entityConsumer>
-      <name>ContextExportTemplatePlaceOfUse</name>
+      <name>Contexts</name>
       <dependency>
         <name>dependency</name>
         <entityName>Context_entity</entityName>
-        <fieldName>ContextTemplatePlaceOfUse</fieldName>
+        <fieldName>Exclusive</fieldName>
       </dependency>
       <children>
         <entityParameter>
           <name>InvertBlacklist_param</name>
-          <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/contextexporttemplateplaceofuse/children/invertblacklist_param/valueProcess.js</valueProcess>
+          <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess>
         </entityParameter>
         <entityParameter>
           <name>Blacklist_param</name>
-          <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/contextexporttemplateplaceofuse/children/blacklist_param/valueProcess.js</valueProcess>
+          <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/contexts/children/blacklist_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
     <entityParameter>
-      <name>ExportTemplatePlaceOfUse_param</name>
+      <name>ExportTemplatePlaceOfUseID_param</name>
       <expose v="true" />
     </entityParameter>
-    <entityProvider>
-      <name>ExportTemplatePlaceOfUser</name>
-      <documentation>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/documentation.adoc</documentation>
+    <entityParameter>
+      <name>IsMainPlaceOfUse_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>ExportTemplatePlacesOfUse</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>#ENTITY</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
       <children>
         <entityParameter>
-          <name>ExportTemplatePlaceOfUse_param</name>
-          <expose v="true" />
+          <name>ExportTemplatePlaceOfUseID_param</name>
+        </entityParameter>
+        <entityParameter>
+          <name>ExportTemplateId_param</name>
+          <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
-    </entityProvider>
-    <entityProvider>
-      <name>#PROVIDER_AGGREGATES</name>
-      <useAggregates v="true" />
-    </entityProvider>
+    </entityConsumer>
+    <entityField>
+      <name>TITLE</name>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
+      <isPageable v="false" />
+      <hasDependentRecords v="true" />
       <conditionProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <onDBDelete>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
       <alias>Data_alias</alias>
       <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>EXPORTTEMPLATEPLACEOFUSE.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>EXPORTTEMPLATEPLACEOFUSE.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>EXPORTTEMPLATE_ID.value</name>
           <recordfield>EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATE_ID</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>EXPORTTEMPLATEPLACEOFUSE_ID.value</name>
+          <recordfield>EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATEPLACEOFUSE_ID</recordfield>
+        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>EXPORTTEMPLATEPLACEOFUSEID.value</name>
           <recordfield>EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATEPLACEOFUSEID</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_FILTER.value</name>
+          <recordfield>EXPORTTEMPLATEPLACEOFUSE.OBJECT_FILTER</recordfield>
+        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>PLACEOFUSE.value</name>
           <recordfield>EXPORTTEMPLATEPLACEOFUSE.PLACEOFUSE</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>EXPORTTEMPLATEPLACEOFUSE.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>EXPORTTEMPLATEPLACEOFUSE.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TITLE.value</name>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
-          <name>5e6f806e-c845-49ab-bfee-31b12e4c41f3</name>
+          <name>06fe6e4f-5ab7-404a-b820-7c23fc4a520b</name>
           <tableName>EXPORTTEMPLATEPLACEOFUSE</tableName>
           <primaryKey>EXPORTTEMPLATEPLACEOFUSEID</primaryKey>
           <isUIDTable v="true" />
diff --git a/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/contentTitleProcess.js
similarity index 51%
rename from entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js
rename to entity/ExportTemplatePlaceOfUse_entity/contentTitleProcess.js
index 598d579e335bcff49a488b488728055a608e6da4..a974c8c7914cd2c8cd3d56dbfd54a91f186dacfa 100644
--- a/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js
+++ b/entity/ExportTemplatePlaceOfUse_entity/contentTitleProcess.js
@@ -1,4 +1,4 @@
-import("system.result");
 import("system.vars");
+import("system.result");
 
-result.string(vars.get("$field.PROJECTCODE"));
\ No newline at end of file
+result.string(vars.get("$field.PLACEOFUSE"));
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/documentation.adoc b/entity/ExportTemplatePlaceOfUse_entity/documentation.adoc
deleted file mode 100644
index a61ae5a651de0f753557aa094ba139dc5c3957a5..0000000000000000000000000000000000000000
--- a/entity/ExportTemplatePlaceOfUse_entity/documentation.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-= ExportTemplatePlaceOfUse_entity
-
-Entity to select all Modules where the created template should be useable (to limit the availability in the modules).
-
-The selection of Places Of usage is created via the link to the context_entity and limiting it 
-by the Blacklist_param (which is being inverted to an whitelist thanks to the invertBlacklist_param).
-
-Linked via the ExportTemplateID to ExportTemplates.
-Own dbTable and Entity are to make it possible to store multiple fields for one template.
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/contextexporttemplateplaceofuse/children/blacklist_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/contextexporttemplateplaceofuse/children/blacklist_param/valueProcess.js
deleted file mode 100644
index 9e45ce3b6cda9f9cffa1f8c6046d4267f2eb0a61..0000000000000000000000000000000000000000
--- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/contextexporttemplateplaceofuse/children/blacklist_param/valueProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.object(["Person", "Organisation"]);
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/contexts/children/blacklist_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/contexts/children/blacklist_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..289f1a413d80a3add469ae4915172a6776a54546
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/contexts/children/blacklist_param/valueProcess.js
@@ -0,0 +1,41 @@
+import("ExportTemplate_lib");
+import("Context_lib");
+import("Dependency_lib");
+import("Observation_lib");
+import("system.vars");
+import("system.result");
+import("Sql_lib")
+
+let placeOfUse;
+let contexts = [];
+let entityNames;
+
+if (vars.get("$field.EXPORTTEMPLATEPLACEOFUSE_ID"))
+{
+    placeOfUse = newSelect("EXPORTTEMPLATEPLACEOFUSE.PLACEOFUSE")
+        .from("EXPORTTEMPLATEPLACEOFUSE")
+        .where("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATEPLACEOFUSEID", vars.get("$field.EXPORTTEMPLATEPLACEOFUSE_ID"))
+        .cell();
+}
+
+if (placeOfUse)
+{
+    entityNames = Dependency.getDependency(ContextUtils.getEntity(placeOfUse), {
+        "isExportable" : true
+    });
+}
+else
+{
+    entityNames = ExportTemplateUtils.exportableEntities();
+}
+
+for (let i = 0; i < entityNames.length; i++) 
+{
+    let context = ContextUtils.getContextId(entityNames[i]);
+    if (context)
+    {
+        contexts.push(context);
+    }
+}
+
+result.string(JSON.stringify(contexts));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js
similarity index 100%
rename from entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js
rename to entity/ExportTemplatePlaceOfUse_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/date_edit/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2af46a8e46789056c6c341a8e4e087f8e1edc0c4
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/date_new/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d5cf2ff4f91546bf853125bec438493692a5e048
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplate_id/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplate_id/valueProcess.js
index 7c84123ee891ea1b5d0719e8b77ae5cc7a0ca33b..d375ac965253d49ab53cd40c380df1e4bd9d8a88 100644
--- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplate_id/valueProcess.js
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplate_id/valueProcess.js
@@ -1,10 +1,9 @@
+import("Util_lib");
 import("system.result");
 import("system.neon");
 import("system.vars");
 
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+if(!Utils.isNullOrEmpty(vars.getString("$param.ExportTemplateId_param")) && Utils.isNullOrEmpty(vars.get("$this.value")))
 {
-    if(vars.exists("$param.ExportTemplatePlaceOfUse_param") && vars.get("$param.ExportTemplatePlaceOfUse_param") != null
-    && vars.get("$sys.recordstate") ==  neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
-        result.string(vars.getString("$param.ExportTemplatePlaceOfUse_param"));    
+    result.string(vars.getString("$param.ExportTemplateId_param"));
 }
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/mandatoryProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fb63b4864fee1cabf68f849cdab01fe7a9ba8b0a
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/mandatoryProcess.js
@@ -0,0 +1,5 @@
+import("Util_lib");
+import("system.vars");
+import("system.result");
+
+result.string(!Utils.toBoolean(vars.get("$param.IsMainPlaceOfUse_param")));
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/onValueChange.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..c570d33c4d73c61ecfacfa6a5b089dcfa4d96374
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/onValueChange.js
@@ -0,0 +1,5 @@
+import("Context_lib");
+import("system.vars");
+
+// If the place of use of the export template is changed, the selected place of use no longer matches the parent.
+vars.set("$field.PLACEOFUSE", null);
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/stateProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..924fa6c76f892bf6f5c14e1f10f6a4bf53b08547
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_id/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("Util_lib");
+import("system.result");
+import("system.neon");
+
+// If this is the Main PlaceOfUse, there the parent One is null
+if (Utils.toBoolean(vars.get("$param.IsMainPlaceOfUse_param")))
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuseid/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuseid/valueProcess.js
index d81b1c1049eb25c998728bf5e0b90bada3a24e8d..067717d36961db97edf8c1e05f4b43ead60a4b52 100644
--- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuseid/valueProcess.js
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuseid/valueProcess.js
@@ -4,4 +4,7 @@ import("system.util");
 import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
-result.string(util.getNewUUID());
\ No newline at end of file
+{
+    result.string(util.getNewUUID());
+}
+
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/documentation.adoc b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/documentation.adoc
deleted file mode 100644
index 9713220ef692ca2f93ca9047460db28270795e3c..0000000000000000000000000000000000000000
--- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/documentation.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-= ExportTemplatePlaceOfUse_entity - ExportTemplatePlaceOfUser
-
-needed instead of the #PROVIDER so the ExportTemplatePlaceOfUse_param can be used
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuses/children/exporttemplateid_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuses/children/exporttemplateid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..001cc890f029455658cd08a1d8ad7ce8259f24d7
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuses/children/exporttemplateid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.ExportTemplateId_param"));
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..001cc890f029455658cd08a1d8ad7ce8259f24d7
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.ExportTemplateId_param"));
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/object_filter/stateProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/object_filter/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..679e8717260d56278206209c3dc3b517dfe526b6
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/object_filter/stateProcess.js
@@ -0,0 +1,17 @@
+import("Util_lib");
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+let state;
+
+if (!Utils.isNullOrEmpty(vars.get("$field.PLACEOFUSE")) && !Utils.isNullOrEmpty(vars.get("$field.EXPORTTEMPLATEPLACEOFUSE_ID")))
+{
+    state = neon.COMPONENTSTATE_EDITABLE;
+}
+else
+{
+    state = neon.COMPONENTSTATE_INVISIBLE;
+}
+
+result.string(state);
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/object_filter/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/object_filter/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..077a69be63354948d7599480c4bf234cfd9a72c6
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/object_filter/valueProcess.js
@@ -0,0 +1,18 @@
+import("JditoFilter_lib");
+import("Util_lib");
+import("Observation_lib");
+import("system.vars");
+import("system.result");
+
+let resFilter;
+
+if (!Utils.isNullOrEmpty(vars.get("$this.value")) && !Utils.isNullOrEmpty(vars.get("$field.PLACEOFUSE"))) 
+{
+    resFilter = JditoFilterUtils.getContextFilter(vars.get("$field.PLACEOFUSE"), null);
+}
+
+if (resFilter)
+{
+    result.string(resFilter);
+}
+    
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/openadminview/onActionProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/openadminview/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..be9984d0b0f68cabba9d60cd3404b7063374b4e3
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/openadminview/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("Context_lib");
+
+AdminViewUtils.open("", []);
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/openadminview/stateProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/openadminview/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..38f2298db7304b4d44a15fbad7f720558c02da99
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/openadminview/stateProcess.js
@@ -0,0 +1,4 @@
+import("Context_lib");
+import("system.result");
+
+result.string(AdminViewUtils.getActionState());
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/displayValueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/displayValueProcess.js
index dd3384b9ec0af65bca467795cd70e356e2e08fe4..dda429b59d3dc879f6d66653ed762fddfc26722e 100644
--- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/displayValueProcess.js
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/displayValueProcess.js
@@ -1,8 +1,12 @@
+import("system.translate");
+import("Util_lib");
 import("system.vars");
-import("system.result");
 import("Context_lib");
+import("system.project");
+import("system.result");
 
-var placeOfUse = vars.get("$field.PLACEOFUSE");
-
-if(placeOfUse)
-result.string(ContextUtils.getTitle(placeOfUse, true));
\ No newline at end of file
+if (Utils.isNotNullOrEmptyString(vars.getString("$this.value")))
+{
+    let title = ContextUtils.getTranslatedTitle(vars.getString("$this.value")) || translate.text(vars.getString("$this.value"));
+    result.string(title);
+}
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/documentation.adoc b/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/documentation.adoc
deleted file mode 100644
index 38a9ff1a0f6494d732d9d7fe50d771885f7496fa..0000000000000000000000000000000000000000
--- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/documentation.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-= PlaceOfuse
-
-The selection of Places Of usage is created via the link to the context_entity and limiting it 
-by the Blacklist_param (which is being inverted to an whitelist thanks to the invertBlacklist_param).
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/onValueChange.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..e96809eae5c79ded9a2456c13793f208f5f6faf6
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/onValueChange.js
@@ -0,0 +1,8 @@
+import("JditoFilter_lib");
+import("Util_lib");
+import("system.vars");
+
+if (!Utils.isNullOrEmpty(vars.get("$field.EXPORTTEMPLATEPLACEOFUSE_ID")))
+{
+    vars.set("$field.OBJECT_FILTER", JditoFilterUtils.getContextFilter(vars.get("$this.value"), null));
+}
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/stateProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..20fc8dccf50778351e6ffde02caa9518556780ea
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/stateProcess.js
@@ -0,0 +1,21 @@
+import("Util_lib");
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+let state;
+
+if (!Utils.isNullOrEmpty(vars.get("$field.EXPORTTEMPLATEPLACEOFUSE_ID")) || Utils.toBoolean(vars.get("$param.IsMainPlaceOfUse_param")))
+{
+    state = neon.COMPONENTSTATE_EDITABLE;
+}
+else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    state = neon.COMPONENTSTATE_INVISIBLE;
+}
+else
+{
+    state = neon.COMPONENTSTATE_READONLY;
+}
+
+result.string(state);
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/titleProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3ecda2e88772989f3e48f3ff3e482cfd6ac38b24
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/placeofuse/titleProcess.js
@@ -0,0 +1,9 @@
+import("system.translate");
+import("system.vars");
+import("Util_lib");
+import("system.result");
+
+if (!Utils.toBoolean(vars.get("$param.IsMainPlaceOfUse_param")))
+{
+    result.string(translate.text("Dependency"));
+}
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/user_edit/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b874a7ac426b8e99383ac949299b9753e4951f2b
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/user_new/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3f8db68b950a0505d6179cb67c14dde624c45070
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.user"));
+}
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/recordcontainers/db/conditionProcess.js b/entity/ExportTemplatePlaceOfUse_entity/recordcontainers/db/conditionProcess.js
index 30942689497eb2091398b6c15fb77fa8267a5806..a3490df303d908344ba798f904a69a6076de4627 100644
--- a/entity/ExportTemplatePlaceOfUse_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/ExportTemplatePlaceOfUse_entity/recordcontainers/db/conditionProcess.js
@@ -1,6 +1,21 @@
 import("system.vars");
 import("system.result");
 import("Sql_lib");
+import("Util_lib");
 
-var cond = newWhereIfSet("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATE_ID", "$param.ExportTemplatePlaceOfUse_param");
-result.string(cond);
\ No newline at end of file
+let isMainPlaceOfUse = Utils.toBoolean(vars.get("$param.IsMainPlaceOfUse_param"));
+let isParentPlaceOfUseIdFilled = Utils.toBoolean(vars.get("$param.ExportTemplatePlaceOfUseID_param"));
+let exportTemplateId = vars.get("$param.ExportTemplateId_param");
+
+let cond = newWhereIfSet("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATE_ID", exportTemplateId);
+
+if (isMainPlaceOfUse)
+{
+    cond.and("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATEPLACEOFUSE_ID IS NULL");
+}
+else if (isParentPlaceOfUseIdFilled)
+{
+    cond.and("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATEPLACEOFUSE_ID IS NOT NULL");
+}
+
+result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/ExportTemplatePlaceOfUse_entity/recordcontainers/db/onDBDelete.js b/entity/ExportTemplatePlaceOfUse_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..2bb03e6ffba889fd320be5ad65ae54bf965aa3a0
--- /dev/null
+++ b/entity/ExportTemplatePlaceOfUse_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,28 @@
+import("system.translate");
+import("system.question");
+import("system.db");
+import("system.vars");
+import("Sql_lib");
+
+let countDeletedRows = newWhere("EXPORTTEMPLATEFIELD.EXPORTTEMPLATEPLACEOFUSE_ID", vars.get("$field.EXPORTTEMPLATEPLACEOFUSEID"))
+.and("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", vars.get("$field.EXPORTTEMPLATE_ID"))
+.deleteData(true, "EXPORTTEMPLATEFIELD");
+
+if (countDeletedRows > 0)
+{
+    question.showMessage(translate.text("Deleting the dependency also deletes its fields."), question.INFORMATION, translate.text("Fields of Dependency"));
+    let updateStatements = [];
+    let fields = newSelect("EXPORTTEMPLATEFIELD.EXPORTTEMPLATEFIELDID")
+    .from("EXPORTTEMPLATEFIELD")
+    .where("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", vars.get("$field.EXPORTTEMPLATE_ID"))
+    .orderBy("EXPORTTEMPLATEFIELD.SORTING").arrayColumn();
+
+    fields.forEach(function (pFieldId, pIndex){
+        updateStatements.push(newWhere("EXPORTTEMPLATEFIELD.EXPORTTEMPLATEFIELDID", pFieldId)
+            .buildUpdateStatement({
+                "SORTING" : pIndex + 1
+            }, "EXPORTTEMPLATEFIELD"));
+    });
+    //The gaps created by deleting the dependent fields are closed.
+    db.updates(updateStatements);
+}
diff --git a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
index 5c5e00cfcb49e5cb3ae07a120b0e467b89041a00..7f406a333783ddf4fbdcdec44e903ae4d16f6345 100644
--- a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
+++ b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod
@@ -45,6 +45,14 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>Languages</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Language_entity</entityName>
+        <fieldName>ISO3Name</fieldName>
+      </dependency>
+    </entityConsumer>
     <entityField>
       <name>UID</name>
       <state>EDITABLE</state>
@@ -87,6 +95,19 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>ISOLANGUAGE</name>
+      <consumer>Languages</consumer>
+      <state>INVISIBLE</state>
+      <valueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/isolanguage/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/isolanguage/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>charset</name>
+      <title>Charset</title>
+      <dropDownProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/charset/dropDownProcess.js</dropDownProcess>
+      <state>EDITABLE</state>
+    </entityField>
   </entityFields>
   <recordContainers>
     <datalessRecordContainer>
diff --git a/entity/ExportTemplateSelection_entity/entityfields/charset/dropDownProcess.js b/entity/ExportTemplateSelection_entity/entityfields/charset/dropDownProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3e47786c24e9684a064259923ad38c356aafaac2
--- /dev/null
+++ b/entity/ExportTemplateSelection_entity/entityfields/charset/dropDownProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.object([["UTF-8", "UTF-8"]]);
\ No newline at end of file
diff --git a/entity/ExportTemplate_entity/entityfields/isolanguage/displayValueProcess.js b/entity/ExportTemplateSelection_entity/entityfields/isolanguage/displayValueProcess.js
similarity index 100%
rename from entity/ExportTemplate_entity/entityfields/isolanguage/displayValueProcess.js
rename to entity/ExportTemplateSelection_entity/entityfields/isolanguage/displayValueProcess.js
diff --git a/entity/ExportTemplate_entity/entityfields/isolanguage/valueProcess.js b/entity/ExportTemplateSelection_entity/entityfields/isolanguage/valueProcess.js
similarity index 83%
rename from entity/ExportTemplate_entity/entityfields/isolanguage/valueProcess.js
rename to entity/ExportTemplateSelection_entity/entityfields/isolanguage/valueProcess.js
index 2bb039c219ee635fbd789a66704d4f5dd483dbfb..574a9ebe136046ed2bccfcde532d19ee19ce53b7 100644
--- a/entity/ExportTemplate_entity/entityfields/isolanguage/valueProcess.js
+++ b/entity/ExportTemplateSelection_entity/entityfields/isolanguage/valueProcess.js
@@ -3,4 +3,7 @@ import("system.neon");
 import("system.vars");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$this.value") == null)
-    result.string("deu");
\ No newline at end of file
+{
+    result.string("deu");
+}
+    
\ No newline at end of file
diff --git a/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js b/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js
index 66ee0547575d06eeb39f33b7ede5258e639295dc..0f971c77dd629f6479980c7f816214ec4ca6dbd6 100644
--- a/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js
+++ b/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js
@@ -1,16 +1,30 @@
+import("system.process");
+import("Employee_lib");
 import("system.neon");
 import("system.vars");
 import("ExportTemplate_lib");
 
 var filename = vars.get("$field.FILENAME");
 var templateId = vars.get("$field.EXPORTTEMPLATE_ID");
-var selection = vars.get("$field.selection");
+var selection = JSON.stringify(vars.get("$field.selection"));
 var comingFrom = vars.get("$field.comingfrom");
+var charset = vars.get("$field.charset");
 
 if(templateId)
 {
-    var document = ExportTemplateUtils.buildExport(templateId, selection, comingFrom, filename);
-    neon.download(document.content, document.filename);
+    var user = EmployeeUtils.getCurrentUserId();
+    var processConfig = process.createStartAsyncConfig()
+        .setName("buildExport_serverProcess")
+        .setLocalVariables({
+            "selection" : selection,
+            "exportTemplateId" : templateId,
+            "charset" : charset,
+            "filename" : filename,
+            "user" : user
+        })
+        .setUser(vars.get("$sys.user"));
+    process.startAsync(processConfig);
     //since we do not open something after the download we need to close the window where the action is placed
     neon.closeImage(vars.get("$sys.currentimage"), true);
+    
 }
\ No newline at end of file
diff --git a/entity/ExportTemplate_entity/ExportTemplate_entity.aod b/entity/ExportTemplate_entity/ExportTemplate_entity.aod
index 48a62cdd0966b6bbe80a745fb17b579bcc982de5..4cea3664caaf81a16515e7a4967cde5cc2270001 100644
--- a/entity/ExportTemplate_entity/ExportTemplate_entity.aod
+++ b/entity/ExportTemplate_entity/ExportTemplate_entity.aod
@@ -36,14 +36,6 @@
       <dropDownProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/fieldseparator/dropDownProcess.js</dropDownProcess>
       <textInputAllowed v="true" />
     </entityField>
-    <entityField>
-      <name>ISOLANGUAGE</name>
-      <title>Language</title>
-      <consumer>Languages</consumer>
-      <mandatory v="true" />
-      <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/isolanguage/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/isolanguage/displayValueProcess.js</displayValueProcess>
-    </entityField>
     <entityField>
       <name>DATE_EDIT</name>
       <contentType>DATE</contentType>
@@ -63,17 +55,9 @@
       <title>Description</title>
       <contentType>LONG_TEXT</contentType>
     </entityField>
-    <entityConsumer>
-      <name>Languages</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Language_entity</entityName>
-        <fieldName>ISO3Name</fieldName>
-      </dependency>
-    </entityConsumer>
     <entityConsumer>
       <name>ExportTemplateFields</name>
-      <state>EDITABLE</state>
+      <refreshParent v="true" />
       <dependency>
         <name>dependency</name>
         <entityName>ExportTemplateField_entity</entityName>
@@ -81,7 +65,7 @@
       </dependency>
       <children>
         <entityParameter>
-          <name>ExportTemplateField_param</name>
+          <name>ExportTemplateId_param</name>
           <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js</valueProcess>
           <expose v="true" />
           <documentation>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/documentation.adoc</documentation>
@@ -93,21 +77,6 @@
       <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateids_param/valueProcess.js</valueProcess>
       <expose v="true" />
     </entityParameter>
-    <entityConsumer>
-      <name>ExportTemplateplaceOfUseCon</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>ExportTemplatePlaceOfUse_entity</entityName>
-        <fieldName>ExportTemplatePlaceOfUser</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ExportTemplatePlaceOfUse_param</name>
-          <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateplaceofusecon/children/exporttemplateplaceofuse_param/valueProcess.js</valueProcess>
-          <expose v="true" />
-        </entityParameter>
-      </children>
-    </entityConsumer>
     <entityProvider>
       <name>ExportTemplateIDs</name>
       <documentation>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateids/documentation.adoc</documentation>
@@ -139,8 +108,8 @@
       <textInputAllowed v="true" />
     </entityField>
     <entityField>
-      <name>EXPORTTEMPLATE_OBJECTTYPE</name>
-      <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplate_objecttype/valueProcess.js</valueProcess>
+      <name>exportTemplateObjectType</name>
+      <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateobjecttype/valueProcess.js</valueProcess>
     </entityField>
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
@@ -153,6 +122,60 @@
       <iconId>VAADIN:CURLY_BRACKETS</iconId>
       <stateProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js</stateProcess>
     </entityActionField>
+    <entityConsumer>
+      <name>ExportTemplatePlacesOfUse</name>
+      <refreshParent v="true" />
+      <dependency>
+        <name>dependency</name>
+        <entityName>ExportTemplatePlaceOfUse_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ExportTemplateId_param</name>
+          <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ExportTemplatePlaceOfUseID_param</name>
+          <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateplaceofuseid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>ExportTemplateMainPlaceOfUse</name>
+      <isOneToOneRelationship v="true" />
+      <dependency>
+        <name>dependency</name>
+        <entityName>ExportTemplatePlaceOfUse_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ExportTemplateId_param</name>
+          <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplatemainplaceofuse/children/exporttemplateid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>IsMainPlaceOfUse_param</name>
+          <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplatemainplaceofuse/children/ismainplaceofuse_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>ExportTemplateFieldsPreview</name>
+      <documentation>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplatefieldspreview/documentation.adoc</documentation>
+      <state>READONLY</state>
+      <dependency>
+        <name>dependency</name>
+        <entityName>ExportTemplateField_entity</entityName>
+        <fieldName>ExportTemplateFields</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ExportTemplateId_param</name>
+          <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplatefieldspreview/children/exporttemplateid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -170,12 +193,6 @@
           <name>DATE_NEW.value</name>
           <recordfield>EXPORTTEMPLATE.DATE_NEW</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>ISOLANGUAGE.value</name>
-          <recordfield>EXPORTTEMPLATE.ISOLANGUAGE</recordfield>
-          <isFilterable v="true" />
-          <isLookupFilter v="true" />
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>EXPORTTEMPLATEID.value</name>
           <recordfield>EXPORTTEMPLATE.EXPORTTEMPLATEID</recordfield>
@@ -198,11 +215,6 @@
           <name>DESCRIPTION.value</name>
           <recordfield>EXPORTTEMPLATE.DESCRIPTION</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>ISOLANGUAGE.displayValue</name>
-          <isFilterable v="true" />
-          <isLookupFilter v="true" />
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>TITLE.displayValue</name>
           <isFilterable v="true" />
@@ -223,7 +235,7 @@
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
-          <name>ce410f40-846b-43e6-9c30-150393cee43d</name>
+          <name>3b838097-7531-42c2-abee-db95cce7c729</name>
           <tableName>EXPORTTEMPLATE</tableName>
           <primaryKey>EXPORTTEMPLATEID</primaryKey>
           <isUIDTable v="true" />
diff --git a/entity/ExportTemplate_entity/entityfields/exporttemplatefieldspreview/children/exporttemplateid_param/valueProcess.js b/entity/ExportTemplate_entity/entityfields/exporttemplatefieldspreview/children/exporttemplateid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3cbc49005642cf289c724b7b2de89a5db926e630
--- /dev/null
+++ b/entity/ExportTemplate_entity/entityfields/exporttemplatefieldspreview/children/exporttemplateid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.EXPORTTEMPLATEID"));
\ No newline at end of file
diff --git a/entity/ExportTemplate_entity/entityfields/exporttemplatefieldspreview/documentation.adoc b/entity/ExportTemplate_entity/entityfields/exporttemplatefieldspreview/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..87813a66bc64775d1518863cda388c18721e1607
--- /dev/null
+++ b/entity/ExportTemplate_entity/entityfields/exporttemplatefieldspreview/documentation.adoc
@@ -0,0 +1 @@
+This Consumer is a Workaround for the fields in the preview so that they cannot be edited.
\ No newline at end of file
diff --git a/entity/ExportTemplate_entity/entityfields/exporttemplateplaceofusecon/children/exporttemplateplaceofuse_param/valueProcess.js b/entity/ExportTemplate_entity/entityfields/exporttemplatemainplaceofuse/children/exporttemplateid_param/valueProcess.js
similarity index 100%
rename from entity/ExportTemplate_entity/entityfields/exporttemplateplaceofusecon/children/exporttemplateplaceofuse_param/valueProcess.js
rename to entity/ExportTemplate_entity/entityfields/exporttemplatemainplaceofuse/children/exporttemplateid_param/valueProcess.js
diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/contextexporttemplateplaceofuse/children/invertblacklist_param/valueProcess.js b/entity/ExportTemplate_entity/entityfields/exporttemplatemainplaceofuse/children/ismainplaceofuse_param/valueProcess.js
similarity index 100%
rename from entity/ExportTemplatePlaceOfUse_entity/entityfields/contextexporttemplateplaceofuse/children/invertblacklist_param/valueProcess.js
rename to entity/ExportTemplate_entity/entityfields/exporttemplatemainplaceofuse/children/ismainplaceofuse_param/valueProcess.js
diff --git a/entity/ExportTemplate_entity/entityfields/exporttemplate_objecttype/valueProcess.js b/entity/ExportTemplate_entity/entityfields/exporttemplateobjecttype/valueProcess.js
similarity index 100%
rename from entity/ExportTemplate_entity/entityfields/exporttemplate_objecttype/valueProcess.js
rename to entity/ExportTemplate_entity/entityfields/exporttemplateobjecttype/valueProcess.js
diff --git a/entity/ExportTemplate_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js b/entity/ExportTemplate_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d8e00008de741ec03a1997e0bd169d0acd7f4cc7
--- /dev/null
+++ b/entity/ExportTemplate_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.EXPORTTEMPLATEID"));
\ No newline at end of file
diff --git a/entity/ExportTemplate_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateplaceofuseid_param/valueProcess.js b/entity/ExportTemplate_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateplaceofuseid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9bdc0c36bbda23a5a14dc48d29423e1979f0ee01
--- /dev/null
+++ b/entity/ExportTemplate_entity/entityfields/exporttemplateplacesofuse/children/exporttemplateplaceofuseid_param/valueProcess.js
@@ -0,0 +1,9 @@
+import("Entity_lib");
+import("system.result");
+
+// Transfer of the UID of the main place of use with the help of the consumer.
+result.string(new EntityConsumerRowsHelper()
+        .consumer("ExportTemplateMainPlaceOfUse")
+        .fetchRowsFromConsumer()
+        .getRows()[0]["#UID"]);
+        
\ No newline at end of file
diff --git a/entity/ExportTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js b/entity/ExportTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js
index 57784ebda7e75d58197542d071b5afb2a61cc74e..3832b22bd97d302fcdf45333a3240016072281d2 100644
--- a/entity/ExportTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js
+++ b/entity/ExportTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js
@@ -6,7 +6,7 @@ import("Sql_lib");
 var operator = vars.get("$local.operator");
 var rawvalue = vars.get("$local.rawvalue");
 
-var objecttype = vars.get("$field.EXPORTTEMPLATE_OBJECTTYPE");
+var objecttype = vars.get("$field.exportTemplateObjectType");
 var idcolumn = "EXPORTTEMPLATE.EXPORTTEMPLATEID";
 
 result.string(FavoritesUtil.getFilterDisplayCondition(objecttype, operator, rawvalue, idcolumn));
\ No newline at end of file
diff --git a/entity/InboxEmployeegroupRelation_entity/InboxEmployeegroupRelation_entity.aod b/entity/InboxEmployeegroupRelation_entity/InboxEmployeegroupRelation_entity.aod
index 4bd204d10578d094b7334eb88b79edc1e3c08d80..bf862f146661c7997f952d398ddf0b1060464017 100644
--- a/entity/InboxEmployeegroupRelation_entity/InboxEmployeegroupRelation_entity.aod
+++ b/entity/InboxEmployeegroupRelation_entity/InboxEmployeegroupRelation_entity.aod
@@ -19,6 +19,7 @@
       <title>Employee Group</title>
       <consumer>EmployeesGroupsForCompanyGroup</consumer>
       <displayValueProcess>%aditoprj%/entity/InboxEmployeegroupRelation_entity/entityfields/employeegroup_id/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/InboxEmployeegroupRelation_entity/entityfields/employeegroup_id/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>INBOX_ID</name>
diff --git a/entity/InboxEmployeegroupRelation_entity/entityfields/employeegroup_id/onValidation.js b/entity/InboxEmployeegroupRelation_entity/entityfields/employeegroup_id/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..a221833a595548cdf760326ff6ee505bba243ffd
--- /dev/null
+++ b/entity/InboxEmployeegroupRelation_entity/entityfields/employeegroup_id/onValidation.js
@@ -0,0 +1,19 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+
+var sql = new SqlBuilder()
+                .selectCount("EMPLOYEEGROUP_ID")
+                .from("INBOX_EMPLOYEEGROUP_RELATION")
+                .where("INBOX_EMPLOYEEGROUP_RELATION.EMPLOYEEGROUP_ID", vars.get("$field.EMPLOYEEGROUP_ID"))
+                .and("INBOX_EMPLOYEEGROUP_RELATION.INBOX_ID", vars.get("$field.INBOX_ID"))
+                .andIfSet("INBOX_EMPLOYEEGROUP_RELATION.INBOX_EMPLOYEEGROUP_RELATIONID", vars.get("$field.INBOX_EMPLOYEEGROUP_RELATIONID"),SqlBuilder.NOT_EQUAL())
+                .cell();
+                
+if (sql > 0)
+{
+    result.string(translate.text("Employee group already selected") + ".");
+}
\ No newline at end of file
diff --git a/entity/InboxFilterGroupRelation_entity/InboxFilterGroupRelation_entity.aod b/entity/InboxFilterGroupRelation_entity/InboxFilterGroupRelation_entity.aod
index 633b529675e5237b28a01282ffb3ab5e539bb03f..bc52ff958a5b667ab02683c038b38a9e23ab1619 100644
--- a/entity/InboxFilterGroupRelation_entity/InboxFilterGroupRelation_entity.aod
+++ b/entity/InboxFilterGroupRelation_entity/InboxFilterGroupRelation_entity.aod
@@ -16,6 +16,8 @@
       <name>INBOXFILTERGROUP_ID</name>
       <title>Inbox filter group</title>
       <consumer>InboxFilterGroups</consumer>
+      <displayValueProcess>%aditoprj%/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>INBOX_ID</name>
@@ -78,7 +80,6 @@
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>INBOXFILTERGROUP_ID.displayValue</name>
-          <expression>%aditoprj%/entity/InboxFilterGroupRelation_entity/recordcontainers/db/recordfieldmappings/inboxfiltergroup_id.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
diff --git a/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/displayValueProcess.js b/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f2db0bf1cddbe8f3c565406b434296eece29489
--- /dev/null
+++ b/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/displayValueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+
+result.string(newSelect("NAME")
+.from("INBOXFILTERGROUP")
+.where("INBOXFILTERGROUP.INBOXFILTERGROUPID", vars.get("$field.INBOXFILTERGROUP_ID")).cell());
\ No newline at end of file
diff --git a/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/onValidation.js b/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..1d234c44a60d6d854f716b853f947d021ea8e13d
--- /dev/null
+++ b/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroup_id/onValidation.js
@@ -0,0 +1,17 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var sql = new SqlBuilder()
+                .selectCount("INBOXFILTERGROUP_ID")
+                .from("INBOXFILTERGROUP_RELATION")
+                .where("INBOXFILTERGROUP_RELATION.INBOXFILTERGROUP_ID", vars.get("$field.INBOXFILTERGROUP_ID"))
+                .cell();
+
+if (sql > 0)
+{
+    result.string(translate.text("Rulegroup already selected") + ".");
+} 
+
diff --git a/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroups/children/excludeinboxfiltergroups_param/valueProcess.js b/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroups/children/excludeinboxfiltergroups_param/valueProcess.js
index 52e04d7128121199cd05f34d3d5a6181f35c4f45..e743c07a2228759bd7bbde62ba333bafdabb1458 100644
--- a/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroups/children/excludeinboxfiltergroups_param/valueProcess.js
+++ b/entity/InboxFilterGroupRelation_entity/entityfields/inboxfiltergroups/children/excludeinboxfiltergroups_param/valueProcess.js
@@ -1,9 +1,11 @@
 import("system.result");
 import("system.vars");
+import("Sql_lib");
 
 var sql = new SqlBuilder()
               .select("INBOXFILTERGROUP_RELATION.INBOXFILTERGROUP_ID")
               .from("INBOXFILTERGROUP_RELATION")
-              .where("INBOX_ID", vars.get("$param.InboxId_param"))
-              .arrayColumn(); 
-result.object(sql);
\ No newline at end of file
+              .where("INBOXFILTERGROUP_RELATION.INBOX_ID", vars.get("$param.InboxId_param"))
+              .arrayColumn();
+              
+result.object(sql);
diff --git a/entity/InboxFilterGroupRelation_entity/recordcontainers/db/recordfieldmappings/inboxfiltergroup_id.displayvalue/expression.js b/entity/InboxFilterGroupRelation_entity/recordcontainers/db/recordfieldmappings/inboxfiltergroup_id.displayvalue/expression.js
deleted file mode 100644
index 234d5690451a6793590572b93a2e69423ab4c277..0000000000000000000000000000000000000000
--- a/entity/InboxFilterGroupRelation_entity/recordcontainers/db/recordfieldmappings/inboxfiltergroup_id.displayvalue/expression.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("Sql_lib");
-
-result.string(newSelect("NAME")
-.from("INBOXFILTERGROUP")
-.where("INBOXFILTERGROUPID = INBOXFILTERGROUP_ID").toString());
\ No newline at end of file
diff --git a/entity/InboxFilterGroup_entity/InboxFilterGroup_entity.aod b/entity/InboxFilterGroup_entity/InboxFilterGroup_entity.aod
index a57f3d4421506abc8cacb5a7eb37236042ff4b64..e5c6a604f7c1fc270baf9f25ad5de3bd3df6b99f 100644
--- a/entity/InboxFilterGroup_entity/InboxFilterGroup_entity.aod
+++ b/entity/InboxFilterGroup_entity/InboxFilterGroup_entity.aod
@@ -26,6 +26,7 @@
       <name>NAME</name>
       <title>Name</title>
       <mandatory v="true" />
+      <onValidation>%aditoprj%/entity/InboxFilterGroup_entity/entityfields/name/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>DATE</name>
@@ -75,6 +76,9 @@
       <name>PRIORITY</name>
       <title>Priority</title>
       <contentType>NUMBER</contentType>
+      <maxValue v="9999" />
+      <minValue v="1" />
+      <inputFormat>#</inputFormat>
       <onValidation>%aditoprj%/entity/InboxFilterGroup_entity/entityfields/priority/onValidation.js</onValidation>
     </entityField>
     <entityProvider>
diff --git a/entity/InboxFilterGroup_entity/entityfields/name/onValidation.js b/entity/InboxFilterGroup_entity/entityfields/name/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..5f2a7b84bb1a7be48d3319a6978042734c878416
--- /dev/null
+++ b/entity/InboxFilterGroup_entity/entityfields/name/onValidation.js
@@ -0,0 +1,19 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    var sql = new SqlBuilder()
+                    .selectCount("NAME")
+                    .from("INBOXFILTERGROUP")
+                    .where("INBOXFILTERGROUP.NAME", vars.get("$field.NAME"))
+                    .cell();
+
+    if (sql > 0)
+    {
+        result.string(translate.text("Name has to be unique") + ".");
+    } 
+}
diff --git a/entity/InboxFilterGroup_entity/recordcontainers/db/conditionProcess.js b/entity/InboxFilterGroup_entity/recordcontainers/db/conditionProcess.js
index 79067f745f39cc71feb32de8cf86a3d9bfb87290..e729ee44133e252a15704c57c27d24bcaab28182 100644
--- a/entity/InboxFilterGroup_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/InboxFilterGroup_entity/recordcontainers/db/conditionProcess.js
@@ -1,8 +1,13 @@
+import("system.vars");
 import("system.result");
 import("Sql_lib");
 
-var cond = newWhereIfSet("INBOXFILTERGROUP.INBOXFILTERGROUPID", "$param.ExcludeInboxFilterGroups_param",SqlBuilder.NOT_IN());
+if (vars.get("$param.ExcludeInboxFilterGroups_param"))
+{
+    var cond = newWhereIfSet("INBOXFILTERGROUP.INBOXFILTERGROUPID", [vars.get("$param.ExcludeInboxFilterGroups_param")],SqlBuilder.NOT_IN());
+    result.string(cond.toString());
+}
+
+
 
-result.string(cond.toString());  
 
- 
diff --git a/entity/InboxFilter_entity/InboxFilter_entity.aod b/entity/InboxFilter_entity/InboxFilter_entity.aod
index 5f4616f78ac646a858b79f7205f2a28dd5bcf259..cdd385f811b6ce55210bff0e99dc1e7f89cc28f7 100644
--- a/entity/InboxFilter_entity/InboxFilter_entity.aod
+++ b/entity/InboxFilter_entity/InboxFilter_entity.aod
@@ -20,7 +20,7 @@
     </entityField>
     <entityField>
       <name>COMPONENT</name>
-      <title>Component</title>
+      <title>Search component</title>
       <consumer>KeywordComponent</consumer>
       <displayValueProcess>%aditoprj%/entity/InboxFilter_entity/entityfields/component/displayValueProcess.js</displayValueProcess>
     </entityField>
diff --git a/entity/Inbox_entity/Inbox_entity.aod b/entity/Inbox_entity/Inbox_entity.aod
index 4dafa5bfcb40428b30f89912a583ce12cca3034a..40918ab17a08543a1133feb0e3b085b96b8ab04f 100644
--- a/entity/Inbox_entity/Inbox_entity.aod
+++ b/entity/Inbox_entity/Inbox_entity.aod
@@ -4,6 +4,7 @@
   <title>Inboxes</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Inbox_entity/documentation.adoc</documentation>
+  <grantDelete v="false" />
   <contentTitleProcess>%aditoprj%/entity/Inbox_entity/contentTitleProcess.js</contentTitleProcess>
   <iconId>VAADIN:ENVELOPES</iconId>
   <imageProcess>%aditoprj%/entity/Inbox_entity/imageProcess.js</imageProcess>
@@ -20,11 +21,13 @@
       <name>INBOXNAME</name>
       <title>Name</title>
       <mandatory v="true" />
+      <onValidation>%aditoprj%/entity/Inbox_entity/entityfields/inboxname/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>EMAILADDRESS</name>
       <title>E-Mail Adresse</title>
       <mandatory v="true" />
+      <onValidation>%aditoprj%/entity/Inbox_entity/entityfields/emailaddress/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>INBOXDATE</name>
@@ -119,7 +122,7 @@
       <dependency>
         <name>dependency</name>
         <entityName>SupportTicket_entity</entityName>
-        <fieldName>TicketsProvider</fieldName>
+        <fieldName>SupportTickets</fieldName>
       </dependency>
       <children>
         <entityParameter>
@@ -201,12 +204,26 @@
       <titleProcess>%aditoprj%/entity/Inbox_entity/entityfields/closure_dayspreview/titleProcess.js</titleProcess>
       <displayValueProcess>%aditoprj%/entity/Inbox_entity/entityfields/closure_dayspreview/displayValueProcess.js</displayValueProcess>
     </entityField>
+    <entityActionGroup>
+      <name>deleteActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>deleteInbox</name>
+          <title>Delete Inbox</title>
+          <onActionProcess>%aditoprj%/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/onActionProcess.js</onActionProcess>
+          <isObjectAction v="false" />
+          <selectionType>UNBOUND</selectionType>
+          <iconId>NEON:TRASH</iconId>
+          <titleProcess>%aditoprj%/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/titleProcess.js</titleProcess>
+          <tooltipProcess>%aditoprj%/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/tooltipProcess.js</tooltipProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
       <conditionProcess>%aditoprj%/entity/Inbox_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <onDBDelete>%aditoprj%/entity/Inbox_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
       <alias>Data_alias</alias>
       <recordFieldMappings>
         <dbRecordFieldMapping>
diff --git a/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/onActionProcess.js b/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..870ad8d179c7c96b10b89ffadcdfc571f4010857
--- /dev/null
+++ b/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/onActionProcess.js
@@ -0,0 +1,20 @@
+import("system.neon");
+import("system.translate");
+import("system.question");
+import("system.vars");
+import("system.db");
+import("Sql_lib");
+
+var answer = question.askYesNo(translate.text("Confirmation dialog"), translate.withArguments("Do you really want to delete \"%0\"? If tickets still use this inbox, this might cause problems.", [vars.get("$field.INBOXNAME")]), false);
+
+if (answer == true){
+       if (vars.get("$field.INBOXID"))
+    {
+        newWhereIfSet("INBOX.INBOXID", "$field.INBOXID").deleteData(true, "INBOX");
+        newWhereIfSet("INBOX_EMPLOYEEGROUP_RELATION.INBOX_ID", "$field.INBOXID").deleteData(true, "INBOX_EMPLOYEEGROUP_RELATION");
+        newWhereIfSet("INBOXFILTERGROUP_RELATION.INBOX_ID","$field.INBOXID").deleteData(true, "INBOXFILTERGROUP_RELATION");
+
+        question.showMessage(translate.withArguments("Inbox \"%0\" has been deleted.", [vars.get("$field.INBOXNAME")]), question.INFORMATION, translate.text("Successful"));
+        neon.refresh();
+    }
+}
\ No newline at end of file
diff --git a/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/titleProcess.js b/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4c735eec0a19f45f6fb85acf727bdc1167ac935e
--- /dev/null
+++ b/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.result");
+
+
+result.string(translate.text("Delete Inbox"));
\ No newline at end of file
diff --git a/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/tooltipProcess.js b/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/tooltipProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..aab4212fb6f2124ccf2bd5c28a309bc54d09ec4b
--- /dev/null
+++ b/entity/Inbox_entity/entityfields/deleteactiongroup/children/deleteinbox/tooltipProcess.js
@@ -0,0 +1,4 @@
+import("system.translate");
+import("system.result");
+
+result.string(translate.text("Remove Inbox and it's occurance in Tickets."));
\ No newline at end of file
diff --git a/entity/Inbox_entity/entityfields/emailaddress/onValidation.js b/entity/Inbox_entity/entityfields/emailaddress/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..507d9d8532a1cbac486f4f2b758dcc2ccce54883
--- /dev/null
+++ b/entity/Inbox_entity/entityfields/emailaddress/onValidation.js
@@ -0,0 +1,37 @@
+import("KeywordRegistry_basic");
+import("Communication_lib");
+import("Keyword_lib");
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var sql = new SqlBuilder()
+                        .selectCount("EMAIL_ADDRESS")
+                        .from("INBOX")
+                        .where("INBOX.EMAIL_ADDRESS", vars.get("$field.EMAILADDRESS"))
+                        .andIfSet("INBOX.INBOXID", vars.get("$field.INBOXID"),SqlBuilder.NOT_EQUAL())
+                        .cell();
+if (sql > 0)
+{
+    result.string(translate.text("Email address has to be unique") + ".");
+}
+
+var commMedium = "COMMEMAIL";
+
+var keywordAttributes = KeywordUtils.getAttributeRelationsByKey(commMedium, $KeywordRegistry.communicationMedium());
+var commCategory = keywordAttributes.contentType || "TEXT";
+
+var fn = CommValidationUtil.makeValidationFn(commCategory);
+if (fn != null)
+{
+    var commAddr = vars.get("$local.value");
+    var additional = CommValidationUtil.getExtensionsBlueprint();
+
+    var res = fn.call(null, commAddr, additional);
+    if (res != null)
+    {
+        result.string(res);
+    }
+}
\ No newline at end of file
diff --git a/entity/Inbox_entity/entityfields/inboxname/onValidation.js b/entity/Inbox_entity/entityfields/inboxname/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..473fa0fa759bda8d0267ec9390156f30f0f688ce
--- /dev/null
+++ b/entity/Inbox_entity/entityfields/inboxname/onValidation.js
@@ -0,0 +1,17 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var sql = new SqlBuilder()
+                        .selectCount("NAME")
+                        .from("INBOX")
+                        .where("INBOX.NAME", vars.get("$field.INBOXNAME"))
+                        .andIfSet("INBOX.INBOXID", vars.get("$field.INBOXID"),SqlBuilder.NOT_EQUAL())
+                        .cell();
+                        
+if (sql > 0)
+{
+    result.string(translate.text("Name has to be unique") + ".");
+}
\ No newline at end of file
diff --git a/entity/Inbox_entity/recordcontainers/db/onDBDelete.js b/entity/Inbox_entity/recordcontainers/db/onDBDelete.js
deleted file mode 100644
index 822cd6d44276a07416ff880be0be41a469ec0100..0000000000000000000000000000000000000000
--- a/entity/Inbox_entity/recordcontainers/db/onDBDelete.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("Sql_lib");
-import("system.vars");
-import("system.db");
-
-let inboxID = vars.getString("$field.INBOXID");
-if(inboxID)
-{
-    newWhereIfSet("INBOX_EMPLOYEEGROUP_RELATION.INBOX_ID", inboxID).deleteData();
-    newWhereIfSet("INBOXFIITERGROUP_RELATION.INBOX_ID",inboxID).deleteData();
-}
\ No newline at end of file
diff --git a/entity/Letter_entity/Letter_entity.aod b/entity/Letter_entity/Letter_entity.aod
index ca8ce950d521606798a60856041330c7d396a368..b928cf5d32e9ff7583f67b026d9eec857d701b2e 100644
--- a/entity/Letter_entity/Letter_entity.aod
+++ b/entity/Letter_entity/Letter_entity.aod
@@ -40,6 +40,7 @@
         <entityParameter>
           <name>IncludeDocumentTemplateIds_param</name>
           <valueProcess>%aditoprj%/entity/Letter_entity/entityfields/documenttemplates/children/includedocumenttemplateids_param/valueProcess.js</valueProcess>
+          <title></title>
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/Letter_entity/entityfields/documenttemplates/children/comingfrom_param/valueProcess.js b/entity/Letter_entity/entityfields/documenttemplates/children/comingfrom_param/valueProcess.js
index 3e13e00bc051c6f70f830b1c02ab242268887787..489ff072d50288d03c732806a74e476c8eb99807 100644
--- a/entity/Letter_entity/entityfields/documenttemplates/children/comingfrom_param/valueProcess.js
+++ b/entity/Letter_entity/entityfields/documenttemplates/children/comingfrom_param/valueProcess.js
@@ -1,9 +1,4 @@
 import("system.vars");
 import("system.result");
 
-var actionName = vars.get("$param.ActionName_param")
-
-if(actionName != "ServiceLetter")
-{
-    result.string(vars.get("$field.comingfrom"));
-}
\ No newline at end of file
+result.string(vars.get("$field.comingfrom"));
\ No newline at end of file
diff --git a/entity/Letter_entity/entityfields/documenttemplates/children/documenttemplatetype_param/valueProcess.js b/entity/Letter_entity/entityfields/documenttemplates/children/documenttemplatetype_param/valueProcess.js
index 2db34ec5ae810d121fdab2280e91c78d72f5d1a2..11178b6b4c4b3854d383a9067877120aed771ccd 100644
--- a/entity/Letter_entity/entityfields/documenttemplates/children/documenttemplatetype_param/valueProcess.js
+++ b/entity/Letter_entity/entityfields/documenttemplates/children/documenttemplatetype_param/valueProcess.js
@@ -1,10 +1,4 @@
-import("system.vars");
 import("KeywordRegistry_basic");
 import("system.result");
 
-var actionName = vars.get("$param.ActionName_param")
-
-if (actionName != "ServiceLetter")
-{
-    result.string($KeywordRegistry.documentTemplateType$letter());
-}
\ No newline at end of file
+result.string($KeywordRegistry.documentTemplateType$letter());
diff --git a/entity/Letter_entity/entityfields/documenttemplates/children/includedocumenttemplateids_param/valueProcess.js b/entity/Letter_entity/entityfields/documenttemplates/children/includedocumenttemplateids_param/valueProcess.js
index 87c558625abc2db1e8a706eecbeadc6335f2ccd2..2411e8b9b345db0ed5e6aa25842d28daec667994 100644
--- a/entity/Letter_entity/entityfields/documenttemplates/children/includedocumenttemplateids_param/valueProcess.js
+++ b/entity/Letter_entity/entityfields/documenttemplates/children/includedocumenttemplateids_param/valueProcess.js
@@ -11,10 +11,14 @@ if (actionName == "ServiceLetter")
    documenttemplates = newSelect("DOCUMENTTEMPLATEID")
         .from("DOCUMENTTEMPLATE")
         .leftJoin("DOCUMENTTEMPLATE_TICKETCATEGORY", "DOCUMENTTEMPLATE_ID = DOCUMENTTEMPLATEID")
-        .whereIfSet("DOCUMENTTEMPLATE.KIND", $KeywordRegistry.documentTemplateType$letter())
-        .andIfSet("DOCUMENTTEMPLATE_TICKETCATEGORY.CLASSIFICATION", "$param.TicketCategory_param")
-        .or("DOCUMENTTEMPLATE.CLASSIFICATION", 10)
+        .where("DOCUMENTTEMPLATE.KIND", $KeywordRegistry.documentTemplateType$letter())
+        .and(newWhere()
+        .or("DOCUMENTTEMPLATE.CLASSIFICATION", $KeywordRegistry.documentTemplateTypeCategory$singleall())
+        .or("DOCUMENTTEMPLATE.CLASSIFICATION", $KeywordRegistry.documentTemplateTypeCategory$singleinternal())
+        .or("DOCUMENTTEMPLATE.CLASSIFICATION", $KeywordRegistry.documentTemplateTypeCategory$singleexternal()))
+        .and(newWhere()
         .or("DOCUMENTTEMPLATE.ALL_TICKET_CATEGORIES", 1)
+        .or("DOCUMENTTEMPLATE_TICKETCATEGORY.CLASSIFICATION", "$param.TicketCategory_param"))
         .arrayColumn();
         result.string(JSON.stringify(documenttemplates));
 }
diff --git a/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod b/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod
deleted file mode 100644
index 6a6afa9c7844c229d0522147b4205702dbc1978d..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.22" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.22">
-  <name>MSTTeamLink_entity</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <documentation>%aditoprj%/entity/MSTTeamLink_entity/documentation.adoc</documentation>
-  <siblings>
-    <element>Salesproject_entity</element>
-    <element>Member_entity</element>
-  </siblings>
-  <afterUiInit>%aditoprj%/entity/MSTTeamLink_entity/afterUiInit.js</afterUiInit>
-  <recordContainer>db</recordContainer>
-  <entityFields>
-    <entityProvider>
-      <name>#PROVIDER</name>
-    </entityProvider>
-    <entityProvider>
-      <name>#PROVIDER_AGGREGATES</name>
-      <useAggregates v="true" />
-    </entityProvider>
-    <entityField>
-      <name>MST_TEAMLINKID</name>
-    </entityField>
-    <entityField>
-      <name>MST_TEAM_ID</name>
-      <title>Team</title>
-      <mandatory v="true" />
-      <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>OBJECT_ROWID</name>
-      <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>OBJECT_TYPE</name>
-      <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js</valueProcess>
-    </entityField>
-    <entityParameter>
-      <name>ObjectRowId_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityParameter>
-      <name>ObjectType_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityConsumer>
-      <name>Teams</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>MSTTeam_entity</entityName>
-        <fieldName>TeamsByIdAndName</fieldName>
-      </dependency>
-    </entityConsumer>
-    <entityField>
-      <name>TEAMNAME</name>
-      <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>TEAM_ID_AND_NAME</name>
-      <documentation>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc</documentation>
-      <title>Team</title>
-      <consumer>Teams</consumer>
-      <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js</displayValueProcess>
-    </entityField>
-  </entityFields>
-  <recordContainers>
-    <dbRecordContainer>
-      <name>db</name>
-      <fromClauseProcess>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
-      <conditionProcess>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <onDBInsert>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
-      <onDBUpdate>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
-      <alias>Data_alias</alias>
-      <recordFieldMappings>
-        <dbRecordFieldMapping>
-          <name>MST_TEAMLINKID.value</name>
-          <recordfield>MST_TEAMLINK.MST_TEAMLINKID</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>MST_TEAM_ID.value</name>
-          <recordfield>MST_TEAMLINK.MST_TEAM_ID</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>OBJECT_ROWID.value</name>
-          <recordfield>MST_TEAMLINK.OBJECT_ROWID</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>OBJECT_TYPE.value</name>
-          <recordfield>MST_TEAMLINK.OBJECT_TYPE</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>TEAMNAME.value</name>
-          <recordfield>MST_TEAM.TEAMNAME</recordfield>
-        </dbRecordFieldMapping>
-      </recordFieldMappings>
-      <linkInformation>
-        <linkInformation>
-          <name>178230f3-4ee4-4ec0-a7f6-4f4ddddbbb22</name>
-          <tableName>MST_TEAMLINK</tableName>
-          <primaryKey>MST_TEAMLINKID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-        <linkInformation>
-          <name>53378325-f195-4eb3-9e22-68fd769eef03</name>
-          <tableName>MST_TEAM</tableName>
-          <primaryKey>MST_TEAMID</primaryKey>
-          <isUIDTable v="false" />
-          <readonly v="true" />
-        </linkInformation>
-      </linkInformation>
-    </dbRecordContainer>
-  </recordContainers>
-</entity>
diff --git a/entity/MSTTeamLink_entity/afterUiInit.js b/entity/MSTTeamLink_entity/afterUiInit.js
deleted file mode 100644
index bac4e960d87d6ae60ae5e5d5f2fc506fdd3d191b..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/afterUiInit.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import("system.vars");
-import("system.neon");
-import("system.entities");
-
-//reload the teams once, because the cache might not be up-to-date
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-{
-    entities.invalidateCache("MSTTeam_entity", "jdito");
-    entities.getRows(entities.createConfigForLoadingConsumerRows()
-        .consumer("Teams")
-        .fields(["UID", "TEAMNAME", "TEAMID_AND_NAME", "ISARCHIVED", "DESCRIPTION"])
-    );
-}
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/documentation.adoc b/entity/MSTTeamLink_entity/documentation.adoc
deleted file mode 100644
index 55fcd72aba98ec0011c6562a4a81014327899e72..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/documentation.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-= MSTTeamLink_entity
-
-This entity represents a relation between a MST team and an object (e. g. a Sales Project).
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js
deleted file mode 100644
index 8b66b4de6f181006ed9464bc5c730db279e5af42..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-import("Util_lib");
-
-var teamIdAndName = Utils.parseJSON(vars.get("$field.TEAM_ID_AND_NAME"));
-if (teamIdAndName && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
-    result.string(teamIdAndName[0]);
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js
deleted file mode 100644
index 53123b405da6e47e653fc29b6ea5b1d7ab0b7aba..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.neon");
-import("system.vars");
-import("system.result");
-
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.get("$param.ObjectRowId_param"));
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js
deleted file mode 100644
index 7f34d7fdb9049c4c3427fb40b45a320b1585d5b0..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.neon");
-import("system.vars");
-import("system.result");
-
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.get("$param.ObjectType_param"));
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc
deleted file mode 100644
index 7ef07b42d0e7f4ddef718cf1cf07362e36866b23..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc
+++ /dev/null
@@ -1,7 +0,0 @@
-= TEAM_ID_AND_NAME
-
-This field is used for selecting a MST team for the teamLink. Because we need both the id and the name from the team, it can't be selected
-directly in the MST_TEAM_ID field, which contains only the id (and fetching the name afterwards using the id would be rather slow).
-
-In new- or edit-mode, the two fields MST_TEAM_ID and TEAMNAME pull their values from this field. In view-mode, this field gets the value
-from MST_TEAM_ID and TEAMNAME, because only these two fields are connected to the recordContainer.
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js
deleted file mode 100644
index 94638c9fe9031b798104127c1426fc2d471dca36..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-
-//in view-mode, load the values from the fields that are connected to the recordcontainer
-if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$sys.recordstate") != neon.OPERATINGSTATE_EDIT)
-    result.string(JSON.stringify([vars.get("$field.MST_TEAM_ID"), vars.get("$field.TEAMNAME")]));
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js
deleted file mode 100644
index d3f581dba2d01626cb9050634dac3abba981f6ab..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-import("Util_lib");
-
-var teamIdAndName = Utils.parseJSON(vars.get("$field.TEAM_ID_AND_NAME"));
-if (teamIdAndName && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT))
-    result.string(teamIdAndName[1]);
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js b/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js
deleted file mode 100644
index ad0a18104e1291790bd33463603537bce7c5914b..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("Sql_lib");
-
-var condition = newWhereIfSet("MST_TEAMLINK.OBJECT_ROWID", "$param.ObjectRowId_param")
-    .andIfSet("MST_TEAMLINK.OBJECT_TYPE", "$param.ObjectType_param");
-
-result.string(condition.toString(SqlBuilder.NORESULT_CONDITION()));
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js b/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js
deleted file mode 100644
index 4457ba9b19fa0da6c133ce39565cb83164888cfb..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.string("MST_TEAMLINK left join MST_TEAM on MST_TEAMLINK.MST_TEAM_ID = MST_TEAM.MST_TEAMID");
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js b/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js
deleted file mode 100644
index bf45fb336010b2db0a4ddc1e03a35ce009fb2c15..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import("system.vars");
-import("MSTeams_lib");
-
-var teamLinkId = vars.get("$local.uid");
-var rowData = vars.get("$local.rowdata");
-//if the linked context is configured to have just one teamLink but the object already has a teamLink, the old teamLink will be deleted
-MSTeamsUtils.purgeCorruptTeamLinks(rowData["MST_TEAMLINK.OBJECT_ROWID"], rowData["MST_TEAMLINK.OBJECT_TYPE"], teamLinkId);
-
-MSTeamsUtils.insertTeamIfMissing({
-    teamId: rowData["MST_TEAMLINK.MST_TEAM_ID"],
-    teamName: rowData["MST_TEAM.TEAMNAME"]
-});
\ No newline at end of file
diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js b/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js
deleted file mode 100644
index 61769345ec3f8bb71aad2e776267b4f5f009f185..0000000000000000000000000000000000000000
--- a/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.vars");
-import("MSTeams_lib");
-
-var rowData = vars.get("$local.rowdata");
-
-MSTeamsUtils.insertTeamIfMissing({
-    teamId: rowData["MST_TEAMLINK.MST_TEAM_ID"],
-    teamName: rowData["MST_TEAM.TEAMNAME"]
-});
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod
index 67663ffde3a52b12cb6949df2a2f618cebd4120e..d173fc4f9f989d1d9de5f9046dca945cabe1794c 100644
--- a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod
+++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod
@@ -12,47 +12,16 @@
     </entityProvider>
     <entityField>
       <name>CONTACT_ID</name>
-      <title>Members</title>
-      <consumer>ProjectMembers</consumer>
+      <title>Contact</title>
+      <consumer>Persons</consumer>
       <linkedContextProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess>
-      <mandatory v="true" />
+      <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/mandatoryProcess.js</mandatoryProcess>
       <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js</stateProcess>
       <displayValueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>UID</name>
     </entityField>
-    <entityParameter>
-      <name>UpnsOfMembers_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityParameter>
-      <name>MailsOfExtern_param</name>
-      <expose v="true" />
-    </entityParameter>
-    <entityConsumer>
-      <name>ProjectMembers</name>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Member_entity</entityName>
-        <fieldName>TeamMemberProvider</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ObjectRowId_param</name>
-          <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-        <entityParameter>
-          <name>ObjectType_param</name>
-          <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityField>
-      <name>ISEXTERN</name>
-      <state>INVISIBLE</state>
-      <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js</valueProcess>
-    </entityField>
     <entityField>
       <name>MEMBERNAME</name>
     </entityField>
@@ -76,37 +45,31 @@
       <name>ROLE</name>
       <title>Role</title>
       <mandatory v="true" />
-      <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js</mandatoryProcess>
       <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js</dropDownProcess>
-      <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/valueProcess.js</valueProcess>
     </entityField>
-    <entityField>
-      <name>INVITE</name>
-      <title>Invitation</title>
-      <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js</mandatoryProcess>
-      <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js</dropDownProcess>
-      <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js</stateProcess>
-      <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/valueProcess.js</valueProcess>
-    </entityField>
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
-    <entityField>
-      <name>AZUREID</name>
-      <state>INVISIBLE</state>
-      <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>AZUREUPN</name>
-      <state>INVISIBLE</state>
-      <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>AZURE_DATA</name>
-      <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js</valueProcess>
-    </entityField>
+    <entityParameter>
+      <name>ContactIds_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>Persons</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Person_entity</entityName>
+        <fieldName>Contacts</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>OnlyShowContactIds_param</name>
+          <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/persons/children/onlyshowcontactids_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
@@ -127,18 +90,9 @@
         <jDitoRecordFieldMapping>
           <name>ROLE.value</name>
         </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>ROLE.displayValue</name>
-        </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>CONTACT_ID.value</name>
         </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>CONTACT_ID.displayValue</name>
-        </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>ISEXTERN.value</name>
-        </jDitoRecordFieldMapping>
       </recordFieldMappings>
     </jDitoRecordContainer>
   </recordContainers>
diff --git a/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js
deleted file mode 100644
index 2df756b62a28fb058c3cec8a2df5de3090bf9538..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.tools");
-import("system.vars");
-import("Employee_lib");
-
-var contactId = vars.get("$field.CONTACT_ID");
-var user = EmployeeUtils.getUserByContactId(contactId);
-var azureId = user ? user[tools.PARAMS][tools.TEAMS_AZUREID] : "";
-var azureUpn = user ? user[tools.PARAMS][tools.TEAMS_AZUREUPN] : "";
-
-var azureData = {
-    azureId: azureId,
-    azureUpn: azureUpn
-};
-result.string(JSON.stringify(azureData));
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js
deleted file mode 100644
index 7744184c730b891e88e88ada811a017db109b03d..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("Util_lib");
-import("system.vars");
-
-var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA"));
-result.string(azureData ? azureData.azureId : "");
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js
deleted file mode 100644
index 554d4e727325955acb211567d4ea1878a534128c..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("Util_lib");
-import("system.vars");
-
-var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA"));
-result.string(azureData ? azureData.azureUpn : "");
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/contact_id/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/contact_id/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a8455294663ed399493e79ad2f1788b0e71ff96d
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/contact_id/mandatoryProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+
+// if membername is present the contact_id is invisible (and thus not mandatory)
+// because we cannot resolve an ms-teams user into an adito contact
+result.string(!vars.get("$field.MEMBERNAME"));
diff --git a/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js
index 53c48b1aa60c14977805717d383efb2668f5bd64..43cc1f51d3ba4e9b4b0becddb76cbfec0e93593a 100644
--- a/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js
+++ b/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js
@@ -2,4 +2,10 @@ import("system.result");
 import("system.neon");
 import("system.vars");
 
-result.string(vars.get("$field.MEMBERNAME") ? neon.COMPONENTSTATE_READONLY : neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
+// if a mebername exists the user cant be edited because its allready synced with teams´
+var res = neon.COMPONENTSTATE_EDITABLE;
+if(vars.get("$field.MEMBERNAME"))
+{
+    res = neon.COMPONENTSTATE_READONLY;
+}
+result.string(res);
diff --git a/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js
deleted file mode 100644
index 0a4ec38e3c77cac49e9a94b463d4c483a63715a7..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.translate");
-
-result.object([
-    ["true", translate.text("Invite")],
-    ["false", translate.text("Don't invite")]
-]);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js
deleted file mode 100644
index 488ee5dc7e0ad5e6122271731fa275245d7057e6..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("Util_lib");
-import("system.vars");
-import("system.result");
-
-result.string(Utils.toBoolean(vars.get("$field.ISEXTERN")));
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js
deleted file mode 100644
index 37feecaa37dcd3ffed35221ff2e9157477fa6f4e..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("system.vars");
-import("system.neon");
-
-result.string(vars.get("$field.MEMBERNAME") || vars.get("$field.ISEXTERN") != "true" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/invite/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/valueProcess.js
deleted file mode 100644
index 516e09d60f21ed6d91e8f27b41593afec8f686ff..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/invite/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.neon");
-import("system.vars");
-import("system.result");
-
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
-    result.string(false);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js
deleted file mode 100644
index c2bd7034a52ed887060a47de48959ab0db7792f5..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import("system.result");
-import("Util_lib");
-import("system.vars");
-
-var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA"));
-result.string(!azureData || !(azureData.azureId || azureData.azureUpn));
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/persons/children/onlyshowcontactids_param/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/persons/children/onlyshowcontactids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b806067ae4c101ba28ef6c35e2196567310bbc89
--- /dev/null
+++ b/entity/MSTTeamMember_entity/entityfields/persons/children/onlyshowcontactids_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$param.ContactIds_param"));
diff --git a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js
deleted file mode 100644
index f21aa5c2a735e552ff099c71fed0cd5fd88cbca1..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import("system.vars");
-import("system.result");
-import("Sql_lib");
-
-var rowId = vars.get("$param.ObjectRowId_param");
-if (!rowId)
-{
-    rowId = newSelect("OBJECT_ROWID")
-        .from("MST_TEAMLINK")
-        .where("MST_TEAMLINK.MST_TEAM_ID", "$param.MSTTeamId_param")
-        .cell();
-}
-result.string(rowId);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js
deleted file mode 100644
index 95c8514f3bbc2804547c47b50ec222c09aec3f59..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$param.ObjectType_param"));
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js
index 97558334115b6199684018810a38d54788a0e56b..6287caf1c8e3d9fd3cba24a9ec3edd641508a3a6 100644
--- a/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js
+++ b/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js
@@ -1,7 +1,18 @@
 import("system.result");
+import("system.vars");
 import("system.translate");
+import("MSTeams_lib");
 
-result.object([
-    ["owner", translate.text("Owner")],
-    ["member", translate.text("Member")]
-]);
\ No newline at end of file
+var roles = [];
+var contactId = vars.get("$field.CONTACT_ID");
+var azureId = contactId && MSTeamsUtils.getAzureIdByContactId(contactId);
+if(azureId)
+{
+    roles.push([$MSTeamsRoles.Owner(), translate.text("Owner")]);
+    roles.push([$MSTeamsRoles.Member(), translate.text("Member")]);
+}
+else if(contactId || vars.get("$field.MEMBERNAME"))
+{
+    roles.push([$MSTeamsRoles.Guest(), translate.text("Guest")]);
+}
+result.object(roles);
diff --git a/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js
deleted file mode 100644
index 79bef7b2ca07a9f35c95021eedcee8f89d68f873..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("Util_lib");
-import("system.vars");
-import("system.result");
-
-result.string(!Utils.toBoolean(vars.get("$field.ISEXTERN")));
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js
deleted file mode 100644
index f76be28d47e7adee58f41d88a7a7993bda575de0..0000000000000000000000000000000000000000
--- a/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import("system.result");
-import("system.vars");
-import("system.neon");
-import("system.logging")
-
-var state = neon.COMPONENTSTATE_EDITABLE;
-if (vars.get("$field.ISEXTERN") == "true")
-{
-    if (!vars.get("$field.MEMBERNAME"))
-        state = neon.COMPONENTSTATE_INVISIBLE;
-    else
-        state = neon.COMPONENTSTATE_READONLY;
-}
-
-result.string(state);
\ No newline at end of file
diff --git a/entity/MSTTeamMember_entity/entityfields/role/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/role/valueProcess.js
index d79978a6cbc07884ec953adb3be3de3d78997b78..40b6defffba382a293ac62afd7e17185a94836a3 100644
--- a/entity/MSTTeamMember_entity/entityfields/role/valueProcess.js
+++ b/entity/MSTTeamMember_entity/entityfields/role/valueProcess.js
@@ -1,6 +1,31 @@
+import("system.result");
 import("system.neon");
 import("system.vars");
-import("system.result");
+import("Employee_lib");
+import("MSTeams_lib");
+
+// if this is the current logged in user
+// the role will preset to owner
+// otherwise the first option from the dropdown is selected
+
+var value = vars.get("$this.value");
+var dropDown = vars.get("$property.ROLE.dropDown");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
-    result.string("member");
\ No newline at end of file
+if(!(value in dropDown))
+{
+    var emplContactId = EmployeeUtils.getCurrentContactId();
+    if(vars.get("$field.CONTACT_ID") == emplContactId && $MSTeamsRoles.Owner() in dropDown)
+    {
+        result.string($MSTeamsRoles.Owner());
+    }
+    else
+    {
+        var values = Object.keys(dropDown);
+        var res = null;
+        if(values.length)
+        {
+            res = values[values.length - 1];
+        }
+        result.string(res);
+    }
+}
diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js
index 4f615a675a9df54c018305fd39293403cd7f852f..19693ce67cef45da1d518ef8a29df9ee9c010a00 100644
--- a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js
@@ -1,44 +1,29 @@
-import("system.translate");
-import("system.teams");
 import("system.result");
+import("system.neon");
 import("system.vars");
+import("system.teams");
+import("system.translate");
+import("Sql_lib");
 import("MSTeams_lib");
 
+// get the team members using the mst api
 var teamId = vars.get("$param.MSTTeamId_param");
 var allMembers = teamId ? teams.getAllMembers(teamId) : {};
-var impersoAzureId = MSTeamsUtils.getImpersoAzureId();
-if (impersoAzureId in allMembers) //don't display the imperso user
-    delete allMembers[impersoAzureId];
-    
-var memberIds = vars.get("$local.idvalues") || Object.keys(allMembers);
-var owners = teamId ? teams.getAllOwners(teamId) : {};
-var memberContactIds = MSTeamsUtils.getContactIdsByAzureIds(memberIds);
-var memberArray = [];
+var allOwners = teamId ? teams.getAllOwners(teamId) : {};
+Object.assign(allMembers, allOwners);
+
+// don't display the impersonation user
+var impersoId = MSTeamsUtils.getImpersoAzureId();
+delete allMembers[impersoId];
+delete allOwners[impersoId];
 
-memberArray = memberIds.map(function (memberId) 
-{
-    var role = "guest";
-    var roleName = translate.text("Guest");
-    if (memberId in owners)
-    {
-        role = "owner";
-        roleName = translate.text("Owner");
-    }
-    else if (memberId in memberContactIds)
-    {
-        role = "member";
-        roleName = translate.text("Member");
-    }
-    
-    return [
-        memberId, 
-        allMembers[memberId] || "", 
-        role,
-        roleName,
-        memberContactIds[memberId] || "",
-        allMembers[memberId] || "",
-        !(memberId in memberContactIds)
-    ];
-});   
+// return the requested members
+var memberIds = vars.get("$local.idvalues") || Object.keys(allMembers);
+var azureContactMap = MSTeamsUtils.getContactIdsByAzureIds(memberIds);
 
-result.object(memberArray);
\ No newline at end of file
+var data = memberIds.map(function(memberId) {
+    var role = memberId in allOwners ? $MSTeamsRoles.Owner() :
+        (memberId in azureContactMap ? $MSTeamsRoles.Member() : $MSTeamsRoles.Guest());
+    return [memberId, allMembers[memberId], role, azureContactMap[memberId]];
+});
+result.object(data);
diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod
index 34e9af2d1ae02853be662ff4761e782cd85cc2e2..84d08f4679b9a707f0891fe50051009df1e2ed1a 100644
--- a/entity/MSTTeam_entity/MSTTeam_entity.aod
+++ b/entity/MSTTeam_entity/MSTTeam_entity.aod
@@ -3,10 +3,12 @@
   <name>MSTTeam_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/MSTTeam_entity/documentation.adoc</documentation>
-  <grantUpdateProcess>%aditoprj%/entity/MSTTeam_entity/grantUpdateProcess.js</grantUpdateProcess>
-  <grantDeleteProcess>%aditoprj%/entity/MSTTeam_entity/grantDeleteProcess.js</grantDeleteProcess>
+  <siblings>
+    <element>AttributeRelation_entity</element>
+  </siblings>
   <contentTitleProcess>%aditoprj%/entity/MSTTeam_entity/contentTitleProcess.js</contentTitleProcess>
   <afterUiInit>%aditoprj%/entity/MSTTeam_entity/afterUiInit.js</afterUiInit>
+  <onValidation>%aditoprj%/entity/MSTTeam_entity/onValidation.js</onValidation>
   <recordContainer>jdito</recordContainer>
   <entityFields>
     <entityProvider>
@@ -40,7 +42,6 @@
     <entityConsumer>
       <name>TeamMembers</name>
       <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js</stateProcess>
-      <onValidation>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js</onValidation>
       <dependency>
         <name>dependency</name>
         <entityName>MSTTeamMember_entity</entityName>
@@ -59,15 +60,16 @@
           <name>ObjectType_param</name>
           <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>ContactIds_param</name>
+          <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/contactids_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
-    <entityField>
-      <name>TEAMID_AND_NAME</name>
-    </entityField>
     <entityField>
       <name>ISARCHIVED</name>
       <title>Archived</title>
-      <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js</dropDownProcess>
+      <contentType>BOOLEAN</contentType>
     </entityField>
     <entityParameter>
       <name>ObjectRowId_param</name>
@@ -96,24 +98,11 @@
       <useAggregates v="true" />
     </entityProvider>
     <entityParameter>
-      <name>SalesprojectCode_param</name>
+      <name>IncludeArchived_param</name>
       <expose v="true" />
-      <description>PARAMETER</description>
     </entityParameter>
-    <entityProvider>
-      <name>TeamsByIdAndName</name>
-      <lookupIdfield>TEAMID_AND_NAME</lookupIdfield>
-      <documentation>%aditoprj%/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc</documentation>
-      <children>
-        <entityParameter>
-          <name>UseCache_param</name>
-          <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js</valueProcess>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityProvider>
     <entityParameter>
-      <name>UseCache_param</name>
+      <name>ContactIds_param</name>
       <expose v="true" />
     </entityParameter>
   </entityFields>
@@ -121,14 +110,10 @@
     <jDitoRecordContainer>
       <name>jdito</name>
       <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
-      <isFilterable v="true" />
-      <isRequireContainerFiltering v="true" />
       <contentProcess>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
       <onInsert>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js</onInsert>
       <onUpdate>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
       <onDelete>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js</onDelete>
-      <cacheType>SESSION</cacheType>
-      <cacheKeyProcess>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js</cacheKeyProcess>
       <recordFieldMappings>
         <jDitoRecordFieldMapping>
           <name>UID.value</name>
@@ -136,12 +121,6 @@
         <jDitoRecordFieldMapping>
           <name>TEAMNAME.value</name>
         </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>TEAMID_AND_NAME.value</name>
-        </jDitoRecordFieldMapping>
-        <jDitoRecordFieldMapping>
-          <name>DESCRIPTION.value</name>
-        </jDitoRecordFieldMapping>
         <jDitoRecordFieldMapping>
           <name>ISARCHIVED.value</name>
         </jDitoRecordFieldMapping>
diff --git a/entity/MSTTeam_entity/entityfields/description/stateProcess.js b/entity/MSTTeam_entity/entityfields/description/stateProcess.js
index 18f779e6910541c7a8e75facfe14a54cfc74458b..ae683c19cc3f28bd0a0bc9c5a43171e1fa2b8b53 100644
--- a/entity/MSTTeam_entity/entityfields/description/stateProcess.js
+++ b/entity/MSTTeam_entity/entityfields/description/stateProcess.js
@@ -2,4 +2,9 @@ import("system.result");
 import("system.vars");
 import("system.neon");
 
-result.string(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
+var res = neon.COMPONENTSTATE_INVISIBLE;
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    res = neon.COMPONENTSTATE_EDITABLE;
+}
+result.string(res);
diff --git a/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js
deleted file mode 100644
index f77d640ef1d32a67d4fd3e8da7bcff5531277f05..0000000000000000000000000000000000000000
--- a/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.translate");
-
-result.object([
-    ["true", translate.text("Yes")],
-    ["false", translate.text("No")]
-]);
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/contactids_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/contactids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b806067ae4c101ba28ef6c35e2196567310bbc89
--- /dev/null
+++ b/entity/MSTTeam_entity/entityfields/teammembers/children/contactids_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$param.ContactIds_param"));
diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js
index 7b7daa293fe35f6acc203b39e6cb67bb7a987151..93a89968b87df6847b87e54835c66b3fa7a2c554 100644
--- a/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js
+++ b/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js
@@ -1,6 +1,11 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
-if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$field.TEAMID_AND_NAME"))
-    result.string(vars.get("$field.UID"));
\ No newline at end of file
+// this process ensures that we dont get the team members
+// of a team with an autogenerated uid (if recordState is NEW)
+var recordState = vars.get("$sys.recordstate");
+if(recordState && recordState != neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$field.UID"));
+}
diff --git a/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js b/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js
deleted file mode 100644
index ab18aabd0ba1fb0f4c2d93a91aa191b29ba2c352..0000000000000000000000000000000000000000
--- a/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import("system.vars");
-import("system.entities");
-import("Entity_lib");
-import("system.result");
-import("system.translate");
-
-//this is a workaround, EntityConsumerRowsHelper.getCurrentConsumerRows should be used here
-var loadRowsConfig = entities.createConfigForLoadingRows()
-    .entity("MSTTeamMember_entity")
-    .provider("MembersOfTeam")
-    .fields(["#UID", "ROLE"])
-    .addParameter("MSTTeamId_param", vars.get("$field.UID"));
-var savedRows = entities.getRows(loadRowsConfig);
-var members = new EntityConsumerRowsHelper(savedRows)
-    .consumer("TeamMembers")
-    .applyConsumerRowChanges()
-    .getRows();
-var hasOwner = members.some(function (member)
-{
-    return member["ROLE"] == "owner";
-});
-if (!hasOwner)
-    result.string(translate.text("The team must have at least one owner"));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js
index 1c53ca6a0df2f0f9fe9edc13efa4226f1b936c5f..9ff54e6419f4cbb51db0d5ce360f5ee2f44fd3b6 100644
--- a/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js
+++ b/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js
@@ -1,6 +1,11 @@
-import("Util_lib");
 import("system.result");
 import("system.vars");
 import("system.neon");
+import("Util_lib");
 
-result.string(Utils.toBoolean(vars.get("$field.ISARCHIVED")) ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
+var res = neon.COMPONENTSTATE_EDITABLE;
+if(Utils.toBoolean(vars.get("$field.ISARCHIVED")))
+{
+    res = neon.COMPONENTSTATE_READONLY;
+}
+result.string(res);
diff --git a/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc b/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc
deleted file mode 100644
index 84522789b1b5dd1e014bd0db3e6c4c7b740f7b3a..0000000000000000000000000000000000000000
--- a/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc
+++ /dev/null
@@ -1,4 +0,0 @@
-= TeamsByIdAndName
-
-The provider uses a JSON containing [teamId, teamName] as the lookupIdField for cases when both values are needed.
-Because the request that loads the MST teams can be slow, the records will be cached if this provider is used.
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/grantDeleteProcess.js b/entity/MSTTeam_entity/grantDeleteProcess.js
deleted file mode 100644
index 3fad7d06d00a3a204f60e7ef811caa4e1fd000c5..0000000000000000000000000000000000000000
--- a/entity/MSTTeam_entity/grantDeleteProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("system.vars");
-import("MSTeams_lib");
-
-result.string(vars.get("$field.TEAMID_AND_NAME") && vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID")));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/grantUpdateProcess.js b/entity/MSTTeam_entity/grantUpdateProcess.js
deleted file mode 100644
index 3fad7d06d00a3a204f60e7ef811caa4e1fd000c5..0000000000000000000000000000000000000000
--- a/entity/MSTTeam_entity/grantUpdateProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("system.vars");
-import("MSTeams_lib");
-
-result.string(vars.get("$field.TEAMID_AND_NAME") && vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID")));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/onValidation.js b/entity/MSTTeam_entity/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..c5160ffaeda2a0aec8ef57d368a8d817ee2dd891
--- /dev/null
+++ b/entity/MSTTeam_entity/onValidation.js
@@ -0,0 +1,33 @@
+import("system.result");
+import("system.vars");
+import("system.translate");
+import("Entity_lib");
+import("MSTeams_lib");
+
+var errors = [];
+var members = EntityConsumerRowsHelper.getCurrentConsumerRows("TeamMembers", ["CONTACT_ID", "ROLE"]);
+
+!members.some(function(member) {
+    return member["ROLE"] == $MSTeamsRoles.Owner();
+}) && errors.push(translate.text("The team must have at least one owner"));
+
+var duplicates = new Set();
+for(var i = 0; i < members.length; i++)
+{
+    var contactId = members[i]["CONTACT_ID"];
+    if(!contactId)
+    {
+        continue;
+    }
+    if(duplicates.has(contactId))
+    {
+        errors.push(translate.text("Found a duplicate member"));
+        break;
+    }
+    duplicates.add(contactId)
+}
+
+if(errors.length)
+{
+    result.string(errors.join("\n"));
+}
diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js b/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js
deleted file mode 100644
index f9c2f6bbd9ddf14c6cd10228138b52546d0184b7..0000000000000000000000000000000000000000
--- a/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Util_lib");
-import("CachedRecordContainer_lib");
-
-if (Utils.toBoolean(vars.get("$param.UseCache_param")))
-    result.string(CachedRecordContainerUtils.getCommonKey("$param.UseCache_param"));
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js
index dccb70e0330c7d584be6a0786ea150e8eb508396..e23d0ced9ce416281ab59d13dc8252927fa6ca97 100644
--- a/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js
@@ -1,65 +1,112 @@
-import("system.teams");
 import("system.result");
 import("system.vars");
-import("JditoFilter_lib");
+import("system.teams");
+import("system.entities");
+import("system.db");
+import("Util_lib");
+import("Sql_lib");
+import("MSTeams_lib");
 
-var lookupFilter = new FilterConditionGroup(vars.get("$local.filter")).getRow("$$$LOOKUPFIELD$$$");
-var searchValue = lookupFilter ? lookupFilter.key : null;
+if(MSTeamsUtils.isTeamsEnabled())
+{
+    var data = newSelect([
+        "MST_TEAM.MST_TEAMID",
+        "MST_TEAM.TEAMNAME",
+        "MST_TEAM.IS_ARCHIVED"
+    ]).from("MST_TEAM").table();
 
-var allTeams = teams.getAllTeams(searchValue || null);
-var teamsArray = [];
+    var idvalues = vars.get("$local.idvalues");
+    if(idvalues)
+    {
+        var iddata = data.filter(function(entry){return idvalues.includes(entry[0])});
+        if(iddata.length < idvalues.length)
+        {
+            iddata = _apiData().filter(function(entry){return idvalues.includes(entry[0])});
+        }
+        result.object(iddata);
+    }
+    else
+    {
+        var apiData = _apiData();
+        if(!vars.get("$param.IncludeArchived_param"))
+        {
+            apiData = apiData.filter(function(entry){return !Utils.toBoolean(entry[2])});
+        }
+        result.object(apiData);
+    }
+}
+else
+{
+    // return nothing if teams is disabled
+    result.object([]);
+}
 
-if (vars.get("$local.idvalues"))
+/**
+ * Fetches all teams from MS-Teams and returns them
+ * in the correct format for the jDito record container.
+ * 
+ * It also caches the teams in the database
+ * to archive fast name resolution.
+ */
+function _apiData()
 {
-    var teamInfoLoader = {
-        normalTeams : allTeams,
-        archivedTeams : null,
-        getTeamInfo : function (pTeamId)
+    // fetch all teams since getAllTeams doesn't include the archived teams
+    // we will also add the archived teams to the result of getAllTeams
+    var allTeams = teams.getAllTeams(null);
+    var archivedTeams = teams.getAllArchivedTeams(null);
+    Object.assign(allTeams, archivedTeams);
+    // set of teams that are already in the db
+    var dbTeams = new Set();
+    
+    // loop through all data in the database fetched previosly
+    // and insert the changes that have to be made to get
+    // the remote data in sync with the local cached teams
+    var mstTeamSyncStmts = [];
+    data.forEach(function(entry) {
+        if(!(entry[0] in allTeams))
         {
-            if (pTeamId in this.normalTeams)
+            // team doesnt exist anymore delete the cached entry
+            mstTeamSyncStmts.push(["MST_TEAM", newWhere("MST_TEAM.MST_TEAMID", entry[0]).toString()]);
+        }
+        else
+        {
+            // team exists, check if any changes where made
+            // and apply those to the cached entries
+            var teamname = allTeams[entry[0]];
+            var isarchived = entry[0] in archivedTeams ? "1" : "0";
+            if(entry[1] != teamname || entry[2] != isarchived)
             {
-                return {
-                    name : this.normalTeams[pTeamId],
-                    isArchived : false
-                };
+                mstTeamSyncStmts.push(["MST_TEAM", [
+                    "TEAMNAME", "IS_ARCHIVED"
+                ], null, [
+                    teamname, isarchived
+                ], newWhere("MST_TEAM.MST_TEAMID", entry[0]).toString()]);
             }
-            
-            if (this.archivedTeams == null)
-                this.archivedTeams = teams.getAllArchivedTeams(null);
-            
-            return {
-                name : this.archivedTeams[pTeamId] || "",
-                isArchived : pTeamId in this.archivedTeams
-            };
+            dbTeams.add(entry[0]);
         }
-    };
+    });
     
-    teamsArray = vars.get("$local.idvalues").map(function (teamId) 
+    // loop trough the remote data that wasnt yet cached in the db
+    // and insert the teams. It also fills the liveData array
+    // will all teams from the api.
+    var liveData = [];
+    Utils.objectEntries(allTeams).forEach(function(team)
     {
-        var teamInfo = teamInfoLoader.getTeamInfo(teamId);
-        var idAndName = JSON.stringify([teamId, teamInfo.name]);
-        return [
-            teamId, 
-            teamInfo.name, 
-            idAndName, 
-            "", 
-            teamInfo.isArchived
-        ];
-    });   
-}
-else
-{
-    for (let teamId in allTeams)
+        var dataEntry = [team[0], team[1], team[0] in archivedTeams ? "1" : "0"];
+        liveData.push(dataEntry);
+        if(dbTeams.has(team[0]))
+        {
+            return;
+        }
+        mstTeamSyncStmts.push(["MST_TEAM", ["MST_TEAMID", "TEAMNAME", "IS_ARCHIVED"], null, dataEntry]);
+    });
+    
+    // if updates to the local cache are needed execute those updates
+    if(mstTeamSyncStmts.length)
     {
-        var idAndName = JSON.stringify([teamId, allTeams[teamId]]);
-        teamsArray.push([
-            teamId, 
-            allTeams[teamId], 
-            idAndName, 
-            "", 
-            false
-        ]);
+        db.execute(mstTeamSyncStmts);
     }
+    
+    // return the up-to-date teams data in jDito recordcontainer format
+    return liveData;
 }
-
-result.object(teamsArray);
\ No newline at end of file
diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js
index 8a1c6e0c83d6d16ef62ed23cb2594be121eb5a0f..7bc41a1a5b9732718aecd06bec2b5f8c4f2ffabf 100644
--- a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js
@@ -1,66 +1,68 @@
-import("Util_lib");
-import("Communication_lib");
-import("Sql_lib");
+import("system.neon");
 import("system.vars");
+import("system.project");
+import("system.entities");
 import("system.teams");
-import("system.tools");
-import("Employee_lib");
+import("Util_lib");
+import("Attribute_lib");
+import("Sql_lib");
+import("AttributeRegistry_basic");
+import("Communication_lib");
 import("MSTeams_lib");
 
-var rowData = vars.get("$local.rowdata");
-var teamName = rowData["TEAMNAME.value"];
-var description = rowData["DESCRIPTION.value"];
-var teamMembers = vars.get("$field.TeamMembers.insertedRows");
-
+// get members
 var ownerIds = [];
 var internalMembers = [];
 var externalMembers = [];
-teamMembers.forEach(function (teamMember)
-{
-    var contactId = teamMember["CONTACT_ID"];
-    var isExtern = Utils.toBoolean(teamMember["ISEXTERN"]);
-    var isInvite = Utils.toBoolean(teamMember["INVITE"]);
-    if (isExtern)
+vars.get("$field.TeamMembers.insertedRows").forEach(function(member) {
+    if(member["ROLE"] == $MSTeamsRoles.Guest())
     {
-        var memberEmail = CommUtil.getStandardMail(contactId);
-        if (memberEmail)
+        var externalMail = CommUtil.getStandardMail(member["CONTACT_ID"]);
+        if(externalMail)
         {
-            externalMembers.push(
-                teams.createExternalUserConfig(memberEmail)
-                    .sendInvitation(isInvite)
-            );
+            var extUser = teams.createExternalUserConfig(externalMail);
+            externalMembers.push(extUser.sendInvitation(true));
         }
-        return;
     }
-    var memberAzureId = teamMember["AZUREID"];
-    var memberUpn = teamMember["AZUREUPN"];
-    var isOwner = teamMember["ROLE"] == "owner";
-    if (!memberAzureId && memberUpn)
-        memberAzureId = teams.getInternalAzureId(memberUpn);
-    if (memberAzureId)
+    else
     {
-        if (isOwner)
-            ownerIds.push(memberAzureId);
+        var azureId = MSTeamsUtils.getAzureIdByContactId(member["CONTACT_ID"]);
+        if(member["ROLE"] == $MSTeamsRoles.Owner())
+        {
+            ownerIds.push(azureId);
+        }
         else
-            internalMembers.push(teams.createInternalUserConfig(memberAzureId));
+        {
+            var user = teams.createInternalUserConfig(azureId);
+            internalMembers.push(user);
+        }
     }
 });
 
-var mailNickName = StringUtils.toLowerCamelCase(teamName);  //mailNickName = teamName in camel case
-mailNickName = mailNickName + vars.get("$param.SalesprojectCode_param");
-
+// create team
+var teamName = vars.get("$field.TEAMNAME");
+var mailNickName = StringUtils.toLowerCamelCase(teamName).replace(/[^\w]/g, "");
 var groupConfig = teams.createGroupConfig(teamName, mailNickName, ownerIds);
-if (description)
-    groupConfig.setDescription(description);
+var description = vars.get("$field.DESCRIPTION");
+description && groupConfig.setDescription(description);
 var teamConfig = teams.createTeamConfig();
-
 var mstTeam = teams.createTeam(groupConfig, teamConfig);
 
-if (internalMembers.length !== 0)
-    teams.addInternalMembers(mstTeam.teamId, internalMembers);
+// add members
+internalMembers.length && teams.addInternalMembers(mstTeam.teamId, internalMembers);
+externalMembers.length && teams.addExternalMembers(mstTeam.teamId, externalMembers);
 
-if (externalMembers.length !== 0)
-    teams.addExternalMembers(mstTeam.teamId, externalMembers);
+// add app
+var appId = project.getInstanceConfigValue("teamsAppId");
+appId && teams.addApp(mstTeam.teamId, appId);
 
-MSTeamsUtils.insertTeamIfMissing(mstTeam);
-MSTeamsUtils.createTeamLink(mstTeam.teamId, vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param"));
\ No newline at end of file
+// database
+new SqlBuilder().insertFields({
+    "MST_TEAMID": mstTeam.teamId,
+    "TEAMNAME": teamName,
+    "IS_ARCHIVED": "0",
+    "GENERAL_CHANNELID": mstTeam.generalChannelId,
+    "WEB_URL": mstTeam.webUrl
+}, "MST_TEAM");
+new AttributeRelationQuery(vars.get("$param.ObjectRowId_param"), $AttributeRegistry.mstTeam(),
+    vars.get("$param.ObjectType_param")).insertAttribute(mstTeam.teamId, true);
diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js
index 54e7ab9ab6b4e76d9a767db9d8314b6cbb3d2dc5..8407325255bd6d27a74d45019763120ffaf1feb3 100644
--- a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js
@@ -1,77 +1,73 @@
-import("Communication_lib");
-import("Sql_lib");
+import("system.neon");
 import("system.vars");
 import("system.teams");
-import("system.tools");
-import("Employee_lib");
+import("Util_lib");
+import("Communication_lib");
+import("MSTeams_lib");
+
+var teamId = vars.get("$field.UID");
 
-var rowData = vars.get("$local.rowdata");
-var teamId = rowData["UID.value"];
-var teamName = rowData["TEAMNAME.value"];
-var description = rowData["DESCRIPTION.value"];
-var insertedTeamMembers = vars.get("$field.TeamMembers.insertedRows");
-var changedTeamMembers = vars.get("$field.TeamMembers.changedRows");
-var deletedTeamMembers = vars.get("$field.TeamMembers.deletedRows");
+var addInternalMembers = [];
+var addExternalMembers = [];
+var removeInternalMembers = [];
+var removeExternalMembers = [];
 
-var internalMembers = [];
-var externalMembers = [];
-insertedTeamMembers.forEach(function (teamMember)
+var insertedMembers = vars.get("$field.TeamMembers.insertedRows");
+var changedMembers = vars.get("$field.TeamMembers.changedRows");
+var deletedMembers = vars.get("$field.TeamMembers.deletedRows");
+
+var insertedContactIds = insertedMembers.map(function(member){return member["CONTACT_ID"]});
+deletedMembers.forEach(function(member, idx)
 {
-    var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]);
-    if (!memberUser)
+    var insertedContactIdsIndex = insertedContactIds.indexOf(member["CONTACT_ID"])
+    if(insertedContactIdsIndex >= 0)
     {
-        var memberEmail = CommUtil.getStandardMail(teamMember["CONTACT_ID"]);
-        if (memberEmail)
-        {
-            externalMembers.push(
-                teams.createExternalUserConfig(memberEmail)
-                    .sendInvitation(teamMember["INVITE"] == "true")
-            );
-        }
-        return;
+        insertedMembers[insertedContactIdsIndex]["ROLE"] != deletedMembers[idx]["ROLE"]
+            && changedMembers.push(insertedMembers[insertedContactIdsIndex]);
+        insertedMembers.splice(insertedContactIdsIndex, 1);
+        deletedMembers.splice(idx, 1);
     }
-    var internalUserConfigToAdd = _getTeamsInternalUserConfig(memberUser, teamMember["ROLE"] == "owner");
-    if (internalUserConfigToAdd)
-        internalMembers.push(internalUserConfigToAdd);
 });
 
-if (internalMembers.length !== 0)
-    teams.addInternalMembers(teamId, internalMembers);
-
-if (externalMembers.length !== 0)
-    teams.addExternalMembers(teamId, externalMembers);
-
-changedTeamMembers.forEach(function (teamMember)
-{
-    var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]);
-    if (!memberUser)
-        return;
-    
-    var internalUserConfigToChange = _getTeamsInternalUserConfig(memberUser, teamMember["ROLE"] == "owner");
-    if (internalUserConfigToChange)
-        teams.changeRole(teamId, internalUserConfigToChange);
+insertedMembers.forEach(function(member) {
+    if(member["ROLE"] == $MSTeamsRoles.Guest())
+    {
+        var extMail = CommUtil.getStandardMail(member["CONTACT_ID"]);
+        if(extMail)
+        {
+            var extUser = teams.createExternalUserConfig(extMail);
+            addExternalMembers.push(extUser.sendInvitation(false));
+        }
+    }
+    else
+    {
+        var azureId = MSTeamsUtils.getAzureIdByContactId(member["CONTACT_ID"]);
+        var user = teams.createInternalUserConfig(azureId);
+        addInternalMembers.push(user.setOwner(member["ROLE"] == $MSTeamsRoles.Owner()));
+    }
 });
 
-
-var owners = teams.getAllOwners(teamId);
-var removeMembers = deletedTeamMembers.map(function (member)
+changedMembers.forEach(function(member)
 {
-    var isOwner = member["#UID"] in owners;
-    return teams.createInternalUserConfig(member["#UID"]).setOwner(isOwner);
+    var user = teams.createInternalUserConfig(member["#UID"]);
+    teams.changeRole(teamId, user.setOwner(member["ROLE"] == $MSTeamsRoles.Owner()));
 });
 
-if (removeMembers.length !== 0)
-    teams.removeInternalMembers(teamId, removeMembers);
-
-function _getTeamsInternalUserConfig(pUserObject, pAsOwner)
+deletedMembers.forEach(function(member)
 {
-    var memberAzureId = pUserObject[tools.PARAMS][tools.TEAMS_AZUREID];
-    var memberUpn = pUserObject[tools.PARAMS][tools.TEAMS_AZUREUPN];
-    if (!memberAzureId && memberUpn)
-        memberAzureId = teams.getInternalAzureId(memberUpn);
-    if (memberAzureId)
+    if(member["ROLE"] == $MSTeamsRoles.Guest())
+    {
+        var extUser = teams.createExternalUserConfig(member["MEMBERNAME"]);
+        removeExternalMembers.push(extUser);
+    }
+    else
     {
-        return teams.createInternalUserConfig(memberAzureId).setOwner(pAsOwner);
+        var user = teams.createInternalUserConfig(member["#UID"]);
+        removeInternalMembers.push(user.setOwner(member["ROLE"] == $MSTeamsRoles.Owner()));
     }
-    return null;
-}
\ No newline at end of file
+});
+
+addInternalMembers.length && teams.addInternalMembers(teamId, addInternalMembers);
+addExternalMembers.length && teams.addExternalMembers(teamId, addExternalMembers);
+removeInternalMembers.length && teams.removeInternalMembers(teamId, removeInternalMembers);
+removeExternalMembers.length && teams.removeExternalMembers(teamId, removeExternalMembers);
diff --git a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod
index 9ef9e4fcc26e268958b733c40535540dedea7470..1bf181c3d715b5a4b00c168ed9a0c1f0a035dd59 100644
--- a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod
+++ b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod
@@ -37,6 +37,8 @@
       <title>Channel</title>
       <consumer>Channels</consumer>
       <state>EDITABLE</state>
+      <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/channel_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/channel_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityParameter>
       <name>ObjectRowId_param</name>
diff --git a/entity/MSTeamsActivityImport_entity/entityfields/channel_id/displayValueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/channel_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c55fb855e76fcd3c47208f19d2348da9d245b27
--- /dev/null
+++ b/entity/MSTeamsActivityImport_entity/entityfields/channel_id/displayValueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.vars");
+import("system.entities");
+
+var uid = vars.get("$this.value");
+var config = entities.createConfigForLoadingRows().entity("MSTeamsChannel_entity")
+    .uid(uid).addParameter("TeamId_param", vars.get("$field.TEAM_ID")).fields(["CHANNELNAME"]);
+uid && result.string(entities.getRow(config).CHANNELNAME);
diff --git a/entity/MSTeamsActivityImport_entity/entityfields/channel_id/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/channel_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f2e81cd3dffc67136e990f5be03361d72deac65e
--- /dev/null
+++ b/entity/MSTeamsActivityImport_entity/entityfields/channel_id/valueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+import("system.teams");
+
+var teamId = vars.get("$field.TEAM_ID");
+if(teamId && vars.get("$this.value") == null)
+{
+    var channelId = teams.getGeneralChannelId(teamId);
+    result.string(channelId);
+}
diff --git a/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js
index c431bd3ac3e9bc6fa97d0b85729ed1c4f9b203b0..3205eef8b0cd4c870ccaea928309e76a5354240f 100644
--- a/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js
+++ b/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js
@@ -1,6 +1,7 @@
-import("system.vars");
-import("MSTeams_lib");
 import("system.result");
-import("Sql_lib");
+import("system.vars");
+import("Attribute_lib");
+import("AttributeRegistry_basic");
 
-result.string(MSTeamsUtils.getLinkedTeam(vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param")) || "");
\ No newline at end of file
+result.string(new AttributeRelationQuery(vars.get("$param.ObjectRowId_param"),
+    $AttributeRegistry.mstTeam(), vars.get("$param.ObjectType_param")).getSingleAttributeValue());
diff --git a/entity/MSTeamsMessage_entity/entityfields/importmessages/onActionProcess.js b/entity/MSTeamsMessage_entity/entityfields/importmessages/onActionProcess.js
index 8b5a94d660b9cbd5ef4a49457965ad8bd4767f0e..a5650f2a632efa216c3877c4e2ce4a5544a1c95c 100644
--- a/entity/MSTeamsMessage_entity/entityfields/importmessages/onActionProcess.js
+++ b/entity/MSTeamsMessage_entity/entityfields/importmessages/onActionProcess.js
@@ -1,23 +1,34 @@
+import("system.text");
+import("system.translate");
 import("Sql_lib");
 import("system.datetime");
 import("system.neon");
 import("Util_lib");
 import("system.vars");
+import("AttributeRegistry_basic");
+import("KeywordRegistry_basic");
+import("Context_lib");
 
 var messages = vars.get("$sys.selection");
 var description = messages.map(function (id)
 {
-    var [user, date, message] = JSON.parse(id);
-    date = Date.parse(date).valueOf();
+    var [user, date, message] = text.decodeMS(id);
     return "[" + datetime.toDate(date, "dd.MM.yyyy HH:mm") + "] " + user + "<br>" + message + "<br>";
 }).join("<br>");
 
 var links = newSelect(["OBJECT_TYPE", "OBJECT_ROWID"])
-    .from("MST_TEAMLINK")
-    .where("MST_TEAMLINK.MST_TEAM_ID", vars.get("$param.TeamId_param"))
+    .from("AB_ATTRIBUTERELATION")
+    .where("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", $AttributeRegistry.mstTeam())
+    .and("AB_ATTRIBUTERELATION.ID_VALUE", vars.get("$param.TeamId_param"))
     .table();
 
+var teamName = ContextUtils.loadContentTitle("MSTTeam_entity", vars.get("$param.TeamId_param"));
+var channelName = ContextUtils.loadContentTitle("MSTeamsChannel_entity", vars.get("$param.Channel_param"),
+    undefined, undefined, {TeamId_param: vars.get("$param.TeamId_param")});
 neon.openContext("Activity", "ActivityEdit_view", null, neon.OPERATINGSTATE_NEW, {
-    "Info_param": description,
-    "PresetLinks_param": JSON.stringify(links)
-});
\ No newline at end of file
+    Info_param: description,
+    PresetLinks_param: JSON.stringify(links),
+    Direction_param: $KeywordRegistry.activityDirection$internal(),
+    Subject_param: translate.text("MS-Teams Message") + " - " + teamName + " - " + channelName,
+    Category_param: $KeywordRegistry.activityCategory$mstMessage()
+});
diff --git a/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js
index 0007cf9a2d5994cbbf002e496d12620d49ee358c..d9f5ab8061b96013f6706b114a9def2b0def4d55 100644
--- a/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("system.text");
 import("Sql_lib");
 import("system.teams");
 import("system.result");
@@ -30,12 +31,12 @@ else if (vars.get("$param.TeamId_param") && vars.get("$param.Channel_param"))
 
 messages = messages.map(function (message)
 {
+    // replace workaround needed, since Rhino's Date.parse struggles with the date format returned by teams
+    var timestamp = Date.parse(message.createdDateTime.replace(/\.\d+Z/, "")).toString()
     return [
-        JSON.stringify([message.author.userName, message.createdDateTime, message.message.message]), 
-        message.author.userName, 
-        message.message.message, 
-        Date.parse(message.createdDateTime).toString()
+        text.encodeMS([message.author.userName, timestamp, message.message.message]), 
+        message.author.userName, message.message.message, timestamp
     ];
 });
-
+messages = messages.sort(function(a, b){return a[3] - b[3]});
 result.object(messages);
diff --git a/entity/MailSignature_entity/entityfields/mail_address/onValidation.js b/entity/MailSignature_entity/entityfields/mail_address/onValidation.js
index 02cab60da6883adeb8db01a91e73c5517ad83657..58b3402b3df4874097c94f5b50adbe94fa44aac8 100644
--- a/entity/MailSignature_entity/entityfields/mail_address/onValidation.js
+++ b/entity/MailSignature_entity/entityfields/mail_address/onValidation.js
@@ -1,9 +1,23 @@
+import("Sql_lib");
+import("system.translate");
+import("system.neon");
 import("system.result");
 import("Communication_lib");
 import("system.vars");
 import("KeywordRegistry_basic");
 import("Keyword_lib");
 
+var sql = new SqlBuilder()
+                        .selectCount("MAIL_ADDRESS")
+                        .from("MAILSIGNATURE")
+                        .where("MAILSIGNATURE.MAIL_ADDRESS", vars.get("$field.MAIL_ADDRESS"))
+                        .andIfSet("MAILSIGNATURE.MAILSIGNATUREID", vars.get("$field.MAILSIGNATUREID"),SqlBuilder.NOT_EQUAL())
+                        .cell();
+                        
+if (sql > 0)
+{
+    result.string(translate.text("Email address has to be unique") + ".");
+}
 
 var commMedium = "COMMEMAIL";
 
diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod
index 5c1fd6ebd52ac41949e646f2052f92d15621a2fa..f643a48c17d2e1816a4d216ddb1bd29b0914af43 100644
--- a/entity/Member_entity/Member_entity.aod
+++ b/entity/Member_entity/Member_entity.aod
@@ -4,10 +4,6 @@
   <title>${SALESPROJECT_MEMBER}</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Member_entity/documentation.adoc</documentation>
-  <siblings>
-    <element>MSTTeam_entity</element>
-    <element>MSTTeamLink_entity</element>
-  </siblings>
   <grantUpdateProcess>%aditoprj%/entity/Member_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/Member_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Member_entity/contentTitleProcess.js</contentTitleProcess>
@@ -24,7 +20,6 @@
       <consumer>Contacts</consumer>
       <linkedContext>Person</linkedContext>
       <mandatory v="true" />
-      <dropDownProcess>%aditoprj%/entity/Member_entity/entityfields/contact_id/dropDownProcess.js</dropDownProcess>
     </entityField>
     <entityField>
       <name>OBJECT_ROWID</name>
@@ -235,13 +230,6 @@
           <iconId>NEON:PENCIL</iconId>
           <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js</stateProcess>
         </entityActionField>
-        <entityActionField>
-          <name>addApp</name>
-          <title>Add app</title>
-          <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js</onActionProcess>
-          <iconId>VAADIN:MOBILE</iconId>
-          <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js</stateProcess>
-        </entityActionField>
         <entityActionField>
           <name>chooseTeam</name>
           <title>Choose Team</title>
@@ -258,7 +246,7 @@
         </entityActionField>
         <entityActionField>
           <name>openMSTeams</name>
-          <title>Open Teams</title>
+          <title>Open MS Teams</title>
           <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js</onActionProcess>
           <iconId>VAADIN:EXTERNAL_LINK</iconId>
           <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js</stateProcess>
@@ -273,8 +261,10 @@
       </children>
     </entityActionGroup>
     <entityProvider>
-      <name>TeamMemberProvider</name>
+      <name>MemberContacts</name>
       <lookupIdfield>CONTACT_ID</lookupIdfield>
+      <targetContextField>TARGETCONTEXT</targetContextField>
+      <targetIdField>CONTACT_ID</targetIdField>
     </entityProvider>
     <entityParameter>
       <name>MSTTeamId_param</name>
@@ -294,11 +284,6 @@
       <name>recordType</name>
       <documentation>%aditoprj%/entity/Member_entity/entityfields/recordtype/documentation.adoc</documentation>
     </entityField>
-    <entityParameter>
-      <name>SalesprojectCode_param</name>
-      <expose v="true" />
-      <description>PARAMETER</description>
-    </entityParameter>
     <entityField>
       <name>ONSITE</name>
       <title>On Site</title>
@@ -316,6 +301,10 @@
       <groupable v="true" />
       <displayValueProcess>%aditoprj%/entity/Member_entity/entityfields/person_attr_loyalty/displayValueProcess.js</displayValueProcess>
     </entityField>
+    <entityParameter>
+      <name>ContactIds_param</name>
+      <valueProcess>%aditoprj%/entity/Member_entity/entityfields/contactids_param/valueProcess.js</valueProcess>
+    </entityParameter>
     <entityField>
       <name>RESPONSIBLE</name>
       <title>Responsible</title>
diff --git a/entity/Member_entity/entityfields/contact_id/dropDownProcess.js b/entity/Member_entity/entityfields/contact_id/dropDownProcess.js
deleted file mode 100644
index e04712f9964d01c3585f846d62f43a8ec9c2a17b..0000000000000000000000000000000000000000
--- a/entity/Member_entity/entityfields/contact_id/dropDownProcess.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-//This dropDownProcess exists, even though the fieldState is READONLY.
-//-->So we can use it when using the filter
-var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactPosition()).map(function (e){
-    return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers
-});
-
-result.object(res);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/contactids_param/valueProcess.js b/entity/Member_entity/entityfields/contactids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..69313097ded5f8871c2d98dae06884a73ea6daac
--- /dev/null
+++ b/entity/Member_entity/entityfields/contactids_param/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var contactIds = newSelect("OBJECTMEMBER.CONTACT_ID")
+    .from("OBJECTMEMBER").whereIfSet("OBJECTMEMBER.OBJECT_TYPE", vars.get("$param.ObjectType_param"))
+    .andIfSet("OBJECTMEMBER.OBJECT_ROWID", vars.get("$param.ObjectRowId_param")).arrayColumn(true);
+result.string(JSON.stringify(contactIds));
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js
deleted file mode 100644
index f53cd7c87d173497b7b8fd5bcbb4ba4212bac637..0000000000000000000000000000000000000000
--- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.teams");
-import("system.project");
-import("system.vars");
-
-var appId = project.getInstanceConfigValue("teamsAppId", null);
-if (appId)
-    teams.addApp(vars.get("$param.MSTTeamId_param"), appId);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js
deleted file mode 100644
index f1febe96416f12e029c6de6537cf96e5c7f4d5db..0000000000000000000000000000000000000000
--- a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import("MSTeams_lib");
-import("system.vars");
-import("system.neon");
-import("system.result");
-import("Sql_lib");
-
-var res = neon.COMPONENTSTATE_DISABLED;
-var teamId = vars.get("$param.MSTTeamId_param");
-if (teamId && MSTeamsUtils.isTeamsEnabled())
-{    
-    var teamInfo = MSTeamsUtils.getTeamInfo(teamId);
-    if (teamInfo && !teamInfo.isArchived && !teamInfo.serviceUrl)
-        res = neon.COMPONENTSTATE_EDITABLE;
-}
-
-result.string(res);
\ No newline at end of file
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js
index f5761f78639c0a8b2fc209d0fe50d47ccbb390e2..b6ffb62af2e93df3b267c9b5f695aeb6282624db 100644
--- a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js
@@ -1,4 +1,9 @@
-import("MSTeams_lib");
+import("system.neon");
 import("system.vars");
+import("AttributeRegistry_basic");
 
-MSTeamsUtils.changeTeamsLink(vars.get("$field.OBJECT_ROWID"), vars.get("$field.OBJECT_TYPE"));
\ No newline at end of file
+neon.openContext("AttributeRelation", null, null, neon.OPERATINGSTATE_NEW, {
+    AttributeId_param: $AttributeRegistry.mstTeam(),
+    ObjectType_param: vars.get("$param.ObjectType_param"),
+    ObjectRowId_param: vars.get("$param.ObjectRowId_param")
+});
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js
index 82ce3fae3fb447579e492f43ad7158f1d8bd0182..842a7a8b1f45f7d438f605824280bd6e42e2373c 100644
--- a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js
@@ -1,8 +1,13 @@
+import("system.result");
 import("system.vars");
 import("system.neon");
-import("system.result");
+import("Util_lib");
 
-result.string(vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param") 
-    ? neon.COMPONENTSTATE_DISABLED 
-    : neon.COMPONENTSTATE_EDITABLE
-);
\ No newline at end of file
+var hasMembers = (Utils.parseJSON(vars.get("$param.ContactIds_param")) || []).length;
+var hasTeamId = vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param");
+var res = neon.COMPONENTSTATE_EDITABLE;
+if(!hasMembers || hasTeamId)
+{
+    res = neon.COMPONENTSTATE_DISABLED ;
+}
+result.string(res);
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js
index 611e6d3926780aa4e436f626508e3b1f7a8a4cbc..ed5f6c0ceae9984aca8f2eaa9daa7797247da83c 100644
--- a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js
@@ -5,9 +5,11 @@ import("Sql_lib");
 
 var rowId = vars.get("$param.ObjectRowId_param");
 var objectType = vars.get("$param.ObjectType_param");
+var contactIds = vars.get("$param.ContactIds_param");
 var params = {
     "ObjectRowId_param": rowId,
-    "ObjectType_param": objectType
+    "ObjectType_param": objectType,
+    "ContactIds_param": contactIds
 };
 
 if (objectType === "Salesproject")
@@ -18,7 +20,6 @@ if (objectType === "Salesproject")
         .arrayRow();
     params["TeamName_param"] = teamName;
     params["Description_param"] = description;
-    params["SalesprojectCode_param"] = vars.get("$param.SalesprojectCode_param");
 }
 
-neon.openContext("MSTTeam", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
+neon.openContext("MSTTeam", null, null, neon.OPERATINGSTATE_NEW, params);
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js
index 82ce3fae3fb447579e492f43ad7158f1d8bd0182..ec1ae4dba8900c359402a9ba7e77a6155db28fdd 100644
--- a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js
@@ -1,8 +1,10 @@
+import("system.result");
 import("system.vars");
 import("system.neon");
-import("system.result");
+import("Util_lib");
 
-result.string(vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param") 
+var hasMembers = (Utils.parseJSON(vars.get("$param.ContactIds_param")) || []).length;
+result.string(!hasMembers || (vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param"))
     ? neon.COMPONENTSTATE_DISABLED 
     : neon.COMPONENTSTATE_EDITABLE
-);
\ No newline at end of file
+);
diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js
index 8f072bc03d016ca70df4643d9f32d8c29c8523e5..746823a3b6e4b00635d7b22610a74dae24415986 100644
--- a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js
+++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js
@@ -1,7 +1,8 @@
 import("system.vars");
 import("system.neon");
 
-neon.openContext("MSTTeam", "MSTTeamEditMembers_view", [vars.get("$param.MSTTeamId_param")], neon.OPERATINGSTATE_EDIT, {
+neon.openContext("MSTTeam", null, [vars.get("$param.MSTTeamId_param")], neon.OPERATINGSTATE_EDIT, {
     "ObjectRowId_param": vars.get("$param.ObjectRowId_param"),
-    "ObjectType_param": vars.get("$param.ObjectType_param")
-});
\ No newline at end of file
+    "ObjectType_param": vars.get("$param.ObjectType_param"),
+    "ContactIds_param": vars.get("$param.ContactIds_param")
+});
diff --git a/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js b/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js
index 566da0b330d91a6b956f6a40c0517ce03f795a91..b09bae08d23b772e21e26b7e4edc54d5bbb9cd23 100644
--- a/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js
+++ b/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js
@@ -1,8 +1,7 @@
-import("system.vars");
 import("system.result");
-import("Sql_lib");
-import("MSTeams_lib");
+import("system.vars");
+import("Attribute_lib");
+import("AttributeRegistry_basic");
 
-var objectType = vars.get("$param.ObjectType_param");
-if (objectType in MSTeamsUtils.getTeamLinkContexts())
-    result.string(MSTeamsUtils.getLinkedTeam(vars.get("$param.ObjectRowId_param"), objectType) || "");
\ No newline at end of file
+result.string(new AttributeRelationQuery(vars.get("$param.ObjectRowId_param"), 
+    $AttributeRegistry.mstTeam(), vars.get("$param.ObjectType_param")).getSingleAttributeValue());
diff --git a/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js
index e6e750d04788d9ab345eb50e83c174f53b70f6fa..43825745b43d95f3485fa53e23086d48c233b51d 100644
--- a/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js
+++ b/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js
@@ -12,7 +12,7 @@ else if(vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE"))
 {
     if(vars.get("$field.OBJECT_TYPE") == "Salesproject")
     {
-        result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"), "IgnoreChecklists_param"));
+        result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"), null, {"IgnoreChecklists_param": true}));
     }
     else
     {
diff --git a/entity/Observation_entity/entityfields/contexts/children/blacklist_param/valueProcess.js b/entity/Observation_entity/entityfields/contexts/children/blacklist_param/valueProcess.js
index ce4ed3a334253f41bc34a9e5751e2e316485f481..37a3f5dbb180129c0cac6bf9f33e23c5ba05cc0f 100644
--- a/entity/Observation_entity/entityfields/contexts/children/blacklist_param/valueProcess.js
+++ b/entity/Observation_entity/entityfields/contexts/children/blacklist_param/valueProcess.js
@@ -13,4 +13,4 @@ if (vars.get("$field.OBSERVATION_ID"))
         .cell();
 }
 
-result.object(Observation.getAllContextValue(type));
\ No newline at end of file
+    result.object(Observation.getAllContextValue(type));
\ No newline at end of file
diff --git a/entity/Observation_entity/entityfields/object_filter/valueProcess.js b/entity/Observation_entity/entityfields/object_filter/valueProcess.js
index df026f7192e7752d7364fa8739aad1c0973d3acc..5df8f1ef2df62ce0338c8c20c8521e697d088342 100644
--- a/entity/Observation_entity/entityfields/object_filter/valueProcess.js
+++ b/entity/Observation_entity/entityfields/object_filter/valueProcess.js
@@ -1,5 +1,5 @@
+import("JditoFilter_lib");
 import("Observation_lib");
-import("Context_lib");
 import("system.vars");
 import("system.result");
 
@@ -8,7 +8,7 @@ let resFilter;
 
 if ((vars.get("$this.value") == null || vars.get("$this.value") == "") && vars.get("$field.OBJECT_TYPE") && !vars.get("$field.OBJECT_ID") && !filterParam) 
 {
-    resFilter = Observation.getContextFilter(vars.get("$field.OBJECT_TYPE"), null);
+    resFilter = JditoFilterUtils.getContextFilter(vars.get("$field.OBJECT_TYPE"), null);
 }
 else if (!vars.get("$this.value") && filterParam) 
 {
diff --git a/entity/Observation_entity/recordcontainers/db/onDBInsert.js b/entity/Observation_entity/recordcontainers/db/onDBInsert.js
index aa3b524a0b205afb4d6793903fc229447669fc89..18326447c59744ab1733c0474408dc6969ccbbcd 100644
--- a/entity/Observation_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Observation_entity/recordcontainers/db/onDBInsert.js
@@ -1,3 +1,4 @@
+import("JditoFilter_lib");
 import("system.vars");
 import("Observation_lib");
 import("system.entities");
@@ -14,7 +15,7 @@ if (vars.get("$field.includeDependencies") == "1")
             "OBJECT_FIELD" : Observation.getAllFieldValue(contextID).toString(),
             "includeDependencies" : false,
             "OBSERVATION_ID" : observation_id,
-            "OBJECT_FILTER" : Observation.getContextFilter(contextID, null)
+            "OBJECT_FILTER" : JditoFilterUtils.getContextFilter(contextID, null)
         }
 
         let createRowConfig = entities.createConfigForAddingRows()
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index 3eeea68776f6dfddf0736b8794cfeb338f7eefcd..c15e6b3b30ad8e9366286cbe5e4ecedfe77499aa 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -18,6 +18,17 @@
   <titlePlural>Offers</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
+    <entityActionField>
+      <name>export</name>
+      <title>Export</title>
+      <onActionProcess>%aditoprj%/entity/Offer_entity/entityfields/export/onActionProcess.js</onActionProcess>
+      <isMenuAction v="true" />
+      <isObjectAction v="false" />
+      <iconId>NEON:EXPORT</iconId>
+      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/export/stateProcess.js</stateProcess>
+      <tooltip>Export fields of this table</tooltip>
+      <tooltipProcess>%aditoprj%/entity/Offer_entity/entityfields/export/tooltipProcess.js</tooltipProcess>
+    </entityActionField>
     <entityProvider>
       <name>#PROVIDER</name>
     </entityProvider>
@@ -957,6 +968,7 @@
       <contentType>NUMBER</contentType>
       <outputFormat>0.00'%'</outputFormat>
       <inputFormat>0.00</inputFormat>
+      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/discount/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/discount/valueProcess.js</valueProcess>
       <onValueChange>%aditoprj%/entity/Offer_entity/entityfields/discount/onValueChange.js</onValueChange>
       <onValueChangeTypes>
diff --git a/entity/Offer_entity/entityfields/discount/stateProcess.js b/entity/Offer_entity/entityfields/discount/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8c131df635e8bd89ea2f56d920eb56bb9c5af588
--- /dev/null
+++ b/entity/Offer_entity/entityfields/discount/stateProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Offer_lib");
+
+result.string(OfferUtils.isEditable(vars.get("$field.STATUS")) ? neon.COMPONENTSTATE_AUTO : neon.COMPONENTSTATE_DISABLED);
diff --git a/entity/Offer_entity/entityfields/export/onActionProcess.js b/entity/Offer_entity/entityfields/export/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c68dcef71d0a7db12fd4d25819640764899dbad
--- /dev/null
+++ b/entity/Offer_entity/entityfields/export/onActionProcess.js
@@ -0,0 +1,11 @@
+import("ExportTemplate_lib");
+import("system.vars");
+
+var selection = vars.get("$sys.selection");
+
+if(selection.length == 0)     //no selection -> use Filtercondition;
+{
+    selection = vars.get("$sys.filter");
+}
+
+ExportTemplateUtils.addParticipants(JSON.stringify(selection), vars.get("$sys.currentcontextname"));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/export/stateProcess.js b/entity/Offer_entity/entityfields/export/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7fc578ee7942eeb948f08d3dd86f5950d3fa1c41
--- /dev/null
+++ b/entity/Offer_entity/entityfields/export/stateProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("FilterViewAction_lib");
+import("system.vars");
+
+var contactCount = vars.get("$sys.datarowcount");
+
+result.string(FilterViewActionUtils.getComponentStateByRowCount(contactCount));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/export/tooltipProcess.js b/entity/Offer_entity/entityfields/export/tooltipProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4aaaed5c074ef854441aa45e3e7993b2f77c04c4
--- /dev/null
+++ b/entity/Offer_entity/entityfields/export/tooltipProcess.js
@@ -0,0 +1,4 @@
+import("system.translate");
+import("system.result");
+
+result.string(translate.text("Export columns using a exporttemplate"));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/orders/children/copy_param/valueProcess.js b/entity/Offer_entity/entityfields/orders/children/copy_param/valueProcess.js
index 5200a58a795a404a1f168028da796c5495f74741..01607276137fde77208e2edb52fa35f0b7c40590 100644
--- a/entity/Offer_entity/entityfields/orders/children/copy_param/valueProcess.js
+++ b/entity/Offer_entity/entityfields/orders/children/copy_param/valueProcess.js
@@ -1,17 +1,16 @@
 import("system.result");
 import("system.vars");
 
-var fieldparams = 
-{
-    "$field.CONTACT_ID" : vars.getString("$field.CONTACT_ID") || "",
-    "$field.ISOLANGUAGE" : vars.getString("$field.ISOLANGUAGE") || "",
-    "$field.OFFER_ID" : vars.getString("$field.OFFERID") || "",
-    "$field.CURRENCY" : vars.getString("$field.CURRENCY") || "",
-    "$field.PAYMENTADDRESS" : vars.getString("$field.ADDRESS") || "",
-    "$field.DELIVERYADDRESS" : vars.getString("$field.ADDRESS") || "",
-    "$field.OBJECT_TYPE" : vars.getString("$field.OBJECT_TYPE") || "",
-    "$field.OBJECT_ROWID" : vars.getString("$field.OBJECT_ROWID") || "",
-    "$field.DISCOUNT" : vars.getString("$field.DISCOUNT") || ""
-};
+//the string concating is needed, because otherwise the Scan Services of the designer would mark the "missing" fields as erros
+var fieldparams = {};
+fieldparams["$field" + ".CONTACT_ID"] = vars.getString("$field.CONTACT_ID") || "";
+fieldparams["$field" + ".ISOLANGUAGE"] = vars.getString("$field.ISOLANGUAGE") || "";
+fieldparams["$field" + ".OFFER_ID"] = vars.getString("$field.OFFER_ID") || "";
+fieldparams["$field" + ".CURRENCY"] = vars.getString("$field.CURRENCY") || "";
+fieldparams["$field" + ".PAYMENTADDRESS"] = vars.getString("$field.ADDRESS") || "";
+fieldparams["$field" + ".DELIVERYADDRESS"] = vars.getString("$field.ADDRESS") || "";
+fieldparams["$field" + ".OBJECT_TYPE"] = vars.getString("$field.OBJECT_TYPE") || "";
+fieldparams["$field" + ".OBJECT_ROWID"] = vars.getString("$field.OBJECT_ROWID") || "";
+fieldparams["$field" + ".DISCOUNT"] = vars.getString("$field.DISCOUNT") || "";
 
 result.string(JSON.stringify(fieldparams));
\ No newline at end of file
diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod
index 289f5890fd4f0cff3ee3b45aab0913c6931ec22a..5657ac3d3c0da879e05ed500d8778e94c90611df 100644
--- a/entity/Offeritem_entity/Offeritem_entity.aod
+++ b/entity/Offeritem_entity/Offeritem_entity.aod
@@ -71,10 +71,12 @@
       <name>PRICE</name>
       <title>Unit price</title>
       <contentType>NUMBER</contentType>
+      <minValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/price/minValueProcess.js</minValueProcess>
       <outputFormat>#,##0.00</outputFormat>
       <inputFormat>#,##0.00</inputFormat>
       <mandatory v="true" />
       <displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/price/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/Offeritem_entity/entityfields/price/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>PRODUCT_ID</name>
@@ -124,6 +126,7 @@
       <name>VAT</name>
       <title>VAT</title>
       <contentType>NUMBER</contentType>
+      <minValue v="0" />
       <outputFormat>0.00'%'</outputFormat>
       <inputFormat>0.00</inputFormat>
       <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/vat/valueProcess.js</valueProcess>
@@ -401,6 +404,10 @@
           <name>PRODUCT_ID.displayValue</name>
           <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/product_id.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DISCOUNT.displayValue</name>
+          <expression>%aditoprj%/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/discount.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/Offeritem_entity/entityfields/price/minValueProcess.js b/entity/Offeritem_entity/entityfields/price/minValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..451af92dfde3bab6aa84cfecb241b4d00fb6493e
--- /dev/null
+++ b/entity/Offeritem_entity/entityfields/price/minValueProcess.js
@@ -0,0 +1,23 @@
+import("KeywordRegistry_basic");
+import("system.result");
+import("Sql_lib");
+import("system.vars");
+
+//allow negative values if product is discount
+var minValue = 0;
+
+var productId = vars.get("$field.PRODUCT_ID");
+if(productId)
+{
+    var productGroup = newSelect("PRODUCT.GROUPCODEID")
+                            .from("PRODUCT")
+                            .where("PRODUCT.PRODUCTID", productId)
+                            .cell();
+    
+    if(productGroup == $KeywordRegistry.productGroupcode$discount())
+    {
+        minValue = "";
+    }
+}
+
+result.string(minValue);
\ No newline at end of file
diff --git a/entity/Offeritem_entity/entityfields/price/onValidation.js b/entity/Offeritem_entity/entityfields/price/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..3ccd297cc74a4edb1a45f0e84755546882d8ed52
--- /dev/null
+++ b/entity/Offeritem_entity/entityfields/price/onValidation.js
@@ -0,0 +1,27 @@
+import("system.result");
+import("Util_lib");
+import("KeywordRegistry_basic");
+import("system.vars");
+import("Sql_lib");
+
+var value = vars.get("local.value");
+var minValue = 0;
+
+var productId = vars.get("$field.PRODUCT_ID");
+if(productId)
+{
+    var productGroup = newSelect("PRODUCT.GROUPCODEID")
+                            .from("PRODUCT")
+                            .where("PRODUCT.PRODUCTID", productId)
+                            .cell();
+    
+    if(productGroup != $KeywordRegistry.productGroupcode$discount())
+    {
+        var validationResult = NumberUtils.validateIsBetweenFloat("Unit price", value, minValue, Number.MAX_VALUE);
+
+        if (validationResult)
+        {
+            result.string(validationResult);
+        }
+    }
+}
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/discount.displayvalue/expression.js b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/discount.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..171a4725655b52380e1aaaaaa368a4e81ca423fd
--- /dev/null
+++ b/entity/Offeritem_entity/recordcontainers/db/recordfieldmappings/discount.displayvalue/expression.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Sql_lib");
+
+result.string(SqlBuilder.caseWhen(newWhere("OFFERITEM.DISCOUNT is null")).then("0").elseValue("OFFERITEM.DISCOUNT").toString());
\ No newline at end of file
diff --git a/entity/OrderLink_entity/OrderLink_entity.aod b/entity/OrderLink_entity/OrderLink_entity.aod
index 31ef46c5af384b5db5df4961ab7df4c10e27876b..71dc81b9a775fddabd6f524c94ff39520fed7c1c 100644
--- a/entity/OrderLink_entity/OrderLink_entity.aod
+++ b/entity/OrderLink_entity/OrderLink_entity.aod
@@ -100,32 +100,42 @@
       <recordFieldMappings>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
+          <recordfield>SALESORDERLINK.DATE_EDIT</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>DATE_NEW.value</name>
+          <recordfield>SALESORDERLINK.DATE_NEW</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>OBJECT_ROWID.value</name>
+          <recordfield>SALESORDERLINK.OBJECT_ROWID</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>OBJECT_TYPE.value</name>
+          <recordfield>SALESORDERLINK.OBJECT_TYPE</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>SALESORDER_ID.value</name>
+          <recordfield>SALESORDERLINK.SALESORDER_ID</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>SALESORDERLINKID.value</name>
+          <recordfield>SALESORDERLINK.SALESORDERLINKID</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>USER_EDIT.value</name>
+          <recordfield>SALESORDERLINK.USER_EDIT</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>USER_NEW.value</name>
+          <recordfield>SALESORDERLINK.USER_NEW</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
-          <name>ee3c9a6f-53e4-4579-b2b8-994913cba502</name>
+          <name>7db945ec-4717-4c06-b462-a28dc35f4411</name>
+          <tableName>SALESORDERLINK</tableName>
+          <primaryKey>SALESORDERLINKID</primaryKey>
           <isUIDTable v="true" />
           <readonly v="false" />
         </linkInformation>
diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod
index 4447130cb1261aacc613504e4d67b3d41f1173f1..399419f16b384223b203e8c99c2f502e6b0bd1e3 100644
--- a/entity/Order_entity/Order_entity.aod
+++ b/entity/Order_entity/Order_entity.aod
@@ -67,6 +67,7 @@
       <name>VAT</name>
       <title>Total VAT</title>
       <contentType>NUMBER</contentType>
+      <minValue v="0" />
       <state>READONLY</state>
       <stateProcess>%aditoprj%/entity/Order_entity/entityfields/vat/stateProcess.js</stateProcess>
       <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/vat/displayValueProcess.js</displayValueProcess>
diff --git a/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js
index 95c4eea5367140dc2d81e470ba0607adf52f07c1..097818829c387fa6035aac140d75f2f5f9110dc1 100644
--- a/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js
+++ b/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js
@@ -4,8 +4,11 @@ import("system.db");
 import("system.result");
 import("Context_lib");
 
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) {
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID"))
+{
     result.string("");
-} else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
+}
+else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE"))
+{
     result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")));
 }
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/object_type/displayValueProcess.js b/entity/Order_entity/entityfields/object_type/displayValueProcess.js
index d7b4dedc2e4402d6ce48c1acd8eb730acc2601d2..cf98e1ebaab9767f613c557e8d4ad91eed7756e2 100644
--- a/entity/Order_entity/entityfields/object_type/displayValueProcess.js
+++ b/entity/Order_entity/entityfields/object_type/displayValueProcess.js
@@ -3,8 +3,11 @@ import("system.neon");
 import("system.vars");
 import("system.project");
 
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_TYPE")) {
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_TYPE"))
+{
     result.string("");
-} else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
+}
+else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE"))
+{
     result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECT_TYPE"))[1]);
 }
diff --git a/entity/Orderitem_entity/Orderitem_entity.aod b/entity/Orderitem_entity/Orderitem_entity.aod
index a79ce1593a2b0f20c56673324cc5e028c3da13af..2ba72ab532b66adfcc197f4986d6b9ffa780ba08 100644
--- a/entity/Orderitem_entity/Orderitem_entity.aod
+++ b/entity/Orderitem_entity/Orderitem_entity.aod
@@ -23,6 +23,7 @@
       <name>DISCOUNT</name>
       <title>Discount</title>
       <contentType>NUMBER</contentType>
+      <minValue v="0" />
       <outputFormat>#,##0.00</outputFormat>
     </entityField>
     <entityField>
@@ -58,10 +59,12 @@
       <name>PRICE</name>
       <title>Unit price</title>
       <contentType>NUMBER</contentType>
+      <minValueProcess>%aditoprj%/entity/Orderitem_entity/entityfields/price/minValueProcess.js</minValueProcess>
       <outputFormat>#,##0.00</outputFormat>
       <inputFormat>#,##0.00</inputFormat>
       <mandatory v="true" />
       <displayValueProcess>%aditoprj%/entity/Orderitem_entity/entityfields/price/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/Orderitem_entity/entityfields/price/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>PRODUCT_ID</name>
@@ -82,6 +85,7 @@
       <documentation>%aditoprj%/entity/Orderitem_entity/entityfields/quantity/documentation.adoc</documentation>
       <title>Quantity</title>
       <contentType>NUMBER</contentType>
+      <minValue v="1" />
       <outputFormat>#</outputFormat>
       <valueProcess>%aditoprj%/entity/Orderitem_entity/entityfields/quantity/valueProcess.js</valueProcess>
       <onValueChange>%aditoprj%/entity/Orderitem_entity/entityfields/quantity/onValueChange.js</onValueChange>
diff --git a/entity/Orderitem_entity/entityfields/price/minValueProcess.js b/entity/Orderitem_entity/entityfields/price/minValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..451af92dfde3bab6aa84cfecb241b4d00fb6493e
--- /dev/null
+++ b/entity/Orderitem_entity/entityfields/price/minValueProcess.js
@@ -0,0 +1,23 @@
+import("KeywordRegistry_basic");
+import("system.result");
+import("Sql_lib");
+import("system.vars");
+
+//allow negative values if product is discount
+var minValue = 0;
+
+var productId = vars.get("$field.PRODUCT_ID");
+if(productId)
+{
+    var productGroup = newSelect("PRODUCT.GROUPCODEID")
+                            .from("PRODUCT")
+                            .where("PRODUCT.PRODUCTID", productId)
+                            .cell();
+    
+    if(productGroup == $KeywordRegistry.productGroupcode$discount())
+    {
+        minValue = "";
+    }
+}
+
+result.string(minValue);
\ No newline at end of file
diff --git a/entity/Orderitem_entity/entityfields/price/onValidation.js b/entity/Orderitem_entity/entityfields/price/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..0a8a01d7ceb9605da7d6826ad4a17557f690a087
--- /dev/null
+++ b/entity/Orderitem_entity/entityfields/price/onValidation.js
@@ -0,0 +1,27 @@
+import("system.result");
+import("Util_lib");
+import("KeywordRegistry_basic");
+import("Sql_lib");
+import("system.vars");
+
+var value = vars.get("local.value");
+var minValue = 0;
+
+var productId = vars.get("$field.PRODUCT_ID");
+if(productId)
+{
+    var productGroup = newSelect("PRODUCT.GROUPCODEID")
+                            .from("PRODUCT")
+                            .where("PRODUCT.PRODUCTID", productId)
+                            .cell();
+    
+    if(productGroup != $KeywordRegistry.productGroupcode$discount())
+    {
+        var validationResult = NumberUtils.validateIsBetweenFloat("Unit price", value, minValue, Number.MAX_VALUE);
+
+        if (validationResult)
+        {
+            result.string(validationResult);
+        }
+    }
+}
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index 72cb6cdb2bf27b4774d18628cdb7caa3f8b578f0..2d38273879e6dde845177b56147bfc3403c82138 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -1272,7 +1272,7 @@
           <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/orgreportdispatch/children/dispatchorgreport/onActionProcess.js</onActionProcess>
           <isObjectAction v="false" />
           <iconId>VAADIN:AT</iconId>
-          <iconIdProcess>%aditoprj%/entity/Organisation_entity/entityfields/orgreportdispatch/children/dispatchorgreport/iconIdProcess.js</iconIdProcess>
+          <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/orgreportdispatch/children/dispatchorgreport/stateProcess.js</stateProcess>
         </entityActionField>
       </children>
     </entityActionGroup>
@@ -1409,6 +1409,10 @@
           <name>ChecklistIds_param</name>
           <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/checklistentryvalues/children/checklistids_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>Presentationmode_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/checklistentryvalues/children/presentationmode_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityParameter>
diff --git a/entity/Organisation_entity/entityfields/checklistentryvalues/children/presentationmode_param/valueProcess.js b/entity/Organisation_entity/entityfields/checklistentryvalues/children/presentationmode_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c5f4daf64965b6611992280cd8e2e9488b05f12b
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/checklistentryvalues/children/presentationmode_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$sys.presentationmode"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
index ecad88623a921908ff07c1929560d806ff8c440d..6c68dcef71d0a7db12fd4d25819640764899dbad 100644
--- a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
+++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
@@ -1,14 +1,11 @@
 import("ExportTemplate_lib");
 import("system.vars");
 
-var sysSelection = vars.get("$sys.selection");
+var selection = vars.get("$sys.selection");
 
-if(sysSelection.length > 0)     //if data selected -> use selected data
+if(selection.length == 0)     //no selection -> use Filtercondition;
 {
-    ExportTemplateUtils.addParticipantsByRowIds(JSON.stringify(sysSelection), vars.get("$sys.currentcontextname"));
+    selection = vars.get("$sys.filter");
 }
-else                            //else -> use Filtercondition
-{
-    let sysFilter = vars.get("$sys.filter");
-    ExportTemplateUtils.addParticipantsByCondition(JSON.stringify(sysFilter), vars.get("$sys.currentcontextname"));
-}
\ No newline at end of file
+
+ExportTemplateUtils.addParticipants(JSON.stringify(selection), vars.get("$sys.currentcontextname"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/orgreportdispatch/children/dispatchorgreport/iconIdProcess.js b/entity/Organisation_entity/entityfields/orgreportdispatch/children/dispatchorgreport/stateProcess.js
similarity index 100%
rename from entity/Organisation_entity/entityfields/orgreportdispatch/children/dispatchorgreport/iconIdProcess.js
rename to entity/Organisation_entity/entityfields/orgreportdispatch/children/dispatchorgreport/stateProcess.js
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index 5668029cc950db0f04026a5a0abf6b8ce60676f4..057d30016a75808bf365324c215ef214b43c29ea 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -1375,7 +1375,7 @@
       <dependency>
         <name>dependency</name>
         <entityName>SupportTicket_entity</entityName>
-        <fieldName>TicketsProvider</fieldName>
+        <fieldName>SupportTickets</fieldName>
       </dependency>
       <children>
         <entityParameter>
diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
index ecad88623a921908ff07c1929560d806ff8c440d..6c68dcef71d0a7db12fd4d25819640764899dbad 100644
--- a/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
+++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/export/onActionProcess.js
@@ -1,14 +1,11 @@
 import("ExportTemplate_lib");
 import("system.vars");
 
-var sysSelection = vars.get("$sys.selection");
+var selection = vars.get("$sys.selection");
 
-if(sysSelection.length > 0)     //if data selected -> use selected data
+if(selection.length == 0)     //no selection -> use Filtercondition;
 {
-    ExportTemplateUtils.addParticipantsByRowIds(JSON.stringify(sysSelection), vars.get("$sys.currentcontextname"));
+    selection = vars.get("$sys.filter");
 }
-else                            //else -> use Filtercondition
-{
-    let sysFilter = vars.get("$sys.filter");
-    ExportTemplateUtils.addParticipantsByCondition(JSON.stringify(sysFilter), vars.get("$sys.currentcontextname"));
-}
\ No newline at end of file
+
+ExportTemplateUtils.addParticipants(JSON.stringify(selection), vars.get("$sys.currentcontextname"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/organisation_contactid/stateProcess.js b/entity/Person_entity/entityfields/organisation_contactid/stateProcess.js
index 7d8abdebb5fe1f2471641ff52029303f559bc3e1..00c30091c832943070c8396ca469529ca6eb7280 100644
--- a/entity/Person_entity/entityfields/organisation_contactid/stateProcess.js
+++ b/entity/Person_entity/entityfields/organisation_contactid/stateProcess.js
@@ -11,8 +11,8 @@ var contactId = vars.get("$field.CONTACTID");
     
 var linkedObject = new HasLinkedObjectTester()
 .andNoEntityRows("Activity_entity", "LinkedObjects", {ObjectId_param : currentContext, RowId_param : contactId})
-.andNoEntityRows("360Degree_entity", "PersonObjects", {ObjectRowId_param : contactId , ObjectStatus_param : vars.get("$field.STATUS")})
-.andNoEntityRows("ObjectTree_entity", "TreeProvider", {ObjectIds_param : [vars.get("$field.CONTACTID"), vars.get("$field.PERSON_ID")], ObjectTypes_param : currentContext})
+.andNoEntityRows("360Degree_entity", "PersonObjects", {ObjectRowId_param : JSON.stringify([contactId]) , ObjectStatus_param : vars.get("$field.STATUS")})
+.andNoEntityRows("ObjectTree_entity", "TreeProvider", {ObjectIds_param : JSON.stringify([vars.get("$field.CONTACTID"), vars.get("$field.PERSON_ID")]), ObjectTypes_param : currentContext})
 //.andNoEntityRows("AttributeRelation_entity", "TreeProvider", {ObjectRowId_param : contactId, ObjectType_param : currentContext})
 //.andNoEntityRows("DistrictResponsible_entity", "OrganisationResponsibles", {OrgUid_param : vars.get("$field.ORGANISATION_CONTACTID")}) //District Responsible and Object Tree is default data record
 .andNoEntityRows("Document_entity", "Documents", {AssignmentRowId_param : contactId, AssignmentTable_param : "RELATION"})
diff --git a/entity/Person_entity/entityfields/serviceticket/children/returnempty_param/valueProcess.js b/entity/Person_entity/entityfields/serviceticket/children/returnempty_param/valueProcess.js
index b691020ed6224d159383287eb2b841b9d5d225bd..dc28dd1668428cd72a6afb49c02147bd36f8ba42 100644
--- a/entity/Person_entity/entityfields/serviceticket/children/returnempty_param/valueProcess.js
+++ b/entity/Person_entity/entityfields/serviceticket/children/returnempty_param/valueProcess.js
@@ -1,4 +1,4 @@
 import("system.result");
 
 
-result.string( true);
\ No newline at end of file
+result.string( false);
\ No newline at end of file
diff --git a/entity/Prod2prod_entity/entityfields/alter/children/insert/onActionProcess.js b/entity/Prod2prod_entity/entityfields/alter/children/insert/onActionProcess.js
index 7119a964dc6512ad374f8aa17b917d126a27e1fd..c599a0919963ad333599a18e1f2f6985a706f51b 100644
--- a/entity/Prod2prod_entity/entityfields/alter/children/insert/onActionProcess.js
+++ b/entity/Prod2prod_entity/entityfields/alter/children/insert/onActionProcess.js
@@ -1,9 +1,9 @@
 import("system.neon");
 import("system.vars");
 
-if (vars.exists("$local.rows") && vars.get("$local.rows"))
+if (vars.exists("$sys.selectionRows") && vars.get("$sys.selectionRows"))
 {
-    var selectedRows = vars.get("$local.rows");
+    var selectedRows = vars.get("$sys.selectionRows");
     
     if (selectedRows.length > 0 && vars.exists("$param.ProductId_param") && vars.getString("$param.ProductId_param"))
     {
diff --git a/entity/Product_entity/recordcontainers/db/recordfieldmappings/statustileview.displayvalue/expression.js b/entity/Product_entity/recordcontainers/db/recordfieldmappings/statustileview.displayvalue/expression.js
index cbf8f98c51597e787b6bb993e87f9964da345f47..f88c2129f76173abf61f5d2945b8eeff30191153 100644
--- a/entity/Product_entity/recordcontainers/db/recordfieldmappings/statustileview.displayvalue/expression.js
+++ b/entity/Product_entity/recordcontainers/db/recordfieldmappings/statustileview.displayvalue/expression.js
@@ -2,4 +2,4 @@ import("system.translate");
 import("Sql_lib");
 import("system.result");
 
-result.string(SqlBuilder.caseWhen(newWhere("PRODUCT.STATUS", "1")).thenString(translate.text("Active")).elseString(translate.text("Inactive")).toString());
\ No newline at end of file
+result.string(SqlBuilder.caseWhen(newWhere("PRODUCT.STATUS", 1)).thenString(translate.text("Active")).elseString(translate.text("Inactive")).toString());
\ No newline at end of file
diff --git a/entity/Productprice_entity/onValidation.js b/entity/Productprice_entity/onValidation.js
index de8f835701b17f6247e266a035faf4d426b10fcc..bc32d44d44f0f4508f4a090173f1f855c2fd3bd5 100644
--- a/entity/Productprice_entity/onValidation.js
+++ b/entity/Productprice_entity/onValidation.js
@@ -1,3 +1,4 @@
+import("Util_lib");
 import("system.datetime");
 import("system.eMath");
 import("system.translate");
@@ -28,11 +29,26 @@ if(vars.getString("$param.IgnoreOnValidation_param") != "true")
     //  (A)            |-------|   ->            |-----|        
     //  (B)    |---------|         ->  |---------|
     //
-    //There is another case we cannot handle as easy:
-    //  if priceB's validFrom is after the validFrom of priceA and it's validTo is also before the validTo of priceA
-    //      -> catch this case in the onValidation, since the only solution would be to delete priceB
+	//
+    //There are four other cases we cannot handle as easy:
+    //-If priceB's validFrom is after the validFrom of priceA and it's validTo is also before the validTo of priceA
     //   (A)       |----|          ->  handle in onValidation   
     //   (B)   |-------------|     ->  handle in onValidation
+    //   
+    //-If priceB's validFrom is the same as the validFrom of priceA (no matter what their validTo values are)
+    //   (A)       |----|          ->  handle in onValidation   
+    //   (B)       |-------------| ->  handle in onValidation
+    //
+    //-If priceB's validTo is the same as the validTo of priceA (no matter what their validFrom values are)
+    //   (A)                |----| ->  handle in onValidation   
+    //   (B)       |-------------| ->  handle in onValidation
+	//
+	//-If priceB's validFrom is the same as the validFrom of priceA and priceB's validTo is the same as the validTo of priceA 
+    //   (A)      |-------| 	   ->  handle in onValidation   
+    //   (B)      |-------|        ->  handle in onValidation
+    //
+	//-> catch those case in the onValidation, since the only solution would be to delete priceA
+	//
     else if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
     {
         var priceList = vars.get("$field.PRICELIST");
@@ -56,36 +72,20 @@ if(vars.getString("$param.IgnoreOnValidation_param") != "true")
         var priceListsToReplace1 = [];
         var priceListsToReplace2 = [];
 
-        var showMessage = false;
         for (var valPriceList in priceListsToPotentiallyReplace)
         {
             var currPriceList = priceListsToPotentiallyReplace[valPriceList];
             if(currPriceList["priceList"] == priceList && currPriceList["buySell"] == buySell &&
                 Number.parseInt(currPriceList["fromQuantity"]) == Number.parseInt(quantity) &&
-                currPriceList["relationId"] == vars.get("$param.ContactId_param") &&
-                currPriceList["currency"] == currency)
+                (currPriceList["relationId"] == vars.get("$param.ContactId_param")
+                || Utils.isNullOrEmptyString(currPriceList["relationId"]) && Utils.isNullOrEmptyString(vars.get("$param.ContactId_param"))) 
+                && currPriceList["currency"] == currency)
             {
-                if(currPriceList["validFrom"] > validFrom && ((validTo == undefined || validTo == "") || 
-                        (currPriceList["validTo"] != undefined && currPriceList["validTo"] != "" && currPriceList["validTo"] < validTo)))
-                {
-                    showMessage = true;
-                    break;
-                }
-                else if(eMath.addInt(currPriceList["validFrom"], datetime.ONE_DAY) == currPriceList["validTo"])
+                if(currPriceList["validFrom"] <= validFrom && (validTo >= currPriceList["validTo"] || Utils.isNotNullOrEmptyString(currPriceList["validTo"])))
                 {
-                    showMessage = true;
-                    break;
-                }
-                else if(currPriceList["validFrom"] == validFrom && validTo == currPriceList["validTo"])
-                {
-                    showMessage = true;
-                    break;
+                    result.string(translate.withArguments("There already exists a %0 price with the same type of pricelist, quantity and currency in the defined range.", [vars.get("$field.BUYSELL")]));
                 }
             }
         }
-        if(showMessage)
-        {
-            result.string(translate.withArguments("There already exists a %0 price with the same type of pricelist, quantity and currency in the defined range.", [vars.get("$field.BUYSELL")]));
-        }
     }
 }
\ No newline at end of file
diff --git a/entity/QuickEntry_entity/entityfields/quickentrysupporttickets/children/returnempty_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/supporttickets/children/returnempty_param/valueProcess.js
similarity index 100%
rename from entity/QuickEntry_entity/entityfields/quickentrysupporttickets/children/returnempty_param/valueProcess.js
rename to entity/QuickEntry_entity/entityfields/supporttickets/children/returnempty_param/valueProcess.js
diff --git a/entity/QuickEntry_entity/entityfields/quickentrysupporttickets/children/taskrequestorcontactid_param/valueProcess.js b/entity/QuickEntry_entity/entityfields/supporttickets/children/taskrequestorcontactid_param/valueProcess.js
similarity index 100%
rename from entity/QuickEntry_entity/entityfields/quickentrysupporttickets/children/taskrequestorcontactid_param/valueProcess.js
rename to entity/QuickEntry_entity/entityfields/supporttickets/children/taskrequestorcontactid_param/valueProcess.js
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index 970e68b2e4fb6c103a3c33196f4186c9006c6617..b677647150bcdc189ed5509f1c0006a81ab6f04c 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -8,7 +8,7 @@
     <element>SalesprojectMilestone_entity</element>
     <element>Member_entity</element>
     <element>MSTTeam_entity</element>
-    <element>MSTTeamLink_entity</element>
+    <element>AttributeRelation_entity</element>
   </siblings>
   <grantDeleteProcess>%aditoprj%/entity/Salesproject_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Salesproject_entity/contentTitleProcess.js</contentTitleProcess>
@@ -274,10 +274,6 @@
           <name>EnableMSTeams_param</name>
           <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js</valueProcess>
         </entityParameter>
-        <entityParameter>
-          <name>SalesprojectCode_param</name>
-          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js</valueProcess>
-        </entityParameter>
       </children>
     </entityConsumer>
     <entityConsumer>
@@ -672,10 +668,7 @@
     <entityField>
       <name>MST_TEAM_ID</name>
       <title>Team</title>
-      <linkedContext>MSTTeam</linkedContext>
-      <state>INVISIBLE</state>
-      <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js</stateProcess>
-      <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js</displayValueProcess>
+      <state>READONLY</state>
     </entityField>
     <entityField>
       <name>COUNT</name>
@@ -726,6 +719,10 @@
           <name>ChecklistIds_param</name>
           <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/checklistentryvalues/children/checklistids_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>Presentationmode_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/checklistentryvalues/children/presentationmode_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityParameter>
@@ -769,6 +766,17 @@
           <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
           <titleProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
         </entityActionField>
+        <entityActionField>
+          <name>export</name>
+          <title>Export</title>
+          <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/onActionProcess.js</onActionProcess>
+          <isMenuAction v="true" />
+          <isObjectAction v="false" />
+          <iconId>NEON:EXPORT</iconId>
+          <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/stateProcess.js</stateProcess>
+          <tooltip>Export fields of this table</tooltip>
+          <tooltipProcess>%aditoprj%/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/tooltipProcess.js</tooltipProcess>
+        </entityActionField>
       </children>
     </entityActionGroup>
     <entityActionField>
@@ -1009,7 +1017,7 @@
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>MST_TEAM_ID.value</name>
-          <recordfield>MST_TEAM.MST_TEAMID</recordfield>
+          <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.value/expression.js</expression>
         </dbRecordFieldMapping>
         <aggregateFieldDbMapping>
           <name>COUNT_aggregate.value</name>
@@ -1021,10 +1029,6 @@
           <recordfield>CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE</recordfield>
           <isFilterable v="true" />
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>MST_TEAM_ID.displayValue</name>
-          <recordfield>MST_TEAM.TEAMNAME</recordfield>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>DATE_NEW.value</name>
           <recordfield>SALESPROJECT.DATE_NEW</recordfield>
@@ -1059,6 +1063,10 @@
           <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/volumeweighted_aggregate.value/expression.js</expression>
           <aggregateType>AVG</aggregateType>
         </aggregateFieldDbMapping>
+        <dbRecordFieldMapping>
+          <name>MST_TEAM_ID.displayValue</name>
+          <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>DATE_EDIT.value</name>
           <recordfield>SALESPROJECT.DATE_EDIT</recordfield>
diff --git a/entity/Salesproject_entity/entityfields/checklistentryvalues/children/checklistids_param/valueProcess.js b/entity/Salesproject_entity/entityfields/checklistentryvalues/children/checklistids_param/valueProcess.js
index 19ac32389a050be943aa0c0c272713fbdbd5f687..b90d52e23c9b51cec739baa5536923931cd08e53 100644
--- a/entity/Salesproject_entity/entityfields/checklistentryvalues/children/checklistids_param/valueProcess.js
+++ b/entity/Salesproject_entity/entityfields/checklistentryvalues/children/checklistids_param/valueProcess.js
@@ -14,8 +14,6 @@ if(select){
                         .leftJoin("CONTACT", "SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID")
                         .leftJoin("ORGANISATION", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID")
                         .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID")
-                        .leftJoin("MST_TEAMLINK", "SALESPROJECT.SALESPROJECTID = MST_TEAMLINK.OBJECT_ROWID and MST_TEAMLINK.OBJECT_TYPE = '" + context + "'")
-                        .leftJoin("MST_TEAM", "MST_TEAM.MST_TEAMID = MST_TEAMLINK.MST_TEAM_ID")
                         .where("SALESPROJECT.SALESPROJECTID", vars.get("$field.SALESPROJECTID"))
                         .arrayRow();
                         
diff --git a/entity/Salesproject_entity/entityfields/checklistentryvalues/children/presentationmode_param/valueProcess.js b/entity/Salesproject_entity/entityfields/checklistentryvalues/children/presentationmode_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c5f4daf64965b6611992280cd8e2e9488b05f12b
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/checklistentryvalues/children/presentationmode_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$sys.presentationmode"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js b/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js
deleted file mode 100644
index 14271e0911152fe467c4283f2b8a6245288c0bc7..0000000000000000000000000000000000000000
--- a/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import("MSTeams_lib");
-import("system.result");
-import("Sql_lib");
-
-var res;
-
-if (MSTeamsUtils.isTeamsEnabled())
-    res = newSelect("TEAMNAME")
-        .from("MST_TEAM")
-        .whereIfSet("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID")
-        .cell(true);
-else
-    res = "";
-
-result.string(res);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js b/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js
deleted file mode 100644
index 0a84b37c599e80e8b1295c2cd50f2aa0c548041b..0000000000000000000000000000000000000000
--- a/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import("MSTeams_lib");
-import("system.result");
-import("system.vars");
-import("system.neon");
-
-var res = neon.COMPONENTSTATE_INVISIBLE;
-var recordState = vars.get("$sys.recordstate");
-if (MSTeamsUtils.isTeamsEnabled() && recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT)
-    res = neon.COMPONENTSTATE_READONLY;
-    
-result.string(res);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/onActionProcess.js b/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c68dcef71d0a7db12fd4d25819640764899dbad
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/onActionProcess.js
@@ -0,0 +1,11 @@
+import("ExportTemplate_lib");
+import("system.vars");
+
+var selection = vars.get("$sys.selection");
+
+if(selection.length == 0)     //no selection -> use Filtercondition;
+{
+    selection = vars.get("$sys.filter");
+}
+
+ExportTemplateUtils.addParticipants(JSON.stringify(selection), vars.get("$sys.currentcontextname"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/stateProcess.js b/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7fc578ee7942eeb948f08d3dd86f5950d3fa1c41
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/stateProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("FilterViewAction_lib");
+import("system.vars");
+
+var contactCount = vars.get("$sys.datarowcount");
+
+result.string(FilterViewActionUtils.getComponentStateByRowCount(contactCount));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/tooltipProcess.js b/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/tooltipProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4aaaed5c074ef854441aa45e3e7993b2f77c04c4
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/observeactiongroup/children/export/tooltipProcess.js
@@ -0,0 +1,4 @@
+import("system.translate");
+import("system.result");
+
+result.string(translate.text("Export columns using a exporttemplate"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/openclassificationoverview/onActionProcess.js b/entity/Salesproject_entity/entityfields/openclassificationoverview/onActionProcess.js
index ab0320216058661142f965367f42a5f671726ea5..d103f7cdf673de148a7aba47f84f7b033efdcd6c 100644
--- a/entity/Salesproject_entity/entityfields/openclassificationoverview/onActionProcess.js
+++ b/entity/Salesproject_entity/entityfields/openclassificationoverview/onActionProcess.js
@@ -4,4 +4,4 @@ import("system.vars");
 
 var classificationData = ClassificationUtils.executeUpdating(vars.get("$field.SALESPROJECTID"), "Salesproject");
 
-neon.openContext("Classification", "ClassificationTree_view", null, neon.OPERATINGSTATE_SEARCH, {"ClassificationContent_param": classificationData}, null);
\ No newline at end of file
+neon.openContext("Classification", "ClassificationTree_view", null, neon.OPERATINGSTATE_SEARCH, {"ClassificationContent_param": classificationData["outputValue"]}, null);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js
index 2db6219c71582c8d5d3fd91e4a8c1196fe87470b..b5c569dfda29bdfcee8129b335c981e64cf3272a 100644
--- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js
+++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js
@@ -4,7 +4,5 @@ import("AttributeFilter_lib");
 var sqlCond = AttributeFilterExtensionMaker.makeFilterGroupQuery("SALESPROJECT \n\
     left join CONTACT on (SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID) \n\
     left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)\n\
-    left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)\n\
-    left join MST_TEAMLINK on (SALESPROJECT.SALESPROJECTID = MST_TEAMLINK.OBJECT_ROWID and MST_TEAMLINK.OBJECT_TYPE = 'Salesproject')\n\
-    left join MST_TEAM on (MST_TEAM.MST_TEAMID = MST_TEAMLINK.MST_TEAM_ID)");
+    left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)");
 result.string(sqlCond);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js
index 5532af0f5da27e0cb1351373a063ca94cf02f786..b9e273ff9f34870de6b80808285eda2d0205fbc9 100644
--- a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js
+++ b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js
@@ -6,6 +6,4 @@ import("KeywordRegistry_basic");
 result.string("SALESPROJECT \n\
     left join CONTACT on (SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID) \n\
     left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)\n\
-    left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)\n\
-    left join MST_TEAMLINK on (SALESPROJECT.SALESPROJECTID = MST_TEAMLINK.OBJECT_ROWID and MST_TEAMLINK.OBJECT_TYPE = 'Salesproject')\n\
-    left join MST_TEAM on (MST_TEAM.MST_TEAMID = MST_TEAMLINK.MST_TEAM_ID)");
\ No newline at end of file
+    left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)");
diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
index 61aa43cba4691fadddc0a7dd5a6f6789b966cefd..35e786cfb3008b4557e02081b0dd6a55622745ee 100644
--- a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
@@ -1,3 +1,4 @@
+import("MSTeams_lib");
 import("ActivityTask_lib");
 import("system.tools");
 import("system.datetime");
@@ -19,6 +20,7 @@ import("system.teams");
 var needToUpdateForecast = null;
 var rowdata = vars.get("$local.rowdata");
 
+var mstEventMessages = [];
 // create Milestones if changed
 vars.get("$local.changed").forEach(function(fieldName) {
     var typeValue;
@@ -28,6 +30,12 @@ vars.get("$local.changed").forEach(function(fieldName) {
     switch (fieldName) {
         case "SALESPROJECT.PHASE":
             typeValue = "SalesprojectPhase";
+            mstEventMessages.push(translate.withArguments(
+                "${SALESPROJECT_MST_PHASE_CHANGE}", [
+                    vars.get("$field.PROJECTTITLE"),
+                    vars.get("$field.PHASE.displayValue")
+                ]
+            ));
             break;
         case "SALESPROJECT.STATUS":
             // Milestone
@@ -117,6 +125,12 @@ vars.get("$local.changed").forEach(function(fieldName) {
             {
                 clearReason = true;
             }
+            mstEventMessages.push(translate.withArguments(
+                "${SALESPROJECT_MST_STATUS_CHANGE}", [
+                    vars.get("$field.PROJECTTITLE"),
+                    vars.get("$field.STATUS.displayValue")
+                ]
+            ));
             break;
     }
     
@@ -136,6 +150,16 @@ vars.get("$local.changed").forEach(function(fieldName) {
     }
 });
 
+var teamId = vars.get("$field.MST_TEAM_ID");
+if(mstEventMessages.length && teamId)
+{
+    var serviceUrl = MSTeamsUtils.getTeamInfo(teamId).serviceUrl;
+    serviceUrl && teams.sendNotification(serviceUrl,
+        teams.getGeneralChannelId(teamId),
+        mstEventMessages.join("<br><br>")
+    );
+}
+
 if(rowdata["SALESPROJECT.STATUS"] == $KeywordRegistry.salesprojectState$aborted()
     || rowdata["SALESPROJECT.STATUS"] == $KeywordRegistry.salesprojectState$partialOrder()
     || rowdata["SALESPROJECT.STATUS"] == $KeywordRegistry.salesprojectState$order()
@@ -146,14 +170,6 @@ if(rowdata["SALESPROJECT.STATUS"] == $KeywordRegistry.salesprojectState$aborted(
     .and("SALESPROJECT_MILESTONE.KIND", "SalesprojectPhase").updateData(true, "SALESPROJECT_MILESTONE", ["DATE_END"], null, [datetime.date()]);
 }
 
-var [serviceUrl, channelId] = newSelect(["SERVICE_URL", "GENERAL_CHANNELID"])
-    .from("MST_TEAM")
-    .where("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID")
-    .arrayRow();
-
-if (serviceUrl)
-    teams.sendNotification(serviceUrl, channelId, "Etwas hat sich im Projekt "+ vars.get("$field.PROJECTTITLE") +" geaendert");
-
 if (needToUpdateForecast)
     Salesproject.notifyToUpdateForecast();
 
diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..b3e59d0b10034cb5f383b3358b674ebbddc9dec6
--- /dev/null
+++ b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.displayvalue/expression.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("AttributeRegistry_basic");
+import("Sql_lib");
+
+var valueSql = newSelect("AB_ATTRIBUTERELATION.ID_VALUE").from("AB_ATTRIBUTERELATION")
+    .where("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", $AttributeRegistry.mstTeam())
+    .and("AB_ATTRIBUTERELATION.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID");
+var sql = newSelect("TEAMNAME").from("MST_TEAM")
+    .where("MST_TEAM.MST_TEAMID", valueSql).toString();
+result.string("(" + sql + ")");
diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.value/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.value/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..75ea5930056ae54635651aad7d220e90581eb2f3
--- /dev/null
+++ b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/mst_team_id.value/expression.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("AttributeRegistry_basic");
+import("Sql_lib");
+
+var sql = newSelect("AB_ATTRIBUTERELATION.ID_VALUE").from("AB_ATTRIBUTERELATION")
+    .where("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", $AttributeRegistry.mstTeam())
+    .and("AB_ATTRIBUTERELATION.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID").toString();
+result.string("(" + sql + ")");
diff --git a/entity/SerialLetter_entity/contentDescriptionProcess.js b/entity/SerialLetter_entity/contentDescriptionProcess.js
index e5c485bdec047e5cbf0560dfb7011f63343472dd..f8a6255af632b55fe1889a553798787e25c6e9bd 100644
--- a/entity/SerialLetter_entity/contentDescriptionProcess.js
+++ b/entity/SerialLetter_entity/contentDescriptionProcess.js
@@ -1,5 +1,7 @@
+import("KeywordRegistry_basic");
+import("system.translate");
 import("Keyword_lib");
 import("system.result");
 import("system.vars");
 
-result.string(KeywordUtils.getViewValue("SerialLetterStatus", vars.get("$field.STATUS")));
\ No newline at end of file
+result.string(translate.text("Status") + ": "+KeywordUtils.getViewValue($KeywordRegistry.serialLetterStatus(), vars.get("$field.STATUS")));
\ No newline at end of file
diff --git a/entity/ServiceEmailRecipients_entity/ServiceEmailRecipients_entity.aod b/entity/ServiceEmailRecipients_entity/ServiceEmailRecipients_entity.aod
index 14587c1c59fe4274ae3e95bf5b7ccc2defde911e..e91a4c5f39a803af31846213648d3a6a13e4605d 100644
--- a/entity/ServiceEmailRecipients_entity/ServiceEmailRecipients_entity.aod
+++ b/entity/ServiceEmailRecipients_entity/ServiceEmailRecipients_entity.aod
@@ -20,12 +20,6 @@
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
-    <entityConsumer>
-      <name>ServiceMail</name>
-      <dependency>
-        <name>dependency</name>
-      </dependency>
-    </entityConsumer>
     <entityConsumer>
       <name>PersonsConsumer</name>
       <dependency>
@@ -34,18 +28,6 @@
         <fieldName>Contacts</fieldName>
       </dependency>
     </entityConsumer>
-    <entityConsumer>
-      <name>ServiceEmailRecipientsEmployeesConsumer</name>
-      <dependency>
-        <name>dependency</name>
-      </dependency>
-    </entityConsumer>
-    <entityConsumer>
-      <name>ServiceEmailRecipientsPersonsConsumer</name>
-      <dependency>
-        <name>dependency</name>
-      </dependency>
-    </entityConsumer>
     <entityField>
       <name>contact_id</name>
       <title>Contact</title>
diff --git a/entity/ServiceEmail_entity/ServiceEmail_entity.aod b/entity/ServiceEmail_entity/ServiceEmail_entity.aod
index 155c7b6436fd82ebdfccd9a828097368c6544ff6..02fc4d48fa8c01c2539e67a24f1003eca47eb915 100644
--- a/entity/ServiceEmail_entity/ServiceEmail_entity.aod
+++ b/entity/ServiceEmail_entity/ServiceEmail_entity.aod
@@ -173,10 +173,6 @@
         <fieldName>SpecificContainerKeywords</fieldName>
       </dependency>
       <children>
-        <entityParameter>
-          <name>ExcludedKeyIdsSubquery_param</name>
-          <valueProcess>%aditoprj%/entity/ServiceEmail_entity/entityfields/keywordsticketstatus/children/excludedkeyidssubquery_param/valueProcess.js</valueProcess>
-        </entityParameter>
         <entityParameter>
           <name>ContainerName_param</name>
           <valueProcess>%aditoprj%/entity/ServiceEmail_entity/entityfields/keywordsticketstatus/children/containername_param/valueProcess.js</valueProcess>
@@ -251,16 +247,9 @@
     </entityProvider>
     <entityField>
       <name>ServiceEmailRecipientsEmployee</name>
-      <consumer>ServiceEmailRecipientsEmployeeConsumer</consumer>
       <linkedContext>Employee</linkedContext>
       <valueProcess>%aditoprj%/entity/ServiceEmail_entity/entityfields/serviceemailrecipientsemployee/valueProcess.js</valueProcess>
     </entityField>
-    <entityConsumer>
-      <name>ServiceEmailRecipientsEmployeeConsumer</name>
-      <dependency>
-        <name>dependency</name>
-      </dependency>
-    </entityConsumer>
     <entityParameter>
       <name>DocumentTemplateType_param</name>
       <expose v="true" />
diff --git a/entity/ServiceEmail_entity/entityfields/conclusion/stateProcess.js b/entity/ServiceEmail_entity/entityfields/conclusion/stateProcess.js
index ed6bf1f9fe8458ff48dc0e7c13a43888182e6b03..3f5af3519d294c871f6d10ce934ac626f91595d7 100644
--- a/entity/ServiceEmail_entity/entityfields/conclusion/stateProcess.js
+++ b/entity/ServiceEmail_entity/entityfields/conclusion/stateProcess.js
@@ -8,7 +8,7 @@ import("KeywordRegistry_basic");
 var str_ret = neon.COMPONENTSTATE_INVISIBLE;
 var str_status = vars.get( "$field.TICKET_STATUS_AFTER_SEND");
 
-if( [ $KeywordRegistry.taskStatus$ended(), $KeywordRegistry.taskStatus$endedAbandoned(), $KeywordRegistry.taskStatus$endedDone()].includes( str_status) != -1)
+if( [$KeywordRegistry.taskStatus$ended(), $KeywordRegistry.taskStatus$endedAbandoned(), $KeywordRegistry.taskStatus$endedDone()].includes( str_status))
 {
     str_ret = ( [neon.OPERATINGSTATE_EDIT, neon.OPERATINGSTATE_NEW].indexOf( vars.get( "$sys.recordstate")) != -1)? 
         neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_READONLY;
diff --git a/entity/ServiceEmail_entity/entityfields/documenttemplates/children/includedocumenttemplateids_param/valueProcess.js b/entity/ServiceEmail_entity/entityfields/documenttemplates/children/includedocumenttemplateids_param/valueProcess.js
index ff0a6c5305debd67631c04ad323b40fabcafbe24..30deec0d2f3960f2eefc91b1121c84170502e531 100644
--- a/entity/ServiceEmail_entity/entityfields/documenttemplates/children/includedocumenttemplateids_param/valueProcess.js
+++ b/entity/ServiceEmail_entity/entityfields/documenttemplates/children/includedocumenttemplateids_param/valueProcess.js
@@ -11,11 +11,13 @@ if (actionName == "replayEmailAction")
    documenttemplates = newSelect("DOCUMENTTEMPLATEID")
         .from("DOCUMENTTEMPLATE")
         .leftJoin("DOCUMENTTEMPLATE_TICKETCATEGORY", "DOCUMENTTEMPLATE_ID = DOCUMENTTEMPLATEID")
-        .whereIfSet("DOCUMENTTEMPLATE.KIND", $KeywordRegistry.documentTemplateType$mail())
-        .andIfSet("DOCUMENTTEMPLATE_TICKETCATEGORY.CLASSIFICATION", "$param.TicketCategory_param")
-        .or("DOCUMENTTEMPLATE.CLASSIFICATION", 10)
-        .or("DOCUMENTTEMPLATE.CLASSIFICATION", 12)
+        .where("DOCUMENTTEMPLATE.KIND", $KeywordRegistry.documentTemplateType$mail())
+        .and(newWhere()
+        .or("DOCUMENTTEMPLATE.CLASSIFICATION", $KeywordRegistry.documentTemplateTypeCategory$singleall())
+        .or("DOCUMENTTEMPLATE.CLASSIFICATION", $KeywordRegistry.documentTemplateTypeCategory$singleexternal()))
+        .and(newWhere()
         .or("DOCUMENTTEMPLATE.ALL_TICKET_CATEGORIES", 1)
+        .or("DOCUMENTTEMPLATE_TICKETCATEGORY.CLASSIFICATION", "$param.TicketCategory_param"))
         .arrayColumn();
 }
 
@@ -24,11 +26,13 @@ if (actionName == "forwardEmailAction")
     documenttemplates = newSelect("DOCUMENTTEMPLATEID")
         .from("DOCUMENTTEMPLATE")
         .leftJoin("DOCUMENTTEMPLATE_TICKETCATEGORY", "DOCUMENTTEMPLATE_ID = DOCUMENTTEMPLATEID")
-        .whereIfSet("DOCUMENTTEMPLATE.KIND", $KeywordRegistry.documentTemplateType$mail())
-        .andIfSet("DOCUMENTTEMPLATE_TICKETCATEGORY.CLASSIFICATION", "$param.TicketCategory_param")
-        .or("DOCUMENTTEMPLATE.CLASSIFICATION", 10)
-        .or("DOCUMENTTEMPLATE.CLASSIFICATION", 11)
+        .where("DOCUMENTTEMPLATE.KIND", $KeywordRegistry.documentTemplateType$mail())
+        .and(newWhere()
+        .or("DOCUMENTTEMPLATE.CLASSIFICATION", $KeywordRegistry.documentTemplateTypeCategory$singleall())
+        .or("DOCUMENTTEMPLATE.CLASSIFICATION", $KeywordRegistry.documentTemplateTypeCategory$singleinternal()))
+        .and(newWhere()
         .or("DOCUMENTTEMPLATE.ALL_TICKET_CATEGORIES", 1)
+        .or("DOCUMENTTEMPLATE_TICKETCATEGORY.CLASSIFICATION", "$param.TicketCategory_param"))
         .arrayColumn();
 }
 
diff --git a/entity/ServiceEmail_entity/entityfields/keywordsticketstatus/children/excludedkeyidssubquery_param/valueProcess.js b/entity/ServiceEmail_entity/entityfields/keywordsticketstatus/children/excludedkeyidssubquery_param/valueProcess.js
deleted file mode 100644
index f5116087517790fd336c6c9b251962582ca41451..0000000000000000000000000000000000000000
--- a/entity/ServiceEmail_entity/entityfields/keywordsticketstatus/children/excludedkeyidssubquery_param/valueProcess.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import("system.vars");
-import("system.result");
-import("KeywordRegistry_basic")
-
-if(vars.get("$param.ActionName_param"))
-{
-    var actionName = vars.get("$param.ActionName_param");
-     
-    if(actionName != null)
-    {
-      
-        if( (actionName == "replayEmailAction") || (actionName == "replayEmailToAllAction") )
-        {           
-            result.string($KeywordRegistry.taskStatus$entry(),$KeywordRegistry.taskStatus$reopen(),$KeywordRegistry.taskStatus$inProgress(),$KeywordRegistry.taskStatus$internalreply());
-        }
-        if(actionName == 'forwardEmailAction')
-        {
-            result.string($KeywordRegistry.taskStatus$entry(),$KeywordRegistry.taskStatus$reopen(),$KeywordRegistry.taskStatus$request(),$KeywordRegistry.taskStatus$reply(),$KeywordRegistry.taskStatus$inProgress());
-        }
-    }
-}        
-
-
-
-
diff --git a/entity/ServiceEmail_entity/onValidation.js b/entity/ServiceEmail_entity/onValidation.js
index 44b92991eac08e87aa241696ab5beae4f1ef470f..fbfb40d8866791fa449d85148dbb94af5ea9d82d 100644
--- a/entity/ServiceEmail_entity/onValidation.js
+++ b/entity/ServiceEmail_entity/onValidation.js
@@ -4,37 +4,6 @@ import("system.neon");
 import("system.translate");
 import("system.result");
 import("system.vars");
-
-var noRecipient = true;
-
-var recipientsTo = [];
-
-if(vars.exists("$field.Recipients_TO.insertedRows"))
-{
-    recipientsTo = vars.get("$field.Recipients_TO.insertedRows");
-    recipientsTo.forEach(function(obj)
-    {
-        if(obj.Recipient)
-        { 
-            noRecipient = false;   
-        }
-    });
-}
- 
-if(noRecipient)
-{
-    if( vars.exists("$field.Recipients_ToLookup.insertedRows"))
-    {
-        recipientsTo = vars.get("$field.Recipients_ToLookup.insertedRows");
-        recipientsTo.forEach(function(obj)
-        {
-            if(obj.RecipientPerson)
-            {
-                noRecipient = false;   
-            }
-        });
-    }   
-}
  
  //// CHECK SENDER
 
diff --git a/entity/ServiceEmail_entity/recordcontainers/jdito/onInsert.js b/entity/ServiceEmail_entity/recordcontainers/jdito/onInsert.js
index 2cb651be1bb7534c4ff52488a1163eb808219d77..8c507747bc810136d2b47e3289006557b8678a66 100644
--- a/entity/ServiceEmail_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/ServiceEmail_entity/recordcontainers/jdito/onInsert.js
@@ -17,6 +17,8 @@ import("ActivityTask_lib");
 var recArray    = [];
 var ccArray     = [];
 var bccArray    = [];
+var TaskfieldValues = {};
+var TicketfieldValues = {};
 var fromEmail   = vars.get("$field.from");
 var subject     = vars.get("$field.subject");
 
@@ -188,17 +190,14 @@ if(returnedMsgAfterSend == true)
     // insert for ACTIVITY
     var DataPreset =
     {
-        "directionKeywordId" : $KeywordRegistry.activityDirection$outgoing,
+        "directionKeywordId" : $KeywordRegistry.activityDirection$outgoing(),
         "subject"            : infoText,
         "content"            : contentActivity,
-        "categoryKeywordId"  : $KeywordRegistry.activityCategory$mail() 
-    }
-    var ActivityLink =
-    {
-        "SupportTicket"  : ticketID
-    }
-    
-    ActivityUtils.insertNewActivity(DataPreset, ActivityLink);
+        "categoryKeywordId"  : $KeywordRegistry.activityCategory$mail()
+    };
+    var ActivityLink = ["Supportticket", ticketID];
+
+    ActivityUtils.insertNewActivity(DataPreset, [ActivityLink]);
     
     /// UPDATE TICKET FIELD:  CONCLUSION & DATE_EDIT_STATUS
     if( ticketID)
@@ -290,18 +289,15 @@ if(returnedMsgAfterSend == true)
     // insert for ACTIVITY
     var DataPreset =
     {
-        "directionKeywordId"   : $KeywordRegistry.activityDirection$outgoing,
+        "directionKeywordId"   : $KeywordRegistry.activityDirection$outgoing(),
         "responsibleContactId" : vars.get( "$param.ContactId_param"),
         "subject"              : translate.text("EMAIL ERROR") + "!",
         "content"              : contentActivity,
         "categoryKeywordId"    : $KeywordRegistry.activityCategory$mail() 
-    }
-    var ActivityLink =
-    {
-        "SupportTicket"  : ticketID
-    }
-    
-    ActivityUtils.insertNewActivity(DataPreset, ActivityLink);
+    };
+    var ActivityLink = ["Supportticket", ticketID];
+
+    ActivityUtils.insertNewActivity(DataPreset, [ActivityLink]);
      
 }
 
diff --git a/entity/SupportTicketMultiSelect_entity/SupportTicketMultiSelect_entity.aod b/entity/SupportTicketMultiSelect_entity/SupportTicketMultiSelect_entity.aod
index cc6a0d3c3d385168837672224094486386f02d8b..c8daea565749df730da1358a2480166421e75c80 100644
--- a/entity/SupportTicketMultiSelect_entity/SupportTicketMultiSelect_entity.aod
+++ b/entity/SupportTicketMultiSelect_entity/SupportTicketMultiSelect_entity.aod
@@ -103,11 +103,35 @@
       <name>ChangeData</name>
       <title>Save changes</title>
       <onActionProcess>%aditoprj%/entity/SupportTicketMultiSelect_entity/entityfields/changedata/onActionProcess.js</onActionProcess>
+      <titleProcess>%aditoprj%/entity/SupportTicketMultiSelect_entity/entityfields/changedata/titleProcess.js</titleProcess>
     </entityActionField>
     <entityProvider>
       <name>#PROVIDER_AGGREGATES</name>
       <useAggregates v="true" />
     </entityProvider>
+    <entityField>
+      <name>CONCLUSION</name>
+      <title>Conclusion</title>
+      <consumer>KeywordTicketConclusion</consumer>
+      <mandatoryProcess>%aditoprj%/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/mandatoryProcess.js</mandatoryProcess>
+      <stateProcess>%aditoprj%/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>KeywordTicketConclusion</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/SupportTicketMultiSelect_entity/entityfields/keywordticketconclusion/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <datalessRecordContainer>
diff --git a/entity/SupportTicketMultiSelect_entity/entityfields/changedata/onActionProcess.js b/entity/SupportTicketMultiSelect_entity/entityfields/changedata/onActionProcess.js
index dd746b7f0eb2f24b041346fc721ecd79fe12e2c2..41ee4231cb9743c4c282d138cef7ec27294f9cb4 100644
--- a/entity/SupportTicketMultiSelect_entity/entityfields/changedata/onActionProcess.js
+++ b/entity/SupportTicketMultiSelect_entity/entityfields/changedata/onActionProcess.js
@@ -1,34 +1,58 @@
+import("ActivityTask_lib");
+import("system.translate");
+import("system.tools");
 import("Util_lib");
 import("Sql_lib");
 import("system.neon");
 import("system.vars");
+import("KeywordRegistry_basic");
 
 var taskIDs= JSON.parse(vars.get("$param.TaskIds_param"));
 var TaskfieldValues = {};
 var TicketfieldValues = {};
 
-///  TASK
+///  PRIORITY
 if(vars.exists("$field.PRIORITY") && (vars.get("$field.PRIORITY") != "" ))
 {
     TaskfieldValues["PRIORITY"] = vars.get("$field.PRIORITY");
 }
-
+/// STATUS
 if(vars.exists("$field.STATUS") && (vars.get("$field.STATUS") != "" ))
 {
     TaskfieldValues["STATUS"] = vars.get("$field.STATUS");
-}
-
-/// UPDATE TASK
-TaskfieldValues["STATUS"] = vars.get("$field.TICKET_STATUS_AFTER_SEND"); 
-newWhere("TASK.TASKID",taskIDs,SqlBuilder.IN()).updateFields(TaskfieldValues);
-    
-///  TICKET
-var TicketfieldValues = {};
-
+    TicketfieldValues["DATE_EDIT_STATUS"] = vars.get("$sys.date");
+    if(vars.get("$field.STATUS") == $KeywordRegistry.taskStatus$unassigned())
+    {
+        TicketfieldValues["EDITOR_CONTACT_ID"] = "";
+    }
+    if(vars.get("field.STATUS") == $KeywordRegistry.taskStatus$ended())
+    {
+        TicketfieldValues["DATE_END"] = vars.get("$sys.date");
+        TicketfieldValues["CONCLUSION"] = vars.get("$field.CONCLUSION");
+        
+        var obj_toolsUser = tools.getCurrentUser()[tools.PARAMS];
+        
+        //insert Activity
+        DataPreset =
+        {
+            "directionKeywordId" : $KeywordRegistry.activityDirection$internal(),
+            "subject"            : translate.text("Ticket returned"),
+            "content"            : translate.text("Ticket returned to pool") + ". "
+                                   +"\n"+  translate.text("Original editor") + ": " + vars.get( "$field.EDITOR_CONTACT_ID") 
+                                   +"\n"+ translate.text("Returned by") + ": "+ obj_toolsUser[tools.FIRSTNAME] +" "+ obj_toolsUser[tools.LASTNAME],
+            "categoryKeywordId"  : $KeywordRegistry.activityCategory$sys() 
+        };
+        var ActivityLink = ["Supportticket", ticketID];
+        
+        ActivityUtils.insertNewActivity(DataPreset, [ActivityLink]);
+    }
+} 
+///  EDITOR
 if(vars.exists("$field.EDITOR_CONTACT_ID") && (vars.get("$field.EDITOR_CONTACT_ID") != "" ))
 {
     TicketfieldValues["EDITOR_CONTACT_ID"] = vars.get("$field.EDITOR_CONTACT_ID");
 }
+/// CATEGORY
 if(vars.exists("$field.CATEGORY") && (vars.get("$field.CATEGORY") != "" ))
 {
     TicketfieldValues["CATEGORY"] = vars.get("$field.CATEGORY");      
diff --git a/entity/SupportTicketMultiSelect_entity/entityfields/changedata/titleProcess.js b/entity/SupportTicketMultiSelect_entity/entityfields/changedata/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c68d9bac28840d78e04d019b6712de9e5678792a
--- /dev/null
+++ b/entity/SupportTicketMultiSelect_entity/entityfields/changedata/titleProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.result");
+
+
+result.string(translate.text("Save changes"));
\ No newline at end of file
diff --git a/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/displayValueProcess.js b/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5bb3f4ad5d00d2b1ae6e2e765f47bc3725d4b079
--- /dev/null
+++ b/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/displayValueProcess.js
@@ -0,0 +1,14 @@
+import("Keyword_lib");
+import("system.vars");
+import("system.result");
+
+
+var subject = KeywordUtils.getViewValue("TICKETCONCLUSION", vars.get("$field.CONCLUSION"));
+if (!subject)
+{
+    result.string("-");
+}
+else
+{
+    result.string(subject);
+}
\ No newline at end of file
diff --git a/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/mandatoryProcess.js b/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4147675923951e3dd12d802aa5bd8044a5cd7cf4
--- /dev/null
+++ b/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/mandatoryProcess.js
@@ -0,0 +1,15 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+
+
+
+if (vars.get ("$field.STATUS") != $KeywordRegistry.taskStatus$ended())
+{
+    result.string("false");
+}
+else
+{
+    result.string("true");
+}
\ No newline at end of file
diff --git a/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/stateProcess.js b/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8a8894566f092594ea56b3f54fcb5ccd15066004
--- /dev/null
+++ b/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/stateProcess.js
@@ -0,0 +1,14 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+import("KeywordRegistry_basic");
+
+
+var str_ret = neon.COMPONENTSTATE_INVISIBLE;
+var str_status = vars.get( "$field.STATUS");
+
+if( [ $KeywordRegistry.taskStatus$ended(), $KeywordRegistry.taskStatus$endedDone(), $KeywordRegistry.taskStatus$endedAbandoned()].includes( str_status))
+{
+    str_ret = neon.COMPONENTSTATE_EDITABLE;
+}
+result.string( str_ret);
\ No newline at end of file
diff --git a/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/valueProcess.js b/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8d5e191ffdbee7d8428d18f99fed8d0cfd5d27b5
--- /dev/null
+++ b/entity/SupportTicketMultiSelect_entity/entityfields/conclusion/valueProcess.js
@@ -0,0 +1,10 @@
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if (!vars.get("$this.value") && vars.get("$field.STATUS") == $KeywordRegistry.taskStatus$ended())
+{
+    result.string($KeywordRegistry.ticketConclusion$success());
+}
\ No newline at end of file
diff --git a/entity/SupportTicketMultiSelect_entity/entityfields/keywordticketconclusion/children/containername_param/valueProcess.js b/entity/SupportTicketMultiSelect_entity/entityfields/keywordticketconclusion/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..aac3b38f48946a1e010bf845ed0f789709f9e832
--- /dev/null
+++ b/entity/SupportTicketMultiSelect_entity/entityfields/keywordticketconclusion/children/containername_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("KeywordRegistry_basic");
+import("system.result");
+
+
+result.string( $KeywordRegistry.ticketConclusion())
\ No newline at end of file
diff --git a/entity/SupportTicketTemplate_entity/SupportTicketTemplate_entity.aod b/entity/SupportTicketTemplate_entity/SupportTicketTemplate_entity.aod
index 355b20d2d6c8c1f1919de2498ea5bba4e7d35d6e..55224bb6edc71c401690663acb1d1b644d6f6613 100644
--- a/entity/SupportTicketTemplate_entity/SupportTicketTemplate_entity.aod
+++ b/entity/SupportTicketTemplate_entity/SupportTicketTemplate_entity.aod
@@ -26,6 +26,7 @@
       <name>NAME</name>
       <title>Name</title>
       <mandatory v="true" />
+      <onValidation>%aditoprj%/entity/SupportTicketTemplate_entity/entityfields/name/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>INBOX_ID</name>
@@ -91,12 +92,12 @@
       <name>TEMPLATENO</name>
       <title>Template No.</title>
       <contentType>NUMBER</contentType>
-      <minValue v="1" />
       <outputFormat>000</outputFormat>
       <inputFormat>000</inputFormat>
       <mandatory v="true" />
-      <state>READONLY</state>
+      <state>AUTO</state>
       <valueProcess>%aditoprj%/entity/SupportTicketTemplate_entity/entityfields/templateno/valueProcess.js</valueProcess>
+      <onValidation>%aditoprj%/entity/SupportTicketTemplate_entity/entityfields/templateno/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>PRIORITY</name>
@@ -230,14 +231,16 @@
       <title>Individual Answer</title>
       <contentType>BOOLEAN</contentType>
       <groupable v="true" />
+      <state>AUTO</state>
     </entityField>
     <entityField>
       <name>DOCUMENTTEMPLATE_ID</name>
       <title>Individual Reply Template</title>
       <consumer>ReplyDocumentTemplates</consumer>
       <mandatoryProcess>%aditoprj%/entity/SupportTicketTemplate_entity/entityfields/documenttemplate_id/mandatoryProcess.js</mandatoryProcess>
+      <state>INVISIBLE</state>
+      <stateProcess>%aditoprj%/entity/SupportTicketTemplate_entity/entityfields/documenttemplate_id/stateProcess.js</stateProcess>
       <titleProcess>%aditoprj%/entity/SupportTicketTemplate_entity/entityfields/documenttemplate_id/titleProcess.js</titleProcess>
-      <displayValueProcess>%aditoprj%/entity/SupportTicketTemplate_entity/entityfields/documenttemplate_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
       <name>ReplyDocumentTemplates</name>
@@ -360,6 +363,10 @@
           <recordfield>TICKETTEMPLATE.DOCUMENTTEMPLATE_ID</recordfield>
           <isFilterable v="false" />
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DOCUMENTTEMPLATE_ID.displayValue</name>
+          <expression>%aditoprj%/entity/SupportTicketTemplate_entity/recordcontainers/db/recordfieldmappings/documenttemplate_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/SupportTicketTemplate_entity/entityfields/active_icon/colorProcess.js b/entity/SupportTicketTemplate_entity/entityfields/active_icon/colorProcess.js
index 9f6b4ca223fb99248e6dbf1c4dcae2aae67b7682..63d07d348cb8ddb198701710443a2784135055a8 100644
--- a/entity/SupportTicketTemplate_entity/entityfields/active_icon/colorProcess.js
+++ b/entity/SupportTicketTemplate_entity/entityfields/active_icon/colorProcess.js
@@ -2,16 +2,19 @@ import("system.neon");
 import("system.result");
 import("system.vars");
 
-var str_pmtType = vars.get( "$field.ACTIVE");
-var str_ret = "";
-switch( str_pmtType)
+if (vars.get( "$field.ACTIVE"))
 {
-    case "0":
-        str_ret = neon.PRIORITY_HIGH_COLOR;
-        break;
-    case "1":
-        str_ret = neon.PRIORITY_LOW_COLOR;
-        break;
+    switch( vars.get( "$field.ACTIVE"))
+    {
+        case "0":
+            result.string(neon.PRIORITY_HIGH_COLOR);
+            break;
+        case "1":
+            result.string(neon.PRIORITY_LOW_COLOR);
+            break;
+    }
+}
+else
+{
+    result.string(neon.PRIORITY_NONE_COLOR);
 }
-
-result.string( str_ret);
diff --git a/entity/SupportTicketTemplate_entity/entityfields/documenttemplate_id/displayValueProcess.js b/entity/SupportTicketTemplate_entity/entityfields/documenttemplate_id/displayValueProcess.js
deleted file mode 100644
index 2f5bed9490093a71bcd8def9c8b9a4c0547704e1..0000000000000000000000000000000000000000
--- a/entity/SupportTicketTemplate_entity/entityfields/documenttemplate_id/displayValueProcess.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("Sql_lib");
-import("system.vars");
-import("system.result");
-
-
-var sql = newSelect("DOCUMENTTEMPLATE.NAME")
-         .from("DOCUMENTTEMPLATE")
-         .where("DOCUMENTTEMPLATE.DOCUMENTTEMPLATEID",vars.get("$field.DOCUMENTTEMPLATE_ID"))
-         .cell();
-result.string(sql.tostring);
\ No newline at end of file
diff --git a/entity/SupportTicketTemplate_entity/entityfields/documenttemplate_id/stateProcess.js b/entity/SupportTicketTemplate_entity/entityfields/documenttemplate_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9eb72a64e4fe6829f84b0ed7a63f522bc9b605ff
--- /dev/null
+++ b/entity/SupportTicketTemplate_entity/entityfields/documenttemplate_id/stateProcess.js
@@ -0,0 +1,13 @@
+import("Util_lib");
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+if(Utils.toBoolean(vars.get("$field.INDIVIDUAL_ANSWER")))
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
+else
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
diff --git a/entity/SupportTicketTemplate_entity/entityfields/name/onValidation.js b/entity/SupportTicketTemplate_entity/entityfields/name/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..8b6d36c1fa248ae56bd1fbac857ae1ea3dd7479a
--- /dev/null
+++ b/entity/SupportTicketTemplate_entity/entityfields/name/onValidation.js
@@ -0,0 +1,16 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var sql = new SqlBuilder()
+                        .selectCount("TEMPLATENAME")
+                        .from("TICKETTEMPLATE")
+                        .where("TICKETTEMPLATE.TEMPLATENAME", vars.get("$field.NAME"))
+                        .andIfSet("TICKETTEMPLATE.TICKETTEMPLATEID", vars.get("$field.TEMPLATE_ID"),SqlBuilder.NOT_EQUAL())
+                        .cell();
+if (sql > 0)
+{
+    result.string(translate.text("Name has to be unique") + ".");
+}
\ No newline at end of file
diff --git a/entity/SupportTicketTemplate_entity/entityfields/templateno/onValidation.js b/entity/SupportTicketTemplate_entity/entityfields/templateno/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..1f76109237b6237c5e46e4f532f890f2db3f4884
--- /dev/null
+++ b/entity/SupportTicketTemplate_entity/entityfields/templateno/onValidation.js
@@ -0,0 +1,17 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var sql = new SqlBuilder()
+                        .selectCount("TEMPLATENO")
+                        .from("TICKETTEMPLATE")
+                        .where("TICKETTEMPLATE.TEMPLATENO", vars.get("$field.TEMPLATENO"))
+                        .andIfSet("TICKETTEMPLATE.TICKETTEMPLATEID", vars.get("$field.TEMPLATE_ID"),SqlBuilder.NOT_EQUAL())
+                        .cell();
+                        
+if (sql > 0)
+{
+    result.string(translate.text("Number has to be unique") + ".");
+}
\ No newline at end of file
diff --git a/entity/SupportTicketTemplate_entity/entityfields/templateno/valueProcess.js b/entity/SupportTicketTemplate_entity/entityfields/templateno/valueProcess.js
index b2ecc35230136b8b184a8610350048e5fb2f22ed..72cfe326b3761f0d83332b6cfd0632e6b4007a55 100644
--- a/entity/SupportTicketTemplate_entity/entityfields/templateno/valueProcess.js
+++ b/entity/SupportTicketTemplate_entity/entityfields/templateno/valueProcess.js
@@ -1,13 +1,10 @@
 import("Util_lib");
 import("system.neon");
-import("system.eMath");
 import("system.result");
-import("system.db");
 import("system.vars");
 
-var str_templateNo = vars.get( "$field.TEMPLATENO");
 
-if( !str_templateNo && [neon.OPERATINGSTATE_NEW, neon.OPERATINGSTATE_EDIT].includes( vars.get( "$sys.recordstate")))
+if(!vars.get("$this.value") && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
 {
-    result.string(NumberSequencingUtils.getNextUniqueNumber("TEMPLATENO", "TICKETTEMPLATE"));
+    result.string(NumberSequencingUtils.getNextUniqueNumber("TEMPLATENO", "TICKETTEMPLATE",0));
 }
\ No newline at end of file
diff --git a/entity/SupportTicketTemplate_entity/recordcontainers/db/recordfieldmappings/documenttemplate_id.displayvalue/expression.js b/entity/SupportTicketTemplate_entity/recordcontainers/db/recordfieldmappings/documenttemplate_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..993f0f5ff4564915f6a2cc4fd3603a9e1eb4037a
--- /dev/null
+++ b/entity/SupportTicketTemplate_entity/recordcontainers/db/recordfieldmappings/documenttemplate_id.displayvalue/expression.js
@@ -0,0 +1,6 @@
+import("Sql_lib");
+import("system.result");
+
+result.string(newSelect("NAME")
+.from("DOCUMENTTEMPLATE")
+.where("DOCUMENTTEMPLATE.DOCUMENTTEMPLATEID = TICKETTEMPLATE.DOCUMENTTEMPLATE_ID").toString());
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/SupportTicket_entity.aod b/entity/SupportTicket_entity/SupportTicket_entity.aod
index 09b4e657147e68251bedb97e5d305b1c94f0b4e3..d997c1e83686b04061ed92c089dfe041f6730d7a 100644
--- a/entity/SupportTicket_entity/SupportTicket_entity.aod
+++ b/entity/SupportTicket_entity/SupportTicket_entity.aod
@@ -16,27 +16,6 @@
   <titlePlural>Service tickets</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
-    <entityActionGroup>
-      <name>observeActionGroup</name>
-      <children>
-        <entityActionField>
-          <name>observe</name>
-          <title>Observe</title>
-          <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
-          <isObjectAction v="true" />
-          <iconId>VAADIN:EYE</iconId>
-          <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
-          <titleProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
-        </entityActionField>
-        <entityActionField>
-          <name>cancelObservation</name>
-          <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
-          <iconId>VAADIN:EYE_SLASH</iconId>
-          <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
-          <titleProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
-        </entityActionField>
-      </children>
-    </entityActionGroup>
     <entityProvider>
       <name>#PROVIDER</name>
     </entityProvider>
@@ -57,12 +36,11 @@
     </entityField>
     <entityField>
       <name>TASK_STATUS</name>
-      <title>{$TICKET_STATUS}</title>
+      <title>{$TASK_STATUS}</title>
       <consumer>KeywordTaskState</consumer>
       <groupable v="true" />
       <mandatory v="true" />
       <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/task_status/stateProcess.js</stateProcess>
-      <titleProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/task_status/titleProcess.js</titleProcess>
       <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/task_status/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/task_status/displayValueProcess.js</displayValueProcess>
       <onValueChange>%aditoprj%/entity/SupportTicket_entity/entityfields/task_status/onValueChange.js</onValueChange>
@@ -363,22 +341,6 @@
         <fieldName>Contact</fieldName>
       </dependency>
     </entityConsumer>
-    <entityActionField>
-      <name>newActivity</name>
-      <title>New activity</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
-      <isMenuAction v="true" />
-      <isObjectAction v="true" />
-      <iconId>VAADIN:HOURGLASS_END</iconId>
-      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newactivity/stateProcess.js</stateProcess>
-      <tooltipProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess>
-    </entityActionField>
-    <entityActionField>
-      <name>newTask</name>
-      <title>New task</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:TASKS</iconId>
-    </entityActionField>
     <entityConsumer>
       <name>ModuleTrees</name>
       <dependency>
@@ -517,8 +479,8 @@
       <expose v="true" />
     </entityParameter>
     <entityProvider>
-      <name>TicketsProvider</name>
-      <documentation>%aditoprj%/entity/SupportTicket_entity/entityfields/ticketsprovider/documentation.adoc</documentation>
+      <name>SupportTickets</name>
+      <documentation>%aditoprj%/entity/SupportTicket_entity/entityfields/supporttickets/documentation.adoc</documentation>
     </entityProvider>
     <entityParameter>
       <name>InboxId_param</name>
@@ -576,29 +538,11 @@
       <name>EMAILMAILSIGNATURE</name>
       <state>READONLY</state>
     </entityField>
-    <entityActionField>
-      <name>replyEmail</name>
-      <title>Reply</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/replyemail/onActionProcess.js</onActionProcess>
-      <isObjectAction v="false" />
-      <iconId>VAADIN:AT</iconId>
-      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/replyemail/stateProcess.js</stateProcess>
-      <tooltipProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/replyemail/tooltipProcess.js</tooltipProcess>
-    </entityActionField>
     <entityField>
       <name>SENDEREMAIL</name>
       <title>Sender</title>
       <groupable v="true" />
     </entityField>
-    <entityActionField>
-      <name>forwardTicket</name>
-      <title>Forward</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/forwardticket/onActionProcess.js</onActionProcess>
-      <isObjectAction v="false" />
-      <iconId>NEON:EXPORT</iconId>
-      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/forwardticket/stateProcess.js</stateProcess>
-      <tooltipProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/forwardticket/tooltipProcess.js</tooltipProcess>
-    </entityActionField>
     <entityField>
       <name>CC_RECIPIENTS</name>
     </entityField>
@@ -608,14 +552,6 @@
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/ticket_title/valueProcess.js</valueProcess>
     </entityField>
-    <entityActionField>
-      <name>pullNextTicket</name>
-      <title>Pull tickets</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/pullnextticket/onActionProcess.js</onActionProcess>
-      <isMenuAction v="true" />
-      <isObjectAction v="false" />
-      <iconId>VAADIN:ARCHIVE</iconId>
-    </entityActionField>
     <entityParameter>
       <name>BasedOnRoles_param</name>
       <expose v="true" />
@@ -660,19 +596,6 @@
       <titleProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/date_edit_status/titleProcess.js</titleProcess>
       <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/date_edit_status/valueProcess.js</valueProcess>
     </entityField>
-    <entityActionGroup>
-      <name>FilterActionsGroup</name>
-      <children>
-        <entityActionField>
-          <name>changeMultiple</name>
-          <title>Change selected</title>
-          <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/filteractionsgroup/children/changemultiple/onActionProcess.js</onActionProcess>
-          <isObjectAction v="false" />
-          <selectionType>MULTI</selectionType>
-          <iconId>VAADIN:PENCIL</iconId>
-        </entityActionField>
-      </children>
-    </entityActionGroup>
     <entityConsumer>
       <name>KeywordTicketCategory</name>
       <dependency>
@@ -692,26 +615,6 @@
       <title>Activities</title>
       <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/counteractivities/valueProcess.js</valueProcess>
     </entityField>
-    <entityActionField>
-      <name>newNote</name>
-      <title>New note</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newnote/onActionProcess.js</onActionProcess>
-      <isObjectAction v="false" />
-      <iconId>VAADIN:NOTEBOOK</iconId>
-      <tooltip></tooltip>
-      <tooltipProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newnote/tooltipProcess.js</tooltipProcess>
-    </entityActionField>
-    <entityActionField>
-      <name>returnTicket</name>
-      <title>Return Ticket</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/returnticket/onActionProcess.js</onActionProcess>
-      <isMenuAction v="true" />
-      <isObjectAction v="false" />
-      <iconId>VAADIN:INBOX</iconId>
-      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/returnticket/stateProcess.js</stateProcess>
-      <titleProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/returnticket/titleProcess.js</titleProcess>
-      <tooltipProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/returnticket/tooltipProcess.js</tooltipProcess>
-    </entityActionField>
     <entityParameter>
       <name>TaskRequestorContactId_param</name>
       <expose v="true" />
@@ -741,12 +644,6 @@
         <entityName>Inbox_entity</entityName>
         <fieldName>Indexes</fieldName>
       </dependency>
-      <children>
-        <entityParameter>
-          <name>ExcludedInboxes_param</name>
-          <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/inboxes/children/excludedinboxes_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
     </entityConsumer>
     <entityConsumer>
       <name>Activities</name>
@@ -836,20 +733,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityActionField>
-      <name>openAdminView</name>
-      <title>Open admin view</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:CURLY_BRACKETS</iconId>
-      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/openadminview/stateProcess.js</stateProcess>
-    </entityActionField>
-    <entityActionField>
-      <name>duplicateTicket</name>
-      <title>Duplicate Ticket</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/duplicateticket/onActionProcess.js</onActionProcess>
-      <selectionType>UNBOUND</selectionType>
-      <iconId>VAADIN:COPY</iconId>
-    </entityActionField>
     <entityParameter>
       <name>TicketCategory_param</name>
       <expose v="true" />
@@ -862,22 +745,6 @@
       <name>TicketConclusion_param</name>
       <expose v="true" />
     </entityParameter>
-    <entityActionField>
-      <name>reopenTicket</name>
-      <title>Re-open</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/reopenticket/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:TIME_BACKWARD</iconId>
-      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/reopenticket/stateProcess.js</stateProcess>
-    </entityActionField>
-    <entityActionField>
-      <name>resubmitTicket</name>
-      <title>Follow-Up</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/resubmitticket/onActionProcess.js</onActionProcess>
-      <selectionType>UNBOUND</selectionType>
-      <isSaveAction v="false" />
-      <iconId>NEON:RECURRING_APPOINTMENT</iconId>
-      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/resubmitticket/stateProcess.js</stateProcess>
-    </entityActionField>
     <entityField>
       <name>IS_OVERDUE_SYMBOL</name>
       <title></title>
@@ -886,14 +753,6 @@
       <groupable v="false" />
       <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/is_overdue_symbol/valueProcess.js</valueProcess>
     </entityField>
-    <entityActionField>
-      <name>newTicket</name>
-      <title>Enter new Ticket</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newticket/onActionProcess.js</onActionProcess>
-      <isMenuAction v="true" />
-      <isObjectAction v="false" />
-      <iconId>VAADIN:CHAT</iconId>
-    </entityActionField>
     <entityField>
       <name>NEW_TICKET</name>
       <title>Enter new Ticket</title>
@@ -906,13 +765,6 @@
       <color>priority-low-color</color>
       <titleProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/new_ticketcontact/titleProcess.js</titleProcess>
     </entityField>
-    <entityActionField>
-      <name>newTicketContact</name>
-      <title>Enter new Ticket &amp; Contact</title>
-      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newticketcontact/onActionProcess.js</onActionProcess>
-      <isObjectAction v="false" />
-      <iconId>VAADIN:CHAT</iconId>
-    </entityActionField>
     <entityField>
       <name>isoverdue</name>
       <contentType>TEXT</contentType>
@@ -933,6 +785,144 @@
       <name>TicketNo_param</name>
       <expose v="true" />
     </entityParameter>
+    <entityField>
+      <name>EMAILMAILSIGNATURE_ANSWER</name>
+    </entityField>
+    <entityActionGroup>
+      <name>observeActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityActionField>
+      <name>newActivity</name>
+      <title>New activity</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
+      <isMenuAction v="true" />
+      <isObjectAction v="true" />
+      <iconId>VAADIN:HOURGLASS_END</iconId>
+      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newactivity/stateProcess.js</stateProcess>
+      <tooltipProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>newTask</name>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TASKS</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>replyEmail</name>
+      <title>Reply</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/replyemail/onActionProcess.js</onActionProcess>
+      <isObjectAction v="false" />
+      <iconId>VAADIN:AT</iconId>
+      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/replyemail/stateProcess.js</stateProcess>
+      <tooltipProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/replyemail/tooltipProcess.js</tooltipProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>forwardTicket</name>
+      <title>Forward</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/forwardticket/onActionProcess.js</onActionProcess>
+      <isObjectAction v="false" />
+      <iconId>NEON:EXPORT</iconId>
+      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/forwardticket/stateProcess.js</stateProcess>
+      <tooltipProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/forwardticket/tooltipProcess.js</tooltipProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>pullNextTicket</name>
+      <title>Pull tickets</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/pullnextticket/onActionProcess.js</onActionProcess>
+      <isMenuAction v="true" />
+      <isObjectAction v="false" />
+      <iconId>VAADIN:ARCHIVE</iconId>
+    </entityActionField>
+    <entityActionGroup>
+      <name>FilterActionsGroup</name>
+      <children>
+        <entityActionField>
+          <name>changeMultiple</name>
+          <title>Change selected</title>
+          <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/filteractionsgroup/children/changemultiple/onActionProcess.js</onActionProcess>
+          <isObjectAction v="false" />
+          <selectionType>MULTI</selectionType>
+          <iconId>VAADIN:PENCIL</iconId>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityActionField>
+      <name>newNote</name>
+      <title>New note</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newnote/onActionProcess.js</onActionProcess>
+      <isObjectAction v="false" />
+      <iconId>VAADIN:NOTEBOOK</iconId>
+      <tooltip></tooltip>
+      <tooltipProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newnote/tooltipProcess.js</tooltipProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>returnTicket</name>
+      <title>Return Ticket</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/returnticket/onActionProcess.js</onActionProcess>
+      <isMenuAction v="true" />
+      <isObjectAction v="false" />
+      <iconId>VAADIN:INBOX</iconId>
+      <state>EDITABLE</state>
+      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/returnticket/stateProcess.js</stateProcess>
+      <titleProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/returnticket/titleProcess.js</titleProcess>
+      <tooltipProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/returnticket/tooltipProcess.js</tooltipProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>duplicateTicket</name>
+      <title>Duplicate Ticket</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/duplicateticket/onActionProcess.js</onActionProcess>
+      <selectionType>UNBOUND</selectionType>
+      <iconId>VAADIN:COPY</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>reopenTicket</name>
+      <title>Re-open</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/reopenticket/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TIME_BACKWARD</iconId>
+      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/reopenticket/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>resubmitTicket</name>
+      <title>Follow-Up</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/resubmitticket/onActionProcess.js</onActionProcess>
+      <selectionType>UNBOUND</selectionType>
+      <isSaveAction v="false" />
+      <iconId>NEON:RECURRING_APPOINTMENT</iconId>
+      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/resubmitticket/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>newTicket</name>
+      <title>Enter new Ticket</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newticket/onActionProcess.js</onActionProcess>
+      <isMenuAction v="true" />
+      <isObjectAction v="false" />
+      <iconId>VAADIN:CHAT</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>newTicketContact</name>
+      <title>Enter new Ticket &amp; Contact</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newticketcontact/onActionProcess.js</onActionProcess>
+      <isObjectAction v="false" />
+      <iconId>VAADIN:CHAT</iconId>
+    </entityActionField>
     <entityActionField>
       <name>newLetter</name>
       <title>New letter</title>
@@ -940,8 +930,16 @@
       <iconId>VAADIN:ENVELOPE</iconId>
       <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/newletter/stateProcess.js</stateProcess>
     </entityActionField>
+    <entityActionField>
+      <name>openAdminView</name>
+      <title>Open admin view</title>
+      <onActionProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CURLY_BRACKETS</iconId>
+      <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/openadminview/stateProcess.js</stateProcess>
+    </entityActionField>
     <entityField>
-      <name>EMAILMAILSIGNATURE_ANSWER</name>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/date_new/valueProcess.js</valueProcess>
     </entityField>
   </entityFields>
   <recordContainers>
@@ -1026,10 +1024,6 @@
           <name>TASK_PROGRESS.displayValue</name>
           <expression>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_progress.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>TASK_STATUS.displayValue</name>
-          <expression>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_status.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>TASK_TYPE.value</name>
           <recordfield>TASK.KIND</recordfield>
@@ -1176,6 +1170,10 @@
           <name>EMAILMAILSIGNATURE_ANSWER.value</name>
           <recordfield>MAILSIGNATURE.ANSWER_MAIL_ADDRESS</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>TASK.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
diff --git a/entity/SupportTicket_entity/contentDescriptionProcess.js b/entity/SupportTicket_entity/contentDescriptionProcess.js
index 1f7017d97a63a7920c8af208b0940f731f99c3d1..b7c56c40086f4501fe27a729df1441449c186e65 100644
--- a/entity/SupportTicket_entity/contentDescriptionProcess.js
+++ b/entity/SupportTicket_entity/contentDescriptionProcess.js
@@ -12,7 +12,6 @@ if(vars.get("$field.TICKET_EDITOR_CONTACT_ID"))
     res = [translate.text("{$TICKET_EDITOR}") + ": " + vars.get("$field.TICKET_EDITOR_CONTACT_ID.displayValue")];
 }
 res.push(translate.text("Maturity") + ": " + datetime.toDate(vars.get("$field.TASK_MATURITY_DATE"), translate.text("dd.MM.yyyy")));
-res.push(translate.text("Progress") + ": " + KeywordUtils.getViewValue($KeywordRegistry.taskProgress(), vars.get("$field.TASK_PROGRESS")));
 res.push(translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.TASK_START_DATE"), translate.text("dd.MM.yyyy")));
 
 result.string(res.join(" | "));
diff --git a/entity/SupportTicket_entity/entityfields/date_new/valueProcess.js b/entity/SupportTicket_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6835658dc430852893df25cf22145e1c6aae259e
--- /dev/null
+++ b/entity/SupportTicket_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(vars.get("$sys.date"));
+}
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/inboxes/children/excludedinboxes_param/valueProcess.js b/entity/SupportTicket_entity/entityfields/inboxes/children/excludedinboxes_param/valueProcess.js
deleted file mode 100644
index 92147d3453d5ee06e7d309e10ce145653776797d..0000000000000000000000000000000000000000
--- a/entity/SupportTicket_entity/entityfields/inboxes/children/excludedinboxes_param/valueProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.vars");
-
-if(vars.exists("$param.InitialInboxId_param"))
-{
-    result.object([vars.get("$param.InitialInboxId_param")]);
-}
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/keywordtaskstate/children/whitelistids_param/valueProcess.js b/entity/SupportTicket_entity/entityfields/keywordtaskstate/children/whitelistids_param/valueProcess.js
index 33db9e5f8b0b112fd0d6c28ba63538f7821a7a35..c6ec8ba2a666a0a6e6d9d0743a607ca2c2bd25b3 100644
--- a/entity/SupportTicket_entity/entityfields/keywordtaskstate/children/whitelistids_param/valueProcess.js
+++ b/entity/SupportTicket_entity/entityfields/keywordtaskstate/children/whitelistids_param/valueProcess.js
@@ -1,5 +1,5 @@
-import("system.vars");
 import("system.result");
 import("Ticket_lib");
+import("KeywordRegistry_basic");
 
-result.object(TicketUtils.begin(vars.get("$field.TICKETTYPE")).getAvailableStatus())
\ No newline at end of file
+result.object(TicketUtils.begin($KeywordRegistry.ticketType$supportTicket()).getAvailableStatus());
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/newtask/onActionProcess.js b/entity/SupportTicket_entity/entityfields/newtask/onActionProcess.js
index be994af3d1ae682b70b4dacdd41dd60805761258..96b6c1edd7ea6029338d30b1191dbc8b7d950ef4 100644
--- a/entity/SupportTicket_entity/entityfields/newtask/onActionProcess.js
+++ b/entity/SupportTicket_entity/entityfields/newtask/onActionProcess.js
@@ -2,4 +2,6 @@ import("system.vars");
 import("ActivityTask_lib");
 import("Context_lib");
 
-TaskUtils.createNewTask(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.TICKETID"));
\ No newline at end of file
+var TicketLink = [ContextUtils.getCurrentContextId(),vars.get("$field.TICKETID")];
+
+TaskUtils.createNewTask(vars.get("$field.TICKETID"),[TicketLink]);
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/openadminview/onActionProcess.js b/entity/SupportTicket_entity/entityfields/openadminview/onActionProcess.js
index a7200fa50671a7ae517fa732726a43a3f6d6570e..0ae33907cd06d1de07eaa51494cb73aaa2251ee0 100644
--- a/entity/SupportTicket_entity/entityfields/openadminview/onActionProcess.js
+++ b/entity/SupportTicket_entity/entityfields/openadminview/onActionProcess.js
@@ -4,7 +4,6 @@ import("Context_lib");
 AdminViewUtils.open("TICKETID", [
     ["TASK_ID", vars.get("$field.TASK_ID")],
     ["TASK_REQUESTOR_CONTACT_ID", vars.get("$field.TASK_REQUESTOR_CONTACT_ID")],
-    ["TASK_PARENT_ID", vars.get("$field.TASK_PARENT_ID")],
     ["TICKET_EDITOR_CONTACT_ID", vars.get("$field.TICKET_EDITOR_CONTACT_ID")],
     ["MAILSIGNATURE_ID", vars.get("$field.MAILSIGNATURE_ID")],
     ["INBOX_ID", vars.get("$field.INBOX_ID")],
diff --git a/entity/SupportTicket_entity/entityfields/reopenticket/onActionProcess.js b/entity/SupportTicket_entity/entityfields/reopenticket/onActionProcess.js
index 58807b50dc20764ac06abde46ef2c3e32a33518e..fe5cf5667d6d68f766d7d2de3cb97f8b70dfbf7b 100644
--- a/entity/SupportTicket_entity/entityfields/reopenticket/onActionProcess.js
+++ b/entity/SupportTicket_entity/entityfields/reopenticket/onActionProcess.js
@@ -1,3 +1,4 @@
+import("Context_lib");
 import("ActivityTask_lib");
 import("system.translate");
 import("KeywordRegistry_basic");
@@ -13,8 +14,8 @@ var TicketfieldValues = {};
 var TaskfieldValues = {};
 
 var obj_toolsUser = tools.getCurrentUser()[tools.PARAMS],
-    str_ticketId = vars.get( "$field.TICKETID"),
-    str_taskId = vars.get( "$field.TASK_ID");
+    ticketID = vars.get( "$field.TICKETID"),
+    taskID = vars.get( "$field.TASK_ID");
 
 
 // insert ACTIVITY
@@ -22,24 +23,20 @@ var DataPreset =
     {
         "directionKeywordId" : $KeywordRegistry.activityDirection$internal(),
         "subject"            : translate.text("Ticket reopen"), 
-        "content"            : translate.text("Ticket was reopen.") + "/n" 
-                               + translate.text("Reopen by") + ": "+ obj_toolsUser[tools.FIRSTNAME] +" "
+        "content"            : translate.text("Ticket was reopen by") + ": "+ obj_toolsUser[tools.FIRSTNAME] +" "
                                + obj_toolsUser[tools.LASTNAME],
         "categoryKeywordId"  : $KeywordRegistry.activityCategory$sys() 
     }
-    var ActivityLink =
-    {
-        "SupportTicket"  : ticketID
-    }
-    
-    ActivityUtils.insertNewActivity(DataPreset, ActivityLink);
+    var ActivityLink = [ContextUtils.getCurrentContextId(), ticketID];
+
+    ActivityUtils.insertNewActivity(DataPreset, [ActivityLink]);
 
 //change Ticketstatus, editor & DATE_EDIT_STATUS
 TaskfieldValues["STATUS"] = $KeywordRegistry.taskStatus$reopen();
 TicketfieldValues["DATE_EDIT_STATUS"] = vars.get("$sys.date");
-TicketfieldValues["DATE_END_"] = "";
+TicketfieldValues["DATE_END"] = "";
 
 //Update task & Ticket
-newWhereIfSet("TASK.TASKID", str_taskId).updateFields(TaskfieldValues);
-newWhereIfSet("TICKET.TICKETID", vars.get("field.TICKETID")).updateFields(TicketfieldValues);
+newWhereIfSet("TASK.TASKID", taskID).updateFields(TaskfieldValues);
+newWhereIfSet("TICKET.TICKETID", ticketID).updateFields(TicketfieldValues);
 neon.refresh();
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/replyemail/onActionProcess.js b/entity/SupportTicket_entity/entityfields/replyemail/onActionProcess.js
index 468a96ed35c76eff31308686e71be8ea50cfe9ca..1b8ba2a613f47f46625ccbadb58632dbb51d4f68 100644
--- a/entity/SupportTicket_entity/entityfields/replyemail/onActionProcess.js
+++ b/entity/SupportTicket_entity/entityfields/replyemail/onActionProcess.js
@@ -6,8 +6,7 @@ import("Ticket_lib")
 
 var params =
     {
-    "SignatureId_param": vars.get("$field.MAILSIGNATURE_ID"), 
-    "SenderEmail_param": vars.get("$field.SENDEREMAIL"),
+    "SignatureId_param": vars.get("$field.MAILSIGNATURE_ID"),
     "RequestorContactId_param": vars.get("$field.TASK_REQUESTOR_CONTACT_ID"),
     "TicketCode_param": vars.get("$field.CODE"),
     "TicketSubject_param": vars.get("$field.TASK_SUBJECT"),
@@ -29,5 +28,15 @@ else
 {
     params["From_param"] = vars.get("$field.EMAILMAILSIGNATURE");
 }
-    
+
+// if alternative email address is set use it
+if (vars.get("$field.ALTERNATIVE_EMAILADDR"))
+{
+    params["SenderEmail_param"] = vars.get("$field.ALTERNATIVE_EMAILADDR");
+}
+else
+{
+    params["SenderEmail_param"] = vars.get("$field.SENDEREMAIL");
+}
+
 neon.openContext("ServiceEmail", "ServiceEmailEdit_view", null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/returnticket/stateProcess.js b/entity/SupportTicket_entity/entityfields/returnticket/stateProcess.js
index dfde7549fffe1602ce975d6b0cdd6fef262ced37..17de559118b4e70dc5114c02057c01c48e12770d 100644
--- a/entity/SupportTicket_entity/entityfields/returnticket/stateProcess.js
+++ b/entity/SupportTicket_entity/entityfields/returnticket/stateProcess.js
@@ -4,11 +4,11 @@ import("system.vars");
 import("KeywordRegistry_basic");
 
 
-if(vars.get ("$field.TASK_STATUS") != $KeywordRegistry.taskStatus$ended())
+if(vars.get ("$field.TASK_STATUS") == $KeywordRegistry.taskStatus$ended())
 {
-     result.string(neon.COMPONENTSTATE_EDITABLE);
+     result.string(neon.COMPONENTSTATE_DISABLED);
 }
 else 
 {
-     result.string(neon.COMPONENTSTATE_READONLY);
+     result.string(neon.COMPONENTSTATE_EDITABLE);
 }
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/entityfields/supportticket_template/onValueChange.js b/entity/SupportTicket_entity/entityfields/supportticket_template/onValueChange.js
index 0bfa5683866c31a427b31d11bb6ccee317a0dec7..df8422d97e2be3a7d52d495b900803ea7f238e1d 100644
--- a/entity/SupportTicket_entity/entityfields/supportticket_template/onValueChange.js
+++ b/entity/SupportTicket_entity/entityfields/supportticket_template/onValueChange.js
@@ -38,12 +38,16 @@ function _setTicketData( pStr_ticketTemplateId)
                 obj_fieldMap["$field.ticket_title"] = str_currentVal;
                 break;
             case "DESCRIPTION":
+                obj_fieldMap["$field.TASK_DESCRIPTION"] = str_currentVal;
+                break;
             case "PRIORITY":
+                obj_fieldMap["$field.TASK_PRIORITY"] = str_currentVal;
+                break;
             case "STATUS":
-                obj_fieldMap["$field.TASK_"+ str_col] = str_currentVal;
+                obj_fieldMap["$field.TASK_STATUS"] = str_currentVal;
                 break;
             case "CATEGORY":
-                obj_fieldMap["$field.TICKET"+ str_col] = str_currentVal;
+                obj_fieldMap["$field.TICKETCATEGORY"] = str_currentVal;
                 break;
             default:
                 obj_fieldMap["$field."+ str_col] = str_currentVal;
diff --git a/entity/SupportTicket_entity/entityfields/ticketsprovider/documentation.adoc b/entity/SupportTicket_entity/entityfields/supporttickets/documentation.adoc
similarity index 100%
rename from entity/SupportTicket_entity/entityfields/ticketsprovider/documentation.adoc
rename to entity/SupportTicket_entity/entityfields/supporttickets/documentation.adoc
diff --git a/entity/SupportTicket_entity/entityfields/task_priority_icon/colorProcess.js b/entity/SupportTicket_entity/entityfields/task_priority_icon/colorProcess.js
index 8ae23d7885712c2c8f3a094df18fb69b2cfe574b..e784400a7d15d7e863a776e3904c51df6d506e5a 100644
--- a/entity/SupportTicket_entity/entityfields/task_priority_icon/colorProcess.js
+++ b/entity/SupportTicket_entity/entityfields/task_priority_icon/colorProcess.js
@@ -3,22 +3,29 @@ import("KeywordRegistry_basic");
 import("system.result");
 import("system.neon");
 
-
-switch(vars.getString("$field.TASK_PRIORITY"))
+if(vars.get("$field.TASK_PRIORITY"))
+{
+    switch(vars.get("$field.TASK_PRIORITY"))
+    {
+      case $KeywordRegistry.taskPriority$none():
+          result.string(neon.PRIORITY_NONE_COLOR);
+          break;
+      case $KeywordRegistry.taskPriority$low():
+          result.string(neon.PRIORITY_LOW_COLOR);
+          break;
+      case $KeywordRegistry.taskPriority$medium():
+          result.string(neon.PRIORITY_MEDIUM_COLOR);
+          break;
+      case $KeywordRegistry.taskPriority$high():
+          result.string(neon.PRIORITY_HIGH_COLOR);
+          break;
+      default:
+          result.string(neon.PRIORITY_NONE_COLOR);
+          break;
+    }     
+}
+else
 {
-  case $KeywordRegistry.taskPriority$none():
-      result.string(neon.PRIORITY_NONE_COLOR);
-      break;
-  case $KeywordRegistry.taskPriority$low():
-      result.string(neon.PRIORITY_LOW_COLOR);
-      break;
-  case $KeywordRegistry.taskPriority$medium():
-      result.string(neon.PRIORITY_MEDIUM_COLOR);
-      break;
-  case $KeywordRegistry.taskPriority$high():
-      result.string(neon.PRIORITY_HIGH_COLOR);
-      break;
-  default:
-      result.string(neon.PRIORITY_NONE_COLOR);
-      break;
-}  
+    result.string(neon.PRIORITY_NONE_COLOR);
+}
+
diff --git a/entity/SupportTicket_entity/entityfields/task_status/titleProcess.js b/entity/SupportTicket_entity/entityfields/task_status/titleProcess.js
deleted file mode 100644
index bcde88cc195a0f7b4bb80ae7bfc970bd3afe4689..0000000000000000000000000000000000000000
--- a/entity/SupportTicket_entity/entityfields/task_status/titleProcess.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import("system.translate");
-import("system.vars");
-import("system.neon");
-import("system.result");
-
-// FOR CHANGE STATUS ACTION 
-
-var actionName = vars.get("$param.ActionName_param");
-if( (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)  && actionName )
-{
-    if(actionName == "changeStatusAfterForwardEmail")
-    {
-        result.string(translate.text("Select new status"));
-    }  
-}
\ No newline at end of file
diff --git a/entity/SupportTicket_entity/recordcontainers/db/onDBInsert.js b/entity/SupportTicket_entity/recordcontainers/db/onDBInsert.js
index b0e2ba2318e43059a467e4ccc505c9f0d5645a34..bbefca4cd2eb1a7bbe1447d55bfd7a7dd19f7650 100644
--- a/entity/SupportTicket_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/SupportTicket_entity/recordcontainers/db/onDBInsert.js
@@ -1,3 +1,4 @@
+import("Context_lib");
 import("Sql_lib");
 import("system.translate");
 import("system.util");
@@ -62,12 +63,9 @@ if( actionName == "duplicateTicket")
                                + translate.text("Ticket number of the original ticket") + ': ' + codeold,  
         "categoryKeywordId"  : $KeywordRegistry.activityCategory$sys() 
     }
-    var ActivityLink =
-    {
-        "SupportTicket"  : ticketID
-    }
-    
-    ActivityUtils.insertNewActivity(DataPreset, ActivityLink);
+    var ActivityLink = [ContextUtils.getCurrentContextId(), ticketID];
+
+    ActivityUtils.insertNewActivity(DataPreset, [ActivityLink]);
 
     ///CREATE ACTIVITY for old Ticket
     DataPreset =
@@ -79,12 +77,9 @@ if( actionName == "duplicateTicket")
                                + translate.text("Ticket number of the created ticket") + ': ' + code,
         "categoryKeywordId"  : $KeywordRegistry.activityCategory$sys() 
     }
-    ActivityLink =
-    {
-        "SupportTicket"  : ticketIDold
-    }
-    
-    ActivityUtils.insertNewActivity(DataPreset, ActivityLink);
+    var ActivityLink = [ContextUtils.getCurrentContextId(), ticketIDold];
+
+    ActivityUtils.insertNewActivity(DataPreset, [ActivityLink]);
    // end  ACTIVITY
         
 }
diff --git a/entity/SupportTicket_entity/recordcontainers/db/onDBUpdate.js b/entity/SupportTicket_entity/recordcontainers/db/onDBUpdate.js
index 619577da197540f995cccb42345dff94ee24f4e9..58ba8d1829b48623d7960fd8f4cb0c89954e856b 100644
--- a/entity/SupportTicket_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/SupportTicket_entity/recordcontainers/db/onDBUpdate.js
@@ -1,3 +1,4 @@
+import("Context_lib");
 import("ActivityTask_lib");
 import("system.datetime");
 import("system.tools");
@@ -68,12 +69,9 @@ if( vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
                                    + datetime.toDate(vars.get("$field.TASK_MATURITY_DATE"), "dd.MM.yyyy"),
             "categoryKeywordId"  : $KeywordRegistry.activityCategory$sys() 
         }
-        var ActivityLink =
-        {
-            "SupportTicket"  : ticketID
-        }
-    
-        ActivityUtils.insertNewActivity(DataPreset, ActivityLink); 
+        var ActivityLink = [ContextUtils.getCurrentContextId(), ticketID];
+        
+        ActivityUtils.insertNewActivity(DataPreset, [ActivityLink]);
         // end  ACTIVITY
     }
 
@@ -91,19 +89,16 @@ if( vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
                                    +"\n"+ translate.text("Returned by") + ": "+ obj_toolsUser[tools.FIRSTNAME] +" "+ obj_toolsUser[tools.LASTNAME],
             "categoryKeywordId"  : $KeywordRegistry.activityCategory$sys() 
         }
-        ActivityLink =
-        {
-            "SupportTicket"  : ticketID
-        }
-    
-        ActivityUtils.insertNewActivity(DataPreset, ActivityLink);
+        var ActivityLink = [ContextUtils.getCurrentContextId(), ticketID];
+        
+        ActivityUtils.insertNewActivity(DataPreset, [ActivityLink]);
 
         //change Ticketstatus, editor & DATE_EDIT_STATUS
         TaskfieldValues["STATUS"] = $KeywordRegistry.taskStatus$unassigned();
         TicketfieldValues["EDITOR_CONTACT_ID"] = "";
         TicketfieldValues["DATE_EDIT_STATUS"] = vars.get("$sys.date");
         TicketfieldValues["INBOX_ID"] = vars.get("$field.INBOX_ID");
-        TicketfieldValues["CATEGORY"] = vars.get("$field.INBOX_ID");
+        TicketfieldValues["CATEGORY"] = vars.get("$field.TICKETCATEGORY");
     }    
     newWhere("TICKET.TICKETID","$field.TICKETID").updateFields(TicketfieldValues);
     newWhere("TASK.TASKID", "$field.TASK_ID").updateFields(TaskfieldValues);
diff --git a/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_status.displayvalue/expression.js b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_status.displayvalue/expression.js
deleted file mode 100644
index 2ff962697835ef0243dc987da40063bfc1dee5b6..0000000000000000000000000000000000000000
--- a/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_status.displayvalue/expression.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// do not use this, because TaskUtils.getTypeStatusKeyword(vars.get("$field.TYPE")) has to be called, which is not possible in a subselect.
-// --> only use display value process
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js
index e36de81867f6b12b0c9fe8ee712a832587f89cc7..84b801420d062d42b573e7151ac330b9f43b947c 100644
--- a/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js
+++ b/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js
@@ -7,16 +7,8 @@ import("Employee_lib");
 import("system.project");
 
 var contactId = EmployeeUtils.getCurrentContactId();
-
 var userRole = tools.getUser(vars.get("$sys.user"), tools.PROFILE_FULL);
-    
-var departmentId = newSelect("PROPVAL", project.getSystemTableAlias("ASYS_USERS"))
-.from("ASYS_USERS")
-.where("ASYS_USERS.PROPKEY", "department")
-.and("ASYS_USERS.NAME", userRole.myRole)
-.cell();
-
-
+var departmentId = userRole[tools.PARAMS]["department"];
 var taskAttendee = newSelect("distinct TASK_ID")
 .from("TASKATTENDEES")
 .where("TASKATTENDEES.CONTACT_ID", contactId)
diff --git a/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js b/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js
index 325e6f20a93e503509d42967d5e6bd3d839e4234..d48c83d0f64cb478485bb8c7635d74ddff4d38b0 100644
--- a/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js
+++ b/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js
@@ -7,16 +7,8 @@ import("Sql_lib");
 import("Employee_lib");
 
 var contactId = EmployeeUtils.getCurrentContactId();
-
 var userRole = tools.getUser(vars.get("$sys.user"), tools.PROFILE_FULL);
-    
-var departmentId = newSelect("PROPVAL", project.getSystemTableAlias("ASYS_USERS"))
-.from("ASYS_USERS")
-.where("ASYS_USERS.PROPKEY", "department")
-.and("ASYS_USERS.NAME", userRole.myRole)
-.cell();
-
-
+var departmentId = userRole[tools.PARAMS]["department"];
 var taskAttendee = newSelect("distinct TASK_ID")
 .from("TASKATTENDEES")
 .where("TASKATTENDEES.CONTACT_ID", contactId)
diff --git a/entity/TopicTree_entity/recordcontainers/jdito/onUpdate.js b/entity/TopicTree_entity/recordcontainers/jdito/onUpdate.js
index a024420d4f06f08e6447d8b629b34965ab1f2b0d..db9702cd5121b62701b94fcd464eec1b1106c0f0 100644
--- a/entity/TopicTree_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/TopicTree_entity/recordcontainers/jdito/onUpdate.js
@@ -7,12 +7,14 @@ var topicTreeId = vars.get("$local.uid");
 var columns = ["DATE_EDIT"
                 , "USER_EDIT"
                 , "ACTIVE"
-                , "TOPIC"];
+                , "TOPIC"
+                , "DESCRIPTION"];
             
 var values = [rowData["DATE_EDIT.value"]
                 , rowData["USER_EDIT.value"]
                 , rowData["ACTIVE.value"]
-                , rowData["TOPIC.value"]];
+                , rowData["TOPIC.value"]
+                , rowData["DESCRIPTION.value"]];
 
 var assignedTo = rowData["ASSIGNEDTO.value"];
 if(assignedTo && assignedTo != "")
diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
index fa78b9a964fd636e631c0823266e492a701af72b..15260b03d49ae6266fe4782ce85066ce3a4c8fed 100644
--- a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js
@@ -133,6 +133,21 @@ var semiannually = parseInt(datetime.ONE_DAY * 183);
 var quarterly = parseInt(datetime.ONE_DAY * 93);
 var yearly = parseInt(datetime.ONE_DAY * 365);
 
+//ToDo: use once it's possible to use this (Problem with date comparison)
+//var today = vars.get("$sys.today");
+//var visitfrequencyCaseWhen = SqlBuilder.caseWhen(newWhere("DISTRICTCONTACT.VISITFREQUENCY", $KeywordRegistry.visitFrequency$yearly()))
+//                                            .then((eMath.subInt(today, yearly)).toString())
+//                                        .elseValue(SqlBuilder.caseWhen(newWhere("DISTRICTCONTACT.VISITFREQUENCY", $KeywordRegistry.visitFrequency$semiannualy()))
+//                                            .then((eMath.subInt(today, semiannually)).toString())
+//                                        .elseValue(SqlBuilder.caseWhen(newWhere("DISTRICTCONTACT.VISITFREQUENCY", $KeywordRegistry.visitFrequency$quarterly()))
+//                                            .then((eMath.subInt(today, quarterly)).toString())
+//                                        .elseValue(SqlBuilder.caseWhen(newWhere("DISTRICTCONTACT.VISITFREQUENCY", $KeywordRegistry.visitFrequency$monthly()))
+//                                            .then((eMath.subInt(today, monthly)).toString())
+//                                        .elseValue((eMath.subInt(today, weekly)).toString())
+//                )
+//            )
+//        ).toString()
+
 //dynamic Recommendations
 //recommended Organisations containing the attribute Visit Frequency
 if(idValues == false)
@@ -161,16 +176,17 @@ if(idValues == false)
     
     var recommendationEntryCountSubSelect = "(" + newSelect("count(VISITPLANENTRYID)")
                                                     .from("VISITPLANENTRY")
-                                                    .where(newWhere("VISITPLANENTRY.CONTACT_ID = DISTRICTCONTACT.ADVISER_CONTACT_ID ")
-                                                                .or("VISITPLANENTRY.ORGANISATION_CONTACT_ID = DISTRICTCONTACT.ADVISER_CONTACT_ID "))
-                                                    .and(newWhere("VISITPLANENTRY.ENTRYDATE", eMath.subInt(vars.get("$sys.today"), datetime.ONE_DAY * 7), SqlBuilder.LESS_OR_EQUAL())
-                                                    .and("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated(), SqlBuilder.NOT_EQUAL()))
-                                                    .or("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated(), SqlBuilder.EQUAL())
+                                                    .where(newWhere("VISITPLANENTRY.CONTACT_ID = CONTACT.CONTACTID ")
+                                                                .or("VISITPLANENTRY.ORGANISATION_CONTACT_ID = CONTACT.CONTACTID ")
+//                                                                .and(newWhere("VISITPLANENTRY.ENTRYDATE", visitfrequencyCaseWhen, SqlBuilder.LESS_OR_EQUAL()) use this instead of the next line once possible
+                                                                .and(newWhere("VISITPLANENTRY.ENTRYDATE", eMath.subInt(vars.get("$sys.today"), datetime.ONE_DAY * 7), SqlBuilder.LESS_OR_EQUAL())
+                                                    .and("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Visitreportcreated(), SqlBuilder.EQUAL())))
                                             + ") + (" + newSelect("count(VISITRECOMMENDATIONID)")
                                                     .from("VISITRECOMMENDATION")
-                                                    .where("VISITRECOMMENDATION.RESPONSIBLE = CONTACT.CONTACTID")
+                                                    .where("VISITRECOMMENDATION.CONTACT_PERSON_ID = CONTACT.CONTACTID")
                                                     .or("VISITRECOMMENDATION.CONTACT_ID = CONTACT.CONTACTID") + ")"
     
+
     var visitFrequencyData = newSelect(["''"    //0
                                         , "CONTACT.CONTACTID" //1
                                        , contactPointSubSelect
@@ -201,12 +217,13 @@ if(idValues == false)
                             .leftJoin("ADDRESS", "ADDRESS_ID = ADDRESSID")
                             .where("DISTRICTCONTACT.STATUS", $KeywordRegistry.contactStatus$active())
                             .and("DISTRICTCONTACT.VISITFREQUENCY is not null")
-                            .and("DISTRICTCONTACT.VALID_FROM", vars.get("$sys.date"), SqlBuilder.LESS_OR_EQUAL())
+                            .and(newWhere("DISTRICTCONTACT.VALID_FROM", vars.get("$sys.date"), SqlBuilder.LESS_OR_EQUAL()).or("DISTRICTCONTACT.VALID_FROM is null"))
                             .and(newWhere("DISTRICTCONTACT.VALID_UNTIL", vars.get("$sys.date"), SqlBuilder.GREATER_OR_EQUAL())
                                     .or("DISTRICTCONTACT.VALID_UNTIL is null"))
+                            .and("CONTACT.STATUS", $KeywordRegistry.contactStatus$inactive(), SqlBuilder.NOT_EQUAL())
                             .orderBy("(" + newSelect("AB_KEYWORD_ENTRY.SORTING").from("AB_KEYWORD_ENTRY").where("AB_KEYWORD_ENTRY.KEYID = DISTRICTCONTACT.VISITFREQUENCY") + ") desc")
-                            .table();
         
+        visitFrequencyData = visitFrequencyData.table()
         
         var alreadyRecommended = {}; //orgContactId+contactId
         for (var i = 0; i < visitFrequencyData.length; i++)
@@ -278,7 +295,7 @@ if(idValues == false)
                 visitFrequencyData[i][20]  //district_id.value
             ];
             
-            if(visitFrequencyData[i][16] == 0 && (!helperObj.hasOwnProperty(visitFrequencyData[i][1]) || !helperObj[visitFrequencyData[i][1]].hasOwnProperty(visitFrequencyData[i][14])))
+            if((visitFrequencyData[i][16] == 0) && (!helperObj.hasOwnProperty(visitFrequencyData[i][1]) || !helperObj[visitFrequencyData[i][1]].hasOwnProperty(visitFrequencyData[i][14])))
             {
                recommendationData.push(tmpData);
             }
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index efc4babcc6b7c87cbbe130eeff2de057d6f1feb0..4492b3414a545216935ed7dc2eaeb3cbb4a9583f 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -7690,7 +7690,7 @@
       <key>Add app</key>
     </entry>
     <entry>
-      <key>Open Teams</key>
+      <key>Open MS Teams</key>
     </entry>
     <entry>
       <key>Choose Team</key>
@@ -10784,6 +10784,39 @@
     <entry>
       <key>Answer Address</key>
     </entry>
+    <entry>
+      <key>Employee for Employee groups</key>
+    </entry>
+    <entry>
+      <key>Employee group already selected.</key>
+    </entry>
+    <entry>
+      <key>Employee already selected.</key>
+    </entry>
+    <entry>
+      <key>Name has to be unique.</key>
+    </entry>
+    <entry>
+      <key>Ticket returned</key>
+    </entry>
+    <entry>
+      <key>Returned by</key>
+    </entry>
+    <entry>
+      <key>Ticket returned to pool</key>
+    </entry>
+    <entry>
+      <key>Original editor</key>
+    </entry>
+    <entry>
+      <key>Ticket was reopen by</key>
+    </entry>
+    <entry>
+      <key>Ticket reopen</key>
+    </entry>
+    <entry>
+      <key>Email address has to be unique.</key>
+    </entry>
     <entry>
       <key>Synchronized with Outlook</key>
     </entry>
@@ -10899,94 +10932,169 @@
       <key>Contigent exhausted, please buy some new one to continue.</key>
     </entry>
     <entry>
-      <key>Slave administration</key>
+      <key>All synchronized datasets</key>
     </entry>
     <entry>
-      <key>Slave administration '%0' is '%1'</key>
+      <key>Pending datasets</key>
     </entry>
     <entry>
-      <key>The file did not contain any data</key>
+      <key>Email address has to be unique</key>
     </entry>
     <entry>
-      <key>Ticket returned</key>
+      <key>My synchronized datasets</key>
     </entry>
     <entry>
-      <key>Returned by</key>
+      <key>Do you really want to resynchronize the user completely?\nThe synchronisation in ADITO will be deleted.\nThe outlook contacts must be cleared manually.</key>
     </entry>
     <entry>
-      <key>Ticket was reopen by</key>
+      <key>Shows my synchronized datasets</key>
     </entry>
     <entry>
-      <key>All synchronized datasets</key>
+      <key>Rulegroup already selected</key>
     </entry>
     <entry>
-      <key>Employee group already selected.</key>
+      <key>Shows all synchronized datasets</key>
     </entry>
     <entry>
-      <key>Pending datasets</key>
+      <key>Shows the number of datasets still to be synchronized</key>
     </entry>
     <entry>
-      <key>Sales project responsibility set</key>
+      <key>Contact synchronisation</key>
     </entry>
     <entry>
-      <key>My synchronized datasets</key>
+      <key>Datasets in Outlook</key>
     </entry>
     <entry>
-      <key>Ticket returned to pool</key>
+      <key>Employee already selected</key>
     </entry>
     <entry>
-      <key>Do you really want to resynchronize the user completely?\nThe synchronisation in ADITO will be deleted.\nThe outlook contacts must be cleared manually.</key>
+      <key>Contact synchronisations</key>
     </entry>
     <entry>
-      <key>Shows my synchronized datasets</key>
+      <key>Dataset in Outlook</key>
     </entry>
     <entry>
-      <key>Employee already selected.</key>
+      <key>Remove from synchronization</key>
     </entry>
     <entry>
-      <key>Shows all synchronized datasets</key>
+      <key>Contact synchronisation dashboard</key>
     </entry>
     <entry>
-      <key>Original editor</key>
+      <key>Name has to be unique</key>
     </entry>
     <entry>
-      <key>Shows the number of datasets still to be synchronized</key>
+      <key>Show filter result</key>
     </entry>
     <entry>
-      <key>Contact synchronisation</key>
+      <key>Add to synchronisation</key>
     </entry>
     <entry>
-      <key>Datasets in Outlook</key>
+      <key>Sales project responsibility set</key>
+    </entry>
+    <entry>
+      <key>Do you really want to delete \"%0\"? If tickets still use this inbox, this might cause problems.</key>
+    </entry>
+    <entry>
+      <key>Delete Inbox</key>
     </entry>
     <entry>
       <key>Finished Tickets last 4 weeks</key>
     </entry>
     <entry>
-      <key>Name has to be unique.</key>
+      <key>Inbox \"%0\" has been deleted.</key>
     </entry>
     <entry>
-      <key>Contact synchronisations</key>
+      <key>Employee group already selected</key>
     </entry>
     <entry>
-      <key>Dataset in Outlook</key>
+      <key>Show my finished Tickets in the last 4 weeks</key>
     </entry>
     <entry>
-      <key>Remove from synchronization</key>
+      <key>Move</key>
     </entry>
     <entry>
-      <key>Ticket reopen</key>
+      <key>Dependencies</key>
     </entry>
     <entry>
-      <key>Contact synchronisation dashboard</key>
+      <key>ExportTemplateDependency</key>
     </entry>
     <entry>
-      <key>Show filter result</key>
+      <key>testfilter</key>
     </entry>
     <entry>
-      <key>Add to synchronisation</key>
+      <key>Adito Versafix</key>
     </entry>
     <entry>
-      <key>Employee for Employee groups</key>
+      <key>Charset</key>
+    </entry>
+    <entry>
+      <key>Unique click rate (in %)</key>
+    </entry>
+    <entry>
+      <key>Employees for Employee groups</key>
+    </entry>
+    <entry>
+      <key>Last Click</key>
+    </entry>
+    <entry>
+      <key>Opener rate (in %)</key>
+    </entry>
+    <entry>
+      <key>Evaluation type</key>
+    </entry>
+    <entry>
+      <key>remove hashtags from favorite titles</key>
+    </entry>
+    <entry>
+      <key>Valid district contacts</key>
+    </entry>
+    <entry>
+      <key>default</key>
+    </entry>
+    <entry>
+      <key>Verknuepfungen</key>
+    </entry>
+    <entry>
+      <key>unsubscribe</key>
+    </entry>
+    <entry>
+      <key>Copy Participants</key>
+    </entry>
+    <entry>
+      <key>ignore</key>
+    </entry>
+    <entry>
+      <key>Click rate (in %)</key>
+    </entry>
+    <entry>
+      <key>Dependency</key>
+    </entry>
+    <entry>
+      <key>${MST_APP_ALREADY_ADDED}</key>
+    </entry>
+    <entry>
+      <key>Found a duplicate member</key>
+    </entry>
+    <entry>
+      <key>${SALESPROJECT_MST_STATUS_CHANGE}</key>
+    </entry>
+    <entry>
+      <key>MS-Teams Message</key>
+    </entry>
+    <entry>
+      <key>${SALESPROJECT_MST_PHASE_CHANGE}</key>
+    </entry>
+    <entry>
+      <key>Import from MS Teams</key>
+    </entry>
+    <entry>
+      <key>Guest</key>
+    </entry>
+    <entry>
+      <key>${MIN_MAX_ERROR_MIN_INT_VALUE} field: %0, value: %1, max: %2</key>
+    </entry>
+    <entry>
+      <key>${MIN_MAX_ERROR_MAX_INT_VALUE} field: %0, value: %1, min: %2</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 817c76f76846ec750585b6fa87700a8f6856f36a..c5fbc600f3187815a087b7df2d66154a2de32587 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -14,6 +14,9 @@
       <key>Slave administration</key>
       <value>Slave Verwaltung</value>
     </entry>
+    <entry>
+      <key>Ticket was reopen by</key>
+    </entry>
     <entry>
       <key>Create new campaign step</key>
       <value>Neue Kampagnenstufe erstellen</value>
@@ -30,6 +33,10 @@
       <key>Single (Service/Internal)</key>
       <value>Einzel (Service/Intern)</value>
     </entry>
+    <entry>
+      <key>Original editor</key>
+      <value>Originaler Bearbeiter</value>
+    </entry>
     <entry>
       <key>Single (Service/External)</key>
       <value>Einzel (Service/Extern)</value>
@@ -42,6 +49,10 @@
       <key>Ticket was duplicated by</key>
       <value>Ticket wurde dupliziert. Anwender</value>
     </entry>
+    <entry>
+      <key>Do you really want to delete \"%0\"? If tickets still use this inbox, this might cause problems.</key>
+      <value>Postkorb \"%0\" wirklich löschen? Wenn noch Tickets mit diesem Postkorb existieren, kann das zu Problemen führen.</value>
+    </entry>
     <entry>
       <key>Ticket duplicated (duplicate)</key>
       <value>Ticket dupliziert (Duplikat)</value>
@@ -98,6 +109,10 @@
       <key>Return Ticket</key>
       <value>Zurückgeben</value>
     </entry>
+    <entry>
+      <key>Employee already selected</key>
+      <value>Mitarbeiter bereits selektiert</value>
+    </entry>
     <entry>
       <key>Service ticket template</key>
       <value>Serviceticket-Vorlagen</value>
@@ -234,8 +249,8 @@
       <value>erledigt</value>
     </entry>
     <entry>
-      <key>A Phase filter has to be set when creating a checklistentry for the Salesproject context.</key>
-      <value>Es muss ein Filter auf die Phase gesetzt werden wenn der Vertriebsprojektkontext ausgewählt ist.</value>
+      <key>A Phase filter has to be set when creating a checklistentry for the Salesproject Context.</key>
+      <value>Es muss ein Filter auf die Phase gesetzt werden wenn der VertriebsprojektKontext ausgewählt ist.</value>
     </entry>
     <entry>
       <key>Redirect needs a full URL with http/https</key>
@@ -601,8 +616,8 @@
       <value>Team löschen</value>
     </entry>
     <entry>
-      <key>Open Teams</key>
-      <value>Teams öffnen</value>
+      <key>Open MS Teams</key>
+      <value>MS Teams öffnen</value>
     </entry>
     <entry>
       <key>Restore Team</key>
@@ -1036,6 +1051,10 @@
       <key>Object selection</key>
       <value>Objektauswahl</value>
     </entry>
+    <entry>
+      <key>Delete Inbox</key>
+      <value>Postkorb löschen</value>
+    </entry>
     <entry>
       <key>All of the chosen records are already in the campaign</key>
       <value>Alle ausgewählten Datensätze sind schon in der Kampagne.</value>
@@ -1082,7 +1101,6 @@
     </entry>
     <entry>
       <key>Technical email</key>
-      <value>Technische E-Mail</value>
     </entry>
     <entry>
       <key>Please check if the following fields are filled correctly</key>
@@ -1763,6 +1781,10 @@
       <key>Phone</key>
       <value>Telefon</value>
     </entry>
+    <entry>
+      <key>Name has to be unique</key>
+      <value>Name muss einzigartig sein</value>
+    </entry>
     <entry>
       <key>360 Degree</key>
       <value>360 Grad</value>
@@ -3345,6 +3367,9 @@
       <key>Comoros</key>
       <value>Komoren</value>
     </entry>
+    <entry>
+      <key>Employee for Employee groups</key>
+    </entry>
     <entry>
       <key>Office Properties</key>
       <value>Büroimmobilien</value>
@@ -4159,7 +4184,7 @@
     </entry>
     <entry>
       <key>Email address</key>
-      <value>E-Mail Adresse</value>
+      <value>E-Mail-Adresse</value>
     </entry>
     <entry>
       <key>Australia</key>
@@ -4513,6 +4538,10 @@
       <key>Show all Favorites</key>
       <value>Alle Favoriten anzeigen</value>
     </entry>
+    <entry>
+      <key>Inbox \"%0\" has been deleted.</key>
+      <value>Postkorb \"%0\ wurde gelöscht.</value>
+    </entry>
     <entry>
       <key>Venezuela (Bolivarian Republic of)</key>
       <value>Venezuela (Bolivarische Republik)</value>
@@ -4765,6 +4794,10 @@
       <key>NQC</key>
       <value>NQC</value>
     </entry>
+    <entry>
+      <key>Email address has to be unique</key>
+      <value>E-Mail-Addresse muss einzigartig sein</value>
+    </entry>
     <entry>
       <key>MQL</key>
       <value>MQL</value>
@@ -4845,6 +4878,10 @@
       <key>String value</key>
       <value>String-Wert</value>
     </entry>
+    <entry>
+      <key>Rulegroup already selected</key>
+      <value>Filtergruppe bereits selektiert.</value>
+    </entry>
     <entry>
       <key>The code number is not a valid number.</key>
       <value>Die Kennnummer ist keine gültige Nummer</value>
@@ -4893,6 +4930,10 @@
       <key>Relationtype</key>
       <value>Beziehungsart</value>
     </entry>
+    <entry>
+      <key>Employee group already selected</key>
+      <value>Mitarbeitergruppe wurde bereits selektiert.</value>
+    </entry>
     <entry>
       <key>Tree</key>
       <value>Baum</value>
@@ -5221,6 +5262,14 @@
       <key>${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3</key>
       <value>%0 muss zwischen %2 und %3 sein.</value>
     </entry>
+    <entry>
+      <key>${MIN_MAX_ERROR_MIN_INT_VALUE} field: %0, value: %1, max: %2</key>
+      <value>%0 muss kleiner/gleich %2 sein.</value>
+    </entry>
+    <entry>
+      <key>${MIN_MAX_ERROR_MAX_INT_VALUE} field: %0, value: %1, min: %2</key>
+      <value>%0 muss größer/gleich %2 sein.</value>
+    </entry>
     <entry>
       <key>Email</key>
       <value>E-Mail</value>
@@ -6155,7 +6204,6 @@
     </entry>
     <entry>
       <key>Action mail</key>
-      <value>Aktionsmail</value>
     </entry>
     <entry>
       <key>Consultation</key>
@@ -7979,7 +8027,7 @@
     </entry>
     <entry>
       <key>Email address does not exist</key>
-      <value>E-Mail Adresse existiert nicht</value>
+      <value>E-Mail-Adresse existiert nicht</value>
     </entry>
     <entry>
       <key>Receipt Header Text</key>
@@ -9110,6 +9158,10 @@ Bitte Datumseingabe prüfen</value>
       <key>My Workflow Tasks</key>
       <value>Meine Workflow Aufgaben</value>
     </entry>
+    <entry>
+      <key>Returned by</key>
+      <value>Zurückgegeben durch</value>
+    </entry>
     <entry>
       <key>My workflow tasks</key>
       <value>Meine Workflow Aufgaben</value>
@@ -11192,11 +11244,11 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Standard Country</key>
-      <value>Standartland</value>
+      <value>Standardland</value>
     </entry>
     <entry>
       <key>Standard Zip</key>
-      <value>Standart Plz</value>
+      <value>Standard Plz</value>
     </entry>
     <entry>
       <key>Outstanding Amount</key>
@@ -11801,6 +11853,10 @@ Bitte Datumseingabe prüfen</value>
       <key>Workshop for project-realization planned</key>
       <value>Workshop für Projektumsetzung geplannt</value>
     </entry>
+    <entry>
+      <key>Show my finished Tickets in the last 4 weeks</key>
+      <value>Meine abgeschlossenen Tickets der letzten 4 Tage anzeigen</value>
+    </entry>
     <entry>
       <key>Ticket created through duplication by</key>
       <value>Ticket durch Duplizierung erstellt. Anwender</value>
@@ -13104,6 +13160,10 @@ Bitte Datumseingabe prüfen</value>
       <key>Zip Archive</key>
       <value>Zip Archiv</value>
     </entry>
+    <entry>
+      <key>${MST_APP_ALREADY_ADDED}</key>
+      <value>Die ADITO-App wurde bereits hinzugefügt.</value>
+    </entry>
     <entry>
       <key>Attendees cannot be assigned repeatedly!</key>
       <value>Teilnehmer können nicht mehrmals zugewiesen werden!</value>
@@ -13122,6 +13182,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Open Admin View</key>
+      <value>Admin-Ansicht öffnen</value>
     </entry>
     <entry>
       <key>Attendees</key>
@@ -13148,6 +13209,9 @@ Bitte Datumseingabe prüfen</value>
     <entry>
       <key>KeywordTest4</key>
     </entry>
+    <entry>
+      <key>Ticket reopen</key>
+    </entry>
     <entry>
       <key>KeywordTest5</key>
     </entry>
@@ -13171,6 +13235,10 @@ Bitte Datumseingabe prüfen</value>
       <key>%0 companies were newley assigned. \n%1 companies are no longer assigned (these assignments got the status 'review'). \n%2 valid assignments were unchanged.\nThe Process took %3 seconds.</key>
       <value>%0 Firmen wurden neu zugewiesen. \n%1 Firmen sind nicht länger zugewiesen (diese Zuweisungen haben den Status 'in Prüfung' erhalten). \n%2 gültige Zuweisungen blieben unverändert.\nDer Prozess brauchte %3 seconds.</value>
     </entry>
+    <entry>
+      <key>Ticket returned to pool</key>
+      <value>Ticket zurück in den Pool gegeben</value>
+    </entry>
     <entry>
       <key>Contigent exhausted, please buy some new one to continue</key>
     </entry>
@@ -14104,6 +14172,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Save changes</key>
+      <value>Änderungen speichern</value>
     </entry>
     <entry>
       <key>Individual Reply Template</key>
@@ -14123,6 +14192,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Pull next ticket or create new ones</key>
+      <value></value>
     </entry>
     <entry>
       <key>Abgeschlossen</key>
@@ -14146,7 +14216,8 @@ Bitte Datumseingabe prüfen</value>
       <key>getTicketDetails</key>
     </entry>
     <entry>
-      <key>Ticket return</key>
+      <key>Ticket returned</key>
+      <value>Ticket zurückgegeben</value>
     </entry>
     <entry>
       <key>Ticket filter</key>
@@ -14156,6 +14227,7 @@ Bitte Datumseingabe prüfen</value>
     </entry>
     <entry>
       <key>Pull Ticket</key>
+      <value>Ticket ziehen</value>
     </entry>
     <entry>
       <key>Service-Admin</key>
@@ -14299,58 +14371,139 @@ Bitte Datumseingabe prüfen</value>
       <key>We save your data until</key>
     </entry>
     <entry>
-      <key>Remove synchronization</key>
+      <key>Guest</key>
+      <value>Gast</value>
     </entry>
     <entry>
-      <key>Pending contacts</key>
+      <key>Import from MS Teams</key>
+      <value>Von MS Teams importieren</value>
     </entry>
     <entry>
-      <key>Shows all synchronized contacts</key>
+      <key>Found a duplicate member</key>
+      <value>Mitglied ist doppelt vorhanden</value>
     </entry>
     <entry>
-      <key>My synchronized contacts</key>
+      <key>${SALESPROJECT_MST_STATUS_CHANGE}</key>
+      <value>Der Status des Vertriebsprojekts '%0' wurde auf '%1' geändert.</value>
     </entry>
     <entry>
-      <key>All synchronized contacts</key>
+      <key>${SALESPROJECT_MST_PHASE_CHANGE}</key>
+      <value>Die Phase des Vertriebsprojekts '%0' wurde auf '%1' geändert.</value>
     </entry>
     <entry>
-      <key>Contacts in Outlook</key>
+      <key>MS-Teams Message</key>
+      <value>MS-Teams Nachricht</value>
     </entry>
     <entry>
-      <key>Shows the number of contacts still to be synchronized</key>
+      <key>Dependencies</key>
+      <value>Abhängigkeiten</value>
     </entry>
     <entry>
-      <key>Shows my synchronized contacts</key>
+      <key>Dependency</key>
+      <value>Abhängigkeit</value>
     </entry>
     <entry>
-      <key>Ticket returned</key>
+      <key>ExportTemplateDependency</key>
+      <value>Export Vorlage Abhängigkeit</value>
     </entry>
     <entry>
-      <key>Returned by</key>
+      <key>testfilter</key>
     </entry>
     <entry>
-      <key>Ticket was reopen by</key>
+      <key>Adito Versafix</key>
     </entry>
     <entry>
-      <key>Employee group already selected.</key>
+      <key>Charset</key>
     </entry>
     <entry>
-      <key>Ticket returned to pool</key>
+      <key>Unique click rate (in %)</key>
+    </entry>
+    <entry>
+      <key>Employees for Employee groups</key>
+    </entry>
+    <entry>
+      <key>Last Click</key>
+    </entry>
+    <entry>
+      <key>Opener rate (in %)</key>
+    </entry>
+    <entry>
+      <key>Evaluation type</key>
+    </entry>
+    <entry>
+      <key>remove hashtags from favorite titles</key>
+    </entry>
+    <entry>
+      <key>Valid district contacts</key>
+    </entry>
+    <entry>
+      <key>default</key>
+    </entry>
+    <entry>
+      <key>Verknuepfungen</key>
+    </entry>
+    <entry>
+      <key>unsubscribe</key>
+    </entry>
+    <entry>
+      <key>Move</key>
+    </entry>
+    <entry>
+      <key>Copy Participants</key>
+    </entry>
+    <entry>
+      <key>ignore</key>
+    </entry>
+    <entry>
+      <key>Click rate (in %)</key>
+    </entry>
+    <entry>
+      <key>Ticket return</key>
+    </entry>
+    <entry>
+      <key>Remove synchronization</key>
+    </entry>
+    <entry>
+      <key>Pending contacts</key>
+    </entry>
+    <entry>
+      <key>Shows all synchronized contacts</key>
+    </entry>
+    <entry>
+      <key>My synchronized contacts</key>
+    </entry>
+    <entry>
+      <key>All synchronized contacts</key>
+    </entry>
+    <entry>
+      <key>Contacts in Outlook</key>
+    </entry>
+    <entry>
+      <key>Shows the number of contacts still to be synchronized</key>
+    </entry>
+    <entry>
+      <key>Shows my synchronized contacts</key>
+    </entry>
+    <entry>
+      <key>Email address has to be unique.</key>
     </entry>
     <entry>
       <key>Employee already selected.</key>
     </entry>
     <entry>
-      <key>Original editor</key>
+      <key>Open new mosaico template</key>
     </entry>
     <entry>
       <key>Name has to be unique.</key>
     </entry>
     <entry>
-      <key>Ticket reopen</key>
+      <key>Do you really want to resynchronize the user completely?\nThe data in ADITO will be deleted.\nThe outlook contacts must be cleared manually.</key>
     </entry>
     <entry>
-      <key>Employee for Employee groups</key>
+      <key>Employee group already selected.</key>
+    </entry>
+    <entry>
+      <key>Open new mosaico template</key>
     </entry>
     <entry>
       <key>Open new mosaico template</key>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index fbd3673306ef7cc31e70d8aff9893654c5d424c0..b39d47e306b779a08bc8a967a51647140a06fd85 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -2361,6 +2361,14 @@
       <key>${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3</key>
       <value>%0 has to be between %2 and %3.</value>
     </entry>
+    <entry>
+      <key>${MIN_MAX_ERROR_MIN_INT_VALUE} field: %0, value: %1, max: %2</key>
+      <value>%0 has to be less/equal %2.</value>
+    </entry>
+    <entry>
+      <key>${MIN_MAX_ERROR_MAX_INT_VALUE} field: %0, value: %1, min: %2</key>
+      <value>%0 has to be greater/equal %2.</value>
+    </entry>
     <entry>
       <key>Password</key>
     </entry>
@@ -7503,7 +7511,7 @@
       <key>Add app</key>
     </entry>
     <entry>
-      <key>Open Teams</key>
+      <key>Open MS Teams</key>
     </entry>
     <entry>
       <key>Choose Team</key>
@@ -9631,6 +9639,10 @@
     <entry>
       <key>TrueType Font</key>
     </entry>
+    <entry>
+      <key>${MST_APP_ALREADY_ADDED}</key>
+      <value>The ADITO app has already been added.</value>
+    </entry>
     <entry>
       <key>No recipient is marked for test run replacement.</key>
     </entry>
@@ -9868,6 +9880,14 @@
     <entry>
       <key>Paste as Top Topic</key>
     </entry>
+    <entry>
+      <key>${SALESPROJECT_MST_STATUS_CHANGE}</key>
+      <value>The status of the salesproject '%0' has been changed to '%1'.</value>
+    </entry>
+    <entry>
+      <key>${SALESPROJECT_MST_PHASE_CHANGE}</key>
+      <value>The phase of the salesproject '%0' has been changed to '%1'.</value>
+    </entry>
     <entry>
       <key>Search term</key>
     </entry>
@@ -10874,6 +10894,39 @@
     <entry>
       <key>Answer Address</key>
     </entry>
+    <entry>
+      <key>Employee for Employee groups</key>
+    </entry>
+    <entry>
+      <key>Employee group already selected.</key>
+    </entry>
+    <entry>
+      <key>Employee already selected.</key>
+    </entry>
+    <entry>
+      <key>Name has to be unique.</key>
+    </entry>
+    <entry>
+      <key>Ticket returned</key>
+    </entry>
+    <entry>
+      <key>Returned by</key>
+    </entry>
+    <entry>
+      <key>Ticket returned to pool</key>
+    </entry>
+    <entry>
+      <key>Original editor</key>
+    </entry>
+    <entry>
+      <key>Ticket was reopen by</key>
+    </entry>
+    <entry>
+      <key>Ticket reopen</key>
+    </entry>
+    <entry>
+      <key>Email address has to be unique.</key>
+    </entry>
     <entry>
       <key>Open new mosaico template</key>
     </entry>
@@ -10989,94 +11042,155 @@
       <key>Synced searches</key>
     </entry>
     <entry>
-      <key>Slave administration</key>
+      <key>All synchronized datasets</key>
     </entry>
     <entry>
-      <key>Slave administration '%0' is '%1'</key>
+      <key>Pending datasets</key>
     </entry>
     <entry>
-      <key>The file did not contain any data</key>
+      <key>Email address has to be unique</key>
     </entry>
     <entry>
-      <key>Ticket returned</key>
+      <key>My synchronized datasets</key>
     </entry>
     <entry>
-      <key>Returned by</key>
+      <key>Do you really want to resynchronize the user completely?\nThe synchronisation in ADITO will be deleted.\nThe outlook contacts must be cleared manually.</key>
     </entry>
     <entry>
-      <key>Ticket was reopen by</key>
+      <key>Shows my synchronized datasets</key>
     </entry>
     <entry>
-      <key>All synchronized datasets</key>
+      <key>Rulegroup already selected</key>
     </entry>
     <entry>
-      <key>Employee group already selected.</key>
+      <key>Shows all synchronized datasets</key>
     </entry>
     <entry>
-      <key>Pending datasets</key>
+      <key>Shows the number of datasets still to be synchronized</key>
     </entry>
     <entry>
-      <key>Sales project responsibility set</key>
+      <key>Contact synchronisation</key>
     </entry>
     <entry>
-      <key>My synchronized datasets</key>
+      <key>Datasets in Outlook</key>
     </entry>
     <entry>
-      <key>Ticket returned to pool</key>
+      <key>Employee already selected</key>
     </entry>
     <entry>
-      <key>Do you really want to resynchronize the user completely?\nThe synchronisation in ADITO will be deleted.\nThe outlook contacts must be cleared manually.</key>
+      <key>Contact synchronisations</key>
     </entry>
     <entry>
-      <key>Shows my synchronized datasets</key>
+      <key>Dataset in Outlook</key>
     </entry>
     <entry>
-      <key>Employee already selected.</key>
+      <key>Remove from synchronization</key>
     </entry>
     <entry>
-      <key>Shows all synchronized datasets</key>
+      <key>Contact synchronisation dashboard</key>
     </entry>
     <entry>
-      <key>Original editor</key>
+      <key>Name has to be unique</key>
     </entry>
     <entry>
-      <key>Shows the number of datasets still to be synchronized</key>
+      <key>Show filter result</key>
     </entry>
     <entry>
-      <key>Contact synchronisation</key>
+      <key>Add to synchronisation</key>
     </entry>
     <entry>
-      <key>Datasets in Outlook</key>
+      <key>Sales project responsibility set</key>
+    </entry>
+    <entry>
+      <key>Do you really want to delete \"%0\"? If tickets still use this inbox, this might cause problems.</key>
+    </entry>
+    <entry>
+      <key>Delete Inbox</key>
     </entry>
     <entry>
       <key>Finished Tickets last 4 weeks</key>
     </entry>
     <entry>
-      <key>Name has to be unique.</key>
+      <key>Inbox \"%0\" has been deleted.</key>
     </entry>
     <entry>
-      <key>Contact synchronisations</key>
+      <key>Employee group already selected</key>
     </entry>
     <entry>
-      <key>Dataset in Outlook</key>
+      <key>Show my finished Tickets in the last 4 weeks</key>
     </entry>
     <entry>
-      <key>Remove from synchronization</key>
+      <key>Move</key>
     </entry>
     <entry>
-      <key>Ticket reopen</key>
+      <key>Dependencies</key>
     </entry>
     <entry>
-      <key>Contact synchronisation dashboard</key>
+      <key>ExportTemplateDependency</key>
+      <value>Export Template Dependency</value>
     </entry>
     <entry>
-      <key>Show filter result</key>
+      <key>testfilter</key>
     </entry>
     <entry>
-      <key>Add to synchronisation</key>
+      <key>Adito Versafix</key>
     </entry>
     <entry>
-      <key>Employee for Employee groups</key>
+      <key>Charset</key>
+    </entry>
+    <entry>
+      <key>Unique click rate (in %)</key>
+    </entry>
+    <entry>
+      <key>Employees for Employee groups</key>
+    </entry>
+    <entry>
+      <key>Last Click</key>
+    </entry>
+    <entry>
+      <key>Opener rate (in %)</key>
+    </entry>
+    <entry>
+      <key>Evaluation type</key>
+    </entry>
+    <entry>
+      <key>remove hashtags from favorite titles</key>
+    </entry>
+    <entry>
+      <key>Valid district contacts</key>
+    </entry>
+    <entry>
+      <key>default</key>
+    </entry>
+    <entry>
+      <key>Verknuepfungen</key>
+    </entry>
+    <entry>
+      <key>unsubscribe</key>
+    </entry>
+    <entry>
+      <key>Copy Participants</key>
+    </entry>
+    <entry>
+      <key>ignore</key>
+    </entry>
+    <entry>
+      <key>Click rate (in %)</key>
+    </entry>
+    <entry>
+      <key>Dependency</key>
+    </entry>
+    <entry>
+      <key>Found a duplicate member</key>
+    </entry>
+    <entry>
+      <key>MS-Teams Message</key>
+    </entry>
+    <entry>
+      <key>Import from MS Teams</key>
+    </entry>
+    <entry>
+      <key>Guest</key>
     </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
diff --git a/neonContext/Address/Address.aod b/neonContext/Address/Address.aod
index d52b486fe764514b9aca06652f49d2b8ab1751e9..b42dae903069a6ad26e584a866ac7feb06484ba4 100644
--- a/neonContext/Address/Address.aod
+++ b/neonContext/Address/Address.aod
@@ -4,6 +4,7 @@
   <title>Addresses</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/neonContext/Address/documentation.adoc</documentation>
+  <filterView>AdressFilter_view</filterView>
   <lookupView>AddressLookup_view</lookupView>
   <entity>Address_entity</entity>
   <references>
@@ -23,5 +24,9 @@
       <name>fffe7dd0-6f32-4b4f-865b-501f48813c6d</name>
       <view>AddressOrgMultiEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>ffbf7b96-30bb-497a-95bf-b2d1c53ef711</name>
+      <view>AdressFilter_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/Document/Document.aod b/neonContext/Document/Document.aod
index cfb02a7f2b32b641b632905df49b01ef560bd62c..aea835587fcd457ce8157604e56ada0ca8329198 100644
--- a/neonContext/Document/Document.aod
+++ b/neonContext/Document/Document.aod
@@ -37,5 +37,9 @@
       <name>434ed60c-8219-4ef5-b795-6d72b9ae48c9</name>
       <view>DocumentWithIdFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>9640b403-4953-4575-b70a-66986de3c6b2</name>
+      <view>DocumentMultipleEditNoNewRow_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/ExportTemplate/ExportTemplate.aod b/neonContext/ExportTemplate/ExportTemplate.aod
index 40c9ea289209b23bad28b2eb33ebc1c65fd1273e..103e413ba1e0de90e5317354838d43b82ebc325e 100644
--- a/neonContext/ExportTemplate/ExportTemplate.aod
+++ b/neonContext/ExportTemplate/ExportTemplate.aod
@@ -4,10 +4,11 @@
   <title>Export Template</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <icon>NEON:EXPORT</icon>
+  <mainView>ExportTemplateMain_view</mainView>
   <filterView>ExportTemplateFilter_view</filterView>
   <editView>ExportTemplateEdit_view</editView>
   <previewView>ExportTemplatePreview_view</previewView>
-  <lookupView>ExportTemplateFilter_view</lookupView>
+  <lookupView>ExportTemplateLookup_view</lookupView>
   <entity>ExportTemplate_entity</entity>
   <references>
     <neonViewReference>
@@ -22,5 +23,17 @@
       <name>6986af0d-95a1-4e6c-8687-da99296b9c7d</name>
       <view>ExportTemplateEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>611cd4fc-5403-49c6-bf96-c0784e7efdcd</name>
+      <view>ExportTemplateMain_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>56f482d6-db40-4558-a9d9-71760b511d72</name>
+      <view>ExportTemplateDetail_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>6e3d459f-b15f-4f2a-8266-8e43a6e4b965</name>
+      <view>ExportTemplateLookup_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/ExportTemplateField/ExportTemplateField.aod b/neonContext/ExportTemplateField/ExportTemplateField.aod
index 155383faabb6c58f1d4a3f0356aad7965ee7cc46..9168b0ab2c5166fbd10fb3514a6a7e8b4854faf5 100644
--- a/neonContext/ExportTemplateField/ExportTemplateField.aod
+++ b/neonContext/ExportTemplateField/ExportTemplateField.aod
@@ -3,7 +3,7 @@
   <name>ExportTemplateField</name>
   <title>Export Template Field</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <editView>ExportTemplateFieldMultiEdit_view</editView>
+  <editView>ExportTemplateFieldEdit_view</editView>
   <entity>ExportTemplateField_entity</entity>
   <references>
     <neonViewReference>
@@ -14,5 +14,13 @@
       <name>f015edb3-3dd0-431f-ac6f-3f23a350e36c</name>
       <view>ExportTemplateFieldList_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>cc2174d0-cb70-461d-b1f6-8862f3233440</name>
+      <view>ExportTemplateFieldFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>c93b35f9-ede0-4b32-8852-cd3131fc87bb</name>
+      <view>ExportTemplateFieldEdit_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/ExportTemplatePlaceOfUse/ExportTemplatePlaceOfUse.aod b/neonContext/ExportTemplatePlaceOfUse/ExportTemplatePlaceOfUse.aod
new file mode 100644
index 0000000000000000000000000000000000000000..c146ccbfcc22d5bffbdd6e9e0c412494e618ebc4
--- /dev/null
+++ b/neonContext/ExportTemplatePlaceOfUse/ExportTemplatePlaceOfUse.aod
@@ -0,0 +1,28 @@
+<?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>ExportTemplatePlaceOfUse</name>
+  <title>ExportTemplateDependency</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <editView>ExportTemplatePlaceOfUseEdit_view</editView>
+  <previewView>ExportTemplatePlaceOfUsePreview_view</previewView>
+  <lookupView>ExportTemplatePlaceOfUseFilter_view</lookupView>
+  <entity>ExportTemplatePlaceOfUse_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>ebd784ea-ffb3-4502-9ebb-3bb6f056c923</name>
+      <view>ExportTemplatePlaceOfUseEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>3439407e-24dc-414a-9035-c6ef2aae32c1</name>
+      <view>ExportTemplatePlaceOfUseFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>ed73d79d-c3ef-4c8e-8257-49e94c9a7392</name>
+      <view>ExportTemplatePlaceOfUsePreview_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>f8b7db8a-d6c1-49f9-9734-d455254b811a</name>
+      <view>ExportTemplatePlaceOfUseGeneric_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/ExportTemplatePlaceofUse/ExportTemplatePlaceofUse.aod b/neonContext/ExportTemplatePlaceofUse/ExportTemplatePlaceofUse.aod
deleted file mode 100644
index 3b3b7eeb6424a266cff34a2711b89e67d1cb17f4..0000000000000000000000000000000000000000
--- a/neonContext/ExportTemplatePlaceofUse/ExportTemplatePlaceofUse.aod
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
-  <name>ExportTemplatePlaceofUse</name>
-  <title>Export Template PlaceOfUse</title>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <entity>ExportTemplatePlaceOfUse_entity</entity>
-  <references>
-    <neonViewReference>
-      <name>99e2e84f-a46a-4dd4-a312-254eb2d4c935</name>
-      <view>ExportTemplatePlaceOfUseList_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>5b1a0851-93c8-451e-b10e-ef3defa1e9f4</name>
-      <view>ExportTemplatePlaceOfUseMultiEdit_view</view>
-    </neonViewReference>
-  </references>
-</neonContext>
diff --git a/neonContext/MSTTeam/MSTTeam.aod b/neonContext/MSTTeam/MSTTeam.aod
index 7f715ccd447d45dbce5deed363aebf485646fab9..3f0ea6b92907c6b28ee8c669151af3cb44df8b35 100644
--- a/neonContext/MSTTeam/MSTTeam.aod
+++ b/neonContext/MSTTeam/MSTTeam.aod
@@ -16,7 +16,6 @@
     </neonViewReference>
     <neonViewReference>
       <name>b1e14c73-f48f-43a7-a459-2aa0172d015b</name>
-      <view>MSTTeamEditMembers_view</view>
     </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/MSTTeamLink/MSTTeamLink.aod b/neonContext/MSTTeamLink/MSTTeamLink.aod
deleted file mode 100644
index d0d6d646fe31690e5c9d26697ec9adf9f471f40c..0000000000000000000000000000000000000000
--- a/neonContext/MSTTeamLink/MSTTeamLink.aod
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1">
-  <name>MSTTeamLink</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <editView>MSTTeamLinkEdit_view</editView>
-  <entity>MSTTeamLink_entity</entity>
-  <references>
-    <neonViewReference>
-      <name>a165469f-eea5-4427-b5ba-4477fe7e04e6</name>
-      <view>MSTTeamLinkEdit_view</view>
-    </neonViewReference>
-  </references>
-</neonContext>
diff --git a/neonContext/SupportTicket/SupportTicket.aod b/neonContext/SupportTicket/SupportTicket.aod
index f3e1f36d9313f8facdabf966730e8fb9b7119233..8146a7dda5d33c21b2e8745152f143fea7535e33 100644
--- a/neonContext/SupportTicket/SupportTicket.aod
+++ b/neonContext/SupportTicket/SupportTicket.aod
@@ -60,7 +60,6 @@
     </neonViewReference>
     <neonViewReference>
       <name>fc7b698f-ded0-49f8-b5e3-7f7b0c63ea93</name>
-      <view>SupportTicketEditQuickEntry_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>f70692c0-7ea0-423b-9d65-f47ea0e093f5</name>
@@ -95,6 +94,9 @@
     </neonViewReference>
     <neonViewReference>
       <name>3bcf18a8-1f3c-4841-ad31-01867b17d187</name>
+    </neonViewReference>
+    <neonViewReference>
+      <name>b3c473d4-20f1-4e4c-b026-3e7abf4c6199</name>
       <view>SupportTicketMultiEdit_view</view>
     </neonViewReference>
   </references>
diff --git a/neonDashboard/Service/Service.aod b/neonDashboard/Service/Service.aod
index bc8d08ea8f092bd3adf738f26afce47a44cecdff..e04750eb2fefb2ba2020e124a44e97e5273abe76 100644
--- a/neonDashboard/Service/Service.aod
+++ b/neonDashboard/Service/Service.aod
@@ -25,12 +25,6 @@
         <colspan v="1" />
         <rowspan v="4" />
       </uiConfiguration>
-      <parameters>
-        <neonDashletParameter>
-          <name>BasedOnRoles_param</name>
-          <value>true</value>
-        </neonDashletParameter>
-      </parameters>
     </neonDashlet>
     <neonDashlet>
       <name>Dashlet3</name>
@@ -67,12 +61,6 @@
         <colspan v="3" />
         <rowspan v="4" />
       </uiConfiguration>
-      <parameters>
-        <neonDashletParameter>
-          <name>BasedOnRoles_param</name>
-          <value>true</value>
-        </neonDashletParameter>
-      </parameters>
     </neonDashlet>
     <neonDashlet>
       <name>Dashlet6</name>
@@ -85,12 +73,6 @@
         <colspan v="3" />
         <rowspan v="4" />
       </uiConfiguration>
-      <parameters>
-        <neonDashletParameter>
-          <name>BasedOnRoles_param</name>
-          <value>true</value>
-        </neonDashletParameter>
-      </parameters>
     </neonDashlet>
   </defaultDashlets>
 </neonDashboard>
diff --git a/neonView/ActivityEdit_view/ActivityEdit_view.aod b/neonView/ActivityEdit_view/ActivityEdit_view.aod
index f07e18c7d31ea5e26294f1234641632967e834e8..ad986201cc67ddd998d2e86fb8283fdaea4cd01d 100644
--- a/neonView/ActivityEdit_view/ActivityEdit_view.aod
+++ b/neonView/ActivityEdit_view/ActivityEdit_view.aod
@@ -62,9 +62,9 @@
       <view>TopicTreeRelationMultiEdit_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>1dfe4fcc-eb36-4a6c-878d-f907d36de9ac</name>
+      <name>9803485c-734d-4882-b30e-f6da4b8aa401</name>
       <entityField>Documents</entityField>
-      <view>DocumentMultipleEdit_view</view>
+      <view>DocumentMultipleEditNoNewRow_view</view>
     </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod b/neonView/AdressFilter_view/AdressFilter_view.aod
similarity index 57%
rename from neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod
rename to neonView/AdressFilter_view/AdressFilter_view.aod
index 9b4d6a978b1032e991dbc8cc4fbc4b483a6b76d7..7243a0108c3886d3a276f80feafd84363756550d 100644
--- a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod
+++ b/neonView/AdressFilter_view/AdressFilter_view.aod
@@ -1,18 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
-  <name>ExportTemplatePlaceOfUseList_view</name>
+  <name>AdressFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/neonView/AdressFilter_view/documentation.adoc</documentation>
   <layout>
     <noneLayout>
       <name>layout</name>
     </noneLayout>
   </layout>
-  <children>
-    <titledListViewTemplate>
-      <name>titledList</name>
-      <titleField>PLACEOFUSE</titleField>
-      <titleFieldFullWidth v="true" />
-      <entityField>#ENTITY</entityField>
-    </titledListViewTemplate>
-  </children>
 </neonView>
diff --git a/neonView/AdressFilter_view/documentation.adoc b/neonView/AdressFilter_view/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..c8cdf10d9697de841ff9219318e1b83008637b6f
--- /dev/null
+++ b/neonView/AdressFilter_view/documentation.adoc
@@ -0,0 +1 @@
+This View is only need for selecting the filter for export and observations
\ No newline at end of file
diff --git a/neonView/AdvertisingFilter_view/AdvertisingFilter_view.aod b/neonView/AdvertisingFilter_view/AdvertisingFilter_view.aod
index 793cd634f5dc7dfa77ad751f5596030d0e191217..842cca711c454cab53db8971345bc76d9d167929 100644
--- a/neonView/AdvertisingFilter_view/AdvertisingFilter_view.aod
+++ b/neonView/AdvertisingFilter_view/AdvertisingFilter_view.aod
@@ -12,6 +12,7 @@
     <tableViewTemplate>
       <name>Table</name>
       <maxDBRow v="100" />
+      <isCreatable v="false" />
       <columns>
         <neonTableColumn>
           <name>8c3e1048-7f7a-4210-a849-198f5b569c04</name>
diff --git a/neonView/BulkMailFilter_view/BulkMailFilter_view.aod b/neonView/BulkMailFilter_view/BulkMailFilter_view.aod
index 183b62b6df494b8a2ddebaa2765853769a357e9d..042e71cb800e3f9f8d63f78d61a5b654469ee418 100644
--- a/neonView/BulkMailFilter_view/BulkMailFilter_view.aod
+++ b/neonView/BulkMailFilter_view/BulkMailFilter_view.aod
@@ -13,6 +13,7 @@
       <storeRoles>
         <element>PROJECT_Marketing</element>
       </storeRoles>
+      <icon>VAADIN:AT</icon>
       <categories>
         <neonDashletCategory>
           <name>marketing</name>
diff --git a/neonView/DocumentMultipleEditNoNewRow_view/DocumentMultipleEditNoNewRow_view.aod b/neonView/DocumentMultipleEditNoNewRow_view/DocumentMultipleEditNoNewRow_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..2c3deabf084286cb776075a9d9961034a52500ba
--- /dev/null
+++ b/neonView/DocumentMultipleEditNoNewRow_view/DocumentMultipleEditNoNewRow_view.aod
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>DocumentMultipleEditNoNewRow_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/neonView/DocumentMultipleEditNoNewRow_view/documentation.adoc</documentation>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>genericMultiple</name>
+      <autoNewRow v="false" />
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonGenericMultipleTableColumn>
+          <name>c4cc3dbf-95cb-4947-ae8a-4c8cca9f21b0</name>
+          <entityField>BINDATA_UPLOAD</entityField>
+        </neonGenericMultipleTableColumn>
+        <neonGenericMultipleTableColumn>
+          <name>40bf8a61-711f-42b8-b24c-0cdfc92e579f</name>
+          <entityField>NAME</entityField>
+        </neonGenericMultipleTableColumn>
+        <neonGenericMultipleTableColumn>
+          <name>dc1d0e99-6600-4067-8192-07e8c605d362</name>
+          <entityField>DESCRIPTION</entityField>
+        </neonGenericMultipleTableColumn>
+        <neonGenericMultipleTableColumn>
+          <name>ab509c66-f72a-46b5-af5d-2b5620506bf5</name>
+          <entityField>IS_MAIN_DOCUMENT</entityField>
+        </neonGenericMultipleTableColumn>
+        <neonGenericMultipleTableColumn>
+          <name>48912651-0c8f-42f1-ba85-99ed5566e36f</name>
+          <entityField>KEYWORD</entityField>
+        </neonGenericMultipleTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/DocumentMultipleEditNoNewRow_view/documentation.adoc b/neonView/DocumentMultipleEditNoNewRow_view/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..deadfe5861fe77a445b0ba749fd37e75dc0e6917
--- /dev/null
+++ b/neonView/DocumentMultipleEditNoNewRow_view/documentation.adoc
@@ -0,0 +1 @@
+This view is for the entities that don't need a new line in edit or new mode.
\ No newline at end of file
diff --git a/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod b/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod
index e8fa1aac44a68bdec6c873b71a6ca6b1e221d568..be218839b16e9580285be895409ed28ac4b9ce06 100644
--- a/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod
+++ b/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod
@@ -124,5 +124,10 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>b98604e3-4b54-4cb2-8231-4668cf4cf3dd</name>
+      <entityField>DocumentTemplatePlaceOfUse</entityField>
+      <view>DocumentTemplatePlaceOfUseMultiEdit_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ExportTemplateDetail_view/ExportTemplateDetail_view.aod b/neonView/ExportTemplateDetail_view/ExportTemplateDetail_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..4398139911202280c568d7307193faafd21d9aee
--- /dev/null
+++ b/neonView/ExportTemplateDetail_view/ExportTemplateDetail_view.aod
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ExportTemplateDetail_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <drawerLayout>
+      <name>layout</name>
+      <layoutCaption>Details</layoutCaption>
+      <fixedDrawer v="false" />
+    </drawerLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>generic</name>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>7666c443-e85c-43ce-bfc0-0541c2855f93</name>
+          <entityField>DESCRIPTION</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>50d494c5-268a-4991-a399-36ccd2083b37</name>
+          <entityField>SENTENCESEPARATOR</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>4894f791-3a6a-494c-a765-10cf4341035d</name>
+          <entityField>FIELDSEPARATOR</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>63ba6855-4109-424a-87a7-215921d9d794</name>
+          <entityField>FIELDDELIMITER</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <neonViewReference>
+      <name>1c205be8-ecf4-4a12-93d7-d9edbf03fe3c</name>
+      <entityField>ExportTemplateMainPlaceOfUse</entityField>
+      <view>ExportTemplatePlaceOfUseGeneric_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod b/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod
index a821121f1aeb066c44b02cc36a7428411d46f07b..4d28a36f9339d95416a511f218743ced58ad5c72 100644
--- a/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod
+++ b/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod
@@ -24,17 +24,13 @@
           <entityField>DESCRIPTION</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>dcca079e-66b5-4b12-b7f7-60b53966bb43</name>
-          <entityField>ISOLANGUAGE</entityField>
+          <name>805a801e-d030-4ad9-9a9b-26e279c1d0fc</name>
+          <entityField>SENTENCESEPARATOR</entityField>
         </entityFieldLink>
         <entityFieldLink>
           <name>2d720c5a-f5a6-4689-8bc7-45e3f5e979ca</name>
           <entityField>FIELDSEPARATOR</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>805a801e-d030-4ad9-9a9b-26e279c1d0fc</name>
-          <entityField>SENTENCESEPARATOR</entityField>
-        </entityFieldLink>
         <entityFieldLink>
           <name>a9041865-cadf-4ebf-8e14-ca1ae445a0cf</name>
           <entityField>FIELDDELIMITER</entityField>
@@ -42,14 +38,9 @@
       </fields>
     </genericViewTemplate>
     <neonViewReference>
-      <name>d4fc40d7-96c2-4260-b749-dd0fee481b52</name>
-      <entityField>ExportTemplateFields</entityField>
-      <view>ExportTemplateFieldMultiEdit_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>115345f0-5b8a-4a94-ad7d-bf5bf986da7a</name>
-      <entityField>ExportTemplateplaceOfUseCon</entityField>
-      <view>ExportTemplatePlaceOfUseMultiEdit_view</view>
+      <name>7e29d4e4-86a0-4a39-9a80-24d2b4a657a9</name>
+      <entityField>ExportTemplateMainPlaceOfUse</entityField>
+      <view>ExportTemplatePlaceOfUseEdit_view</view>
     </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod b/neonView/ExportTemplateFieldEdit_view/ExportTemplateFieldEdit_view.aod
similarity index 52%
rename from neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod
rename to neonView/ExportTemplateFieldEdit_view/ExportTemplateFieldEdit_view.aod
index 49a58b14aac140e3dd338dc2a934d39ff2e25a15..51a62980047cd59cd591cad2e430988b364df757 100644
--- a/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod
+++ b/neonView/ExportTemplateFieldEdit_view/ExportTemplateFieldEdit_view.aod
@@ -1,28 +1,27 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
-  <name>MSTTeamEditMembers_view</name>
+  <name>ExportTemplateFieldEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <size>SMALL</size>
   <layout>
-    <boxLayout>
+    <noneLayout>
       <name>layout</name>
-    </boxLayout>
+    </noneLayout>
   </layout>
   <children>
     <genericViewTemplate>
-      <name>Teamname</name>
-      <entityField>#ENTITY</entityField>
+      <name>ExportTemplateFieldEditGeneric</name>
+      <editMode v="true" />
+      <hideEmptyFields v="false" />
       <fields>
         <entityFieldLink>
-          <name>b17446e0-ad87-4098-8bd2-de716a8e12ae</name>
-          <entityField>TEAMNAME</entityField>
+          <name>9377c104-4a58-4739-9582-9827b0097729</name>
+          <entityField>EXPORTTEMPLATEPLACEOFUSE_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>bd6b4681-d616-4b02-a8d0-35f386640588</name>
+          <entityField>FIELD</entityField>
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
-    <neonViewReference>
-      <name>189bbef9-e646-416a-835f-6348199dbd24</name>
-      <entityField>TeamMembers</entityField>
-      <view>MSTTeamMemberMultiEdit_view</view>
-    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ExportTemplateFieldFilter_view/ExportTemplateFieldFilter_view.aod b/neonView/ExportTemplateFieldFilter_view/ExportTemplateFieldFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..8a1b6a7188932352a6810269920a7271eaad8d51
--- /dev/null
+++ b/neonView/ExportTemplateFieldFilter_view/ExportTemplateFieldFilter_view.aod
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ExportTemplateFieldFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <groupLayout>
+      <name>layout</name>
+    </groupLayout>
+  </layout>
+  <children>
+    <treeTableViewTemplate>
+      <name>ExportTemplateFieldTreeTable</name>
+      <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>MoveActions</favoriteActionGroup1>
+      <isEditable v="false" />
+      <columns>
+        <neonTreeTableColumn>
+          <name>5fa75992-8d07-4f59-8780-defbe0472910</name>
+          <entityField>SORTING</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>5b943bef-e70a-4110-a6be-dc7bba96b4eb</name>
+          <entityField>FIELD</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>8dc1f2c1-6351-4b66-aafa-fa8149690e6c</name>
+          <entityField>placeOfUse</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod b/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod
index 28f8da32d3a8828c0f658129fdf81ae91e298b01..29c0373073449768c1d1582751f40a335445d7b5 100644
--- a/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod
+++ b/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod
@@ -12,13 +12,14 @@
   <children>
     <titledListViewTemplate>
       <name>titledList</name>
-      <titleField>FIELD</titleField>
+      <titleField>SORTING</titleField>
       <entityField>#ENTITY</entityField>
       <title>Field and Position</title>
+      <isEditable v="true" />
       <columns>
         <neonTitledListTableColumn>
           <name>a0e7e2ce-b8fc-417c-bf7e-9907b75fec59</name>
-          <entityField>SORTING</entityField>
+          <entityField>FIELD</entityField>
           <fullWidth v="false" />
         </neonTitledListTableColumn>
       </columns>
diff --git a/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod b/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod
index d568ca27848e106958e132471cd1b85b44f96f48..e7ef3b7160487c6924d3094bd2a3e29a5eb76237 100644
--- a/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod
+++ b/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod
@@ -11,6 +11,9 @@
     <genericMultipleViewTemplate>
       <name>genericMultiple</name>
       <entityField>#ENTITY</entityField>
+      <isCreatable v="false" />
+      <isDeletable v="false" />
+      <isEditable v="false" />
       <columns>
         <neonGenericMultipleTableColumn>
           <name>6e30e825-4fd4-4503-b81c-ac1a9971275d</name>
diff --git a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod
index ecfe1548157a26a029eb9d6ca3dabd552485cadc..a33b96878aa90a70f95fb5a6146d2dcb6df3e6cf 100644
--- a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod
+++ b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod
@@ -18,10 +18,6 @@
           <name>76bc9ab0-8294-4df1-bdcb-6a86daef2170</name>
           <entityField>TITLE</entityField>
         </neonTableColumn>
-        <neonTableColumn>
-          <name>29cd8f19-a002-40be-b91b-9c0eab447129</name>
-          <entityField>ISOLANGUAGE</entityField>
-        </neonTableColumn>
         <neonTableColumn>
           <name>e598db0e-f2d9-43d4-97c4-f1122edf6751</name>
           <entityField>DESCRIPTION</entityField>
@@ -48,10 +44,6 @@
           <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>
diff --git a/neonView/ExportTemplateLookup_view/ExportTemplateLookup_view.aod b/neonView/ExportTemplateLookup_view/ExportTemplateLookup_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..a1f2c8f4f1accd5137cb8c02a04df2b35f25a179
--- /dev/null
+++ b/neonView/ExportTemplateLookup_view/ExportTemplateLookup_view.aod
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ExportTemplateLookup_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
+  <layout>
+    <groupLayout>
+      <name>layout</name>
+    </groupLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>table</name>
+      <entityField>#ENTITY</entityField>
+      <isEditable v="true" />
+      <columns>
+        <neonTableColumn>
+          <name>76bc9ab0-8294-4df1-bdcb-6a86daef2170</name>
+          <entityField>TITLE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>e598db0e-f2d9-43d4-97c4-f1122edf6751</name>
+          <entityField>DESCRIPTION</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ExportTemplateMain_view/ExportTemplateMain_view.aod b/neonView/ExportTemplateMain_view/ExportTemplateMain_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..62d38aa680dc82d8656d31cb66cc138a8510daac
--- /dev/null
+++ b/neonView/ExportTemplateMain_view/ExportTemplateMain_view.aod
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ExportTemplateMain_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <masterSlaveLayout>
+      <name>layout</name>
+      <master>36db0218-9ae4-4ddd-8405-8ce9e874a31c</master>
+    </masterSlaveLayout>
+  </layout>
+  <children>
+    <neonViewReference>
+      <name>36db0218-9ae4-4ddd-8405-8ce9e874a31c</name>
+      <entityField>#ENTITY</entityField>
+      <view>ExportTemplatePreview_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>34d357ec-7421-4fc6-9f66-eed0e95bc2f7</name>
+      <entityField>ExportTemplatePlacesOfUse</entityField>
+      <view>ExportTemplatePlaceOfUseFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>4a77b26f-e83c-4988-b925-ecc227a1fd09</name>
+      <entityField>ExportTemplateFields</entityField>
+      <view>ExportTemplateFieldFilter_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/ExportTemplatePlaceOfUseEdit_view/ExportTemplatePlaceOfUseEdit_view.aod b/neonView/ExportTemplatePlaceOfUseEdit_view/ExportTemplatePlaceOfUseEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..54c54551b68d108d2428ded56de3574e53026086
--- /dev/null
+++ b/neonView/ExportTemplatePlaceOfUseEdit_view/ExportTemplatePlaceOfUseEdit_view.aod
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ExportTemplatePlaceOfUseEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>SMALL</size>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>ExportTemplateDependencyEditGeneric</name>
+      <editMode v="true" />
+      <hideEmptyFields v="false" />
+      <fields>
+        <entityFieldLink>
+          <name>41964c70-2475-4989-a717-caae3c470674</name>
+          <entityField>EXPORTTEMPLATEPLACEOFUSE_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>ee620cbf-5c85-4d1a-9a81-b14a55247afc</name>
+          <entityField>PLACEOFUSE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>a47f76e7-8860-414b-b78c-ea2f4d0b65d4</name>
+          <entityField>OBJECT_FILTER</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ExportTemplatePlaceOfUseFilter_view/ExportTemplatePlaceOfUseFilter_view.aod b/neonView/ExportTemplatePlaceOfUseFilter_view/ExportTemplatePlaceOfUseFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..1c4a06528e1798184325f53eb3e925f7eee43604
--- /dev/null
+++ b/neonView/ExportTemplatePlaceOfUseFilter_view/ExportTemplatePlaceOfUseFilter_view.aod
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ExportTemplatePlaceOfUseFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
+  <layout>
+    <groupLayout>
+      <name>layout</name>
+    </groupLayout>
+  </layout>
+  <children>
+    <treeTableViewTemplate>
+      <name>ExportTemplateDependencyFilterTreeTable</name>
+      <parentField>EXPORTTEMPLATEPLACEOFUSE_ID</parentField>
+      <showChildrenCount v="false" />
+      <isEditable v="false" />
+      <columns>
+        <neonTreeTableColumn>
+          <name>d261955e-81db-41dd-9dd3-57f07f92cfc2</name>
+          <entityField>PLACEOFUSE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod b/neonView/ExportTemplatePlaceOfUseGeneric_view/ExportTemplatePlaceOfUseGeneric_view.aod
similarity index 66%
rename from neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod
rename to neonView/ExportTemplatePlaceOfUseGeneric_view/ExportTemplatePlaceOfUseGeneric_view.aod
index b3ce9642c95bd0bd6f3d72802cae3a46da66d829..443c2f5a0ff3ebfc4382af97d7178f18852e552c 100644
--- a/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod
+++ b/neonView/ExportTemplatePlaceOfUseGeneric_view/ExportTemplatePlaceOfUseGeneric_view.aod
@@ -1,21 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
-  <name>MSTTeamLinkEdit_view</name>
+  <name>ExportTemplatePlaceOfUseGeneric_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <size>SMALL</size>
   <layout>
-    <boxLayout>
+    <noneLayout>
       <name>layout</name>
-    </boxLayout>
+    </noneLayout>
   </layout>
   <children>
     <genericViewTemplate>
-      <name>TeamSelection</name>
-      <editMode v="true" />
+      <name>ExportTemplatePlaceOfUseGenericGeneric</name>
       <fields>
         <entityFieldLink>
-          <name>1b10e15e-0774-430d-8b76-36307abdff33</name>
-          <entityField>TEAM_ID_AND_NAME</entityField>
+          <name>20243d2b-d773-4daf-b0cd-9ac0b762f1fc</name>
+          <entityField>PLACEOFUSE</entityField>
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
diff --git a/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod b/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod
deleted file mode 100644
index c32a8477c19869f6a34cce18c963b2a590aca365..0000000000000000000000000000000000000000
--- a/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
-  <name>ExportTemplatePlaceOfUseMultiEdit_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <noneLayout>
-      <name>layout</name>
-    </noneLayout>
-  </layout>
-  <children>
-    <genericMultipleViewTemplate>
-      <name>genericmultiple</name>
-      <entityField>#ENTITY</entityField>
-      <title>Place of Use</title>
-      <columns>
-        <neonGenericMultipleTableColumn>
-          <name>faec9114-95cf-4d47-8f0e-d7d392bff188</name>
-          <entityField>PLACEOFUSE</entityField>
-        </neonGenericMultipleTableColumn>
-      </columns>
-    </genericMultipleViewTemplate>
-  </children>
-</neonView>
diff --git a/neonView/ExportTemplatePlaceOfUsePreview_view/ExportTemplatePlaceOfUsePreview_view.aod b/neonView/ExportTemplatePlaceOfUsePreview_view/ExportTemplatePlaceOfUsePreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..08b9078db3e9ac7ad5eb50bef25606c3a36a19a6
--- /dev/null
+++ b/neonView/ExportTemplatePlaceOfUsePreview_view/ExportTemplatePlaceOfUsePreview_view.aod
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>ExportTemplatePlaceOfUsePreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <headerFooterLayout>
+      <name>layout</name>
+      <header>ExportTemplateDependencyPreviewCard</header>
+    </headerFooterLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>ExportTemplateDependencyPreviewCard</name>
+      <titleField>PLACEOFUSE</titleField>
+    </cardViewTemplate>
+    <genericViewTemplate>
+      <name>ExportTemplateDependencyPreviewGeneric</name>
+      <fields>
+        <entityFieldLink>
+          <name>a5946581-6806-499b-b402-bd2c06bb01d8</name>
+          <entityField>OBJECT_FILTER</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod b/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod
index 4a0bbc8895e323d34c9c8f3a8ff7b770382651c5..04c2068b8cf4a454e73479479090dbf319318cfb 100644
--- a/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod
+++ b/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod
@@ -12,49 +12,24 @@
     <cardViewTemplate>
       <name>card</name>
       <titleField>TITLE</titleField>
-      <subtitleField>ISOLANGUAGE</subtitleField>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <favoriteViewTemplate>
       <name>Favorites</name>
-      <objectType>EXPORTTEMPLATE_OBJECTTYPE</objectType>
+      <objectType>exportTemplateObjectType</objectType>
       <rowId>#UID</rowId>
       <entityField>#ENTITY</entityField>
       <title>favorites</title>
     </favoriteViewTemplate>
-    <genericViewTemplate>
-      <name>generic</name>
-      <showDrawer v="true" />
-      <drawerCaption>Details</drawerCaption>
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>7666c443-e85c-43ce-bfc0-0541c2855f93</name>
-          <entityField>DESCRIPTION</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>50d494c5-268a-4991-a399-36ccd2083b37</name>
-          <entityField>SENTENCESEPARATOR</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>4894f791-3a6a-494c-a765-10cf4341035d</name>
-          <entityField>FIELDSEPARATOR</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>63ba6855-4109-424a-87a7-215921d9d794</name>
-          <entityField>FIELDDELIMITER</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
     <neonViewReference>
-      <name>44ad5c03-ae3d-495f-b0ff-141a64e256e4</name>
-      <entityField>ExportTemplateFields</entityField>
-      <view>ExportTemplateFieldList_view</view>
+      <name>12c0fc60-6634-44d0-b0d8-811fa6f91280</name>
+      <entityField>#ENTITY</entityField>
+      <view>ExportTemplateDetail_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>97e15126-23f9-474d-8dec-8c9175214b92</name>
-      <entityField>ExportTemplateplaceOfUseCon</entityField>
-      <view>ExportTemplatePlaceOfUseList_view</view>
+      <name>9a555ec7-b777-4ace-821a-f849c0d87b73</name>
+      <entityField>ExportTemplateFieldsPreview</entityField>
+      <view>ExportTemplateFieldList_view</view>
     </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod
index 709d825158f14edab0ab418f8b1ed45b4ebcf352..c8a38d3a70239df08c4eb4f5180086a6d50d32fd 100644
--- a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod
+++ b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod
@@ -31,10 +31,18 @@
           <name>35ff004c-98a7-43fe-8739-3e74adb30a1a</name>
           <entityField>EXPORTTEMPLATE_ID</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>0db87299-5c4d-4365-97be-294a8a422da2</name>
+          <entityField>ISOLANGUAGE</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>afcb5cf1-7c78-4649-9178-1635226620ad</name>
           <entityField>FILENAME</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>04231c92-8a5e-4b73-b9e6-b316865f443e</name>
+          <entityField>charset</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
     <actionsViewTemplate>
diff --git a/neonView/InboxEdit_view/InboxEdit_view.aod b/neonView/InboxEdit_view/InboxEdit_view.aod
index 3dce41fc57d0757e7ab1ab86fc12bfb77f7a40db..5623b8664f1f313311b2d9afc3f8dbc1933cfa8d 100644
--- a/neonView/InboxEdit_view/InboxEdit_view.aod
+++ b/neonView/InboxEdit_view/InboxEdit_view.aod
@@ -40,10 +40,6 @@
           <name>c6a43bc9-666b-4395-942b-0e5aeecfed89</name>
           <entityField>REOPENDELAY</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>8dea443c-d327-484f-8a2b-0f1e2765105e</name>
-          <entityField>CLOSURE_DAYS</entityField>
-        </entityFieldLink>
       </fields>
     </genericViewTemplate>
   </children>
diff --git a/neonView/InboxFilter_view/InboxFilter_view.aod b/neonView/InboxFilter_view/InboxFilter_view.aod
index 401566d988a01a8255b1493cc54218c50102e86b..79c992653619e285899aed81ed66f754c4acbe02 100644
--- a/neonView/InboxFilter_view/InboxFilter_view.aod
+++ b/neonView/InboxFilter_view/InboxFilter_view.aod
@@ -34,6 +34,7 @@
     <tableViewTemplate>
       <name>Table</name>
       <entityField>#ENTITY</entityField>
+      <favoriteActionGroup1>deleteActionGroup</favoriteActionGroup1>
       <columns>
         <neonTableColumn>
           <name>bcdbaede-e2df-4351-9df2-fd2cd30cfd8e</name>
@@ -51,10 +52,6 @@
           <name>f1378d7e-9187-4a52-8e73-64fa6d3047ca</name>
           <entityField>REOPENDELAY</entityField>
         </neonTableColumn>
-        <neonTableColumn>
-          <name>2fc3d43b-84a1-43c4-926b-b8c8951d5349</name>
-          <entityField>CLOSURE_DAYS</entityField>
-        </neonTableColumn>
         <neonTableColumn>
           <name>f7369cab-4379-4c23-96f0-2ec944896c5e</name>
           <entityField>STATUS</entityField>
diff --git a/neonView/InboxPreview_view/InboxPreview_view.aod b/neonView/InboxPreview_view/InboxPreview_view.aod
index d52c0e4d31dfbd4424ef1daff54f9dcdfcfb1a67..967049aa83399a3bafef0ebd68d708e86dff84ca 100644
--- a/neonView/InboxPreview_view/InboxPreview_view.aod
+++ b/neonView/InboxPreview_view/InboxPreview_view.aod
@@ -47,10 +47,6 @@
           <name>afabc1a1-df95-441b-9afa-fe49c61a91f6</name>
           <entityField>ReopenDelayPreview</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>2d4bad74-461a-4890-9bd8-f47b9fc1d705</name>
-          <entityField>Closure_daysPreview</entityField>
-        </entityFieldLink>
       </fields>
     </genericViewTemplate>
   </children>
diff --git a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod
index d0b7385720860123a095e52453864b2d0b8fbc13..cb23e65ab0056e6fc01031d5e8b1c9b0292aea42 100644
--- a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod
+++ b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod
@@ -20,22 +20,6 @@
           <name>467ab169-f46a-4036-9e5e-5c480bd947a6</name>
           <entityField>ROLE</entityField>
         </neonGenericMultipleTableColumn>
-        <neonGenericMultipleTableColumn>
-          <name>b85c25c8-09dd-4f9a-b0b4-31c0b8a8f12c</name>
-          <entityField>INVITE</entityField>
-        </neonGenericMultipleTableColumn>
-        <neonGenericMultipleTableColumn>
-          <name>82cdb323-6c1a-428f-a01e-e29da9f338ec</name>
-          <entityField>AZUREID</entityField>
-        </neonGenericMultipleTableColumn>
-        <neonGenericMultipleTableColumn>
-          <name>3f766fe4-119d-40df-b071-b7a578af2a71</name>
-          <entityField>AZUREUPN</entityField>
-        </neonGenericMultipleTableColumn>
-        <neonGenericMultipleTableColumn>
-          <name>0b3ac2a1-91ad-4761-9a1d-7231d5b55169</name>
-          <entityField>ISEXTERN</entityField>
-        </neonGenericMultipleTableColumn>
       </columns>
     </genericMultipleViewTemplate>
   </children>
diff --git a/neonView/PersonEditServiceTicket_View/PersonEditServiceTicket_View.aod b/neonView/PersonEditServiceTicket_View/PersonEditServiceTicket_View.aod
index 0ae9e8fad3bae097887df5d2bb364da3d0bccdef..6a4016ee43e0333bc490dbb74dc4a47bae9722f1 100644
--- a/neonView/PersonEditServiceTicket_View/PersonEditServiceTicket_View.aod
+++ b/neonView/PersonEditServiceTicket_View/PersonEditServiceTicket_View.aod
@@ -92,7 +92,7 @@
     <neonViewReference>
       <name>dff4c15b-27f6-4c54-921a-d7bb8498a08f</name>
       <entityField>Serviceticket</entityField>
-      <view>SupportTicketEditQuickEntry_view</view>
+      <view>SupportTicketMultiEdit_view</view>
     </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/SupportTicketEditQuickEntry_view/SupportTicketEditQuickEntry_view.aod b/neonView/SupportTicketEditQuickEntry_view/SupportTicketEditQuickEntry_view.aod
deleted file mode 100644
index 2d2ee694f0f8f3d9a9d82592102c2ae518c834a6..0000000000000000000000000000000000000000
--- a/neonView/SupportTicketEditQuickEntry_view/SupportTicketEditQuickEntry_view.aod
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
-  <name>SupportTicketEditQuickEntry_view</name>
-  <title>Service ticket</title>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <icon>VAADIN:TICKET</icon>
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-      <autoHeight v="true" />
-    </boxLayout>
-  </layout>
-  <children>
-    <genericViewTemplate>
-      <name>SupportTicketGeneric</name>
-      <editMode v="true" />
-      <showDrawer v="true" />
-      <drawerCaption>Service ticket</drawerCaption>
-      <fixedDrawer v="true" />
-      <hideEmptyFields v="false" />
-      <fields>
-        <entityFieldLink>
-          <name>50583440-b40f-4d6e-a775-5541c94be5d5</name>
-          <entityField>ALTERNATIVE_EMAILADDR</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>d51b05bd-5f2e-4959-b9f3-5d9706585a51</name>
-          <entityField>ALTERNATIVE_PHONEADDR</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>d10b9c94-d222-417c-91a5-3f3e50dfe80e</name>
-          <entityField>SupportTicket_template</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>33027237-1177-4f8b-abe6-ea3d9d036077</name>
-          <entityField>INBOX_ID</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>ebce5913-6628-4a08-afb0-caea5d7c274f</name>
-          <entityField>TICKETCATEGORY</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>19d6d30f-4d11-490a-94f6-b930b3b0d6e9</name>
-          <entityField>TASK_SUBJECT</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>1a7438bf-7690-470b-a69b-ca119ac64b59</name>
-          <entityField>TASK_DESCRIPTION</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>db509854-3041-4d77-9ec2-651842d1a9f1</name>
-          <entityField>TASK_MATURITY_DATE</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>3784edd5-03b8-47aa-a31f-ee95ef55d033</name>
-          <entityField>TASK_STATUS</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>c52866d5-f6e6-42b9-9cdd-4eeb970fab18</name>
-          <entityField>TICKET_EDITOR_CONTACT_ID</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>15311428-d390-436c-8c44-92102ffa0431</name>
-          <entityField>TASK_PRIORITY</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>9debbeab-8a99-46fe-a736-b7074acc9e3a</name>
-          <entityField>MEDIUM</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
-  </children>
-</neonView>
diff --git a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod
index ce7e05c377004a8736ec1c6a45f2257fba71fb81..ab371d63c5e2f39a307788f0eb9904435a1bce72 100644
--- a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod
+++ b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod
@@ -55,6 +55,7 @@
       <descriptionField>TASK_REQUESTOR_CONTACT_ID</descriptionField>
       <entityField>#ENTITY</entityField>
       <favoriteActionGroup1>FilterActionsGroup</favoriteActionGroup1>
+      <favoriteActionGroup2>observeActionGroup</favoriteActionGroup2>
       <linkedColumns>
         <element>TASK_SUBJECT</element>
       </linkedColumns>
@@ -125,12 +126,14 @@
       <additionalInfoField>CODE</additionalInfoField>
       <orderByDate v="true" />
       <entityField>#ENTITY</entityField>
-      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
+      <favoriteActionGroup1>FilterActionsGroup</favoriteActionGroup1>
+      <favoriteActionGroup2>observeActionGroup</favoriteActionGroup2>
     </timelineViewTemplate>
     <treeTableViewTemplate>
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
-      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
+      <favoriteActionGroup1>FilterActionsGroup</favoriteActionGroup1>
+      <favoriteActionGroup2>observeActionGroup</favoriteActionGroup2>
       <linkedColumns>
         <element>TASK_SUBJECT</element>
       </linkedColumns>
diff --git a/neonView/SupportTicketMultiSelectEdit_view/SupportTicketMultiSelectEdit_view.aod b/neonView/SupportTicketMultiSelectEdit_view/SupportTicketMultiSelectEdit_view.aod
index adc58ed6e5d95ad62cb45fc90842441aff4a356d..e9a9765dfaf1def090765e65fba9c87c4d088f27 100644
--- a/neonView/SupportTicketMultiSelectEdit_view/SupportTicketMultiSelectEdit_view.aod
+++ b/neonView/SupportTicketMultiSelectEdit_view/SupportTicketMultiSelectEdit_view.aod
@@ -18,6 +18,10 @@
           <name>361b2337-0c41-4b0b-b156-c1f7ffeaaa79</name>
           <entityField>STATUS</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>d2e6adfd-6c7d-4fdd-9fba-14574d6a6934</name>
+          <entityField>CONCLUSION</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>df94341d-8c4d-4de6-9681-cc5983eacf35</name>
           <entityField>CATEGORY</entityField>
diff --git a/neonView/SupportTicketTemplateEdit_view/SupportTicketTemplateEdit_view.aod b/neonView/SupportTicketTemplateEdit_view/SupportTicketTemplateEdit_view.aod
index cbf558764db0f8eb25689038bbb8af5b570027a6..56392a16b7bac3a4729d7d9d3be050411858aaf1 100644
--- a/neonView/SupportTicketTemplateEdit_view/SupportTicketTemplateEdit_view.aod
+++ b/neonView/SupportTicketTemplateEdit_view/SupportTicketTemplateEdit_view.aod
@@ -21,7 +21,7 @@
           <entityField>NAME</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>e6f7252c-371d-46df-87eb-2254ea6aa6aa</name>
+          <name>9cffec22-cf83-4e72-9602-b5bce02def48</name>
           <entityField>TEMPLATENO</entityField>
         </entityFieldLink>
         <entityFieldLink>
diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
index 63b1cb3ea967792f7d5d066a26efd6c88f0ac9ba..f6f3c7abce65917d179d87caeca557a7d7c52bba 100644
--- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
+++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
@@ -47,26 +47,14 @@
   <userdirectoryAlias>_____SYSTEMALIAS</userdirectoryAlias>
   <mailBridgeMailserver>
     <mailbridgeMailserver>
-      <name>a9af9881-a6e8-4aed-a895-ef4b87e37055</name>
+      <name>abfa63d1-a47e-41f6-a87d-138bf04adc1e</name>
       <enabled v="true" />
-      <bridgeName>mailServerIMAP-null-a9af9881</bridgeName>
+      <bridgeName>Dev-Exchange</bridgeName>
       <serverName>mailServerIMAP</serverName>
-      <user>mailbridgeDev</user>
-      <intervall v="30000" />
-      <bridgeMode v="1" />
-      <flagMode v="2" />
-      <process>mailbridge</process>
-      <errorProcess></errorProcess>
-      <attachmentHandling>ALL</attachmentHandling>
-    </mailbridgeMailserver>
-    <mailbridgeMailserver>
-      <name>37b3d4f3-ef30-4b7a-9980-7f79711b62ce</name>
-      <enabled v="true" />
-      <bridgeName>mailServerIMAP-null-37b3d4f3</bridgeName>
-      <serverName>mailServerIMAP</serverName>
-      <user>mailbridgeQS</user>
-      <intervall v="30000" />
-      <bridgeMode v="1" />
+      <timeout v="20000" />
+      <user>mailbridge</user>
+      <intervall v="5000" />
+      <bridgeMode v="3" />
       <flagMode v="2" />
       <process>mailbridge</process>
       <errorProcess></errorProcess>
diff --git a/process/ActiveDirectory_lib/process.js b/process/ActiveDirectory_lib/process.js
index 0e476c6360bba056a7cff2c5039b7258a32ced10..47fea5741765c9eafc32db87f63cf4043181c109 100644
--- a/process/ActiveDirectory_lib/process.js
+++ b/process/ActiveDirectory_lib/process.js
@@ -439,9 +439,9 @@ ActiveDirectoryUtils._createInsertUpdateCommMixStatements = function (pDataSet,
             }
                 
             //UPDATE
-            cond = newWhere("OBJECT_ROWID", pContactId)
+            cond = newWhere("COMMUNICATION.OBJECT_ROWID", pContactId)
             .and("COMMUNICATION.OBJECT_TYPE", "Contact")
-            .and(MEDIUM_ID, commMedium).toString();
+            .and("COMMUNICATION.MEDIUM_ID", commMedium).toString();
                 
             //INSERT COMM, wenn initial nicht vorliegt.
             var isCommExists = false;
@@ -467,8 +467,8 @@ ActiveDirectoryUtils._createInsertUpdateCommMixStatements = function (pDataSet,
                 ActiveDirectoryUtils._setDataObject(pDataSet, "COMMUNICATION.MEDIUM_ID", commMedium);
                 ActiveDirectoryUtils._setDataObject(pDataSet, "COMMUNICATION.ADDR", pDataSet[commType].VALUE);
                 ActiveDirectoryUtils._setDataObject(pDataSet, "COMMUNICATION.ISSTANDARD", '1');
-                ActiveDirectoryUtils._setDataObject(temporaryNewDataSet, "COMMUNICATION.OBJECT_ROWID", pDataSet["CONTACT.CONTACTID"].VALUE);
-                ActiveDirectoryUtils._setDataObject(temporaryNewDataSet, "COMMUNICATION.OBJECT_TYPE", "Contact");
+                ActiveDirectoryUtils._setDataObject(pDataSet, "COMMUNICATION.OBJECT_ROWID", pContactId);
+                ActiveDirectoryUtils._setDataObject(pDataSet, "COMMUNICATION.OBJECT_TYPE", "Contact");
                     
                 let tmpInsUpdC = ActiveDirectoryUtils._createInsertUpdateMixArray.call(this, pDataSet, "COMMUNICATION");
                     
@@ -479,8 +479,8 @@ ActiveDirectoryUtils._createInsertUpdateCommMixStatements = function (pDataSet,
                 ActiveDirectoryUtils._setDataObject(pDataSet, "COMMUNICATION.MEDIUM_ID", commMedium);
                 ActiveDirectoryUtils._setDataObject(pDataSet, "COMMUNICATION.ADDR", pDataSet[commType].VALUE);
                 ActiveDirectoryUtils._setDataObject(pDataSet, "COMMUNICATION.ISSTANDARD", '1');
-                ActiveDirectoryUtils._setDataObject(temporaryNewDataSet, "COMMUNICATION.OBJECT_ROWID", pDataSet["CONTACT.CONTACTID"].VALUE);
-                ActiveDirectoryUtils._setDataObject(temporaryNewDataSet, "COMMUNICATION.OBJECT_TYPE", "Contact");
+                ActiveDirectoryUtils._setDataObject(pDataSet, "COMMUNICATION.OBJECT_ROWID", pContactId);
+                ActiveDirectoryUtils._setDataObject(pDataSet, "COMMUNICATION.OBJECT_TYPE", "Contact");
                 let tmpInsUpdC = ActiveDirectoryUtils._createInsertUpdateMixArray.call(this, pDataSet, "COMMUNICATION", cond);
                     
                 if (tmpInsUpdC != null) sqlMixDataSet.push(tmpInsUpdC);
diff --git a/process/AttributeRegistry_basic/process.js b/process/AttributeRegistry_basic/process.js
index 030f4c7baaf7e322a0cfd21f278075aa736f6fd0..783d995032790ef2c8e196898ad03df977b1294b 100644
--- a/process/AttributeRegistry_basic/process.js
+++ b/process/AttributeRegistry_basic/process.js
@@ -28,4 +28,5 @@ $AttributeRegistry.visitPlanFrequency$quarterly = function(){return "22722783-aa
 $AttributeRegistry.visitPlanFrequency$yearly = function(){return "a9575350-c1e7-4f96-b0ed-a8f52cc8b123";};
 $AttributeRegistry.visitPlanPointOfContact = function(){return "7d78320a-31c6-4c24-992a-a583f47caeb5";};
 
-$AttributeRegistry.digitalAdvertisingMaterial = function(){return "5a596342-679a-4c55-b368-fad0bd817aa0";};
\ No newline at end of file
+$AttributeRegistry.digitalAdvertisingMaterial = function(){return "5a596342-679a-4c55-b368-fad0bd817aa0";};
+$AttributeRegistry.mstTeam = function(){return "9a93f671-fa9e-4783-8ae8-6cef76b3f62f";};
diff --git a/process/Bulkmail_lib/process.js b/process/Bulkmail_lib/process.js
index 01a0f46955c0e4a6d595f618bc57d77e84c92949..362e2b1707d3cc0163474fb9684551b826e51492 100644
--- a/process/Bulkmail_lib/process.js
+++ b/process/Bulkmail_lib/process.js
@@ -277,30 +277,47 @@ BulkMailUtils.sendBulkMail = function (pBulkMailId, pIsTestRun, pUser)
                 ActivityUtils.insertNewActivity(activityData, bulkMailLink.concat(contactLink));
             }
         });
-
-        newWhereIfSet("BULKMAILRECIPIENT.BULKMAILRECIPIENTID", successIds, SqlBuilder.IN())
-            .updateFields({
-                "STATUS": $KeywordRegistry.bulkMailRecipientStatus$sent(),
-                "SENTDATE": sentDate
-            });
-
-        newWhereIfSet("BULKMAILRECIPIENT.BULKMAILRECIPIENTID", failedIds, SqlBuilder.IN())
-            .updateFields({
-                "STATUS": $KeywordRegistry.bulkMailRecipientStatus$failed(),
-                "SENTDATE": sentDate
-            });
-
-        newWhereIfSet("BULKMAILRECIPIENT.BULKMAILRECIPIENTID", bouncedSoftIds, SqlBuilder.IN())
-            .updateFields({
-                "STATUS": $KeywordRegistry.bulkMailRecipientStatus$softBounce(),
-                "SENTDATE": sentDate
-            });
         
-        newWhereIfSet("BULKMAILRECIPIENT.BULKMAILRECIPIENTID", bouncedHardIds, SqlBuilder.IN())
-            .updateFields({
-                "STATUS": $KeywordRegistry.bulkMailRecipientStatus$hardBounce(),
-                "SENTDATE": sentDate
-            });
+        var updates = [];
+             
+        updates = updates.concat(successIds.map(function (sucessId)
+        {
+            return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",successId)
+                    .buildUpdateStatement({
+                        "STATUS": $KeywordRegistry.bulkMailRecipientStatus$sent(),
+                        "SENTDATE": sentDate
+                    });
+        }));
+        
+        updates = updates.concat(failedIds.map(function (failedId)
+        {
+            return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",failedId)
+                    .buildUpdateStatement({
+                        "STATUS": $KeywordRegistry.bulkMailRecipientStatus$failed(),
+                        "SENTDATE": sentDate
+                    });
+        }));
+        
+        updates = updates.concat(bouncedSoftIds.map(function (bouncedSoftId)
+        {
+            return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",bouncedSoftId)
+                    .buildUpdateStatement({
+                        "STATUS": $KeywordRegistry.bulkMailRecipientStatus$softBounce(),
+                        "SENTDATE": sentDate
+                    });
+        }));
+        
+        updates = updates.concat(bouncedHardIds.map(function (bouncedHardId)
+        {
+            return  newWhere("BULKMAILRECIPIENT.BULKMAILRECIPIENTID",bouncedHardId)
+                    .buildUpdateStatement({
+                        "STATUS": $KeywordRegistry.bulkMailRecipientStatus$hardBounce(),
+                        "SENTDATE": sentDate
+                    });
+        }));
+
+        db.updates(updates);
+            
             
         newWhere("MAIL_RUN.MAIL_RUNID", mailrunId)
             .updateFields({
diff --git a/process/ChecklistEntryRegistry_basic/process.js b/process/ChecklistEntryRegistry_basic/process.js
index 14505ec30942126b83ff8b217a53971025fcddf9..fafe61a440ea30f7369d32db0a15094d9542d070 100644
--- a/process/ChecklistEntryRegistry_basic/process.js
+++ b/process/ChecklistEntryRegistry_basic/process.js
@@ -1,3 +1,6 @@
+import("system.db");
+import("system.vars");
+import("ClassificationUpdate_lib");
 import("Context_lib");
 import("Communication_lib");
 import("Contact_lib");
@@ -208,17 +211,13 @@ $ChecklistEntryRegistry.salesprojectClassificationFields = function(){
         context: ["Salesproject"],
         title: translate.text("Classification fields"),
         verifierFn: function(pSalesprojectId){
-            var res = false;
-            var classificationRows = $ChecklistEntryRegistry._getRows(null, "Classification_entity", ["VALUE"], [["ObjectType_param", "Salesproject"], ["ObjectRowid_param", pSalesprojectId]], "Classifications");
-            if(classificationRows.length > 0)
+            var res = true;
+            if(Utils.isNotNullOrEmptyString(pSalesprojectId) && (!vars.exists("IgnoreOrderBy_param") || (vars.exists("IgnoreOrderBy_param") && !vars.get("IgnoreOrderBy_param"))))
             {
-                res = true
-                for (let i = 0; i < classificationRows.length; i++) {
-                    if(classificationRows[i] == "" || classificationRows[i] == null || classificationRows[i] == undefined)
-                    {
-                        res = false;
-                        break;
-                    }
+                var classificationData = ClassificationUtils.executeUpdating(pSalesprojectId, "Salesproject");
+                if(classificationData && classificationData["emtpyFields"] && classificationData["emtpyFields"].length != 0)
+                {
+                    res = false;
                 }
             }
             return res;
@@ -614,7 +613,8 @@ $ChecklistEntryRegistry.organisationDefaultPhone = function(){
         context: ["Organisation"],
         title: translate.text("Default phone"),
         verifierFn: function(pContactId){
-            var phoneNumber = CommUtil.getStandardPhone(pContactId);
+            var phoneNumber = CommUtil.getStandardSubSqlPhone(pContactId, "CONTACT");
+            phoneNumber =  db.cell(phoneNumber);
             if(phoneNumber) 
             {
                 return true;
diff --git a/process/ClassificationUpdate_lib/process.js b/process/ClassificationUpdate_lib/process.js
index e9636d4bd9950f968dd9b007e64d2ca012a33eaf..73c181e1f7a1401cead2f88a95e8671503e98766 100644
--- a/process/ClassificationUpdate_lib/process.js
+++ b/process/ClassificationUpdate_lib/process.js
@@ -204,7 +204,8 @@ ClassificationUpdateHelper._searchIndicatorObj = function(pClassificationTypeId,
 *                                                         objectRowId we want to show the classifications for<br>
 *                                                          
 *                                                          
-* @return {String}                                        <p> stringified contentProcessArray<br>
+*                                                          
+* @return {Object}                                        <p> {"emtpyFields":  stringifiedContentProcessArray, "emtpyFields"  ArrayWithAllFieldsWithoutValue<br>
 */
 ClassificationUpdateHelper._formatOutputForDisplayingValues = function(pReturn, pUid)
 {
@@ -272,8 +273,13 @@ ClassificationUpdateHelper._formatOutputForDisplayingValues = function(pReturn,
     
     var groupDisplayObj = {};//helperObj to store the group display value
     var position = 0;
+    var emptyFields = [];
     for (let i = 0; i < contentProcessArray.length; i++)
     {
+        if(contentProcessArray[i][5] == "-")//value is empty
+        {
+            emptyFields.push(contentProcessArray[i][4])//push fieldname
+        }
         if (contentProcessArray[i][2] && contentProcessArray[i][2] != "")//group
         {
             groupDisplayObj[contentProcessArray[i][1]] = ClassificationUtils.formatDisplaySummaryForGroup(groupResultObj[contentProcessArray[i][1]]["points"], groupResultObj[contentProcessArray[i][1]]["maxPoints"], contentProcessArray[i][2], classificationString.substring(position, position + 1))
@@ -287,7 +293,8 @@ ClassificationUpdateHelper._formatOutputForDisplayingValues = function(pReturn,
         }
     }
 
-    return JSON.stringify(contentProcessArray);
+    return {"outputValue": JSON.stringify(contentProcessArray)
+                ,"emtpyFields": emptyFields};
 };
 
 /**
@@ -1033,6 +1040,11 @@ ClassificationUpdateHelper._buildFilteredRecsObject = function(pClassificationTy
                             .fields(pFilterFields)
                             .addParameter("IgnoreOrderBy_param", true);
                             
+                            if(currentObjectType == "Salesproject")
+                            {
+                                config.provider("NoPhaseRequirementLoading");
+                            }
+                            
                             var rows = [];
                             if(pSingleRefreshRowId)
                             {
@@ -1855,6 +1867,12 @@ ClassificationUpdateHelper._updateOutdatedDatasets = function(pClassificationObj
                                                     .ignorePermissions(true)
                                                     .entity(ContextUtils.getEntity(objectTypes[currentObjectType]))
                                                     .addParameter("IgnoreOrderBy_param", true);
+            
+            if(objectTypes[currentObjectType] == "Salesproject")
+            {
+                objectValuesLoadConfig.provider("NoPhaseRequirementLoading");
+            }
+            
             if (objectRowIdArray && !pSingleRefreshRowId)//objectRowIdArray is already paged
             {
                 objectValuesLoadConfig = objectValuesLoadConfig.uids(objectRowIdArray);
diff --git a/process/Communication_lib/process.js b/process/Communication_lib/process.js
index d20360d67262c6e3889eb0d12b8d53badad42600..8a99351a66231aafc8321312180c8c9cf4372af9 100644
--- a/process/Communication_lib/process.js
+++ b/process/Communication_lib/process.js
@@ -313,20 +313,6 @@ CommUtil.getMediumAddrSubSqlByKey = function(pMediumKey, pContactField, pObjectT
     return selectAddr.toString();    
 }
 
-/**
- * Returns the standard number of a PHONE-COMMUNICATION.<br>
- * 
- * @param {String} pContactId                       <p>
- *                                                  The contact id.<br>
- * @return {String}                                 <p>
- *                                                  Phone number. If there is no phone number, an empty string is returned.<br>
- */
-CommUtil.getStandardPhone = function (pContactId)
-{
-    var query = CommUtil.getStandardSubSqlPhone(newWhere("COMMUNICATION.CONTACT_ID", pContactId));
-    return db.cell(query);
-}
-
 /**
  * Provides static methods for validation of communication data.<br>
  * <b>Do not create an instance of this!</b>
diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js
index 224b5a77583e0cbc17257477e700a4e99b48ed89..e7d67c7ed86b1e65d179e54ba6dc82ea7a7d741b 100644
--- a/process/Context_lib/process.js
+++ b/process/Context_lib/process.js
@@ -1,3 +1,4 @@
+import("JditoFilter_lib");
 import("system.logging");
 import("Util_lib");
 import("system.entities");
@@ -185,11 +186,11 @@ ContextUtils.getContextConsumer = function(pContextId)
  * @param {String} pEntity The entity name you want to load the title for
  * @param {String} pUid the uid for which to load the title
  * @param {String} [pProvider] providername when instead of the default provider another provider shall be used
- * @param {String} [pParameter] parameter you want to set (to avoid loading specific things when getting the contentTitle)
- * 
+ * @param {String} [pParams] parameter object
+
  * @return the #CONTENTTITLE or ""
  */
-ContextUtils.loadContentTitle = function(pEntity, pUid, pProvider, pParameter)
+ContextUtils.loadContentTitle = function(pEntity, pUid, pProvider, pParams)
 {    
     if (!pUid)
         return "";
@@ -203,9 +204,12 @@ ContextUtils.loadContentTitle = function(pEntity, pUid, pProvider, pParameter)
     {
         conf.provider(pProvider);
     }
-    if (pParameter && pEntity == "Salesproject_entity")
+    if(pParams)
     {
-        conf.addParameter(pParameter, true);
+        for(var p in pParams)
+        {
+            conf.addParameter(p, pParams[p]);
+        }
     }
     
     var rows = entities.getRows(conf);
@@ -376,13 +380,14 @@ ContextUtils._contextDataMapping = function(pContext)
  * 
  * @param {String} pContextId the name of the context
  * @param {String} pRowId Uid of certain Context
- * @param {String} [pParameter] parameter you want to set (to avoid loading specific things when getting the contentTitle)
+ * @param {String} pProvider providername when instead of the default provider another provider shall be used
+ * @param {String} pParams parameter object
  * 
  * @return {String} The #CONTENTTITLE
  */
-ContextUtils.getTitleByContext = function(pContextId, pRowId, pParameter)
+ContextUtils.getTitleByContext = function(pContextId, pRowId, pProvider, pParams)
 {
-    return ContextUtils.loadContentTitle(ContextUtils.getEntity(pContextId), pRowId, null, pParameter);
+    return ContextUtils.loadContentTitle(ContextUtils.getEntity(pContextId), pRowId, pProvider, pParams);
 }
 
 
diff --git a/process/Dependency_lib/process.js b/process/Dependency_lib/process.js
index 0a46b676d5fd6268abaac897730ab76ce7e6b48d..efe81c43ef8249475a569c9732b3fe96a3149a33 100644
--- a/process/Dependency_lib/process.js
+++ b/process/Dependency_lib/process.js
@@ -1,3 +1,4 @@
+import("Util_lib");
 import("Sql_lib");
 import("system.favorite");
 
@@ -16,10 +17,17 @@ Dependency.defaultFunctionForField = function (pTableField)
     return function (pNewData, pOldData) 
     {
         let res = [];
-        if (pNewData[pTableField])
+        if (!Utils.isNullOrEmpty(pNewData) 
+            && Utils.isNotNullOrEmptyString(pNewData[pTableField]))
+            {
             res.push(pNewData[pTableField])
-        if (pOldData[pTableField] && pOldData[pTableField] != pNewData[pTableField])
+        }
+        if (!Utils.isNullOrEmpty(pOldData) 
+            && Utils.isNotNullOrEmptyString(pOldData[pTableField]) 
+            && pOldData[pTableField] != pNewData[pTableField])
+            {
             res.push(pOldData[pTableField])
+        }
         return res;
     };
 }
@@ -55,7 +63,10 @@ Dependency.defaultFunctionForFields = function (pTableFields)
  * @param {String} [pDataTable] The Tablename of the UID Field of the Entity. Is only need for the DB-Recordcontainer.
  * @param {String} [pSourceField] The Field which one contains the UID of the dependent entity in the relation rable.
  *                                  
- * @example "Person_entity": { "Activity_entity" : { "options" : { "isObservable" : true }, "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CONTACTID", "Person", "CONTACT", "ACTIVITY_ID")}}
+ * @example "Person_entity": 
+{ "Activity_entity" : 
+{ "options" : 
+{ "isObservable" : true }, "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CONTACTID", "Person", "CONTACT", "ACTIVITY_ID")}}
  * 
  * @return {function}  function (pNewData, pOldData) {...} 
  */
@@ -73,6 +84,8 @@ Dependency.defaultFunctionForRelation = function (pRelationTable, pRelationField
             relationFieldValue = pNewData[pDataTable + "." + pDataField];
         }
         
+        relationFieldValue = relationFieldValue || pNewData[pDataField];
+        
         return newSelect(pRelationTable + "." + (pSourceField || "OBJECT_ROWID"))
         .from(pRelationTable)
         .groupBy(pRelationTable + "." + (pSourceField || "OBJECT_ROWID"))
@@ -123,117 +136,214 @@ Dependency.defaultFunctionForFavorites = function (pTableField, pContext)
  * <br>
  * The mapping is structured as follows: <br>
  *  
- * @example { "Entity_entity" : { "Dependency_entity": { "options" : { "option" : true}, "getUIDsfn" : function (pNewData, pOldData) {return //the IDs of the EntityField } } } }
+ * @example { "Entity_entity" : 
+{ "Dependency_entity": 
+{ "options" : 
+{ "option" : true}, "getUIDsfn" : function (pNewData, pOldData) {return //the IDs of the EntityField } } } }
  * 
  * @return {Object}
  */
 Dependency.mapping = function ()
 {
     return {
-        "Person_entity": {
-            "Activity_entity" : {
-                "options" : {
+        "BulkMail_entity" :
+        {
+            "BulkMailRecipient_entity" : 
+                {
+                "options" : 
+                {
+                    "isExportable" : true,
+                    "isObservable" : false
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("BULKMAILRECIPIENT", "BULKMAIL_ID", "BULKMAILID", null, "BULKMAIL", "BULKMAILRECIPIENTID"), 
+                "fieldsToLoad" : ["BULKMAILID"]
+            }
+        },
+        "BulkMailRecipient_entity" : 
+        {
+            "Person_entity" : 
+            {
+                "options" : 
+                {
+                    "isExportable" : true,
+                    "isObservable" : false
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("CONTACT_ID"),
+                "fieldsToLoad" : ["CONTACT_ID"]
+            }
+        },
+        "Person_entity": 
+        {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true,
                     "isOwnNotified" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CONTACTID", "Person", "CONTACT", "ACTIVITY_ID")
             },
-            "Task_entity" : {
-                "options" : {
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "CONTACTID", "Person", "CONTACT", "TASK_ID")
             },
-            "Favorite_entity" : {
-                "options" : {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("CONTACT.CONTACTID", "Person")
+            },
+            "Address_entity" : 
+            {
+                "options" : 
+                {
+                    "isExportable" : true,
+                    "isObservable" : false
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ADDRESS", "CONTACT_ID", "CONTACTID", null, "CONTACT", "ADDRESSID"), 
+                "fieldsToLoad" : ["CONTACTID"]
             }
         },
-        "PrivatePerson_entity": {
-            "Activity_entity" : {
-                "options" : {
+        "PrivatePerson_entity": 
+        {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "PERSONID", "PrivatePerson", "PERSON", "ACTIVITY_ID")
             },
-            "Task_entity" : {
-                "options" : {
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "PERSONID", "PrivatePerson", "PERSON", "TASK_ID")
             }
         },
-        "Organisation_entity": {
-            "Activity_entity" : {
-                "options" : {
+        "Organisation_entity": 
+        {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CONTACTID", "Organisation", "CONTACT", "ACTIVITY_ID")
             },
-            "Task_entity" : {
-                "options" : {
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "CONTACTID", "Organisation", "CONTACT", "TASK_ID")
             },
-            "Favorite_entity" : {
-                "options" : {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("CONTACT.CONTACTID", "Organisation")
+            }, 
+            "Address_entity" : 
+            {
+                "options" : 
+                {
+                    "isExportable" : true,
+                    "isObservable" : false
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("ADDRESS", "CONTACT_ID", "CONTACTID", null, "CONTACT", "ADDRESSID"), 
+                "fieldsToLoad" : ["CONTACTID"]
+            },
+            "Offer_entity" : 
+            {
+                "options" : 
+                {
+                    "isExportable" : true,
+                    "isObservable" : false
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("OFFER", "CONTACT_ID", "CONTACTID", null, "CONTACT", "OFFERID"), 
+                "fieldsToLoad" : ["CONTACTID"]
             }
         },
-        "Salesproject_entity": {
-            "Activity_entity" : {
-                "options" : {
+        "Salesproject_entity": 
+        {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "SALESPROJECTID", "Salesproject", "SALESPROJECT", "ACTIVITY_ID")
             },
-            "Task_entity" : {
-                "options" : {
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "SALESPROJECTID", "Salesproject", "SALESPROJECT", "TASK_ID")
             },
-            "Favorite_entity" : {
-                "options" : {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("SALESPROJECT.SALESPROJECTID", "Salesproject")
             }
         },
-        "KnowledgeManagement_entity": {
-            "Favorite_entity" : {
-                "options" : {
+        "KnowledgeManagement_entity": 
+        {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", "KnowledgeManagement")
             }
         },
-        "ExportTemplate_entity": {
-            "Favorite_entity" : {
-                "options" : {
+        "ExportTemplate_entity": 
+        {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("EXPORTTEMPLATE.EXPORTTEMPLATEID", "ExportTemplate")
             }
         },
         
-        "Order_entity": {
-            "Activity_entity" : {
-                "options" : {
+        "Order_entity": 
+        {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "SALESORDERID", "Order", "SALESORDER", "ACTIVITY_ID")
             },
-            "Organisation_entity" : {
-                "options" : {
+            "Organisation_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
-                "getUIDsfn" : function (pRowData, pChangedData) {
+                "getUIDsfn" : function (pRowData, pChangedData) 
+                {
                     var tableField = "SALESORDER.CONTACT_ID";
                     var res = [];
                     if (pRowData[tableField])
@@ -243,481 +353,692 @@ Dependency.mapping = function ()
                     return res;
                 }
             },
-            "Task_entity" : {
-                "options" : {
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "SALESORDERID", "Order", "SALESORDER", "TASK_ID")
             },
-            "Favorite_entity" : {
-                "options" : {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("SALESORDER.SALESORDERID", "Order")
             }
         },
-        "Contract_entity": {
-            "Activity_entity" : {
-                "options" : {
+        "Contract_entity": 
+        {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CONTRACTID", "Contract", "CONTRACT", "ACTIVITY_ID")
             },
-            "Task_entity" : {
-                "options" : {
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "CONTRACTID", "Contract", "CONTRACT", "TASK_ID")
             },
-            "Favorite_entity" : {
-                "options" : {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("CONTRACT.CONTRACTID", "Contract")
             }
         },
-        "Product_entity": {
-            "Activity_entity" : {
-                "options" : {
+        "Product_entity": 
+        {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "PRODUCTID", "Product", "PRODUCT", "ACTIVITY_ID")
             },
-            "Task_entity" : {
-                "options" : {
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "PRODUCTID", "Product", "PRODUCT", "TASK_ID")
             },
-            "Favorite_entity" : {
-                "options" : {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("PRODUCT.PRODUCTID", "Product")
             }
         },
-        "Campaign_entity": {
-            "Activity_entity" : {
-                "options" : {
+        "Campaign_entity": 
+        {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CAMPAIGNID", "Campaign", "CAMPAIGN", "ACTIVITY_ID")
             },
-            "Task_entity" : {
-                "options" : {
+            "CampaignStep_entity" : 
+            {
+                "options" : 
+                {
+                    "isExportable" : true,
+                    "isObservable" : false
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("CAMPAIGNSTEP", "CAMPAIGN_ID", "CAMPAIGNID", null, "CAMPAIGN", "CAMPAIGNSTEPID"), 
+                "fieldsToLoad" : ["CAMPAIGNID"]
+            },
+            "CampaignParticipant_entity" : 
+            {
+                "options" : 
+                {
+                    "isExportable" : true,
+                    "isObservable" : false
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("CAMPAIGNPARTICIPANT", "CAMPAIGN_ID", "CAMPAIGNID", null, "CAMPAIGN", "CAMPAIGNPARTICIPANTID"), 
+                "fieldsToLoad" : ["CAMPAIGNID"]
+            },
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "CAMPAIGNID", "Campaign", "CAMPAIGN", "TASK_ID")
             },
-            "Favorite_entity" : {
-                "options" : {
+            "Favorite_entity" : 
+            {
+                "options" :
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("CAMPAIGN.CAMPAIGNID", "Campaign")
             }
         },
-        "SupportTicket_entity" : {
-            "Activity_entity" : {
-                "options" : {
+        "SupportTicket_entity" : 
+        {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "TICKETID", "SupportTicket", "TICKET", "ACTIVITY_ID")
             },
-            "Task_entity" : {
-                "options" : {
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "TICKETID", "SupportTicket", "TICKET", "TASK_ID")
             },
-            "Favorite_entity" : {
-                "options" : {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("TASK.TASKID", "SupportTicket")
             }
         },
-        "Activity_entity" : {
-            "Person_entity" : {
-                "options" : {
+        "CampaignParticipant_entity" : 
+        {
+            "Person_entity" : 
+            {
+                "options" : 
+                {
+                    "isExportable" : true,
+                    "isObservable" : false
+                },
+                "getUIDsfn" : Dependency.defaultFunctionForField("PERSON_CONTACT_ID"),
+                "fieldsToLoad" : ["PERSON_CONTACT_ID"]
+            }
+        },
+        "Activity_entity" : 
+        {
+            "Person_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true,
                     "isOwnNotified" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Person", "ACTIVITY")
             },
-            "Organisation_entity" : {
-                "options" : {
+            "Organisation_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Organisation", "ACTIVITY")
             },
-            "Salesproject_entity" : {
-                "options" : {
+            "Salesproject_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Salesproject", "ACTIVITY")
             },
-            "Offer_entity" : {
-                "options" : {
+            "Offer_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Offer", "ACTIVITY")
             },
-            "Order_entity" : {
-                "options" : {
+            "Order_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Order", "ACTIVITY")
             },
-            "Contract_entity" : {
-                "options" : {
+            "Contract_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Contract", "ACTIVITY")
             },
-            "Product_entity" : {
-                "options" : {
+            "Product_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Product", "ACTIVITY")
             },
-            "Campaign_entity" : {
-                "options" : {
+            "Campaign_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "ACTIVITY_ID", "ACTIVITYID", "Campaign", "ACTIVITY")
             }
         },
-        "Address_entity": {
-            "Organisation_entity" : {
-                "options" : {
+        "Address_entity": 
+        {
+            "Organisation_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("ADDRESS.CONTACT_ID")
             },
-            "Person_entity" : {
-                "options" : {
+            "Person_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("ADDRESS.CONTACT_ID")
             }
         },
-        "AttributeRelation_entity" : {
-            "Person_entity" : {
-                "options" : {
+        "AttributeRelation_entity" : 
+        {
+            "Person_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Person")
             },
-            "Organisation_entity" : {
-                "options" : {
+            "Organisation_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Organisation")
             },
-            "Activity_entity" : {
-                "options" : {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Activity")
             },
-            "Salesproject_entity" : { 
-                "options" : {
+            "Salesproject_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Salesproject")
             },
-            "Product_entity" : { 
-                "options" : {
+            "Product_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Product")
             },
-            "Employee_entity" : { 
-                "options" : {
+            "Employee_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "Employee")
             },
-            "SupportTicket_entity" : { 
-                "options" : {
+            "SupportTicket_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("AB_ATTRIBUTERELATION", "AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTERELATIONID", "SupportTicket")
             }
         },
-        "Communication_entity": {
-            "Person_entity" : {
-                "options" : {
+        "Communication_entity": 
+        {
+            "Person_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("COMMUNICATION.OBJECT_ROWID")
             },
-            "Organisation_entity" : {
-                "options" : {
+            "Organisation_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("COMMUNICATION.OBJECT_ROWID")
             }
         },
-        "CommRestriction_Entity" : {
-            "Person_entity" : {
-                "options" : {
+        "CommRestriction_Entity" : 
+        {
+            "Person_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("COMMRESTRICTION.CONTACT_ID")
             },
-            "Organisation_entity" : {
-                "options" : {
+            "Organisation_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("COMMRESTRICTION.CONTACT_ID")
             }
         },
-        "Contact_entity" : {
-            "Person_entity" : {
-                "options" : {
+        "Contact_entity" : 
+        {
+            "Person_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("CONTACT.CONTACTID")
             }
         },
-        "Document_entity" : {
-            "Person_entity" : {
-                "options" : {
+        "Document_entity" : 
+        {
+            "Person_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             },
-            "Organisation_entity" : {
-                "options" : {
+            "Organisation_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             },
-            "Activity_entity" : {
-                "options" : {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             },
-            "Task_entity" : {
-                "options" : {
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             },
-            "Salesproject_entity" : {
-                "options" : {
+            "Salesproject_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             },
-            "Offer_entity" : {
-                "options" : {
+            "Offer_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             },
-            "Order_entity" : {
-                "options" : {
+            "Order_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             },
-            "Contract_entity" : {
-                "options" : {
+            "Contract_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             },
-            "Product_entity" : {
-                "options" : {
+            "Product_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             },
-            "Employee_entity" : {
-                "options" : {
+            "Employee_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             },
-            "SupportTicket_entity" : {
-                "options" : {
+            "SupportTicket_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             },
-            "Campaign_entity" : {
-                "options" : {
+            "Campaign_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("assignmentRowID.value")
             }
         },
-        "ObjectTree_entity": {
-            "Person_entity" : {
-                "options" : {
+        "ObjectTree_entity": 
+        {
+            "Person_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForFields(["PARENT_ID.value", "TARGET_ID.value"])
             },
-            "Organisation_entity" : {
-                "options" : {
+            "Organisation_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForFields(["PARENT_ID.value", "TARGET_ID.value"])
             }
         },
-        "Member_entity" : {
-            "Campaign_entity" : { 
-                "options" : {
+        "Member_entity" : 
+        {
+            "Campaign_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("OBJECTMEMBER.OBJECT_ROWID") // Evtl einschränken auf Type
             },
-            "Salesproject_entity" : { 
-                "options" : {
+            "Salesproject_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("OBJECTMEMBER.OBJECT_ROWID") // Evtl einschränken auf Type
             }
         },
-        "SalesprojectSource_entity" : {
-            "Salesproject_entity" : { 
-                "options" : {
+        "SalesprojectSource_entity" : 
+        {
+            "Salesproject_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("SALESPROJECT_TOUCHPOINT.SALESPROJECT_ID")
             }
         }, 
-        "Forecast_entity" : {
-            "Salesproject_entity" : { 
-                "options" : {
+        "Forecast_entity" : 
+        {
+            "Salesproject_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("FORECAST.OBJECT_ROWID")  // Evtl einschränken auf Type
             }
         },
-        "Offer_entity" : {
-            "Salesproject_entity" : { 
-                "options" : {
+        "Offer_entity" : 
+        {
+            "Salesproject_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("OFFER.OBJECT_ROWID")  // Evtl einschränken auf Type
             },
-            "Activity_entity" : {
-                "options" : {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "OFFERID", "Offer", "OFFER", "ACTIVITY_ID")
             },
-            "Task_entity" : {
-                "options" : {
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "OFFERID", "Offer", "OFFER", "TASK_ID")
             },
-            "Favorite_entity" : {
-                "options" : {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("OFFER.OFFERID", "Offer")
+            },
+            "Offeritem_entity" : 
+            {
+                "options" : 
+                {
+                    "isExportable" : true,
+                    "isObservable" : false
+                }, 
+                "getUIDsfn" : Dependency.defaultFunctionForRelation("OFFERITEM", "OFFER_ID", "OFFERID", null, "OFFER", "OFFERITEMID"), 
+                "fieldsToLoad" : ["OFFERID"]
             }
         },
-        "DocumentTemplate_entity": {
-            "Favorite_entity" : {
-                "options" : {
+        "DocumentTemplate_entity": 
+        {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("DOCUMENTTEMPLATE.DOCUMENTTEMPLATEID", "DocumentTemplate")
             }
         },
-        "WorkflowDefinition_entity": {
-            "Favorite_entity" : {
-                "options" : {
+        "WorkflowDefinition_entity": 
+        {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("UID.value", "WorkflowDefinition")
             }
         },
-        "Competition_entity" : {
-            "Salesproject_entity" : { 
-                "options" : {
+        "Competition_entity" : 
+        {
+            "Salesproject_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("COMPETITION.OBJECT_ROWID")  // Evtl einschränken auf Type
             }
         },
-        "Offeritem_entity" : {
-            "Offer_entity" : { 
-                "options" : {
+        "Offeritem_entity" : 
+        {
+            "Offer_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("OFFERITEM.OFFER_ID")
             }
         },
-        "Orderitem_entity" : {
-            "Order_entity" : { 
-                "options" : {
+        "Orderitem_entity" : 
+        {
+            "Order_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("SALESORDERITEM.SALESORDER_ID")
             }
         },
-        "Productprice_entity" : {
-            "Product_entity" : { 
-                "options" : {
+        "Productprice_entity" : 
+        {
+            "Product_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("PRODUCTPRICE.PRODUCT_ID")
             },
-            "Favorite_entity" : {
-                "options" : {
+            "Favorite_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 }, 
                 "getUIDsfn" : Dependency.defaultFunctionForFavorites("PRODUCTPRICE.PRODUCTPRICEID", "Productprice")
             }
         },
-        "Prod2prod_entity" : {
-            "Product_entity" : { 
-                "options" : {
+        "Prod2prod_entity" : 
+        {
+            "Product_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("SOURCE_ID.value")
             }
         },
-        "CampaignCost_entity" : {
-            "Campaign_entity" : { 
-                "options" : {
+        "CampaignCost_entity" : 
+        {
+            "Campaign_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("CAMPAIGNCOST.CAMPAIGN_ID")
             }
         },
-        "CampaignStep_entity" : {
-            "Campaign_entity" : { 
-                "options" : {
+        "CampaignStep_entity" : 
+        {
+            "Campaign_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("CAMPAIGNSTEP.CAMPAIGN_ID")
             },
-            "Activity_entity" : {
-                "options" : {
+            "Activity_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("ACTIVITYLINK", "OBJECT_ROWID", "CAMPAIGNSTEPID", "CampaignStep", "CAMPAIGNSTEP")
             },
-            "Task_entity" : {
-                "options" : {
+            "Task_entity" : 
+            {
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForRelation("TASKLINK", "OBJECT_ROWID", "CAMPAIGNSTEPID", "CampaignStep", "CAMPAIGNSTEP")
             }
         },
-        "Lead_entity" : {
-            "Leadimport_entity" : { 
-                "options" : {
+        "Lead_entity" : 
+        {
+            "Leadimport_entity" : 
+            { 
+                "options" : 
+                {
                     "isObservable" : true
                 },
                 "getUIDsfn" : Dependency.defaultFunctionForField("LEADS.LEADIMPORT_ID")
diff --git a/process/ExportTemplate_lib/process.js b/process/ExportTemplate_lib/process.js
index 07ed68ab7557f351d24df31578bb97187cc7544d..0dc59363f125d7bd5cc256acfefe337008c86b34 100644
--- a/process/ExportTemplate_lib/process.js
+++ b/process/ExportTemplate_lib/process.js
@@ -1,3 +1,7 @@
+import("system.project");
+import("Dependency_lib");
+import("Context_lib");
+import("system.entities");
 import("system.neon");
 import("system.vars");
 import("Address_lib");
@@ -9,6 +13,7 @@ import("system.datetime");
 import("system.text");
 import("system.translate");
 import("system.util");
+import("Util_lib");
 
 /**
  * Methods used for ExportTemplates and exporting Fieldvalues using those templates
@@ -23,70 +28,293 @@ function ExportTemplateUtils() {}
  * 
  * @param {String} pExportTemplateId export template id
  * @param {Array} pSelection Contacts/Organisations you want to export (either via selecion by filterconditions)
- * @param {String} pComingFrom source from where you started (e.g. "PERSON", "ORGANISATION" )
  * @param {String} pFilename (opt.) name of the exported file (if left blank -> "templateTitle_dd.MM.yyyy.HH:mm:ss")
+ * @param {String} pCharset the charset of the exported base64-encoded CSV
  * 
  * @return {Object} {content:   base64-encoded CSV; 
  *                   filename:  filename}
- * 
  */
-ExportTemplateUtils.buildExport = function (pExportTemplateId, pSelection, pComingFrom, pFilename)
+ExportTemplateUtils.buildExport = function (pExportTemplateId, pSelection, pFilename, pCharset)
 {
     //Gets all the relevant data from the chosen template
-    var templateId = pExportTemplateId;
-    var templateData = ExportTemplateUtils.getTemplateData(templateId);
+    var templateData = ExportTemplateUtils.getTemplateData(pExportTemplateId);
     var templateTitle = templateData[0];
     var language = templateData[1];
     var sentenceSeparator = ExportTemplateUtils.getSentenceSeparator(templateData[2]);
     var fieldSeparator = ExportTemplateUtils.getFieldSeparator(templateData[3]);
     var fieldDeLimiter = ExportTemplateUtils.getFieldDeLimiter(templateData[4]);
     var filename = pFilename;
-    var fields = ExportTemplateUtils.getTemplateFields(templateId);
-    var comingFrom = pComingFrom;
     var selection = pSelection;
-    var filteredIdcondition;
     var csvTable;
-    var fieldtitles = [];
    
     if(!selection.includes("{", 0))         //checks if data is selected
     {
         selection = [];
         selection = JSON.parse(pSelection);      //makes an array of the ContactIds/OrganisationIds of the selected data
-     }
+    }
      
-    if(filename == null || filename == undefined || filename.trim() == "") //if the user didn't choose a filename => generate one automatically
+    if(Utils.isNullOrEmptyString(filename))//if the user didn't choose a filename => generate one automatically
+    {
         filename = ExportTemplateUtils.getExportFileName(templateTitle, "UTC");
-   filename += ".csv";
-   
-    //selects all the placeholders needed in the correct order
-    var placeholders = PlaceholderUtils.getPlaceholders(language); //selects all placeholders
-    var affectedPlaceholders = [];
-    for (let i = 0; i < fields.length; i++) {
-            var placeholderField = placeholders.find(function(placeholder){
-                return placeholder.getFormattedName() == fields[i];
-            })
-            if(placeholderField)
-                affectedPlaceholders.push(placeholderField);
     }
+        
+    filename += ".csv";
+   
+    let data = new ExportTemplateData(pExportTemplateId).getMainExportData(selection);
+    
+    csvTable = text.toCSV(data, sentenceSeparator, fieldSeparator, fieldDeLimiter);     //generates the CSV with the correct separators
+    csvTable = util.encodeBase64String(csvTable, pCharset || "UTF-8");                       //converts to Base64 (for neon.Download)
+    
+    return {
+        content : csvTable, 
+        filename : filename,
+        title : templateTitle
+    };
+}
+
+/**
+ * This class takes over the creation of the data for the export.
+ * 
+ * @param {String} pExportTemplateId export template id
+ */
+function ExportTemplateData(pExportTemplateId) 
+{
+    this.exportTemplateId = pExportTemplateId;
+    
+    this.placesOfUse = 
+    newSelect([
+        "EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATEPLACEOFUSEID", 
+        "EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATEPLACEOFUSE_ID",
+        "EXPORTTEMPLATEPLACEOFUSE.OBJECT_FILTER",
+        "EXPORTTEMPLATEPLACEOFUSE.PLACEOFUSE"
+        ])
+    .from("EXPORTTEMPLATEPLACEOFUSE")
+    .where("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATE_ID", this.exportTemplateId)
+    .orderBy("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATEPLACEOFUSE_ID DESC")
+    .table();
+        
+    this.placesOfUseFields = {
+        "EXPORTTEMPLATEPLACEOFUSEID" : 0,
+        "EXPORTTEMPLATEPLACEOFUSE_ID" : 1,
+        "OBJECT_FILTER" : 2,
+        "PLACEOFUSE" : 3
+    };
+    
+    let fields = newSelect([
+        "EXPORTTEMPLATEFIELD.EXPORTTEMPLATEPLACEOFUSE_ID", 
+        "EXPORTTEMPLATEFIELD.FIELD",
+        "EXPORTTEMPLATEPLACEOFUSE.PLACEOFUSE"
+        ])
+    .from("EXPORTTEMPLATEFIELD")
+    .rightJoin("EXPORTTEMPLATEPLACEOFUSE", 
+        newWhere("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATE_ID", this.exportTemplateId)
+        .and("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATEPLACEOFUSEID = EXPORTTEMPLATEFIELD.EXPORTTEMPLATEPLACEOFUSE_ID"))
+    .where("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", this.exportTemplateId)
+    .orderBy("EXPORTTEMPLATEFIELD.SORTING")
+    .table();
+    
+    let fieldsObjectFields = {};
+    fieldsObjectFields.EXPORTTEMPLATEPLACEOFUSE_ID = 0;
+    fieldsObjectFields.FIELD = 1;
+    fieldsObjectFields.PLACEOFUSE = 2;
+    
+    this.fields = {};
+    this.exportData = [];
+    let exportHeader = [];
+    
+    fields.forEach(function (pField, pIndex) 
+    {
+        
+        if (Utils.isNullOrEmpty(this.fields[pField[fieldsObjectFields.EXPORTTEMPLATEPLACEOFUSE_ID]]))
+        {
+            this.fields[pField[fieldsObjectFields.EXPORTTEMPLATEPLACEOFUSE_ID]] = {};
+        }
+            
+        let field = this.fields[pField[fieldsObjectFields.EXPORTTEMPLATEPLACEOFUSE_ID]];
+            
+        field[pField[fieldsObjectFields.FIELD]] = pIndex;
+        // Override the value with the displayValue if exists
+        field[pField[fieldsObjectFields.FIELD]+ ".displayValue"] = pIndex;
+        
+        let entity = ContextUtils.getEntity(pField[fieldsObjectFields.PLACEOFUSE]);
+        let fields = project.getEntityStructure(entity).fields;
+        
+        exportHeader.push(fields[pField[fieldsObjectFields.FIELD]].title);
+        
+    }, this);
+    
+    this.exportData.push(exportHeader);
+    // starts at one, because the headers of the columns were inserted before the content.
+    this.exportIndex = 1;
+}
+
+/**
+ * Starts the recursion with the main place of use.
+ * 
+ * @param {String} pSelection stringified filter or a array of ids
+ */
+ExportTemplateData.prototype.getMainExportData = function (pSelection) 
+{
+    this.placesOfUse.forEach(function (pPlaceOfUse, pIndex, pPlacesOfUse) {
+        // get the MainPlaceOfUse to start the recrusion
+        if (Utils.isNullOrEmptyString(pPlaceOfUse[this.placesOfUseFields.EXPORTTEMPLATEPLACEOFUSE_ID]))
+        {
+            let placeOfUse = pPlacesOfUse.splice(pIndex, 1)[0];
+            placeOfUse[this.placesOfUseFields.OBJECT_FILTER] = JSON.stringify(pSelection);
+            this.getExportData(placeOfUse, [], 0);
+            return; // Currently there can only be one MainPlaceOfUse.
+        }
+    }, this);
     
+    return this.exportData;
+}
 
-    var replaced = getAddressesData(selection, affectedPlaceholders, null, null);   //replaces all the placeholders with values 
-    replaced =  replaced.slice(1,replaced.length);                      //needed in order to remove the weird first line of the Array
+/**
+ * Get and process recursive data.
+ * 
+ * @param {String} pPlaceOfUse the place of use object with the filter object
+ * @param {Number} pParentCurrentIndex the index of the parrent place of use
+ * @param {Array} pIDs the ids to filter on
+ */
+ExportTemplateData.prototype.getExportData = function (pPlaceOfUse, pIDs, pParentCurrentIndex) 
+{
+    let currentIndex = pParentCurrentIndex;
+    var placeOfUseEntity = ContextUtils.getEntity(pPlaceOfUse[this.placesOfUseFields.PLACEOFUSE]);
+    
     
-    for (let i = 0; i < affectedPlaceholders.length; i++) 
+    if (Utils.isNullOrEmpty(this.fields[pPlaceOfUse[this.placesOfUseFields.EXPORTTEMPLATEPLACEOFUSEID]]))
     {
-        fieldtitles[i] = affectedPlaceholders[i].title;                 //gets the translations for the Labelling
+        return 0;
     }
+    // get only the fields of the current PlaceOfUse
+    let placeOfUseFields = Object.keys(this.fields[pPlaceOfUse[this.placesOfUseFields.EXPORTTEMPLATEPLACEOFUSEID]]);
+    
+    let dependentFieldsToLoad = [];
+    let dependentPlaceOfUse = [];
+    
+    this.placesOfUse.forEach(function (pPotentialChildPlaceOfUse, pIndex, pPlacesOfUse) 
+    {
+        // if pPotentialChildPlaceOfUse is a child of pPlaceOfUse
+        if (pPotentialChildPlaceOfUse[this.placesOfUseFields.EXPORTTEMPLATEPLACEOFUSE_ID] === pPlaceOfUse[this.placesOfUseFields.EXPORTTEMPLATEPLACEOFUSEID])
+        {
+            // Remove PlaceOfUse of this.placesOfUse
+            //let placeOfUse = pPlacesOfUse.splice(pIndex, 1)[0];
+            dependentPlaceOfUse.push(pPotentialChildPlaceOfUse);
+            
+            let dependency = ContextUtils.getEntity(pPotentialChildPlaceOfUse[this.placesOfUseFields.PLACEOFUSE]);
+            dependentFieldsToLoad = dependentFieldsToLoad.concat(Dependency.mapping()[placeOfUseEntity][dependency]["fieldsToLoad"]); // Dependency.mapping()[placeOfUseEntity][dependency]["fieldsToLoad"][0] == "PERSON_CONTACT_ID"
+        }
+    }, this);
+                
+    var data = this.getFilterData(pPlaceOfUse, placeOfUseEntity, placeOfUseFields, dependentFieldsToLoad, pIDs);
+    
+    let placeOfUseId = pPlaceOfUse[this.placesOfUseFields.EXPORTTEMPLATEPLACEOFUSEID];
+    var maxCount = 0;
+    let sumcount = 0;
+    data.forEach(function (pRow, pIndex) 
+    {
+        maxCount = 1;
+        dependentPlaceOfUse.forEach(function (pDependentPlaceOfUse) 
+        {
+            let dependency = ContextUtils.getEntity(pDependentPlaceOfUse[this.placesOfUseFields.PLACEOFUSE]);
+            let dependentIds = Dependency.mapping()[placeOfUseEntity][dependency].getUIDsfn(pRow);
+            
+            maxCount = Math.max(this.getExportData(pDependentPlaceOfUse, dependentIds, currentIndex), maxCount);
+        }, this);
+        
+        if (!Utils.toBoolean(dependentPlaceOfUse.length))
+        {
+            // Last Level
+            this.setExportData(pRow, maxCount, placeOfUseId, currentIndex + pIndex);
+        }
+        else
+        {
+            // After all Levels are finish
+            this.setExportData(pRow, maxCount, placeOfUseId, currentIndex);
+            currentIndex += maxCount;
+            if (Utils.isNullOrEmptyString(pPlaceOfUse[this.placesOfUseFields.EXPORTTEMPLATEPLACEOFUSE_ID]))
+            {
+                currentIndex = pParentCurrentIndex;
+                this.exportIndex += maxCount;
+            }
+        }
+        sumcount += maxCount;
+        
+    }, this);
+    
+    return Math.max(sumcount, maxCount);
+}
 
-    replaced.unshift(fieldtitles); //adds the translated Titles at the top of the table (columnHeadlines basically)
-   
-    csvTable = text.toCSV(replaced, sentenceSeparator, fieldSeparator, fieldDeLimiter);     //generates the CSV with the correct separators
-    csvTable = util.encodeBase64String(csvTable);                       //converts to Base64 (for neon.Download)
+
+/**
+ * Set the overtaken data into the export array.
+ * 
+ * @param {Object} pPlaceOfUse the place of use object with the filter object
+ * @param {String} pPlaceOfUseEntity the entity through which the data is loaded
+ * @param {Array} pPlaceOfUseFileds the place of use id of the current place of use
+ * @param {Array} pDependentFieldsToLoad fields of the dependencies to get the conection between the enties
+ * @param {Array} pIDs the ids to filter on
+ */
+ExportTemplateData.prototype.getFilterData = function (pPlaceOfUse, pPlaceOfUseEntity, pPlaceOfUseFileds, pDependentFieldsToLoad, pIDs)
+{
+    let fields = pPlaceOfUseFileds.concat(pDependentFieldsToLoad);
+    // remove duplicate fields
+    fields = Array.from(new Set(fields));
+    var filter = JSON.parse(pPlaceOfUse[this.placesOfUseFields.OBJECT_FILTER]);
+    var config = entities.createConfigForLoadingRows()
+    .entity(pPlaceOfUseEntity)
+    .fields(fields);
     
-    return {content : csvTable, 
-            filename : filename
-    };
-};
+    if (Utils.isObject(filter) && Array.isArray(filter))
+    {
+        pIDs = pIDs.concat(filter);
+    }
+    else
+    {
+        config.filter(JSON.stringify(filter.filter));
+    }
+    
+    config.uids(pIDs);
+    
+    let rows = [];
+    
+    if (pIDs.length > 0)
+    {
+        rows = entities.getRows(config);
+    }
+    
+    return rows;
+}
+
+/**
+ * Set the overtaken data into the export array.
+ * 
+ * @param {Array} pDataRow the data, which will be inserted
+ * @param {Number} pMaxCount the number of repeated data insertion 
+ * @param {String} pPlaceOfUseId the place of use id of the current place of use
+ * @param {Number} pIndex the index of the current row
+ */
+ExportTemplateData.prototype.setExportData = function (pDataRow, pMaxCount, pPlaceOfUseId, pIndex)
+{
+    let fieldsPlaceOfUse = this.fields[pPlaceOfUseId];
+    for (let i = 0; i < pMaxCount; i++)
+    {
+        let index = this.exportIndex + i + pIndex;
+        if (Utils.isNullOrEmpty(this.exportData[index]))
+        {
+            // Create an empty array the length of the header with empty strings
+            this.exportData[index] = new Array(this.exportData[0].length).fill("");
+        }
+        
+        for (let field in fieldsPlaceOfUse)
+        {
+            if (!Utils.isNullOrEmptyString(pDataRow[field])) 
+            {
+                this.exportData[index][fieldsPlaceOfUse[field]] = pDataRow[field];
+            }
+        }
+    }
+}
 
 /**
  * Gets an Array of all the Fields of a ExportTemplate using it's unique exportTemplateId.
@@ -99,10 +327,10 @@ ExportTemplateUtils.buildExport = function (pExportTemplateId, pSelection, pComi
 ExportTemplateUtils.getTemplateFields = function (pExportTemplateId)
 {
     return newSelect("EXPORTTEMPLATEFIELD.FIELD")
-                        .from("EXPORTTEMPLATEFIELD")
-                        .where("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", pExportTemplateId)
-                        .orderBy("EXPORTTEMPLATEFIELD.SORTING")
-                        .arrayColumn();
+    .from("EXPORTTEMPLATEFIELD")
+    .where("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", pExportTemplateId)
+    .orderBy("EXPORTTEMPLATEFIELD.SORTING")
+    .arrayColumn();
 };
 
 /**
@@ -116,7 +344,10 @@ ExportTemplateUtils.getTemplateFields = function (pExportTemplateId)
 ExportTemplateUtils.getExportFileName = function (pTemplateTitle, pTimeZone)
 {
     if(pTimeZone == null || pTimeZone == undefined)
+    {
         pTimeZone = "UTC";
+    }
+        
     var exportFileName = pTemplateTitle + "_" + datetime.toDate(datetime.date(), "dd.MM.yyyy.HH:mm:ss", pTimeZone);
     
     return exportFileName;
@@ -132,10 +363,10 @@ ExportTemplateUtils.getExportFileName = function (pTemplateTitle, pTimeZone)
 ExportTemplateUtils.getTemplateData = function (pExportTemplateId)
 {
     var data = newSelect(["EXPORTTEMPLATE.TITLE", "EXPORTTEMPLATE.ISOLANGUAGE", "EXPORTTEMPLATE.SENTENCESEPARATOR", 
-                            "EXPORTTEMPLATE.FIELDSEPARATOR", "EXPORTTEMPLATE.FIELDDELIMITER"])
-                        .from("EXPORTTEMPLATE")
-                        .where("EXPORTTEMPLATE.EXPORTTEMPLATEID", pExportTemplateId)
-                        .arrayRow();
+        "EXPORTTEMPLATE.FIELDSEPARATOR", "EXPORTTEMPLATE.FIELDDELIMITER"])
+    .from("EXPORTTEMPLATE")
+    .where("EXPORTTEMPLATE.EXPORTTEMPLATEID", pExportTemplateId)
+    .arrayRow();
     data[1] = LanguageKeywordUtils.Iso2FromIso3(data[1]) //needed to get the language in the right format
     return data;
 };
@@ -152,10 +383,16 @@ ExportTemplateUtils.getTemplateData = function (pExportTemplateId)
  */
 ExportTemplateUtils.getSentenceSeparator = function (pSentenceSeparator)
 {
-   if(pSentenceSeparator == "carriage return and line feed")
-       return "\r\n";
-   else
-       return pSentenceSeparator;
+    if(pSentenceSeparator == "carriage return and line feed")
+    {
+        return "\r\n";
+    }
+        
+    else
+    {
+        return pSentenceSeparator;
+    }
+       
 };
 
 /**
@@ -170,14 +407,20 @@ ExportTemplateUtils.getSentenceSeparator = function (pSentenceSeparator)
  */
 ExportTemplateUtils.getFieldSeparator = function (pFieldSeparator)
 {
-   if(pFieldSeparator == "tabulator")
-       return "\t";
-   else if(pFieldSeparator == "comma")
+    if(pFieldSeparator == "tabulator")
+    {
+        return "\t";
+    }
+    else if(pFieldSeparator == "comma")
+    {
         return ",";
-   else if(pFieldSeparator == "semicolon")
+    }
+    else if(pFieldSeparator == "semicolon")
+    {
         return ";";
-   else
-       return pFieldSeparator;
+    }
+    
+    return pFieldSeparator;
 };
 
 /**
@@ -192,10 +435,12 @@ ExportTemplateUtils.getFieldSeparator = function (pFieldSeparator)
  */
 ExportTemplateUtils.getFieldDeLimiter = function (pFieldDeLimiter)
 {
-   if(pFieldDeLimiter == "quotation mark")
-       return "\"";
-   else
-       return pFieldDeLimiter;
+    if(pFieldDeLimiter == "quotation mark")
+    {
+        return "\"";
+    }
+    
+    return pFieldDeLimiter;
 };
 
 /**
@@ -208,39 +453,52 @@ ExportTemplateUtils.getFieldDeLimiter = function (pFieldDeLimiter)
 ExportTemplateUtils.getExportTemplateTitle = function (pExportTemplateId)
 {
     return newSelect("EXPORTTEMPLATE.TITLE")
-                                .from("EXPORTTEMPLATE")
-                                .where("EXPORTTEMPLATE.EXPORTTEMPLATEID", pExportTemplateId)
-                                .cell(true);
+    .from("EXPORTTEMPLATE")
+    .where("EXPORTTEMPLATE.EXPORTTEMPLATEID", pExportTemplateId)
+    .cell(true);
 };
 
 /**
- * Export contacts or organistaions by contactIds.<br>
+ * Export contacts or organistaions by selection (filter or a array of ids).<br>
  * 
- * @param {String} pRowIds              <p>
- *                                      The contact ids as JSON array.<br>
+ * @param {String} pSelection           <p>
+ *                                      filter or a array of ids
  * @param {String} pSourceTableName     <p>
  *                                      The source table.<br>
  */
-ExportTemplateUtils.addParticipantsByRowIds = function (pRowIds, pSourceTableName)
+ExportTemplateUtils.addParticipants = function (pSelection, pSourceTableName)
 {
-        var params = {
-                "selectedData_param" : pRowIds,
-                "comingFrom_param" : pSourceTableName}
+    var params = {
+        "selectedData_param" : pSelection,
+        "comingFrom_param" : pSourceTableName
+    }
     neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
-};
+}
 
 /**
- * Export contacts or organistaions by condition (filter).<br>
+ * Returns the exculed fields of the export entity. These fields cannot be exported.
  * 
- * @param {String} pCondition           <p>
- *                                      Contact ids.
- * @param {String} pSourceTableName     <p>
- *                                      The source table.<br>
+ * @return {Object} {"Entity_entity" : ["exculdedFieldName",...], ...}
  */
-ExportTemplateUtils.addParticipantsByCondition = function (pCondition, pSourceTableName)
+ExportTemplateUtils.excludedFields = function ()
 {
-    var params = {
-                "selectedData_param" : pCondition,
-                "comingFrom_param" : pSourceTableName}
-    neon.openContext("ExportTemplateSelection", "ExportTemplateSelectionEdit_view", null, neon.OPERATINGSTATE_VIEW, params);
-};
\ No newline at end of file
+    return {
+        "Offer_entity":["OFFER_ID"],
+        "Offeritem_entity":["ASSIGNEDTO", "ITEMSORT", "OFFER_ID"]
+    };
+}
+
+/**
+ * Thees are the Entities which can be selected in the ExportTemplatePlaceOfUseFilter_view.
+ */
+ExportTemplateUtils.exportableEntities = function () 
+{
+    return [
+    "BulkMail_entity",
+    "Campaign_entity",
+    "Offer_entity",
+    "Organisation_entity",
+    "Person_entity",
+    "Salesproject_entity"
+    ];
+}
\ No newline at end of file
diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js
index 3369e0cfd4840368d4dc47adaa9380ab9ae90214..29b6ee9e6a0d8cd49e647ca37e00d095929ba85a 100644
--- a/process/JditoFilter_lib/process.js
+++ b/process/JditoFilter_lib/process.js
@@ -1,3 +1,4 @@
+import("Context_lib");
 import("system.vars");
 import("system.tools");
 import("system.logging");
@@ -512,6 +513,44 @@ JditoFilterUtils.getEmptyFilter = function (pEntity)
     return JSON.stringify(emptyFilter);
 }
 
+/**
+ * Returns an object with the entity and filter as string. 
+ * If filter or entity are not set, they are set to an empty filter and the current entity.
+ * 
+ * @param {String} [pEntity]
+ * @param {Object} [pFilterObj]
+ * 
+ * @return {String} Object in Format: {"filter": {"type":"group","operator":"AND","childs":[...]}, "entity": "Entity_entity"}
+ */
+JditoFilterUtils.getEntityFilter = function (pEntity, pFilterObj) 
+{
+    if (!pEntity)
+        pEntity = ContextUtils.getEntity(ContextUtils.getCurrentContextId());
+    if (!pFilterObj)
+    {
+        return JditoFilterUtils.getEmptyFilter(pEntity);
+    }
+    
+    return JSON.stringify({
+        "filter":pFilterObj,
+        "entity":pEntity
+    });
+}
+
+/**
+ * Returns an object with the entity and filter as string. 
+ * If filter or context are not set, they are set to an empty filter and the context of the current entity.
+ * 
+ * @param {String} [pContext]
+ * @param {Object} [pFilter]
+ * 
+ * @return {String} Object in Format: {"filter": {"type":"group","operator":"AND","childs":[...]}, "entity": "Entity_entity"}
+ */
+JditoFilterUtils.getContextFilter = function (pContext, pFilter)
+{
+    return JditoFilterUtils.getEntityFilter(ContextUtils.getEntity(pContext), pFilter);
+}
+
 
 /**
  * Object for translating a filter object to a sql condition.
diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js
index cc85d170a716afb3a5e352b754534ce5b5b93330..a2e9888cf830259bd023e441b894afb256e758ae 100644
--- a/process/KeywordRegistry_basic/process.js
+++ b/process/KeywordRegistry_basic/process.js
@@ -48,6 +48,7 @@ $KeywordRegistry.currency = function(){return "Currency";};
 $KeywordRegistry.currency$eur = function(){return "EUR";};
 
 $KeywordRegistry.productGroupcode = function(){return "ProductGroupcode";};
+$KeywordRegistry.productGroupcode$discount = function(){return "PRODUCTDISCOUNT";};
 
 $KeywordRegistry.offerStatus = function(){return "OfferStatus";};
 $KeywordRegistry.offerStatus$open = function(){return "OFFERSTATOPEN";};
@@ -145,6 +146,7 @@ $KeywordRegistry.activityCategory$onlineMeeting = function(){return "ONLINE-MEET
 $KeywordRegistry.activityCategory$approval = function(){return "APPROVAL";}
 $KeywordRegistry.activityCategory$sys = function(){return "SYS";};
 
+$KeywordRegistry.activityCategory$mstMessage = function(){return "MST-MESSAGE";};
 
 $KeywordRegistry.addressType = function(){return "AddressType";};
 $KeywordRegistry.addressType$private = function(){return "HOMEADDR";};
@@ -407,6 +409,8 @@ $KeywordRegistry.employeeGroupStatus = function(){return "EmployeeGroupStatus";}
 $KeywordRegistry.employeeGroupStatus$active = function(){return "ACTIVE";};
 $KeywordRegistry.employeeGroupStatus$inactive = function(){return "INACTIVE";};
 
+$KeywordRegistry.ticketTemplateIndivAnswer$active = function(){return "1";}
+$KeywordRegistry.ticketTemplateIndivAnswer$inactive = function(){return "0";}
 $KeywordRegistry.ticketCategory = function(){return "TicketCategory";}
 $KeywordRegistry.ticketCategory$undefined = function(){return "UNDEFINED";}
 $KeywordRegistry.ticketCategory$all = function(){return "ALL";}
diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js
index 892ed53b3e815ba9bc00dd562b43f1c06fe7781b..978f63390349075c5aa8c372fa5e1428070ce0d7 100644
--- a/process/MSTeams_lib/process.js
+++ b/process/MSTeams_lib/process.js
@@ -1,3 +1,4 @@
+import("Employee_lib");
 import("system.db");
 import("system.logging");
 import("system.neon");
@@ -24,187 +25,44 @@ MSTeamsUtils.isTeamsEnabled = function ()
     return Utils.toBoolean(project.getInstanceConfigValue("teamsEnabled", "false"));
 }
 
-MSTeamsUtils.getImpersoAzureId = function ()
-{
-    return project.getInstanceConfigValue("teamsImpersoAzureId", "");
-}
-
-/**
- * Contains the configuration for the possible contexts that can be used for teamLinks.
- * 
- * @return {Object} object with the context-names as keys and configuration-objects as values
- */
-MSTeamsUtils.getTeamLinkContexts = function ()
-{
-    return {
-        "Salesproject": {singleLinkPerObject: true}
-    };
-}
-
-/**
- * Opens a context for changing the linked team of the given object. This function also checks the configuration from
- * MSTeamsUtils.getTeamLinkContexts to make sure the created teamLink is allowed
+/*
+ * Returns the azure object id of the impersonation user
+ * If no impersonation user is configured this function returns null
  * 
- * @param {String} pRowId       uid of the linked object
- * @param {String} pObjectType  context of the linked object
+ * @returns {String} the azure object id of the impersonation user
  */
-MSTeamsUtils.changeTeamsLink = function (pRowId, pObjectType)
+MSTeamsUtils.getImpersoAzureId = function()
 {
-    var linkConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType];
-    if (!linkConfig)
-        return;
-    
-    var existingTeamLinks = newSelect("MST_TEAMLINKID")
-        .from("MST_TEAMLINK")
-        .where("MST_TEAMLINK.OBJECT_ROWID", pRowId)
-        .and("MST_TEAMLINK.OBJECT_TYPE", pObjectType)
-        .arrayColumn();
-    var params = {
-        "ObjectRowId_param": pRowId,
-        "ObjectType_param": pObjectType
-    };
-    if (existingTeamLinks.length === 0 || !linkConfig.singleLinkPerObject)
-        neon.openContext("MSTTeamLink", null, null, neon.OPERATINGSTATE_NEW, params);
-    else
-        neon.openContext("MSTTeamLink", null, [existingTeamLinks[0]], neon.OPERATINGSTATE_EDIT, params);
+    return project.getInstanceConfigValue("teamsImpersoAzureId", null);
 }
 
-/**
- * Removes all teamLinks of the given object that are invalid.
+/*
+ * Returns the azure object id of the user with the specified contactid
+ * If no azure id is configured the function first ties to get the azure id via the upn
+ * if that also fails the function will return null
  * 
- * @param {String} pRowId               uid of the linked object
- * @param {String} pObjectType          context of the linked object
- * @param {String} [pTeamLinkIdToKeep]  Only applies to contexts with 'singleLinkPerObject: true', if there are more than one teamLink, every
- *                                      teamLink except one will be deleted. This param controls which one shouldn't be deleted.
+ * @returns {string} the azure object id or null (on failure)
  */
-MSTeamsUtils.purgeCorruptTeamLinks = function (pRowId, pObjectType, pTeamLinkIdToKeep)
+MSTeamsUtils.getAzureIdByContactId = function(pContactId)
 {
-    var teamLinks = MSTeamsUtils.getLinkedTeams(pRowId, pObjectType).map(function (row)
-    {
-        return row.teamLinkId;
-    });
-    var linkConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType];
-    var removeLinks = [];
-    if (!linkConfig)
-        removeLinks = teamLinks;
-    else if (linkConfig.singleLinkPerObject && pTeamLinkIdToKeep)
-        removeLinks = teamLinks.filter(function (id) {return id != pTeamLinkIdToKeep;});
-    else if (linkConfig.singleLinkPerObject)
-        removeLinks = teamLinks.slice(1);
-    
-    if (removeLinks.length === 0)
-        return 0;
-    return newWhere("MST_TEAMLINK.MST_TEAMLINKID", removeLinks, SqlBuilder.IN()).deleteData();
-}
-
-/**
- * Saves the given team in the database if it is not already present.
- * 
- * @param {Object} pTeam    An object containing the data of the team. Required properties:
- *                          <ul>
- *                              <li>teamId</li>
- *                              <li>teamName</li>
- *                          </ul>
- *                          Optional properties (will be loaded automatically if not given):
- *                          <ul>
- *                              <li>generalChannelId</li>
- *                              <li>webUrl</li>
- *                          </ul>
- * @return {Boolean} true if the team was inserted, false if it already exists
- */
-MSTeamsUtils.insertTeamIfMissing = function (pTeam)
-{
-    var existsTeam = newSelect("count(*)")
-        .from("MST_TEAM")
-        .where("MST_TEAM.MST_TEAMID", pTeam.teamId)
-        .cell() > 0;
-    if (existsTeam)
-        return false;
-    
-    new SqlBuilder().insertFields({
-        "MST_TEAMID": pTeam.teamId,
-        "TEAMNAME": pTeam.teamName,
-        "GENERAL_CHANNELID": pTeam.generalChannelId || teams.getGeneralChannelId(pTeam.teamId),
-        "IS_ARCHIVED": 0,
-        "WEB_URL": pTeam.webUrl || teams.getWebUrl(pTeam.teamId)
-    }, "MST_TEAM");
-    
-    return true;
-}
-
-/**
- * Creates a new teamLink.
- * 
- * @param {String} pTeamId      id of the team
- * @param {String} pRowId       uid of the linked object
- * @param {String} pObjectType  context of the linked object
- */
-MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType)
-{
-    var currentTeamLink;
-    var contextConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType];
-    if (!contextConfig)
-        return;
-    
-    //if singleLinkPerObject is true, only one team link can be created for the given objectRowId
-    if (contextConfig.singleLinkPerObject)
+    var userObj = EmployeeUtils.getUserByContactId(pContactId);
+    if(!userObj)
     {
-        currentTeamLink = MSTeamsUtils.getLinkedTeam(pRowId, pObjectType);
+        return null;
     }
-    if (currentTeamLink)
+    
+    var azureId = userObj[tools.PARAMS][tools.TEAMS_AZUREID];
+    if(azureId)
     {
-        newWhere("MST_TEAMLINK.MST_TEAMLINKID", currentTeamLink.teamLinkId).updateFields({
-            "MST_TEAM_ID": pTeamId
-        });
+        return azureId;
     }
-    else
+    
+    var azureUpn = userObj[tools.PARAMS][tools.TEAMS_AZUREUPN];
+    if(azureUpn)
     {
-        new SqlBuilder().insertFields({
-            "MST_TEAM_ID": pTeamId,
-            "OBJECT_ROWID": pRowId,
-            "OBJECT_TYPE": pObjectType
-        }, "MST_TEAMLINK", "MST_TEAMLINKID");
+        return teams.getInternalAzureId(azureUpn);
     }
-}
-
-/**
- * Gets all linked teams of an object
- * 
- * @param {String} pRowId       uid of the linked object
- * @param {String} pObjectType  context of the linked object
- * @return {Object[]} array of {teamLinkId, teamId}
- */
-MSTeamsUtils.getLinkedTeams = function (pRowId, pObjectType)
-{
-    return newSelect(["MST_TEAMLINKID", "MST_TEAM_ID"])
-        .from("MST_TEAMLINK")
-        .where("MST_TEAMLINK.OBJECT_ROWID", pRowId)
-        .andIfSet("MST_TEAMLINK.OBJECT_TYPE", pObjectType)
-        .orderBy("MST_TEAMLINKID")
-        .table()
-        .map(function ([linkId, teamId])
-        {
-            return {
-                teamLinkId: linkId,
-                teamId: teamId
-            };
-        });
-    
-}
-
-/**
- * Gets the linked team of an object
- * 
- * @param {String} pRowId       uid of the linked object
- * @param {String} pObjectType  context of the linked object
- * @return {String} id of the linked team, or null if ther is none
- */
-MSTeamsUtils.getLinkedTeam = function (pRowId, pObjectType)
-{
-    var linkedTeams = MSTeamsUtils.getLinkedTeams(pRowId, pObjectType);
-    if (linkedTeams.length === 0)
-        return null;
-    return linkedTeams[0].teamId;
+    return null;
 }
 
 /**
@@ -216,7 +74,9 @@ MSTeamsUtils.getLinkedTeam = function (pRowId, pObjectType)
 MSTeamsUtils.getContactIdsByAzureIds = function (pAzureIds)
 {
     if (pAzureIds.length === 0)
+    {
         return {};
+    }
     
     var teamsUsers = tools.getUsersByAttribute(tools.TEAMS_AZUREID, pAzureIds);
     var contactIdMap = {};
@@ -238,9 +98,12 @@ MSTeamsUtils.getContactIdsByAzureIds = function (pAzureIds)
 MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField)
 {
     if (!pTeamId)
+    {
         return "''";
+    }
     
-    try {
+    try
+    {
         var ownerIds = Object.keys(teams.getAllOwners(pTeamId));
         var ownerContactIds = MSTeamsUtils.getContactIdsByAzureIds(ownerIds);
         ownerContactIds = Utils.objectValues(ownerContactIds);
@@ -257,13 +120,19 @@ MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField)
     }
     
     if (ownerContactIds.length === 0 && memberContactIds.length === 0)
+    {
         return "''";
+    }
     
     var caseWhen = SqlBuilder.caseStatement();
     if (ownerContactIds.length !== 0)
+    {
         caseWhen.when(pContactIdField, ownerContactIds, SqlBuilder.IN()).thenString(translate.text("Owner"));
+    }
     if (memberContactIds.length !== 0)
+    {
         caseWhen.when(pContactIdField, memberContactIds, SqlBuilder.IN()).thenString(translate.text("Member"));
+    }
     
     //the SqlBuilder.IN() can't be used here because of the sub-sql string for the email
     caseWhen.when("(" + CommUtil.getStandardSubSqlMail() + ") in ('" + Utils.objectValues(members).join("', '") + "')")
@@ -281,16 +150,13 @@ MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField)
  */
 MSTeamsUtils.isUserTeamOwner = function (pTeamId, pUserId)
 {
-    var user;
-    if (!pUserId)
-        user = tools.getCurrentUser();
-    else
-        user = tools.getUserByAttribute(tools.NAME, pUserId);
-    
-    var azureId = user ? user[tools.PARAMS][tools.TEAMS_AZUREID] : null;
-    if (!azureId)
+    if(!pTeamId)
+    {
         return false;
-    return azureId in teams.getAllOwners(pTeamId);
+    }
+    var user = pUserId ? tools.getUserByAttribute(tools.NAME, pUserId) : tools.getCurrentUser();
+    var azureId = user ? user[tools.PARAMS][tools.TEAMS_AZUREID] : null;
+    return azureId && azureId in teams.getAllOwners(pTeamId);
 }
 
 /**
@@ -309,7 +175,7 @@ MSTeamsUtils.isUserTeamOwner = function (pTeamId, pUserId)
  */
 MSTeamsUtils.getTeamInfo = function (pTeamId)
 {
-    var teamInfo = new SqlBuilder(db.getCurrentAlias())
+    var teamInfo = new SqlBuilder(SqlUtils.getDataAlias())
         .select(["TEAMNAME", "WEB_URL", "SERVICE_URL", "IS_ARCHIVED", "GENERAL_CHANNELID"])
         .from("MST_TEAM")
         .whereIfSet("MST_TEAM.MST_TEAMID", pTeamId)
@@ -337,4 +203,9 @@ MSTeamsUtils.isTeamActive = function (pTeamId)
 {
     var teamInfo = MSTeamsUtils.getTeamInfo(pTeamId);
     return teamInfo != null && !teamInfo.isArchived;
-}
\ No newline at end of file
+}
+
+function $MSTeamsRoles(){}
+$MSTeamsRoles.Owner = function(){return "owner"};
+$MSTeamsRoles.Member = function(){return "member"};
+$MSTeamsRoles.Guest = function(){return "guest"};
diff --git a/process/Observation_lib/process.js b/process/Observation_lib/process.js
index 7037b65adf630093f6efb2d95493cdc30aa1fffc..b90768b91d3fc9479af4ebda50b97d225408bb96 100644
--- a/process/Observation_lib/process.js
+++ b/process/Observation_lib/process.js
@@ -1,3 +1,4 @@
+import("JditoFilter_lib");
 import("Keyword_lib");
 import("Util_lib");
 import("system.neon");
@@ -803,7 +804,7 @@ Observation.insertAction = function ()
     } 
     else 
     {
-        let filter = Observation.getContextFilter(contextId,vars.get("$sys.filter").filter);
+        let filter = JditoFilterUtils.getContextFilter(contextId,vars.get("$sys.filter").filter);
         
         params["ObjectFilter_param"] = filter;
     }
@@ -824,11 +825,14 @@ Observation.cancelAction = function ()
     let cond = newWhere("OBSERVATION.OBJECT_TYPE", contextID)
     .and("OBSERVATION.OBSERVER", observer);
 
-    if (selectedUIDs.length){
+    if (selectedUIDs.length)
+    {
         cond.and("OBSERVATION.OBJECT_ID", selectedUIDs, SqlBuilder.IN())
         .deleteData(true, "OBSERVATION");
-    } else {
-        let filter = Observation.getContextFilter(contextID,vars.get("$sys.filter").filter);
+    } 
+    else 
+    {
+        let filter = JditoFilterUtils.getContextFilter(contextID,vars.get("$sys.filter").filter);
         
         cond.and("OBSERVATION.OBJECT_FILTER", filter, SqlBuilder.LIKE())
         .deleteData(true, "OBSERVATION");
@@ -930,7 +934,7 @@ Observation.countObservations = function (pSelectedUIDs)
     if (pSelectedUIDs && pSelectedUIDs.length){
         rowCount.and("OBSERVATION.OBJECT_ID", pSelectedUIDs, SqlBuilder.IN());
     } else {
-        rowCount.and("OBSERVATION.OBJECT_FILTER", Observation.getContextFilter(contextID,vars.get("$sys.filter").filter), SqlBuilder.LIKE());
+        rowCount.and("OBSERVATION.OBJECT_FILTER", JditoFilterUtils.getContextFilter(contextID,vars.get("$sys.filter").filter), SqlBuilder.LIKE());
     } 
     return parseInt(rowCount.cell());
 }
@@ -968,46 +972,6 @@ Observation.actionState = function (pSelectedUIDs, pIsCancelAction)
     }
 }
 
-/**
- * Returns an object with the entity and filter. 
- * If filter or entity are not set, they are set to an empty filter and the current entity.
- * 
- * @param {String} [pEntity]
- * @param {Object} [pFilterObj]
- * @return {Object} Object in Format: {"filter": {"type":"group","operator":"AND","childs":[...]}, "entity": "Entity_entity"}
- */
-Observation.getEntityFilter = function (pEntity, pFilterObj) 
-{
-    if (!pEntity)
-        pEntity = ContextUtils.getEntity(ContextUtils.getCurrentContextId());
-    if (!pFilterObj)
-    {
-        pFilterObj = {
-            "type":"group",
-            "operator":"AND",
-            "childs":[]
-        };
-    }
-    
-    return JSON.stringify({
-        "filter":pFilterObj,
-        "entity":pEntity
-    });
-}
-
-/**
- * Returns an object with the entity and filter. 
- * If filter or context are not set, they are set to an empty filter and the context of the current entity.
- * 
- * @param {String} [pContext]
- * @param {Object} [pFilter]
- * @return {Object} Object in Format: {"filter": {"type":"group","operator":"AND","childs":[...]}, "entity": "Entity_entity"}
- */
-Observation.getContextFilter = function (pContext, pFilter)
-{
-    return Observation.getEntityFilter(ContextUtils.getEntity(pContext), pFilter);
-}
-
 /**
  * Gives all possible fields which can be observed. 
  * 
diff --git a/process/Organisation_lib/process.js b/process/Organisation_lib/process.js
index a16a0b0488c461bd5a3a72baf368d2e5fa5b83da..735a0af10761b2b84fde48a3744f0c71977050fc 100644
--- a/process/Organisation_lib/process.js
+++ b/process/Organisation_lib/process.js
@@ -176,7 +176,7 @@ var activityData = activityQuery.table()
     });
     activityData = ReportData.begin(["ENTRYDATE", "MEDIUM", "LOGIN", "INFO"]).add(activityData);
 
-    var attr = new AttributeRelationQuery(pOrgId)
+    var attr = new AttributeRelationQuery(pContactId)
         .includeDisplayValue()
         .includeFullAttributeName()
         .getAttributes()
diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js
index 6926f5ec35b7aea6d9d61c3e69b829531885a786..4ec5fbabe25fda4e48a39fc5c4d59e55d50fd919 100644
--- a/process/Sql_lib/process.js
+++ b/process/Sql_lib/process.js
@@ -4561,6 +4561,14 @@ SqlUtils.getSystemAlias = function()
     return "_____SYSTEMALIAS";
 }
 
+/**
+ *  @return the dataalias
+ */
+SqlUtils.getDataAlias = function()
+{
+    return "Data_alias";
+}
+
 /**
      * Builds a SQL IN condition, while accounting for the 1000 elements maximum
      * Single conditions are concatenated with OR, which can be devastating for performance!
diff --git a/process/TicketTemplate_lib/process.js b/process/TicketTemplate_lib/process.js
index 0555f45acc7bc2d9405d7879fa83045702e03ca0..0fb6c6aedbf926e2b27dc162eaf83f817c242437 100644
--- a/process/TicketTemplate_lib/process.js
+++ b/process/TicketTemplate_lib/process.js
@@ -114,7 +114,8 @@ TicketTemplateUtils.checkIndividualAnswer = function (pTemplateId)
   var sql = newSelect("DOCUMENTTEMPLATE.TEMPLATECONTENT")
             .from("TICKETTEMPLATE")
             .join("DOCUMENTTEMPLATE","TICKETTEMPLATE.DOCUMENTTEMPLATE_ID = DOCUMENTTEMPLATE.DOCUMENTTEMPLATEID")
-            .whereIfset("TICKETTEMPLATE.TICKETTEMPLATEID",pTemplateId)
+            .whereIfSet("TICKETTEMPLATE.TICKETTEMPLATEID",pTemplateId)
+            .and("TICKETTEMPLATE.INDIVIDUAL_ANSWER", $KeywordRegistry.ticketTemplateIndivAnswer$active())
             .cell()
   return sql;
 }
\ No newline at end of file
diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js
index 92abee276eb2691defa0338a9639b7f5bb56ff7e..3ebc86d452cd686411ec8066d0b57124dc65c9ed 100644
--- a/process/Util_lib/process.js
+++ b/process/Util_lib/process.js
@@ -831,14 +831,25 @@ NumberUtils.validateIsBetweenFloat = function(pTitle, pValue, pMin, pMax, pIgnor
     if(pValue.includes(","))
         pValue = pValue.replace(",", ".");
     
-    var discount = parseFloat(pValue);
+    var value = parseFloat(pValue);
     
-    if(isNaN(discount))
+    if(isNaN(value))
         return false;
     
-    if (!NumberUtils.isInside(discount, pMin, pMax, pIgnoreNull))
+    if (!NumberUtils.isInside(value, pMin, pMax, pIgnoreNull))
     {
-        return (translate.withArguments("${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3", [translate.text(pTitle), discount, pMin, pMax]));
+        if(pMin == Number.MIN_VALUE)
+        {
+            return (translate.withArguments("${MIN_MAX_ERROR_MIN_INT_VALUE} field: %0, value: %1, max: %2", [translate.text(pTitle), value, pMax]));
+        }
+        else if(pMax == Number.MAX_VALUE)
+        {
+            return (translate.withArguments("${MIN_MAX_ERROR_MAX_INT_VALUE} field: %0, value: %1, min: %2", [translate.text(pTitle), value, pMin]));
+        }
+        else
+        {
+            return (translate.withArguments("${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3", [translate.text(pTitle), value, pMin, pMax]));
+        }
     }
     return false;
 }
diff --git a/process/buildExport_serverProcess/buildExport_serverProcess.aod b/process/buildExport_serverProcess/buildExport_serverProcess.aod
new file mode 100644
index 0000000000000000000000000000000000000000..845ca703843de1c8c9732b551712e616ae8af35a
--- /dev/null
+++ b/process/buildExport_serverProcess/buildExport_serverProcess.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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2">
+  <name>buildExport_serverProcess</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/buildExport_serverProcess/process.js</process>
+  <variants>
+    <element>EXECUTABLE</element>
+  </variants>
+</process>
diff --git a/process/buildExport_serverProcess/process.js b/process/buildExport_serverProcess/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..19f950b047f91924a1d4a966a7e76122a15f4bb9
--- /dev/null
+++ b/process/buildExport_serverProcess/process.js
@@ -0,0 +1,42 @@
+import("Util_lib");
+import("ExportTemplate_lib");
+import("Document_lib");
+import("system.text");
+import("system.translate");
+import("Binary_lib");
+import("system.util");
+import("Bulkmail_lib");
+import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+import("system.notification");
+
+var user = vars.get("$local.user");
+var selection = JSON.parse(vars.get("$local.selection"));
+var exportTemplateId = vars.get("$local.exportTemplateId");
+var charset = vars.get("$local.charset");
+var filename = vars.get("$local.filename");
+
+var document = ExportTemplateUtils.buildExport(exportTemplateId, selection, filename, charset);
+
+let id = SingleBinaryUtils.set("EXPORTTEMPLATE", "EXPORTFILE", exportTemplateId, document.content, document.filename, "");
+
+if (id === true)
+{
+    id = SingleBinaryUtils.getMetadata("EXPORTTEMPLATE", "EXPORTFILE", exportTemplateId, null, null).id;
+}
+
+var message = translate.text("Download ready");
+var description = translate.withArguments("Export CSV \"%0\" can now be downloaded", [document.title]);
+
+var notificationConfig = notification.createConfig()
+.initialState(notification.STATE_UNSEEN)
+.forcedPriority(notification.PRIO_NORMAL)
+.linkInfo(text.encodeMS(["Document", id]))
+.daysToLive(2)
+.addUserWithId(user)
+.notificationType("DownloadReady")
+.caption(message)
+.description(description);
+    
+notification.addNotificationWith(notificationConfig);
\ No newline at end of file
diff --git a/process/mailbridge_service/process.js b/process/mailbridge_service/process.js
index 28c37df7476c35dfedcc1af130e0cb0f0bd8e56a..8fb7bd912497800f9542370491a59c0b8eef62ec 100644
--- a/process/mailbridge_service/process.js
+++ b/process/mailbridge_service/process.js
@@ -60,7 +60,7 @@ ticketMailbridgeUtils.getInboxInformation = function(pRecipients, pSender, possi
                   .select(["INBOX.INBOXID","INBOX.REOPEN_DELAY", "INBOX.EMAIL_ADDRESS"])
                   .from("INBOX")
                   .leftJoin("MAILSIGNATURE", "INBOX.INBOXID = MAILSIGNATURE.INBOX_ID")
-                  .whereIfSet("EMAIL_ADDRESS", pRecipients, SqlBuilder.IN())
+                  .whereIfSet("INBOX.EMAIL_ADDRESS", pRecipients, SqlBuilder.IN())
                   .arrayRow();    
  
     // found an INbox?
@@ -89,7 +89,7 @@ ticketMailbridgeUtils.getInboxInformation = function(pRecipients, pSender, possi
                   .select(["INBOX.INBOXID","INBOX.REOPEN_DELAY", "INBOX.EMAIL_ADDRESS"])
                   .from("INBOX")
                   .leftJoin("MAILSIGNATURE", "INBOX.INBOXID = MAILSIGNATURE.INBOX_ID")
-                  .whereIfSet("EMAIL_ADDRESS", possibleBCC, SqlBuilder.IN())
+                  .whereIfSet("INBOX.EMAIL_ADDRESS", possibleBCC, SqlBuilder.IN())
                   .arrayRow();
                   
         if(inboxObj.inboxID.length > 0)
@@ -118,7 +118,7 @@ ticketMailbridgeUtils.getInboxInformation = function(pRecipients, pSender, possi
                   .select(["INBOX.INBOXID","INBOX.REOPEN_DELAY", "INBOX.EMAIL_ADDRESS"])
                   .from("INBOX")
                   .leftJoin("MAILSIGNATURE", "INBOX.INBOXID = MAILSIGNATURE.INBOX_ID")
-                  .whereIfSet("EMAIL_ADDRESS", possibleBCCUnfiltered, SqlBuilder.IN())
+                  .whereIfSet("INBOX.EMAIL_ADDRESS", possibleBCCUnfiltered, SqlBuilder.IN())
                   .arrayRow();
                   
             if(inboxObj.inboxID.length > 0)
diff --git a/process/migrate_themesAsTopics_serverProcess/process.js b/process/migrate_themesAsTopics_serverProcess/process.js
index 52496b2230dc44fd3cc41656f834a8f7b8f1f7fd..f451dc6ab10d39afbadd91fb4d5261cfead041d9 100644
--- a/process/migrate_themesAsTopics_serverProcess/process.js
+++ b/process/migrate_themesAsTopics_serverProcess/process.js
@@ -1,3 +1,4 @@
+import("Util_lib");
 import("system.eMath");
 import("TopicTree_lib");
 import("system.logging");
@@ -111,7 +112,7 @@ function _migrateTopicTree(pThemes)
         topicObj[themeId]["insertHelper"]["columns"].push("DATE_NEW");
         topicObj[themeId]["insertHelper"]["values"].push(date_new);
         
-        if(theme_id && Utils.isNotNullOrEmpty(theme_id))
+        if(theme_id && Utils.isNotNullOrEmptyString(theme_id))
         {
             topicObj[themeId]["assignedTo"] = theme_id;
             topicsToLoopTrough.push(themeId);
@@ -169,8 +170,11 @@ function _migrateTopicTree(pThemes)
                     previousLayer = TopicTreeUtils.getPreviousLayerName(previousLayer);
                     if(previousLayer != "SORTING_LAYER_0")
                     {
-                        topicObj[themeId]["insertHelper"]["columns"].push(previousLayer);
-                        topicObj[themeId]["insertHelper"]["values"].push(-1);//value doesn't matter here
+                        if(!topicObj[themeId]["insertHelper"]["columns"].includes(previousLayer))
+                        {
+                            topicObj[themeId]["insertHelper"]["columns"].push(previousLayer);
+                            topicObj[themeId]["insertHelper"]["values"].push("-1");//value doesn't matter here
+                        }
                     }
                     else
                     {
@@ -210,8 +214,7 @@ function _migrateTopicTree(pThemes)
             //we don't change the original order tho, since we used the stored sortingValue to sort said array that we are now looping trough
             var sortingValue = eMath.addInt(i, 1);
             
-            topicTreeColumns.push(topicObj[ownTopicId]["layer"]);
-            topicTreeValues.push(sortingValue);
+            topicTreeValues[topicTreeColumns.indexOf(topicObj[ownTopicId]["layer"])] = sortingValue;
             statements.push(["TOPICTREE", topicTreeColumns, null, topicTreeValues]); 
         }
     }