diff --git a/.liquibase/Data_alias/basic/2019.2/CampaignManagement/create_campaignState.xml b/.liquibase/Data_alias/basic/2019.2/CampaignManagement/create_campaignState.xml
index 6b0cdb1acceef93da62c484ece32f6580634a475..ead502807aa3d421af1242ce059178ce8c2085ac 100644
--- a/.liquibase/Data_alias/basic/2019.2/CampaignManagement/create_campaignState.xml
+++ b/.liquibase/Data_alias/basic/2019.2/CampaignManagement/create_campaignState.xml
@@ -9,7 +9,7 @@
             <column name="CONTAINER" value="CampaignManagementStates"/>
             <column name="SORTING" valueNumeric="1"/>
             <column name="ISACTIVE" valueNumeric="1"/>
-            <column name="ISESSENTIAL" valueNumeric="0"/>
+            <column name="ISESSENTIAL" valueNumeric="1"/>
         </insert>
         <insert tableName="AB_KEYWORD_ENTRY">
             <column name="AB_KEYWORD_ENTRYID" value="3e5036a1-43a1-4bb1-ad56-ed42df7c9538"/>
diff --git a/.liquibase/Data_alias/basic/2019.2/CampaignManagement/create_campaignStepState.xml b/.liquibase/Data_alias/basic/2019.2/CampaignManagement/create_campaignStepState.xml
index f6f76c455b1bed58831e1e9d747c5c294f534f26..c7560f94c6359a13bcad0a3982955f6a4a49cc2f 100644
--- a/.liquibase/Data_alias/basic/2019.2/CampaignManagement/create_campaignStepState.xml
+++ b/.liquibase/Data_alias/basic/2019.2/CampaignManagement/create_campaignStepState.xml
@@ -9,7 +9,7 @@
             <column name="CONTAINER" value="CampaignManagementStepStates"/>
             <column name="SORTING" valueNumeric="1"/>
             <column name="ISACTIVE" valueNumeric="1"/>
-            <column name="ISESSENTIAL" valueNumeric="0"/>
+            <column name="ISESSENTIAL" valueNumeric="1"/>
         </insert>
         <insert tableName="AB_KEYWORD_ENTRY">
             <column name="AB_KEYWORD_ENTRYID" value="b1f5ea38-1b8c-47a8-a8ad-4c6ed9c26cda"/>
diff --git a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod
index 86082df7366af7ec95f7f438dd939249c6b8d038..6f2dff01cc0a13523ca97825fcc799a762f3b274 100644
--- a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod
+++ b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod
@@ -9,28 +9,41 @@
     </entityProvider>
     <entityField>
       <name>CAMPAIGNCOSTID</name>
+      <mandatory v="true" />
       <searchable v="false" />
       <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaigncostid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>CAMPAIGN_ID</name>
       <title>Campaign</title>
+      <consumer>Campaigns</consumer>
+      <mandatory v="true" />
       <groupable v="true" />
+      <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaign_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaign_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>CAMPAIGNSTEP_ID</name>
       <title>Campaign Step</title>
+      <consumer>CampaignSteps</consumer>
       <groupable v="true" />
+      <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>CATEGORY</name>
       <title>Category</title>
+      <consumer>KeywordCampaignManagementCostCategory</consumer>
+      <mandatory v="true" />
       <groupable v="true" />
+      <displayValueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/category/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>NET</name>
       <title>Cost</title>
       <contentType>NUMBER</contentType>
+      <outputFormat>#,##0.00</outputFormat>
+      <mandatory v="true" />
     </entityField>
     <entityField>
       <name>USER_NEW</name>
@@ -57,6 +70,8 @@
     <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>
@@ -65,10 +80,41 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
+      <children>
+        <entityParameter>
+          <name>CampaignStepId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>Uid_param</name>
+          <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>
+          <entityName>CampaignStep_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>
+      </children>
     </entityProvider>
     <entityConsumer>
       <name>Campaigns</name>
@@ -88,11 +134,63 @@
         <fieldName>CampaignSteps</fieldName>
       </dependency>
     </entityConsumer>
+    <entityConsumer>
+      <name>KeywordCampaignManagementCostCategory</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityActionGroup>
+      <name>alter</name>
+      <children>
+        <entityActionField>
+          <name>edit</name>
+          <fieldType>ACTION</fieldType>
+          <onActionProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/alter/children/edit/onActionProcess.js</onActionProcess>
+          <isSelectionAction v="true" />
+          <iconId>NEON:PENCIL</iconId>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityParameter>
+      <name>CampaignId_param</name>
+      <expose v="true" />
+      <mandatory v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>CampaignStepId_param</name>
+      <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" />
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
       <alias>Data_alias</alias>
