diff --git a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod
index a01a55abc1883e682f4573c5879475aa868c14db..7d3ad07314968cf32cb6a677ac342433b6bd3883 100644
--- a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod
+++ b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod
@@ -27,9 +27,15 @@
       <name>CAMPAIGNSTEP_ID</name>
       <title>Campaign Step</title>
       <consumer>CampaignSteps</consumer>
+      <mandatoryProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/mandatoryProcess.js</mandatoryProcess>
       <groupable v="true" />
+      <stateProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/displayValueProcess.js</displayValueProcess>
+      <onValueChange>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+      </onValueChangeTypes>
     </entityField>
     <entityField>
       <name>CATEGORY</name>
@@ -71,8 +77,6 @@
     <entityProvider>
       <name>CampaignCosts</name>
       <fieldType>DEPENDENCY_IN</fieldType>
-      <targetContextField>TARGET_CONTEXT</targetContextField>
-      <targetIdField>TARGET_ROWID</targetIdField>
       <dependencies>
         <entityDependency>
           <name>7131288b-af5c-4914-96f5-c5d70217fc23</name>
@@ -90,13 +94,20 @@
           <name>Uid_param</name>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>CampaignId_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>CampaignSteps_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaigncosts/children/campaignsteps_param/valueProcess.js</valueProcess>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityProvider>
       <name>StepCosts</name>
       <fieldType>DEPENDENCY_IN</fieldType>
-      <targetContextField>TARGET_CONTEXT</targetContextField>
-      <targetIdField>TARGET_ROWID</targetIdField>
       <dependencies>
         <entityDependency>
           <name>af147f3e-a1bd-4eb0-9ac8-325dbdaba17d</name>
@@ -104,17 +115,31 @@
           <fieldName>CampaignStepCosts</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>2a92b738-c0bb-4c14-9915-aff9e18effaf</name>
+          <entityName>Campaign_entity</entityName>
+          <fieldName>CampaignStepCosts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
           <name>CampaignStepId_param</name>
           <expose v="true" />
-          <mandatory v="true" />
         </entityParameter>
         <entityParameter>
           <name>Uid_param</name>
           <expose v="false" />
         </entityParameter>
+        <entityParameter>
+          <name>CampaignId_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>CampaignSteps_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/stepcosts/children/campaignsteps_param/valueProcess.js</valueProcess>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityConsumer>
@@ -177,14 +202,6 @@
       <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
-    <entityField>
-      <name>TARGET_CONTEXT</name>
-      <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/target_context/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>TARGET_ROWID</name>
-      <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/target_rowid/valueProcess.js</valueProcess>
-    </entityField>
     <entityParameter>
       <name>Uid_param</name>
       <expose v="true" />
@@ -194,6 +211,7 @@
       <name>netPerParticipant</name>
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00</outputFormat>
+      <state>READONLY</state>
       <titleProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/netperparticipant/titleProcess.js</titleProcess>
       <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/netperparticipant/valueProcess.js</valueProcess>
     </entityField>
@@ -202,8 +220,16 @@
       <title>Participants</title>
       <contentType>NUMBER</contentType>
       <outputFormat>#0</outputFormat>
+      <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/countparticipants/valueProcess.js</valueProcess>
     </entityField>
+    <entityParameter>
+      <name>CampaignSteps_param</name>
+      <title></title>
+      <expose v="true" />
+      <documentation>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignsteps_param/documentation.adoc</documentation>
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/CampaignCost_entitiy/entityfields/campaigncosts/children/campaignsteps_param/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/campaigncosts/children/campaignsteps_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..742074b164130b0dced0dc645104ededc1501e96
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/campaigncosts/children/campaignsteps_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string(0)
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/displayValueProcess.js b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/displayValueProcess.js
index ad91b8afb40a73c0ac60dbd9218ea4840e61b544..ee615b672f09af762e082d55eb0dfae53be9a87d 100644
--- a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/displayValueProcess.js
+++ b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/displayValueProcess.js
@@ -1,16 +1,20 @@
+import("system.neon");
 import("system.translate");
 import("system.result");
 import("system.db");
 import("system.vars");
 import("Campaign_lib");
 
