diff --git a/.liquibase/Data_alias/basic/2019.2/changelog.xml b/.liquibase/Data_alias/basic/2019.2/changelog.xml
index 24b2bf0d929fbfaf72712a0af875506b1f221509..1d6af6ea890435a4595dd539d4cc21afdb123460 100644
--- a/.liquibase/Data_alias/basic/2019.2/changelog.xml
+++ b/.liquibase/Data_alias/basic/2019.2/changelog.xml
@@ -124,7 +124,11 @@
     <include relativeToChangelogFile="true" file="offer_add_date_editnew_user_editnew.xml"/>
     <include relativeToChangelogFile="true" file="attributerelation_add_date_editnew_user_editnew.xml"/>
     <include relativeToChangelogFile="true" file="communication_add_date_editnew_user_editnew.xml"/>
-
+    
+    <include relativeToChangelogFile="true" file="update_Salesproject_Forecast.xml"/>
+    <include relativeToChangelogFile="true" file="update_Salesproject_Classification.xml"/>
+    <include relativeToChangelogFile="true" file="update_Offer.xml"/>
+    
     <include relativeToChangelogFile="true" file="indicesRefactor/ContactManagement.xml"/>
     <include relativeToChangelogFile="true" file="indicesRefactor/Keyword.xml"/>
     <include relativeToChangelogFile="true" file="indicesRefactor/Activity.xml"/>
diff --git a/.liquibase/Data_alias/basic/2019.2/update_Offer.xml b/.liquibase/Data_alias/basic/2019.2/update_Offer.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c513f47119f73710d6468ee3eb64709c37f4101f
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/update_Offer.xml
@@ -0,0 +1,20 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="n.bugl" id="edd0e09f-830e-4cd3-acf6-ee0c2cd82d7a">  
+        
+        <addColumn tableName="OFFER">
+            <column name="OBJECT_TYPE" type="NVARCHAR(63)">
+            </column>
+        </addColumn>
+        <renameColumn newColumnName="OBJECT_ROWID" oldColumnName="SALESPROJECT_ID" tableName="OFFER"/>
+        <update tableName="OFFER">
+            <column name="OBJECT_TYPE" value="Salesproject" />
+            <where>OBJECT_ROWID = '0833465c-8851-4fbb-b7e3-8c1d73c903da' </where>
+        </update>
+        
+        <addNotNullConstraint
+            tableName="OFFER"
+            columnName="OBJECT_TYPE"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/update_Salesproject_Classification.xml b/.liquibase/Data_alias/basic/2019.2/update_Salesproject_Classification.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0abcabb2240b978f21c3a1e0bc4f87da2ffd02b9
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/update_Salesproject_Classification.xml
@@ -0,0 +1,21 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="n.bugl" id="edd0e09f-830e-4cd3-acf6-ee0c2cd82d7a">  
+        
+        <addColumn tableName="SALESPROJECT_CLASSIFICATION">
+            <column name="OBJECT_TYPE" type="NVARCHAR(63)">
+            </column>
+        </addColumn>
+        <renameColumn newColumnName="OBJECT_ROWID" oldColumnName="SALESPROJECT_ID" tableName="SALESPROJECT_CLASSIFICATION"/>
+        <update tableName="SALESPROJECT_CLASSIFICATION">
+            <column name="OBJECT_TYPE" value="Salesproject" />
+            <where>OBJECT_ROWID = '0833465c-8851-4fbb-b7e3-8c1d73c903da' </where>
+        </update>
+        
+        <addNotNullConstraint
+            tableName="SALESPROJECT_CLASSIFICATION"
+            columnName="OBJECT_TYPE"/>
+        
+        <renameTable oldTableName="SALESPROJECT_CLASSIFICATION" newTableName="CLASSIFICATION"/>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/update_Salesproject_Forecast.xml b/.liquibase/Data_alias/basic/2019.2/update_Salesproject_Forecast.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7e7ee03202f47ad2bbe8949b0e20eb5d1dd12702
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/update_Salesproject_Forecast.xml
@@ -0,0 +1,23 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+    <changeSet author="n.bugl" id="edd0e09f-830e-4cd3-acf6-ee0c2cd82d7a">  
+        
+        <addColumn tableName="SALESPROJECT_FORECAST">
+            <column name="OBJECT_TYPE" type="NVARCHAR(63)">
+            </column>
+        </addColumn>
+        <renameColumn newColumnName="OBJECT_ROWID" oldColumnName="SALESPROJECT_ID" tableName="SALESPROJECT_FORECAST"/>
+        <renameColumn newColumnName="FORECASTID" oldColumnName="SALESPROJECT_FORECASTID" tableName="SALESPROJECT_FORECAST"/>
+        <update tableName="SALESPROJECT_FORECAST">
+            <column name="OBJECT_TYPE" value="Salesproject" />
+            <where>OBJECT_ROWID = '0833465c-8851-4fbb-b7e3-8c1d73c903da' </where>
+        </update>
+        
+        <addNotNullConstraint
+            tableName="SALESPROJECT_FORECAST"
+            columnName="OBJECT_TYPE"/>
+        
+        <renameTable oldTableName="SALESPROJECT_FORECAST" newTableName="FORECAST"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 0e2aa0a90767faf3954e5aa1580a6774f4347103..9b12d2f25bf5b3e01d9cd37bb42b986b0f13b460 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -2001,19 +2001,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>SALESPROJECT_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>OFFERCODE</name>
                 <dbName></dbName>
@@ -2232,6 +2219,34 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_ROWID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -2716,123 +2731,6 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
-          <entityDb>
-            <name>SALESPROJECT_FORECAST</name>
-            <dbName></dbName>
-            <idColumn>SALESPROJECT_FORECASTID</idColumn>
-            <idGeneratorType v="0" />
-            <idGeneratorInterval v="1" />
-            <title></title>
-            <description></description>
-            <auditSyncConfig>
-              <name>auditSyncConfig</name>
-              <auditMode v="0" />
-              <syncActive v="false" />
-              <syncComplete v="true" />
-              <syncDirection v="1" />
-              <syncIds></syncIds>
-            </auditSyncConfig>
-            <entityFields>
-              <entityFieldDb>
-                <name>SALESPROJECT_FORECASTID</name>
-                <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="true" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>GROUPCODE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>VOLUME</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="4" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>DATE_START</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="93" />
-                <size v="29" />
-                <scale v="9" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>INFO</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>SALESPROJECT_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>TYPE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-            </entityFields>
-          </entityDb>
           <entityDb>
             <name>SALESPROJECT_COMPETITION</name>
             <dbName></dbName>
@@ -3053,95 +2951,6 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
-          <entityDb>
-            <name>SALESPROJECT_CLASSIFICATION</name>
-            <dbName></dbName>
-            <idColumn>SALESPROJECT_CLASSIFICATIONID</idColumn>
-            <idGeneratorType v="0" />
-            <idGeneratorInterval v="1" />
-            <title></title>
-            <description></description>
-            <auditSyncConfig>
-              <name>auditSyncConfig</name>
-              <auditMode v="0" />
-              <syncActive v="false" />
-              <syncComplete v="true" />
-              <syncDirection v="1" />
-              <syncIds></syncIds>
-            </auditSyncConfig>
-            <entityFields>
-              <entityFieldDb>
-                <name>SALESPROJECT_CLASSIFICATIONID</name>
-                <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="true" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>CLASS</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="4" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>VALUE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="4" />
-                <size v="10" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>SALESPROJECT_ID</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-              <entityFieldDb>
-                <name>TYPE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="50" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
-            </entityFields>
-          </entityDb>
           <entityDb>
             <name>TIMETRACKING</name>
             <dbName></dbName>
@@ -6755,6 +6564,242 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
+          <entityDb>
+            <name>FORECAST</name>
+            <dbName></dbName>
+            <idColumn>SALESPROJECT_FORECASTID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>OBJECT_ROWID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>GROUPCODE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>VOLUME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_START</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INFO</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>FORECASTID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>CLASSIFICATION</name>
+            <dbName></dbName>
+            <idColumn>SALESPROJECT_CLASSIFICATIONID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>OBJECT_ROWID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SALESPROJECT_CLASSIFICATIONID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CLASS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>VALUE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
         </entities>
       </entityGroup>
     </aliasDefDb>
