diff --git a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod
new file mode 100644
index 0000000000000000000000000000000000000000..86082df7366af7ec95f7f438dd939249c6b8d038
--- /dev/null
+++ b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>CampaignCost_entitiy</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>CAMPAIGNCOSTID</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaigncostid/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>CAMPAIGN_ID</name>
+      <title>Campaign</title>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>CAMPAIGNSTEP_ID</name>
+      <title>Campaign Step</title>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>CATEGORY</name>
+      <title>Category</title>
+      <groupable v="true" />
+    </entityField>
+    <entityField>
+      <name>NET</name>
+      <title>Cost</title>
+      <contentType>NUMBER</contentType>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <mandatory v="true" />
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <mandatory v="true" />
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityProvider>
+      <name>CampaignCosts</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>7131288b-af5c-4914-96f5-c5d70217fc23</name>
+          <entityName>Campaign_entity</entityName>
+          <fieldName>CampaignCosts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityProvider>
+      <name>StepCosts</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+    </entityProvider>
+    <entityConsumer>
+      <name>Campaigns</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Campaign_entity</entityName>
+        <fieldName>CampaignProvider</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>CampaignSteps</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>CampaignStep_entity</entityName>
+        <fieldName>CampaignSteps</fieldName>
+      </dependency>
+    </entityConsumer>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <alias>Data_alias</alias>
+      <linkInformation>
+        <linkInformation>
+          <name>70824b95-c84c-406c-89df-c5b9bb379b08</name>
+          <tableName>CAMPAIGNCOST</tableName>
+          <primaryKey>CAMPAIGNCOSTID</primaryKey>
+          <isUIDTable v="true" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>CAMPAIGN_ID.value</name>
+          <recordfield>CAMPAIGNCOST.CAMPAIGN_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CAMPAIGNCOSTID.value</name>
+          <recordfield>CAMPAIGNCOST.CAMPAIGNCOSTID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CAMPAIGNSTEP_ID.value</name>
+          <recordfield>CAMPAIGNCOST.CAMPAIGNSTEP_ID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>CATEGORY.value</name>
+          <recordfield>CAMPAIGNCOST.CATEGORY</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>CAMPAIGNCOST.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>CAMPAIGNCOST.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>NET.value</name>
+          <recordfield>CAMPAIGNCOST.NET</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>CAMPAIGNCOST.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>CAMPAIGNCOST.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/CampaignCost_entitiy/entityfields/campaigncostid/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/campaigncostid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f6b9da922bcaccb0006690f599c1d3cee4d00c55
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/campaigncostid/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.util");
+import("system.vars");
+import("system.result");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(util.getNewUUID());
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/date_edit/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5e6ef059738e0c724a468685333a5e257ac228ce
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/date_new/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a72892783bf2bd04fe353c47f1be0cb570bbb323
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/date_new/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/user_edit/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6af880ae3e0e2b89b4eee8327ed49f1eefe458af
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/CampaignCost_entitiy/entityfields/user_new/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e518bc75a9494e53a83613dedd943106e74fc00a
--- /dev/null
+++ b/entity/CampaignCost_entitiy/entityfields/user_new/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/CampaignStep_entity/CampaignStep_entity.aod b/entity/CampaignStep_entity/CampaignStep_entity.aod
index 2f6b5f9ab28ae05bd2e62771f177a30a8e00c440..da9521b08ec6bd88ada98e99a732cabad6979c1f 100644
--- a/entity/CampaignStep_entity/CampaignStep_entity.aod
+++ b/entity/CampaignStep_entity/CampaignStep_entity.aod
@@ -108,6 +108,12 @@
           <fieldName>CampaignStepConsumer</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>ad4ee503-95b9-4add-a0ef-e833db008349</name>
+          <entityName>CampaignCost_entitiy</entityName>
+          <fieldName>CampaignSteps</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod
index 803435a5371c77bcd1d1e4072daf8b4845480c6a..7b717c58eda783b3848e2a20864e0ec471dc8455 100644
--- a/entity/Campaign_entity/Campaign_entity.aod
+++ b/entity/Campaign_entity/Campaign_entity.aod
@@ -132,6 +132,12 @@
           <fieldName>CampaignConsumer</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>d238b02c-75e7-4cf4-b90c-bb36d41ae90f</name>
+          <entityName>CampaignCost_entitiy</entityName>
+          <fieldName>Campaigns</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
     </entityProvider>
     <entityConsumer>
@@ -169,6 +175,16 @@
         <fieldName>Employees</fieldName>
       </dependency>
     </entityConsumer>
+    <entityConsumer>
+      <name>CampaignCosts</name>
+      <title>Costs</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>CampaignCost_entitiy</entityName>
+        <fieldName>CampaignCosts</fieldName>
+      </dependency>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 8fbbafa7eca42b702d5a793dfb4f69d002d63c3e..8a32c80741c101a0a3c09c68615201f02f46244f 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -3027,6 +3027,54 @@
     <entry>
       <key>${ATTRIBUTE_VOID}</key>
     </entry>