-var campaignStepId = vars.get("$field.CAMPAIGNSTEP_ID");
-if (campaignStepId)
+if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW)
 {
-    var campaignStepName = CampaignUtils.getCampaignStepNameById(campaignStepId);
-    result.string(translate.text("Step") + ": " + campaignStepName);
-}
-else
-{
-    result.string(translate.text("Fix cost"));
-}
+    var campaignStepId = vars.get("$field.CAMPAIGNSTEP_ID");
+    if (campaignStepId)
+    {
+        var campaignStepName = CampaignUtils.getCampaignStepNameById(campaignStepId);
+        result.string(translate.text("Step") + ": " + campaignStepName);
+    }
+    else
+    {
+            result.string(translate.text("Fix cost"));    
+    }
+}
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/mandatoryProcess.js b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..39c2cd139e0d469ba5a2445c0bb53004299c8632
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/mandatoryProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+result.object((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW &&
+                vars.exists("$param.CampaignSteps_param") && vars.get("$param.CampaignSteps_param") == "1" &&
+                vars.exists("$param.CampaignStepId_param") && !vars.get("$param.CampaignStepId_param")));
diff --git a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/onValueChange.js b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..a7827c48e458d541031e9d65941ade4fc7e0ff16
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/onValueChange.js
@@ -0,0 +1,3 @@
+import("system.neon");
+
+neon.setFieldValue("$field.CATEGORY", "");
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/stateProcess.js b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..93d98b6e6e5e4d2e03ce31e3971571940efccc64
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/stateProcess.js
@@ -0,0 +1,13 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW &&
+    vars.exists("$param.CampaignSteps_param") && vars.get("$param.CampaignSteps_param") == "1" &&
+    vars.exists("$param.CampaignStepId_param") && !vars.get("$param.CampaignStepId_param"))
+{
+    result.string(neon.COMPONENTSTATE_AUTO);
+}
+else
+{
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
+}
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/campaignsteps_param/documentation.adoc b/entity/CampaignCost_entitiy/entityfields/campaignsteps_param/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..e7434a04e7650f378d9e46cc04b5b0d7518234d3
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/campaignsteps_param/documentation.adoc
@@ -0,0 +1,2 @@
+if 0: show only fix costs
+if 1: show only campaign steps
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/stepcosts/children/campaignsteps_param/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/stepcosts/children/campaignsteps_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0488a23572b30f97174720a23726a09b8b266381
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/stepcosts/children/campaignsteps_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string(1);
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/target_context/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/target_context/valueProcess.js
deleted file mode 100644
index 21136815c68c9b039bfcf84ba67182b758390c1d..0000000000000000000000000000000000000000
--- a/entity/CampaignCost_entitiy/entityfields/target_context/valueProcess.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import("system.result");
-import("system.vars");
-
-if (vars.exists("$field.CAMPAIGNSTEP_ID") && vars.get("$field.CAMPAIGNSTEP_ID"))
-{
-    result.string("CampaignStep");
-}
-else
-{
-    result.string("");
-}
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/target_rowid/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/target_rowid/valueProcess.js
deleted file mode 100644
index 53ce792ae361dd06c0fe5e7c9faa3c58b09e533a..0000000000000000000000000000000000000000
--- a/entity/CampaignCost_entitiy/entityfields/target_rowid/valueProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.vars");
-
-if (vars.exists("$field.CAMPAIGNSTEP_ID") && vars.get("$field.CAMPAIGNSTEP_ID"))
-{
-    result.string(vars.get("$field.CAMPAIGNSTEP_ID"));
-}
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/recordcontainers/db/conditionProcess.js b/entity/CampaignCost_entitiy/recordcontainers/db/conditionProcess.js
index 32c1d5d1eec824e753a076f310fa3547d59ddae8..ff7f94167b0fbafce7189b2facf299ae60849832 100644
--- a/entity/CampaignCost_entitiy/recordcontainers/db/conditionProcess.js
+++ b/entity/CampaignCost_entitiy/recordcontainers/db/conditionProcess.js
@@ -1,4 +1,4 @@
-import("system.logging");
+import("system.vars");
 import("system.db");
 import("system.result");
 import("Sql_lib");
@@ -7,5 +7,16 @@ var cond = SqlCondition.begin()
                        .andPrepareVars("CAMPAIGNCOST.CAMPAIGNCOSTID", "$param.Uid_param")
                        .andPrepareVars("CAMPAIGNCOST.CAMPAIGN_ID", "$param.CampaignId_param")
                        .andPrepareVars("CAMPAIGNCOST.CAMPAIGNSTEP_ID", "$param.CampaignStepId_param");
+                       
+if (vars.exists("$param.CampaignSteps_param") && vars.get("$param.CampaignSteps_param") == "1")
+{
+    // only step costs
+    cond.and("CAMPAIGNCOST.CAMPAIGNSTEP_ID is not null");
+}
+else
+{
+    // only fix costs
+    cond.and("CAMPAIGNCOST.CAMPAIGNSTEP_ID is null");
+}
 
 result.string(db.translateCondition(cond.build("1=2")));
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod
index 964d14d872715b081510b3ae0c1146abaf463c4b..0596132a5ef70ea76cb360e8a4a845450a9a2ce0 100644
--- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod
+++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod
@@ -2,6 +2,7 @@
 <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.2">
   <name>CampaignParticipant_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <afterOperatingState>%aditoprj%/entity/CampaignParticipant_entity/afterOperatingState.js</afterOperatingState>
   <recordContainer>ParticipantsDbRecordContainer</recordContainer>
   <entityFields>
     <entityProvider>
