From bdbb687a699423449256f6865a13d60601c0f201 Mon Sep 17 00:00:00 2001
From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local>
Date: Mon, 29 Apr 2019 16:14:11 +0200
Subject: [PATCH] Campaign, CampaignStep: Activities and Tasks added

---
 entity/Activity_entity/Activity_entity.aod    | 12 ++++
 .../CampaignStep_entity.aod                   | 65 +++++++++++++++++++
 .../children/objectid_param/valueProcess.js   |  4 ++
 .../children/rowid_param/valueProcess.js      |  4 ++
 .../newactivity/onActionProcess.js            |  4 ++
 .../newactivity/tooltipProcess.js             |  4 ++
 .../entityfields/newtask/onActionProcess.js   |  4 ++
 .../children/objectid_param/valueProcess.js   |  4 ++
 .../children/rowid_param/valueProcess.js      |  4 ++
 .../entityfields/tasks/stateProcess.js        | 10 +++
 entity/Campaign_entity/Campaign_entity.aod    | 65 +++++++++++++++++++
 .../children/objectid_param/valueProcess.js   |  4 ++
 .../children/rowid_param/valueProcess.js      |  4 ++
 .../newactivity/onActionProcess.js            |  4 ++
 .../newactivity/tooltipProcess.js             |  4 ++
 .../entityfields/newtask/onActionProcess.js   |  4 ++
 .../children/objectid_param/valueProcess.js   |  4 ++
 .../children/rowid_param/valueProcess.js      |  4 ++
 .../entityfields/tasks/stateProcess.js        | 10 +++
 entity/Object_entity/Object_entity.aod        | 18 +++++
 entity/Task_entity/Task_entity.aod            | 12 ++++
 .../CampaignMain_view/CampaignMain_view.aod   | 10 +++
 .../CampaignPreview_view.aod                  |  1 +
 .../CampaignStepMain_view.aod                 | 10 +++
 .../CampaignStepPreview_view.aod              |  1 +
 process/Context_lib/process.js                |  6 +-
 26 files changed, 274 insertions(+), 2 deletions(-)
 create mode 100644 entity/CampaignStep_entity/entityfields/activities/children/objectid_param/valueProcess.js
 create mode 100644 entity/CampaignStep_entity/entityfields/activities/children/rowid_param/valueProcess.js
 create mode 100644 entity/CampaignStep_entity/entityfields/newactivity/onActionProcess.js
 create mode 100644 entity/CampaignStep_entity/entityfields/newactivity/tooltipProcess.js
 create mode 100644 entity/CampaignStep_entity/entityfields/newtask/onActionProcess.js
 create mode 100644 entity/CampaignStep_entity/entityfields/tasks/children/objectid_param/valueProcess.js
 create mode 100644 entity/CampaignStep_entity/entityfields/tasks/children/rowid_param/valueProcess.js
 create mode 100644 entity/CampaignStep_entity/entityfields/tasks/stateProcess.js
 create mode 100644 entity/Campaign_entity/entityfields/activities/children/objectid_param/valueProcess.js
 create mode 100644 entity/Campaign_entity/entityfields/activities/children/rowid_param/valueProcess.js
 create mode 100644 entity/Campaign_entity/entityfields/newactivity/onActionProcess.js
 create mode 100644 entity/Campaign_entity/entityfields/newactivity/tooltipProcess.js
 create mode 100644 entity/Campaign_entity/entityfields/newtask/onActionProcess.js
 create mode 100644 entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js
 create mode 100644 entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js
 create mode 100644 entity/Campaign_entity/entityfields/tasks/stateProcess.js

diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index ed7f41f79c..7b9eabc8db 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -231,6 +231,18 @@
           <fieldName>Activities</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>9b416661-628d-4f8d-b8dc-9543cf5bbb1c</name>