diff --git a/entity/SalesprojectClassification_entity/SalesprojectClassification_entity.aod b/entity/Classification_entity/Classification_entity.aod
similarity index 79%
rename from entity/SalesprojectClassification_entity/SalesprojectClassification_entity.aod
rename to entity/Classification_entity/Classification_entity.aod
index 5d641385231995c93a43f6b22be39ddfc23e0e32..ac08eb42e69a1618fe8c6e4a427aa15aec9ecb65 100644
--- a/entity/SalesprojectClassification_entity/SalesprojectClassification_entity.aod
+++ b/entity/Classification_entity/Classification_entity.aod
@@ -1,6 +1,6 @@
 <?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>SalesprojectClassification_entity</name>
+  <name>Classification_entity</name>
   <title>Classification</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <recordContainer>jdito</recordContainer>
@@ -22,12 +22,12 @@
       <children>
         <entityParameter>
           <name>ClassId_param</name>
-          <valueProcess>%aditoprj%/entity/SalesprojectClassification_entity/entityfields/salesprojectclassificationentries/children/classid_param/valueProcess.js</valueProcess>
+          <valueProcess>%aditoprj%/entity/Classification_entity/entityfields/salesprojectclassificationentries/children/classid_param/valueProcess.js</valueProcess>
           <triggerRecalculation v="true" />
         </entityParameter>
         <entityParameter>
           <name>SalesprojectId_param</name>
-          <valueProcess>%aditoprj%/entity/SalesprojectClassification_entity/entityfields/salesprojectclassificationentries/children/salesprojectid_param/valueProcess.js</valueProcess>
+          <valueProcess>%aditoprj%/entity/Classification_entity/entityfields/salesprojectclassificationentries/children/salesprojectid_param/valueProcess.js</valueProcess>
           <triggerRecalculation v="true" />
         </entityParameter>
       </children>
@@ -64,14 +64,14 @@
     </entityParameter>
     <entityField>
       <name>POINTS</name>
-      <valueProcess>%aditoprj%/entity/SalesprojectClassification_entity/entityfields/points/valueProcess.js</valueProcess>
+      <valueProcess>%aditoprj%/entity/Classification_entity/entityfields/points/valueProcess.js</valueProcess>
     </entityField>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
       <name>jdito</name>
       <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
-      <contentProcess>%aditoprj%/entity/SalesprojectClassification_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <contentProcess>%aditoprj%/entity/Classification_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
       <recordFields>
         <element>UID.value</element>
         <element>CLASSNAME.value</element>
diff --git a/entity/SalesprojectClassification_entity/contentProcess.js b/entity/Classification_entity/contentProcess.js
similarity index 100%
rename from entity/SalesprojectClassification_entity/contentProcess.js
rename to entity/Classification_entity/contentProcess.js
diff --git a/entity/SalesprojectClassification_entity/entityfields/points/valueProcess.js b/entity/Classification_entity/entityfields/points/valueProcess.js
similarity index 100%
rename from entity/SalesprojectClassification_entity/entityfields/points/valueProcess.js
rename to entity/Classification_entity/entityfields/points/valueProcess.js
diff --git a/entity/SalesprojectClassification_entity/entityfields/salesprojectclassificationentries/children/classid_param/valueProcess.js b/entity/Classification_entity/entityfields/salesprojectclassificationentries/children/classid_param/valueProcess.js
similarity index 100%
rename from entity/SalesprojectClassification_entity/entityfields/salesprojectclassificationentries/children/classid_param/valueProcess.js
rename to entity/Classification_entity/entityfields/salesprojectclassificationentries/children/classid_param/valueProcess.js
diff --git a/entity/SalesprojectClassification_entity/entityfields/salesprojectclassificationentries/children/salesprojectid_param/valueProcess.js b/entity/Classification_entity/entityfields/salesprojectclassificationentries/children/salesprojectid_param/valueProcess.js
similarity index 100%
rename from entity/SalesprojectClassification_entity/entityfields/salesprojectclassificationentries/children/salesprojectid_param/valueProcess.js
rename to entity/Classification_entity/entityfields/salesprojectclassificationentries/children/salesprojectid_param/valueProcess.js
diff --git a/entity/SalesprojectClassification_entity/recordcontainers/jdito/contentProcess.js b/entity/Classification_entity/recordcontainers/jdito/contentProcess.js
similarity index 100%
rename from entity/SalesprojectClassification_entity/recordcontainers/jdito/contentProcess.js
rename to entity/Classification_entity/recordcontainers/jdito/contentProcess.js
diff --git a/entity/Context_entity/Context_entity.aod b/entity/Context_entity/Context_entity.aod
index 9642361e6bd5219fdd4e031246838d98a6e4562f..25f9abc525ef8f3d5e3a05873a474ecd278b58f0 100644
--- a/entity/Context_entity/Context_entity.aod
+++ b/entity/Context_entity/Context_entity.aod
@@ -42,6 +42,12 @@
           <fieldName>Contexts</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>209539e0-15ad-47eb-9175-a3aaa5af13fc</name>
+          <entityName>Forecast_entity</entityName>
+          <fieldName>Contexts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Context_entity/entityfields/activitylinkable/children/exclusivecontexts_param/valueProcess.js b/entity/Context_entity/entityfields/activitylinkable/children/exclusivecontexts_param/valueProcess.js
index e48be1dbc1467adf67d6a78c7c0674fae7364eea..fce318dabae96ead6e4051776ccb55d98bebec1a 100644
--- a/entity/Context_entity/entityfields/activitylinkable/children/exclusivecontexts_param/valueProcess.js
+++ b/entity/Context_entity/entityfields/activitylinkable/children/exclusivecontexts_param/valueProcess.js
@@ -1,2 +1,2 @@
 import("system.result");
-result.object(["Task", "Activity"]);
\ No newline at end of file
+result.object(["Task", "Activity", "Forecast", "Offer"]);
\ No newline at end of file
diff --git a/entity/Context_entity/entityfields/tasklinkable/children/exclusivecontexts_param/valueProcess.js b/entity/Context_entity/entityfields/tasklinkable/children/exclusivecontexts_param/valueProcess.js
index e48be1dbc1467adf67d6a78c7c0674fae7364eea..32756d0f3a1de5f864c921cb32147ab10e5bd3cf 100644
--- a/entity/Context_entity/entityfields/tasklinkable/children/exclusivecontexts_param/valueProcess.js
+++ b/entity/Context_entity/entityfields/tasklinkable/children/exclusivecontexts_param/valueProcess.js
@@ -1,2 +1,2 @@
 import("system.result");