diff --git a/entity/CampaignParticipant_entity/afterOperatingState.js b/entity/CampaignParticipant_entity/afterOperatingState.js
new file mode 100644
index 0000000000000000000000000000000000000000..d39336402371a7d3f5db536a2e8ca261fa4e7fe3
--- /dev/null
+++ b/entity/CampaignParticipant_entity/afterOperatingState.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW) 
+{
+    neon.refreshAll();
+}
\ No newline at end of file
diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod
index d8d4bc1d15702327cb6ce3295e73dc39e7e5e5e8..9293f8a8400eda41f7fbe21ed1dcf1a2fce983c0 100644
--- a/entity/Campaign_entity/Campaign_entity.aod
+++ b/entity/Campaign_entity/Campaign_entity.aod
@@ -197,6 +197,21 @@
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00</outputFormat>
     </entityField>
+    <entityConsumer>
+      <name>CampaignStepCosts</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>CampaignCost_entitiy</entityName>
+        <fieldName>StepCosts</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>CampaignId_param</name>
+          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaignstepcosts/children/campaignid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Campaign_entity/entityfields/campaignstepcosts/children/campaignid_param/valueProcess.js b/entity/Campaign_entity/entityfields/campaignstepcosts/children/campaignid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c95f5ea0c85673d6f68abfdbef56f55fb63597c1
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/campaignstepcosts/children/campaignid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$sys.uid"));
\ No newline at end of file
diff --git a/neonContext/Campaign/Campaign.aod b/neonContext/Campaign/Campaign.aod
index 381357620a387fb8973674a91df0976fe8f18954..44da77e955ace0671af2cb87a25685eaf48ff6ea 100644
--- a/neonContext/Campaign/Campaign.aod
+++ b/neonContext/Campaign/Campaign.aod
@@ -27,5 +27,9 @@
       <name>2fffb548-0b4f-4986-9b50-aefa2e00bade</name>
       <view>CampaignPreview_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>4a5377cc-af00-49c7-aad2-ac93e2752b3f</name>
+      <view>CampaignCost_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/CampaignCost/CampaignCost.aod b/neonContext/CampaignCost/CampaignCost.aod
index 5db7bce277bc911986de59d7c414d69c41053960..65fbbf22993e1e6edd229db2c3303370dc0b5004 100644
--- a/neonContext/CampaignCost/CampaignCost.aod
+++ b/neonContext/CampaignCost/CampaignCost.aod
@@ -16,7 +16,11 @@
     </neonViewReference>
     <neonViewReference>
       <name>01137074-b129-42bc-86b7-82afc356923b</name>
-      <view>CampaignStepCostFilter_view</view>
+      <view>CampaignGroupedCostFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>a4f131e8-2371-4070-83f7-fd69dfd6a7df</name>
+      <view>CampaignCostExtendedFilter_view</view>
     </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
index d55f1edace98746e9e783a12bff0634b78d694de..69429a3f8b8cf6be7c4719645893042c7f9499e0 100644
--- a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
+++ b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
@@ -14,6 +14,10 @@
       <editMode v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
+        <entityFieldLink>
+          <name>2937d501-ee30-4535-870b-1d5d4ccc21ba</name>
+          <entityField>CAMPAIGNSTEP_ID</entityField>
+        </entityFieldLink>
         <entityFieldLink>
           <name>bb0e5fb9-e82c-47f7-b6fa-f3e5d4c36649</name>
           <entityField>CATEGORY</entityField>
diff --git a/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod b/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b11c639464f0e99665f8dfb3bd5ace13b8656c8c
--- /dev/null
+++ b/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>CampaignCostExtendedFilter_view</name>
+  <title>Stop costs</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>CampaignCost</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>5202d410-fc4d-4109-93b1-8743954a25e2</name>
+          <entityField>CATEGORY</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>0f42e172-f2d0-45de-8a39-d0e4609b3393</name>
+          <entityField>countParticipants</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>3dc61836-42a2-4cd9-b87f-14381d72d01a</name>
+          <entityField>netPerParticipant</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>b3c90c61-9f12-4b1c-9e27-b88abe77fd4e</name>
+          <entityField>NET</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
index d3aa701691615ece48b9dc19340ab4754bf26c49..8b940f6c9f56259fc92e3c57128293689d54e4ef 100644
--- a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
+++ b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
@@ -9,31 +9,19 @@
     </boxLayout>
   </layout>
   <children>
