diff --git a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod
index aae44ab683af0a7f67c96ff371f6b91b8edb2552..a01a55abc1883e682f4573c5879475aa868c14db 100644
--- a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod
+++ b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod
@@ -209,15 +209,24 @@
     <dbRecordContainer>
       <name>db</name>
       <alias>Data_alias</alias>
+      <fromClauseProcess>%aditoprj%/entity/CampaignCost_entitiy/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/CampaignCost_entitiy/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/CampaignCost_entitiy/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <linkInformation>
         <linkInformation>
-          <name>70824b95-c84c-406c-89df-c5b9bb379b08</name>
+          <name>70c2db20-0695-4189-92cb-7da585bff401</name>
           <tableName>CAMPAIGNCOST</tableName>
           <primaryKey>CAMPAIGNCOSTID</primaryKey>
           <isUIDTable v="true" />
           <readonly v="false" />
         </linkInformation>
+        <linkInformation>
+          <name>b97b7f67-86ea-4d0a-8303-abc05863ed66</name>
+          <tableName>CAMPAIGNSTEP</tableName>
+          <primaryKey>CAMPAIGNSTEPID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
       </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
diff --git a/entity/CampaignCost_entitiy/recordcontainers/db/fromClauseProcess.js b/entity/CampaignCost_entitiy/recordcontainers/db/fromClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4d95079d7cb044ddab9f1e475e6921ec8dcfb2f9
--- /dev/null
+++ b/entity/CampaignCost_entitiy/recordcontainers/db/fromClauseProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("CAMPAIGNCOST left join CAMPAIGNSTEP on CAMPAIGNCOST.CAMPAIGNSTEP_ID = CAMPAIGNSTEP.CAMPAIGNSTEPID")
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/recordcontainers/db/orderClauseProcess.js b/entity/CampaignCost_entitiy/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8538a702d13027d9d9739d9b6652105b87725638
--- /dev/null
+++ b/entity/CampaignCost_entitiy/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.db");
+
+result.object({"CAMPAIGNSTEP.SORTING": db.ASCENDING});
\ No newline at end of file
diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod
index 915da6b61af56a9c4a3121dbe85d19f3c84db51e..964d14d872715b081510b3ae0c1146abaf463c4b 100644
--- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod
+++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod
@@ -64,6 +64,7 @@
       <name>CAMPAIGN_ID</name>
       <title>Campaign</title>
       <consumer>CampaignsConsumer</consumer>
+      <mandatory v="true" />
       <state>EDITABLE</state>
       <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/campaign_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/campaign_id/displayValueProcess.js</displayValueProcess>
@@ -76,6 +77,7 @@
       <name>CAMPAIGNSTEP_ID</name>
       <title>Campaign Step</title>
       <consumer>CampaignSteps</consumer>
+      <mandatory v="true" />
       <state>EDITABLE</state>
       <displayValueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/campaignstep_id/displayValueProcess.js</displayValueProcess>
       <onValueChange>%aditoprj%/entity/CampaignParticipant_entity/entityfields/campaignstep_id/onValueChange.js</onValueChange>
@@ -106,6 +108,7 @@
       <title>Participant</title>
       <consumer>AnyContacts</consumer>
       <linkedContextProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess>
+      <mandatory v="true" />
       <state>READONLY</state>
       <stateProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js</valueProcess>
diff --git a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
index 72f5af4f8b329a2b59479cdb8a2e2d7dc08facdf..d3aa701691615ece48b9dc19340ab4754bf26c49 100644
--- a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
+++ b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
@@ -12,6 +12,9 @@
     <treeTableViewTemplate>
       <name>CostTreeTable</name>
       <favoriteActionGroup1>alter</favoriteActionGroup1>
+      <defaultGroupFields>
+        <element>CAMPAIGNSTEP_ID</element>
+      </defaultGroupFields>
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
diff --git a/neonView/CampaignStepCostFilter_view/CampaignStepCostFilter_view.aod b/neonView/CampaignStepCostFilter_view/CampaignStepCostFilter_view.aod
index e2e0f967d7df837f2bd980bb7731aabef91f165a..bfcf65a77f00fc89eb2fd9187116e9ff59520a94 100644
--- a/neonView/CampaignStepCostFilter_view/CampaignStepCostFilter_view.aod
+++ b/neonView/CampaignStepCostFilter_view/CampaignStepCostFilter_view.aod
@@ -12,9 +12,6 @@
     <treeTableViewTemplate>
       <name>CostTreeTable</name>
       <favoriteActionGroup1>alter</favoriteActionGroup1>
-      <defaultGroupFields>
-        <element>CAMPAIGNSTEP_ID</element>
-      </defaultGroupFields>
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>