+    <entry>
+      <key>Kampagnenzeitraum</key>
+    </entry>
+    <entry>
+      <key>Hauptverantw.</key>
+    </entry>
+    <entry>
+      <key>New campaign step</key>
+    </entry>
+    <entry>
+      <key>Cost</key>
+    </entry>
+    <entry>
+      <key>file '%0' cannot be read</key>
+    </entry>
+    <entry>
+      <key>Campaign costs</key>
+    </entry>
+    <entry>
+      <key>Importer</key>
+    </entry>
+    <entry>
+      <key>Participant</key>
+    </entry>
+    <entry>
+      <key>Printing costs</key>
+    </entry>
+    <entry>
+      <key>Shipping costs</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>
+    </entry>
+    <entry>
+      <key>Add to campaign</key>
+    </entry>
+    <entry>
+      <key>Layout costs</key>
+    </entry>
+    <entry>
+      <key>Costs</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
   <sqlModels>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 15f2602afa160eb5d4fa932285c7ab01f83c5640..8dd982524f36990bf74d1514e7e66e0126330b98 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -3868,6 +3868,60 @@
       <key>Current participants</key>
       <value>Aktuelle Teilnehmer</value>
     </entry>
+    <entry>
+      <key>Kampagnenzeitraum</key>
+    </entry>
+    <entry>
+      <key>Hauptverantw.</key>
+    </entry>
+    <entry>
+      <key>New campaign step</key>
+    </entry>
+    <entry>
+      <key>Cost</key>
+      <value>Kosten</value>
+    </entry>
+    <entry>
+      <key>file '%0' cannot be read</key>
+    </entry>
+    <entry>
+      <key>Campaign costs</key>
+      <value>Kampagnen Kosten</value>
+    </entry>
+    <entry>
+      <key>Importer</key>
+    </entry>
+    <entry>
+      <key>Participant</key>
+    </entry>
+    <entry>
+      <key>Printing costs</key>
+      <value>Druckkosten</value>
+    </entry>
+    <entry>
+      <key>Shipping costs</key>
+      <value>Porto</value>
+    </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>
+    </entry>
+    <entry>
+      <key>Add to campaign</key>
+    </entry>
+    <entry>
+      <key>Layout costs</key>
+      <value>Layout</value>
+    </entry>
+    <entry>
+      <key>Costs</key>
+      <value>Kosten</value>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 2bc9e8f85f628142f054910f4c5714aaf646a721..2456f97e58a00d79adfb970ac54654958412a83b 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -3060,6 +3060,54 @@
       <key>${ATTRIBUTE_VOID}</key>
       <value>Void</value>
     </entry>
+    <entry>
+      <key>Kampagnenzeitraum</key>
+    </entry>
+    <entry>
+      <key>Hauptverantw.</key>
+    </entry>
+    <entry>
+      <key>New campaign step</key>
+    </entry>
+    <entry>
+      <key>Cost</key>
+    </entry>
+    <entry>
+      <key>file '%0' cannot be read</key>
+    </entry>
+    <entry>
+      <key>Campaign costs</key>
+    </entry>
+    <entry>
+      <key>Importer</key>
+    </entry>
+    <entry>
+      <key>Participant</key>
+    </entry>
+    <entry>
+      <key>Printing costs</key>
+    </entry>
+    <entry>
+      <key>Shipping costs</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>
+    </entry>
+    <entry>
+      <key>Add to campaign</key>
+    </entry>
+    <entry>
+      <key>Layout costs</key>
+    </entry>
+    <entry>
+      <key>Costs</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonContext/CampaignCost/CampaignCost.aod b/neonContext/CampaignCost/CampaignCost.aod
new file mode 100644
index 0000000000000000000000000000000000000000..77dbea4066f6e83ea3a0684b9ed19dd30f160ade
--- /dev/null
+++ b/neonContext/CampaignCost/CampaignCost.aod
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
+  <name>CampaignCost</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterview>CampaignCostFilter_view</filterview>
+  <editview>CampaignCostEdit_view</editview>
+  <entity>CampaignCost_entitiy</entity>
+  <references>
+    <neonViewReference>
+      <name>fa4ac7f7-4f30-42ba-86b2-99e86597734f</name>
+      <view>CampaignCostFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>34fefde3-d3cf-4a64-92e2-fe1150c286eb</name>
+      <view>CampaignCostEdit_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..e9a5855a79209281c50de0a6a91e9fc0ab44d80f
--- /dev/null
+++ b/neonView/CampaignCostEdit_view/CampaignCostEdit_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>CampaignCostEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <isSmall v="true" />
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>EditFields</name>
+      <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>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>23f1ec3b-91b3-44b6-bf2b-a976da6e3778</name>
+          <entityField>NET</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..3781b415c5558547ac8a85705dd6da6bbc57c2c7
--- /dev/null
+++ b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod
@@ -0,0 +1,31 @@
+<?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>CampaignCostFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <treeTableViewTemplate>
+      <name>CostTreeTable</name>
+      <defaultGroupFields>
+        <element>CAMPAIGN_ID</element>
+        <element>CAMPAIGNSTEP_ID</element>
+      </defaultGroupFields>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>457caff8-0403-425f-839c-62e5d05fe3a1</name>
+          <entityField>CATEGORY</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>2adbd887-f1df-43ff-bde9-12c8273af7a9</name>
+          <entityField>NET</entityField>
+        </neonTableColumn>
+      </columns>
+    </treeTableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/CampaignMain_view/CampaignMain_view.aod b/neonView/CampaignMain_view/CampaignMain_view.aod
index 29c4b197aabcab31423e009f07ed55b75d948c55..8a12283df0072c9a62b95936311c46ce150a4bbd 100644
--- a/neonView/CampaignMain_view/CampaignMain_view.aod
+++ b/neonView/CampaignMain_view/CampaignMain_view.aod
@@ -25,5 +25,10 @@
       <entityField>CampaignParticipants</entityField>
       <view>CampaignParticipantFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>77b0a99a-ab9f-4b1a-a7c4-3dc470c10c22</name>
+      <entityField>CampaignCosts</entityField>
+      <view>CampaignCostFilter_view</view>
+    </neonViewReference>
   </children>
 </neonView>