diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index afff33cc579f2a7096989c674bfa06cb7c97ba2a..8a42653e859a888cca6db0bdfc78a369efe0631a 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -3744,6 +3744,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>PROGRESS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -4006,7 +4020,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -4039,6 +4053,34 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>SORTING</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ATTRIBUTE_INFO</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -4734,6 +4776,82 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
+          <entityDb>
+            <name>TASKLINK</name>
+            <dbName></dbName>
+            <idColumn>TASKLINKID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>OBJECT_ROWID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TASKLINKID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="false" />
+                <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="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
         </entities>
       </entityGroup>
     </aliasDefDb>
diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index f8c7af04b1f75331bbe83a26980787f53783455d..abedf7b3d98debdc921dbcab23febf767a308fe4 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -259,7 +259,7 @@
     </entityField>
     <entityConsumer>
       <name>ModuleTrees</name>
-      <title>Tree</title>
+      <title>History</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
@@ -278,17 +278,17 @@
       </children>
     </entityConsumer>
     <entityActionField>
-      <name>newActivity_action</name>
+      <name>newActivity</name>
       <fieldType>ACTION</fieldType>
       <title>New activity</title>
-      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newactivity_action/onActionProcess.js</onActionProcess>
+      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
       <iconId>NEON:HISTORY</iconId>
     </entityActionField>
     <entityActionField>
-      <name>newTask_action</name>
+      <name>newTask</name>
       <fieldType>ACTION</fieldType>
       <title>New task</title>
-      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newtask_action/onActionProcess.js</onActionProcess>
+      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
       <iconId>VAADIN:TASKS</iconId>
     </entityActionField>
     <entityParameter>
@@ -334,6 +334,35 @@
       <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/entryday/valueProcess.js</valueProcess>
     </entityField>
+    <entityConsumer>
+      <name>Attributes</name>
+      <title>Attributes</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelation_entity</entityName>
+        <fieldName>RelationsForSpecificObject</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>objectRowId_param</name>
+          <code>%aditoprj%/entity/Activity_entity/entityfields/attributes/children/objectrowid_param/code.js</code>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>objectType_param</name>
+          <code>%aditoprj%/entity/Activity_entity/entityfields/attributes/children/objecttype_param/code.js</code>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityActionField>
+      <name>newOffer</name>
+      <fieldType>ACTION</fieldType>
+      <title>New offer</title>
+      <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/newoffer/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CART</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Activity_entity/entityfields/attributes/children/objectrowid_param/code.js b/entity/Activity_entity/entityfields/attributes/children/objectrowid_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..6717e012d6f73633d708947198ce7e04dee68d82
--- /dev/null
+++ b/entity/Activity_entity/entityfields/attributes/children/objectrowid_param/code.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.ACTIVITYID"));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/attributes/children/objecttype_param/code.js b/entity/Activity_entity/entityfields/attributes/children/objecttype_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..5996e99db232db8df50f155732110608e5abff4e
--- /dev/null
+++ b/entity/Activity_entity/entityfields/attributes/children/objecttype_param/code.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/newactivity_action/onActionProcess.js b/entity/Activity_entity/entityfields/newactivity/onActionProcess.js
similarity index 100%
rename from entity/Activity_entity/entityfields/newactivity_action/onActionProcess.js
rename to entity/Activity_entity/entityfields/newactivity/onActionProcess.js
diff --git a/entity/Activity_entity/entityfields/newoffer/onActionProcess.js b/entity/Activity_entity/entityfields/newoffer/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3f08a12f62c1cb45952922482b71c61ac0785d11
--- /dev/null
+++ b/entity/Activity_entity/entityfields/newoffer/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("Offer_lib");
+
+OfferUtils.createNewOffer(null, vars.getString("$field.ACTIVITYID"));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/newtask_action/onActionProcess.js b/entity/Activity_entity/entityfields/newtask/onActionProcess.js
similarity index 53%
rename from entity/Activity_entity/entityfields/newtask_action/onActionProcess.js
rename to entity/Activity_entity/entityfields/newtask/onActionProcess.js
index 9417c7e293f407d60d36e775d581f8887d582633..48a549d48255e00aaad61e8ddcfec1f384a85b69 100644
--- a/entity/Activity_entity/entityfields/newtask_action/onActionProcess.js
+++ b/entity/Activity_entity/entityfields/newtask/onActionProcess.js
@@ -2,8 +2,7 @@ import("system.neon");
 import("system.vars");
 
 var params = {
-  "ParentId_param": vars.get("$field.ACTIVITYID"),
-  "ParentContext_param": "Activity"
+    "ParentId_param" : vars.get("$field.ACTIVITYID"),
+    "ParentContext_param" : "Activity"
 };
