From f644b3ba971cdf22c6dea1d714458ae539522521 Mon Sep 17 00:00:00 2001
From: Maurice Wachsmuth <m.wachsmuth@adito.de>
Date: Fri, 20 Aug 2021 14:16:04 +0000
Subject: [PATCH] [Projekt: xRM-ContactManagement][TicketNr.:
 1070092][Gruppenaufgaben] Revert Changes of Team Internal

---
 .../Data_alias/basic/2021.1.2/changelog.xml   |   2 +-
 .../2021.1.3/Grouptask/add_ColumnTask.xml     |  11 +
 .../basic/2021.1.3/Grouptask/changelog.xml    |   6 +
 .../Grouptask/create_TaskAttendees.xml        |  27 +
 .../Data_alias/basic/2021.1.3/changelog.xml   |   2 +-
 .../Data_alias/basic/_demoData/changelog.xml  |   1 +
 .../basic/_demoData/generatedData/task.xml    | 639 +++++++++++-------
 .../_demoData/generatedData/taskattendees.xml | 186 +++++
 aliasDefinition/Data_alias/Data_alias.aod     | 198 +++++-
 .../entityfields/newtask/onActionProcess.js   |   2 +-
 entity/Advertising_entity/documentation.adoc  |   6 +-
 entity/Contract_entity/Contract_entity.aod    |   1 +
 entity/Object_entity/Object_entity.aod        |   2 +-
 .../TaskAttendees_entity.aod                  | 163 +++++
 .../contact_id/displayValueProcess.js         |   8 +
 .../entityfields/date_edit/valueProcess.js    |   9 +
 .../entityfields/date_new/valueProcess.js     |   9 +
 .../department_id/displayValueProcess.js      |   5 +
 .../department_id/onValidation.js             |  13 +
 .../children/parentid_param/valueProcess.js   |   4 +
 .../departmentsonly_param/valueProcess.js     |   2 +
 .../isdepartment/displayValueProcess.js       |  17 +
 .../entityfields/isdepartment/valueProcess.js |  11 +
 .../entityfields/rowid/displayValueProcess.js |  16 +
 .../rowid/linkedContextProcess.js             |   8 +
 .../entityfields/rowid/valueProcess.js        |  16 +
 .../entityfields/task_id/valueProcess.js      |   8 +
 .../entityfields/user_edit/valueProcess.js    |   6 +
 .../entityfields/user_new/valueProcess.js     |   5 +
 .../recordcontainers/db/conditionProcess.js   |  25 +
 .../recordcontainers/db/orderClauseProcess.js |   4 +
 .../contact_id.displayvalue/expression.js     |   5 +
 entity/Task_entity/Task_entity.aod            | 362 +++++++---
 entity/Task_entity/afterSave.js               | 192 ++++++
 .../children/rowid_param/valueProcess.js      |   4 +
 .../onlyactives_param/valueProcess.js         |   2 +
 .../onlyactives_param/valueProcess.js         |   2 +
 .../createsingletasks/stateProcess.js         |   6 +
 .../entityfields/date_edit/valueProcess.js    |   6 +
 .../entityfields/date_new/valueProcess.js     |   6 +
 .../children/parentid_param/valueProcess.js   |   4 +
 .../entityfields/description/valueProcess.js  |   9 +
 .../editor_contact_id/displayValueProcess.js  |   8 -
 .../editor_contact_id/valueProcess.js         |   7 -
 .../cancelobservation/onActionProcess.js      |   0
 .../cancelobservation/stateProcess.js         |   0
 .../cancelobservation/titleProcess.js         |   0
 .../children/observe/onActionProcess.js       |   0
 .../children/observe/stateProcess.js          |   0
 .../children/observe/titleProcess.js          |   0
 .../children/setcomplete/onActionProcess.js   |  12 +
 .../children/setcomplete/stateProcess.js      |  42 ++
 .../entityfields/icon_color/valueProcess.js   |  23 +-
 .../entityfields/newoffer/onActionProcess.js  |  30 +-
 .../newsupportticket/onActionProcess.js       |  12 +-
 .../openadminview/onActionProcess.js          |   5 +-
 .../entityfields/priority/valueProcess.js     |   2 +-
 .../priority_icon/valueProcess.js             |  25 +-
 .../protectionlevel/valueProcess.js           |   7 -
 .../displayValueProcess.js                    |   1 +
 .../requestor_contact_id/stateProcess.js      |   6 +
 .../setcompletepreview/onActionProcess.js     |  12 +
 .../setcompletepreview/stateProcess.js        |  45 ++
 .../entityfields/subject/valueProcess.js      |   9 +
 .../subject_details/valueProcess.js           |   5 -
 .../personsonly_param/valueProcess.js         |   2 +
 .../children/rowid_param/valueProcess.js      |   3 +
 .../taskattendeesmulti/onValidation.js        |  25 +
 .../departmentsonly_param/valueProcess.js     |   2 +
 .../children/rowid_param/valueProcess.js      |   3 +
 .../taskdepartmentsmulti/onValidation.js      |  23 +
 .../entityfields/user_edit/valueProcess.js    |   6 +
 .../entityfields/user_new/valueProcess.js     |   5 +
 entity/Task_entity/grantDeleteProcess.js      |  16 +-
 entity/Task_entity/grantUpdateProcess.js      |  36 +
 entity/Task_entity/iconIdProcess.js           |   2 +-
 entity/Task_entity/initFilterProcess.js       |  37 +-
 .../recordcontainers/db/conditionProcess.js   |  62 +-
 .../attendees/filterConditionProcess.js       |  40 ++
 .../attendees/filterValuesProcess.js          |  21 +
 .../department/filterConditionProcess.js      |  43 ++
 .../department/filterValuesProcess.js         |  14 +
 .../recordcontainers/db/fromClauseProcess.js  |  13 +
 .../recordcontainers/db/onDBDelete.js         |   1 +
 .../expression.js                             |  48 ++
 .../connections.value/expression.js           |  12 +
 .../expression.js                             |   5 -
 .../maturitydate_day.value/expression.js      |   2 +
 .../expression.js                             |   4 +-
 .../startdate_day.value/expression.js         |   2 +
 .../_____LANGUAGE_de/_____LANGUAGE_de.aod     |  61 ++
 neonContext/Task/Task.aod                     |  13 +
 neonContext/TaskAttendees/TaskAttendees.aod   |  29 +
 neonDashboard/Home/Home.aod                   |   2 +-
 .../OrganisationTaskAppointment_view.aod      |   2 +-
 .../PersonTaskAppointment_view.aod            |   2 +-
 .../TaskAttendeesFilterDepartment_view.aod    |  23 +
 .../TaskAttendeesFitlerContacts_view.aod      |  22 +
 .../TaskAttendeesMultiContactEdit_view.aod    |  25 +
 .../TaskAttendeesMultiDepartmentEdit_view.aod |  28 +
 .../TaskAttendeesPreviewList_view.aod         |  27 +
 .../TaskDescriptionMain_view.aod              |  27 +
 neonView/TaskDrawer_view/TaskDrawer_view.aod  |  18 +
 neonView/TaskEdit_view/TaskEdit_view.aod      |  25 +-
 neonView/TaskFilter_view/TaskFilter_view.aod  |  59 +-
 .../TaskMainAttendees_view.aod                |  23 +
 neonView/TaskMain_view/TaskMain_view.aod      |  29 +-
 .../TaskPreview_view/TaskPreview_view.aod     |  16 +-
 .../_____PREFERENCES_PROJECT.aod              |   1 +
 process/ActivityTask_lib/process.js           | 193 +++++-
 process/Organisation_lib/process.js           |  15 +-
 process/migrateTask/documentation.adoc        |   4 +
 process/migrateTask/migrateTask.aod           |  11 +
 process/migrateTask/process.js                |  39 ++
 report/Organisation_report/Aufgaben.jrxml     |  14 +-
 report/Organisation_report/reportData.jrxml   |   6 +-
 116 files changed, 2862 insertions(+), 540 deletions(-)
 create mode 100644 .liquibase/Data_alias/basic/2021.1.3/Grouptask/add_ColumnTask.xml
 create mode 100644 .liquibase/Data_alias/basic/2021.1.3/Grouptask/changelog.xml
 create mode 100644 .liquibase/Data_alias/basic/2021.1.3/Grouptask/create_TaskAttendees.xml
 create mode 100644 .liquibase/Data_alias/basic/_demoData/generatedData/taskattendees.xml
 create mode 100644 entity/TaskAttendees_entity/TaskAttendees_entity.aod
 create mode 100644 entity/TaskAttendees_entity/entityfields/contact_id/displayValueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/date_edit/valueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/date_new/valueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/department_id/displayValueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/department_id/onValidation.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/departments/children/parentid_param/valueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/departmentsonly_param/valueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/isdepartment/displayValueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/isdepartment/valueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/rowid/displayValueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/rowid/linkedContextProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/rowid/valueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/task_id/valueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/user_edit/valueProcess.js
 create mode 100644 entity/TaskAttendees_entity/entityfields/user_new/valueProcess.js
 create mode 100644 entity/TaskAttendees_entity/recordcontainers/db/conditionProcess.js
 create mode 100644 entity/TaskAttendees_entity/recordcontainers/db/orderClauseProcess.js
 create mode 100644 entity/TaskAttendees_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js
 create mode 100644 entity/Task_entity/afterSave.js
 create mode 100644 entity/Task_entity/entityfields/alltaskattendees/children/rowid_param/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/contacteditors/children/onlyactives_param/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/contactrequestors/children/onlyactives_param/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/createsingletasks/stateProcess.js
 create mode 100644 entity/Task_entity/entityfields/date_edit/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/date_new/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/departments/children/parentid_param/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/description/valueProcess.js
 delete mode 100644 entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js
 delete mode 100644 entity/Task_entity/entityfields/editor_contact_id/valueProcess.js
 rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/cancelobservation/onActionProcess.js (100%)
 rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/cancelobservation/stateProcess.js (100%)
 rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/cancelobservation/titleProcess.js (100%)
 rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/observe/onActionProcess.js (100%)
 rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/observe/stateProcess.js (100%)
 rename entity/Task_entity/entityfields/{observeactiongroup => filteractiongroup}/children/observe/titleProcess.js (100%)
 create mode 100644 entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/onActionProcess.js
 create mode 100644 entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js
 delete mode 100644 entity/Task_entity/entityfields/protectionlevel/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/requestor_contact_id/stateProcess.js
 create mode 100644 entity/Task_entity/entityfields/setcompletepreview/onActionProcess.js
 create mode 100644 entity/Task_entity/entityfields/setcompletepreview/stateProcess.js
 create mode 100644 entity/Task_entity/entityfields/subject/valueProcess.js
 delete mode 100644 entity/Task_entity/entityfields/subject_details/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/taskattendeesmulti/children/personsonly_param/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/taskattendeesmulti/children/rowid_param/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/taskattendeesmulti/onValidation.js
 create mode 100644 entity/Task_entity/entityfields/taskdepartmentsmulti/children/departmentsonly_param/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/taskdepartmentsmulti/children/rowid_param/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/taskdepartmentsmulti/onValidation.js
 create mode 100644 entity/Task_entity/entityfields/user_edit/valueProcess.js
 create mode 100644 entity/Task_entity/entityfields/user_new/valueProcess.js
 create mode 100644 entity/Task_entity/grantUpdateProcess.js
 create mode 100644 entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterConditionProcess.js
 create mode 100644 entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterValuesProcess.js
 create mode 100644 entity/Task_entity/recordcontainers/db/filterextensions/department/filterConditionProcess.js
 create mode 100644 entity/Task_entity/recordcontainers/db/filterextensions/department/filterValuesProcess.js
 create mode 100644 entity/Task_entity/recordcontainers/db/fromClauseProcess.js
 create mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/allattendeesfilter.displayvalue/expression.js
 create mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/connections.value/expression.js
 delete mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js
 create mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/maturitydate_day.value/expression.js
 create mode 100644 entity/Task_entity/recordcontainers/db/recordfieldmappings/startdate_day.value/expression.js
 create mode 100644 neonContext/TaskAttendees/TaskAttendees.aod
 create mode 100644 neonView/TaskAttendeesFilterDepartment_view/TaskAttendeesFilterDepartment_view.aod
 create mode 100644 neonView/TaskAttendeesFitlerContacts_view/TaskAttendeesFitlerContacts_view.aod
 create mode 100644 neonView/TaskAttendeesMultiContactEdit_view/TaskAttendeesMultiContactEdit_view.aod
 create mode 100644 neonView/TaskAttendeesMultiDepartmentEdit_view/TaskAttendeesMultiDepartmentEdit_view.aod
 create mode 100644 neonView/TaskAttendeesPreviewList_view/TaskAttendeesPreviewList_view.aod
 create mode 100644 neonView/TaskDescriptionMain_view/TaskDescriptionMain_view.aod
 create mode 100644 neonView/TaskDrawer_view/TaskDrawer_view.aod
 create mode 100644 neonView/TaskMainAttendees_view/TaskMainAttendees_view.aod
 create mode 100644 process/migrateTask/documentation.adoc
 create mode 100644 process/migrateTask/migrateTask.aod
 create mode 100644 process/migrateTask/process.js

diff --git a/.liquibase/Data_alias/basic/2021.1.2/changelog.xml b/.liquibase/Data_alias/basic/2021.1.2/changelog.xml
index 931906c684..f436574bf0 100644
--- a/.liquibase/Data_alias/basic/2021.1.2/changelog.xml
+++ b/.liquibase/Data_alias/basic/2021.1.2/changelog.xml
@@ -8,4 +8,4 @@
     <include relativeToChangelogFile="true" file="Registration_Webservice/changelog.xml"/>
     <include relativeToChangelogFile="true" file="VisitPlan/changelog.xml"/>
     <include relativeToChangelogFile="true" file="Duplicate/changelog.xml"/>
-</databaseChangeLog>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.3/Grouptask/add_ColumnTask.xml b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/add_ColumnTask.xml
new file mode 100644
index 0000000000..b2ae7c95ba
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/add_ColumnTask.xml
@@ -0,0 +1,11 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+    <changeSet author="m.wachsmuth" id="7a2f96e5-3aa5-4468-95b1-41ec722ed7a4">
+        <addColumn tableName="TASK">
+            <column name="DATE_EDIT" type="DATETIME"/>
+            <column name="DATE_NEW" type="DATETIME"/>
+            <column name="USER_NEW" type="VARCHAR(30)"/>
+            <column name="USER_EDIT" type="VARCHAR(30)"/>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.3/Grouptask/changelog.xml b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/changelog.xml
new file mode 100644
index 0000000000..2de952fad0
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/changelog.xml
@@ -0,0 +1,6 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <include relativeToChangelogFile="true" file="add_ColumnTask.xml"/>
+    <include relativeToChangelogFile="true" file="create_TaskAttendees.xml"/>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.3/Grouptask/create_TaskAttendees.xml b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/create_TaskAttendees.xml
new file mode 100644
index 0000000000..6786e76ee6
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2021.1.3/Grouptask/create_TaskAttendees.xml
@@ -0,0 +1,27 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
+    <changeSet author="m.wachsmuth" id="781b015e-b53d-4d32-bec7-d68af0ac3d42">
+        <createTable tableName="TASKATTENDEES">
+            <column name="TASKATTENDEESID" type="CHAR(36)">
+                <constraints nullable="false" primaryKey="true" primaryKeyName="PK_TASKATTENDEESID"/>
+            </column>
+            <column name="CONTACT_ID" type="CHAR(36)"/>
+            <column name="TASK_ID" type="CHAR(36)"/>
+            <column name="DEPARTMENT_ID" type="CHAR(36)"/>
+            <column name="DATE_EDIT" type="DATETIME"/>
+            <column name="DATE_NEW" type="DATETIME"/>
+            <column name="USER_NEW" type="VARCHAR(30)"/>
+            <column name="USER_EDIT" type="VARCHAR(30)"/>
+        </createTable>
+    </changeSet>
+    <changeSet author="m.wachsmuth" id="cca1cd75-42e5-4397-b091-77ae5d774638">
+        <createIndex indexName="IDX_CONTACT_ID" tableName="TASKATTENDEES">
+            <column name="CONTACT_ID"/>
+        </createIndex>
+    </changeSet>
+    <changeSet author="m.wachsmuth" id="c9926883-a66b-41bb-a209-bbda0f51aaee">
+        <createIndex indexName="IDX_DEPARTMENT_ID" tableName="TASKATTENDEES">
+            <column name="DEPARTMENT_ID"/>
+        </createIndex>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2021.1.3/changelog.xml b/.liquibase/Data_alias/basic/2021.1.3/changelog.xml
index 147d250c82..ef8ebadc89 100644
--- a/.liquibase/Data_alias/basic/2021.1.3/changelog.xml
+++ b/.liquibase/Data_alias/basic/2021.1.3/changelog.xml
@@ -2,8 +2,8 @@
 <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="defaultWeblinks/changelog.xml"/>
     <include relativeToChangelogFile="true" file="Checklist/changelog.xml"/>
     <include relativeToChangelogFile="true" file="alter_dataTypesToDateTime.xml"/>
+    <include relativeToChangelogFile="true" file="Grouptask/changelog.xml"/>
 </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 1a3228fca3..5bec7adbff 100644
--- a/.liquibase/Data_alias/basic/_demoData/changelog.xml
+++ b/.liquibase/Data_alias/basic/_demoData/changelog.xml
@@ -101,6 +101,7 @@
   <include file="generatedData/standard_workflow.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/stock.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/task.xml" relativeToChangelogFile="true"/>
+  <include file="generatedData/taskattendees.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/tasklink.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/ticket.xml" relativeToChangelogFile="true"/>
   <include file="generatedData/timetracking.xml" relativeToChangelogFile="true"/>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/task.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/task.xml