-result.object(["Task", "Activity"]);
\ No newline at end of file
+result.object(["Task", "Activity", "Forecast"]);
\ No newline at end of file
diff --git a/entity/Forecast_entity/Forecast_entity.aod b/entity/Forecast_entity/Forecast_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..53367f1c029b3057f3a5a79310eec69281b5aff2
--- /dev/null
+++ b/entity/Forecast_entity/Forecast_entity.aod
@@ -0,0 +1,179 @@
+<?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>Forecast_entity</name>
+  <title>${FORECAST_ENGLISH}</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <recordContainer>db</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>DATE_START</name>
+      <title>Planned</title>
+      <contentType>DATE</contentType>
+      <resolution>DAY</resolution>
+      <outputFormat>dd.MM.yyyy</outputFormat>
+    </entityField>
+    <entityField>
+      <name>GROUPCODE</name>
+      <title>Product</title>
+      <consumer>KeywordProductGroupcodes</consumer>
+      <displayValueProcess>%aditoprj%/entity/Forecast_entity/entityfields/groupcode/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>INFO</name>
+      <title>Info</title>
+      <contentType>LONG_TEXT</contentType>
+    </entityField>
+    <entityField>
+      <name>FORECASTID</name>
+      <valueProcess>%aditoprj%/entity/Forecast_entity/entityfields/forecastid/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>OBJECT_ROWID</name>
+      <consumer>Objects</consumer>
+      <linkedContextProcess>%aditoprj%/entity/Forecast_entity/entityfields/object_rowid/linkedContextProcess.js</linkedContextProcess>
+      <valueProcess>%aditoprj%/entity/Forecast_entity/entityfields/object_rowid/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>TYPE</name>
+    </entityField>
+    <entityField>
+      <name>VOLUME</name>
+      <titleProcess>%aditoprj%/entity/Forecast_entity/entityfields/volume/titleProcess.js</titleProcess>
+    </entityField>
+    <entityConsumer>
+      <name>KeywordProductGroupcodes</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/Forecast_entity/entityfields/keywordproductgroupcodes/children/containername_param/valueProcess.js</valueProcess>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>OBJECT_TYPE</name>
+      <consumer>Contexts</consumer>
+      <valueProcess>%aditoprj%/entity/Forecast_entity/entityfields/object_type/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Forecast_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>Objects</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Object_entity</entityName>
+        <fieldName>AllObjects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Forecast_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess>
+          <expose v="true" />
+          <triggerRecalculation v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Contexts</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Context_entity</entityName>
+        <fieldName>Context</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityProvider>
+      <name>Links</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <recordContainer>db</recordContainer>
+      <dependencies>
+        <entityDependency>
+          <name>42f3a486-1fcd-46b7-8282-e55b1c7ac965</name>
+          <entityName>Salesproject_entity</entityName>
+          <fieldName>Forecasts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+      <triggerRecalculation v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+  </entityFields>
+  <recordContainers>
+    <dbRecordContainer>
+      <name>db</name>
+      <alias>Data_alias</alias>
+      <conditionProcess>%aditoprj%/entity/Forecast_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <linkInformation>
+        <linkInformation>
+          <name>920ae11e-ae44-400f-9df0-fa879131a05c</name>
+          <tableName>FORECAST</tableName>
+          <primaryKey>FORECASTID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="false" />
+        </linkInformation>
+      </linkInformation>
+      <recordFieldMappings>
+        <dbRecordFieldMapping>
+          <name>DATE_START.value</name>
+          <recordfield>FORECAST.DATE_START</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>GROUPCODE.value</name>
+          <recordfield>FORECAST.GROUPCODE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>INFO.value</name>
+          <recordfield>FORECAST.INFO</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TYPE.value</name>
+          <recordfield>FORECAST.TYPE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>VOLUME.value</name>
+          <recordfield>FORECAST.VOLUME</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>GROUPCODE.displayValue</name>
+          <expression>%aditoprj%/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/groupcode.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_ROWID.value</name>
+          <recordfield>FORECAST.OBJECT_ROWID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_ROWID.displayValue</name>
+          <expression>%aditoprj%/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_TYPE.value</name>
+          <recordfield>FORECAST.OBJECT_TYPE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>FORECASTID.value</name>
+          <recordfield>FORECAST.FORECASTID</recordfield>
+        </dbRecordFieldMapping>
+      </recordFieldMappings>
+    </dbRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/SalesprojectForecast_entity/conditionProcess.js b/entity/Forecast_entity/conditionProcess.js
similarity index 70%
rename from entity/SalesprojectForecast_entity/conditionProcess.js
rename to entity/Forecast_entity/conditionProcess.js
index 647c25565dad24ef03a9efcfd30688ff06124f4f..7b8308bce5ffb288b17e60b3990202a175977090 100644
--- a/entity/SalesprojectForecast_entity/conditionProcess.js
+++ b/entity/Forecast_entity/conditionProcess.js
@@ -3,7 +3,7 @@ import("system.result");
 import("Sql_lib");
 
 var cond = new SqlCondition();
-cond.andPrepareVars("SALESPROJECT_FORECAST.SALESPROJECT_ID", "$param.SalesprojectId_param");
+cond.andPrepareVars("FORECAST.OBJECT_ROWID", "$param.ForecastId_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/SalesprojectForecast_entity/entityfields/date_edit/valueProcess.js b/entity/Forecast_entity/entityfields/date_edit/valueProcess.js
similarity index 100%
rename from entity/SalesprojectForecast_entity/entityfields/date_edit/valueProcess.js
rename to entity/Forecast_entity/entityfields/date_edit/valueProcess.js
diff --git a/entity/SalesprojectForecast_entity/entityfields/date_new/valueProcess.js b/entity/Forecast_entity/entityfields/date_new/valueProcess.js
similarity index 100%
rename from entity/SalesprojectForecast_entity/entityfields/date_new/valueProcess.js
rename to entity/Forecast_entity/entityfields/date_new/valueProcess.js
diff --git a/entity/SalesprojectForecast_entity/entityfields/salesproject_forecastid/valueProcess.js b/entity/Forecast_entity/entityfields/forecastid/valueProcess.js
similarity index 100%
rename from entity/SalesprojectForecast_entity/entityfields/salesproject_forecastid/valueProcess.js
rename to entity/Forecast_entity/entityfields/forecastid/valueProcess.js
diff --git a/entity/SalesprojectForecast_entity/entityfields/groupcode/displayValueProcess.js b/entity/Forecast_entity/entityfields/groupcode/displayValueProcess.js
similarity index 97%
rename from entity/SalesprojectForecast_entity/entityfields/groupcode/displayValueProcess.js
rename to entity/Forecast_entity/entityfields/groupcode/displayValueProcess.js
index aa76ca3c491c56e830b9ad158bf584d23c8e680a..b969a4ff0bee37ef3e8d525de185396c440adf25 100644
--- a/entity/SalesprojectForecast_entity/entityfields/groupcode/displayValueProcess.js
+++ b/entity/Forecast_entity/entityfields/groupcode/displayValueProcess.js
@@ -1,6 +1,6 @@
-import("system.result");
-import("system.vars");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-result.string(KeywordUtils.getViewValue($KeywordRegistry.productGroupcode(), vars.get("$field.GROUPCODE")));
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.productGroupcode(), vars.get("$field.GROUPCODE")));
diff --git a/entity/SalesprojectForecast_entity/entityfields/keywordproductgroupcodes/children/containername_param/valueProcess.js b/entity/Forecast_entity/entityfields/keywordproductgroupcodes/children/containername_param/valueProcess.js
similarity index 100%
rename from entity/SalesprojectForecast_entity/entityfields/keywordproductgroupcodes/children/containername_param/valueProcess.js
rename to entity/Forecast_entity/entityfields/keywordproductgroupcodes/children/containername_param/valueProcess.js
diff --git a/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8b080bceea92c146a676b0f33cc7cb87d4e86b9d
--- /dev/null
+++ b/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js
@@ -0,0 +1,11 @@
+import("system.neon");
+import("system.vars");
+import("system.db");
+import("system.result");
+import("Context_lib");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) {
+    result.string("");
+} else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
+    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
+}
\ No newline at end of file
diff --git a/entity/Forecast_entity/entityfields/object_rowid/linkedContextProcess.js b/entity/Forecast_entity/entityfields/object_rowid/linkedContextProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d868fe097f20bc5d880af358b27fdea7a2c86063
--- /dev/null
+++ b/entity/Forecast_entity/entityfields/object_rowid/linkedContextProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getContextName(vars.get("$field.OBJECT_TYPE")))
\ No newline at end of file
diff --git a/entity/Forecast_entity/entityfields/object_rowid/valueProcess.js b/entity/Forecast_entity/entityfields/object_rowid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..09d845d6f59f097036ad418f74975808ec568bb6
--- /dev/null
+++ b/entity/Forecast_entity/entityfields/object_rowid/valueProcess.js
@@ -0,0 +1,5 @@
+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
diff --git a/entity/Forecast_entity/entityfields/object_type/displayValueProcess.js b/entity/Forecast_entity/entityfields/object_type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2965221e0b08ec642696f69eb7ed11d3ceb692cd
--- /dev/null
+++ b/entity/Forecast_entity/entityfields/object_type/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("system.project");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_TYPE")) {
+    result.string("");
+} else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
+    result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECT_TYPE"))[1]);
+}
\ No newline at end of file
diff --git a/entity/Forecast_entity/entityfields/object_type/valueProcess.js b/entity/Forecast_entity/entityfields/object_type/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..61217a860a68a18029aaea234356d5bd53065727
--- /dev/null
+++ b/entity/Forecast_entity/entityfields/object_type/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+    
+if(vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"))
+    result.string(vars.get("$param.ObjectType_param"));
\ No newline at end of file
diff --git a/entity/Forecast_entity/entityfields/objects/children/objecttype_param/valueProcess.js b/entity/Forecast_entity/entityfields/objects/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b1bb16711d793d92bca8f72231ad9c0f745c064d
--- /dev/null
+++ b/entity/Forecast_entity/entityfields/objects/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.get("$field.OBJECT_TYPE"));
\ No newline at end of file
diff --git a/entity/SalesprojectForecast_entity/entityfields/salesprojectforecastdatestart/code.js b/entity/Forecast_entity/entityfields/salesprojectforecastdatestart/code.js
similarity index 100%
rename from entity/SalesprojectForecast_entity/entityfields/salesprojectforecastdatestart/code.js
rename to entity/Forecast_entity/entityfields/salesprojectforecastdatestart/code.js
diff --git a/entity/SalesprojectForecast_entity/entityfields/user_edit/valueProcess.js b/entity/Forecast_entity/entityfields/user_edit/valueProcess.js
similarity index 100%
rename from entity/SalesprojectForecast_entity/entityfields/user_edit/valueProcess.js
rename to entity/Forecast_entity/entityfields/user_edit/valueProcess.js
diff --git a/entity/SalesprojectForecast_entity/entityfields/user_new/valueProcess.js b/entity/Forecast_entity/entityfields/user_new/valueProcess.js
similarity index 100%
rename from entity/SalesprojectForecast_entity/entityfields/user_new/valueProcess.js
rename to entity/Forecast_entity/entityfields/user_new/valueProcess.js
diff --git a/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js b/entity/Forecast_entity/entityfields/volume/titleProcess.js
similarity index 100%
rename from entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js
rename to entity/Forecast_entity/entityfields/volume/titleProcess.js
diff --git a/entity/Forecast_entity/recordcontainers/db/conditionProcess.js b/entity/Forecast_entity/recordcontainers/db/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..567ceccc2b0ebc9a350de292f8f9baa3424bc71f
--- /dev/null
+++ b/entity/Forecast_entity/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,12 @@
+import("system.logging");
+import("system.vars");
+import("system.db");
+import("system.result");
+import("Sql_lib");
+
+var cond = SqlCondition.begin()
+                       .andPrepareVars("FORECAST.OBJECT_ROWID", "$param.ObjectRowId_param")
+                       .andPrepareVars("FORECAST.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/SalesprojectForecast_entity/recordcontainers/db/recordfieldmappings/groupcode.displayvalue/expression.js b/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/groupcode.displayvalue/expression.js
similarity index 74%
rename from entity/SalesprojectForecast_entity/recordcontainers/db/recordfieldmappings/groupcode.displayvalue/expression.js
rename to entity/Forecast_entity/recordcontainers/db/recordfieldmappings/groupcode.displayvalue/expression.js
index a2590bfa96fa9edd3731fa755fea15389de5dfac..e70d6b14e1f84309e16cfd5927091272f25beec8 100644
--- a/entity/SalesprojectForecast_entity/recordcontainers/db/recordfieldmappings/groupcode.displayvalue/expression.js
+++ b/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/groupcode.displayvalue/expression.js
@@ -2,5 +2,5 @@ import("system.result");
 import("Keyword_lib");
 import("KeywordRegistry_basic");
 
-var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "SALESPROJECT_FORECAST.GROUPCODE");
+var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "FORECAST.GROUPCODE");
 result.string(sql);