+          <entityName>Campaign_entity</entityName>
+          <fieldName>Activities</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>4869a849-8717-48ec-9dbd-73df96992042</name>
+          <entityName>CampaignStep_entity</entityName>
+          <fieldName>Activities</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/CampaignStep_entity/CampaignStep_entity.aod b/entity/CampaignStep_entity/CampaignStep_entity.aod
index e26c5f83d6..1ad56f5df2 100644
--- a/entity/CampaignStep_entity/CampaignStep_entity.aod
+++ b/entity/CampaignStep_entity/CampaignStep_entity.aod
@@ -9,6 +9,14 @@
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
+      <dependencies>
+        <entityDependency>
+          <name>13f82959-7e04-449f-a657-c34f6b97f3be</name>
+          <entityName>Object_entity</entityName>
+          <fieldName>CampaignSteps</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
     </entityProvider>
     <entityField>
       <name>CAMPAIGNSTEPID</name>
@@ -237,6 +245,63 @@
         <fieldName>CampaignProvider</fieldName>
       </dependency>
     </entityConsumer>
+    <entityConsumer>
+      <name>Activities</name>
+      <title>Activities</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Activity_entity</entityName>
+        <fieldName>LinkedObjects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>RowId_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectId_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Tasks</name>
+      <title>Tasks</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <stateProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/tasks/stateProcess.js</stateProcess>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Task_entity</entityName>
+        <fieldName>LinkedObjects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>RowId_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectId_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityActionField>
+      <name>newActivity</name>
+      <fieldType>ACTION</fieldType>
+      <title>New activity</title>
+      <onActionProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
+      <iconId>NEON:HISTORY</iconId>
+      <tooltip>New activity</tooltip>
+      <tooltipProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>newTask</name>
+      <fieldType>ACTION</fieldType>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TASKS</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/CampaignStep_entity/entityfields/activities/children/objectid_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/activities/children/objectid_param/valueProcess.js
new file mode 100644
index 0000000000..008915f61d
--- /dev/null
+++ b/entity/CampaignStep_entity/entityfields/activities/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/CampaignStep_entity/entityfields/activities/children/rowid_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/activities/children/rowid_param/valueProcess.js
new file mode 100644
index 0000000000..73512b5ba0
--- /dev/null
+++ b/entity/CampaignStep_entity/entityfields/activities/children/rowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CAMPAIGNSTEPID"));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/newactivity/onActionProcess.js b/entity/CampaignStep_entity/entityfields/newactivity/onActionProcess.js
new file mode 100644
index 0000000000..59a786db9b
--- /dev/null
+++ b/entity/CampaignStep_entity/entityfields/newactivity/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("ActivityTask_lib");
+
+ActivityUtils.createNewActivity(vars.getString("$field.CAMPAIGNSTEPID"));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/newactivity/tooltipProcess.js b/entity/CampaignStep_entity/entityfields/newactivity/tooltipProcess.js
new file mode 100644
index 0000000000..c71e677c22
--- /dev/null
+++ b/entity/CampaignStep_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/CampaignStep_entity/entityfields/newtask/onActionProcess.js b/entity/CampaignStep_entity/entityfields/newtask/onActionProcess.js
new file mode 100644
index 0000000000..c674a6a494
--- /dev/null
+++ b/entity/CampaignStep_entity/entityfields/newtask/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("ActivityTask_lib");
+
+TaskUtils.createNewTask(vars.get("$field.CAMPAIGNSTEPID"));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/tasks/children/objectid_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/tasks/children/objectid_param/valueProcess.js
new file mode 100644
index 0000000000..008915f61d
--- /dev/null
+++ b/entity/CampaignStep_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/CampaignStep_entity/entityfields/tasks/children/rowid_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/tasks/children/rowid_param/valueProcess.js
new file mode 100644
index 0000000000..73512b5ba0
--- /dev/null
+++ b/entity/CampaignStep_entity/entityfields/tasks/children/rowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CAMPAIGNSTEPID"));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/tasks/stateProcess.js b/entity/CampaignStep_entity/entityfields/tasks/stateProcess.js
new file mode 100644
index 0000000000..527624728a
--- /dev/null
+++ b/entity/CampaignStep_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.CAMPAIGNSTEPID"), ContextUtils.getCurrentContextId()))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod
index 1b94e92107..d3fedb96ae 100644
--- a/entity/Campaign_entity/Campaign_entity.aod
+++ b/entity/Campaign_entity/Campaign_entity.aod
@@ -9,6 +9,14 @@
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
+      <dependencies>
+        <entityDependency>
+          <name>8db36fa6-e799-488c-882f-1141f781c9dc</name>
+          <entityName>Object_entity</entityName>
+          <fieldName>Campaigns</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
     </entityProvider>
     <entityField>
       <name>CAMPAIGNID</name>