index 62f44c80a9..0d3eb5b59f 100644
--- a/.liquibase/Data_alias/basic/_demoData/generatedData/task.xml
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/task.xml
@@ -1,275 +1,406 @@
-<?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="bdca8df5-b7ff-40ac-abf3-dc654b0957ca">
-    <delete tableName="task"/>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Firma: Prüfen ob es sich um eine Dublette handelt"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
-      <column name="DESCRIPTION" value="Prüfen, ob die beiden Firmen zusammen gehören und ggf beide Firmen zusammenlegen bzw vermerken, dass es sich um keine Dublette handelt"/>
-      <column name="MATURITY_DATE" valueDate="2021-07-06T12:10:00"/>
-      <column name="PRIORITY" value="TASKPRIOLOW"/>
-      <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="0066cd29-a246-4a8c-8c11-c507538d997b"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2021-06-29T12:10:00"/>
+<?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="70aff731-ee61-4d81-a072-bb02ac6d2582">
+    <delete tableName="TASK"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="0066cd29-a246-4a8c-8c11-c507538d997b" />
+      <column name="SUBJECT" value="Firma: Prüfen ob es sich um eine Dublette handelt" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
+      <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9" />
+      <column name="START_DATE" valueDate="2021-06-29T12:10:00" />
+      <column name="MATURITY_DATE" valueDate="2021-07-06T12:10:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" value="Pr&amp;uuml;fen,&amp;nbsp;ob&amp;nbsp;die&amp;nbsp;beiden&amp;nbsp;Firmen&amp;nbsp;zusammen&amp;nbsp;geh&amp;ouml;ren&amp;nbsp;und&amp;nbsp;ggf&amp;nbsp;beide&amp;nbsp;Firmen&amp;nbsp;zusammenlegen&amp;nbsp;bzw&amp;nbsp;vermerken,&amp;nbsp;dass&amp;nbsp;es&amp;nbsp;sich&amp;nbsp;um&amp;nbsp;keine&amp;nbsp;Dublette&amp;nbsp;handelt" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIOLOW" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Autoreifen wechseln"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/>
-      <column name="DESCRIPTION" value="Winterreifen draufmachen lassen"/>
-      <column name="MATURITY_DATE" valueDate="2020-10-01T06:05:00"/>
-      <column name="PRIORITY" value="TASKPRIONONE"/>
-      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="0d126a7e-4308-4857-9245-5a40f3e2b36e"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2020-05-20T06:05:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="0d126a7e-4308-4857-9245-5a40f3e2b36e" />
+      <column name="SUBJECT" value="Autoreifen wechseln" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d" />
+      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="START_DATE" valueDate="2020-05-20T06:05:00" />
+      <column name="MATURITY_DATE" valueDate="2020-10-01T06:05:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" value="Winterreifen&amp;nbsp;draufmachen&amp;nbsp;lassen" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIONONE" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Vorbereitung Präsentation"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/>
-      <column name="MATURITY_DATE" valueDate="2020-10-27T02:46:00"/>
-      <column name="PRIORITY" value="TASKPRIONONE"/>
-      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG50"/>
-      <column name="TASKID" value="2e50d2cd-9429-433c-8f6e-2e31a9e7908e"/>
-      <column name="STATUS" value="IN-PROGRESS"/>
-      <column name="START_DATE" valueDate="2020-10-27T02:46:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="2e50d2cd-9429-433c-8f6e-2e31a9e7908e" />
+      <column name="SUBJECT" value="Vorbereitung Präsentation" />
+      <column name="STATUS" value="IN-PROGRESS" />
+      <column name="REQUESTOR_CONTACT_ID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7" />
+      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="START_DATE" valueDate="2020-10-27T02:46:00" />
+      <column name="MATURITY_DATE" valueDate="2020-10-27T02:46:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG50" />
+      <column name="PRIORITY" value="TASKPRIONONE" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Kampagne zu Akquise planen"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
-      <column name="DESCRIPTION" value="Kampagnenplanung für dieses Jahr beenden."/>
-      <column name="MATURITY_DATE" valueDate="2020-10-30T11:25:00"/>
-      <column name="PRIORITY" value="TASKPRIOHIGH"/>
-      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="380c1ae1-c7d4-49b7-87e1-4fe2e16c4c52"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2020-10-26T11:25:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="380c1ae1-c7d4-49b7-87e1-4fe2e16c4c52" />
+      <column name="SUBJECT" value="Kampagne zu Akquise planen" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
+      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="START_DATE" valueDate="2020-10-26T11:25:00" />
+      <column name="MATURITY_DATE" valueDate="2020-10-30T11:25:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" value="Kampagnenplanung&amp;nbsp;f&amp;uuml;r&amp;nbsp;dieses&amp;nbsp;Jahr&amp;nbsp;beenden." />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIOHIGH" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Beschädigte Ware"/>
-      <column name="KIND" value="TICKET"/>
-      <column name="REQUESTOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-      <column name="DESCRIPTION" value="Verpackung der Ware hat bei Zustellung äußerliche Beschädigungen aufgewiesen. An den gleichen Stellen ist die Ware ebenfalls beshädigt."/>
-      <column name="MATURITY_DATE" valueDate="2019-11-22T10:59:00"/>
-      <column name="PRIORITY" value="TASKPRIOLOW"/>
-      <column name="EDITOR_CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="46164eac-62d1-4dbb-a252-93ac49429855"/>
-      <column name="STATUS" value="ASSIGNED"/>
-      <column name="START_DATE" valueDate="2019-11-15T10:59:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="46164eac-62d1-4dbb-a252-93ac49429855" />
+      <column name="SUBJECT" value="Beschädigte Ware" />
+      <column name="STATUS" value="ASSIGNED" />
+      <column name="REQUESTOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="EDITOR_CONTACT_ID" value="57d524f6-ad66-4550-be83-fee6e31b7a52" />
+      <column name="START_DATE" valueDate="2019-11-15T10:59:00" />
+      <column name="MATURITY_DATE" valueDate="2019-11-22T10:59:00" />
+      <column name="KIND" value="TICKET" />
+      <column name="DESCRIPTION" value="Verpackung der Ware hat bei Zustellung äußerliche Beschädigungen aufgewiesen. An den gleichen Stellen ist die Ware ebenfalls beshädigt." />
+      <column name="PROTECTIONLEVEL" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIOLOW" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Beleg zum Angebot verschicken"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
-      <column name="MATURITY_DATE" valueDate="2020-06-29T06:03:00"/>
-      <column name="PRIORITY" value="TASKPRIOLOW"/>
-      <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="51cfa90a-93be-4d26-97ae-05f050631543"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2020-06-29T06:03:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="51cfa90a-93be-4d26-97ae-05f050631543" />
+      <column name="SUBJECT" value="Beleg zum Angebot verschicken" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
+      <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9" />
+      <column name="START_DATE" valueDate="2020-06-29T06:03:00" />
+      <column name="MATURITY_DATE" valueDate="2020-06-29T06:03:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIOLOW" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Lead nachfassen"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/>
-      <column name="DESCRIPTION" value="Kunde ist sehr interessiert an unseren Produkten, weitere Produktabstimmung intern."/>
-      <column name="MATURITY_DATE" valueDate="2021-05-31T12:48:00"/>
-      <column name="PRIORITY" value="TASKPRIOLOW"/>
-      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG50"/>
-      <column name="TASKID" value="67afcc4b-f71b-4da6-a8b3-e7947c411a2a"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2020-09-30T12:48:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="67afcc4b-f71b-4da6-a8b3-e7947c411a2a" />
+      <column name="SUBJECT" value="Lead nachfassen" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="a2e084e2-d68a-4f1e-a1bb-f8d46ad6293d" />
+      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="START_DATE" valueDate="2020-09-30T12:48:00" />
+      <column name="MATURITY_DATE" valueDate="2021-05-31T12:48:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" value="Kunde&amp;nbsp;ist&amp;nbsp;sehr&amp;nbsp;interessiert&amp;nbsp;an&amp;nbsp;unseren&amp;nbsp;Produkten,&amp;nbsp;weitere&amp;nbsp;Produktabstimmung&amp;nbsp;intern." />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG50" />
+      <column name="PRIORITY" value="TASKPRIOLOW" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Nachfassen bei Kunden"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="DESCRIPTION" value="Kunde wollte ein Angebot, hierzu die offenen Posten klären"/>
-      <column name="MATURITY_DATE" valueDate="2020-12-22T10:36:00"/>
-      <column name="PRIORITY" value="TASKPRIOMEDIUM"/>
-      <column name="EDITOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="783f38b6-db71-42b5-9117-848553905c93"/>
-      <column name="STATUS" value="IN-PROGRESS"/>
-      <column name="START_DATE" valueDate="2020-12-22T10:36:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="783f38b6-db71-42b5-9117-848553905c93" />
+      <column name="SUBJECT" value="Nachfassen bei Kunden" />
+      <column name="STATUS" value="IN-PROGRESS" />
+      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="EDITOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
+      <column name="START_DATE" valueDate="2020-12-22T10:36:00" />
+      <column name="MATURITY_DATE" valueDate="2020-12-22T10:36:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" value="Kunde&amp;nbsp;wollte&amp;nbsp;ein&amp;nbsp;Angebot,&amp;nbsp;hierzu&amp;nbsp;die&amp;nbsp;offenen&amp;nbsp;Posten&amp;nbsp;kl&amp;auml;ren" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIOMEDIUM" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Forecast anpassen"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="DESCRIPTION" value="Zu offenen Opportunities den Forecast anpassen"/>
-      <column name="MATURITY_DATE" valueDate="2020-10-30T10:34:00"/>
-      <column name="PRIORITY" value="TASKPRIOLOW"/>
-      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="7d404da2-78bf-427b-8abb-4c7e953220ca"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2020-10-21T09:34:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="7d404da2-78bf-427b-8abb-4c7e953220ca" />
+      <column name="SUBJECT" value="Forecast anpassen" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="START_DATE" valueDate="2020-10-21T09:34:00" />
+      <column name="MATURITY_DATE" valueDate="2020-10-30T10:34:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" value="Zu&amp;nbsp;offenen&amp;nbsp;Opportunities&amp;nbsp;den&amp;nbsp;Forecast&amp;nbsp;anpassen" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIOLOW" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Mit der Vertriebsleitung abstimmen, wie viel Prozent Rabatt gegeben werden kann."/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="DESCRIPTION" value="Preisabstimmung."/>
-      <column name="MATURITY_DATE" valueDate="2021-06-28T09:08:00"/>
-      <column name="PRIORITY" value="TASKPRIOMEDIUM"/>
-      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG75"/>
-      <column name="TASKID" value="81a4c8e7-4429-41e1-a534-f1be21e56b5e"/>
-      <column name="STATUS" value="WAITING"/>
-      <column name="START_DATE" valueDate="2020-10-21T09:08:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="81a4c8e7-4429-41e1-a534-f1be21e56b5e" />
+      <column name="SUBJECT" value="Mit der Vertriebsleitung abstimmen, wie viel Prozent Rabatt gegeben werden kann." />
+      <column name="STATUS" value="WAITING" />
+      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="START_DATE" valueDate="2020-10-21T09:08:00" />
+      <column name="MATURITY_DATE" valueDate="2021-06-28T09:08:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" value="Preisabstimmung." />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG75" />
+      <column name="PRIORITY" value="TASKPRIOMEDIUM" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Test"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="MATURITY_DATE" valueDate="2020-05-29T11:50:00"/>
-      <column name="PRIORITY" value="TASKPRIOLOW"/>
-      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="81a4d411-f317-4080-84b6-55ed91d26d34"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2020-05-21T11:50:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="81a4d411-f317-4080-84b6-55ed91d26d34" />
+      <column name="SUBJECT" value="Test" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="START_DATE" valueDate="2020-05-21T11:50:00" />
+      <column name="MATURITY_DATE" valueDate="2020-05-29T11:50:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIOLOW" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Präsentation vor Ort vorbereiten"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
-      <column name="MATURITY_DATE" valueDate="2020-05-28T09:21:00"/>
-      <column name="PRIORITY" value="TASKPRIOHIGH"/>
-      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG75"/>
-      <column name="TASKID" value="96ec8b48-9fac-4216-bc98-a8323f0592f9"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2020-05-21T09:21:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="96ec8b48-9fac-4216-bc98-a8323f0592f9" />
+      <column name="SUBJECT" value="Präsentation vor Ort vorbereiten" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
+      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="START_DATE" valueDate="2020-05-21T09:21:00" />
+      <column name="MATURITY_DATE" valueDate="2020-05-28T09:21:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG75" />
+      <column name="PRIORITY" value="TASKPRIOHIGH" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Projektplanung fehlerhaft"/>
-      <column name="KIND" value="TICKET"/>
-      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="DESCRIPTION" value="Die Funktionalitäten des Tools erfüllen nicht die geforderten Funktionalitäten.&#10;Im Detail:  Die Zeiterfassung kann nicht zu Tickets erfasst werden.&#10;"/>
-      <column name="MATURITY_DATE" valueDate="2019-09-12T01:43:00"/>
-      <column name="PRIORITY" value="TASKPRIOLOW"/>
-      <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="998d95e6-3d3b-448b-a634-5516c0e392a5"/>
-      <column name="STATUS" value="ASSIGNED"/>
-      <column name="START_DATE" valueDate="2019-09-05T01:43:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="998d95e6-3d3b-448b-a634-5516c0e392a5" />
+      <column name="SUBJECT" value="Projektplanung fehlerhaft" />
+      <column name="STATUS" value="ASSIGNED" />
+      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="EDITOR_CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9" />
+      <column name="START_DATE" valueDate="2019-09-05T01:43:00" />
+      <column name="MATURITY_DATE" valueDate="2019-09-12T01:43:00" />
+      <column name="KIND" value="TICKET" />
+      <column name="DESCRIPTION" value="Die Funktionalitäten des Tools erfüllen nicht die geforderten Funktionalitäten.&#xA;Im Detail:  Die Zeiterfassung kann nicht zu Tickets erfasst werden.&#xA;" />
+      <column name="PROTECTIONLEVEL" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIOLOW" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Rückruf Herr. Feldner"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="MATURITY_DATE" valueDate="2019-12-02T10:00:00"/>
-      <column name="PRIORITY" value="TASKPRIOHIGH"/>
-      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG50"/>
-      <column name="TASKID" value="cb00abc2-afc7-4cde-9e44-baf02248edd2"/>
-      <column name="STATUS" value="ENDED"/>
-      <column name="START_DATE" valueDate="2019-11-26T01:00:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="cb00abc2-afc7-4cde-9e44-baf02248edd2" />
+      <column name="SUBJECT" value="Rückruf Herr. Feldner" />
+      <column name="STATUS" value="ENDED" />
+      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="START_DATE" valueDate="2019-11-26T01:00:00" />
+      <column name="MATURITY_DATE" valueDate="2019-12-02T10:00:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG50" />
+      <column name="PRIORITY" value="TASKPRIOHIGH" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Produkt Präsentation vorbereiten und mit Lisa Sommer abstimmen"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="MATURITY_DATE" valueDate="2020-06-19T06:03:00"/>
-      <column name="PRIORITY" value="TASKPRIOLOW"/>
-      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG25"/>
-      <column name="TASKID" value="cf99cace-a6e1-46a6-ad83-c634e373f320"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2020-03-09T06:03:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="cf99cace-a6e1-46a6-ad83-c634e373f320" />
+      <column name="SUBJECT" value="Produkt Präsentation vorbereiten und mit Lisa Sommer abstimmen" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="START_DATE" valueDate="2020-03-09T06:03:00" />
+      <column name="MATURITY_DATE" valueDate="2020-06-19T06:03:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG25" />
+      <column name="PRIORITY" value="TASKPRIOLOW" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Besuch vorbereiten"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="MATURITY_DATE" valueDate="2020-10-28T10:38:00"/>
-      <column name="PRIORITY" value="TASKPRIOMEDIUM"/>
-      <column name="EDITOR_CONTACT_ID" value="4cc98357-25f3-462b-898c-440f9faf4b97"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="d6217dc5-5585-4919-a545-9cdc64a1ca58"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2020-10-14T09:38:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="d6217dc5-5585-4919-a545-9cdc64a1ca58" />
+      <column name="SUBJECT" value="Besuch vorbereiten" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="EDITOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
+      <column name="START_DATE" valueDate="2020-10-14T09:38:00" />
+      <column name="MATURITY_DATE" valueDate="2020-10-28T10:38:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIOMEDIUM" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Event im Hause"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
-      <column name="DESCRIPTION" value="Strategieevent 2-Tage"/>
-      <column name="MATURITY_DATE" valueDate="2020-11-11T06:04:00"/>
-      <column name="PRIORITY" value="TASKPRIOHIGH"/>
-      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG75"/>
-      <column name="TASKID" value="d8f35764-2c56-45be-93c7-f1e0695e2417"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2020-05-20T06:04:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="d8f35764-2c56-45be-93c7-f1e0695e2417" />
+      <column name="SUBJECT" value="Event im Hause" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
+      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="START_DATE" valueDate="2020-05-20T06:04:00" />
+      <column name="MATURITY_DATE" valueDate="2020-11-11T06:04:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" value="Strategieevent&amp;nbsp;2-Tage" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG75" />
+      <column name="PRIORITY" value="TASKPRIOHIGH" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="effiziente Wertschöpfungsketten bündeln und anlaysieren"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-      <column name="DESCRIPTION" value="Es sollen die effizienten Wertschöpfungsketten der Prozessdefinitionseinheiten im primären Schritt gebündelt und sekundär analysiert und verifiziert werden."/>
-      <column name="MATURITY_DATE" valueDate="2021-01-20T03:00:00"/>
-      <column name="PRIORITY" value="TASKPRIOHIGH"/>
-      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="e9cb198d-c420-4192-9c29-b23682457d8e"/>
-      <column name="STATUS" value="IN-PROGRESS"/>
-      <column name="START_DATE" valueDate="2021-01-20T03:00:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="e9cb198d-c420-4192-9c29-b23682457d8e" />
+      <column name="SUBJECT" value="effiziente Wertschöpfungsketten bündeln und anlaysieren" />
+      <column name="STATUS" value="IN-PROGRESS" />
+      <column name="REQUESTOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="EDITOR_CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="START_DATE" valueDate="2021-01-20T03:00:00" />
+      <column name="MATURITY_DATE" valueDate="2021-01-20T03:00:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" value="Es&amp;nbsp;sollen&amp;nbsp;die&amp;nbsp;effizienten&amp;nbsp;Wertsch&amp;ouml;pfungsketten&amp;nbsp;der&amp;nbsp;Prozessdefinitionseinheiten&amp;nbsp;im&amp;nbsp;prim&amp;auml;ren&amp;nbsp;Schritt&amp;nbsp;geb&amp;uuml;ndelt&amp;nbsp;und&amp;nbsp;sekund&amp;auml;r&amp;nbsp;analysiert&amp;nbsp;und&amp;nbsp;verifiziert&amp;nbsp;werden." />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIOHIGH" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Controlling Termin Vorbereiten"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="MATURITY_DATE" valueDate="2020-12-02T09:59:00"/>
-      <column name="PRIORITY" value="TASKPRIOLOW"/>
-      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG0"/>
-      <column name="TASKID" value="eadbfbc2-3664-49c8-bda1-b6f8e15e5f21"/>
-      <column name="STATUS" value="NEW"/>
-      <column name="START_DATE" valueDate="2020-11-23T09:59:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="eadbfbc2-3664-49c8-bda1-b6f8e15e5f21" />
+      <column name="SUBJECT" value="Controlling Termin Vorbereiten" />
+      <column name="STATUS" value="NEW" />
+      <column name="REQUESTOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="START_DATE" valueDate="2020-11-23T09:59:00" />
+      <column name="MATURITY_DATE" valueDate="2020-12-02T09:59:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG0" />
+      <column name="PRIORITY" value="TASKPRIOLOW" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
-    <insert tableName="task">
-      <column name="SUBJECT" value="Skyscraper VP für nächste Schritte"/>
-      <column name="KIND" value="TASK"/>
-      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
-      <column name="MATURITY_DATE" valueDate="2020-11-12T02:44:00"/>
-      <column name="PRIORITY" value="TASKPRIOMEDIUM"/>
-      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729"/>
-      <column name="PROTECTIONLEVEL" valueNumeric="0"/>
-      <column name="PROGRESS" value="TASKPROG50"/>
-      <column name="TASKID" value="f8fcdce1-da60-46d6-9ce3-3866e093730d"/>
-      <column name="STATUS" value="IN-PROGRESS"/>
-      <column name="START_DATE" valueDate="2020-10-21T01:44:00"/>
+    <insert tableName="TASK">
+      <column name="TASKID" value="f8fcdce1-da60-46d6-9ce3-3866e093730d" />
+      <column name="SUBJECT" value="Skyscraper VP für nächste Schritte" />
+      <column name="STATUS" value="IN-PROGRESS" />
+      <column name="REQUESTOR_CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
+      <column name="EDITOR_CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="START_DATE" valueDate="2020-10-21T01:44:00" />
+      <column name="MATURITY_DATE" valueDate="2020-11-12T02:44:00" />
+      <column name="KIND" value="TASK" />
+      <column name="DESCRIPTION" />
+      <column name="PROTECTIONLEVEL" valueNumeric="0" />
+      <column name="PARENT_CONTEXT" />
+      <column name="PARENT_ID" />
+      <column name="PROGRESS" value="TASKPROG50" />
+      <column name="PRIORITY" value="TASKPRIOMEDIUM" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" />
+      <column name="USER_NEW" />
+      <column name="USER_EDIT" />
     </insert>
   </changeSet>