diff --git a/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..33554680cccd2c3d363443686457c41e0c1c5729
--- /dev/null
+++ b/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getNameSubselectSql("OBJECT_TYPE", "OBJECT_ROWID"))
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index 86428dc192b10bf97f42776b5d4f2aef16ddcfc0..77be00cf0609cb49fe8dca36e2bf8995a53cda9b 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -147,7 +147,7 @@
         </entityDependency>
         <entityDependency>
           <name>3575fdd7-3dd6-4318-b0d2-32d1df821076</name>
-          <entityName>SalesprojectForecast_entity</entityName>
+          <entityName>Forecast_entity</entityName>
           <fieldName>KeywordProductGroupcodes</fieldName>
           <isConsumer v="false" />
         </entityDependency>
diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod
index 99ed95858065c06f5a57e982a8701195b1d412c1..8989028ab5e1ec6e15a355e8f474a86cc53ccc2d 100644
--- a/entity/Object_entity/Object_entity.aod
+++ b/entity/Object_entity/Object_entity.aod
@@ -48,6 +48,18 @@
           <fieldName>Objects</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>40bf3a74-2335-4925-9490-1404fa7c81f6</name>
+          <entityName>Forecast_entity</entityName>
+          <fieldName>Objects</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>f6bb8beb-dbcb-4871-9c50-d2399d569fdb</name>
+          <entityName>Offer_entity</entityName>
+          <fieldName>Objects</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 32bcd06f2db48d231004a1dd344f8ce5cc85144b..cc83b3fbc451cf3b4d94fa43f2276b50d0fe7efd 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -72,17 +72,6 @@
         <element>PROCESS_SETVALUE</element>
       </onValueChangeTypes>
     </entityField>
-    <entityField>
-      <name>SALESPROJECT_ID</name>
-      <title>Salesproject</title>
-      <consumer>Salesprojects</consumer>
-      <linkedContext>Salesproject</linkedContext>
-      <mandatoryProcess>%aditoprj%/entity/Offer_entity/entityfields/salesproject_id/mandatoryProcess.js</mandatoryProcess>
-      <state>INVISIBLE</state>
-      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/salesproject_id/stateProcess.js</stateProcess>
-      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/salesproject_id/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/salesproject_id/displayValueProcess.js</displayValueProcess>
-    </entityField>
     <entityField>
       <name>STATUS</name>
       <title>Status</title>
@@ -173,36 +162,6 @@
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/totalgross/valueProcess.js</valueProcess>
     </entityField>
-    <entityParameter>
-      <name>SalesprojectId_param</name>
-      <expose v="true" />
-      <triggerRecalculation v="true" />
-      <mandatory v="true" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityProvider>
-      <name>SalesprojectOffers</name>
-      <fieldType>DEPENDENCY_IN</fieldType>
-      <recordContainer>db</recordContainer>
-      <dependencies>
-        <entityDependency>
-          <name>208c1273-d438-4263-a466-a4490b5e319a</name>
-          <entityName>Salesproject_entity</entityName>
-          <fieldName>SalesprojectOffers</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <expose v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>SalesprojectId_param</name>
-          <expose v="true" />
-        </entityParameter>
-      </children>
-    </entityProvider>
     <entityField>
       <name>LANGUAGE</name>
       <title>Language</title>
@@ -320,21 +279,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityConsumer>
-      <name>Salesprojects</name>
-      <fieldType>DEPENDENCY_OUT</fieldType>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Salesproject_entity</entityName>
-        <fieldName>openSalesprojects</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
     <entityField>
       <name>ADDRESS</name>
       <documentation>%aditoprj%/entity/Offer_entity/entityfields/address/documentation.adoc</documentation>
@@ -478,12 +422,48 @@
         </entityParameter>
         <entityParameter>
           <name>SalesprojectId_param</name>
-          <expose v="true" />
+          <expose v="false" />
         </entityParameter>
         <entityParameter>
           <name>OfferLanguage_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferCode_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferAddress_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferCurrency_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferDeliveryTerm_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferHeader_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferOriginal_Id_param</name>
           <expose v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>OfferPaymentTerm_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferVersnr_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityParameter>
@@ -709,6 +689,111 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityField>
+      <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>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/object_rowid/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>OBJECT_TYPE</name>
+      <consumer>Contexts</consumer>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/object_type/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>Objects</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Object_entity</entityName>
+        <fieldName>AllObjects</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Contexts</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+      </dependency>
+    </entityConsumer>
+    <entityProvider>
+      <name>Links</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <recordContainer>db</recordContainer>
+      <dependencies>
+        <entityDependency>
+          <name>88a166e6-ccd0-4d51-b554-e3327f66d834</name>
+          <entityName>Salesproject_entity</entityName>
+          <fieldName>Offers</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>OfferDeliveryTerm_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferCode_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferOriginal_Id_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferAddress_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferCurrency_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferHeader_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferLanguage_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferPaymentTerm_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>OfferVersnr_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -776,10 +861,6 @@
           <name>PROBABILITY.value</name>
           <recordfield>OFFER.PROBABILITY</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>SALESPROJECT_ID.value</name>
-          <recordfield>OFFER.SALESPROJECT_ID</recordfield>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>STATUS.value</name>
           <recordfield>OFFER.STATUS</recordfield>
@@ -861,8 +942,16 @@
           <recordfield>OFFER.DATE_EDIT</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
-          <name>SALESPROJECT_ID.displayValue</name>
-          <recordfield>SALESPROJECT.PROJECTTITLE</recordfield>
+          <name>OBJECT_ROWID.value</name>
+          <recordfield>OFFER.OBJECT_ROWID</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_TYPE.value</name>
+          <recordfield>OFFER.OBJECT_TYPE</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT_ROWID.displayValue</name>
+          <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
diff --git a/entity/Offer_entity/conditionProcess.js b/entity/Offer_entity/conditionProcess.js
index 46b77172c421062e7a3ca794200ae6c992f04147..30a86e4e5f568fd555a1a52ded71f3ab23481034 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.SALESPROJECT_ID", "$param.SalesprojectId_param");
+cond.andPrepareVars("OFFER.OBJECT_ROWID", "$param.SalesprojectId_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/activities/children/presetlinks_param/valueProcess.js b/entity/Offer_entity/entityfields/activities/children/presetlinks_param/valueProcess.js
index e4c6c134df6be187331e47d8c2c4d5a9871b7c2b..62ef8073d2fb11127e9fc09b03210d79bf325dea 100644
--- a/entity/Offer_entity/entityfields/activities/children/presetlinks_param/valueProcess.js
+++ b/entity/Offer_entity/entityfields/activities/children/presetlinks_param/valueProcess.js
@@ -10,9 +10,9 @@ if (contactId)
     links.push([ContactUtils.getContextByContactId(contactId), contactId]);
 }
 