@@ -228,6 +236,63 @@
       <title>Participants</title>
       <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/participantcount/valueProcess.js</valueProcess>
     </entityField>
+    <entityConsumer>
+      <name>Activities</name>
+      <title>Activities</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Activity_entity</entityName>
+        <fieldName>LinkedObjects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectId_param</name>
+          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>RowId_param</name>
+          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Tasks</name>
+      <title>Tasks</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <stateProcess>%aditoprj%/entity/Campaign_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/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>RowId_param</name>
+          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityActionField>
+      <name>newActivity</name>
+      <fieldType>ACTION</fieldType>
+      <title>New activity</title>
+      <onActionProcess>%aditoprj%/entity/Campaign_entity/entityfields/newactivity/onActionProcess.js</onActionProcess>
+      <iconId>NEON:HISTORY</iconId>
+      <tooltip>New activity</tooltip>
+      <tooltipProcess>%aditoprj%/entity/Campaign_entity/entityfields/newactivity/tooltipProcess.js</tooltipProcess>
+    </entityActionField>
+    <entityActionField>
+      <name>newTask</name>
+      <fieldType>ACTION</fieldType>
+      <title>New task</title>
+      <onActionProcess>%aditoprj%/entity/Campaign_entity/entityfields/newtask/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:TASKS</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Campaign_entity/entityfields/activities/children/objectid_param/valueProcess.js b/entity/Campaign_entity/entityfields/activities/children/objectid_param/valueProcess.js
new file mode 100644
index 0000000000..008915f61d
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/activities/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/Campaign_entity/entityfields/activities/children/rowid_param/valueProcess.js b/entity/Campaign_entity/entityfields/activities/children/rowid_param/valueProcess.js
new file mode 100644
index 0000000000..3814648f50
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/activities/children/rowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CAMPAIGNID"));
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/newactivity/onActionProcess.js b/entity/Campaign_entity/entityfields/newactivity/onActionProcess.js
new file mode 100644
index 0000000000..3cc8f6e501
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/newactivity/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("ActivityTask_lib");
+
+ActivityUtils.createNewActivity(vars.getString("$field.CAMPAIGNID"));
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/newactivity/tooltipProcess.js b/entity/Campaign_entity/entityfields/newactivity/tooltipProcess.js
new file mode 100644
index 0000000000..c71e677c22
--- /dev/null
+++ b/entity/Campaign_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/Campaign_entity/entityfields/newtask/onActionProcess.js b/entity/Campaign_entity/entityfields/newtask/onActionProcess.js
new file mode 100644
index 0000000000..d870f4d21c
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/newtask/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("ActivityTask_lib");
+
+TaskUtils.createNewTask(vars.get("$field.CAMPAIGNID"));
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js b/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js
new file mode 100644
index 0000000000..008915f61d
--- /dev/null
+++ b/entity/Campaign_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/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js b/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js
new file mode 100644
index 0000000000..3814648f50
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CAMPAIGNID"));
\ No newline at end of file
diff --git a/entity/Campaign_entity/entityfields/tasks/stateProcess.js b/entity/Campaign_entity/entityfields/tasks/stateProcess.js
new file mode 100644
index 0000000000..d77c2eeb19
--- /dev/null
+++ b/entity/Campaign_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.CAMPAIGNID"), ContextUtils.getCurrentContextId()))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod
index 99ed958580..e750519f47 100644
--- a/entity/Object_entity/Object_entity.aod
+++ b/entity/Object_entity/Object_entity.aod
@@ -154,6 +154,24 @@
         </entityParameter>
       </children>
     </entityProvider>
