diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index 33ed911d36e6c3012a6e0e311acdc615689e15af..2b9bfcbde13220c2de33cde0c8364cebbda99984 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -246,6 +246,26 @@
       <mandatory v="false" />
       <description>PARAMETER</description>
     </entityParameter>
+    <entityOutgoingField>
+      <name>ActivityObjectRelation_dfo</name>
+      <title>Relations</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>ObjectRelation_entity</entityName>
+        <fieldName>ObjectRelationByObject1_dfi</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>Object1Rowid_param</name>
+          <code>%aditoprj%/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/object1rowid_param/code.js</code>
+        </entityParameter>
+        <entityParameter>
+          <name>Object1Type_param</name>
+          <code>%aditoprj%/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/object1type_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityOutgoingField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/object1rowid_param/code.js b/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/object1rowid_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..a8267b62060b4bd30cedaba4713f4421a6e6f9ff
--- /dev/null
+++ b/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/object1rowid_param/code.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.ACTIVITYID"));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/object1type_param/code.js b/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/object1type_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..c99cd53587f59c7e10dfab8541e38e7fdb6611d7
--- /dev/null
+++ b/entity/Activity_entity/entityfields/activityobjectrelation_dfo/children/object1type_param/code.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/icon/valueProcess.js b/entity/Activity_entity/entityfields/icon/valueProcess.js
index 6f78dfcee1f8ed5135d1d95d7e4770387308cb19..b77beeec11507c78d1c9397de5ac9d8ea3676cc0 100644
--- a/entity/Activity_entity/entityfields/icon/valueProcess.js
+++ b/entity/Activity_entity/entityfields/icon/valueProcess.js
@@ -7,4 +7,4 @@ var category = vars.getString("$field.CATEGORY");
 var kwd = KeywordUtils.createKeyword("ACTIVITY.CATEGORY");
 var icon = kwd.getPropForKey(category, "defaultAvatarRepresentation", true);
 
-result.string(icon || "NEON:HISTORY");
\ No newline at end of file
+result.string(icon || "NEON:HISTORY");
diff --git a/entity/ObjectRelation_entity/ObjectRelation_entity.aod b/entity/ObjectRelation_entity/ObjectRelation_entity.aod
index 52aac5e6a29c9683389465b35d54af3201914889..025da7095dcc7a9ad452576ed64d8a72e66d4466 100644
--- a/entity/ObjectRelation_entity/ObjectRelation_entity.aod
+++ b/entity/ObjectRelation_entity/ObjectRelation_entity.aod
@@ -46,6 +46,7 @@
     <entityField>
       <name>OBJECT2_ROWID</name>
       <title>Object 2</title>
+      <linkedContextProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2_rowid/linkedContextProcess.js</linkedContextProcess>
     </entityField>
     <entityField>
       <name>OBJECT2_TYPE</name>
@@ -61,13 +62,54 @@
     <entityIncomingField>
       <name>ObjectRelationById_dfi</name>
       <fieldType>DEPENDENCY_IN</fieldType>
+      <title>Relations</title>
       <recordContainer>db</recordContainer>
+      <children>
+        <entityParameter>
+          <name>Object1Type_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>Object1Rowid_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
     </entityIncomingField>
+    <entityParameter>
+      <name>Object1Type_param</name>
+      <expose v="true" />
+      <triggerRecalculation v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityIncomingField>
+      <name>ObjectRelationByObject1_dfi</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <recordContainer>db</recordContainer>
+      <dependencies>
+        <entityDependency>
+          <name>8eb3187c-07cb-4b51-8b7e-d63e83959bdb</name>
+          <entityName>Activity_entity</entityName>
+          <fieldName>ActivityObjectRelation_dfo</fieldName>
+          <isOutgoing v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>ObjectRelatonId_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityIncomingField>
+    <entityParameter>
+      <name>Object1Rowid_param</name>
+      <expose v="true" />
+      <triggerRecalculation v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
-      <title></title>
       <description>&amp;lt;null value&amp;gt;</description>
       <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
@@ -113,6 +155,14 @@
           <name>USER_NEW.value</name>
           <recordfield>AB_OBJECTRELATION.USER_NEW</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>AB_OBJECTRELATION.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>OBJECT2_ROWID.displayValue</name>