-if (vars.get("$field.SALESPROJECT_ID"))
+if (vars.get("$field.OBJECT_ROWID"))
 {
-    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+    links.push(["Salesproject", vars.get("$field.OBJECT_ROWID")]);
 }
 
 result.object(links);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js b/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js
index 3165252cb4ab4b2eae1dda0fdd17c10bd9b4a83b..3eaa4ce4794d8b684533e965fb1c12dab7783497 100644
--- a/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js
@@ -9,7 +9,7 @@ var header = vars.getString("$field.HEADER");
 var offerId = vars.getString("$field.OFFERID");
 var deliveryTerm = vars.getString("$field.DELIVERYTERMS");
 var paymentTerm = vars.getString("$field.PAYMENTTERMS");
-var salesprojectId = vars.getString("$field.SALESPROJECT_ID");
+var salesprojectId = vars.getString("$field.OBJECT_ROWID");
 
 
 OfferUtils.copyOffer(offerId, contactId, language, currency, header, deliveryTerm, paymentTerm, salesprojectId);
diff --git a/entity/Offer_entity/entityfields/newactivity/onActionProcess.js b/entity/Offer_entity/entityfields/newactivity/onActionProcess.js
index 4be677edd52ad21e51db57a867790397f1fe35bc..23d3bc451da2f70dc6cee11a676336b362f53da3 100644
--- a/entity/Offer_entity/entityfields/newactivity/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/newactivity/onActionProcess.js
@@ -10,9 +10,9 @@ if (contactId)
     links.push([ContactUtils.getContextByContactId(contactId), contactId]);
 }
 
-if (vars.get("$field.SALESPROJECT_ID"))
+if (vars.get("$field.OBJECT_ROWID"))
 {
-    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+    links.push(["Salesproject", vars.get("$field.OBJECT_ROWID")]);
 }
 
 ActivityUtils.createNewActivity(vars.getString("$field.OFFERID"), links);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js b/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
index be8fa6eecb4fd7dc771641a6a8585f183894dc83..01d6d3b747ac9bc3dc8d290ec974659d3c80819c 100644
--- a/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
@@ -4,7 +4,7 @@ import("Offer_lib");
 
 var params = {
     "ContactId_param" : vars.get("$field.CONTACT_ID"),
-    "SalesprojectId_param" : vars.get("$field.SALESPROJECT_ID"),
+    "SalesprojectId_param" : vars.get("$field.OBJECT_ROWID"),
     "OfferLanguage_param" : vars.get("$field.LANGUAGE"),
     "OfferOriginal_Id_param" : vars.get("$field.OFFERID"),
     "OfferCode_param" : vars.get("$field.OFFERCODE"),
diff --git a/entity/Offer_entity/entityfields/neworder/onActionProcess.js b/entity/Offer_entity/entityfields/neworder/onActionProcess.js
index 844372309437195d52fcdb07c5c0dc4b4e56ab6d..dce051360b6f16b9ac6d5c2e9dab793eb6f02aa8 100644
--- a/entity/Offer_entity/entityfields/neworder/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/neworder/onActionProcess.js
@@ -3,7 +3,7 @@ import("system.neon");
 import("Offer_lib");
 
 var contactId = vars.getString("$field.CONTACT_ID");
-var salesprojectId = vars.getString("$field.SALESPROJECT_ID");
+var salesprojectId = vars.getString("$field.OBJECT_ROWID");
 var currency = vars.getString("$field.CURRENCY");
 var language = vars.getString("$field.LANGUAGE");
 var header = vars.getString("$field.HEADER");
diff --git a/entity/Offer_entity/entityfields/newtask/onActionProcess.js b/entity/Offer_entity/entityfields/newtask/onActionProcess.js
index f0165851eda69a6c3a0187d29f05c133b4118ed3..3c4a6d95beb2c814463cae5cc46eee8f2a2856d5 100644
--- a/entity/Offer_entity/entityfields/newtask/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/newtask/onActionProcess.js
@@ -10,9 +10,9 @@ if (contactId)
     links.push([ContactUtils.getContextByContactId(contactId), contactId]);
 }
 
-if (vars.get("$field.SALESPROJECT_ID"))
+if (vars.get("$field.OBJECT_ROWID"))
 {
-    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+    links.push(["Salesproject", vars.get("$field.OBJECT_ROWID")]);
 }
 
 TaskUtils.createNewTask(vars.get("$field.OFFERID"), links);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8b080bceea92c146a676b0f33cc7cb87d4e86b9d
--- /dev/null
+++ b/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js
@@ -0,0 +1,11 @@
+import("system.neon");
+import("system.vars");
+import("system.db");
+import("system.result");
+import("Context_lib");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) {
+    result.string("");
+} else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
+    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
+}
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/object_rowid/linkedContextProcess.js b/entity/Offer_entity/entityfields/object_rowid/linkedContextProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..16ec65d1ea4a170df58c97d817ea469ca19cd19a
--- /dev/null
+++ b/entity/Offer_entity/entityfields/object_rowid/linkedContextProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getContextName(vars.get("$field.OBJECT_TYPE")))
diff --git a/entity/Offer_entity/entityfields/object_rowid/mandatoryProcess.js b/entity/Offer_entity/entityfields/object_rowid/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/entity/Offer_entity/entityfields/object_rowid/stateProcess.js b/entity/Offer_entity/entityfields/object_rowid/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/entity/Offer_entity/entityfields/object_rowid/valueProcess.js b/entity/Offer_entity/entityfields/object_rowid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..09d845d6f59f097036ad418f74975808ec568bb6
--- /dev/null
+++ b/entity/Offer_entity/entityfields/object_rowid/valueProcess.js
@@ -0,0 +1,5 @@
+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
diff --git a/entity/Offer_entity/entityfields/object_type/displayValueProcess.js b/entity/Offer_entity/entityfields/object_type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..84a769a5e16744aa1035437dd54720f8d9f0e320
--- /dev/null
+++ b/entity/Offer_entity/entityfields/object_type/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("system.project");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_TYPE")) {
+    result.string("");
+} else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) {
+    result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECT_TYPE"))[1]);
+}
diff --git a/entity/Offer_entity/entityfields/object_type/valueProcess.js b/entity/Offer_entity/entityfields/object_type/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..61217a860a68a18029aaea234356d5bd53065727
--- /dev/null
+++ b/entity/Offer_entity/entityfields/object_type/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+    
+if(vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"))
+    result.string(vars.get("$param.ObjectType_param"));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/salesproject_id/displayValueProcess.js b/entity/Offer_entity/entityfields/salesproject_id/displayValueProcess.js
deleted file mode 100644
index 65afbf6e950eebef0268138074bc97f00869eb0a..0000000000000000000000000000000000000000
--- a/entity/Offer_entity/entityfields/salesproject_id/displayValueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.vars");
-import("system.result");
-import("Salesproject_lib");
-
-result.string(Salesproject.getSalesProjectTitleById(vars.getString("$field.SALESPROJECT_ID")));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/salesproject_id/mandatoryProcess.js b/entity/Offer_entity/entityfields/salesproject_id/mandatoryProcess.js
deleted file mode 100644
index 3bd7da35b29fe62a814c8f4562736441d1b99708..0000000000000000000000000000000000000000
--- a/entity/Offer_entity/entityfields/salesproject_id/mandatoryProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-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/salesproject_id/stateProcess.js b/entity/Offer_entity/entityfields/salesproject_id/stateProcess.js
deleted file mode 100644
index 1b35d9149a31ff3bebe48f47d48c54f55315e375..0000000000000000000000000000000000000000
--- a/entity/Offer_entity/entityfields/salesproject_id/stateProcess.js
+++ /dev/null
@@ -1,17 +0,0 @@
-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);
-}
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/salesproject_id/valueProcess.js b/entity/Offer_entity/entityfields/salesproject_id/valueProcess.js
deleted file mode 100644
index 447b6962106b02b100555df3b988ac90b4528192..0000000000000000000000000000000000000000
--- a/entity/Offer_entity/entityfields/salesproject_id/valueProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.vars");
-
-if (vars.exists("$param.SalesprojectId_param")) 
-{
-    result.string(vars.get("$param.SalesprojectId_param"));
-}
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js b/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js
deleted file mode 100644
index f2c342bc94674b7899c756a441619cddb1769980..0000000000000000000000000000000000000000
--- a/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.vars");
-import("system.result");
-import("Entity_lib");
-
-result.string(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ORG_ID")));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js b/entity/Offer_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js
index e4c6c134df6be187331e47d8c2c4d5a9871b7c2b..62ef8073d2fb11127e9fc09b03210d79bf325dea 100644
--- a/entity/Offer_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js
+++ b/entity/Offer_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js
@@ -10,9 +10,9 @@ if (contactId)
     links.push([ContactUtils.getContextByContactId(contactId), contactId]);
 }
 