+    <entityConsumer>
+      <name>Campaigns</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Campaign_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>CampaignSteps</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>CampaignStep_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 32400b4e84..5705fe5b4a 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -361,6 +361,18 @@
           <fieldName>Tasks</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>335e31ad-ab67-4567-b4ea-3668f04922b2</name>
+          <entityName>Campaign_entity</entityName>
+          <fieldName>Tasks</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>fbaa2f6c-0ba1-4c93-acae-d7b636581679</name>
+          <entityName>CampaignStep_entity</entityName>
+          <fieldName>Tasks</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/neonView/CampaignMain_view/CampaignMain_view.aod b/neonView/CampaignMain_view/CampaignMain_view.aod
index e35b279310..3d9df5dea9 100644
--- a/neonView/CampaignMain_view/CampaignMain_view.aod
+++ b/neonView/CampaignMain_view/CampaignMain_view.aod
@@ -30,5 +30,15 @@
       <entityField>#ENTITY</entityField>
       <view>CampaignCost_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>90d3d016-63e6-4e8a-98ee-30033bef49fc</name>
+      <entityField>Activities</entityField>
+      <view>ActivityFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>e28e5598-9366-4f5a-be8f-70dd3cc0399a</name>
+      <entityField>Tasks</entityField>
+      <view>TaskFilter_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/CampaignPreview_view/CampaignPreview_view.aod b/neonView/CampaignPreview_view/CampaignPreview_view.aod
index a1d6b8859c..6fd667be9f 100644
--- a/neonView/CampaignPreview_view/CampaignPreview_view.aod
+++ b/neonView/CampaignPreview_view/CampaignPreview_view.aod
@@ -17,6 +17,7 @@
       <titleField>NAME</titleField>
       <subtitleField>STATE</subtitleField>
       <descriptionField>DESCRIPTION</descriptionField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
       <title></title>
     </cardViewTemplate>
diff --git a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
index ba87160a9b..0c08335180 100644
--- a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
+++ b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
@@ -29,5 +29,15 @@
       <entityField>CampaignStepCosts</entityField>
       <view>CampaignCostExtendedFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>d99ab70c-2a08-408e-a665-1ef566c75650</name>
+      <entityField>Activities</entityField>
+      <view>ActivityFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>4fd5e3cc-0696-4fc4-877b-440c0b6c2472</name>
+      <entityField>Tasks</entityField>
+      <view>TaskFilter_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod
index f3de7b97b3..9cb3d9fa4e 100644
--- a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod
+++ b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod
@@ -15,6 +15,7 @@
       <titleField>NAME</titleField>
       <subtitleField>STATE</subtitleField>
       <descriptionField>DESCRIPTION</descriptionField>
+      <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js
index 0890b12f0f..deef3a856b 100644
--- a/process/Context_lib/process.js
+++ b/process/Context_lib/process.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.translate");
 import("system.project");
 import("system.vars");
@@ -385,11 +386,12 @@ ContextUtils.getSelectMap  = function()
                                                 maskingUtils.cast("CAMPAIGNSTEP.NAME", SQLTYPES.VARCHAR, 10)
                                             ], "", false))
                          .setContactIdField("CAMPAIGNPARTICIPANT.CONTACT_ID")
-                         .setJoinExpression("join CAMPAIGNPARTICIPANT on CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID " +
-                                            "join CAMPAIGNSTEP on CAMPAIGNSTEP.CAMPAIGNSTEPID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID")
+                         .setJoinExpression("left join CAMPAIGNPARTICIPANT on CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID " +
+                                            "left join CAMPAIGNSTEP on CAMPAIGNSTEP.CAMPAIGNSTEPID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID")
                         .setCreationDateField("CAMPAIGNSTEP.DATE_START")
                         .setStateField("CAMPAIGN.STATE")
                         .setActiveStates(["e04c9c59-0590-463c-a10e-e25c583e9cf2", "42e1ee2b-0108-4ccf-ab43-29cbcb0377bf"])
+            ,"CampaignStep" : ContextSelector.create("CAMPAIGNSTEP", "CAMPAIGNSTEPID", "NAME")
 
     }
 }
-- 
GitLab