diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 025687e3f997905cbef4b26558e7ab95773c022f..dbca5419dce6f23d0b8f99864a18371cc3d81c18 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -9536,8 +9536,8 @@
                 <name>DECIDER</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="36" />
+                <columnType v="16" />
+                <size v="1" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
diff --git a/entity/Context_entity/Context_entity.aod b/entity/Context_entity/Context_entity.aod
index 90c638545b2a19d9db5334f8aa75ace13ae5a865..c1134c2e5f7b887a942e112b7f4577d88d920703 100644
--- a/entity/Context_entity/Context_entity.aod
+++ b/entity/Context_entity/Context_entity.aod
@@ -59,6 +59,12 @@
           <fieldName>Contexts</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>420468aa-c237-4e29-a24f-8851e56343b9</name>
+          <entityName>Offer_entity</entityName>
+          <fieldName>Contexts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index f590f09647a72172346e12a860986813e79e60f7..9f62d333ece91a5a3d082bbcf811e9752e436b7e 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -4,9 +4,6 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Offer_entity/documentation.adoc</documentation>
   <title>Offer</title>
-  <siblings>
-    <element>Offeritem_entity</element>
-  </siblings>
   <afterUiInit>%aditoprj%/entity/Offer_entity/afterUiInit.js</afterUiInit>
   <iconId>VAADIN:CART</iconId>
   <recordContainer>db</recordContainer>
@@ -651,9 +648,8 @@
       <name>OBJECT_ROWID</name>
       <consumer>Objects</consumer>
       <linkedContextProcess>%aditoprj%/entity/Offer_entity/entityfields/object_rowid/linkedContextProcess.js</linkedContextProcess>
-      <mandatoryProcess>%aditoprj%/entity/Offer_entity/entityfields/object_rowid/mandatoryProcess.js</mandatoryProcess>
       <state>AUTO</state>
-      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/object_rowid/stateProcess.js</stateProcess>
+      <titleProcess>%aditoprj%/entity/Offer_entity/entityfields/object_rowid/titleProcess.js</titleProcess>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/object_rowid/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -675,6 +671,8 @@
       <name>Contexts</name>
       <dependency>
         <name>dependency</name>
+        <entityName>Context_entity</entityName>
+        <fieldName>Context</fieldName>
       </dependency>
     </entityConsumer>
     <entityProvider>
@@ -752,7 +750,8 @@
     </entityParameter>
     <entityField>
       <name>chooseTEXHeader</name>
-      <consumer>DocumentTemplateTex</consumer>    </entityField>
+      <consumer>DocumentTemplateTex</consumer>
+    </entityField>
     <entityConsumer>
       <name>DocumentTemplateTexHeader</name>
       <dependency>
@@ -820,6 +819,29 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityField>
+      <name>LINKAGE</name>
+      <title>Additional link</title>
+      <consumer>Salesprojects</consumer>
+      <mandatoryProcess>%aditoprj%/entity/Offer_entity/entityfields/linkage/mandatoryProcess.js</mandatoryProcess>
+      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/linkage/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/linkage/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/linkage/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>Salesprojects</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Salesproject_entity</entityName>
+        <fieldName>Salesprojects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Offer_entity/conditionProcess.js b/entity/Offer_entity/conditionProcess.js
index 30a86e4e5f568fd555a1a52ded71f3ab23481034..b14a501b815b431fb104bad81e46125ecaca45eb 100644
--- a/entity/Offer_entity/conditionProcess.js
+++ b/entity/Offer_entity/conditionProcess.js
@@ -3,7 +3,7 @@ import("system.result");
 import("Sql_lib");
 
 var cond = new SqlCondition();
-cond.andPrepareVars("OFFER.OBJECT_ROWID", "$param.SalesprojectId_param");
+cond.andPrepareVars("OFFER.OBJECT_ROWID", "$param.ObjectRowId_param");
 
 //TODO: use a preparedCondition when available #1030812 #1034026
 result.string(db.translateCondition(cond.build("1 = 1")));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/contact_id/valueProcess.js b/entity/Offer_entity/entityfields/contact_id/valueProcess.js