-    <treeTableViewTemplate>
-      <name>CostTreeTable</name>
-      <favoriteActionGroup1>alter</favoriteActionGroup1>
-      <defaultGroupFields>
-        <element>CAMPAIGNSTEP_ID</element>
-      </defaultGroupFields>
+    <tableViewTemplate>
+      <name>CampaignCost</name>
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
-          <name>457caff8-0403-425f-839c-62e5d05fe3a1</name>
+          <name>651c5bd4-8f87-40d4-9d1f-38549b1e5fdf</name>
           <entityField>CATEGORY</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>f8c6439c-9536-477b-af19-26719902e12e</name>
-          <entityField>netPerParticipant</entityField>
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>8239e81b-d69c-4ea9-b55d-83e79d1693cf</name>
-          <entityField>countParticipants</entityField>
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>2adbd887-f1df-43ff-bde9-12c8273af7a9</name>
+          <name>ee4676af-5bb6-4805-99cb-954ef3b178f0</name>
           <entityField>NET</entityField>
         </neonTableColumn>
       </columns>
-    </treeTableViewTemplate>
+    </tableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/CampaignCost_view/CampaignCost_view.aod b/neonView/CampaignCost_view/CampaignCost_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b392d37aa91da50891fa207e1301682c74d93ec1
--- /dev/null
+++ b/neonView/CampaignCost_view/CampaignCost_view.aod
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>CampaignCost_view</name>
+  <title>Cost</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <neonViewReference>
+      <name>127a0cab-ec21-47e6-ba6c-c091cb31c794</name>
+      <entityField>CampaignCosts</entityField>
+      <view>CampaignCostFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>5830d1ed-c118-4a37-ab65-4727e8312c0a</name>
+      <entityField>CampaignStepCosts</entityField>
+      <view>CampaignGroupedCostFilter_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/CampaignStepCostFilter_view/CampaignStepCostFilter_view.aod b/neonView/CampaignGroupedCostFilter_view/CampaignGroupedCostFilter_view.aod
similarity index 88%
rename from neonView/CampaignStepCostFilter_view/CampaignStepCostFilter_view.aod
rename to neonView/CampaignGroupedCostFilter_view/CampaignGroupedCostFilter_view.aod
index bfcf65a77f00fc89eb2fd9187116e9ff59520a94..19d2f02ebff5a5fb6edc46556a0a637208963b6f 100644
--- a/neonView/CampaignStepCostFilter_view/CampaignStepCostFilter_view.aod
+++ b/neonView/CampaignGroupedCostFilter_view/CampaignGroupedCostFilter_view.aod
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
-  <name>CampaignStepCostFilter_view</name>
+  <name>CampaignGroupedCostFilter_view</name>
+  <title>Step costs</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
@@ -12,6 +13,9 @@
     <treeTableViewTemplate>
       <name>CostTreeTable</name>
       <favoriteActionGroup1>alter</favoriteActionGroup1>
+      <defaultGroupFields>
+        <element>CAMPAIGNSTEP_ID</element>
+      </defaultGroupFields>
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
diff --git a/neonView/CampaignMain_view/CampaignMain_view.aod b/neonView/CampaignMain_view/CampaignMain_view.aod
index 8a12283df0072c9a62b95936311c46ce150a4bbd..e35b2793103a62830da3077fb2619a2db03d079d 100644
--- a/neonView/CampaignMain_view/CampaignMain_view.aod
+++ b/neonView/CampaignMain_view/CampaignMain_view.aod
@@ -26,9 +26,9 @@
       <view>CampaignParticipantFilter_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>77b0a99a-ab9f-4b1a-a7c4-3dc470c10c22</name>
-      <entityField>CampaignCosts</entityField>
-      <view>CampaignCostFilter_view</view>
+      <name>405213b0-e044-4199-9cd3-220c09ac7323</name>
+      <entityField>#ENTITY</entityField>
+      <view>CampaignCost_view</view>
     </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
index f649cd097d5c758869714eb53dc6382b0042b325..ba87160a9b109f44b7bcc99017b7c48ec0715d8d 100644
--- a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
+++ b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
@@ -25,9 +25,9 @@
       <view>CampaignStepAnalysis_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>c3810063-9fdd-4f11-b742-ce311cbb183e</name>
+      <name>a5a2f431-9c55-45d7-8765-100e2d5dbb81</name>
       <entityField>CampaignStepCosts</entityField>
-      <view>CampaignStepCostFilter_view</view>
+      <view>CampaignCostExtendedFilter_view</view>
     </neonViewReference>
   </children>
 </neonView>