diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index ed7f41f79ce2b5ec3267c56e0da9d45cee271ecc..7b9eabc8dbd1755143c0ad44d6f13bcbe0a36721 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 e26c5f83d6da803c7737f361b6e46536217fa0d6..1ad56f5df2a56013327f69b2f47d9aacb7ef9438 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 0000000000000000000000000000000000000000..008915f61deac19ccdd40fff81701de63eb3b6a2
--- /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 0000000000000000000000000000000000000000..73512b5ba01cbb1eb0c5c71d8b3bb16712f8f7bc
--- /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 0000000000000000000000000000000000000000..59a786db9b15cca4809d11586ba9adc7b70fea37
--- /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 0000000000000000000000000000000000000000..c71e677c22663c2295e524aa7f3ed3dd571724d7
--- /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 0000000000000000000000000000000000000000..c674a6a4942409c114993fc541519e0b3c23a236
--- /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 0000000000000000000000000000000000000000..008915f61deac19ccdd40fff81701de63eb3b6a2
--- /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 0000000000000000000000000000000000000000..73512b5ba01cbb1eb0c5c71d8b3bb16712f8f7bc
--- /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 0000000000000000000000000000000000000000..527624728ab45db1d1e548022197a2e509eee432
--- /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 1b94e9210769af76e7e2c9bba236bdac858268c4..d3fedb96ae942e45c3b515c244bcfb15e6a3af61 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 0000000000000000000000000000000000000000..008915f61deac19ccdd40fff81701de63eb3b6a2
--- /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 0000000000000000000000000000000000000000..3814648f507bd77edb266f38a807c1669e8c5f1e
--- /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 0000000000000000000000000000000000000000..3cc8f6e5013e0a16d03444898c3a7f2cfa366552
--- /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 0000000000000000000000000000000000000000..c71e677c22663c2295e524aa7f3ed3dd571724d7
--- /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 0000000000000000000000000000000000000000..d870f4d21cebf7aeaf34d6b59f2157d03d8e82ff
--- /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 0000000000000000000000000000000000000000..008915f61deac19ccdd40fff81701de63eb3b6a2
--- /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 0000000000000000000000000000000000000000..3814648f507bd77edb266f38a807c1669e8c5f1e
--- /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 0000000000000000000000000000000000000000..d77c2eeb195571306ce7f9e977a5f9ad26b47079
--- /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 99ed95858065c06f5a57e982a8701195b1d412c1..e750519f4736d6a40d6e9d71616561f8a5577f48 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 32400b4e84b9d76db5d1f3f4a943cba2fade10f7..5705fe5b4aad43f3add818d789234d4dffabfea5 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 e35b2793103a62830da3077fb2619a2db03d079d..3d9df5dea94130c44f9e55024bf787ea0ed00f32 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 a1d6b8859c18d6f830605335621dc7a623376ad4..6fd667be9fa00e172dbce25a23d4e3f5553ed8f8 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 ba87160a9b109f44b7bcc99017b7c48ec0715d8d..0c083351809757f1e6c5e4a1395b279506d3a90e 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 f3de7b97b364387b4ccc0e4782dcca1a011bf9c0..9cb3d9fa4e34b890559c090cd78ed3e218d2126b 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 0890b12f0f1561015d6a9076f40f53cfd90e780d..deef3a856b16bbd1addfba01076ea05afc3b20d4 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")
 
     }
 }