-</databaseChangeLog>
\ No newline at end of file
+</databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/taskattendees.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/taskattendees.xml
new file mode 100644
index 0000000000..a79f3d86cc
--- /dev/null
+++ b/.liquibase/Data_alias/basic/_demoData/generatedData/taskattendees.xml
@@ -0,0 +1,186 @@
+<?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="3e27f9be-66ff-4d51-8ecf-76f04abb49ed">
+    <delete tableName="TASKATTENDEES"/>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="2aa5b8db-53fa-4ba7-93fb-2524afa94006" />
+      <column name="CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9" />
+      <column name="TASK_ID" value="0066cd29-a246-4a8c-8c11-c507538d997b" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="f3032256-a2a8-48b3-ad18-783ea18b6f02" />
+      <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="TASK_ID" value="0d126a7e-4308-4857-9245-5a40f3e2b36e" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="5801ac8b-eed3-48b0-b29d-eccec729b29e" />
+      <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="TASK_ID" value="2e50d2cd-9429-433c-8f6e-2e31a9e7908e" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="b86a3835-c406-4206-891e-d3cfa8a6157a" />
+      <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="TASK_ID" value="380c1ae1-c7d4-49b7-87e1-4fe2e16c4c52" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="e48dd6ef-7ee0-4bd4-8e4a-f3b9ddcf3e6a" />
+      <column name="CONTACT_ID" value="d105f7f4-afd1-4a98-adc2-13fd6934b7e9" />
+      <column name="TASK_ID" value="51cfa90a-93be-4d26-97ae-05f050631543" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="10a0a39a-72d1-4ff0-a47a-da9a356dd9ea" />
+      <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="TASK_ID" value="67afcc4b-f71b-4da6-a8b3-e7947c411a2a" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="e4788d62-6273-464b-b9cb-0f44580803a7" />
+      <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
+      <column name="TASK_ID" value="783f38b6-db71-42b5-9117-848553905c93" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="3d2c9654-5a6b-4683-8095-590a1b58575a" />
+      <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="TASK_ID" value="7d404da2-78bf-427b-8abb-4c7e953220ca" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="8808a4f1-e4c3-4c0c-a7c1-c4c2e07e1162" />
+      <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="TASK_ID" value="81a4c8e7-4429-41e1-a534-f1be21e56b5e" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="61501abc-cbe6-46b4-a668-073e4db0377c" />
+      <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="TASK_ID" value="81a4d411-f317-4080-84b6-55ed91d26d34" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="7a76482d-28b7-49bb-80d7-520b10bafd11" />
+      <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="TASK_ID" value="96ec8b48-9fac-4216-bc98-a8323f0592f9" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="652b0326-f33b-4f2e-9dae-883ddc2eec7c" />
+      <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="TASK_ID" value="cb00abc2-afc7-4cde-9e44-baf02248edd2" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="fb926b3b-6bc9-4dff-b14e-33281b9472c2" />
+      <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="TASK_ID" value="cf99cace-a6e1-46a6-ad83-c634e373f320" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="0f929021-df89-4dec-b393-58b72222b346" />
+      <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
+      <column name="TASK_ID" value="d6217dc5-5585-4919-a545-9cdc64a1ca58" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="0096a10b-324a-4a2a-b72e-237e8490bffc" />
+      <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="TASK_ID" value="d8f35764-2c56-45be-93c7-f1e0695e2417" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="5b226e0c-97db-4a06-87c5-38d2bf49fa14" />
+      <column name="CONTACT_ID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb" />
+      <column name="TASK_ID" value="e9cb198d-c420-4192-9c29-b23682457d8e" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="8565d5d0-40f7-46a6-8d0e-1cb272f658c4" />
+      <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="TASK_ID" value="eadbfbc2-3664-49c8-bda1-b6f8e15e5f21" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+    <insert tableName="TASKATTENDEES">
+      <column name="TASKATTENDEESID" value="61c4a865-ce1f-437e-80ca-cdc4c15082c8" />
+      <column name="CONTACT_ID" value="c7ddf982-0e58-4152-b82b-8f5673b0b729" />
+      <column name="TASK_ID" value="f8fcdce1-da60-46d6-9ce3-3866e093730d" />
+      <column name="DEPARTMENT_ID" />
+      <column name="DATE_EDIT" />
+      <column name="DATE_NEW" valueDate="2021-08-03T13:16:21" />
+      <column name="USER_NEW" value="Admin" />
+      <column name="USER_EDIT" />
+    </insert>
+  </changeSet>
+</databaseChangeLog>
diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 152dc64c46..58c01635d5 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -5417,8 +5417,8 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="19" />
-                <scale v="0" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -5510,7 +5510,7 @@
                 <name>DESCRIPTION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="-1" />
+                <columnType v="2005" />
                 <size v="2147483647" />
                 <scale v="0" />
                 <notNull v="false" />
@@ -5612,8 +5612,8 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
-                <size v="19" />
-                <scale v="0" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -5722,6 +5722,62 @@
                   </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>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</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>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="30" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -21852,6 +21908,138 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
+          <entityDb>
+            <name>TASKATTENDEES</name>
+            <dbName></dbName>
+            <idColumn>TASKATTENDEESID</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>DEPARTMENT_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="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <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="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="30" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TASKATTENDEESID</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>TASK_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>USER_EDIT</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>
         </entities>
       </entityGroup>
     </aliasDefDb>
diff --git a/entity/Activity_entity/entityfields/newtask/onActionProcess.js b/entity/Activity_entity/entityfields/newtask/onActionProcess.js
index 47fc462291..37bc32f556 100644
--- a/entity/Activity_entity/entityfields/newtask/onActionProcess.js
+++ b/entity/Activity_entity/entityfields/newtask/onActionProcess.js
@@ -2,4 +2,4 @@ import("system.vars");
 import("ActivityTask_lib");
 import("Context_lib");
 