+      <conditionProcess>%aditoprj%/entity/CampaignCost_entitiy/recordcontainers/db/conditionProcess.js</conditionProcess>
       <linkInformation>
         <linkInformation>
           <name>70824b95-c84c-406c-89df-c5b9bb379b08</name>
@@ -139,6 +237,10 @@
           <name>USER_NEW.value</name>
           <recordfield>CAMPAIGNCOST.USER_NEW</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CATEGORY.displayValue</name>
+          <expression>%aditoprj%/entity/CampaignCost_entitiy/recordcontainers/db/recordfieldmappings/category.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/CampaignCost_entitiy/entityfields/alter/children/edit/onActionProcess.js b/entity/CampaignCost_entitiy/entityfields/alter/children/edit/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2f19601f3e8f533982bac2823f085588c6f8dd7e
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/alter/children/edit/onActionProcess.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.vars");
+
+var params = {
+    "Uid_param" : vars.get("$sys.uid")
+}
+neon.openContext("CampaignCost", "CampaignCostEdit_view", null, neon.OPERATINGSTATE_EDIT, params);
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/campaign_id/displayValueProcess.js b/entity/CampaignCost_entitiy/entityfields/campaign_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..12ea2ba316a5f6370d042673bc2c79c8019841f4
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/campaign_id/displayValueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.db");
+import("system.vars");
+import("Campaign_lib");
+
+var campaignId = vars.get("$field.CAMPAIGN_ID");
+var campaignName = CampaignUtils.getCampaignNameById(campaignId);
+
+result.string(campaignName);
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/campaign_id/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/campaign_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..aae29913f6603e7e01072a210fe275d8112fabe2
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/campaign_id/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.CampaignId_param") && vars.get("$param.CampaignId_param"))
+{
+    result.string(vars.get("$param.CampaignId_param"));
+}
\ 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
new file mode 100644
index 0000000000000000000000000000000000000000..ad91b8afb40a73c0ac60dbd9218ea4840e61b544
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/displayValueProcess.js
@@ -0,0 +1,16 @@
+import("system.translate");
+import("system.result");
+import("system.db");
+import("system.vars");
+import("Campaign_lib");
+
+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"));
+}
diff --git a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f4a91495ca4454e2b82cb84d6a7b46761f19c88e
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.CampaignStepId_param") && vars.get("$param.CampaignStepId_param"))
+{
+    result.string(vars.get("$param.CampaignStepId_param"));
+}
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/category/displayValueProcess.js b/entity/CampaignCost_entitiy/entityfields/category/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..96536279ef0b858b99687c397622da45f831fa14
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/category/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignStepCostCategory(), vars.get("$this.value")));
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/containername_param/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7a66c852983ef1afe350b0b1637c9859a85e2421
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/containername_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.campaignStepCostCategory());
\ 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
new file mode 100644
index 0000000000000000000000000000000000000000..246cdf834817f8f74e58fee3e8f03b286467074f
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/target_context/valueProcess.js
@@ -0,0 +1,11 @@
+import("system.result");
+import("system.vars");
+
+if (vars.exists("$field.CAMPAIGNSTEP_ID") && vars.get("$field.CAMPAIGNSTEP_ID"))
+{
+    result.string("CampaignStep");
+}
+else
+{
+    result.string("Campaign");
+}
\ 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
new file mode 100644
index 0000000000000000000000000000000000000000..aa45c28884f6e97944f9f959b7eb927d1078866e
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/target_rowid/valueProcess.js
@@ -0,0 +1,11 @@
+import("system.result");
+import("system.vars");
+
+if (vars.exists("$field.CAMPAIGNSTEP_ID") && vars.get("$field.CAMPAIGNSTEP_ID"))
+{
+    result.string(vars.get("$field.CAMPAIGNSTEP_ID"));
+}
+else
+{
+    result.string(vars.get("$field.CAMPAIGN_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
new file mode 100644
index 0000000000000000000000000000000000000000..32c1d5d1eec824e753a076f310fa3547d59ddae8
--- /dev/null
+++ b/entity/CampaignCost_entitiy/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,11 @@
+import("system.logging");
+import("system.db");
+import("system.result");
+import("Sql_lib");
+
+var cond = SqlCondition.begin()
+                       .andPrepareVars("CAMPAIGNCOST.CAMPAIGNCOSTID", "$param.Uid_param")
+                       .andPrepareVars("CAMPAIGNCOST.CAMPAIGN_ID", "$param.CampaignId_param")
+                       .andPrepareVars("CAMPAIGNCOST.CAMPAIGNSTEP_ID", "$param.CampaignStepId_param");
+
+result.string(db.translateCondition(cond.build("1=2")));
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/recordcontainers/db/recordfieldmappings/category.displayvalue/expression.js b/entity/CampaignCost_entitiy/recordcontainers/db/recordfieldmappings/category.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..3aa7368fd41339c1bd48a4951acb4ff54b12ef58
--- /dev/null
+++ b/entity/CampaignCost_entitiy/recordcontainers/db/recordfieldmappings/category.displayvalue/expression.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.campaignStepCostCategory(), "CAMPAIGNCOST.CATEGORY");
+result.string(sql);
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/CampaignStep_entity.aod b/entity/CampaignStep_entity/CampaignStep_entity.aod
index da9521b08ec6bd88ada98e99a732cabad6979c1f..96cb0aedca3baae8c49f540b87dd5a93294d2344 100644
--- a/entity/CampaignStep_entity/CampaignStep_entity.aod
+++ b/entity/CampaignStep_entity/CampaignStep_entity.aod
@@ -198,6 +198,26 @@
         <fieldName>Employees</fieldName>
       </dependency>
     </entityConsumer>
+    <entityConsumer>
+      <name>CampaignStepCosts</name>
+      <title>Cost</title>
+      <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/CampaignStep_entity/entityfields/campaignstepcosts/children/campaignid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>CampaignStepId_param</name>
+          <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignstepcosts/children/campaignstepid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/CampaignStep_entity/entityfields/campaignstepcosts/children/campaignid_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/campaignstepcosts/children/campaignid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b2482a5e35fe9e1a55eb568ff5a3798b696dbfbf
--- /dev/null
+++ b/entity/CampaignStep_entity/entityfields/campaignstepcosts/children/campaignid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CAMPAIGN_ID"));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/campaignstepcosts/children/campaignstepid_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/campaignstepcosts/children/campaignstepid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..533f8ec837ea2f9b588ddf05545ac47cdda23d18
--- /dev/null
+++ b/entity/CampaignStep_entity/entityfields/campaignstepcosts/children/campaignstepid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$sys.uid"));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/entityfields/state/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/state/displayValueProcess.js
index eda9e4ac40f21a62ec1025510c6dcbcfe91877d0..076a4dc046a745c33652aebad5ffa9c38125f9ef 100644
--- a/entity/CampaignStep_entity/entityfields/state/displayValueProcess.js
+++ b/entity/CampaignStep_entity/entityfields/state/displayValueProcess.js
@@ -3,4 +3,4 @@ import("system.vars");
 import("Keyword_lib");
 import("KeywordRegistry_basic");
 
-result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignStepState(), vars.get("$field.STATE")));
\ No newline at end of file
+result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignStepState(), vars.get("$this.value")));
\ No newline at end of file
diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod
index 7b717c58eda783b3848e2a20864e0ec471dc8455..9ccbae20b89f4b4cac7548dd82705126b4083d1e 100644
--- a/entity/Campaign_entity/Campaign_entity.aod
+++ b/entity/Campaign_entity/Campaign_entity.aod
@@ -184,6 +184,12 @@
         <entityName>CampaignCost_entitiy</entityName>
         <fieldName>CampaignCosts</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>CampaignId_param</name>