-if (vars.get("$field.SALESPROJECT_ID"))
+if (vars.get("$field.OBJECT_ROWID"))
 {
-    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+    links.push(["Salesproject", vars.get("$field.OBJECT_ROWID")]);
 }
 
 result.object(links);
\ No newline at end of file
diff --git a/entity/Offer_entity/recordcontainers/db/conditionProcess.js b/entity/Offer_entity/recordcontainers/db/conditionProcess.js
index 58347450b6f13af8e510f022630d36b1dfac80ea..4538e37b37538159dabb6e7c037e5ba15e88fef3 100644
--- a/entity/Offer_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Offer_entity/recordcontainers/db/conditionProcess.js
@@ -3,7 +3,8 @@ import("system.result");
 import("Sql_lib");
 
 var cond = new SqlCondition();
-cond.andPrepareVars("OFFER.SALESPROJECT_ID", "$param.SalesprojectId_param");
+cond.andPrepareVars("OFFER.OBJECT_ROWID", "$param.ObjectRowId_param");
+cond.andPrepareVars("OFFER.OBJECT_TYPE", "$param.ObjectType_param");
 cond.andPrepareVars("OFFER.CONTACT_ID", "$param.ContactId_param");
 
 //TODO: use a preparedCondition when available #1030812 #1034026
diff --git a/entity/Offer_entity/recordcontainers/db/fromClauseProcess.js b/entity/Offer_entity/recordcontainers/db/fromClauseProcess.js
index 73ea32201ab969db8600af5c66bcafa1ad5523f6..1fd88578ab3b01fffc36b918f8a9ceb951a4f5bd 100644
--- a/entity/Offer_entity/recordcontainers/db/fromClauseProcess.js
+++ b/entity/Offer_entity/recordcontainers/db/fromClauseProcess.js
@@ -1,4 +1,4 @@
 import("system.result");
 
 result.string("OFFER left join CONTACT on CONTACTID = CONTACT_ID \n\
-left join SALESPROJECT on SALESPROJECTID = SALESPROJECT_ID");
\ No newline at end of file
+left join SALESPROJECT on SALESPROJECTID = OBJECT_ROWID");
\ No newline at end of file
diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..33554680cccd2c3d363443686457c41e0c1c5729
--- /dev/null
+++ b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getNameSubselectSql("OBJECT_TYPE", "OBJECT_ROWID"))
\ No newline at end of file
diff --git a/entity/SalesprojectClassificationEntry_entity/SalesprojectClassificationEntry_entity.aod b/entity/SalesprojectClassificationEntry_entity/SalesprojectClassificationEntry_entity.aod
index 1fd132d820c02936fd81381d17a2c8e66ccfe718..a78f05e91bac14cd533fdffbfcbde438a5524568 100644
--- a/entity/SalesprojectClassificationEntry_entity/SalesprojectClassificationEntry_entity.aod
+++ b/entity/SalesprojectClassificationEntry_entity/SalesprojectClassificationEntry_entity.aod
@@ -14,7 +14,7 @@
       <dependencies>
         <entityDependency>
           <name>a7414022-56d3-4ca0-b15f-33601b655d78</name>
-          <entityName>SalesprojectClassification_entity</entityName>
+          <entityName>Classification_entity</entityName>
           <fieldName>SalesprojectClassificationEntries</fieldName>
           <isConsumer v="false" />
         </entityDependency>