-TaskUtils.createNewTask(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.ACTIVITYID"));
\ No newline at end of file
+TaskUtils.createNewTask(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.ACTIVITYID"), {"Description_param" : vars.get("$field.INFO"), "Subject_param": vars.get("$field.SUBJECT")});
\ No newline at end of file
diff --git a/entity/Advertising_entity/documentation.adoc b/entity/Advertising_entity/documentation.adoc
index a6942a22dd..864dc4d429 100644
--- a/entity/Advertising_entity/documentation.adoc
+++ b/entity/Advertising_entity/documentation.adoc
@@ -1,4 +1,4 @@
-==Advertising_entity
+== Advertising_entity
 An Entity for handling the process of Advertising Shipment 
 Advertising has a 1 : n relationship to AdvertisingItems
 
@@ -10,7 +10,7 @@ Currency : the currency in which the items should be processed
 Row_ID : the linked data set currently activity
 Date_new : creation date of the advertising shipment
 
-=Where to start
+= Where to start
 In the current version (2021.1.0) Advertisings are linked to an Activity (this can change in the future)
 While creating a new Activity the user has the possibility to say 'has Advertisings'
 If opt in, the needed data will be prepared in the background.
@@ -61,7 +61,7 @@ you can have up to 3 workflow instances. In order to group the sending by handov
 
 Depending on which handover type there are different actions: 
 -personal
-The advertising was given directly in person to a contact -> a follow up task will be generated after a defined amount of time currently 5M 
+The advertising was given directly in person to a contact - > a follow up task will be generated after a defined amount of time currently 5M 
 (for testing you can change the time in the workflow)
 -post /mail
 The item will be send via mail so a usertask is generated which provides the needed information -> after that a follow up task will be generated 
diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod
index bf30590d50..4b39e0dc67 100644
--- a/entity/Contract_entity/Contract_entity.aod
+++ b/entity/Contract_entity/Contract_entity.aod
@@ -355,6 +355,7 @@
         <entityParameter>
           <name>PresetLinks_param</name>
           <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess>
+          <expose v="true" />
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod
index 6aba8ccb6b..3aa1526759 100644
--- a/entity/Object_entity/Object_entity.aod
+++ b/entity/Object_entity/Object_entity.aod
@@ -210,7 +210,7 @@
       <dependency>
         <name>dependency</name>
         <entityName>Task_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
+        <fieldName>Tasks</fieldName>
       </dependency>
     </entityConsumer>
     <entityProvider>
diff --git a/entity/TaskAttendees_entity/TaskAttendees_entity.aod b/entity/TaskAttendees_entity/TaskAttendees_entity.aod
new file mode 100644
index 0000000000..f90bbf0355
--- /dev/null
+++ b/entity/TaskAttendees_entity/TaskAttendees_entity.aod
@@ -0,0 +1,163 @@
+<?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.21" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.21">
+  <name>TaskAttendees_entity</name>
+  <title>Attendee</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <titlePlural>Attendees</titlePlural>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityProvider>
+      <name>#PROVIDER_AGGREGATES</name>
+      <useAggregates v="true" />
+    </entityProvider>
+    <entityField>
+      <name>CONTACT_ID</name>
+      <title>Attendee</title>
+      <consumer>ContactEmployee</consumer>
+      <linkedContext>Person</linkedContext>
+      <displayValueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>TASKATTENDEESID</name>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>TASK_ID</name>
+      <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/task_id/valueProcess.js</valueProcess>
+    </entityField>
+    <entityProvider>
+      <name>TaskAttendee</name>
+    </entityProvider>
+    <entityField>
+      <name>grouptask</name>
+      <title>Grouptask</title>
+      <contentType>BOOLEAN</contentType>
+    </entityField>
+    <entityConsumer>
+      <name>ContactEmployee</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Employee_entity</entityName>
+        <fieldName>Employees</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityParameter>
+      <name>RowId_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>DEPARTMENT_ID</name>
+      <title>Department</title>
+      <consumer>Departments</consumer>
+      <displayValueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/department_id/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/TaskAttendees_entity/entityfields/department_id/onValidation.js</onValidation>
+    </entityField>
+    <entityConsumer>
+      <name>Departments</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Attribute_entity</entityName>
+        <fieldName>SpecificAttribute</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ParentId_param</name>
+          <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/departments/children/parentid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>DepartmentsOnly_param</name>
+      <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/departmentsonly_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>isDepartment</name>
+      <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/isdepartment/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/isdepartment/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>rowID</name>
+      <linkedContextProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/rowid/linkedContextProcess.js</linkedContextProcess>
+      <valueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/rowid/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/TaskAttendees_entity/entityfields/rowid/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityParameter>
+      <name>PersonsOnly_param</name>
+      <expose v="true" />
+    </entityParameter>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <conditionProcess>%aditoprj%/entity/TaskAttendees_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/TaskAttendees_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <alias>Data_alias</alias>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>TASKATTENDEESID.value</name>
+          <recordfield>TASKATTENDEES.TASKATTENDEESID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CONTACT_ID.value</name>
+          <recordfield>TASKATTENDEES.CONTACT_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TASK_ID.value</name>
+          <recordfield>TASKATTENDEES.TASK_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>TASKATTENDEES.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DEPARTMENT_ID.value</name>
+          <recordfield>TASKATTENDEES.DEPARTMENT_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>TASKATTENDEES.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>TASKATTENDEES.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>TASKATTENDEES.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CONTACT_ID.displayValue</name>
+          <expression>%aditoprj%/entity/TaskAttendees_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+      <linkInformation>
+        <linkInformation>
+          <name>9b7516a8-c092-418e-adba-547f85bcdc8c</name>
+          <tableName>TASKATTENDEES</tableName>
+          <primaryKey>TASKATTENDEESID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/TaskAttendees_entity/entityfields/contact_id/displayValueProcess.js b/entity/TaskAttendees_entity/entityfields/contact_id/displayValueProcess.js
new file mode 100644
index 0000000000..a286f7265d
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/contact_id/displayValueProcess.js
@@ -0,0 +1,8 @@
+import("Contact_lib");
+import("system.result");
+import("system.vars");
+
+
+var title = ContactUtils.getTitleByContactId(vars.get("$this.value"));
+                        
+result.string(title);
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/entityfields/date_edit/valueProcess.js b/entity/TaskAttendees_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000..de962129f9
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(vars.get("$sys.date"));
+}
+    
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/entityfields/date_new/valueProcess.js b/entity/TaskAttendees_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000..f4409f0d98
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,9 @@
+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/TaskAttendees_entity/entityfields/department_id/displayValueProcess.js b/entity/TaskAttendees_entity/entityfields/department_id/displayValueProcess.js
new file mode 100644
index 0000000000..e819f2e4f9
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/department_id/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("Attribute_lib");
+
+result.string(AttributeUtil.getFullAttributeName(vars.get("$field.DEPARTMENT_ID"), undefined, true, 1));
diff --git a/entity/TaskAttendees_entity/entityfields/department_id/onValidation.js b/entity/TaskAttendees_entity/entityfields/department_id/onValidation.js
new file mode 100644
index 0000000000..14756eaee0
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/department_id/onValidation.js
@@ -0,0 +1,13 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("system.tools");
+
+if (vars.get("$this.value"))
+{
+    var departmentUser = tools.getUsersByAttribute("department", [vars.get("this.value")], tools.PROFILE_DEFAULT);
+    if(departmentUser.length == 0)
+    {
+        result.string(translate.text("There are no valid employees in the department."));
+    }
+}
diff --git a/entity/TaskAttendees_entity/entityfields/departments/children/parentid_param/valueProcess.js b/entity/TaskAttendees_entity/entityfields/departments/children/parentid_param/valueProcess.js
new file mode 100644
index 0000000000..246beece1e
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/departments/children/parentid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("AttributeRegistry_basic");
+import("system.result");
+
+result.string($AttributeRegistry.departments());
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/entityfields/departmentsonly_param/valueProcess.js b/entity/TaskAttendees_entity/entityfields/departmentsonly_param/valueProcess.js
new file mode 100644
index 0000000000..850bb65bdd
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/departmentsonly_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string(false);
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/entityfields/isdepartment/displayValueProcess.js b/entity/TaskAttendees_entity/entityfields/isdepartment/displayValueProcess.js
new file mode 100644
index 0000000000..2569108c2a
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/isdepartment/displayValueProcess.js
@@ -0,0 +1,17 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Util_lib");
+
+let title;
+
+if (!Utils.toBoolean(vars.get("$this.value")))
+{
+    title =  translate.text("Department");
+} 
+else 
+{
+    title = translate.text("Contact");
+}
+    
+result.string(title);
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/entityfields/isdepartment/valueProcess.js b/entity/TaskAttendees_entity/entityfields/isdepartment/valueProcess.js
new file mode 100644
index 0000000000..ce61bc8720
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/isdepartment/valueProcess.js
@@ -0,0 +1,11 @@
+import("system.result");
+import("system.vars");
+
+if(!vars.get("$field.DEPARTMENT_ID"))
+{
+    result.string("1");
+}
+else if(!vars.get("$field.CONTACT_ID")) 
+{
+    result.string("0");
+}
diff --git a/entity/TaskAttendees_entity/entityfields/rowid/displayValueProcess.js b/entity/TaskAttendees_entity/entityfields/rowid/displayValueProcess.js
new file mode 100644
index 0000000000..f2643b0b06
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/rowid/displayValueProcess.js
@@ -0,0 +1,16 @@
+import("system.result");
+import("system.vars");
+import("Util_lib");
+
+let displayValue;
+
+if (!Utils.toBoolean(vars.get("$field.isDepartment")))
+{
+    displayValue =  vars.get("$field.DEPARTMENT_ID.displayValue");
+} 
+else 
+{
+    displayValue = vars.get("$field.CONTACT_ID.displayValue");
+}
+    
+result.string(displayValue);
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/entityfields/rowid/linkedContextProcess.js b/entity/TaskAttendees_entity/entityfields/rowid/linkedContextProcess.js
new file mode 100644
index 0000000000..cf7e835352
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/rowid/linkedContextProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("Util_lib");
+
+if (Utils.toBoolean(vars.get("$field.isDepartment")))
+{
+    result.string("Person");
+} 
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/entityfields/rowid/valueProcess.js b/entity/TaskAttendees_entity/entityfields/rowid/valueProcess.js
new file mode 100644
index 0000000000..ff915290e6
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/rowid/valueProcess.js
@@ -0,0 +1,16 @@
+import("system.result");
+import("system.vars");
+import("Util_lib");
+
+let id;
+
+if (!Utils.toBoolean(vars.get("$field.isDepartment")))
+{
+    id =  vars.get("$field.DEPARTMENT_ID");
+} 
+else 
+{
+    id = vars.get("$field.CONTACT_ID");
+}
+    
+result.string(id);
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/entityfields/task_id/valueProcess.js b/entity/TaskAttendees_entity/entityfields/task_id/valueProcess.js
new file mode 100644
index 0000000000..7d697e8b81
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/task_id/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.vars");
+
+if (vars.getString("$param.RowId_param") && !vars.get("$this.value"))
+{
+    result.string(vars.get("$param.RowId_param"));
+}
+    
diff --git a/entity/TaskAttendees_entity/entityfields/user_edit/valueProcess.js b/entity/TaskAttendees_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000..4f1799fbde
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/entityfields/user_new/valueProcess.js b/entity/TaskAttendees_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000..2003bc1a40
--- /dev/null
+++ b/entity/TaskAttendees_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.user"))
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/recordcontainers/db/conditionProcess.js b/entity/TaskAttendees_entity/recordcontainers/db/conditionProcess.js
new file mode 100644
index 0000000000..7649e4c646
--- /dev/null
+++ b/entity/TaskAttendees_entity/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,25 @@
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+import("Util_lib")
+
+var cond = newWhere()
+
+if (vars.get("$param.RowId_param"))
+{
+    cond.and("TASKATTENDEES.TASK_ID", vars.get("$param.RowId_param"));
+    
+    let departmentOnly = Utils.toBoolean(vars.get("$param.DepartmentsOnly_param"));
+    let personOnly = Utils.toBoolean(vars.get("$param.PersonsOnly_param"));
+    
+    if(departmentOnly && !personOnly)
+    {
+        cond.and("TASKATTENDEES.DEPARTMENT_ID is not null")
+        .and("TASKATTENDEES.DEPARTMENT_ID != ''");
+    }
+    else if (!departmentOnly && personOnly)
+    {
+        cond.and("TASKATTENDEES.DEPARTMENT_ID is null");
+    }
+}
+result.string(cond.toString());
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/recordcontainers/db/orderClauseProcess.js b/entity/TaskAttendees_entity/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000..217237a000
--- /dev/null
+++ b/entity/TaskAttendees_entity/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.db");
+
+result.object({"TASKATTENDEES.DEPARTMENT_ID": db.ASCENDING});
\ No newline at end of file
diff --git a/entity/TaskAttendees_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js b/entity/TaskAttendees_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js
new file mode 100644
index 0000000000..b4ccdc34f5
--- /dev/null
+++ b/entity/TaskAttendees_entity/recordcontainers/db/recordfieldmappings/contact_id.displayvalue/expression.js
@@ -0,0 +1,5 @@
+import("Contact_lib");
+import("system.result");
+import("Person_lib");
+
+result.string(ContactUtils.getResolvingDisplaySubSql("TASKATTENDEES.CONTACT_ID", false))
\ No newline at end of file
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 66ca5947da..5ed8cdb6fa 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -4,38 +4,24 @@
   <title>Task</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Task_entity/documentation.adoc</documentation>
+  <grantUpdate v="false" />
+  <grantUpdateProcess>%aditoprj%/entity/Task_entity/grantUpdateProcess.js</grantUpdateProcess>
   <grantDeleteProcess>%aditoprj%/entity/Task_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/Task_entity/contentTitleProcess.js</contentTitleProcess>
   <contentDescriptionProcess>%aditoprj%/entity/Task_entity/contentDescriptionProcess.js</contentDescriptionProcess>
   <afterUiInit>%aditoprj%/entity/Task_entity/afterUiInit.js</afterUiInit>
   <onValidation>%aditoprj%/entity/Task_entity/onValidation.js</onValidation>
+  <afterSave>%aditoprj%/entity/Task_entity/afterSave.js</afterSave>
   <initFilterProcess>%aditoprj%/entity/Task_entity/initFilterProcess.js</initFilterProcess>
   <iconId>VAADIN:TASKS</iconId>
   <iconIdProcess>%aditoprj%/entity/Task_entity/iconIdProcess.js</iconIdProcess>
   <titlePlural>Tasks</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
-    <entityActionGroup>
-      <name>observeActionGroup</name>
-      <children>
-        <entityActionField>
-          <name>observe</name>
-          <title>Observe</title>
-          <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js</onActionProcess>
-          <isObjectAction v="true" />
-          <iconId>VAADIN:EYE</iconId>
-          <stateProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/observe/stateProcess.js</stateProcess>
-          <titleProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/observe/titleProcess.js</titleProcess>
-        </entityActionField>
-        <entityActionField>
-          <name>cancelObservation</name>
-          <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
-          <iconId>VAADIN:EYE_SLASH</iconId>
-          <stateProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js</stateProcess>
-          <titleProcess>%aditoprj%/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js</titleProcess>
-        </entityActionField>
-      </children>
-    </entityActionGroup>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/Task_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
     <entityProvider>
       <name>#PROVIDER</name>
       <recordContainer>db</recordContainer>
@@ -44,6 +30,7 @@
       <name>SUBJECT</name>
       <title>subject</title>
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Task_entity/entityfields/subject/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>STATUS</name>
@@ -70,19 +57,10 @@
       <groupable v="true" />
       <linkedContext>Person</linkedContext>
       <mandatory v="true" />
+      <stateProcess>%aditoprj%/entity/Task_entity/entityfields/requestor_contact_id/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/requestor_contact_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js</displayValueProcess>
     </entityField>
-    <entityField>
-      <name>EDITOR_CONTACT_ID</name>
-      <title>{$TASK_EDITOR}</title>
-      <consumer>ContactEditors</consumer>
-      <groupable v="true" />
-      <linkedContext>Person</linkedContext>
-      <mandatory v="true" />
-      <valueProcess>%aditoprj%/entity/Task_entity/entityfields/editor_contact_id/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js</displayValueProcess>
-    </entityField>
     <entityField>
       <name>START_DATE</name>
       <title>Begin</title>
@@ -106,14 +84,14 @@
     <entityField>
       <name>DESCRIPTION</name>
       <title>description</title>
-      <contentType>LONG_TEXT</contentType>
+      <contentType>HTML</contentType>
+      <valueProcess>%aditoprj%/entity/Task_entity/entityfields/description/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>PROTECTIONLEVEL</name>
       <contentType>BOOLEAN</contentType>
       <contentTypeProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/contentTypeProcess.js</contentTypeProcess>
       <titleProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/titleProcess.js</titleProcess>
-      <valueProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>TASKID</name>
@@ -128,6 +106,12 @@
         <entityName>Employee_entity</entityName>
         <fieldName>Employees</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>OnlyActives_param</name>
+          <valueProcess>%aditoprj%/entity/Task_entity/entityfields/contacteditors/children/onlyactives_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityConsumer>
       <name>ContactRequestors</name>
@@ -136,6 +120,12 @@
         <entityName>Employee_entity</entityName>
         <fieldName>Employees</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>OnlyActives_param</name>
+          <valueProcess>%aditoprj%/entity/Task_entity/entityfields/contactrequestors/children/onlyactives_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityConsumer>
       <name>MainDocuments</name>
@@ -167,7 +157,7 @@
         <entityParameter>
           <name>ContainerName_param</name>
           <valueProcess>%aditoprj%/entity/Task_entity/entityfields/keywordstates/children/containername_param/valueProcess.js</valueProcess>
-          <expose v="false" />
+          <expose v="true" />
         </entityParameter>
         <entityParameter>
           <name>WhitelistIds_param</name>
@@ -215,21 +205,6 @@
       <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
-    <entityActionField>
-      <name>newActivity</name>
-      <title>New activity</title>
-      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:HOURGLASS_END</iconId>
-      <tooltip>New activity</tooltip>
-      <tooltipProcess>%aditoprj%/entity/Task_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess>
-    </entityActionField>
-    <entityActionField>
-      <name>newTask</name>
-      <title>New task</title>
-      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
-      <actionOrder v="1" />
-      <iconId>VAADIN:TASKS</iconId>
-    </entityActionField>
     <entityParameter>
       <name>RowId_param</name>
       <expose v="true" />
@@ -253,15 +228,14 @@
           <valueProcess>%aditoprj%/entity/Task_entity/entityfields/keywordpriorities/children/containername_param/valueProcess.js</valueProcess>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>ExcludedKeyIdsSubquery_param</name>
+        </entityParameter>
+        <entityParameter>
+          <name>OnlyActives_param</name>
+        </entityParameter>
       </children>
     </entityConsumer>
-    <entityActionField>
-      <name>newOffer</name>
-      <title>New offer</title>
-      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newoffer/onActionProcess.js</onActionProcess>
-      <actionOrder v="0" />
-      <iconId>VAADIN:CART</iconId>
-    </entityActionField>
     <entityField>
       <name>PROGRESS</name>
       <title>Progress</title>
@@ -331,12 +305,6 @@
       <documentation>%aditoprj%/entity/Task_entity/entityfields/presetlinks_param/documentation.adoc</documentation>
       <description>PARAMETER</description>
     </entityParameter>
-    <entityField>
-      <name>SUBJECT_DETAILS</name>
-      <title>subject</title>
-      <linkedContext>Task</linkedContext>
-      <valueProcess>%aditoprj%/entity/Task_entity/entityfields/subject_details/valueProcess.js</valueProcess>
-    </entityField>
     <entityParameter>
       <name>FilterOnlyOwnTask_param</name>
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/filteronlyowntask_param/valueProcess.js</valueProcess>
@@ -387,19 +355,6 @@
       <name>TYPE</name>
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/type/valueProcess.js</valueProcess>
     </entityField>
-    <entityActionField>
-      <name>newSupportticket</name>
-      <title>New Support ticket</title>
-      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:CHAT</iconId>
-    </entityActionField>
-    <entityActionField>
-      <name>openAdminView</name>
-      <title>Open admin view</title>
-      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:CURLY_BRACKETS</iconId>
-      <stateProcess>%aditoprj%/entity/Task_entity/entityfields/openadminview/stateProcess.js</stateProcess>
-    </entityActionField>
     <entityField>
       <name>COUNT</name>
       <title>Count</title>
@@ -450,11 +405,206 @@
     </entityField>
     <entityField>
       <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/Task_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>TaskAttendeesMulti</name>
+      <state>EDITABLE</state>
+      <onValidation>%aditoprj%/entity/Task_entity/entityfields/taskattendeesmulti/onValidation.js</onValidation>
+      <dependency>
+        <name>dependency</name>
+        <entityName>TaskAttendees_entity</entityName>
+        <fieldName>TaskAttendee</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>RowId_param</name>
+          <valueProcess>%aditoprj%/entity/Task_entity/entityfields/taskattendeesmulti/children/rowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>PersonsOnly_param</name>
+          <valueProcess>%aditoprj%/entity/Task_entity/entityfields/taskattendeesmulti/children/personsonly_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Departments</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Attribute_entity</entityName>
+        <fieldName>SpecificAttribute</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ParentId_param</name>
+          <valueProcess>%aditoprj%/entity/Task_entity/entityfields/departments/children/parentid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>TaskDepartmentsMulti</name>
+      <onValidation>%aditoprj%/entity/Task_entity/entityfields/taskdepartmentsmulti/onValidation.js</onValidation>
+      <dependency>
+        <name>dependency</name>
+        <entityName>TaskAttendees_entity</entityName>
+        <fieldName>TaskAttendee</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>RowId_param</name>
+          <valueProcess>%aditoprj%/entity/Task_entity/entityfields/taskdepartmentsmulti/children/rowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>DepartmentsOnly_param</name>
+          <valueProcess>%aditoprj%/entity/Task_entity/entityfields/taskdepartmentsmulti/children/departmentsonly_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>dashletFilter_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityField>
+      <name>startDate_Day</name>
+      <title>Begin</title>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
+      <inputFormat>dd.MM.yyyy</inputFormat>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>maturityDate_Day</name>
+      <title>Maturity</title>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
+      <inputFormat>dd.MM.yyyy</inputFormat>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>connections</name>
+      <title>Verknüpfungen</title>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Task_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Task_entity/entityfields/user_edit/valueProcess.js</valueProcess>
     </entityField>
+    <entityField>
+      <name>allAttendeesFilter</name>
+      <title>{$TASK_EDITOR}</title>
+    </entityField>
+    <entityField>
+      <name>createSingleTasks</name>
+      <title>Einzelaufgaben erstellen</title>
+      <contentType>BOOLEAN</contentType>
+      <stateProcess>%aditoprj%/entity/Task_entity/entityfields/createsingletasks/stateProcess.js</stateProcess>
+    </entityField>
+    <entityParameter>
+      <name>Description_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityParameter>
+      <name>Subject_param</name>
+      <expose v="true" />
+    </entityParameter>
+    <entityConsumer>
+      <name>AllTaskAttendees</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>TaskAttendees_entity</entityName>
+        <fieldName>TaskAttendee</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>RowId_param</name>
+          <valueProcess>%aditoprj%/entity/Task_entity/entityfields/alltaskattendees/children/rowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityActionGroup>
+      <name>filterActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>setComplete</name>
+          <title>Erledigt setzen</title>
+          <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/onActionProcess.js</onActionProcess>
+          <isObjectAction v="false" />
+          <selectionType>MULTI</selectionType>
+          <iconId>NEON:MQL</iconId>
+          <state>DISABLED</state>
+          <stateProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js</stateProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>observe</name>
+          <title>Observe</title>
+          <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/observe/onActionProcess.js</onActionProcess>
+          <isObjectAction v="true" />
+          <iconId>VAADIN:EYE</iconId>
+          <stateProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/observe/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/observe/titleProcess.js</titleProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>cancelObservation</name>
+          <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:EYE_SLASH</iconId>
+          <stateProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/stateProcess.js</stateProcess>
+          <titleProcess>%aditoprj%/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/titleProcess.js</titleProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityActionField>
+      <name>newActivity</name>
+      <title>New activity</title>
+      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:HOURGLASS_END</iconId>
+      <tooltip>New activity</tooltip>
+      <tooltipProcess>%aditoprj%/entity/Task_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>newTask</name>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <actionOrder v="1" />
+      <iconId>VAADIN:TASKS</iconId>
+      <state>INVISIBLE</state>
+    </entityActionField>
+    <entityActionField>
+      <name>setCompletePreview</name>
+      <title>Erledigt setzen</title>
+      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/setcompletepreview/onActionProcess.js</onActionProcess>
+      <iconId>NEON:MQL</iconId>
+      <state>DISABLED</state>
+      <stateProcess>%aditoprj%/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js</stateProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>newSupportticket</name>
+      <title>New Support ticket</title>
+      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CHAT</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>newOffer</name>
+      <title>New offer</title>
+      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newoffer/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CHART</iconId>
+    </entityActionField>
+    <entityActionField>
+      <name>openAdminView</name>
+      <title>Open admin view</title>
+      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/openadminview/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CURLY_BRACKETS</iconId>
+      <stateProcess>%aditoprj%/entity/Task_entity/entityfields/openadminview/stateProcess.js</stateProcess>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
+      <fromClauseProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBInsert>%aditoprj%/entity/Task_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
@@ -468,17 +618,10 @@
           <isFilterable v="true" />
           <isLookupFilter v="false" />
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>EDITOR_CONTACT_ID.value</name>
-          <recordfield>TASK.EDITOR_CONTACT_ID</recordfield>
-          <isFilterable v="true" />
-          <isLookupFilter v="false" />
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>MATURITY_DATE.value</name>
           <recordfield>TASK.MATURITY_DATE</recordfield>
           <isFilterable v="true" />
-          <isLookupFilter v="false" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>PRIORITY.value</name>
@@ -490,7 +633,6 @@
           <name>PROTECTIONLEVEL.value</name>
           <recordfield>TASK.PROTECTIONLEVEL</recordfield>
           <isFilterable v="true" />
-          <isLookupFilter v="false" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>REQUESTOR_CONTACT_ID.value</name>
@@ -520,10 +662,6 @@
           <name>TASKID.value</name>
           <recordfield>TASK.TASKID</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>EDITOR_CONTACT_ID.displayValue</name>
-          <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>REQUESTOR_CONTACT_ID.displayValue</name>
           <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_contact_id.displayvalue/expression.js</expression>
@@ -564,6 +702,38 @@
           <recordfield>TASK.TASKID</recordfield>
           <aggregateType>COUNT</aggregateType>
         </aggregateFieldDbMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>TASK.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>startDate_Day.value</name>
+          <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/startdate_day.value/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>maturityDate_Day.value</name>
+          <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/maturitydate_day.value/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>connections.value</name>
+          <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/connections.value/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>TASK.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>TASK.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>TASK.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>allAttendeesFilter.displayValue</name>
+          <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/allattendeesfilter.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
       <linkInformation>
         <linkInformation>
@@ -574,6 +744,24 @@
           <readonly v="false" />
         </linkInformation>
       </linkInformation>
+      <filterExtensions>
+        <filterExtension>
+          <name>Attendees</name>
+          <title>Attendee</title>
+          <contentType>TEXT</contentType>
+          <filterValuesProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterValuesProcess.js</filterValuesProcess>
+          <filterConditionProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterConditionProcess.js</filterConditionProcess>
+          <filtertype>BASIC</filtertype>
+        </filterExtension>
+        <filterExtension>
+          <name>Department</name>
+          <title>Department</title>
+          <contentType>TEXT</contentType>
+          <filterValuesProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/filterextensions/department/filterValuesProcess.js</filterValuesProcess>
+          <filterConditionProcess>%aditoprj%/entity/Task_entity/recordcontainers/db/filterextensions/department/filterConditionProcess.js</filterConditionProcess>
+          <filtertype>BASIC</filtertype>
+        </filterExtension>
+      </filterExtensions>
     </dbRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/Task_entity/afterSave.js b/entity/Task_entity/afterSave.js
new file mode 100644
index 0000000000..267d8e8163
--- /dev/null
+++ b/entity/Task_entity/afterSave.js
@@ -0,0 +1,192 @@
+import("Workflow_lib");
+import("Attribute_lib");
+import("system.tools");
+import("system.db");
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+import("system.util");
+import("Employee_lib");
+
+var data = vars.get("$local.entitydata")
+
+var contactIds = newSelect("CONTACT_ID")
+.from("TASKATTENDEES")
+.where("TASKATTENDEES.TASK_ID", data["TASKID"])
+.arrayColumn();
+
+var avaiableAttendees = contactIds;
+
+if(contactIds.length > 0)
+    var contactIdsAvaiable = contactIds[0].length > 0;
+
+var departmentIds = newSelect("DEPARTMENT_ID")
+.from("TASKATTENDEES")
+.where("TASKATTENDEES.TASK_ID", data["TASKID"])
+.and("TASKATTENDEES.DEPARTMENT_ID is not null")
+.arrayColumn();
+
+
+var departmentUser = tools.getUsersByAttribute("department", departmentIds, tools.PROFILE_DEFAULT)
+
+var departmentUserConId;
+
+for(let i = 0; i < departmentUser.length; i++) 
+{
+
+    if(contactIds[0] == "") 
+    {
+     contactIds.shift()   
+    }
+    
+    departmentUserConId = departmentUser[i][tools.PARAMS][tools.CONTACTID];
+   
+    contactIds = contactIds.concat(departmentUserConId)
+
+}
+
+//delete empty contactIds
+contactIds = contactIds.filter(function(curr) 
+{
+return curr != "";
+});
+
+var taskLink = newSelect("OBJECT_TYPE, OBJECT_ROWID")
+.from("TASKLINK")
+.where("TASKLINK.TASK_ID", data["TASKID"])
+.table();
+
+var colsAttendees = [
+    "TASKATTENDEESID",
+    "TASK_ID",
+    "CONTACT_ID"
+    ]
+
+if(data["createSingleTasks"] == 1 && vars.get("$local.recordstate") == "NEW" && contactIds.length > 0) 
+{
+    
+    //remove duplicates in contactIds
+    contactIds = Array.from(new Set(contactIds));
+    
+    var colsTask = [
+    "TASKID",
+    "KIND",
+    "SUBJECT",
+    "DESCRIPTION",
+    "START_DATE",
+    "MATURITY_DATE",
+    "STATUS",
+    "PROGRESS",
+    "PRIORITY",
+    "REQUESTOR_CONTACT_ID",
+    "USER_NEW"
+    ];
+    
+    var colsLink = [
+    "TASKLINKID",
+    "TASK_ID",
+    "OBJECT_TYPE",
+    "OBJECT_ROWID"
+    ]
+
+    for(let i = 1; i < contactIds.length; i++) {
+        
+        var uuidTask = util.getNewUUID();
+        var uuidAttendees = util.getNewUUID();
+        
+        var valsAttendees = [
+        uuidAttendees,
+        uuidTask,
+        contactIds[i]
+        ]
+        
+        var valsTask = [
+        uuidTask,
+        vars.get("$field.TYPE"),
+        vars.get("$field.SUBJECT"),
+        vars.get("$field.DESCRIPTION"),
+        vars.get("$field.START_DATE"),
+        vars.get("$field.MATURITY_DATE"),
+        vars.get("$field.STATUS"),
+        vars.get("$field.PROGRESS"),
+        vars.get("$field.PRIORITY"),
+        vars.get("$field.REQUESTOR_CONTACT_ID"),
+        vars.get("$field.USER_NEW")
+        ];
+        
+        
+        for(let j = 0; j < taskLink.length; j++) {
+                    
+            var uuidLink = util.getNewUUID();
+
+            var valsLink = [
+            uuidLink,
+            uuidTask,
+            taskLink[j][0],
+            taskLink[j][1]
+            ]
+           
+            db.insertData("TASKLINK", colsLink, null, valsLink)   
+        }   
+        
+        
+        var condAttendees = "TASK_ID = '" + data["TASKID"] + "' and CONTACT_ID = '" + contactIds[i] + "'"
+        
+        db.insertData("TASK", colsTask, null, valsTask);
+        
+        if(avaiableAttendees.includes(contactIds[i]))
+            db.updateData("TASKATTENDEES", ["TASK_ID"], null, [uuidTask], condAttendees);
+        else db.insertData("TASKATTENDEES", colsAttendees, null, valsAttendees)
+    }
+
+    if(departmentIds.length > 0 && !contactIdsAvaiable) {
+
+        let departmentsAttendees = newSelect("TASKATTENDEES.TASKATTENDEESID")
+        .from("TASKATTENDEES")
+        .where("TASKATTENDEES.TASK_ID", data["TASKID"])
+        .and("TASKATTENDEES.DEPARTMENT_ID is not null")
+        .cell();
+        
+        newWhere("TASKATTENDEES.TASK_ID", data["TASKID"]).and("TASKATTENDEES.DEPARTMENT_ID is not null")
+        .and("TASKATTENDEES.TASKATTENDEESID", departmentsAttendees, SqlBuilder.NOT_EQUAL()).deleteData()
+        
+        db.updateData("TASKATTENDEES", ["DEPARTMENT_ID", "CONTACT_ID"], null, ["", contactIds[0]], "TASK_ID = '" + data["TASKID"] 
+            + "' and DEPARTMENT_ID is not null")
+        
+    } 
+    else if(departmentIds.length > 0 && contactIdsAvaiable) {
+
+        newWhere("TASKATTENDEES.TASK_ID", data["TASKID"]).and("TASKATTENDEES.DEPARTMENT_ID is not null")
+        .or("TASKATTENDEES.TASK_ID", data["TASKID"]).and("TASKATTENDEES.CONTACT_ID is null").deleteData();
+
+    }
+    
+    //delete useless attendees
+    for(let i = 0; i < contactIds.length; i++) {
+        var countAttendee = newSelect("count(*), TASKATTENDEES.TASKATTENDEESID")
+        .from("TASKATTENDEES")
+        .where("TASKATTENDEES.TASK_ID", data["TASKID"])
+        .and("TASKATTENDEES.CONTACT_ID", contactIds[i])
+        .groupBy("TASKATTENDEES.TASKATTENDEESID")
+        .table();
+        
+        if(countAttendee[0]) {
+            if(countAttendee[0][0] > 1)
+            newWhere("TASKATTENDEES.TASK_ID", data["TASKID"]).and("TASKATTENDEES.TASKATTENDEESID", countAttendee[0][1]).deleteData();
+        }
+        
+    }
+    
+} 
+//in case no Attendee is selected, create new Attendee with current user
+else if(vars.get("$local.recordstate") == "NEW" && contactIds.length == 0) {
+    
+    uuidAttendees = util.getNewUUID();
+    valsAttendees = [
+        uuidAttendees,
+        data["TASKID"],
+        EmployeeUtils.getCurrentContactId()
+    ]
+    
+    db.insertData("TASKATTENDEES", colsAttendees, null, valsAttendees)
+}
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/alltaskattendees/children/rowid_param/valueProcess.js b/entity/Task_entity/entityfields/alltaskattendees/children/rowid_param/valueProcess.js
new file mode 100644
index 0000000000..cf73f1e2a3
--- /dev/null
+++ b/entity/Task_entity/entityfields/alltaskattendees/children/rowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.TASKID"));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/contacteditors/children/onlyactives_param/valueProcess.js b/entity/Task_entity/entityfields/contacteditors/children/onlyactives_param/valueProcess.js
new file mode 100644
index 0000000000..70aefbf842
--- /dev/null
+++ b/entity/Task_entity/entityfields/contacteditors/children/onlyactives_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string(true)
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/contactrequestors/children/onlyactives_param/valueProcess.js b/entity/Task_entity/entityfields/contactrequestors/children/onlyactives_param/valueProcess.js
new file mode 100644
index 0000000000..70aefbf842
--- /dev/null
+++ b/entity/Task_entity/entityfields/contactrequestors/children/onlyactives_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string(true)
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/createsingletasks/stateProcess.js b/entity/Task_entity/entityfields/createsingletasks/stateProcess.js
new file mode 100644
index 0000000000..295d32c8ec
--- /dev/null
+++ b/entity/Task_entity/entityfields/createsingletasks/stateProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/date_edit/valueProcess.js b/entity/Task_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000..c636b6eb77
--- /dev/null
+++ b/entity/Task_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/date_new/valueProcess.js b/entity/Task_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000..e4dccadcce
--- /dev/null
+++ b/entity/Task_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,6 @@
+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/Task_entity/entityfields/departments/children/parentid_param/valueProcess.js b/entity/Task_entity/entityfields/departments/children/parentid_param/valueProcess.js
new file mode 100644
index 0000000000..246beece1e
--- /dev/null
+++ b/entity/Task_entity/entityfields/departments/children/parentid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("AttributeRegistry_basic");
+import("system.result");
+
+result.string($AttributeRegistry.departments());
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/description/valueProcess.js b/entity/Task_entity/entityfields/description/valueProcess.js
new file mode 100644
index 0000000000..acce89a591
--- /dev/null
+++ b/entity/Task_entity/entityfields/description/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.vars");
+
+let param = vars.get("$param.Description_param");
+
+if (!vars.get("$this.value") && param)
+{
+    result.string(param);
+}
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js b/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js
deleted file mode 100644
index ad1d3c7d63..0000000000
--- a/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Contact_lib");
-
-var id = vars.get("$field.EDITOR_CONTACT_ID");
-//show the simpel title since this will be later an employee-entry and therefore no organisation is needed
-var title = ContactUtils.getTitleByContactId(id);
-result.string(title);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/editor_contact_id/valueProcess.js b/entity/Task_entity/entityfields/editor_contact_id/valueProcess.js
deleted file mode 100644
index 4cc8f2bb8a..0000000000
--- a/entity/Task_entity/entityfields/editor_contact_id/valueProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-import("Employee_lib");
-
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
-    result.string(EmployeeUtils.getCurrentContactId());
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/onActionProcess.js
similarity index 100%
rename from entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/onActionProcess.js
rename to entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/onActionProcess.js
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/stateProcess.js
similarity index 100%
rename from entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/stateProcess.js
rename to entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/stateProcess.js
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/titleProcess.js
similarity index 100%
rename from entity/Task_entity/entityfields/observeactiongroup/children/cancelobservation/titleProcess.js
rename to entity/Task_entity/entityfields/filteractiongroup/children/cancelobservation/titleProcess.js
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/observe/onActionProcess.js
similarity index 100%
rename from entity/Task_entity/entityfields/observeactiongroup/children/observe/onActionProcess.js
rename to entity/Task_entity/entityfields/filteractiongroup/children/observe/onActionProcess.js
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/observe/stateProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/observe/stateProcess.js
similarity index 100%
rename from entity/Task_entity/entityfields/observeactiongroup/children/observe/stateProcess.js
rename to entity/Task_entity/entityfields/filteractiongroup/children/observe/stateProcess.js
diff --git a/entity/Task_entity/entityfields/observeactiongroup/children/observe/titleProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/observe/titleProcess.js
similarity index 100%
rename from entity/Task_entity/entityfields/observeactiongroup/children/observe/titleProcess.js
rename to entity/Task_entity/entityfields/filteractiongroup/children/observe/titleProcess.js
diff --git a/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/onActionProcess.js b/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/onActionProcess.js
new file mode 100644
index 0000000000..3a57f271c6
--- /dev/null
+++ b/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/onActionProcess.js
@@ -0,0 +1,12 @@
+import("system.neon");
+import("Sql_lib");
+import("system.vars");
+import("system.db");
+import("KeywordRegistry_basic")
+
+var data = vars.get("$sys.selection")
+
+var cond = newWhere("TASK.TASKID", data, SqlBuilder.IN()).toString();
+db.updateData("TASK", ["STATUS"], null, [$KeywordRegistry.taskStatus$ended()], cond)
+
+neon.refreshAll()
\ 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
new file mode 100644
index 0000000000..e36de81867
--- /dev/null
+++ b/entity/Task_entity/entityfields/filteractiongroup/children/setcomplete/stateProcess.js
@@ -0,0 +1,42 @@
+import("system.neon");
+import("system.tools");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+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 taskAttendee = newSelect("distinct TASK_ID")
+.from("TASKATTENDEES")
+.where("TASKATTENDEES.CONTACT_ID", contactId)
+.or("TASKATTENDEES.DEPARTMENT_ID", departmentId)
+.arrayColumn();
+    
+var canEdit = false;
+var count = 0;
+    
+while(!canEdit && count < taskAttendee.length) {
+        
+    if(taskAttendee[count] == vars.get("$sys.selection"))
+        canEdit = true
+    count++;
+
+}
+
+var role = tools.hasAnyRole(vars.getString("$sys.user"), ["PROJECT_Abt_Verwaltung", "PROJECT_Abt_Geschaeftsleitung"])
+
+if(canEdit || vars.get("$field.REQUESTOR_CONTACT_ID") == contactId 
+    || vars.get("$field.USER_NEW") == vars.get("$sys.user") || role) {
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/icon_color/valueProcess.js b/entity/Task_entity/entityfields/icon_color/valueProcess.js
index f15523e724..1ad291c450 100644
--- a/entity/Task_entity/entityfields/icon_color/valueProcess.js
+++ b/entity/Task_entity/entityfields/icon_color/valueProcess.js
@@ -1,21 +1,26 @@
+import("ActivityTask_lib");
+import("system.result");
 import("system.vars");
 import("KeywordRegistry_basic");
-import("system.result");
 import("system.neon");
 
+var res;
+
 switch(vars.getString("$field.PRIORITY"))
 {
-    case $KeywordRegistry.taskPriority$none():
-        result.string(neon.PRIORITY_NONE_COLOR);
-        break;
-    case $KeywordRegistry.taskPriority$low():
-        result.string(neon.PRIORITY_LOW_COLOR);
+    case $KeywordRegistry.taskPriority$high():
+        res = neon.PRIORITY_HIGH_COLOR;
         break;
     case $KeywordRegistry.taskPriority$medium():
-        result.string(neon.PRIORITY_MEDIUM_COLOR);
+        res = neon.PRIORITY_MEDIUM_COLOR;
         break;
-    case $KeywordRegistry.taskPriority$high():
-        result.string(neon.PRIORITY_HIGH_COLOR);
+    case $KeywordRegistry.taskPriority$low():
+        res = neon.PRIORITY_LOW_COLOR;
+        break;
+    case $KeywordRegistry.taskPriority$none():
+    default:
+        res = neon.PRIORITY_NONE_COLOR;
         break;
 }
 
+result.string(res);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/newoffer/onActionProcess.js b/entity/Task_entity/entityfields/newoffer/onActionProcess.js
index 2a448a664b..54dd0674f3 100644
--- a/entity/Task_entity/entityfields/newoffer/onActionProcess.js
+++ b/entity/Task_entity/entityfields/newoffer/onActionProcess.js
@@ -3,13 +3,19 @@ import("system.vars");
 import("Offer_lib");
 
 var taskId = vars.get("$field.TASKID");
-var contactIds = [vars.get("$field.REQUESTOR_CONTACT_ID"), vars.get("$field.EDITOR_CONTACT_ID")];
+
+var contactIds = newSelect("TASKATTENDEES.CONTACT_ID")
+.from("TASKATTENDEES")
+.where("TASKATTENDEES.TASK_ID", vars.get("$field.TASKID"))
+.and("CONTACT_ID IS NOT NULL")
+.arrayColumn()
+.push(vars.get("$field.REQUESTOR_CONTACT_ID"));
 
 var links = newSelect("TASKLINK.OBJECT_TYPE, TASKLINK.OBJECT_ROWID")
-                                .from("TASKLINK")
-                                .where("TASKLINK.TASK_ID", vars.get("$field.TASKID"))
-                                .and("TASKLINK.OBJECT_TYPE", ["PrivatePerson", "Organisation", "Salesproject"], SqlBuilder.IN())
-                                .table();
+.from("TASKLINK")
+.where("TASKLINK.TASK_ID", vars.get("$field.TASKID"))
+.and("TASKLINK.OBJECT_TYPE", ["PrivatePerson", "Organisation", "Salesproject"], SqlBuilder.IN())
+.table();
 var organisationArray = [];
 var salesprojectId;
 for (var i = 0; i < links.length; i++) {
@@ -37,13 +43,13 @@ for (var i = 0; i < links.length; i++) {
 
 for (i = 0; i < organisationArray.length; i++) {
     var orgContacts = newSelect("CONTACT.CONTACTID")
-                                .from("CONTACT")
-                                .where("CONTACT.ORGANISATION_ID", newSelect("ORGANISATION.ORGANISATIONID")
-                                                                            .from("ORGANISATION")
-                                                                            .join("CONTACT", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID")
-                                                                            .where("CONTACT.CONTACTID", organisationArray[i])
-                                                                            .cell())
-                                .arrayColumn();
+    .from("CONTACT")
+    .where("CONTACT.ORGANISATION_ID", newSelect("ORGANISATION.ORGANISATIONID")
+        .from("ORGANISATION")
+        .join("CONTACT", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID")
+        .where("CONTACT.CONTACTID", organisationArray[i])
+        .cell())
+    .arrayColumn();
     contactIds = contactIds.concat(orgContacts);
 }
 
diff --git a/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js b/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js
index 500687bbf4..f5cf5b50ae 100644
--- a/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js
+++ b/entity/Task_entity/entityfields/newsupportticket/onActionProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
-import("ActivityTask_lib");
-import("Context_lib");
-import("Ticket_lib")
-
-TicketUtils.createNewTicket(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.TASKID"))
\ No newline at end of file
+import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
+import("Ticket_lib");
+
+TicketUtils.createNewTicket(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.TASKID"))
diff --git a/entity/Task_entity/entityfields/openadminview/onActionProcess.js b/entity/Task_entity/entityfields/openadminview/onActionProcess.js
index f665fe2dca..f7917e5b66 100644
--- a/entity/Task_entity/entityfields/openadminview/onActionProcess.js
+++ b/entity/Task_entity/entityfields/openadminview/onActionProcess.js
@@ -4,6 +4,5 @@ import("Context_lib");
 AdminViewUtils.open("TASKID", [
     ["PARENT_ID", vars.get("$field.PARENT_ID")],
     ["PARENT_CONTEXT", vars.get("$field.PARENT_CONTEXT")],
-    ["REQUESTOR_CONTACT_ID", vars.get("$field.REQUESTOR_CONTACT_ID")],
-    ["EDITOR_CONTACT_ID", vars.get("$field.EDITOR_CONTACT_ID")]
-]);
\ No newline at end of file
+    ["REQUESTOR_CONTACT_ID", vars.get("$field.REQUESTOR_CONTACT_ID")]
+])
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/priority/valueProcess.js b/entity/Task_entity/entityfields/priority/valueProcess.js
index ee23436dbb..2ec7098f6f 100644
--- a/entity/Task_entity/entityfields/priority/valueProcess.js
+++ b/entity/Task_entity/entityfields/priority/valueProcess.js
@@ -6,5 +6,5 @@ import("KeywordRegistry_basic");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
 {
-    result.string($KeywordRegistry.taskPriority$low());
+    result.string($KeywordRegistry.taskPriority$medium());
 }
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/priority_icon/valueProcess.js b/entity/Task_entity/entityfields/priority_icon/valueProcess.js
index 5dc868f879..8360591175 100644
--- a/entity/Task_entity/entityfields/priority_icon/valueProcess.js
+++ b/entity/Task_entity/entityfields/priority_icon/valueProcess.js
@@ -1,6 +1,25 @@
 import("system.vars");
-import("ActivityTask_lib");
-import("KeywordRegistry_basic");
 import("system.result");
+import("system.neon");
+import("system.datetime");
 
-result.string(TaskUtils.getStatusIcon(vars.getString("$field.STATUS")));
\ No newline at end of file
+var res;
+// The cast to date and than to long again is necessary to get no timezone problems.
+var maturityDate = datetime.toLong(datetime.toDate(vars.get("$field.maturityDate_Day"), "dd.MM.yyyy"), "dd.MM.yyyy")
+var start = datetime.toLong(datetime.toDate(vars.get("$field.startDate_Day"), "dd.MM.yyyy"), "dd.MM.yyyy")
+var today = datetime.today();
+
+if(maturityDate < today)
+{
+    res = "NEON:OVERDUE";
+}
+else if(start > today)
+{
+    res = "NEON:UNDUE";
+}
+else
+{
+    res = "NEON:DUE";
+}
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/protectionlevel/valueProcess.js b/entity/Task_entity/entityfields/protectionlevel/valueProcess.js
deleted file mode 100644
index 06be75dc39..0000000000
--- a/entity/Task_entity/entityfields/protectionlevel/valueProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.util");
-import("system.result");
-import("system.neon");
-import("system.vars");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
-    result.string("0");
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js b/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js
index a54eaa531b..8678427b7b 100644
--- a/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js
+++ b/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js
@@ -5,4 +5,5 @@ import("Contact_lib");
 var id = vars.get("$field.REQUESTOR_CONTACT_ID");
 //show the simpel title since this will be later an employee-entry and therefore no organisation is needed
 var title = ContactUtils.getTitleByContactId(id);
+                        
 result.string(title);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/requestor_contact_id/stateProcess.js b/entity/Task_entity/entityfields/requestor_contact_id/stateProcess.js
new file mode 100644
index 0000000000..85b94d6ee9
--- /dev/null
+++ b/entity/Task_entity/entityfields/requestor_contact_id/stateProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/setcompletepreview/onActionProcess.js b/entity/Task_entity/entityfields/setcompletepreview/onActionProcess.js
new file mode 100644
index 0000000000..3a57f271c6
--- /dev/null
+++ b/entity/Task_entity/entityfields/setcompletepreview/onActionProcess.js
@@ -0,0 +1,12 @@
+import("system.neon");
+import("Sql_lib");
+import("system.vars");
+import("system.db");
+import("KeywordRegistry_basic")
+
+var data = vars.get("$sys.selection")
+
+var cond = newWhere("TASK.TASKID", data, SqlBuilder.IN()).toString();
+db.updateData("TASK", ["STATUS"], null, [$KeywordRegistry.taskStatus$ended()], cond)
+
+neon.refreshAll()
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js b/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js
new file mode 100644
index 0000000000..325e6f20a9
--- /dev/null
+++ b/entity/Task_entity/entityfields/setcompletepreview/stateProcess.js
@@ -0,0 +1,45 @@
+import("system.project");
+import("system.neon");
+import("system.tools");
+import("system.result");
+import("system.vars");
+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 taskAttendee = newSelect("distinct TASK_ID")
+.from("TASKATTENDEES")
+.where("TASKATTENDEES.CONTACT_ID", contactId)
+.or("TASKATTENDEES.DEPARTMENT_ID", departmentId)
+.arrayColumn();
+    
+var canEdit = false;
+var count = 0;
+    
+while(!canEdit && count < taskAttendee.length) 
+{
+    if(taskAttendee[count] == vars.get("$sys.selection"))
+    {
+        canEdit = true 
+    }
+    
+    count++;
+}
+
+var role = tools.hasAnyRole(vars.getString("$sys.user"), ["INTERNAL_ADMINISTRATOR", "PROJECT_Inspector2"])
+
+if(canEdit || vars.get("$field.REQUESTOR_CONTACT_ID") == contactId 
+    || vars.get("$field.USER_NEW") == vars.get("$sys.user") || role) 
+{
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+}
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/subject/valueProcess.js b/entity/Task_entity/entityfields/subject/valueProcess.js
new file mode 100644
index 0000000000..9e9827a13f
--- /dev/null
+++ b/entity/Task_entity/entityfields/subject/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.vars");
+
+let param = vars.get("$param.Subject_param");
+
+if (!vars.get("$this.value") && param)
+{
+    result.string(param);
+}
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/subject_details/valueProcess.js b/entity/Task_entity/entityfields/subject_details/valueProcess.js
deleted file mode 100644
index 7d49329d94..0000000000
--- a/entity/Task_entity/entityfields/subject_details/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.vars");
-import("system.result");
-
-var responsible = vars.get("$field.EDITOR_CONTACT_ID.displayValue");
-result.string(vars.get("$field.SUBJECT") + (responsible ? " (" + responsible + ")" : ""));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/taskattendeesmulti/children/personsonly_param/valueProcess.js b/entity/Task_entity/entityfields/taskattendeesmulti/children/personsonly_param/valueProcess.js
new file mode 100644
index 0000000000..cda204045d
--- /dev/null
+++ b/entity/Task_entity/entityfields/taskattendeesmulti/children/personsonly_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string(true);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/taskattendeesmulti/children/rowid_param/valueProcess.js b/entity/Task_entity/entityfields/taskattendeesmulti/children/rowid_param/valueProcess.js
new file mode 100644
index 0000000000..1d60a52add
--- /dev/null
+++ b/entity/Task_entity/entityfields/taskattendeesmulti/children/rowid_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.vars");
+import("system.result");
+result.string(vars.get("$field.TASKID"));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/taskattendeesmulti/onValidation.js b/entity/Task_entity/entityfields/taskattendeesmulti/onValidation.js
new file mode 100644
index 0000000000..22dc9fc638
--- /dev/null
+++ b/entity/Task_entity/entityfields/taskattendeesmulti/onValidation.js
@@ -0,0 +1,25 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Entity_lib");
+
+// These references are required because this process is intended to be performed when a line changes
+vars.get("$field.TaskAttendeesMulti.insertedRows");
+vars.get("$field.TaskAttendeesMulti.changedRows");
+vars.get("$field.TaskAttendeesMulti.deletedRows");
+
+var contactRows = EntityConsumerRowsHelper.getCurrentConsumerRows("TaskAttendeesMulti", ["CONTACT_ID"]);
+var contactSet = new Set();
+var hasDuplicate = contactRows.some(function (row)
+{
+    var contacts = row["CONTACT_ID"].trim();
+    if (contactSet.has(contacts))
+        return true;
+    contactSet.add(contacts);
+    return false;
+});
+
+if (hasDuplicate)
+{
+    result.string(translate.text("Attendees cannot be assigned repeatedly!"));
+}
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/taskdepartmentsmulti/children/departmentsonly_param/valueProcess.js b/entity/Task_entity/entityfields/taskdepartmentsmulti/children/departmentsonly_param/valueProcess.js
new file mode 100644
index 0000000000..cda204045d
--- /dev/null
+++ b/entity/Task_entity/entityfields/taskdepartmentsmulti/children/departmentsonly_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string(true);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/taskdepartmentsmulti/children/rowid_param/valueProcess.js b/entity/Task_entity/entityfields/taskdepartmentsmulti/children/rowid_param/valueProcess.js
new file mode 100644
index 0000000000..1d60a52add
--- /dev/null
+++ b/entity/Task_entity/entityfields/taskdepartmentsmulti/children/rowid_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.vars");
+import("system.result");
+result.string(vars.get("$field.TASKID"));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/taskdepartmentsmulti/onValidation.js b/entity/Task_entity/entityfields/taskdepartmentsmulti/onValidation.js
new file mode 100644
index 0000000000..e222f367b4
--- /dev/null
+++ b/entity/Task_entity/entityfields/taskdepartmentsmulti/onValidation.js
@@ -0,0 +1,23 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Entity_lib");
+
+// These references are required because this process is intended to be performed when a line changes
+vars.get("$field.TaskDepartmentsMulti.insertedRows");
+vars.get("$field.TaskDepartmentsMulti.changedRows");
+vars.get("$field.TaskDepartmentsMulti.deletedRows");
+
+var departmentRows = EntityConsumerRowsHelper.getCurrentConsumerRows("TaskDepartmentsMulti", ["DEPARTMENT_ID"]);
+var departmentSet = new Set();
+var hasDuplicate = departmentRows.some(function (row)
+{
+    var departments = row["DEPARTMENT_ID"].trim();
+    if (departmentSet.has(departments))
+        return true;
+    departmentSet.add(departments);
+    return false;
+});
+
+if (hasDuplicate)
+    result.string(translate.text("Departments cannot be assigned repeatedly!"));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/user_edit/valueProcess.js b/entity/Task_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000..4f1799fbde
--- /dev/null
+++ b/entity/Task_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.getString("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/user_new/valueProcess.js b/entity/Task_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000..2003bc1a40
--- /dev/null
+++ b/entity/Task_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.user"))
\ No newline at end of file
diff --git a/entity/Task_entity/grantDeleteProcess.js b/entity/Task_entity/grantDeleteProcess.js
index 10e91522b8..269b40662f 100644
--- a/entity/Task_entity/grantDeleteProcess.js
+++ b/entity/Task_entity/grantDeleteProcess.js
@@ -1,10 +1,24 @@
+import("system.tools");
+import("Sql_lib");
 import("Context_lib");
 import("system.vars");
 import("system.result");
 import("Entity_lib");
+import("Employee_lib")
 
 var canDelete = new HasLinkedObjectTester()
-    .andNoEntityRows("Document_entity", "Documents", {AssignmentTable_param : "TASK", AssignmentRowId_param : vars.get("$field.TASKID")}) //Documents
+    .andNoEntityRows("Document_entity", "Documents", {
+    AssignmentTable_param : "TASK", 
+    AssignmentRowId_param : vars.get("$field.TASKID")
+    }) //Documents
     .validate();
 
+if(vars.get("$field.REQUESTOR_CONTACT_ID") != EmployeeUtils.getCurrentContactId() 
+    && canDelete 
+    && vars.get("$field.USER_NEW") != vars.get("$sys.user"))
+{
+    canDelete = false;
+}
+   
+
 result.string(canDelete);
\ No newline at end of file
diff --git a/entity/Task_entity/grantUpdateProcess.js b/entity/Task_entity/grantUpdateProcess.js
new file mode 100644
index 0000000000..3c0752cde8
--- /dev/null
+++ b/entity/Task_entity/grantUpdateProcess.js
@@ -0,0 +1,36 @@
+import("system.project");
+import("system.tools");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+import("Employee_lib");
+
+var contactId = EmployeeUtils.getCurrentContactId();
+
+var user = tools.getUser(vars.get("$sys.user"), tools.PROFILE_FULL);
+    
+var departmentId = user[tools.PARAMS].department;
+
+
+var taskAttendee = newSelect("distinct TASK_ID")
+.from("TASKATTENDEES")
+.where("TASKATTENDEES.CONTACT_ID", contactId)
+.or("TASKATTENDEES.DEPARTMENT_ID", departmentId)
+.arrayColumn();
+    
+var canEdit = false;
+var count = 0;
+    
+while(!canEdit && count < taskAttendee.length) 
+{
+    if(taskAttendee[count] == vars.get("$field.TASKID"))
+        canEdit = true
+    count++;
+}
+
+if(canEdit 
+    || vars.get("$field.REQUESTOR_CONTACT_ID") == contactId 
+    || vars.get("$field.USER_NEW") == vars.get("$sys.user")) 
+{
+    result.string(true);
+}
\ No newline at end of file
diff --git a/entity/Task_entity/iconIdProcess.js b/entity/Task_entity/iconIdProcess.js
index c7a5eb8867..0fd79e39de 100644
--- a/entity/Task_entity/iconIdProcess.js
+++ b/entity/Task_entity/iconIdProcess.js
@@ -9,4 +9,4 @@ var category = vars.getString("$field.PRIORITY");
 var keywordAttributes = KeywordUtils.getAttributeRelationsByKey(category, $KeywordRegistry.taskPriority());
 var icon = keywordAttributes.defaultAvatarRepresentation;
 
-result.string(icon || "VAADIN:TASKS");
\ No newline at end of file
+result.string(icon || "VAADIN:TASKS");
diff --git a/entity/Task_entity/initFilterProcess.js b/entity/Task_entity/initFilterProcess.js
index bfea2877c6..914bcc6d16 100644
--- a/entity/Task_entity/initFilterProcess.js
+++ b/entity/Task_entity/initFilterProcess.js
@@ -1,12 +1,25 @@
+import("Util_lib");
+import("Attribute_lib");
+import("Contact_lib");
+import("system.tools");
 import("system.result");
 import("Keyword_lib");
 import("KeywordRegistry_basic");
 import("system.neon");
 import("system.vars");
 
-if (vars.get("$sys.presentationmode") === neon.CONTEXT_PRESENTATIONMODE_FILTER) 
+
+if (vars.get("$sys.presentationmode") === neon.CONTEXT_PRESENTATIONMODE_FILTER 
+    && !vars.get("$param.RowId_param") 
+    || Utils.toBoolean(vars.get("$param.dashletFilter_param"))) 
 {
+    
+    var user = tools.getCurrentUser();
+    
+    var departmentAttrId = user[tools.PARAMS].department;
+    var currentUserId = user[tools.PARAMS][tools.CONTACTID];
     var statusEnded = $KeywordRegistry.taskStatus$ended();
+    
     var filter = {
         type: "group",
         operator: "AND",
@@ -17,8 +30,30 @@ if (vars.get("$sys.presentationmode") === neon.CONTEXT_PRESENTATIONMODE_FILTER)
             contenttype: "TEXT",
             key: statusEnded,
             value: KeywordUtils.getViewValue($KeywordRegistry.taskStatus(), statusEnded)
+        }, {
+            type: "group",
+            operator: "OR",
+            childs: []
         }]
     };
+   
+    filter.childs[1].childs.push({
+        type: "row",
+        name: "#EXTENSION.Attendees.Attendees#TEXT",
+        operator: "EQUAL",
+        contenttype: "TEXT",
+        key: currentUserId,
+        value: ContactUtils.getTitleByContactId(currentUserId)
+        
+    })
+    filter.childs[1].childs.push({
+        type: "row",
+        name: "#EXTENSION.Department.Department#TEXT",
+        operator: "EQUAL",
+        contenttype: "TEXT",
+        key: departmentAttrId,
+        value: AttributeUtil.getFullAttributeName(departmentAttrId)  
+    })
 
     result.string(JSON.stringify(filter));
 }
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/conditionProcess.js b/entity/Task_entity/recordcontainers/db/conditionProcess.js
index c74072623e..3316842813 100644
--- a/entity/Task_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Task_entity/recordcontainers/db/conditionProcess.js
@@ -1,3 +1,4 @@
+import("system.tools");
 import("Employee_lib");
 import("system.vars");
 import("system.db");
@@ -6,47 +7,40 @@ import("Sql_lib");
 import("KeywordRegistry_basic");
 
 var cond = newWhere("TASK.KIND", $KeywordRegistry.taskType$task())
-
-var loadNothing = false;
 var ownContactId = EmployeeUtils.getCurrentContactId();
+var user = tools.getUser(vars.get("$sys.user"), tools.PROFILE_FULL);
+var userDepartment = user[tools.PARAMS]["department"]
 
-if (vars.getString("$param.FilterOnlyOwnTask_param") == "true")
+if(userDepartment)
 {
-    if (ownContactId)
-        cond.andIfSet("TASK.EDITOR_CONTACT_ID", ownContactId);
-    else
-        loadNothing = true;
+    cond.and("TASK.TASKID", newSelect("TASKID")
+        .from("TASK")
+        .where("TASK.PROTECTIONLEVEL is null")
+        .or("TASK.PROTECTIONLEVEL = 0")
+        .or("TASK.TASKID", (newSelect("TASK_ID")
+            .from("TASKATTENDEES")
+            .where("TASKATTENDEES.CONTACT_ID", ownContactId)
+            .or("TASKATTENDEES.DEPARTMENT_ID", userDepartment)), SqlBuilder.IN())
+        .or("TASK.REQUESTOR_CONTACT_ID", ownContactId)
+        .or("TASK.USER_NEW", vars.get("$sys.user")), SqlBuilder.IN())
 }
-if (vars.exists("$param.RowId_param") && vars.get("$param.RowId_param") && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param"))
+else
 {
-    // TODO: more performant way than IN. Maybe a join?
-    cond.and("TASK.TASKID", newSelect("TASKLINK.TASK_ID")
-                                .from("TASKLINK")
-                                .where("TASKLINK.OBJECT_ROWID", "$param.RowId_param")
-                                .and("TASKLINK.OBJECT_TYPE", "$param.ObjectId_param")
-                            , SqlBuilder.IN());
+    cond.and(SqlBuilder.NORESULT_CONDITION())
 }
-cond.andIfSet("TASK.PARENT_ID", "$param.ParentId_param");
-cond.andIfSet("TASK.PARENT_CONTEXT", "$param.ParentContext_param");
 
-if (loadNothing)
+if (vars.exists("$param.AdditionalRowID_param") && vars.get("$param.AdditionalRowID_param") && vars.exists("$param.AdditionalObjectID_param") && vars.get("$param.AdditionalObjectID_param"))
 {
-    result.string(SqlBuilder.NORESULT_CONDITION());
+    cond.and("TASKLINK.OBJECT_ROWID", JSON.parse(vars.get("$param.AdditionalRowID_param")), SqlBuilder.IN())
+        .and("TASKLINK.OBJECT_TYPE", JSON.parse(vars.get("$param.AdditionalObjectID_param")), SqlBuilder.IN());
 }
-else
+else if (vars.exists("$param.RowId_param") && vars.get("$param.RowId_param") && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param"))
 {
-    //null has a special sql treatment, therefor check null and != 1
-    var protectionLevelCondition = newWhere("TASK.PROTECTIONLEVEL != 1 or TASK.PROTECTIONLEVEL is null");
-    if (ownContactId)
-    {
-        protectionLevelCondition.or(
-            newWhere("TASK.PROTECTIONLEVEL = 1")
-                .and(newWhere("TASK.EDITOR_CONTACT_ID", ownContactId)
-                          .or("TASK.REQUESTOR_CONTACT_ID", ownContactId)
-                )
-        );
-    }
-    cond.and(protectionLevelCondition);
-  
-    result.string(cond.toString());
-}
\ No newline at end of file
+    cond.and("TASKLINK.OBJECT_ROWID", "$param.RowId_param")
+        .and("TASKLINK.OBJECT_TYPE", "$param.ObjectId_param");
+}
+
+cond.andIfSet("TASK.PARENT_ID", "$param.ParentId_param");
+cond.andIfSet("TASK.PARENT_CONTEXT", "$param.ParentContext_param");
+
+result.string(cond.toString());
diff --git a/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterConditionProcess.js b/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterConditionProcess.js
new file mode 100644
index 0000000000..c4e8d7df50
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterConditionProcess.js
@@ -0,0 +1,40 @@
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+
+var rawvalue = vars.get("$local.rawvalue")
+var comparison = vars.get("$local.comparison")
+var sqlCond;
+var operator;
+
+switch(comparison) 
+{
+    case "EQUAL":
+        operator = SqlBuilder.IN();
+        break;
+    case "NOT_EQUAL":
+        operator = SqlBuilder.NOT_IN();
+        break;
+}
+
+sqlCond = newWhere("TASK.TASKID", 
+    newSelect("TASK_ID")
+    .from("TASKATTENDEES")
+    .where("TASKATTENDEES.CONTACT_ID", rawvalue), operator);
+        
+if(comparison == "ISNULL")
+{
+    sqlCond = newWhere("TASK.TASKID", 
+        newSelect("TASK_ID")
+        .from("TASKATTENDEES")
+        .where("TASKATTENDEES.CONTACT_ID is null"), SqlBuilder.IN());
+}
+else if(comparison == "ISNOTNULL")
+{
+    sqlCond = newWhere("TASK.TASKID", 
+        newSelect("TASK_ID")
+        .from("TASKATTENDEES")
+        .where("TASKATTENDEES.CONTACT_ID is not null"), SqlBuilder.IN());
+}
+
+result.string(sqlCond.toString());
diff --git a/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterValuesProcess.js b/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterValuesProcess.js
new file mode 100644
index 0000000000..2fd225d57b
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/filterextensions/attendees/filterValuesProcess.js
@@ -0,0 +1,21 @@
+import("system.tools");
+import("Sql_lib");
+import("system.result");
+import("Contact_lib");
+
+var filter = [];
+//var filterOrdered = [];
+var employees = tools.getUsersByAttribute(tools.ISACTIVE, ["true"], tools.PROFILE_DEFAULT);
+var contactIds = [];
+
+for(let i = 0; i < employees.length; i++) {
+    contactIds.push(employees[i][tools.PARAMS][tools.CONTACTID])
+}   
+
+filter = newSelect(["CONTACTID", new SqlMaskingUtils().concatWithSeparator(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"], " ")])
+.from("CONTACT")
+.join("PERSON", newWhere("PERSON.PERSONID = CONTACT.PERSON_ID"))
+.where("CONTACT.CONTACTID", contactIds, SqlBuilder.IN())
+.table();
+
+result.object(filter);
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/filterextensions/department/filterConditionProcess.js b/entity/Task_entity/recordcontainers/db/filterextensions/department/filterConditionProcess.js
new file mode 100644
index 0000000000..7168bcf291
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/filterextensions/department/filterConditionProcess.js
@@ -0,0 +1,43 @@
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+
+var rawvalue = vars.get("$local.rawvalue")
+var comparison = vars.get("$local.comparison")
+var sqlCond;
+var operator;
+
+switch(comparison) 
+{
+    case "EQUAL":
+        operator = SqlBuilder.IN();
+        break;
+    case "NOT_EQUAL":
+        operator = SqlBuilder.NOT_IN();
+        break;
+}
+
+var parentCount = newSelect("count(*)")
+.from("AB_ATTRIBUTE")
+.where("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", rawvalue)
+.cell()
+
+if(parentCount >= 1) 
+{
+    sqlCond = newWhere("TASK.TASKID", 
+        newSelect("TASKATTENDEES.TASK_ID")
+        .from("TASKATTENDEES")
+        .where("TASKATTENDEES.DEPARTMENT_ID", 
+            newSelect("AB_ATTRIBUTE.AB_ATTRIBUTEID")
+            .from("AB_ATTRIBUTE")
+            .where("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID",rawvalue), operator));
+} 
+else 
+{
+    sqlCond = newWhere("TASK.TASKID", 
+        newSelect("TASK_ID")
+        .from("TASKATTENDEES")
+        .where("TASKATTENDEES.DEPARTMENT_ID", rawvalue), operator);
+}
+
+result.string(sqlCond.toString());
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/filterextensions/department/filterValuesProcess.js b/entity/Task_entity/recordcontainers/db/filterextensions/department/filterValuesProcess.js
new file mode 100644
index 0000000000..1678bcb52f
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/filterextensions/department/filterValuesProcess.js
@@ -0,0 +1,14 @@
+import("system.entities");
+import("AttributeRegistry_basic");
+import("system.result");
+
+var loadingConfig = entities.createConfigForLoadingRows().entity("Attribute_entity")
+.provider("SpecificAttribute")
+.fields(["UID", "FULL_ATTRIBUTE_NAME"])
+.addParameter("ParentId_param", $AttributeRegistry.departments());
+
+var attributeRows = entities.getRows(loadingConfig);
+
+result.object(attributeRows.map(function (attributeRow) {
+    return [attributeRow["UID"], attributeRow["FULL_ATTRIBUTE_NAME"]]
+}));
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/fromClauseProcess.js b/entity/Task_entity/recordcontainers/db/fromClauseProcess.js
new file mode 100644
index 0000000000..83589697b4
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/fromClauseProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+
+let from = new SqlBuilder().from("TASK")
+
+if ((vars.exists("$param.AdditionalRowID_param") && vars.get("$param.AdditionalRowID_param") && vars.exists("$param.AdditionalObjectID_param") && vars.get("$param.AdditionalObjectID_param")) ||
+    vars.exists("$param.RowId_param") && vars.get("$param.RowId_param") && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param"))
+{
+    from.join("TASKLINK", newWhere("TASK.TASKID = TASKLINK.TASK_ID"));
+}
+    
+result.string(from.toString());
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/onDBDelete.js b/entity/Task_entity/recordcontainers/db/onDBDelete.js
index a59a05ae62..4c5d4c7591 100644
--- a/entity/Task_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Task_entity/recordcontainers/db/onDBDelete.js
@@ -2,5 +2,6 @@ import("Workflow_lib");
 import("Sql_lib");
 
 newWhere("TASKLINK.TASK_ID", "$field.TASKID").deleteData();
+newWhere("TASKATTENDEES.TASK_ID", "$field.TASKID").deleteData();
 
 WorkflowSignalSender.deleted();
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/allattendeesfilter.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/allattendeesfilter.displayvalue/expression.js
new file mode 100644
index 0000000000..4b299ecbce
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/allattendeesfilter.displayvalue/expression.js
@@ -0,0 +1,48 @@
+import("system.result");
+import("Person_lib");
+import("Sql_lib");
+import("system.SQLTYPES");
+
+var maskingUtils = new SqlMaskingUtils();
+var countAttendeesContact = newSelect(["COUNT(*)"])
+.from("TASKATTENDEES")
+.where("TASKATTENDEES.TASK_ID = TASK.TASKID")
+.and("TASKATTENDEES.CONTACT_ID is not null");
+
+var getAttendeeName = newSelect([maskingUtils.concatWithSeparator(["FIRSTNAME", "LASTNAME"])])
+.from("CONTACT")
+.join("PERSON", newWhere("CONTACT.PERSON_ID = PERSON.PERSONID"))
+.where("CONTACT.CONTACTID", 
+    newSelect([maskingUtils.max("CONTACT_ID")]) // Get only one Contact
+    .from("TASKATTENDEES")
+    .where("TASKATTENDEES.TASK_ID = TASK.TASKID")).toString();
+    
+getAttendeeName = "(" + getAttendeeName + ")";
+
+var getAttendeeDepartmentName = newSelect("ATTRIBUTE_NAME")
+.from("AB_ATTRIBUTE")
+.where("AB_ATTRIBUTE.AB_ATTRIBUTEID", 
+    newSelect([maskingUtils.max("DEPARTMENT_ID")]) // Get only one Department
+    .from("TASKATTENDEES")
+    .where("TASKATTENDEES.TASK_ID = TASK.TASKID")
+    .and("TASKATTENDEES.DEPARTMENT_ID is not null")).toString();
+
+getAttendeeDepartmentName = "(" + getAttendeeDepartmentName + ")";
+
+var countAttendeesDepartment = newSelect(["count(*)"])
+.from("TASKATTENDEES")
+.where("TASKATTENDEES.TASK_ID = TASK.TASKID")
+.and("TASKATTENDEES.DEPARTMENT_ID is not null");
+
+var caseWhen = SqlBuilder.caseWhen(countAttendeesContact, 1, SqlBuilder.GREATER(), SQLTYPES.INTEGER)
+                                .then(maskingUtils.concatWithSeparator([getAttendeeName, "'. . .'"]))
+                            .when(newWhere(countAttendeesContact, 1,SqlBuilder.EQUAL(), SQLTYPES.INTEGER)
+                                    .and(countAttendeesDepartment, 0, SqlBuilder.GREATER(), SQLTYPES.INTEGER))
+                                .then(maskingUtils.concatWithSeparator([getAttendeeName, "'. . .'"]))
+                            .when(countAttendeesContact, 1, SqlBuilder.EQUAL(), SQLTYPES.INTEGER)
+                                .then(getAttendeeName)
+                            .elseValue(
+                                SqlBuilder.caseWhen(countAttendeesDepartment, 1, SqlBuilder.EQUAL(), SQLTYPES.INTEGER)
+                                    .then(getAttendeeDepartmentName)
+                                .elseValue(maskingUtils.concatWithSeparator([getAttendeeDepartmentName.toString(), "'. . .'"])))
+result.string(caseWhen);
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/connections.value/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/connections.value/expression.js
new file mode 100644
index 0000000000..2047347c42
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/connections.value/expression.js
@@ -0,0 +1,12 @@
+import("system.result");
+import("Sql_lib");
+import("system.SQLTYPES");
+
+var count = newSelect(["COUNT(*)"]).from("TASKLINK").where("TASKLINK.TASK_ID = TASK.TASKID");
+
+result.string(
+    SqlBuilder.caseWhen(count, 0, SqlBuilder.GREATER(), SQLTYPES.INTEGER)
+    .then(
+        new SqlMaskingUtils().cast("(" + count.toString() + ")", SQLTYPES.CHAR, 2))
+    .elseString("")
+    .toString());
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js
deleted file mode 100644
index 8e7ea35c7f..0000000000
--- a/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("Person_lib");
-
-var subSql = PersUtils.getResolvingDisplaySubSql("TASK.EDITOR_CONTACT_ID");
-result.string(subSql);
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/maturitydate_day.value/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/maturitydate_day.value/expression.js
new file mode 100644
index 0000000000..e2374fe39c
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/maturitydate_day.value/expression.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string("cast(MATURITY_DATE as DATE)");
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_contact_id.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_contact_id.displayvalue/expression.js
index 6c6d6087a2..0454543183 100644
--- a/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_contact_id.displayvalue/expression.js
+++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_contact_id.displayvalue/expression.js
@@ -1,6 +1,8 @@
 import("system.result");
 import("Person_lib");
+import("Contact_lib");
 
 //TODO: try to find a better solution for this -> #TITLE-mechanic when available
 var subSql = PersUtils.getResolvingDisplaySubSql("TASK.REQUESTOR_CONTACT_ID");
-result.string(subSql);
\ No newline at end of file
+
+result.string(subSql);
diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/startdate_day.value/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/startdate_day.value/expression.js
new file mode 100644
index 0000000000..d79f6a600f
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/startdate_day.value/expression.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string("cast(START_DATE as DATE)");
\ No newline at end of file
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 13fce6618c..fdd7e1d874 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -12465,6 +12465,67 @@ Bitte Datumseingabe prüfen</value>
     <entry>
       <key>copy</key>
     </entry>
+    <entry>
+      <key>Attendees cannot be assigned repeatedly!</key>
+      <value>Teilnehmer können nicht mehrmals zugewiesen werden!</value>
+    </entry>
+    <entry>
+      <key>Departments cannot be assigned repeatedly!</key>
+      <value>Abteilungen können nicht mehrmals zugewiesen werden!</value>
+    </entry>
+    <entry>
+      <key>Appointments/Tasks</key>
+      <value>Aufgaben/Termine</value>
+    </entry>
+    <entry>
+      <key>All tasks that are not completed and assigned to me</key>
+      <value>Alle Aufgaben, die nicht abgeschlossen und mir zugeordnet sind</value>
+    </entry>
+    <entry>
+      <key>Open Admin View</key>
+      <value>Admin-Ansicht öffnen</value>
+    </entry>
+    <entry>
+      <key>Attendees</key>
+      <value>Bearbeiter</value>
+    </entry>
+    <entry>
+      <key>Verknüpfungen</key>
+    </entry>
+    <entry>
+      <key>Attendee</key>
+      <value>Bearbeiter</value>
+    </entry>
+    <entry>
+      <key>My Tasks</key>
+      <value>Meine Aufgaben</value>
+    </entry>
+    <entry>
+      <key>KeywordTest3</key>
+    </entry>
+    <entry>
+      <key>Task Attendees</key>
+      <value>Aufgaben Bearbeiter</value>
+    </entry>
+    <entry>
+      <key>KeywordTest4</key>
+    </entry>
+    <entry>
+      <key>KeywordTest5</key>
+    </entry>
+    <entry>
+      <key>Einzelaufgaben erstellen</key>
+    </entry>
+    <entry>
+      <key>Erledigt setzen</key>
+    </entry>
+    <entry>
+      <key>KeywordTest1</key>
+    </entry>
+    <entry>
+      <key>Grouptask</key>
+      <value>Guppenaufgabe</value>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonContext/Task/Task.aod b/neonContext/Task/Task.aod
index 2852eb6516..b96aacdb12 100644
--- a/neonContext/Task/Task.aod
+++ b/neonContext/Task/Task.aod
@@ -4,6 +4,7 @@
   <title>Task</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/neonContext/Task/documentation.adoc</documentation>
+  <icon>VAADIN:TASKS</icon>
   <mainView>TaskMain_view</mainView>
   <filterView>TaskFilter_view</filterView>
   <editView>TaskEdit_view</editView>
@@ -26,5 +27,17 @@
       <name>83309ef0-d1c0-4f74-bb44-41fd8e054b4b</name>
       <view>TaskMain_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>39e8b275-eb2a-447a-9d9b-c2bc3a080bb7</name>
+      <view>TaskMainAttendees_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>2f982d26-4d7b-4c9c-9123-60b786c3ecb8</name>
+      <view>TaskDescriptionMain_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>b75d2d2d-59a6-486a-8899-3a7a81f130df</name>
+      <view>TaskDrawer_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/TaskAttendees/TaskAttendees.aod b/neonContext/TaskAttendees/TaskAttendees.aod
new file mode 100644
index 0000000000..8afa93ceb8
--- /dev/null
+++ b/neonContext/TaskAttendees/TaskAttendees.aod
@@ -0,0 +1,29 @@
+<?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>TaskAttendees</name>
+  <title>Task Attendees</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>TaskAttendees_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>4ef4b596-03a6-44e5-922b-fe6daac371fe</name>
+      <view>TaskAttendeesMultiContactEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>5ea0b730-1be8-439c-965a-73d49249a767</name>
+      <view>TaskAttendeesMultiDepartmentEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>0d1a3c66-10cc-47dd-ad37-9d231ebb4672</name>
+      <view>TaskAttendeesFilterDepartment_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>ac56c8c7-9316-4cbf-8655-261f1e1c1fbd</name>
+      <view>TaskAttendeesFitlerContacts_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>62b56475-ebfc-4d22-a575-50c9aeaaa05d</name>
+      <view>TaskAttendeesPreviewList_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonDashboard/Home/Home.aod b/neonDashboard/Home/Home.aod
index 9290d02395..dfb2c2250e 100644
--- a/neonDashboard/Home/Home.aod
+++ b/neonDashboard/Home/Home.aod
@@ -34,7 +34,7 @@
     <neonDashlet>
       <name>MytasksDashlet</name>
       <viewName>TaskFilter_view</viewName>
-      <configName>mytasks</configName>
+      <configName>DashletConfig</configName>
       <uiConfiguration>
         <name>uiConfiguration</name>
         <xPos v="0" />
diff --git a/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod b/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod
index 436b9d871f..4dabb474a8 100644
--- a/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod
+++ b/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>OrganisationTaskAppointment_view</name>
-  <title>ToDo</title>
+  <title>Appointments/Tasks</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
     <boxLayout>
diff --git a/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod b/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod
index 02d235196c..57bffe7767 100644
--- a/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod
+++ b/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>PersonTaskAppointment_view</name>
-  <title>ToDo</title>
+  <title>Appointments/Tasks</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
     <boxLayout>
diff --git a/neonView/TaskAttendeesFilterDepartment_view/TaskAttendeesFilterDepartment_view.aod b/neonView/TaskAttendeesFilterDepartment_view/TaskAttendeesFilterDepartment_view.aod
new file mode 100644
index 0000000000..96b51b5c79
--- /dev/null
+++ b/neonView/TaskAttendeesFilterDepartment_view/TaskAttendeesFilterDepartment_view.aod
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>TaskAttendeesFilterDepartment_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <size>NORMAL</size>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>TableDep</name>
+      <isEditable v="false" />
+      <columns>
+        <neonTableColumn>
+          <name>9baa5cbf-032e-43ff-a33a-3bd44af41bce</name>
+          <entityField>DEPARTMENT_ID</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/TaskAttendeesFitlerContacts_view/TaskAttendeesFitlerContacts_view.aod b/neonView/TaskAttendeesFitlerContacts_view/TaskAttendeesFitlerContacts_view.aod
new file mode 100644
index 0000000000..2634e2b928
--- /dev/null
+++ b/neonView/TaskAttendeesFitlerContacts_view/TaskAttendeesFitlerContacts_view.aod
@@ -0,0 +1,22 @@
+<?xml version="1.0" 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>TaskAttendeesFitlerContacts_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>TableContacts</name>
+      <isEditable v="false" />
+      <columns>
+        <neonTableColumn>
+          <name>a08d9d8e-e445-4afc-b7a8-60bdefe0b931</name>
+          <entityField>CONTACT_ID</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/TaskAttendeesMultiContactEdit_view/TaskAttendeesMultiContactEdit_view.aod b/neonView/TaskAttendeesMultiContactEdit_view/TaskAttendeesMultiContactEdit_view.aod
new file mode 100644
index 0000000000..126c82ca03
--- /dev/null
+++ b/neonView/TaskAttendeesMultiContactEdit_view/TaskAttendeesMultiContactEdit_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>TaskAttendeesMultiContactEdit_view</name>
+  <title>Attendees</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+      <autoHeight v="true" />
+    </boxLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>GenericMultiple</name>
+      <title>Attendees</title>
+      <columns>
+        <neonGenericMultipleTableColumn>
+          <name>2c45d8f2-1784-489f-91b3-e13a65b62074</name>
+          <entityField>CONTACT_ID</entityField>
+          <fullWidth v="true" />
+        </neonGenericMultipleTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/TaskAttendeesMultiDepartmentEdit_view/TaskAttendeesMultiDepartmentEdit_view.aod b/neonView/TaskAttendeesMultiDepartmentEdit_view/TaskAttendeesMultiDepartmentEdit_view.aod
new file mode 100644
index 0000000000..09d8dfcf0f
--- /dev/null
+++ b/neonView/TaskAttendeesMultiDepartmentEdit_view/TaskAttendeesMultiDepartmentEdit_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>TaskAttendeesMultiDepartmentEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>GenericMultiple</name>
+      <title>Departments</title>
+      <devices>
+        <element>MOBILE</element>
+        <element>TABLET</element>
+        <element>DESKTOP</element>
+      </devices>
+      <columns>
+        <neonGenericMultipleTableColumn>
+          <name>11e2f756-b314-448a-b6d7-ec19bc9f1e94</name>
+          <entityField>DEPARTMENT_ID</entityField>
+          <fullWidth v="true" />
+        </neonGenericMultipleTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/TaskAttendeesPreviewList_view/TaskAttendeesPreviewList_view.aod b/neonView/TaskAttendeesPreviewList_view/TaskAttendeesPreviewList_view.aod
new file mode 100644
index 0000000000..e559d23dc7
--- /dev/null
+++ b/neonView/TaskAttendeesPreviewList_view/TaskAttendeesPreviewList_view.aod
@@ -0,0 +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>TaskAttendeesPreviewList_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <titledListViewTemplate>
+      <name>Title</name>
+      <isDeletable v="false" />
+      <isEditable v="false" />
+      <columns>
+        <neonTitledListTableColumn>
+          <name>3628e6a8-4861-4d9c-b18e-2e02a7335615</name>
+          <entityField>isDepartment</entityField>
+        </neonTitledListTableColumn>
+        <neonTitledListTableColumn>
+          <name>691ae449-f7fd-4e1a-9552-4afadcdf7e57</name>
+          <entityField>rowID</entityField>
+        </neonTitledListTableColumn>
+      </columns>
+    </titledListViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/TaskDescriptionMain_view/TaskDescriptionMain_view.aod b/neonView/TaskDescriptionMain_view/TaskDescriptionMain_view.aod
new file mode 100644
index 0000000000..ad315a1123
--- /dev/null
+++ b/neonView/TaskDescriptionMain_view/TaskDescriptionMain_view.aod
@@ -0,0 +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>TaskDescriptionMain_view</name>
+  <title>Description</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Description</name>
+      <showDrawer v="true" />
+      <drawerCaption>Description</drawerCaption>
+      <fixedDrawer v="true" />
+      <hideLabels v="true" />
+      <title>Description</title>
+      <fields>
+        <entityFieldLink>
+          <name>a1c63ef7-13bc-4bf7-b0a6-e1a0db38e82d</name>
+          <entityField>DESCRIPTION</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/TaskDrawer_view/TaskDrawer_view.aod b/neonView/TaskDrawer_view/TaskDrawer_view.aod
new file mode 100644
index 0000000000..cd8c1505a6
--- /dev/null
+++ b/neonView/TaskDrawer_view/TaskDrawer_view.aod
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>TaskDrawer_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <drawerLayout>
+      <name>layout</name>
+      <layoutCaption>Tasks</layoutCaption>
+    </drawerLayout>
+  </layout>
+  <children>
+    <neonViewReference>
+      <name>b087ccaa-02a0-4db9-86e6-c1f04a13a4b1</name>
+      <entityField>#ENTITY</entityField>
+      <view>TaskFilter_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/TaskEdit_view/TaskEdit_view.aod b/neonView/TaskEdit_view/TaskEdit_view.aod
index 2b71627deb..88f578ec22 100644
--- a/neonView/TaskEdit_view/TaskEdit_view.aod
+++ b/neonView/TaskEdit_view/TaskEdit_view.aod
@@ -1,7 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
   <name>TaskEdit_view</name>
+  <title>Task</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:TASKS</icon>
+  <quickEntry v="7" />
   <layout>
     <boxLayout>
       <name>layout</name>
@@ -41,20 +44,30 @@
           <name>0f600024-eb83-445c-8eb9-62bcf9e95313</name>
           <entityField>PRIORITY</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>71d2b122-1687-454a-ae60-7e68aa83106c</name>
-          <entityField>PROTECTIONLEVEL</entityField>
-        </entityFieldLink>
         <entityFieldLink>
           <name>fd41b0ee-cae4-40b5-8aad-45740f4d6268</name>
           <entityField>REQUESTOR_CONTACT_ID</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>8428cbf6-7df0-4f7e-b6d6-5ab17e266028</name>
-          <entityField>EDITOR_CONTACT_ID</entityField>
+          <name>c7cad5f4-9f3b-480a-805e-1f135284de40</name>
+          <entityField>PROTECTIONLEVEL</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>54ff8299-5c57-42be-9a2b-4fa474818b29</name>
+          <entityField>createSingleTasks</entityField>
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>9c74cc4c-307a-41a0-b44d-7d1fd61367a1</name>
+      <entityField>TaskAttendeesMulti</entityField>
+      <view>TaskAttendeesMultiContactEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>826658d1-627a-476b-bc24-28a80c3435ac</name>
+      <entityField>TaskDepartmentsMulti</entityField>
+      <view>TaskAttendeesMultiDepartmentEdit_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>ee35d86f-aef9-4ebd-b90a-d31b32cc3d5f</name>
       <entityField>Links</entityField>
diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod
index faced0e152..fdc4f0d16b 100644
--- a/neonView/TaskFilter_view/TaskFilter_view.aod
+++ b/neonView/TaskFilter_view/TaskFilter_view.aod
@@ -5,24 +5,16 @@
   <filterable v="true" />
   <dashletConfigurations>
     <neonDashletConfiguration>
-      <name>mytasks</name>
-      <title>My tasks</title>
-      <description>Tasks for which I am responsible</description>
-      <fragment>Task/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiJTVEFUVVMiLCJvcGVyYXRvciI6Ik5PVF9FUVVBTCIsInZhbHVlIjoiRU5ERUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwia2V5IjoiRU5ERUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwiY29udGVudHR5cGUiOiJURVhUIn1dfSXc</fragment>
-      <singleton v="true" />
-      <requiresConfiguration v="false" />
-      <storeRoles />
+      <name>DashletConfig</name>
+      <title>My Tasks</title>
+      <description>All tasks that are not completed and assigned to me</description>
+      <fragment>Task/filter</fragment>
+      <provider></provider>
       <icon>VAADIN:TASKS</icon>
-      <categories>
-        <neonDashletCategory>
-          <name>contactmanagement</name>
-          <title>Contact Management</title>
-        </neonDashletCategory>
-      </categories>
       <parameters>
         <neonDashletParameter>
-          <name>FilterOnlyOwnTask_param</name>
-          <value>true</value>
+          <name>dashletFilter_param</name>
+          <value>"true"</value>
         </neonDashletParameter>
       </parameters>
     </neonDashletConfiguration>
@@ -35,12 +27,13 @@
   <children>
     <timelineViewTemplate>
       <name>TasksTimeline</name>
-      <dateField>MATURITY_DATE</dateField>
-      <titleField>SUBJECT_DETAILS</titleField>
+      <dateField>maturityDate_Day</dateField>
+      <titleField>SUBJECT</titleField>
       <descriptionField>DESCRIPTION</descriptionField>
+      <subdescriptionField>allAttendeesFilter</subdescriptionField>
       <iconIdField>PRIORITY_ICON</iconIdField>
       <entityField>#ENTITY</entityField>
-      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
+      <favoriteActionGroup1>filterActionGroup</favoriteActionGroup1>
     </timelineViewTemplate>
     <tableViewTemplate>
       <name>TasksTable</name>
@@ -48,7 +41,7 @@
       <titleField>SUBJECT</titleField>
       <subtitleField>STATUS</subtitleField>
       <entityField>#ENTITY</entityField>
-      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
+      <favoriteActionGroup1>filterActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>SUBJECT</element>
       </linkedColumns>
@@ -71,21 +64,29 @@
           <entityField>REQUESTOR_CONTACT_ID</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>958132c8-386b-4e0a-900c-acf99e551791</name>
-          <entityField>EDITOR_CONTACT_ID</entityField>
+          <name>21c9e02e-d7ae-4d0a-9afe-389a80a2b881</name>
+          <entityField>allAttendeesFilter</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>5d11add4-d939-4c8e-9633-efd0c2991837</name>
           <entityField>PRIORITY</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>4315233d-5677-4b9c-aabd-019830e06ccf</name>
+          <entityField>startDate_Day</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>154182d8-bc66-4901-a423-7d3a375d4154</name>
-          <entityField>MATURITY_DATE</entityField>
+          <entityField>maturityDate_Day</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>2db57789-12bc-4d23-a7b2-850a1a776306</name>
           <entityField>PROGRESS</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>1e3feb82-c847-4ed6-ac88-c274c6179ea2</name>
+          <entityField>connections</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>e3059d13-cec9-4e49-8f1e-176508c0331a</name>
           <entityField>DESCRIPTION</entityField>
@@ -95,7 +96,7 @@
     <treeTableViewTemplate>
       <name>Treetable</name>
       <entityField>#ENTITY</entityField>
-      <favoriteActionGroup1>observeActionGroup</favoriteActionGroup1>
+      <favoriteActionGroup1>filterActionGroup</favoriteActionGroup1>
       <linkedColumns>
         <element>SUBJECT</element>
       </linkedColumns>
@@ -118,20 +119,28 @@
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>b6f0a3f3-5ea8-427a-a02a-4d999e344e07</name>
-          <entityField>EDITOR_CONTACT_ID</entityField>
+          <entityField>allAttendeesFilter</entityField>
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>834c9424-3ad3-474d-90b2-7eb879e3ee86</name>
           <entityField>PRIORITY</entityField>
         </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>542675c3-b44a-43b7-b664-12037f9929f6</name>
+          <entityField>startDate_Day</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>38aa316c-21ba-4ea6-9e6b-43b63fa24382</name>
-          <entityField>MATURITY_DATE</entityField>
+          <entityField>maturityDate_Day</entityField>
         </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>8c3b89a3-93ea-4d55-ac8d-4a2525ae938e</name>
           <entityField>PROGRESS</entityField>
         </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>6556de03-17ac-4573-859d-ac50d2b467dd</name>
+          <entityField>connections</entityField>
+        </neonTreeTableColumn>
         <neonTreeTableColumn>
           <name>dc66b99a-1387-425a-ad2b-3ab44ee5234a</name>
           <entityField>DESCRIPTION</entityField>
diff --git a/neonView/TaskMainAttendees_view/TaskMainAttendees_view.aod b/neonView/TaskMainAttendees_view/TaskMainAttendees_view.aod
new file mode 100644
index 0000000000..36762c3f48
--- /dev/null
+++ b/neonView/TaskMainAttendees_view/TaskMainAttendees_view.aod
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.8" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.8">
+  <name>TaskMainAttendees_view</name>
+  <title>Editor</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <neonViewReference>
+      <name>07524a9b-1fd8-4e87-9325-d90ae0857a53</name>
+      <entityField>TaskAttendeesMulti</entityField>
+      <view>TaskAttendeesFitlerContacts_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>a24a9386-183e-499e-bd2d-8842d7c86b8a</name>
+      <entityField>TaskDepartmentsMulti</entityField>
+      <view>TaskAttendeesFilterDepartment_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/TaskMain_view/TaskMain_view.aod b/neonView/TaskMain_view/TaskMain_view.aod
index a45d314537..98f41aff60 100644
--- a/neonView/TaskMain_view/TaskMain_view.aod
+++ b/neonView/TaskMain_view/TaskMain_view.aod
@@ -9,27 +9,18 @@
     </masterSlaveLayout>
   </layout>
   <children>
-    <genericViewTemplate>
-      <name>details</name>
-      <showDrawer v="true" />
-      <drawerCaption></drawerCaption>
-      <fixedDrawer v="true" />
-      <hideLabels v="false" />
+    <neonViewReference>
+      <name>8bf0ebb9-e5ba-4bfe-88f0-f00a45457b23</name>
       <entityField>#ENTITY</entityField>
-      <title>Details</title>
-      <fields>
-        <entityFieldLink>
-          <name>e95918f5-d21e-4c99-8d05-d70811aa3d89</name>
-          <entityField>PROTECTIONLEVEL</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>fea59f13-750b-427d-bf33-cc1bead95446</name>
-          <entityField>DESCRIPTION</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
+      <view>TaskDescriptionMain_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>ae732214-5db0-469c-ba3e-921e245e0659</name>
+      <entityField>#ENTITY</entityField>
+      <view>TaskMainAttendees_view</view>
+    </neonViewReference>
     <neonViewReference>
-      <name>4211b2cf-3a1f-4447-ad1c-f521d2d3f258</name>
+      <name>0a15d720-0583-47c1-a089-a9683fcec2db</name>
       <entityField>ModuleTrees</entityField>
       <view>ModuleTree_view</view>
     </neonViewReference>
diff --git a/neonView/TaskPreview_view/TaskPreview_view.aod b/neonView/TaskPreview_view/TaskPreview_view.aod
index ba8dd59ebf..8527470e83 100644
--- a/neonView/TaskPreview_view/TaskPreview_view.aod
+++ b/neonView/TaskPreview_view/TaskPreview_view.aod
@@ -13,7 +13,8 @@
       <name>Header</name>
       <iconField>PRIORITY_ICON</iconField>
       <titleField>SUBJECT</titleField>
-      <favoriteAction1>newActivity</favoriteAction1>
+      <favoriteAction1>setCompletePreview</favoriteAction1>
+      <favoriteAction2>newActivity</favoriteAction2>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
@@ -42,20 +43,21 @@
           <name>ebdffed8-4999-4ec1-ac4d-c22514dfed0c</name>
           <entityField>PRIORITY</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>d9e4daef-84df-415c-9be7-3238c2760c07</name>
-          <entityField>PROTECTIONLEVEL</entityField>
-        </entityFieldLink>
         <entityFieldLink>
           <name>05de9afc-429e-46a8-8e3b-2ff689ed090e</name>
           <entityField>REQUESTOR_CONTACT_ID</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>bbf1a736-acf9-4b41-9df9-5675fc6d8943</name>
-          <entityField>EDITOR_CONTACT_ID</entityField>
+          <name>70d94d50-0dc3-4407-8cbb-b6013215e548</name>
+          <entityField>PROTECTIONLEVEL</entityField>
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>4a904f32-e8f2-4aea-ae91-c7783354edb6</name>
+      <entityField>AllTaskAttendees</entityField>
+      <view>TaskAttendeesPreviewList_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>8cf85386-d25f-459a-a2a1-991c9e3287b6</name>
       <entityField>Links</entityField>
diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
index 945bcb67a3..f7c6b1592f 100644
--- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
+++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
@@ -5,6 +5,7 @@
   <customized />
   <mailGlobalUserServerEnabled v="true" />
   <projectName>ADITO xRM</projectName>
+  <defaultDataAlias>Data_alias</defaultDataAlias>
   <jditoMaxContentSize v="57671680" />
   <mailEnableUserDefault v="true" />
   <mailDefaultMailserver>mailServerIMAP</mailDefaultMailserver>
diff --git a/process/ActivityTask_lib/process.js b/process/ActivityTask_lib/process.js
index c15bd58554..2dccb611f4 100644
--- a/process/ActivityTask_lib/process.js
+++ b/process/ActivityTask_lib/process.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.entities");
 import("system.vars");
 import("system.util");
@@ -560,6 +561,120 @@ TaskUtils.createNewTask = function(pRowId, pAdditionalLinks, pParentContext, pPa
     _ActivityTaskUtils._createNew("Task", pRowId, pAdditionalLinks, pParentContext, pParentId, pParams, pDocuments)
 }
 
+/**
+ * Create a new task within the database-scope.
+ * This funciton will insert a complete new task into the database.
+ * 
+ * @param {Object} pDataPreset={} (required)    <p>
+ *                                              An object that contains the data for the task.
+ *                                              Required properties in data preset:
+ *                                              <ul>
+ *                                              <li>subject</li>
+ *                                              <li>requestorContactId</li>
+ *                                              </ul>
+ *                                              Optional properties in data preset:
+ *                                              <ul>
+ *                                              <li>subject</li>
+ *                                              <li>status - default: new</li>
+ *                                              <li>progress - default: 0%</li>
+ *                                              <li>priority - default: low</li>
+ *                                              <li>requestorContactId</li>
+ *                                              <li>description</li>
+ *                                              <li>startDate - default: current date</li>
+ *                                              <li>maturityDate - default: one week</li>
+ *                                              </ul>
+ * @param {string|string[]} pTaskAttendees      <p>
+ *                                              ContactIds of the Attendees.<br>
+ *                                              If Grouptask you'll need an Array.
+ * @param {Array} pTaskLinks (optional)         <p>
+ *                                              2D array where each element is an array of<br>
+ *                                              context name and objectid, for example:
+ *                                              <br><pre>[["Organisation", 
+ *                                              "2d1e505c-a75a-4fa6-826b-7224a97d5b51"]]</pre>
+ * @return {Object}                             <p>
+ *                                              Object where the following are filled:
+ *                                              <ul>
+ *                                              <li>activityId</li>
+ *                                              </ul>
+ */
+TaskUtils.insertNewTask = function(pDataPreset, pTaskLinks, pTaskAttendees)
+{
+    var groupTask = pTaskAttendees instanceof Array;
+    var dataPreset = pDataPreset || {};    
+    var creationDate = datetime.date();
+    var startDate = dataPreset.startDate || creationDate;
+    var config;
+    var taskId = util.getNewUUID();
+    
+    config = entities.createConfigForAddingRows();
+    config.entity("Task_entity");
+    
+    var fields = {
+        "SUBJECT": dataPreset.subject,
+        "STATUS": dataPreset.status || "NEW",
+        "PROGRESS": dataPreset.progress || "TASKPROG0",
+        "PRIORITY": dataPreset.priority || "TASKPRIOLOW",
+        "REQUESTOR_CONTACT_ID": dataPreset.requestorContactId,
+        "START_DATE": startDate.toString(),
+        "MATURITY_DATE": dataPreset.maturityDate.toString() || eMath.addInt(startDate, datetime.ONE_WEEK).toString(),
+        "TASKID": taskId,
+        "createSingleTasks": false
+    }
+    
+    _addTaskField("DESCRIPTION", dataPreset.description);
+    
+    if (pTaskLinks) {
+        var configTaskLinks = entities.createConfigForAddingRows();
+    
+        for (let i = 0; i < pTaskLinks.length; i++) {
+            configTaskLinks.fieldValues({
+                "OBJECT_TYPE": pTaskLinks[i][0],
+                "OBJECT_ROWID": pTaskLinks[i][1]
+            });
+            
+            _addTaskField("Links", configTaskLinks);
+        }
+    }
+    
+    if(pTaskAttendees) {
+        var configTaskAttendee = entities.createConfigForAddingRows();
+        
+        if(!groupTask) {
+            configTaskAttendee.fieldValues({
+                "CONTACT_ID": pTaskAttendees
+            })
+            _addTaskField("TaskAttendeesMulti", configTaskAttendee);   
+        } else {
+                configTaskAttendee.fieldValues({
+                    "CONTACT_ID": pTaskAttendees[0]
+                })
+                _addTaskField("TaskAttendeesMulti", configTaskAttendee);
+        }
+    }
+            
+    config.fieldValues(fields);
+    taskId = entities.createRow(config);
+    
+    if(groupTask) {
+        for(let i = 1; i < pTaskAttendees.length; i++) 
+        {
+            TaskUtils.insertAttendee(taskId, pTaskAttendees[i])
+        }
+    }
+    
+    return {
+        taskId: taskId
+    };
+    
+    function _addTaskField(pField, pValue, pDefaultValue)
+    {
+        if (pValue || pDefaultValue)
+        {
+            fields[pField] = pValue ? pValue : pDefaultValue;
+        }
+    }
+};
+
 /**
  * Checks whether a record <i><u>(e.g.: person or company)</u></i> <br>with the given parameters has linked tasks or not.
  * 
@@ -576,10 +691,10 @@ TaskUtils.hasTasks = function(pRowId, pObjectType)
     if (pRowId != "" && pObjectType != "")
     {
         var taskCount = newSelect("count(*)")
-                            .from("TASKLINK")
-                            .where("TASKLINK.OBJECT_TYPE", pObjectType)
-                            .and("TASKLINK.OBJECT_ROWID", pRowId)
-                            .cell();
+        .from("TASKLINK")
+        .where("TASKLINK.OBJECT_TYPE", pObjectType)
+        .and("TASKLINK.OBJECT_ROWID", pRowId)
+        .cell();
                             
         if (taskCount != "0")
             return true;
@@ -589,6 +704,64 @@ TaskUtils.hasTasks = function(pRowId, pObjectType)
     else
         return true;
 }
+
+/**
+ * Adds an Attendee to an existing Task.<br>
+ * In the database table 'TASKATTENDEES'.
+ * 
+ * @param {String} pTaskId                  <p>
+ *                                          The id of the task.<br>
+ * @param {String} pContactId               <p>
+ *                                          The id of the contact.<br>
+ */
+
+TaskUtils.insertAttendee = function (pTaskId, pContactId)
+{
+    var attendeesCols = [
+    "TASKATTENDEESID",
+    "TASK_ID",
+    "CONTACT_ID"
+    ];
+    
+    var attendeesVals = [
+    util.getNewUUID(),
+    pTaskId,
+    pContactId
+    ];
+    
+    db.insertData("TASKATTENDEES", attendeesCols, null, attendeesVals);
+}
+
+/**
+ * Creates links for an activity.<br>
+ * In the database table 'TASKLINK'.
+ * 
+ * @param {String} pTaskId                  <p>
+ *                                          The id of the task.<br>
+ * @param {String} pObjectType              <p>
+ *                                          The type of the object.<br>
+ * @param {String} pRowId                   <p>
+ *                                          The id of the row.<br>
+ */
+TaskUtils.insertLink = function (pTaskId, pObjectType, pRowId)
+{
+    var linkCols = [
+    "TASKLINKID",
+    "TASK_ID",
+    "OBJECT_ROWID",
+    "OBJECT_TYPE"
+    ];
+    
+    var linkVals = [
+    util.getNewUUID(),
+    pTaskId,
+    pRowId,
+    pObjectType
+    ];
+    
+    db.insertData("TASKLINK", linkCols, null, linkVals);
+}
+
 /**
  * Returns the name of the icon, to the given status.
  * Which can used in a icon process.
@@ -638,12 +811,12 @@ TaskUtils.addLinkRecords = function(pObjectIdField, pRowIdField, pAdditionalLink
 TaskUtils.getOpenTaskCount = function(pRowId, pObjectType)
 {
     var taskCount = newSelect("count(*)")
-                        .from("TASKLINK")
-                        .join("TASK", "TASKLINK.TASK_ID = TASK.TASKID")
-                        .where("TASKLINK.OBJECT_TYPE", pObjectType)
-                        .and("TASKLINK.OBJECT_ROWID", pRowId)
-                        .and("TASK.STATUS", $KeywordRegistry.taskStatus$ended(), SqlBuilder.NOT_EQUAL())
-                        .cell();
+    .from("TASKLINK")
+    .join("TASK", "TASKLINK.TASK_ID = TASK.TASKID")
+    .where("TASKLINK.OBJECT_TYPE", pObjectType)
+    .and("TASKLINK.OBJECT_ROWID", pRowId)
+    .and("TASK.STATUS", $KeywordRegistry.taskStatus$ended(), SqlBuilder.NOT_EQUAL())
+    .cell();
     
     return parseInt(taskCount);
 }
diff --git a/process/Organisation_lib/process.js b/process/Organisation_lib/process.js
index 1e8fd5a29e..a16a0b0488 100644
--- a/process/Organisation_lib/process.js
+++ b/process/Organisation_lib/process.js
@@ -184,19 +184,28 @@ var activityData = activityQuery.table()
         .join("\n");
 
     //tasks
-    var taskData = newSelect("TASK.SUBJECT, TASK.DESCRIPTION, TASK.STATUS, FIRSTNAME, LASTNAME")
+    var maskingUtils = new SqlMaskingUtils();
+    
+        var taskData = newSelect("TASK.SUBJECT, TASK.DESCRIPTION, TASK.STATUS, " + maskingUtils.concatWithSeparator([
+                        maskingUtils.getGroupConcat(
+                        maskingUtils.concatenate(["FIRSTNAME", "' '", "LASTNAME"]), "', '")
+                        , maskingUtils.getGroupConcat("ATTRIBUTE_NAME", "', '")], ", "))
                     .from("TASK")
                     .join("TASKLINK", "TASKLINK.TASK_ID = TASK.TASKID")
+                    .join("TASKATTENDEES", "TASKATTENDEES.TASK_ID = TASK.TASKID")
                     .join("CONTACT", "TASKLINK.OBJECT_ROWID = CONTACTID and (TASKLINK.OBJECT_TYPE = 'Organisation' or TASKLINK.OBJECT_TYPE = 'Person')")
-                    .join("CONTACT c", "TASK.EDITOR_CONTACT_ID = c.CONTACTID")
+                    .leftJoin("CONTACT c", "TASKATTENDEES.CONTACT_ID = c.CONTACTID")
                     .leftJoin("PERSON", "c.PERSON_ID = PERSONID")
+                    .leftJoin("AB_ATTRIBUTE", "AB_ATTRIBUTE.AB_ATTRIBUTEID = TASKATTENDEES.DEPARTMENT_ID")
                     .where("CONTACT.ORGANISATION_ID", pOrgId)
+                    .groupBy("TASK.TASKID")
                     .table();
 
+
     taskData.forEach(function (row)
     {
+        row[1] = text.html2text(row[1]);
         row[2] = KeywordUtils.getViewValue($KeywordRegistry.taskStatus(), row[2]);
-        _joinArrayVals(row, 3, 2); //join FIRSTNAME and LASTNAME together
     });
     taskData = ReportData.begin(["SUBJECT", "INFOTEXT", "STATUS", "RESPONSIBLE"]).add(taskData);
 
diff --git a/process/migrateTask/documentation.adoc b/process/migrateTask/documentation.adoc
new file mode 100644
index 0000000000..daa2400587
--- /dev/null
+++ b/process/migrateTask/documentation.adoc
@@ -0,0 +1,4 @@
+= Tasks Migration
+This process can be used to, either directly migrate the tasks in the database.
+
+All tasks editor will be copied to the taskattendees table and the content of the "description" field is converted to HTML.
\ No newline at end of file
diff --git a/process/migrateTask/migrateTask.aod b/process/migrateTask/migrateTask.aod
new file mode 100644
index 0000000000..6ebea3aa8a
--- /dev/null
+++ b/process/migrateTask/migrateTask.aod
@@ -0,0 +1,11 @@
+<?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>migrateTask</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/process/migrateTask/documentation.adoc</documentation>
+  <process>%aditoprj%/process/migrateTask/process.js</process>
+  <alias>Data_alias_noAudit</alias>
+  <variants>
+    <element>EXECUTABLE</element>
+  </variants>
+</process>
diff --git a/process/migrateTask/process.js b/process/migrateTask/process.js
new file mode 100644
index 0000000000..d4b0cc4cac
--- /dev/null
+++ b/process/migrateTask/process.js
@@ -0,0 +1,39 @@
+import("KeywordRegistry_basic");
+import("system.logging");
+import("system.db");
+import("system.vars");
+import("system.util");
+import("system.text");
+import("Sql_lib");
+
+
+var oldTasks = newSelect(["TASK.DESCRIPTION", "TASK.TASKID", "TASK.EDITOR_CONTACT_ID", "TASK.USER_NEW", "TASK.DATE_NEW"])
+.from("TASK")
+.where(
+    "TASK.TASKID",
+    newSelect("TASKATTENDEES.TASK_ID")
+    .from("TASKATTENDEES"),
+    SqlBuilder.NOT_IN()
+    )
+.and("TASK.KIND", $KeywordRegistry.taskType$task())
+.table();
+
+var statements = [];
+
+oldTasks.forEach(function (pTask) {
+    logging.log(text.text2html(pTask[0], true));
+    statements.push(newWhereIfSet("TASK.TASKID", pTask[1])
+        .buildUpdateStatement({
+            "TASK.DESCRIPTION" : text.text2html(pTask[0], true)
+        }, "TASK"));
+        
+        statements.push(new SqlBuilder().buildInsertStatement({
+            "TASKATTENDEESID": util.getNewUUID(),
+            "TASK_ID": pTask[1], 
+            "CONTACT_ID" : pTask[2], 
+            "USER_NEW": pTask[3] || "adito.server", 
+            "DATE_NEW": pTask[4] || vars.get("$sys.date")
+        }, "TASKATTENDEES"));
+});
+
+db.execute(statements);
diff --git a/report/Organisation_report/Aufgaben.jrxml b/report/Organisation_report/Aufgaben.jrxml
index 63b40d5bea..64cbd0961b 100644
--- a/report/Organisation_report/Aufgaben.jrxml
+++ b/report/Organisation_report/Aufgaben.jrxml
@@ -12,37 +12,37 @@
 		<band splitType="Stretch"/>
 	</background>
 	<detail>
-		<band height="16" splitType="Stretch">
+		<band height="20" splitType="Stretch">
 			<textField>
-				<reportElement x="3" y="0" width="102" height="15" uuid="f4c173de-6106-4330-87c2-b2ce021394ed"/>
+				<reportElement x="3" y="1" width="102" height="15" uuid="f4c173de-6106-4330-87c2-b2ce021394ed"/>
 				<textElement>
 					<font size="8"/>
 				</textElement>
 				<textFieldExpression><![CDATA[$F{SUBJECT}]]></textFieldExpression>
 			</textField>
 			<textField isStretchWithOverflow="true">
-				<reportElement x="118" y="0" width="168" height="15" uuid="389fc04e-a659-4ef9-923c-3ff73f5bfd18"/>
+				<reportElement x="118" y="1" width="168" height="15" uuid="389fc04e-a659-4ef9-923c-3ff73f5bfd18"/>
 				<textElement>
 					<font size="8"/>
 				</textElement>
 				<textFieldExpression><![CDATA[$F{INFOTEXT}]]></textFieldExpression>
 			</textField>
 			<textField>
-				<reportElement x="296" y="0" width="104" height="15" uuid="e8c8b469-8f88-47f0-8056-4a3fe23fd6e5"/>
+				<reportElement x="300" y="1" width="73" height="15" uuid="e8c8b469-8f88-47f0-8056-4a3fe23fd6e5"/>
 				<textElement>
 					<font size="8"/>
 				</textElement>
 				<textFieldExpression><![CDATA[$F{STATUS}]]></textFieldExpression>
 			</textField>
-			<textField>
-				<reportElement x="445" y="0" width="100" height="15" uuid="fd1db5d1-8dc3-43ba-a723-da731405325c"/>
+			<textField isStretchWithOverflow="true">
+				<reportElement x="384" y="1" width="143" height="15" uuid="fd1db5d1-8dc3-43ba-a723-da731405325c"/>
 				<textElement>
 					<font size="8"/>
 				</textElement>
 				<textFieldExpression><![CDATA[$F{RESPONSIBLE}]]></textFieldExpression>
 			</textField>
 		</band>
-		<band height="5">
+		<band height="7">
 			<line>
 				<reportElement x="0" y="1" width="555" height="1" uuid="1259315f-6fe1-4e0c-bc4a-81208ef427c6"/>
 				<graphicElement>
diff --git a/report/Organisation_report/reportData.jrxml b/report/Organisation_report/reportData.jrxml
index ec9c9a8c37..04d3aaa066 100644
--- a/report/Organisation_report/reportData.jrxml
+++ b/report/Organisation_report/reportData.jrxml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Kundenstammblatt" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e7a916c8-3f9a-497d-84bb-3909b15271ea">
-	<property name="ireport.zoom" value="1.0"/>
+	<property name="ireport.zoom" value="1.2100000000000002"/>
 	<property name="ireport.x" value="0"/>
 	<property name="ireport.y" value="0"/>
 	<parameter name="myAddr" class="java.lang.String"/>
@@ -256,14 +256,14 @@
 				<textFieldExpression><![CDATA[$R{Description}]]></textFieldExpression>
 			</textField>
 			<textField>
-				<reportElement x="295" y="20" width="100" height="15" uuid="b3260378-eced-4883-ad0b-8692a3f83547"/>
+				<reportElement x="300" y="20" width="78" height="15" uuid="b3260378-eced-4883-ad0b-8692a3f83547"/>
 				<textElement>
 					<font size="8"/>
 				</textElement>
 				<textFieldExpression><![CDATA[$R{Status}]]></textFieldExpression>
 			</textField>
 			<textField>
-				<reportElement x="444" y="20" width="100" height="15" uuid="653a5cd5-4209-4570-b6c5-037285921d1a"/>
+				<reportElement x="385" y="20" width="100" height="15" uuid="653a5cd5-4209-4570-b6c5-037285921d1a"/>
 				<textElement>
 					<font size="8"/>
 				</textElement>
-- 
GitLab