diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod
index f152d300ba86ed531c2c72ccb9aa56842f90339e..7a28fa41806e6c871804cfdcfd6520ad14441052 100644
--- a/entity/Contract_entity/Contract_entity.aod
+++ b/entity/Contract_entity/Contract_entity.aod
@@ -149,6 +149,10 @@
           <name>ObjectId_param</name>
           <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>PresetLinks_param</name>
+          <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityConsumer>
@@ -284,6 +288,8 @@
       <title>New activity</title>
       <onActionProcess>%aditoprj%/entity/Contract_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
       <iconId>NEON:HISTORY</iconId>
+      <tooltip>New activity</tooltip>
+      <tooltipProcess>%aditoprj%/entity/Contract_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess>
     </entityActionField>
     <entityConsumer>
       <name>Attributes</name>
@@ -331,6 +337,38 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>Tasks</name>
+      <title>Tasks</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/tasks/stateProcess.js</stateProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Task_entity</entityName>
+        <fieldName>LinkedObjects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectId_param</name>
+          <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>RowId_param</name>
+          <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>PresetLinks_param</name>
+          <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityActionField>
+      <name>newTask</name>
+      <fieldType>ACTION</fieldType>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/Contract_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TASKS</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Contract_entity/entityfields/activities/children/presetlinks_param/valueProcess.js b/entity/Contract_entity/entityfields/activities/children/presetlinks_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..650bf07d2a39d1c673866de4ef9753f13f3ebed3
--- /dev/null
+++ b/entity/Contract_entity/entityfields/activities/children/presetlinks_param/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+result.object(links);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/newactivity/onActionProcess.js b/entity/Contract_entity/entityfields/newactivity/onActionProcess.js
index 41454e813d0f046d85bbb4b17767ee81990519df..41a76599f06b678e7f2a3f89f59d0c5e0c0c3004 100644
--- a/entity/Contract_entity/entityfields/newactivity/onActionProcess.js
+++ b/entity/Contract_entity/entityfields/newactivity/onActionProcess.js
@@ -1,4 +1,13 @@
+import("Contact_lib");
 import("system.vars");
 import("ActivityTask_lib");
 
-ActivityUtils.createNewActivity(vars.getString("$field.CONTRACTID"));
\ No newline at end of file
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+ActivityUtils.createNewActivity(vars.getString("$field.CONTRACTID"), links);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/newactivity/tooltipProcess.js b/entity/Contract_entity/entityfields/newactivity/tooltipProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c71e677c22663c2295e524aa7f3ed3dd571724d7
--- /dev/null
+++ b/entity/Contract_entity/entityfields/newactivity/tooltipProcess.js
@@ -0,0 +1,4 @@
+import("system.translate");
+import("system.result");
+
+result.string(translate.text("New activity"));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/newtask/onActionProcess.js b/entity/Contract_entity/entityfields/newtask/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7e165e15e52378d09e5723adcb0bedd748d84676
--- /dev/null
+++ b/entity/Contract_entity/entityfields/newtask/onActionProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("ActivityTask_lib");
+import("Contact_lib");
+
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+TaskUtils.createNewTask(vars.get("$field.CONTRACTID"), links);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/tasks/children/objectid_param/valueProcess.js b/entity/Contract_entity/entityfields/tasks/children/objectid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..008915f61deac19ccdd40fff81701de63eb3b6a2
--- /dev/null
+++ b/entity/Contract_entity/entityfields/tasks/children/objectid_param/valueProcess.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/Contract_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js b/entity/Contract_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..650bf07d2a39d1c673866de4ef9753f13f3ebed3
--- /dev/null
+++ b/entity/Contract_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+result.object(links);
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/tasks/children/rowid_param/valueProcess.js b/entity/Contract_entity/entityfields/tasks/children/rowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..645e7585b75cdbb9e83fb8a6e4c572c100ae70da
--- /dev/null
+++ b/entity/Contract_entity/entityfields/tasks/children/rowid_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.vars");
+import("system.result");
+result.string(vars.get("$field.CONTRACTID"));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/tasks/stateProcess.js b/entity/Contract_entity/entityfields/tasks/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f66e3b89565ade4ff0e1b2b982a17f2fd328f02f
--- /dev/null
+++ b/entity/Contract_entity/entityfields/tasks/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
+
+if(TaskUtils.hasTasks(vars.get("$field.CONTRACTID"), ContextUtils.getCurrentContextId()))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod
index df53ce2634c44af5cc9ac01735311f1f258e8b35..c7903aa272ac17c448f7b8f5db05151e15f23f29 100644
--- a/entity/Order_entity/Order_entity.aod
+++ b/entity/Order_entity/Order_entity.aod
@@ -425,6 +425,7 @@
       <name>Tasks</name>
       <title>Tasks</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
+      <stateProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/stateProcess.js</stateProcess>
       <dependency>
         <name>dependency</name>
         <entityName>Task_entity</entityName>
diff --git a/entity/Order_entity/entityfields/tasks/stateProcess.js b/entity/Order_entity/entityfields/tasks/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..712bf69e9725d83a9d77d7569b0b83917e404d8e
--- /dev/null
+++ b/entity/Order_entity/entityfields/tasks/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
+
+if(TaskUtils.hasTasks(vars.get("$field.SALESORDERID"), ContextUtils.getCurrentContextId()))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index 407d8b4db1d219a6f8a251555a60a03db0c8fec8..54346ad6eed74fe502ffdcca6e664985c8c51072 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -96,9 +96,6 @@
           <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/contact/children/orgid_param/valueProcess.js</valueProcess>
           <triggerRecalculation v="true" />
         </entityParameter>
-        <entityParameter>
-          <name>ContactId_param</name>
-        </entityParameter>
       </children>
     </entityConsumer>
     <entityFieldGroup>
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 6b5d3f17e9deff309d1a461e653e609bebf73499..c2a53c27f121cce774b392c32562c0bf65569073 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -354,6 +354,12 @@
           <fieldName>Tasks</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>2b0c15eb-fa9a-4ee8-a8b1-5d0f344ddad6</name>
+          <entityName>Contract_entity</entityName>
+          <fieldName>Tasks</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/neonView/ContractMain_view/ContractMain_view.aod b/neonView/ContractMain_view/ContractMain_view.aod
index 83ff714a33918c32ee14942f3b1146e3fa2a9814..dd52050bf2edb9d1e3ed7d972a4006db611390c2 100644
--- a/neonView/ContractMain_view/ContractMain_view.aod
+++ b/neonView/ContractMain_view/ContractMain_view.aod
@@ -19,6 +19,11 @@
       <entityField>Activities</entityField>
       <view>ActivityFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>24fb8357-a6f7-425c-a579-a9251913c8d7</name>
+      <entityField>Tasks</entityField>
+      <view>TaskFilter_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>1bf6faf5-9a22-4900-a497-54b6c225584b</name>
       <entityField>Documents</entityField>
diff --git a/neonView/ContractPreview_view/ContractPreview_view.aod b/neonView/ContractPreview_view/ContractPreview_view.aod
index fe91f152b3ca9d78a49bcbbe33e17ea112f4d8a7..328e2dd523937fb023dda5ce211cc3678946b96b 100644
--- a/neonView/ContractPreview_view/ContractPreview_view.aod
+++ b/neonView/ContractPreview_view/ContractPreview_view.aod
@@ -14,6 +14,7 @@
       <iconField>IMAGE</iconField>
       <titleField>CONTRACTCODE_DISPLAY_fieldGroup</titleField>
       <descriptionField>CONTACT_ID</descriptionField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>