diff --git a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
deleted file mode 100644
index bb39731c041d0e54d2244e0b183af5da512ca5cb..0000000000000000000000000000000000000000
--- a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
+++ /dev/null
@@ -1,137 +0,0 @@
-<?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>SalesprojectForecast_entity</name>
-  <title>${FORECAST_ENGLISH}</title>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <recordContainer>db</recordContainer>
-  <entityFields>
-    <entityProvider>
-      <name>#PROVIDER</name>
-    </entityProvider>
-    <entityField>
-      <name>DATE_START</name>
-      <title>Planned</title>
-      <contentType>DATE</contentType>
-      <resolution>DAY</resolution>
-      <outputFormat>dd.MM.yyyy</outputFormat>
-    </entityField>
-    <entityField>
-      <name>GROUPCODE</name>
-      <title>Product</title>
-      <consumer>KeywordProductGroupcodes</consumer>
-      <displayValueProcess>%aditoprj%/entity/SalesprojectForecast_entity/entityfields/groupcode/displayValueProcess.js</displayValueProcess>
-    </entityField>
-    <entityField>
-      <name>INFO</name>
-      <title>Info</title>
-      <contentType>LONG_TEXT</contentType>
-    </entityField>
-    <entityField>
-      <name>SALESPROJECT_FORECASTID</name>
-      <valueProcess>%aditoprj%/entity/SalesprojectForecast_entity/entityfields/salesproject_forecastid/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>SALESPROJECT_ID</name>
-      <valueProcess>%aditoprj%/entity/SalesprojectForecast_entity/entityfields/salesproject_id/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>TYPE</name>
-    </entityField>
-    <entityField>
-      <name>VOLUME</name>
-      <titleProcess>%aditoprj%/entity/SalesprojectForecast_entity/entityfields/volume/titleProcess.js</titleProcess>
-    </entityField>
-    <entityParameter>
-      <name>SalesprojectId_param</name>
-      <expose v="true" />
-      <triggerRecalculation v="true" />
-      <mandatory v="true" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityProvider>
-      <name>SalesprojectForecasts</name>
-      <fieldType>DEPENDENCY_IN</fieldType>
-      <recordContainer>db</recordContainer>
-      <dependencies>
-        <entityDependency>
-          <name>a3d7f5e9-465c-4ded-9220-3569b63925ab</name>
-          <entityName>Salesproject_entity</entityName>
-          <fieldName>SalesprojectForecasts</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
-      <children>
-        <entityParameter>
-          <name>SalesprojectId_param</name>
-          <expose v="true" />
-        </entityParameter>
-      </children>
-    </entityProvider>
-    <entityConsumer>
-      <name>KeywordProductGroupcodes</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/SalesprojectForecast_entity/entityfields/keywordproductgroupcodes/children/containername_param/valueProcess.js</valueProcess>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityConsumer>
-  </entityFields>
-  <recordContainers>
-    <dbRecordContainer>
-      <name>db</name>
-      <alias>Data_alias</alias>
-      <conditionProcess>%aditoprj%/entity/SalesprojectForecast_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <linkInformation>
-        <linkInformation>
-          <name>29b759fb-1d0a-4262-b6af-0da5f3985eb3</name>
-          <tableName>SALESPROJECT_FORECAST</tableName>
-          <primaryKey>SALESPROJECT_FORECASTID</primaryKey>
-          <isUIDTable v="true" />
-          <readonly v="false" />
-        </linkInformation>
-      </linkInformation>
-      <recordFieldMappings>
-        <dbRecordFieldMapping>
-          <name>DATE_START.value</name>
-          <recordfield>SALESPROJECT_FORECAST.DATE_START</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>GROUPCODE.value</name>
-          <recordfield>SALESPROJECT_FORECAST.GROUPCODE</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>INFO.value</name>
-          <recordfield>SALESPROJECT_FORECAST.INFO</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>SALESPROJECT_FORECASTID.value</name>
-          <recordfield>SALESPROJECT_FORECAST.SALESPROJECT_FORECASTID</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>SALESPROJECT_ID.value</name>
-          <recordfield>SALESPROJECT_FORECAST.SALESPROJECT_ID</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>TYPE.value</name>
-          <recordfield>SALESPROJECT_FORECAST.TYPE</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>VOLUME.value</name>
-          <recordfield>SALESPROJECT_FORECAST.VOLUME</recordfield>
-        </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>GROUPCODE.displayValue</name>
-          <expression>%aditoprj%/entity/SalesprojectForecast_entity/recordcontainers/db/recordfieldmappings/groupcode.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
-      </recordFieldMappings>
-    </dbRecordContainer>
-  </recordContainers>
-</entity>
diff --git a/entity/SalesprojectForecast_entity/entityfields/salesproject_id/valueProcess.js b/entity/SalesprojectForecast_entity/entityfields/salesproject_id/valueProcess.js
deleted file mode 100644
index 5f36de767cbd29329b5ff55802646021c5927057..0000000000000000000000000000000000000000
--- a/entity/SalesprojectForecast_entity/entityfields/salesproject_id/valueProcess.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-{
-    if(vars.exists("$param.SalesprojectId_param") && vars.get("$param.SalesprojectId_param") != null) {
-        result.string(vars.getString("$param.SalesprojectId_param"));    
-    }
-}
\ No newline at end of file
diff --git a/entity/SalesprojectForecast_entity/recordcontainers/db/conditionProcess.js b/entity/SalesprojectForecast_entity/recordcontainers/db/conditionProcess.js
deleted file mode 100644
index 647c25565dad24ef03a9efcfd30688ff06124f4f..0000000000000000000000000000000000000000
--- a/entity/SalesprojectForecast_entity/recordcontainers/db/conditionProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.db");
-import("system.result");
-import("Sql_lib");
-
-var cond = new SqlCondition();
-cond.andPrepareVars("SALESPROJECT_FORECAST.SALESPROJECT_ID", "$param.SalesprojectId_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 d0183a15899446c7cb8e11286d712f9ff3cf0536..9f964bb8d2ce61ca2fff09cbfa9fd4dbe765c222 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -152,19 +152,22 @@
       </children>
     </entityConsumer>
     <entityConsumer>
-      <name>SalesprojectForecasts</name>
+      <name>Forecasts</name>
       <title>Forecast</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>SalesprojectForecast_entity</entityName>
-        <fieldName>SalesprojectForecasts</fieldName>
+        <entityName>Forecast_entity</entityName>
+        <fieldName>Links</fieldName>
       </dependency>
       <children>
         <entityParameter>
-          <name>SalesprojectId_param</name>
-          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectforecasts/children/salesprojectid_param/valueProcess.js</valueProcess>
-          <triggerRecalculation v="true" />
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/forecasts/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/forecasts/children/objectrowid_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -187,19 +190,22 @@
       </children>
     </entityConsumer>
     <entityConsumer>
-      <name>SalesprojectOffers</name>
+      <name>Offers</name>
       <title>Offer</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
         <entityName>Offer_entity</entityName>
-        <fieldName>SalesprojectOffers</fieldName>
+        <fieldName>Links</fieldName>
       </dependency>
       <children>
         <entityParameter>
-          <name>SalesprojectId_param</name>
-          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectoffers/children/salesprojectid_param/valueProcess.js</valueProcess>
-          <triggerRecalculation v="true" />
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/offers/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/offers/children/objecttype_param/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -253,7 +259,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>SalesprojectClassification_entity</entityName>
+        <entityName>Classification_entity</entityName>
         <fieldName>SalesprojectClassifications</fieldName>
       </dependency>
       <children>
@@ -526,14 +532,6 @@
     <entityProvider>
       <name>openSalesprojects</name>
       <fieldType>DEPENDENCY_IN</fieldType>
-      <dependencies>
-        <entityDependency>
-          <name>631f55f9-fb0f-4205-bdb8-6e3476268ab4</name>
-          <entityName>Offer_entity</entityName>
-          <fieldName>Salesprojects</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
       <children>
         <entityParameter>
           <name>State_param</name>
diff --git a/entity/Salesproject_entity/entityfields/forecasts/children/objectrowid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/forecasts/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9ac41f1324ad71fe9e6fd8a256bc88dfd40fb8b5
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/forecasts/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.logging");
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.SALESPROJECTID"));
+logging.log("Salesprojectid:    " + vars.get("$field.SALESPROJECTID"))
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/forecasts/children/objecttype_param/valueProcess.js b/entity/Salesproject_entity/entityfields/forecasts/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c346bbcfecb98c65bb737be761cd1c66191250b9
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/forecasts/children/objecttype_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("Context_lib");
+import("system.result");
+result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/offers/children/objectrowid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/offers/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0c198ef8c2f3da7079b6b0cf11dde0a09bf2cc01
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/offers/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+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
new file mode 100644
index 0000000000000000000000000000000000000000..d0156b4590f78c712a4d43ef7419912743e0c24e
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/offers/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.logging");
+import("Context_lib");
+import("system.result");
+result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/salesprojectforecasts/children/salesprojectid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectforecasts/children/forecastid_param/valueProcess.js
similarity index 100%
rename from entity/Salesproject_entity/entityfields/salesprojectforecasts/children/salesprojectid_param/valueProcess.js
rename to entity/Salesproject_entity/entityfields/salesprojectforecasts/children/forecastid_param/valueProcess.js
diff --git a/entity/Salesproject_entity/entityfields/salesprojectoffers/children/salesprojectid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectoffers/children/salesprojectid_param/valueProcess.js
deleted file mode 100644
index b9a94c51a19da02962159545a287ddc773e7320d..0000000000000000000000000000000000000000
--- a/entity/Salesproject_entity/entityfields/salesprojectoffers/children/salesprojectid_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("system.vars");
-
-result.string(vars.getString("$field.SALESPROJECTID"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js b/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js
index 65d94ab76dadcf8189255ca1a84187d9132b9f1f..ba0dcee1bdea46b70b05ec08025b7b7ff497a025 100644
--- a/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js
@@ -8,9 +8,7 @@ if (currentId)
 {
     var toDelete = [
         "SALESPROJECT_COMPETITION",
-        "SALESPROJECT_CLASSIFICATION",
         "SALESPROJECT_MILESTONE",
-        "SALESPROJECT_FORECAST",
         "SALESPROJECT_MEMBER",
         "SALESPROJECT_SOURCE"
     ];
diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
index 95c901de86dfdf90d075c1311539cfe8971f4886..8312582eceedcf24b8d31502ed9446cc481c22c3 100644
--- a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
@@ -33,7 +33,7 @@ vars.get("$local.changed").forEach(function(fieldName) {
             if (state == 'd8a60f60-a4e6-46ee-88ec-bac53e1afedd')
             {
                 // set all offers of the salesproject to lost
-                db.updateData("OFFER", ["STATUS"], null, ["a5682630-01ae-4769-8f03-47dc1db44da4"], SqlCondition.equals("OFFER.SALESPROJECT_ID", vars.getString("$field.SALESPROJECTID"), "1=2"));
+                db.updateData("OFFER", ["STATUS"], null, ["a5682630-01ae-4769-8f03-47dc1db44da4"], SqlCondition.equals("OFFER.OBJECT_ROWID", vars.getString("$field.SALESPROJECTID"), "1=2"));
                 _updateReasons();
                 clearReason = false;
             }
@@ -50,7 +50,7 @@ vars.get("$local.changed").forEach(function(fieldName) {
             {
                 // do not notify as the user just got a question, if he really would like to clear the forecast
                 needToUpdateForecast = false;
-                db.deleteData("SALESPROJECT_FORECAST", SqlCondition.equals("SALESPROJECT_FORECAST.SALESPROJECT_ID", vars.getString("$field.SALESPROJECTID"), "1=2"));
+                db.deleteData("FORECAST", SqlCondition.equals("FORECAST.OBJECT_ROWID", vars.getString("$field.SALESPROJECTID"), "1=2"));
             }
             // if state changed, but not to one of the above states
             else
diff --git a/neonContext/SalesprojectClassification/SalesprojectClassification.aod b/neonContext/Classification/Classification.aod
similarity index 62%
rename from neonContext/SalesprojectClassification/SalesprojectClassification.aod
rename to neonContext/Classification/Classification.aod
index 6ee5b6a54fdd22e67974f3ab748291623013216c..93742f2732bd415738a78fce1504008cf8175581 100644
--- a/neonContext/SalesprojectClassification/SalesprojectClassification.aod
+++ b/neonContext/Classification/Classification.aod
@@ -1,18 +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>SalesprojectClassification</name>
+  <name>Classification</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterview>SalesprojectClassificationFilter_view</filterview>
-  <preview>SalesprojectClassificationPreview_view</preview>
-  <entity>SalesprojectClassification_entity</entity>
+  <filterview>ClassificationFilter_view</filterview>
+  <preview>ClassificationPreview_view</preview>
+  <entity>Classification_entity</entity>
   <references>
     <neonViewReference>
       <name>c0720a84-98a8-459d-bdf5-b3daf56ee059</name>
-      <view>SalesprojectClassificationFilter_view</view>
+      <view>ClassificationFilter_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>e5f1c9a7-19a8-433e-b25e-83001d4f7bf8</name>
-      <view>SalesprojectClassificationPreview_view</view>
+      <view>ClassificationPreview_view</view>
     </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/SalesprojectForecast/SalesprojectForecast.aod b/neonContext/Forecast/Forecast.aod
similarity index 62%
rename from neonContext/SalesprojectForecast/SalesprojectForecast.aod
rename to neonContext/Forecast/Forecast.aod
index b345c4c47e0503fb1655ecbd89b8b17f9e9cf27f..cc439ee0eee58c9e1af308d63d43b3c403e13536 100644
--- a/neonContext/SalesprojectForecast/SalesprojectForecast.aod
+++ b/neonContext/Forecast/Forecast.aod
@@ -1,23 +1,23 @@
 <?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>SalesprojectForecast</name>
+  <name>Forecast</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterview>SalesprojectForecastFilter_view</filterview>
-  <editview>SalesprojectForecastEdit_view</editview>
-  <preview>SalesprojectForecastPreview_view</preview>
-  <entity>SalesprojectForecast_entity</entity>
+  <filterview>ForecastFilter_view</filterview>
+  <editview>ForecastEdit_view</editview>
+  <preview>ForecastPreview_view</preview>
+  <entity>Forecast_entity</entity>
   <references>
     <neonViewReference>
       <name>20d80c15-97f0-490c-b845-b2b4f63c6a5d</name>
-      <view>SalesprojectForecastFilter_view</view>
+      <view>ForecastFilter_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>7cc72509-722b-4d4f-870c-08878129ceb9</name>
-      <view>SalesprojectForecastEdit_view</view>
+      <view>ForecastEdit_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>1fe6e10b-52b4-44a4-88d8-9784a967572c</name>
-      <view>SalesprojectForecastPreview_view</view>
+      <view>ForecastPreview_view</view>
     </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonView/SalesprojectClassificationFilter_view/SalesprojectClassificationFilter_view.aod b/neonView/ClassificationFilter_view/ClassificationFilter_view.aod
similarity index 94%
rename from neonView/SalesprojectClassificationFilter_view/SalesprojectClassificationFilter_view.aod
rename to neonView/ClassificationFilter_view/ClassificationFilter_view.aod
index c12d4d020ed0be624ca97c968eaf8513307c9237..db8719cd4eb5aec93069990a167499fcff7fb311 100644
--- a/neonView/SalesprojectClassificationFilter_view/SalesprojectClassificationFilter_view.aod
+++ b/neonView/ClassificationFilter_view/ClassificationFilter_view.aod
@@ -1,6 +1,6 @@
 <?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>SalesprojectClassificationFilter_view</name>
+  <name>ClassificationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
     <boxLayout>
diff --git a/neonView/SalesprojectClassificationPreview_view/SalesprojectClassificationPreview_view.aod b/neonView/ClassificationPreview_view/ClassificationPreview_view.aod
similarity index 95%
rename from neonView/SalesprojectClassificationPreview_view/SalesprojectClassificationPreview_view.aod
rename to neonView/ClassificationPreview_view/ClassificationPreview_view.aod
index 7fc86e847504296d1b616f06fc346fb3d866b6ad..fecc003882e808322acfd3420404211a9720193f 100644
--- a/neonView/SalesprojectClassificationPreview_view/SalesprojectClassificationPreview_view.aod
+++ b/neonView/ClassificationPreview_view/ClassificationPreview_view.aod
@@ -1,6 +1,6 @@
 <?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>SalesprojectClassificationPreview_view</name>
+  <name>ClassificationPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
     <headerFooterLayout>
diff --git a/neonView/SalesprojectForecastEdit_view/SalesprojectForecastEdit_view.aod b/neonView/ForecastEdit_view/ForecastEdit_view.aod
similarity index 96%
rename from neonView/SalesprojectForecastEdit_view/SalesprojectForecastEdit_view.aod
rename to neonView/ForecastEdit_view/ForecastEdit_view.aod
index 626e71ea6539a7164475d7f6c829ed5d53289ad6..5808b80f510554b1e30fb652231faab398ca3466 100644
--- a/neonView/SalesprojectForecastEdit_view/SalesprojectForecastEdit_view.aod
+++ b/neonView/ForecastEdit_view/ForecastEdit_view.aod
@@ -1,6 +1,6 @@
 <?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>SalesprojectForecastEdit_view</name>
+  <name>ForecastEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <isSmall v="true" />
   <layout>
diff --git a/neonView/SalesprojectForecastFilter_view/SalesprojectForecastFilter_view.aod b/neonView/ForecastFilter_view/ForecastFilter_view.aod
similarity index 77%
rename from neonView/SalesprojectForecastFilter_view/SalesprojectForecastFilter_view.aod
rename to neonView/ForecastFilter_view/ForecastFilter_view.aod
index 63f7e54df860019a04eace135ed6e27dd8705471..a99ce54d997d96e97f86e599c781aab4f51c3312 100644
--- a/neonView/SalesprojectForecastFilter_view/SalesprojectForecastFilter_view.aod
+++ b/neonView/ForecastFilter_view/ForecastFilter_view.aod
@@ -1,6 +1,6 @@
 <?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>SalesprojectForecastFilter_view</name>
+  <name>ForecastFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
@@ -29,6 +29,14 @@
           <name>305d0254-a1ea-4733-87a7-a4d85fc78b7e</name>
           <entityField>INFO</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>945c0ec1-826f-4dc7-9556-7bd3d5e0afbc</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>1ac60cf5-fa50-4305-81b4-859a883ddc3e</name>
+          <entityField>OBJECT_ROWID</entityField>
+        </neonTableColumn>
       </columns>
     </tableViewTemplate>
   </children>
diff --git a/neonView/SalesprojectForecastPreview_view/SalesprojectForecastPreview_view.aod b/neonView/ForecastPreview_view/ForecastPreview_view.aod
similarity index 96%
rename from neonView/SalesprojectForecastPreview_view/SalesprojectForecastPreview_view.aod
rename to neonView/ForecastPreview_view/ForecastPreview_view.aod
index 8b7f0b9c84e4a46bb94aff397eb6a168831b3f13..ecb16cc14bf56eaac1c360e5e2fd0b8ccba6d1d0 100644
--- a/neonView/SalesprojectForecastPreview_view/SalesprojectForecastPreview_view.aod
+++ b/neonView/ForecastPreview_view/ForecastPreview_view.aod
@@ -1,6 +1,6 @@
 <?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>SalesprojectForecastPreview_view</name>
+  <name>ForecastPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
     <headerFooterLayout>
diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
index 2ac8547b5b4d4913bfdc9c98b2e4e1f8468f406a..a7b23cd90dfad38db02ce4992374adafd3d81180 100644
--- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
+++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
@@ -26,8 +26,8 @@
     </neonViewReference>
     <neonViewReference>
       <name>9dbe03b3-e5d3-4db8-b542-506b13322d4f</name>
-      <entityField>SalesprojectForecasts</entityField>
-      <view>SalesprojectForecastFilter_view</view>
+      <entityField>Forecasts</entityField>
+      <view>ForecastFilter_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>8986df12-88fc-49a8-9e48-f4c1f371532f</name>
@@ -46,7 +46,7 @@
     </neonViewReference>
     <neonViewReference>
       <name>b1deae1b-c39a-48bd-9221-ed4153ee8ec9</name>
-      <entityField>SalesprojectOffers</entityField>
+      <entityField>Offers</entityField>
       <view>OfferFilter_view</view>
     </neonViewReference>
     <neonViewReference>
diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
index 744c534f9d14337eecaaaa48194b806d3225b34c..17e857ea50ea9915d237f3f3744bf3462c505ca1 100644
--- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
+++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
@@ -2,7 +2,7 @@
 <preferences xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="3.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/preferences/3.1.0">
   <name>_____PREFERENCES_PROJECT</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <projectName>xRM-Basic_current</projectName>
+  <projectName>basic_25042019</projectName>
   <jditoMaxContentSize v="57671680" />
   <calendarCategoriesEvent>
     <entry>