+          <recordfield>AB_OBJECTRELATION.OBJECT2_TYPE</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/ObjectRelation_entity/entityfields/object2_rowid/linkedContextProcess.js b/entity/ObjectRelation_entity/entityfields/object2_rowid/linkedContextProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..05ab13d81d4b3ebbc566b8733ac265ed7d46d31d
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/object2_rowid/linkedContextProcess.js
@@ -0,0 +1,3 @@
+import("system.vars");
+import("system.result");
+result.string(vars.get("$field.OBJECT2_TYPE"))
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js b/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js
index fb7e7cc1c02f96bee6639785e888b75126328265..6b012d3a311f754687e1b770982f45bc8a6f4b4e 100644
--- a/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js
@@ -4,11 +4,16 @@ import("system.result");
 import("system.db");
 import("Sql_lib");
 
-logging.log("objectid: " + vars.get("$param.ObjectRelatonId_param"))
+logging.log("rowid: " + vars.get("$param.Object1Rowid_param"))
+logging.log("type: " + vars.get("$param.Object1Type_param"))
 logging.log(SqlCondition.begin()
+                .andPrepareVars("AB_OBJECTRELATION.OBJECT1_TYPE", "$param.Object1Type_param")
+                .andPrepareVars("AB_OBJECTRELATION.OBJECT1_ROWID", "$param.Object1Rowid_param")
                 .andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONID", "$param.ObjectRelatonId_param")
                 .build("1=2").toSource())
 
 result.string(db.translateCondition(SqlCondition.begin()
+                .andPrepareVars("AB_OBJECTRELATION.OBJECT1_TYPE", "$param.Object1Type_param")
+                .andPrepareVars("AB_OBJECTRELATION.OBJECT1_ROWID", "$param.Object1Rowid_param")
                 .andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONID", "$param.ObjectRelatonId_param")
                 .build("1=2")));