+          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaigncosts/children/campaignid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
   </entityFields>
   <recordContainers>
diff --git a/entity/Campaign_entity/entityfields/campaigncosts/children/campaignid_param/valueProcess.js b/entity/Campaign_entity/entityfields/campaigncosts/children/campaignid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c95f5ea0c85673d6f68abfdbef56f55fb63597c1
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/campaigncosts/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/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index 86428dc192b10bf97f42776b5d4f2aef16ddcfc0..61a86af519a4843e588949be61697ff7c54e6bd1 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -379,6 +379,12 @@
           <fieldName>KeywordStates</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>13d739cb-2b97-44a0-bed0-b6868b0e579e</name>
+          <entityName>CampaignCost_entitiy</entityName>
+          <fieldName>KeywordCampaignManagementCostCategory</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index f646a49566867e3216beb25ef3e19157a34ff712..3df60c9058782f945cbb40a63fed8c119b8b1068 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -3079,19 +3079,10 @@
       <key>${WEBSERVICE_ERROR} url:%0 status:%1</key>
     </entry>
     <entry>
-      <key>file '%0' cannot be read</key>
-    </entry>
-    <entry>
-      <key>Importer</key>
+      <key>Step</key>
     </entry>
     <entry>
-      <key>yyyy-MM-dd HH:mm:ss</key>
-    </entry>
-    <entry>
-      <key>file '%0' does not exist or you have got no permission on this file</key>
-    </entry>
-    <entry>
-      <key>Zip</key>
+      <key>Fix cost</key>
     </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index d62906560ff3b7d1b62b595a140b293caaaf7df4..c53a7ea555bd35a6704f35cf3477e899ca332b9b 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -3927,19 +3927,10 @@
       <value>Webservice nicht erreichbar. URL: %0 %1</value>
     </entry>
     <entry>