index de8555de92b5ab107b544f7169220c0a5f5372b9..8e4cf1fcfcc736e3e3a9b47d9576eb8b46011010 100644
--- a/entity/Offer_entity/entityfields/contact_id/valueProcess.js
+++ b/entity/Offer_entity/entityfields/contact_id/valueProcess.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.neon");
 import("system.db");
 import("system.result");
@@ -6,6 +7,7 @@ import("Sql_lib");
 
 if (vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) 
 {
+    logging.log("$param.ContactId_param")
     var contactid = vars.get("$param.ContactId_param");
     var relData = db.array(db.ROW, "select LANGUAGE from CONTACT where CONTACTID = '" + contactid + "'");
 
@@ -14,9 +16,16 @@ if (vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param"))
     
     result.string(vars.get("$param.ContactId_param"));
 }
-else if (vars.exists("$param.SalesprojectId_param") && vars.get("$param.SalesprojectId_param"))
+else if (vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"))
 {
-    result.string(db.cell(SqlCondition.begin()
-                                      .andPrepareVars("SALESPROJECT.SALESPROJECTID", "$param.SalesprojectId_param")
-                                      .buildSql("select CONTACT_ID from SALESPROJECT", "1=2")));
+    logging.log("$param.ObjectRowId_param")
+    logging.log("$param.ObjectType_param")
+    var objectType  = vars.get("$param.ObjectType_param");
+    switch (objectType){
+        case "Salesproject":
+            result.string(db.cell(SqlCondition.begin()
+            .andPrepareVars("SALESPROJECT.SALESPROJECTID", "$param.ObjectRowId_param")
+            .buildSql("select CONTACT_ID from SALESPROJECT", "1=2")));
+        break;
+    }
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/linkage/displayValueProcess.js b/entity/Offer_entity/entityfields/linkage/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7599db7fc3354d79f1c1838b6a21dbba0ab20dec
--- /dev/null
+++ b/entity/Offer_entity/entityfields/linkage/displayValueProcess.js
@@ -0,0 +1,17 @@
+import("Sql_lib");
+import("system.db");
+import("system.vars");
+import("system.result");
+import("Salesproject_lib");
+
+if(vars.exists("$param.ObjectRowId_param") && vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectRowId_param") && vars.get("$param.ObjectType_param"))
+    var objectType = vars.get("$param.ObjectType_param");
+switch (objectType){
+        
+    case "Salesproject":
+        result.string(db.cell( SqlCondition.begin()
+            .andPrepare("SALESPROJECT.SALESPROJECTID", vars.get("$field.OBJECT_ROWID"))
+            .buildSql("select PROJECTTITLE from SALESPROJECT", "1=0")));
+        break;
+        
+}
diff --git a/entity/Offer_entity/entityfields/linkage/mandatoryProcess.js b/entity/Offer_entity/entityfields/linkage/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4736fe4bfc8bfa641c18710e9b5a5303e967b9a6
--- /dev/null
+++ b/entity/Offer_entity/entityfields/linkage/mandatoryProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+var type = ContactUtils.getContactType(vars.get("$field.CONTACT_ID"), vars.get("$field.CONTACT_PERSON_ID"), vars.get("$field.CONTACT_ORG_ID"));
+
+result.string(type != 2);
diff --git a/entity/Offer_entity/entityfields/linkage/stateProcess.js b/entity/Offer_entity/entityfields/linkage/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b2fa4696978d5374763eeae1860a072e3d47222d
--- /dev/null
+++ b/entity/Offer_entity/entityfields/linkage/stateProcess.js
@@ -0,0 +1,17 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+import("Entity_lib");
+
+switch (vars.get("$sys.recordstate")) 
+{
+    case neon.OPERATINGSTATE_NEW:
+        //only EDITABLE if $field.CONTACT_ID is set
+        if(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID")))
+            result.object(neon.COMPONENTSTATE_EDITABLE);
+        else
+            result.object(neon.COMPONENTSTATE_READONLY);
+    break;
+    default:
+        result.object(neon.COMPONENTSTATE_READONLY);
+}
diff --git a/entity/Offer_entity/entityfields/linkage/valueProcess.js b/entity/Offer_entity/entityfields/linkage/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..37fd0bb1032ec7f531663b824ce1e1e1c0179410
--- /dev/null
+++ b/entity/Offer_entity/entityfields/linkage/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.vars");
+
+if (vars.exists("$param.ObjectRowId_param")) 
+{
+    result.string(vars.get("$param.ObjectRowId_param"));
+}
diff --git a/entity/Offer_entity/entityfields/object_rowid/mandatoryProcess.js b/entity/Offer_entity/entityfields/object_rowid/mandatoryProcess.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/Offer_entity/entityfields/object_rowid/stateProcess.js b/entity/Offer_entity/entityfields/object_rowid/stateProcess.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/Offer_entity/entityfields/object_rowid/titleProcess.js b/entity/Offer_entity/entityfields/object_rowid/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1bb50e998ddf14afe824849bf94408e08dc76d29
--- /dev/null
+++ b/entity/Offer_entity/entityfields/object_rowid/titleProcess.js
@@ -0,0 +1,3 @@
+import("system.vars");
+import("system.result");
+result.string(vars.get("$field.OBJECT_TYPE"));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/object_rowid/valueProcess.js b/entity/Offer_entity/entityfields/object_rowid/valueProcess.js
index 09d845d6f59f097036ad418f74975808ec568bb6..752a1b6b75422488d7490688c686a6a5a0d59dc0 100644
--- a/entity/Offer_entity/entityfields/object_rowid/valueProcess.js
+++ b/entity/Offer_entity/entityfields/object_rowid/valueProcess.js
@@ -2,4 +2,4 @@ import("system.vars");
 import("system.result");
 
 if(vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"))
-    result.string(vars.get("$param.ObjectRowId_param"));
\ No newline at end of file
+    result.string(vars.get("$param.ObjectRowId_param"));
diff --git a/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js b/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9232f51b2e090002d80c469239ab003444411400
--- /dev/null
+++ b/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Entity_lib");
+
+result.string(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ORG_ID")));
diff --git a/entity/Offer_entity/recordcontainers/db/conditionProcess.js b/entity/Offer_entity/recordcontainers/db/conditionProcess.js
index 4538e37b37538159dabb6e7c037e5ba15e88fef3..25a5d52c1d4d1808cee87b68e601d8f6bf2a346f 100644
--- a/entity/Offer_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Offer_entity/recordcontainers/db/conditionProcess.js
@@ -1,11 +1,15 @@
+import("system.vars");
 import("system.db");
 import("system.result");
 import("Sql_lib");
 
 var cond = new SqlCondition();
-cond.andPrepareVars("OFFER.OBJECT_ROWID", "$param.ObjectRowId_param");
-cond.andPrepareVars("OFFER.OBJECT_TYPE", "$param.ObjectType_param");
-cond.andPrepareVars("OFFER.CONTACT_ID", "$param.ContactId_param");
 
+if(vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param"))
+    cond.andPrepareVars("OFFER.CONTACT_ID", "$param.ContactId_param");
+else {
+    cond.andPrepareVars("OFFER.OBJECT_ROWID", "$param.ObjectRowId_param");
+    cond.andPrepareVars("OFFER.OBJECT_TYPE", "$param.ObjectType_param");
+}
 //TODO: use a preparedCondition when available #1030812 #1034026
 result.string(db.translateCondition(cond.build("1 = 1")));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index a2c2f769da61385613cab85c72eee74026008961..9f572ce9e54cda455b8237c7181c3da255f964c8 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -327,9 +327,6 @@
         <fieldName>Documents</fieldName>
       </dependency>
       <children>
-        <entityParameter>
-          <name>AssignmentName_param</name>
-        </entityParameter>
         <entityParameter>
           <name>AssignmentRowId_param</name>
           <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess>
@@ -349,9 +346,6 @@
         <fieldName>MainDocuments</fieldName>
       </dependency>
       <children>
-        <entityParameter>
-          <name>AssignmentName_param</name>
-        </entityParameter>
         <entityParameter>
           <name>AssignmentRowId_param</name>
           <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/children/assignmentrowid_param/valueProcess.js</valueProcess>
@@ -468,6 +462,12 @@
           <fieldName>Salesprojects</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>bdea1358-ebf2-4356-8df1-af3eb1e6338a</name>
+          <entityName>Offer_entity</entityName>
+          <fieldName>Salesprojects</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Salesproject_entity/entityfields/offers/children/objectrowid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/offers/children/objectrowid_param/valueProcess.js
index 0c198ef8c2f3da7079b6b0cf11dde0a09bf2cc01..6900f8723af082fe508273c0330548870bcc6117 100644
--- a/entity/Salesproject_entity/entityfields/offers/children/objectrowid_param/valueProcess.js
+++ b/entity/Salesproject_entity/entityfields/offers/children/objectrowid_param/valueProcess.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.vars");
 import("system.result");
 result.string(vars.get("$field.SALESPROJECTID"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/offers/children/objecttype_param/valueProcess.js b/entity/Salesproject_entity/entityfields/offers/children/objecttype_param/valueProcess.js
index d0156b4590f78c712a4d43ef7419912743e0c24e..c346bbcfecb98c65bb737be761cd1c66191250b9 100644
--- a/entity/Salesproject_entity/entityfields/offers/children/objecttype_param/valueProcess.js
+++ b/entity/Salesproject_entity/entityfields/offers/children/objecttype_param/valueProcess.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("Context_lib");
 import("system.result");
 result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 2dc9599fb2199f48468d3c391bf7e8ef71f67eda..ec3daa390ccc410dbec681f972a42cbc6ab44f12 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -318,6 +318,10 @@
       <key>Office address</key>
       <value>Firmenadresse</value>
     </entry>
+    <entry>
+      <key>Additional link</key>
+      <value>Zusätzliche Verknüpfung</value>
+    </entry>
     <entry>
       <key>Contact</key>
       <value>Kontakt</value>
@@ -4559,10 +4563,10 @@
     <entry>
       <key>Kein Weitergeben von privaten Aufgaben möglich!</key>
     </entry>
-    <entry>
-      <key>Search for new Entries</key>
-      <value>Nach neuen Einträgen suchen</value>
-    </entry>
+    <entry>
+      <key>Search for new Entries</key>
+      <value>Nach neuen Einträgen suchen</value>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonView/OfferEdit_view/OfferEdit_view.aod b/neonView/OfferEdit_view/OfferEdit_view.aod
index ddc985c18e01bf4f507eb9fda9e4bfb88077a6b1..9e6b23e56b2ac19b446697ce51fb803947c0c08e 100644
--- a/neonView/OfferEdit_view/OfferEdit_view.aod
+++ b/neonView/OfferEdit_view/OfferEdit_view.aod
@@ -41,8 +41,8 @@
           <entityField>LANGUAGE</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>ac6f81a2-5012-461a-bcf1-4534182b0973</name>
-          <entityField>SALESPROJECT_ID</entityField>
+          <name>eb4c5ca2-1e72-4e52-bfd1-505447ed231f</name>
+          <entityField>LINKAGE</entityField>
         </entityFieldLink>
         <entityFieldLink>
           <name>7a9b0943-eb06-4b44-a111-ed4e2749da6a</name>