diff --git a/entity/AttributeRelation_entity/entityfields/uid/valueProcess.js b/entity/AttributeRelation_entity/entityfields/uid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..056f5c94f173d94976edc1ce66ca20d57ecfb0ea
--- /dev/null
+++ b/entity/AttributeRelation_entity/entityfields/uid/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("system.util");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(util.getNewUUID());
\ No newline at end of file
diff --git a/entity/AttributeUsage_entity/entityfields/context/children/exclusivecontexts_param/valueProcess.js b/entity/AttributeUsage_entity/entityfields/context/children/exclusivecontexts_param/valueProcess.js
index 5a8e7eb9fe21be6d537ba769a61622d42f95087b..0b23d14d86d35c1064ce5d3ebad9212800e1a849 100644
--- a/entity/AttributeUsage_entity/entityfields/context/children/exclusivecontexts_param/valueProcess.js
+++ b/entity/AttributeUsage_entity/entityfields/context/children/exclusivecontexts_param/valueProcess.js
@@ -9,5 +9,7 @@ result.object([
     "Offer",
     "Order",
     "Employee",
-    "Salesproject"
+    "Salesproject",
+    "Campaign",
+    "DocumentTemplate"
 ]);
\ No newline at end of file
diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod
index 040bbd5905bf115b2d55c389c0530a7b37ab742d..1f88b6da4481b3f285fab3397a1e39e7ead6e960 100644
--- a/entity/Campaign_entity/Campaign_entity.aod
+++ b/entity/Campaign_entity/Campaign_entity.aod
@@ -5,6 +5,7 @@
   <icon>VAADIN:GROUP</icon>
   <title>Campaign</title>
   <contentTitleProcess>%aditoprj%/entity/Campaign_entity/contentTitleProcess.js</contentTitleProcess>
+  <afterUiInit>%aditoprj%/entity/Campaign_entity/afterUiInit.js</afterUiInit>
   <titlePlural>Campaigns</titlePlural>
   <recordContainer>db</recordContainer>
   <entityFields>
@@ -346,6 +347,25 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>Attributes</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelation_entity</entityName>
+        <fieldName>AttributeRelations</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Campaign_entity/afterUiInit.js b/entity/Campaign_entity/afterUiInit.js
new file mode 100644
index 0000000000000000000000000000000000000000..031b635db2bf916a03eda91e8db23dc6c8bb5d35
--- /dev/null
+++ b/entity/Campaign_entity/afterUiInit.js
@@ -0,0 +1,9 @@
+import("system.neon");
+import("system.vars");
+import("Context_lib");
+import("Attribute_lib");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes");
+}
diff --git a/entity/Campaign_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js b/entity/Campaign_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..533f8ec837ea2f9b588ddf05545ac47cdda23d18
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/attributes/children/objectrowid_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/Campaign_entity/entityfields/attributes/children/objecttype_param/valueProcess.js b/entity/Campaign_entity/entityfields/attributes/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e8b4e72e74a0a4696ff39e83135aa6100ef908c0
--- /dev/null
+++ b/entity/Campaign_entity/entityfields/attributes/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
diff --git a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
index b83d142e7cf487df474037788bcebce6b8b3413e..5e23957f78abe3e69f3955e0134cc327ffc3b3f8 100644
--- a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
+++ b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod
@@ -5,6 +5,7 @@
   <icon>VAADIN:FILE_FONT</icon>
   <title>Document Template</title>
   <contentTitleProcess>%aditoprj%/entity/DocumentTemplate_entity/contentTitleProcess.js</contentTitleProcess>
+  <afterUiInit>%aditoprj%/entity/DocumentTemplate_entity/afterUiInit.js</afterUiInit>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
diff --git a/entity/DocumentTemplate_entity/afterUiInit.js b/entity/DocumentTemplate_entity/afterUiInit.js
new file mode 100644
index 0000000000000000000000000000000000000000..031b635db2bf916a03eda91e8db23dc6c8bb5d35
--- /dev/null
+++ b/entity/DocumentTemplate_entity/afterUiInit.js
@@ -0,0 +1,9 @@
+import("system.neon");
+import("system.vars");
+import("Context_lib");
+import("Attribute_lib");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes");
+}
diff --git a/neonView/CampaignEdit_view/CampaignEdit_view.aod b/neonView/CampaignEdit_view/CampaignEdit_view.aod
index 5635c65c2e8c9bcfa2347478f9092d682acc849e..29d30dd1c512b42a1888a84f9093d38fcbb729f6 100644
--- a/neonView/CampaignEdit_view/CampaignEdit_view.aod
+++ b/neonView/CampaignEdit_view/CampaignEdit_view.aod
@@ -37,5 +37,10 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>58b76841-24df-4fce-a05b-580712e8ecdc</name>
+      <entityField>Attributes</entityField>
+      <view>AttributeRelationMultiEdit_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/CampaignMain_view/CampaignMain_view.aod b/neonView/CampaignMain_view/CampaignMain_view.aod
index 5c6f7bd263b95b137ddcb00f69ac6c5b2682431c..c9465927c542a66e2809f13a711cab9417d81905 100644
--- a/neonView/CampaignMain_view/CampaignMain_view.aod
+++ b/neonView/CampaignMain_view/CampaignMain_view.aod
@@ -45,5 +45,10 @@
       <entityField>Tasks</entityField>
       <view>TaskFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>c6237b30-d638-43e3-93c5-fc3abbb87443</name>
+      <entityField>Attributes</entityField>
+      <view>AttributeRelationTree_view</view>
+    </neonViewReference>
   </children>
 </neonView>