-      <key>file '%0' cannot be read</key>
-    </entry>
-    <entry>
-      <key>Importer</key>
+      <key>Step</key>
     </entry>
     <entry>
-      <key>yyyy-MM-dd HH:mm:ss</key>
-    </entry>
-    <entry>
-      <key>file '%0' does not exist or you have got no permission on this file</key>
-    </entry>
-    <entry>
-      <key>Zip</key>
+      <key>Fix cost</key>
     </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 32179aedb6200906195ee6dc3d7682e1d3d98071..7238483c5aec74d944d3e5f0f9c41a8388a18d82 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -3108,6 +3108,12 @@
     <entry>
       <key>Costs</key>
     </entry>
+    <entry>
+      <key>Fix cost</key>
+    </entry>
+    <entry>
+      <key>Step</key>
+    </entry>
     <entry>
       <key>${WEBSERVICE_ERROR} url:%0 status:%1</key>
       <value>Webservice not available. URL: %0 %1</value>
diff --git a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
index e9a5855a79209281c50de0a6a91e9fc0ab44d80f..d55f1edace98746e9e783a12bff0634b78d694de 100644
--- a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
+++ b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
@@ -14,14 +14,6 @@
       <editMode v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
-        <entityFieldLink>
-          <name>00e27896-3a82-4eb9-931d-6a99d7f5e346</name>
-          <entityField>CAMPAIGN_ID</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>378d8bd1-d5ce-4df6-85eb-070888afd58d</name>
-          <entityField>CAMPAIGNSTEP_ID</entityField>
-        </entityFieldLink>
         <entityFieldLink>
           <name>bb0e5fb9-e82c-47f7-b6fa-f3e5d4c36649</name>
           <entityField>CATEGORY</entityField>
diff --git a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
index 3781b415c5558547ac8a85705dd6da6bbc57c2c7..b2e97e0bfd05c713d691f56c3b70da413bf79068 100644
--- a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
+++ b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
@@ -11,8 +11,8 @@
   <children>
     <treeTableViewTemplate>
       <name>CostTreeTable</name>
+      <favoriteActionGroup1>alter</favoriteActionGroup1>
       <defaultGroupFields>
-        <element>CAMPAIGN_ID</element>
         <element>CAMPAIGNSTEP_ID</element>
       </defaultGroupFields>
       <entityField>#ENTITY</entityField>
diff --git a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
index 422d82911fec3ab3dfd5aca38bad32479e97f8e5..8e39191175250293a6a0fbf5c754ad1979eba590 100644
--- a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
+++ b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod
@@ -24,5 +24,10 @@
       <entityField>#ENTITY</entityField>
       <view>CampaignStepAnalysis_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>b17669a6-7ddf-428a-983c-df18a2f7a738</name>
+      <entityField>CampaignStepCosts</entityField>
+      <view>CampaignCostFilter_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js
index e0e5880779af76669a56eaf4274a3a8f009a977e..fbd894dc51ef3bdcfcc76fdf132aa0d7d62d8877 100644
--- a/process/KeywordRegistry_basic/process.js
+++ b/process/KeywordRegistry_basic/process.js
@@ -81,3 +81,4 @@ $KeywordRegistry.campaignState = function(){return "CampaignManagementStates";};
 $KeywordRegistry.campaignState$planning = function(){return "e04c9c59-0590-463c-a10e-e25c583e9cf2";};
 $KeywordRegistry.campaignStepState = function(){return "CampaignManagementStepStates";};
 $KeywordRegistry.campaignStepState$open = function(){return "bbf69673-2ec6-46f8-b231-684a31be9fbd";};
+$KeywordRegistry.campaignStepCostCategory = function(){return "CampaignManagementCostCategory";};