-
-neon.openContext("Task", "TaskEdit_view", null, neon.OPERATINGSTATE_NEW, params)
\ No newline at end of file
+neon.openContext("Task", "TaskEdit_view", null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/Activity_entity/recordcontainers/db/onDBInsert.js b/entity/Activity_entity/recordcontainers/db/onDBInsert.js
index 5fed0f59c560f716f04969b39d9aae3fc0849a17..309f19972fbe819442e918970e9c80d38c1a764f 100644
--- a/entity/Activity_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Activity_entity/recordcontainers/db/onDBInsert.js
@@ -7,9 +7,18 @@ import("Context_lib");
 if (vars.exists("$param.RowId_param") && vars.get("$param.RowId_param")
     && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param"))
 {
-    db.insertData(
-        "ACTIVITYLINK",
-        ["ACTIVITYLINKID", "OBJECT_TYPE", "OBJECT_ROWID", "ACTIVITY_ID"],
-        null,
-        [util.getNewUUID(), vars.get("$param.ObjectId_param"), vars.get("$param.RowId_param"), vars.getString("$field.ACTIVITYID")]);
+    var rowIds = vars.get("$param.RowId_param");
+    if (/^\[.*\]$/.test(rowIds))
+        rowIds = JSON.parse(rowIds);
+    else 
+        rowIds = [rowIds];
+    rowIds.forEach(function (rowId) 
+    {
+        //TODO: remove this and use neon.addRecord
+        db.insertData(
+            "ACTIVITYLINK",
+            ["ACTIVITYLINKID", "OBJECT_TYPE", "OBJECT_ROWID", "ACTIVITY_ID"],
+            null,
+            [util.getNewUUID(), vars.get("$param.ObjectId_param"), rowId, vars.getString("$field.ACTIVITYID")]);
+    });
 }
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
index ebbadacc5653fb76a17b02a44683522eed474ac6..27a2b2459d967a3d5a2881f39843e98f8e048905 100644
--- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod
+++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
@@ -88,6 +88,12 @@
           <fieldName>Attributes</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>f73a57f2-0697-4ebf-abc1-a7eb24d89fe4</name>
+          <entityName>Activity_entity</entityName>
+          <fieldName>Attributes</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Context_entity/Context_entity.aod b/entity/Context_entity/Context_entity.aod
index ba84fe0c8b88c17267a1ba9857dbf78def146671..15af48b45e3a5f290ed753245861f43ca339a116 100644
--- a/entity/Context_entity/Context_entity.aod
+++ b/entity/Context_entity/Context_entity.aod
@@ -22,6 +22,12 @@
           <fieldName>Contexts</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>2dcb4637-6096-43fc-b07e-d44fb51fbc1b</name>
+          <entityName>TaskLink_entity</entityName>
+          <fieldName>Contexts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
     </entityProvider>
     <entityField>
diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index 7ccd487bae928857010181eacc695a2abf1f0417..61a243030f198d4b0934d0914a12f70f8358c103 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -336,6 +336,12 @@
           <fieldName>KeywordState</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>5d9e0e48-ece8-4b8e-ab72-beef77b5dcc3</name>
+          <entityName>Task_entity</entityName>
+          <fieldName>KeywordProgress</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod
index ac7eb0435aed226bf90eee399b8de5db83201662..838b29b59cd959e77804a77df3d5ac5cea6b587d 100644
--- a/entity/Object_entity/Object_entity.aod
+++ b/entity/Object_entity/Object_entity.aod
@@ -86,6 +86,12 @@
           <fieldName>Objects</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>445b79b3-e826-40d1-b6c2-46d62daf0818</name>
+          <entityName>TaskLink_entity</entityName>
+          <fieldName>Objects</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index d1523d93507445f54c874ff6b38fc91e6d6df28e..f610a2634c23570dbefb6b337a7fc3d343909560 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -495,6 +495,13 @@
       <mandatory v="false" />
       <description>PARAMETER</description>
     </entityParameter>
+    <entityActionField>
+      <name>newTask</name>
+      <fieldType>ACTION</fieldType>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/Offer_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TASKS</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Offer_entity/entityfields/newtask/onActionProcess.js b/entity/Offer_entity/entityfields/newtask/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..641a47f15208bdda7a38c499017e4ce88bf73a99
--- /dev/null
+++ b/entity/Offer_entity/entityfields/newtask/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("Task_lib");
+
+TaskUtils.createNewTask(vars.get("$field.OFFERID"));
\ No newline at end of file
diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod
index a279f454693a961bbb649f309660e85dcc2f255d..7ef4bc3429e9acc6bf39b8fdba23626b476058b7 100644
--- a/entity/Order_entity/Order_entity.aod
+++ b/entity/Order_entity/Order_entity.aod
@@ -394,6 +394,13 @@
       <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offer_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/offer_id/displayValueProcess.js</displayValueProcess>
     </entityField>
+    <entityActionField>
+      <name>newTask</name>
+      <fieldType>ACTION</fieldType>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TASKS</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Order_entity/entityfields/newtask/onActionProcess.js b/entity/Order_entity/entityfields/newtask/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..baa98873dbab7885057775c91fad3606d788edd0
--- /dev/null
+++ b/entity/Order_entity/entityfields/newtask/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("Task_lib");
+
+TaskUtils.createNewTask(vars.get("$field.SALESORDERID"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/newtask/onActionProcess.js b/entity/Organisation_entity/entityfields/newtask/onActionProcess.js
index 184aba3ab162e889d040c46a76c62f651e982d86..ce80aa513d857e9b861681d57a7732b5f9b88079 100644
--- a/entity/Organisation_entity/entityfields/newtask/onActionProcess.js
+++ b/entity/Organisation_entity/entityfields/newtask/onActionProcess.js
@@ -1,8 +1,4 @@
 import("system.vars");
-import("system.neon");
-import("Context_lib");
+import("Task_lib");
 
-var params = {};
-params["ObjectType_param"] = ContextUtils.getCurrentContextId();
-params["RowId_param"] = vars.get("$field.ORGANISATIONID");
-neon.openContext("Task", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
+TaskUtils.createNewTask(vars.get("$field.ORGANISATIONID"));
\ No newline at end of file
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index b255e2c78b72477ba9f350fb44a3a8a88fe9f9ea..6e0ddf81595d3e12ac8a8f1cb03606fd45e6f460 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -550,6 +550,13 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityActionField>
+      <name>newTask</name>
+      <fieldType>ACTION</fieldType>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TASKS</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Person_entity/entityfields/newtask/onActionProcess.js b/entity/Person_entity/entityfields/newtask/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e88a942bfdffceed019120ca89379646b69cca10
--- /dev/null
+++ b/entity/Person_entity/entityfields/newtask/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("Task_lib");
+
+TaskUtils.createNewTask(vars.get("$field.CONTACTID"));
\ No newline at end of file
diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod
index 1a477cb4efeb741f94a6a05935e782a714a44ba4..daf1095ab993de330005659847bed045e1e39b2f 100644
--- a/entity/Product_entity/Product_entity.aod
+++ b/entity/Product_entity/Product_entity.aod
@@ -334,6 +334,13 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityActionField>
+      <name>newTask</name>
+      <fieldType>ACTION</fieldType>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/Product_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TASKS</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Product_entity/entityfields/newtask/onActionProcess.js b/entity/Product_entity/entityfields/newtask/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d48843157b12f650ef65abc047eff52cb733c204
--- /dev/null
+++ b/entity/Product_entity/entityfields/newtask/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("Task_lib");
+
+TaskUtils.createNewTask(vars.get("$field.PRODUCTID"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index 089cb81db92d660ca6d693bbe7f07e1da63a1694..29c788355bd388815e39500992384f2fa419efa3 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -430,6 +430,13 @@
         </entityParameter>
       </children>
     </entityProvider>
+    <entityActionField>
+      <name>newTask</name>
+      <fieldType>ACTION</fieldType>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TASKS</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Salesproject_entity/entityfields/newtask/onActionProcess.js b/entity/Salesproject_entity/entityfields/newtask/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b7d1f128f51cb803401fa0abd00b1c3cafee77c6
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/newtask/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("Task_lib");
+
+TaskUtils.createNewTask(vars.get("$field.SALESPROJECTID"));
\ No newline at end of file
diff --git a/entity/TaskLink_entity/TaskLink_entity.aod b/entity/TaskLink_entity/TaskLink_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..50aeb41fe5bd7d54fafc35a24f306d486f46fd6b
--- /dev/null
+++ b/entity/TaskLink_entity/TaskLink_entity.aod
@@ -0,0 +1,111 @@
+<?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.2.0">
+  <name>TaskLink_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>TASKLINKID</name>
+    </entityField>
+    <entityField>
+      <name>TASK_ID</name>
+      <valueProcess>%aditoprj%/entity/TaskLink_entity/entityfields/task_id/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>OBJECT_TYPE</name>
+      <title>Object type</title>
+      <consumer>Contexts</consumer>
+      <linkedContext>Context</linkedContext>
+      <displayValueProcess>%aditoprj%/entity/TaskLink_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>OBJECT_ROWID</name>
+      <title>Relation</title>
+      <consumer>Objects</consumer>
+      <linkedContextProcess>%aditoprj%/entity/TaskLink_entity/entityfields/object_rowid/linkedContextProcess.js</linkedContextProcess>
+      <displayValueProcess>%aditoprj%/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityProvider>
+      <name>Link</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <targetContextField>OBJECT_TYPE</targetContextField>
+      <targetIdField>OBJECT_ROWID</targetIdField>
+      <recordContainer>db</recordContainer>
+      <dependencies>
+        <entityDependency>
+          <name>40cc8bcd-c178-4a77-a968-642e1d8e1f70</name>
+          <entityName>Task_entity</entityName>
+          <fieldName>Links</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityParameter>
+      <name>TaskId_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityConsumer>
+      <name>Contexts</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Context_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Objects</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Object_entity</entityName>
+        <fieldName>AllObjects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <code>%aditoprj%/entity/TaskLink_entity/entityfields/objects/children/objecttype_param/code.js</code>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <alias>Data_alias</alias>
+      <conditionProcess>%aditoprj%/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <linkInformation>
+        <linkInformation>
+          <name>75141ff0-c6de-4dfd-ad35-6bf2fc931fb9</name>
+          <tableName>TASKLINK</tableName>
+          <primaryKey>TASKLINKID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>OBJECT_ROWID.value</name>
+          <recordfield>TASKLINK.OBJECT_ROWID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_TYPE.value</name>
+          <recordfield>TASKLINK.OBJECT_TYPE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TASK_ID.value</name>
+          <recordfield>TASKLINK.TASK_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TASKLINKID.value</name>
+          <recordfield>TASKLINK.TASKLINKID</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js b/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d78fa97bbe96de04d46e331b5d4d2fe7bc70e633
--- /dev/null
+++ b/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.db");
+import("system.result");
+import("Context_lib");
+
+if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE"))
+    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
\ No newline at end of file
diff --git a/entity/TaskLink_entity/entityfields/object_rowid/linkedContextProcess.js b/entity/TaskLink_entity/entityfields/object_rowid/linkedContextProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..21e71d02fbf35e171cf12b6b76964834c5e3c76b
--- /dev/null
+++ b/entity/TaskLink_entity/entityfields/object_rowid/linkedContextProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getContextName(vars.get("$field.OBJECT_TYPE")))
\ No newline at end of file
diff --git a/entity/TaskLink_entity/entityfields/object_type/displayValueProcess.js b/entity/TaskLink_entity/entityfields/object_type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..703c8341b77f9a59751aaffcb89c5beae5e0b5a1
--- /dev/null
+++ b/entity/TaskLink_entity/entityfields/object_type/displayValueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("system.project");
+
+if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE"))
+{
+    result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECT_TYPE"))[1]);
+}
\ No newline at end of file
diff --git a/entity/TaskLink_entity/entityfields/objects/children/objecttype_param/code.js b/entity/TaskLink_entity/entityfields/objects/children/objecttype_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..4238ef7d3313d43079cfa870caa675f766839cf6
--- /dev/null
+++ b/entity/TaskLink_entity/entityfields/objects/children/objecttype_param/code.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.OBJECT_TYPE"));
\ No newline at end of file
diff --git a/entity/TaskLink_entity/entityfields/task_id/valueProcess.js b/entity/TaskLink_entity/entityfields/task_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..912db764ab71adba928daf298d11a7077ab9ce18
--- /dev/null
+++ b/entity/TaskLink_entity/entityfields/task_id/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.TaskId_param"));
\ No newline at end of file
diff --git a/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js b/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9167396fd1a576f96be9b7ae063a6521c36f525f
--- /dev/null
+++ b/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.db");
+import("system.result");
+import("Sql_lib");
+
+var cond = SqlCondition.begin()
+                       .andPrepareVars("TASKLINK.TASK_ID", "$param.TaskId_param");
+
+//TODO: use a preparedCondition when available #1030812 #1034026
+result.string(db.translateCondition(cond.build("1 = 0")));
\ No newline at end of file
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 9b17a3c0b6901ee6de3b798ca389a3ef110f092a..bd4fb80d8efec4dde3ff2e2e827f5df4543dce8c 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -175,7 +175,7 @@
     </entityConsumer>
     <entityConsumer>
       <name>ModuleTrees</name>
-      <title>Tree</title>
+      <title>History</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
@@ -215,17 +215,17 @@
       <description>PARAMETER</description>
     </entityParameter>
     <entityActionField>
-      <name>newActivity_action</name>
+      <name>newActivity</name>
       <fieldType>ACTION</fieldType>
       <title>New activity</title>
-      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newactivity_action/onActionProcess.js</onActionProcess>
+      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
       <iconId>NEON:HISTORY</iconId>
     </entityActionField>
     <entityActionField>
-      <name>newTask_action</name>
+      <name>newTask</name>
       <fieldType>ACTION</fieldType>
       <title>New task</title>
-      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newtask_action/onActionProcess.js</onActionProcess>
+      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
       <iconId>VAADIN:TASKS</iconId>
     </entityActionField>
     <entityParameter>
@@ -253,6 +253,51 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityActionField>
+      <name>newOffer</name>
+      <fieldType>ACTION</fieldType>
+      <title>New offer</title>
+      <onActionProcess>%aditoprj%/entity/Task_entity/entityfields/newoffer/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:CART</iconId>
+    </entityActionField>
+    <entityField>
+      <name>PROGRESS</name>
+      <title>Progress</title>
+      <consumer>KeywordProgress</consumer>
+      <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Task_entity/entityfields/progress/valueProcess.js</valueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>KeywordProgress</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>containerName_param</name>
+          <code>%aditoprj%/entity/Task_entity/entityfields/keywordprogress/children/containername_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Links</name>
+      <title>Connections</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>TaskLink_entity</entityName>
+        <fieldName>Link</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>TaskId_param</name>
+          <code>%aditoprj%/entity/Task_entity/entityfields/links/children/taskid_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -346,6 +391,14 @@
           <name>PRIORITY.displayValue</name>
           <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/priority.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PROGRESS.value</name>
+          <recordfield>TASK.PROGRESS</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PROGRESS.displayValue</name>
+          <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/progress.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Task_entity/entityfields/keywordprogress/children/containername_param/code.js b/entity/Task_entity/entityfields/keywordprogress/children/containername_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..a9e216fdcc594e8f3b52cb52b9c76d8429d17ec0
--- /dev/null
+++ b/entity/Task_entity/entityfields/keywordprogress/children/containername_param/code.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.taskProgress());
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/links/children/taskid_param/code.js b/entity/Task_entity/entityfields/links/children/taskid_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..190bc0327501ce4d067e1e1a8f7ff571a6fdc09b
--- /dev/null
+++ b/entity/Task_entity/entityfields/links/children/taskid_param/code.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/newactivity_action/onActionProcess.js b/entity/Task_entity/entityfields/newactivity/onActionProcess.js
similarity index 100%
rename from entity/Task_entity/entityfields/newactivity_action/onActionProcess.js
rename to entity/Task_entity/entityfields/newactivity/onActionProcess.js
diff --git a/entity/Task_entity/entityfields/newoffer/onActionProcess.js b/entity/Task_entity/entityfields/newoffer/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6908fb4dd3de9231593538e6757b2895e48f24fa
--- /dev/null
+++ b/entity/Task_entity/entityfields/newoffer/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("Offer_lib");
+
+OfferUtils.createNewOffer(null, vars.getString("$field.TASKID"));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/newtask_action/onActionProcess.js b/entity/Task_entity/entityfields/newtask/onActionProcess.js
similarity index 100%
rename from entity/Task_entity/entityfields/newtask_action/onActionProcess.js
rename to entity/Task_entity/entityfields/newtask/onActionProcess.js
diff --git a/entity/Task_entity/entityfields/priority/valueProcess.js b/entity/Task_entity/entityfields/priority/valueProcess.js
index f6d5ec3fa8f24bbb18e03b535d9dece488186913..81d3400864d415754cd22dd9057ed91d14563ffd 100644
--- a/entity/Task_entity/entityfields/priority/valueProcess.js
+++ b/entity/Task_entity/entityfields/priority/valueProcess.js
@@ -4,4 +4,4 @@ import("system.neon");
 import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string("2");//TODO: do not use int-keys for this; use from keyword
\ No newline at end of file
+    result.string("4467b33c-3a68-4c8b-ba4a-1eb666a6c774");
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/progress/valueProcess.js b/entity/Task_entity/entityfields/progress/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7ecbd5ac41d4c7e7666a27e96592ac28447aea82
--- /dev/null
+++ b/entity/Task_entity/entityfields/progress/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string("ec92271b-eac2-4ec2-be24-ab4abde7e939");
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/status/valueProcess.js b/entity/Task_entity/entityfields/status/valueProcess.js
index 8d9f96e0992902ef55f290f83b4df79c0197c897..b3253f839febecf5f8d9d92bf7e79abe8e5f5c88 100644
--- a/entity/Task_entity/entityfields/status/valueProcess.js
+++ b/entity/Task_entity/entityfields/status/valueProcess.js
@@ -4,4 +4,4 @@ import("system.neon");
 import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string("0");//TODO: do not use int-keys for this; use from keyword
\ No newline at end of file
+    result.string("21bc4d20-1a87-4247-8f7c-8d3a09631850");
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/progress.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/progress.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..3f69c295dcd71ce4a08b101fcd0460b72b603e41
--- /dev/null
+++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/progress.displayvalue/expression.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.taskProgress(), "TASK.PROGRESS");
+result.string(sql);
\ No newline at end of file
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 333f1811e09074b643c328dc1f265387f295e881..ffa69dc77725d79f52d63941e3d81c55724a2592 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -2574,4 +2574,4 @@ where AB_KEYWORD_ATTRIBUTE_ID in (&amp;apos;6f81d079-d404-4bda-a7c7-b830ed3d80d5
       </statements>
     </languageSql>
   </sqlModels>
-</language>
+</language
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 794fae92df857eaf46e2004a40ebb66f230e07fb..8b44da885049305a4664a0e06f960af5278b5bf1 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -1244,6 +1244,10 @@
       <key>Put Reciever Into To</key>
       <value>Bitte einen Adressat in &amp;apos;to&amp;apos; eintragen!</value>
     </entry>
+    <entry>
+      <key>History</key>
+      <value>Verlauf</value>
+    </entry>
     <entry>
       <key>Total</key>
       <value>Gesamt</value>
@@ -1534,7 +1538,7 @@
     </entry>
     <entry>
       <key>priority</key>
-      <value>Piorität</value>
+      <value>Priorität</value>
     </entry>
     <entry>
       <key>{$TASK_EDITOR}</key>
@@ -2141,6 +2145,10 @@
     <entry>
       <key>Product_industry knowhow</key>
     </entry>
+    <entry>
+      <key>Progress</key>
+      <value>Fortschritt</value>
+    </entry>
     <entry>
       <key>United States of America</key>
     </entry>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index abbf572093d0f286c71424b49653862be97d33e0..fb0c3663517aaa12edcd84482412a4795839ecfd 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -2585,4 +2585,4 @@
     </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
-</language>
+</language
diff --git a/neonContext/ActivityLink/ActivityLink.aod b/neonContext/ActivityLink/ActivityLink.aod
index e27379336dd2e6da91c0f4cdbb96d4b619d33d08..4fbd8877eec53de31499e1132632c4d0729d44e6 100644
--- a/neonContext/ActivityLink/ActivityLink.aod
+++ b/neonContext/ActivityLink/ActivityLink.aod
@@ -14,5 +14,9 @@
       <name>16c750bf-b7b7-4222-86b2-9bd1b28f0c1f</name>
       <view>ActivityLinkPreview_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>0960878d-9077-4707-8239-b48f1b55a5e8</name>
+      <view>ActivityLinkMultiEdit_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/TaskLink/TaskLink.aod b/neonContext/TaskLink/TaskLink.aod
new file mode 100644
index 0000000000000000000000000000000000000000..dd406fe7dd0a217aa492551b49ee259181aaf7f3
--- /dev/null
+++ b/neonContext/TaskLink/TaskLink.aod
@@ -0,0 +1,20 @@
+<?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.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.0.0">
+  <name>TaskLink</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>TaskLink_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>10ad5fab-a0c5-4822-af9b-d30cf877dfb5</name>
+      <view>TaskLinkPreview_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>a969be52-00fb-4b0e-96e9-4c8ffb8f5ac0</name>
+      <view>TaskLinkFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>cd180425-6562-49d9-99be-f3a47a88f427</name>
+      <view>TaskLinkMultiEdit_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonView/ActivityEdit_view/ActivityEdit_view.aod b/neonView/ActivityEdit_view/ActivityEdit_view.aod
index ff037128fb65720e7c309fa29bc07405e1a1fb64..f186d8ecdb051dd9ea8742e941fb51a320d696cb 100644
--- a/neonView/ActivityEdit_view/ActivityEdit_view.aod
+++ b/neonView/ActivityEdit_view/ActivityEdit_view.aod
@@ -38,5 +38,10 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>868cfbbe-f5f4-48d1-88cd-56207e0e6dcc</name>
+      <entityField>Links</entityField>
+      <view>ActivityLinkMultiEdit_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod b/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..891b3fefd8af63696c4d883dba60233c1aee28a6
--- /dev/null
+++ b/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_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.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1">
+  <name>ActivityLinkMultiEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>GenericMultiple</name>
+      <entityField>#ENTITY</entityField>
+      <title></title>
+      <columns>
+        <neonTableColumn>
+          <name>b7f68733-33f2-4ed7-a222-4298491b5cb0</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>3d98edbb-44aa-4d85-97fe-9260081292c3</name>
+          <entityField>OBJECT_ROWID</entityField>
+        </neonTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ActivityMain_view/ActivityMain_view.aod b/neonView/ActivityMain_view/ActivityMain_view.aod
index 5937e2ba7b21546420d60c63fc05da01b31e76f8..c798fdb99c4bcbf5afa79876c235b6ba63032dff 100644
--- a/neonView/ActivityMain_view/ActivityMain_view.aod
+++ b/neonView/ActivityMain_view/ActivityMain_view.aod
@@ -14,6 +14,11 @@
       <entityField>#ENTITY</entityField>
       <view>ActivityPreview_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>f6c6888a-f3d6-410a-b97b-30c34a9dd6a2</name>
+      <entityField>ModuleTrees</entityField>
+      <view>ModuleTree_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>a3a45cd7-587f-4bc0-9980-e6d1c89a8212</name>
       <entityField>#ENTITY</entityField>
@@ -30,9 +35,9 @@
       <view>ActivityLinkFilter_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>f6c6888a-f3d6-410a-b97b-30c34a9dd6a2</name>
-      <entityField>ModuleTrees</entityField>
-      <view>ModuleTree_view</view>
+      <name>8ffd03a7-a841-4674-96bf-04689d46cf48</name>
+      <entityField>Attributes</entityField>
+      <view>AttributeRelationFilter_view</view>
     </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ActivityPreview_view/ActivityPreview_view.aod b/neonView/ActivityPreview_view/ActivityPreview_view.aod
index 305b2238fe3da9600e215a63384e90fa0d550fea..6f4b70bd144c7db86696a0cdf2a800ac51381d41 100644
--- a/neonView/ActivityPreview_view/ActivityPreview_view.aod
+++ b/neonView/ActivityPreview_view/ActivityPreview_view.aod
@@ -13,6 +13,7 @@
       <iconField>ICON</iconField>
       <titleField>SUBJECT</titleField>
       <descriptionField>ENTRYDATE</descriptionField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
diff --git a/neonView/AttributeFilter_view/AttributeFilter_view.aod b/neonView/AttributeFilter_view/AttributeFilter_view.aod
index 626b9f0d2c86e82065ba3be5adb8e8222989920f..08bcb8f5ecfa8157443befceebc07e9af05f9932 100644
--- a/neonView/AttributeFilter_view/AttributeFilter_view.aod
+++ b/neonView/AttributeFilter_view/AttributeFilter_view.aod
@@ -24,7 +24,7 @@
       <columns>
         <neonTableColumn>
           <name>4dae1a23-8798-42ff-998c-7f5fedc7dcc5</name>
-          <entityField>ATTRIBUTE_NAME</entityField>
+          <entityField>FULL_ATTRIBUTE_NAME</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>ed7598ea-c29c-4d04-9b28-27ee3b28a5b1</name>
diff --git a/neonView/OfferPreview_view/OfferPreview_view.aod b/neonView/OfferPreview_view/OfferPreview_view.aod
index b0d6cffba7e9073c1cb57e24df9ce892e0e45e79..557da913e40a8b37696bffc21ef6dc4f2739730d 100644
--- a/neonView/OfferPreview_view/OfferPreview_view.aod
+++ b/neonView/OfferPreview_view/OfferPreview_view.aod
@@ -13,6 +13,7 @@
       <iconField>IMAGE</iconField>
       <titleField>Offer_OfferCode_VersNr_fieldgroup</titleField>
       <descriptionField>CONTACT_ID</descriptionField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
diff --git a/neonView/OrderPreview_view/OrderPreview_view.aod b/neonView/OrderPreview_view/OrderPreview_view.aod
index f3a585b3433614f9587f9a282101862ffeaa3062..80e86b5307565c844102b7048f52e3873db3981f 100644
--- a/neonView/OrderPreview_view/OrderPreview_view.aod
+++ b/neonView/OrderPreview_view/OrderPreview_view.aod
@@ -13,6 +13,7 @@
       <iconField>IMAGE</iconField>
       <titleField>Order_OrderCode_VersNr_fieldgroup</titleField>
       <descriptionField>CONTACT_ID</descriptionField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
diff --git a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
index ab9edb34ec65966950b0c35087da8be1b72f2b85..834aef029e22855dca538ed6518172f7afb23276 100644
--- a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
+++ b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
@@ -13,6 +13,7 @@
       <iconField>IMAGE</iconField>
       <titleField>NAME</titleField>
       <descriptionField>CUSTOMERCODE_DISPLAY_fieldGroup</descriptionField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <neonViewReference>
diff --git a/neonView/PersonPreview_view/PersonPreview_view.aod b/neonView/PersonPreview_view/PersonPreview_view.aod
index a46e953f3c5307e1248693928966ddaf93a78b68..657b071091ce85c40f00699d0c8f28f1cba23c04 100644
--- a/neonView/PersonPreview_view/PersonPreview_view.aod
+++ b/neonView/PersonPreview_view/PersonPreview_view.aod
@@ -13,6 +13,7 @@
       <iconField>IMAGE</iconField>
       <titleField>FULL_NAME_fieldGroup</titleField>
       <descriptionField>ORGANISATION_ID</descriptionField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <neonViewReference>
diff --git a/neonView/ProductPreview_view/ProductPreview_view.aod b/neonView/ProductPreview_view/ProductPreview_view.aod
index ec357f90b38dd8275058f1310dedab536c091ed7..0c098ee2f5d822ed43af28eec055d02e840a3add 100644
--- a/neonView/ProductPreview_view/ProductPreview_view.aod
+++ b/neonView/ProductPreview_view/ProductPreview_view.aod
@@ -13,6 +13,7 @@
       <iconField>IMAGE</iconField>
       <titleField>PRODUCTCODE</titleField>
       <descriptionField>PRODUCTNAME</descriptionField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
index e75219d501812337ef524570dbea61824d95c949..f4c24b28ee034c8306df912b4d176d79a14c6e90 100644
--- a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
+++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
@@ -13,6 +13,7 @@
       <iconField>IMAGE</iconField>
       <titleField>PROJECTTITLE</titleField>
       <descriptionField>PROJECTCODE</descriptionField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
diff --git a/neonView/TaskEdit_view/TaskEdit_view.aod b/neonView/TaskEdit_view/TaskEdit_view.aod
index 24df599d7a43e21be159443d1179c7aeaa2d5683..75107e82b57c4e2893e578670527045adee99f47 100644
--- a/neonView/TaskEdit_view/TaskEdit_view.aod
+++ b/neonView/TaskEdit_view/TaskEdit_view.aod
@@ -29,6 +29,10 @@
           <name>05c54fab-56b8-4cea-8b66-ba26e5dd16cd</name>
           <entityField>STATUS</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>5fd464a1-d394-4f83-ba6a-386984a5df49</name>
+          <entityField>PROGRESS</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>0f600024-eb83-445c-8eb9-62bcf9e95313</name>
           <entityField>PRIORITY</entityField>
diff --git a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..3206da8bb1e5055ddd1294a739322f849be31526
--- /dev/null
+++ b/neonView/TaskLinkFilter_view/TaskLinkFilter_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.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1">
+  <name>TaskLinkFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>4d2b280c-adb2-4977-b70a-ba07959e44c2</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>d8467d50-50c8-42df-90c3-dcb3359f1267</name>
+          <entityField>OBJECT_ROWID</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod b/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..3a535fc78a3709dc94dff094588a21ad6802fc85
--- /dev/null
+++ b/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod
@@ -0,0 +1,5 @@
+<?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.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1">
+  <name>TaskLinkMultiEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</neonView>
diff --git a/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod b/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..44b18c42e061f5e99bf86e95fef2469aef46f895
--- /dev/null
+++ b/neonView/TaskLinkPreview_view/TaskLinkPreview_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.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1">
+  <name>TaskLinkPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Generic</name>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>9b0dacf0-a053-499d-b87a-22db6c3cb2f4</name>
+          <entityField>OBJECT_ROWID</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/TaskMainPreview_view/TaskMainPreview_view.aod b/neonView/TaskMainPreview_view/TaskMainPreview_view.aod
index 89cb729d600f3fd342ccc93240dfe1cefac6c9ea..8c75d55dc95019e0062a0b66ab49cde0aaef6a68 100644
--- a/neonView/TaskMainPreview_view/TaskMainPreview_view.aod
+++ b/neonView/TaskMainPreview_view/TaskMainPreview_view.aod
@@ -12,6 +12,7 @@
       <name>head</name>
       <iconField>#ICON</iconField>
       <titleField>SUBJECT</titleField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
diff --git a/neonView/TaskMain_view/TaskMain_view.aod b/neonView/TaskMain_view/TaskMain_view.aod
index 4be843f93960bac853acd429f72aacbba0c61fae..7f4ea5b571e4dadf992eb4840eee7e3f3b4fb80c 100644
--- a/neonView/TaskMain_view/TaskMain_view.aod
+++ b/neonView/TaskMain_view/TaskMain_view.aod
@@ -14,6 +14,11 @@
       <entityField>#ENTITY</entityField>
       <view>TaskMainPreview_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>4211b2cf-3a1f-4447-ad1c-f521d2d3f258</name>
+      <entityField>ModuleTrees</entityField>
+      <view>ModuleTree_view</view>
+    </neonViewReference>
     <genericViewTemplate>
       <name>details</name>
       <showDrawer v="true" />
@@ -36,9 +41,9 @@
       <view>DocumentFilter_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>4211b2cf-3a1f-4447-ad1c-f521d2d3f258</name>
-      <entityField>ModuleTrees</entityField>
-      <view>ModuleTree_view</view>
+      <name>37975d30-f449-4a9f-8eac-81dcad4bbf97</name>
+      <entityField>Links</entityField>
+      <view>TaskLinkFilter_view</view>
     </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/TaskPreview_view/TaskPreview_view.aod b/neonView/TaskPreview_view/TaskPreview_view.aod
index cce489a22fc53fab49f62e16ecd82e94dec69397..836ca3935e03bd1225e0bf073d3d3c3238cc4de9 100644
--- a/neonView/TaskPreview_view/TaskPreview_view.aod
+++ b/neonView/TaskPreview_view/TaskPreview_view.aod
@@ -13,6 +13,7 @@
       <iconField>#ICON</iconField>
       <titleField>SUBJECT</titleField>
       <descriptionField>STATUS</descriptionField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
@@ -28,6 +29,10 @@
           <name>dda6aefc-9d4f-4d93-9a45-bc97a278c050</name>
           <entityField>MATURITY_DATE</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>3c7f0603-f659-47ea-adbf-4a4b0b0c6b37</name>
+          <entityField>PROGRESS</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>ebdffed8-4999-4ec1-ac4d-c22514dfed0c</name>
           <entityField>PRIORITY</entityField>
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_TaskProgress.xml b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_TaskProgress.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3ece432b8883adb68b8a781a7c0a2f1295cbffa4
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_TaskProgress.xml
@@ -0,0 +1,87 @@
+<?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="s.listl" id="e73a241c-e04a-4e7e-af93-a88c5a63526d">
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="9887b380-8e6a-4fab-a99c-46172cb9ecc5"/>
+
+            <column name="KEYID" value="ec92271b-eac2-4ec2-be24-ab4abde7e939"/>
+            <column name="TITLE" value="0%"/>
+            <column name="CONTAINER" value="TaskProgress"/>
+            <column name="SORTING" valueNumeric="0"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="c228d007-5f1b-41a9-baaf-4bac444e2d63"/>
+
+            <column name="KEYID" value="5098fde4-660f-4381-9ff5-6d29a858e68e"/>
+            <column name="TITLE" value="25%"/>
+            <column name="CONTAINER" value="TaskProgress"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="9c24af78-bb51-4706-ae3c-35f450fc4034"/>
+
+            <column name="KEYID" value="be372581-b785-44f4-be6a-c0d7b4d32a72"/>
+            <column name="TITLE" value="50%"/>
+            <column name="CONTAINER" value="TaskProgress"/>
+            <column name="SORTING" valueNumeric="2"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="612acb5c-9cde-4229-8910-6ca6eb7bed8c"/>
+
+            <column name="KEYID" value="be372581-b785-44f4-be6a-c0d7b4d32a72"/>
+            <column name="TITLE" value="75%"/>
+            <column name="CONTAINER" value="TaskProgress"/>
+            <column name="SORTING" valueNumeric="3"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="711db73d-eed2-43a6-ac57-a608a831eb8d"/>
+
+            <column name="KEYID" value="5928d5ec-d256-4088-be0c-2cdfd5a8f7fa"/>
+            <column name="TITLE" value="100%"/>
+            <column name="CONTAINER" value="TaskProgress"/>
+            <column name="SORTING" valueNumeric="4"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <rollback>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="9887b380-8e6a-4fab-a99c-46172cb9ecc5" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="c228d007-5f1b-41a9-baaf-4bac444e2d63" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="9c24af78-bb51-4706-ae3c-35f450fc4034" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="612acb5c-9cde-4229-8910-6ca6eb7bed8c" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="711db73d-eed2-43a6-ac57-a608a831eb8d" />
+                </whereParams>
+            </delete>
+        </rollback>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/changelog.xml b/others/db_changes/data_alias/basic/2019.2/changelog.xml
index 7bcf36a9ec5a243887e04344ba8f899b8e33023b..9c36430f2be7ce471419978cad4c32ed37555a21 100644
--- a/others/db_changes/data_alias/basic/2019.2/changelog.xml
+++ b/others/db_changes/data_alias/basic/2019.2/changelog.xml
@@ -80,6 +80,7 @@
     <include relativeToChangelogFile="true" file="AditoBasic/init_SalesprojectState.xml"/>
     <include relativeToChangelogFile="true" file="AditoBasic/init_SalesprojectPhase.xml"/>
     <include relativeToChangelogFile="true" file="AditoBasic/init_TaskPriority.xml"/>
+    <include relativeToChangelogFile="true" file="AditoBasic/init_TaskProgress.xml"/>
     <include relativeToChangelogFile="true" file="AditoBasic/init_SalesprojectCompetitionState.xml"/>
     <include relativeToChangelogFile="true" file="AditoBasic/init_AttributeType.xml"/>
     <include relativeToChangelogFile="true" file="Contact_add_columns.xml"/>
@@ -94,4 +95,6 @@
     <include relativeToChangelogFile="true" file="drop_pricePolitics-weakness-strength.xml"/>
     
     <include relativeToChangelogFile="true" file="update_pricelist_keyword.xml"/>
+    
+    <include relativeToChangelogFile="true" file="create_taskLink.xml"/>
 </databaseChangeLog>
diff --git a/others/db_changes/data_alias/basic/2019.2/create_taskLink.xml b/others/db_changes/data_alias/basic/2019.2/create_taskLink.xml
new file mode 100644
index 0000000000000000000000000000000000000000..16d830a4a6366a2c6a3dd9452b33cd787b645451
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/create_taskLink.xml
@@ -0,0 +1,19 @@
+<?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="s.listl" id="19316d54-36f6-4a96-97b6-0279c9a33520">
+        <createTable tableName="TASKLINK">
+            <column name="TASKLINKID" type="CHAR(36)">
+                <constraints primaryKey="true" primaryKeyName="PK_TASKLINK_TASKLINKID"/>
+            </column>
+            <column name="TASK_ID" type="CHAR(36)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="OBJECT_TYPE" type="NVARCHAR(63)">
+                <constraints nullable="false"/>
+            </column>
+            <column name="OBJECT_ROWID" type="CHAR(36)">
+                <constraints nullable="false"/>
+            </column>
+        </createTable>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/task_add_parent.xml b/others/db_changes/data_alias/basic/2019.2/task_add_parent.xml
index 0bf722803a32e15b3c0661159914fcbc48fa120e..2deaf06e53d313bdeafcce1344a135ccd4cc5c0b 100644
--- a/others/db_changes/data_alias/basic/2019.2/task_add_parent.xml
+++ b/others/db_changes/data_alias/basic/2019.2/task_add_parent.xml
@@ -4,6 +4,7 @@
         <addColumn tableName="TASK">
             <column name="PARENT_CONTEXT" type="VARCHAR(64)"/>
             <column name="PARENT_ID" type="CHAR(36)"/>
+            <column name="PROGRESS" type="CHAR(36)"/>
         </addColumn>
     </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js
index b57b5acc67c6766ede94b1b657d829464a0edc1f..6c571b3e1ac1a1e843a8bc2d56aba2fe0fdee0e7 100644
--- a/process/KeywordRegistry_basic/process.js
+++ b/process/KeywordRegistry_basic/process.js
@@ -55,5 +55,6 @@ $KeywordRegistry.salesprojectStrenght = function(){return "SalesprojectStrenght"
 $KeywordRegistry.salesprojectState = function(){return "SalesprojectState"};
 $KeywordRegistry.salesprojectPhase = function(){return "SalesprojectPhase"};
 $KeywordRegistry.taskPriority = function(){return "TaskPriority"};
+$KeywordRegistry.taskProgress = function(){return "TaskProgress"};
 $KeywordRegistry.salesprojectCompetitionState = function(){return "SalesprojectCompetitionState"};
 $KeywordRegistry.objectRelationType = function(){return "ObjectRelationType"};
diff --git a/process/Task_lib/Task_lib.aod b/process/Task_lib/Task_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..1c447eb7374fc38309c7f8ac5e9f163291e5eb6f
--- /dev/null
+++ b/process/Task_lib/Task_lib.aod
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.1.7">
+  <name>Task_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/Task_lib/process.js</process>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/Task_lib/process.js b/process/Task_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..8d3f2f2525f11cf6da3da3f4c7c33f37241a43ec
--- /dev/null
+++ b/process/Task_lib/process.js
@@ -0,0 +1,22 @@
+import("system.neon");
+import("Context_lib");
+
+/**
+ * Methods used by for tasks.
+ * Do not create an instance of this!
+ * 
+ * @class
+ */
+function TaskUtils () {}
+   
+
+/**
+ * Create a new task
+ */
+TaskUtils.createNewTask = function (pRowId)
+{
+    var params = {};
+    params["ObjectId_param"] = ContextUtils.getCurrentContextId();
+    params["RowId_param"] = pRowId;
+    neon.openContext("Task", null, null, neon.OPERATINGSTATE_NEW, params);
+}
\ No newline at end of file