\ No newline at end of file
diff --git a/entity/Offeritem_entity/onDBDelete.js b/entity/Offeritem_entity/onDBDelete.js
index 9190f702beebebf62fb114f687b3894cf8bab682..2acb846c67015c02499f80bb8487248c0e58368a 100644
--- a/entity/Offeritem_entity/onDBDelete.js
+++ b/entity/Offeritem_entity/onDBDelete.js
@@ -17,5 +17,5 @@ if(oid != "")
     
     db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
     
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/onDBInsert.js b/entity/Offeritem_entity/onDBInsert.js
index 54792d1a09562384b432beb72945a794bf6a62ce..048025fe9d93f3c973ca34223f4c06cb4badecc6 100644
--- a/entity/Offeritem_entity/onDBInsert.js
+++ b/entity/Offeritem_entity/onDBInsert.js
@@ -22,5 +22,5 @@ if(oid != "")
     
     db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
     
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/onDBUpdate.js b/entity/Offeritem_entity/onDBUpdate.js
index c25fed571f83b27402f785a023e0f38aa0531eb8..7441937d9ef37bb099ba1e70bd80b95786f46fb1 100644
--- a/entity/Offeritem_entity/onDBUpdate.js
+++ b/entity/Offeritem_entity/onDBUpdate.js
@@ -12,5 +12,5 @@ if(oid != "")
     
     db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
     
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js b/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js
index 3d3da26d0f804b33af083028027237dc3dd9f628..568700b215786effb8a1556df300e84cd46d1ad2 100644
--- a/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Offeritem_entity/recordcontainers/db/onDBDelete.js
@@ -19,5 +19,5 @@ if(oid != "")
 
     db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
     
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js b/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
index faad425ccbc39089f889aa851f39659c52c77067..33f35dd3c95aca115048ab046723af2d0ef049ed 100644
--- a/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Offeritem_entity/recordcontainers/db/onDBInsert.js
@@ -23,5 +23,5 @@ if(oid != "")
 
     db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
     
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js b/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
index 23ce07486b0f9a78d16145ede5487e91d73a475c..8c333d3d4bb50852a39cb07e25afd19126008406 100644
--- a/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
@@ -12,5 +12,5 @@ if(oid != "")
     
     db.updateData("OFFER", cols, null, oiUtils.getNetAndVat(), SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
 
-    neon.refresh("Offer_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Orderitem_entity/recordcontainers/db/onDBDelete.js b/entity/Orderitem_entity/recordcontainers/db/onDBDelete.js
index 9b55b013181aac8ee35b14ca9d063b7fdee36aae..1893bf1fa144173d7daa6b7d8f6145a08de46751 100644
--- a/entity/Orderitem_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Orderitem_entity/recordcontainers/db/onDBDelete.js
@@ -18,5 +18,5 @@ if(oid != "")
     
     db.updateData("SALESORDER", cols, null, vals, SqlCondition.equals("SALESORDER.SALESORDERID", oid, "1 = 2"));
 
-    neon.refresh("Order_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js b/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js
index ba73df2fc7da5b3c777ec227f02f3ef024110da9..e564c8123b9d288c2f48b0ef3e49e48fc36286b8 100644
--- a/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Orderitem_entity/recordcontainers/db/onDBInsert.js
@@ -23,5 +23,5 @@ if(oid != "")
     
     db.updateData("SALESORDER", cols, null, vals, SqlCondition.equals("SALESORDER.SALESORDERID", oid, "1 = 2"));
     
-    neon.refresh("Order_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js b/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js
index bf481974b157e3a0a32e8ff7946e9be9251aab13..cd1ddcfae6c72996f2d193a85255f15b11fecc0f 100644
--- a/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js
@@ -13,5 +13,5 @@ if(oid != "")
     
     db.updateData("SALESORDER", cols, null, vals, SqlCondition.equals("SALESORDER.SALESORDERID", oid, "1 = 2"));
     
-    neon.refresh("Order_entity");
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/SalesprojectClassification_entity/contentProcess.js b/entity/SalesprojectClassification_entity/contentProcess.js
index ac02906b90201d9bed32a268416e5050d7e07023..f1676827b8aa6a7a1741b1bb44843ec46dd320ab 100644
--- a/entity/SalesprojectClassification_entity/contentProcess.js
+++ b/entity/SalesprojectClassification_entity/contentProcess.js
@@ -5,7 +5,7 @@ import("Keyword_lib");
 
 var keyword = KeywordUtils.createKeyword("SALESPROJECT.CLASS");
 
-if (vars.exists("$local.idvalues")) {
+if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) {
     var idValues = vars.get("$local.idvalues");
     
     if (idValues.length > 0) {
diff --git a/entity/SalesprojectClassification_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectClassification_entity/recordcontainers/jdito/contentProcess.js
index ac02906b90201d9bed32a268416e5050d7e07023..f1676827b8aa6a7a1741b1bb44843ec46dd320ab 100644
--- a/entity/SalesprojectClassification_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/SalesprojectClassification_entity/recordcontainers/jdito/contentProcess.js
@@ -5,7 +5,7 @@ import("Keyword_lib");
 
 var keyword = KeywordUtils.createKeyword("SALESPROJECT.CLASS");
 
-if (vars.exists("$local.idvalues")) {
+if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) {
     var idValues = vars.get("$local.idvalues");
     
     if (idValues.length > 0) {
diff --git a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
index 04eca20d0ae9324898f65501684a433f1ffd792b..75ee24a6cdd205048d9c3f6562deb79668dd3ef8 100644
--- a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
+++ b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
@@ -1,7 +1,7 @@
 <?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.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.1.1">
   <name>SalesprojectForecast_entity</name>
-  <title>Forecast</title>
+  <title>${FORECAST_ENGLISH}</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <recordContainer>db</recordContainer>
   <entityFields>
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 2b839216346e76e05f23c3771f85db8eb5813093..837d6c806ecc55860723385587be10b68b580921 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -4,9 +4,9 @@
   <title>Task</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Task_entity/documentation.adoc</documentation>
-  <icon>VAADIN:TASKS</icon>
   <onValidation>%aditoprj%/entity/Task_entity/onValidation.js</onValidation>
   <iconId>VAADIN:TASKS</iconId>
+  <iconIdProcess>%aditoprj%/entity/Task_entity/iconIdProcess.js</iconIdProcess>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityIncomingField>
@@ -32,6 +32,7 @@
       <title>{$TASK_STATUS}</title>
       <mandatory v="true" />
       <possibleItemsProcess>%aditoprj%/entity/Task_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/status/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -39,6 +40,7 @@
       <title>priority</title>
       <mandatory v="true" />
       <possibleItemsProcess>%aditoprj%/entity/Task_entity/entityfields/priority/possibleItemsProcess.js</possibleItemsProcess>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/priority/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -59,6 +61,7 @@
       <title>start date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/start_date/valueProcess.js</valueProcess>
       <onValidation>%aditoprj%/entity/Task_entity/entityfields/start_date/onValidation.js</onValidation>
     </entityField>
@@ -74,6 +77,7 @@
       <name>TYPE</name>
       <title>type</title>
       <possibleItemsProcess>%aditoprj%/entity/Task_entity/entityfields/type/possibleItemsProcess.js</possibleItemsProcess>
+      <groupable v="true" />
     </entityField>
     <entityField>
       <name>DESCRIPTION</name>
diff --git a/entity/Task_entity/iconIdProcess.js b/entity/Task_entity/iconIdProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d65e648d41234d7bdcc0620e3afd1cce86bd16ae
--- /dev/null
+++ b/entity/Task_entity/iconIdProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("Keyword_lib");
+
+var category = vars.getString("$field.PRIORITY");
+var kwd = KeywordUtils.createKeyword("TASK.PRIORITY");
+var icon = kwd.getPropForKey(category, "defaultAvatarRepresentation", true);
+
+result.string(icon || "VAADIN:TASKS");
\ No newline at end of file
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 7b5592f85ebcf7b63d8ceab1be399b2cfe734e14..18311db9c92e09d046ac05a256910719a60f5eac 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -1459,6 +1459,34 @@
       <key>responsible</key>
     </entry>
     <entry>
+      <key>Kundenstammblatt</key>
+    </entry>
+    <entry>
+      <key>Person</key>
+    </entry>
+    <entry>
+      <key>Detail</key>
+    </entry>
+    <entry>
+      <key>Object 2</key>
+    </entry>
+    <entry>
+      <key>Object 1</key>
+    </entry>
+    <entry>
+      <key>Type 2</key>
+    </entry>
+    <entry>
+      <key>Type 1</key>
+    </entry>
+    <entry>
+      <key>Relations</key>
+    </entry>
+    <entry>
+      <key>Object Relation</key>
+    </entry>
+    <entry>
+      <key>${FORECAST_ENGLISH}</key>
       <key>${ADDRESS_STATE}</key>
     </entry>
     <entry>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 014c54344e826da644c36e2fc6b4e9910b88d54f..7a997ae430781dc8960f1bf131730b42e38d1192 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -1581,6 +1581,7 @@
     </entry>
     <entry>
       <key>Object</key>
+      <value>Objekt</value>
     </entry>
     <entry>
       <key>Attributes</key>
@@ -1876,6 +1877,39 @@
       <key>{$DATE_EDIT}</key>
       <value>Änderungsdatum</value>
     </entry>
+    <entry>
+      <key>Kundenstammblatt</key>
+    </entry>
+    <entry>
+      <key>Person</key>
+    </entry>
+    <entry>
+      <key>Detail</key>
+    </entry>
+    <entry>
+      <key>Object 2</key>
+    </entry>
+    <entry>
+      <key>Object 1</key>
+    </entry>
+    <entry>
+      <key>Type 2</key>
+    </entry>
+    <entry>
+      <key>Type 1</key>
+    </entry>
+    <entry>
+      <key>Relations</key>
+      <value>Beziehungen</value>
+    </entry>
+    <entry>
+      <key>Object Relation</key>
+      <value>Objektbeziehung</value>
+    </entry>
+    <entry>
+      <key>${FORECAST_ENGLISH}</key>
+      <value>Forecast</value>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index ef18f89bf9a6e332acbcf563985bd312f0a471cf..15d73635855f33fa8892af6163a52e111f9df2e0 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -1488,6 +1488,35 @@
       <key>responsible</key>
     </entry>
     <entry>
+      <key>Kundenstammblatt</key>
+    </entry>
+    <entry>
+      <key>Person</key>
+    </entry>
+    <entry>
+      <key>Detail</key>
+    </entry>
+    <entry>
+      <key>Object 2</key>
+    </entry>
+    <entry>
+      <key>Object 1</key>
+    </entry>
+    <entry>
+      <key>Type 2</key>
+    </entry>
+    <entry>
+      <key>Type 1</key>
+    </entry>
+    <entry>
+      <key>Relations</key>
+    </entry>
+    <entry>
+      <key>Object Relation</key>
+    </entry>
+    <entry>
+      <key>${FORECAST_ENGLISH}</key>
+      <value>Forecast</value>
       <key>${ADDRESS_STATE}</key>
       <value>state</value>
     </entry>
diff --git a/neonContext/ObjectRelation_context/ObjectRelation_context.aod b/neonContext/ObjectRelation_context/ObjectRelation_context.aod
index 90149360d0cc36dcfafaabe2735efa1e9b2045b7..4e07153b0da1edb8c26414e3b1f13bf990d7f88e 100644
--- a/neonContext/ObjectRelation_context/ObjectRelation_context.aod
+++ b/neonContext/ObjectRelation_context/ObjectRelation_context.aod
@@ -2,11 +2,17 @@
 <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.0.0">
   <name>ObjectRelation_context</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterview>ObjectRelationFilter_view</filterview>
+  <preview>ObjectRelationPreview_view</preview>
   <entity>ObjectRelation_entity</entity>
   <references>
     <neonViewReference>
       <name>f6b27aa2-d0a7-479c-812e-8b16400b564b</name>
       <view>ObjectRelationFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>dc0bd793-a472-4a7b-8394-06c4bc31258a</name>
+      <view>ObjectRelationPreview_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/Task_context/Task_context.aod b/neonContext/Task_context/Task_context.aod
index d6459a17b6e3a705b34defe319bee538cfb4173c..ecc29110ce8b3975061d296bf11f51d70006646f 100644
--- a/neonContext/Task_context/Task_context.aod
+++ b/neonContext/Task_context/Task_context.aod
@@ -4,7 +4,6 @@
   <title>Task</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/neonContext/Task_context/documentation.adoc</documentation>
-  <icon>VAADIN:TASKS</icon>
   <mainview>TaskMain_view</mainview>
   <filterview>TaskFilter_view</filterview>
   <editview>TaskEdit_view</editview>
diff --git a/neonView/ActivityFilter_view/ActivityFilter_view.aod b/neonView/ActivityFilter_view/ActivityFilter_view.aod
index 1b59c632c4471c1d52188a22b22d60a369751531..0c14d5e456eab7ddffa55d87576f7dd00cf6364f 100644
--- a/neonView/ActivityFilter_view/ActivityFilter_view.aod
+++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod
@@ -55,6 +55,14 @@
     </groupLayout>
   </layout>
   <children>
+    <timelineViewTemplate>
+      <name>TimelineFilter_template</name>
+      <dateField>ENTRYDATE</dateField>
+      <titleField>SUBJECT_DETAILS</titleField>
+      <descriptionField>INFO</descriptionField>
+      <iconIdField>DIRECTION_ICON</iconIdField>
+      <entityField>#ENTITY</entityField>
+    </timelineViewTemplate>
     <tableViewTemplate>
       <name>table_template</name>
       <entityField>#ENTITY</entityField>
@@ -81,14 +89,6 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
-    <timelineViewTemplate>
-      <name>TimelineFilter_template</name>
-      <dateField>ENTRYDATE</dateField>
-      <titleField>SUBJECT_DETAILS</titleField>
-      <descriptionField>INFO</descriptionField>
-      <iconIdField>DIRECTION_ICON</iconIdField>
-      <entityField>#ENTITY</entityField>
-    </timelineViewTemplate>
     <treetableViewTemplate>
       <name>Treetable_template</name>
       <titleField>SUBJECT</titleField>
diff --git a/neonView/ActivityMain_view/ActivityMain_view.aod b/neonView/ActivityMain_view/ActivityMain_view.aod
index 983a1dc1ef0e8558b374b41c82f58f6899fa0401..88a02cfbd082c02abe166b722fa5129147d2e98c 100644
--- a/neonView/ActivityMain_view/ActivityMain_view.aod
+++ b/neonView/ActivityMain_view/ActivityMain_view.aod
@@ -24,5 +24,10 @@
       <entityField>ActivityDocument_dfo</entityField>
       <view>DocumentFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>644418a6-7945-493b-be3f-86b3b62daaab</name>
+      <entityField>ActivityObjectRelation_dfo</entityField>
+      <view>ObjectRelationFilter_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod b/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod
index 3f48889779996f9719b1a3b404b3d70a0c47da36..7f1be075c72f6241b9e60876fc3bd49448d567d2 100644
--- a/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod
+++ b/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod
@@ -32,12 +32,6 @@
           <width v="75" />
           <expandRatio v="100" />
         </neonTableColumn>
-        <neonTableColumn>
-          <name>99e92d98-81b4-4e68-927e-a77771b31ed7</name>
-          <entityField>OBJECT2_TYPE</entityField>
-          <width v="75" />
-          <expandRatio v="100" />
-        </neonTableColumn>
       </columns>
     </tableViewTemplate>
   </children>
diff --git a/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod b/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..5da23f941553fb1d3a7c4f1b6d548d495812c889
--- /dev/null
+++ b/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod
@@ -0,0 +1,23 @@
+<?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.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1">
+  <name>ObjectRelationPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Object</name>
+      <entityField>#ENTITY</entityField>
+      <title>Object</title>
+      <fields>
+        <entityFieldLink>
+          <name>eabe1737-7a31-4181-8c32-bda6a9f7d7e9</name>
+          <entityField>OBJECT2_ROWID</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
index 9fc30060c6d93d5c22ec275e4a575843b1d52713..27fef9cb071909a8ee03637d78b83fef0074a4ae 100644
--- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
+++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
@@ -52,10 +52,11 @@
     <tableViewTemplate>
       <name>SalesprojectFilter_table</name>
       <entityField>#ENTITY</entityField>
+      <title></title>
       <columns>
         <neonTableColumn>
-          <name>91a153d4-4ede-4ba1-b11e-713e476e77c9</name>
-          <entityField>PROJECTCODE</entityField>
+          <name>6702bb75-1c57-42a7-9cf0-acd7cd8515f5</name>
+          <entityField>RELATION_ID</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>9f6b967e-5140-420f-84ca-2273920221bd</name>
diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod
index 01dc1876945f01e1f00a54ce5d68fbeba89d714d..7218b02bd500edd32ca1dfc327623865ee39c0c6 100644
--- a/neonView/TaskFilter_view/TaskFilter_view.aod
+++ b/neonView/TaskFilter_view/TaskFilter_view.aod
@@ -4,11 +4,19 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <boxLayout>
+    <groupLayout>
       <name>layout</name>
-    </boxLayout>
+    </groupLayout>
   </layout>
   <children>
+    <timelineViewTemplate>
+      <name>mainTimeline</name>
+      <dateField>START_DATE</dateField>
+      <titleField>SUBJECT</titleField>
+      <descriptionField>DESCRIPTION</descriptionField>
+      <iconIdField>#ICON</iconIdField>
+      <entityField>#ENTITY</entityField>
+    </timelineViewTemplate>
     <tableViewTemplate>
       <name>mainTable</name>
       <entityField>#ENTITY</entityField>
@@ -41,5 +49,12 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treetableViewTemplate>
+      <name>mainTreetable</name>
+      <titleField>SUBJECT</titleField>
+      <descriptionField>DESCRIPTION</descriptionField>
+      <iconField>#ICON</iconField>
+      <entityField>#ENTITY</entityField>
+    </treetableViewTemplate>
   </children>
 </neonView>
diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
index 3f9daeb173f0de1d87682e389317618aba75d421..336d6b092bda8ab38166821c8d50c82ace586ceb 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.0.3" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/preferences/3.0.3">
   <name>_____PREFERENCES_PROJECT</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <projectName>basic 2019</projectName>
+  <projectName>xRM-Basic2019</projectName>
   <jditoMaxContentSize v="57671680" />
   <calendarCategoriesEvent>
     <entry>
diff --git a/process/OfferOrder_lib/process.js b/process/OfferOrder_lib/process.js
index 78375a40824f284cbd831ef642e06158bc2b8cf3..d2b44d92d67ba659f9c8609aa45ea30b4b637e07 100644
--- a/process/OfferOrder_lib/process.js
+++ b/process/OfferOrder_lib/process.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.translate");
 import("system.text");
 import("system.vars");
@@ -140,12 +141,16 @@ function ItemUtils(pOfferOrderId, pTableName) {
  * get a new SqlCondition Object with tablename + "ITEM." + tablename + "ITEMID" = pItemId
  * 
  * @param {String} pItemId item id
+ * @param {String} [pTableName=this.tableName] table name, if this is not available
  * 
  * @return {SqlCondition}
  */
-ItemUtils.prototype.getNewItemIdCondition = function(pItemId)
+ItemUtils.prototype.getNewItemIdCondition = function(pItemId, pTableName)
 {
-    return SqlCondition.begin().andPrepare(this.tableName + "ITEM." + this.tableName + "ITEMID", pItemId);
+    if (pTableName == undefined) 
+        pTableName = this.tableName;
+    logging.log("hää" + pTableName)
+    return SqlCondition.begin().andPrepare(pTableName + "ITEM." + pTableName + "ITEMID", pItemId);
 }
 
 /**
@@ -168,7 +173,7 @@ ItemUtils.prototype.getNetAndVat = function(itemIds) {
         itemIds.forEach(function(pItem)
         {
             condition.andPrepare(this.tableName + "ITEM." + this.tableName + "ITEMID", pItem, "# <> ?");
-        });
+        }, this);
     }
 
     var orderItems = db.table(condition.buildSql("select QUANTITY, PRICE, DISCOUNT, VAT, OPTIONAL from " + this.tableName + "ITEM", "1 = 0"));   
@@ -280,8 +285,9 @@ ItemUtils.prototype.insertPartsList = function(columns, productId, assignedTo, c
         
         columns = columns.concat(additionalProductInfo.map(function(item) {return item[0]}));
         var colTypes = db.getColumnTypes(table, columns);
-
-        __itemInsertStatement(partsList.root, assignedTo, currency, relationId);
+        logging.log(partsList.toSource())
+        // partsList[rootProdId] = root node
+        __itemInsertStatement(partsList[rootProdId], assignedTo, currency, relationId);
 
         if (statements.length > 0)
             db.inserts(statements);
@@ -332,7 +338,8 @@ ItemUtils.prototype.insertPartsList = function(columns, productId, assignedTo, c
             
             statements.push([table, columns, colTypes, vals]);
             insertedItemIds.push(newid);
-
+            
+            logging.log(p2pid)
             __itemInsertStatement(partsList[p2pid], newid);
         }
     }
@@ -352,7 +359,7 @@ ItemUtils.prototype.deletePartsList = function(itemId) {
         
     //save address for this here to get class variables in recursive sub function __itemDeleteStatement
     var self = this;
-    
+    logging.log("1 " + self.tableName)
     var statements = [];
 
     __itemDeleteStatement(itemId);
@@ -366,11 +373,15 @@ ItemUtils.prototype.deletePartsList = function(itemId) {
     
     //recursive function for building item delete statements 
     function __itemDeleteStatement(itemId) {
-        var itemsToDelete = self.ItemTree[itemId].ids;
+        logging.log("2 " + self.tableName)
 
+        var itemsToDelete = self.ItemTree[itemId].ids;
+        logging.log("__ " + self.tableName)
+        logging.log(itemsToDelete.toSource())
         for (var i = 0; i < itemsToDelete.length; i++) {
             //unshift due to foreign key constraints (Delete hierarchically starting at the bottom)
-            statements.unshift(self.getNewItemIdCondition(itemsToDelete[i]).build("1 = 2"));
+            logging.log("3 " + self.tableName)
+            statements.unshift(self.getNewItemIdCondition(itemsToDelete[i], self.tableName).build("1 = 2"));
             deletedItemIds.push(itemsToDelete[i]);
             __itemDeleteStatement(itemsToDelete[i]);
         }
diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js
index da37e649374a882de7479bb427a8078a1e9cad0d..eb5e2391198db58a4c8409bb868c7c0c9090ef15 100644
--- a/process/Sql_lib/process.js
+++ b/process/Sql_lib/process.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.translate");
 import("system.vars");
 import("system.db");