diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index f92410dc6e452781251f2c741f9e2a4632626f17..c22e676dc4cec740fb2a5863ade7c3b28014e355 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -3791,6 +3791,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>TYPE</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>
             </entityFields>
           </entityDb>
           <entityDb>
diff --git a/entity/ObjectRelation_entity/ObjectRelation_entity.aod b/entity/ObjectRelation_entity/ObjectRelation_entity.aod
index 7962870d76d7b67f7f3d91d16bb3a4a301c3cc2d..dbac00a4240ed7902fee5822787d7037b93a476c 100644
--- a/entity/ObjectRelation_entity/ObjectRelation_entity.aod
+++ b/entity/ObjectRelation_entity/ObjectRelation_entity.aod
@@ -105,6 +105,15 @@
           <name>Object1Rowid_param</name>
           <expose v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>Object2RowidTitle_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ProviderType_param</name>
+          <code>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1/children/providertype_param/code.js</code>
+          <expose v="true" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityParameter>
@@ -146,6 +155,15 @@
           <expose v="true" />
           <mandatory v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>Object2RowidTitle_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ProviderType_param</name>
+          <code>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2/children/providertype_param/code.js</code>
+          <expose v="true" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityProvider>
@@ -192,6 +210,15 @@
           <expose v="true" />
           <mandatory v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>Object2RowidTitle_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ProviderType_param</name>
+          <code>%aditoprj%/entity/ObjectRelation_entity/entityfields/bothobjects/children/providertype_param/code.js</code>
+          <expose v="true" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityParameter>
@@ -277,6 +304,15 @@
           <expose v="true" />
           <mandatory v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>Object2RowidTitle_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ProviderType_param</name>
+          <code>%aditoprj%/entity/ObjectRelation_entity/entityfields/anyobject/children/providertype_param/code.js</code>
+          <expose v="true" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityConsumer>
@@ -341,6 +377,56 @@
     <entityField>
       <name>EMPTY</name>
     </entityField>
+    <entityField>
+      <name>TYPE</name>
+    </entityField>
+    <entityProvider>
+      <name>ObjectTree</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <recordContainer>tree_jdito</recordContainer>
+      <children>
+        <entityParameter>
+          <name>Object1Rowid_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>Object1Type_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>AnyObjectRowid_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>AnyObjectType_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>Object2Type_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>Object2Rowid_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>Object2RowidTitle_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ProviderType_param</name>
+          <code>%aditoprj%/entity/ObjectRelation_entity/entityfields/objecttree/children/providertype_param/code.js</code>
+          <expose v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>ProviderType_param</name>
+      <code>%aditoprj%/entity/ObjectRelation_entity/entityfields/providertype_param/code.js</code>
+      <expose v="true" />
+      <mandatory v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -386,7 +472,14 @@
           <name>OBJECT1_ROWID.displayValue</name>
           <expression>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_rowid.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>TYPE.value</name>
+          <recordfield>AB_OBJECTRELATION.TYPE</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
+    <jDitoRecordContainer>
+      <name>tree_jdito</name>
+    </jDitoRecordContainer>
   </recordContainers>
 </entity>
diff --git a/entity/ObjectRelation_entity/entityfields/ab_objectrelationid/valueProcess.js b/entity/ObjectRelation_entity/entityfields/ab_objectrelationid/valueProcess.js
index f76379296760e9936f42f3cf5a76d9dd62b99931..f6b9da922bcaccb0006690f599c1d3cee4d00c55 100644
--- a/entity/ObjectRelation_entity/entityfields/ab_objectrelationid/valueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/ab_objectrelationid/valueProcess.js
@@ -4,4 +4,4 @@ import("system.vars");
 import("system.result");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-result.string(util.getNewUUID());
\ No newline at end of file
+    result.string(util.getNewUUID());
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/anyobject/children/providertype_param/code.js b/entity/ObjectRelation_entity/entityfields/anyobject/children/providertype_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..5d1be15ce3fd65e260ffa2251376f33985b90096
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/anyobject/children/providertype_param/code.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("any");
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/anyobjectrowid/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/anyobjectrowid/displayValueProcess.js
index 29b3c356fb8f351c572ff747316347964f3b279d..f262c44d341bd7722a749aaaf5551dfac9ec5ced 100644
--- a/entity/ObjectRelation_entity/entityfields/anyobjectrowid/displayValueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/anyobjectrowid/displayValueProcess.js
@@ -3,7 +3,10 @@ import("system.result");
 import("system.vars");
 import("Context_lib");
 
-if (vars.exists("$field.AnyObjectType") && vars.get("$field.AnyObjectType") && vars.exists("$field.AnyObjectRowid") && vars.get("$field.AnyObjectRowid"))
+var providerType = vars.getString("$param.ProviderType_param");
+
+// any object
+if (providerType == "any")
 {
     result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.AnyObjectType"), vars.get("$field.AnyObjectRowid"))));
 }
diff --git a/entity/ObjectRelation_entity/entityfields/anyobjectrowid/valueProcess.js b/entity/ObjectRelation_entity/entityfields/anyobjectrowid/valueProcess.js
index 30698cf10e59153bd413ab2cd1a62f6438142a74..7b5c62b30062a183c218818a9446d53cee05986c 100644
--- a/entity/ObjectRelation_entity/entityfields/anyobjectrowid/valueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/anyobjectrowid/valueProcess.js
@@ -3,9 +3,10 @@ import("system.vars");
 
 var openedType;
 var openedRowid;
+var providerType = vars.getString("$param.ProviderType_param");
 
 // any object
-if (vars.exists("$param.AnyObjectType_param") && vars.get("$param.AnyObjectType_param"))
+if (providerType == "any")
 {
     openedType = vars.get("$param.AnyObjectType_param");
     if (vars.exists("$param.AnyObjectRowid_param") && vars.get("$param.AnyObjectRowid_param"))
diff --git a/entity/ObjectRelation_entity/entityfields/anyobjecttype/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/anyobjecttype/displayValueProcess.js
index ca00da6bc37690b86ed4f22e84626869fba6984b..24c141470a2c2abc3d1f6f0f81af2ddbdbf9fbc0 100644
--- a/entity/ObjectRelation_entity/entityfields/anyobjecttype/displayValueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/anyobjecttype/displayValueProcess.js
@@ -2,7 +2,10 @@ import("system.project");
 import("system.result");
 import("system.vars");
 
-if (vars.exists("$field.AnyObjectType") && vars.get("$field.AnyObjectType"))
+var providerType = vars.getString("$param.ProviderType_param");
+
+// any object
+if (providerType == "any")
 {
     result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.AnyObjectType"))[1]);
 }
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/anyobjecttype/valueProcess.js b/entity/ObjectRelation_entity/entityfields/anyobjecttype/valueProcess.js
index 8635bcb6845130b5780e8ee872af7afa2159b97d..03a9ea0a0fcf48ff3abea05942f910e7ca25bdbc 100644
--- a/entity/ObjectRelation_entity/entityfields/anyobjecttype/valueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/anyobjecttype/valueProcess.js
@@ -4,9 +4,10 @@ import("system.vars");
 
 var openedType;
 var openedRowid;
+var providerType = vars.getString("$param.ProviderType_param");
 
 // any object
-if (vars.exists("$param.AnyObjectType_param") && vars.get("$param.AnyObjectType_param"))
+if (providerType == "any")
 {
     openedType = vars.get("$param.AnyObjectType_param");
     if (vars.exists("$param.AnyObjectRowid_param") && vars.get("$param.AnyObjectRowid_param"))
diff --git a/entity/ObjectRelation_entity/entityfields/bothobjects/children/providertype_param/code.js b/entity/ObjectRelation_entity/entityfields/bothobjects/children/providertype_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab42a16d83110cef60bce47b775990672e2f9601
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/bothobjects/children/providertype_param/code.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("both");
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object1/children/providertype_param/code.js b/entity/ObjectRelation_entity/entityfields/object1/children/providertype_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..975bf6435dc851b37792e7ee9a8666ff109192dc
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/object1/children/providertype_param/code.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("1");
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object1_rowid/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/object1_rowid/displayValueProcess.js
index f82167f8b69e5413ef49fe0d7ce1dc2cbdebc500..d2f41749749b83f74ffdfe64a3d6f87034d15189 100644
--- a/entity/ObjectRelation_entity/entityfields/object1_rowid/displayValueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/object1_rowid/displayValueProcess.js
@@ -7,7 +7,9 @@ import("Context_lib");
 var recordstate = vars.get("$sys.recordstate");
 if (recordstate == neon.OPERATINGSTATE_NEW)
 {
-    if (vars.exists("$param.AnyObjectRowid_param") && vars.get("$param.AnyObjectRowid_param"))
+    var providerType = vars.getString("$param.ProviderType_param");
+    // any object
+    if (providerType == "any")
     {
         result.string(db.cell(ContextUtils.getNameSql(vars.get("$param.AnyObjectType_param"), vars.get("$param.AnyObjectRowid_param"))));
     }
diff --git a/entity/ObjectRelation_entity/entityfields/object1_rowid/stateProcess.js b/entity/ObjectRelation_entity/entityfields/object1_rowid/stateProcess.js
index 5f470da0cc219d8c305b419a6a832c5e7a5a3b54..1713cbfdb03a2ff43a2d7adfd18ee482919f0d75 100644
--- a/entity/ObjectRelation_entity/entityfields/object1_rowid/stateProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/object1_rowid/stateProcess.js
@@ -5,9 +5,9 @@ import("system.vars");
 var recordstate = vars.get("$sys.recordstate");
 if (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)
 {
-
-    if ((vars.exists("$param.AnyObjectRowid_param") && vars.get("$param.AnyObjectRowid_param"))
-        || (vars.exists("$param.Object1Rowid_param") && vars.get("$param.Object1Rowid_param")))
+    var providerType = vars.getString("$param.ProviderType_param");
+    if (providerType == "any" && vars.get("$param.AnyObjectRowid_param") == vars.get("$field.OBJECT1_ROWID")
+        || providerType == "1")
     {
         result.string(neon.COMPONENTSTATE_READONLY);
     }
diff --git a/entity/ObjectRelation_entity/entityfields/object1_rowid/valueProcess.js b/entity/ObjectRelation_entity/entityfields/object1_rowid/valueProcess.js
index 679db41733d3a5ffa393e371edb985ae2c8dc344..10fdb42a49e770c4f633d2b94b242f38411b0bbb 100644
--- a/entity/ObjectRelation_entity/entityfields/object1_rowid/valueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/object1_rowid/valueProcess.js
@@ -6,7 +6,9 @@ var recordstate = vars.get("$sys.recordstate");
 
 if (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)
 {
-    if (vars.exists("$param.AnyObjectRowid_param") && vars.get("$param.AnyObjectRowid_param"))
+    var providerType = vars.getString("$param.ProviderType_param");
+    // any object
+    if (providerType == "any")
     {
         result.string(vars.get("$param.AnyObjectRowid_param"));
     }
diff --git a/entity/ObjectRelation_entity/entityfields/object1_type/stateProcess.js b/entity/ObjectRelation_entity/entityfields/object1_type/stateProcess.js
index 7cbd5a35ac443244ab9d384daab659e8ffc0a4ef..251f52b4fbf77879688c74dd2f2d09690470c967 100644
--- a/entity/ObjectRelation_entity/entityfields/object1_type/stateProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/object1_type/stateProcess.js
@@ -5,10 +5,11 @@ import("system.vars");
 var recordstate = vars.get("$sys.recordstate");
 if (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)
 {
-    if ((vars.exists("$param.AnyObjectType_param") && vars.get("$param.AnyObjectType_param"))
-        || (vars.exists("$param.Object1Type_param") && vars.get("$param.Object1Type_param")))
+    var providerType = vars.getString("$param.ProviderType_param");
+    
+    if (providerType == "any" && vars.get("$param.AnyObjectType_param") == vars.get("$field.OBJECT1_TYPE")
+        || providerType == "1")
     {
         result.string(neon.COMPONENTSTATE_READONLY);
     }
-}
-result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object2/children/providertype_param/code.js b/entity/ObjectRelation_entity/entityfields/object2/children/providertype_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..c05919d82d34a27dc80efd9ac7fb646cb4d0b0e5
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/object2/children/providertype_param/code.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("2");
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object2_rowid/stateProcess.js b/entity/ObjectRelation_entity/entityfields/object2_rowid/stateProcess.js
index 51c5fa78a283b5a93d4c88cdf1fa8e8f63b0b5c8..55fb75957632042e6b7f71ae7ce0abf8359b77f4 100644
--- a/entity/ObjectRelation_entity/entityfields/object2_rowid/stateProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/object2_rowid/stateProcess.js
@@ -5,6 +5,9 @@ import("system.vars");
 var recordstate = vars.get("$sys.recordstate");
 if (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)
 {
-    if (vars.exists("$param.Object2Rowid_param") && vars.get("$param.Object2Rowid_param"))
+    var providerType = vars.getString("$param.ProviderType_param");
+    
+    if (providerType == "any" && vars.get("$param.AnyObjectRowid_param") == vars.get("$field.OBJECT2_ROWID")
+        || providerType == "2")
         result.string(neon.COMPONENTSTATE_READONLY);
 }
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object2_type/stateProcess.js b/entity/ObjectRelation_entity/entityfields/object2_type/stateProcess.js
index 7d99ab991e0db32c5e2666c93aebe5ba80473a3f..a4c722604fc231f7dbcd6de8da4d14201179ebed 100644
--- a/entity/ObjectRelation_entity/entityfields/object2_type/stateProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/object2_type/stateProcess.js
@@ -5,6 +5,9 @@ import("system.vars");
 var recordstate = vars.get("$sys.recordstate");
 if (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)
 {
-    if (vars.exists("$param.Object2Type_param") && vars.get("$param.Object2Type_param"))
+    var providerType = vars.getString("$param.ProviderType_param");
+    
+    if (providerType == "any" && vars.get("$param.AnyObjectType_param") == vars.get("$field.OBJECT2_TYPE")
+        || providerType == "2")
         result.string(neon.COMPONENTSTATE_READONLY);
 }
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/objecttree/children/providertype_param/code.js b/entity/ObjectRelation_entity/entityfields/objecttree/children/providertype_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a2d2e1c96782b8407f30181246efb90a9efd35a
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/objecttree/children/providertype_param/code.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("tree");
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/providertype_param/code.js b/entity/ObjectRelation_entity/entityfields/providertype_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..981503eee34d83611c7bf484a2fab5e86840bf03
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/providertype_param/code.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("none");
\ 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 fd3608bd8705e0b8cc518d06c4530b32a7e3e589..6ac4ab4010d87f497ddae4ca4fd90bec174f3649 100644
--- a/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js
@@ -3,6 +3,8 @@ import("system.result");
 import("system.db");
 import("Sql_lib");
 
+var providerType = vars.getString("$param.ProviderType_param");
+
 var anyObject = SqlCondition.begin()
                             .orSqlCondition(SqlCondition.begin()
                                                         .andPrepareVars("AB_OBJECTRELATION.OBJECT1_TYPE", "$param.AnyObjectType_param")
@@ -21,17 +23,20 @@ var object2 = SqlCondition.begin()
 
 var fullCondition = SqlCondition.begin();
 
-// if all four parameters exist, check for all. else only check 1 or 2 or any
-if (vars.exists("$param.Object1Type_param") && vars.get("$param.Object1Type_param") && vars.exists("$param.Object2Type_param") && vars.get("$param.Object2Type_param"))
-{
-    fullCondition.andSqlCondition(object1, "1=2")
-                 .andSqlCondition(object2, "1=2");
-}
-else
+
+switch (providerType) 
 {
-    fullCondition.orSqlCondition(anyObject)
-                 .orSqlCondition(object1)
-                 .orSqlCondition(object2);
+    case "both":
+        fullCondition.andSqlCondition(object1, "1=2")
+                     .andSqlCondition(object2, "1=2");
+        break;
+    case "any":
+        fullCondition.orSqlCondition(anyObject);
+        break;
+    case "1":
+        fullCondition.orSqlCondition(object1);
+    case "2":
+        fullCondition.orSqlCondition(object2);
 }
 
 result.string(db.translateCondition(fullCondition.build("1=2")));
\ No newline at end of file
diff --git a/neonContext/ObjectRelation/ObjectRelation.aod b/neonContext/ObjectRelation/ObjectRelation.aod
index 763a754b47c69d0746663e2b28c48748487daaa0..dc26829c2bbdab805cc8bd7f956cf456f5766d33 100644
--- a/neonContext/ObjectRelation/ObjectRelation.aod
+++ b/neonContext/ObjectRelation/ObjectRelation.aod
@@ -23,5 +23,9 @@
       <name>cec4dc52-b38f-4f7c-b8ca-4b81ccda3ac1</name>
       <view>Object1RelationFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>a1efaa32-2313-40b5-9cd0-715b9c635036</name>
+      <view>ObjectRelationTree_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonView/ObjectRelationTree_view/ObjectRelationTree_view.aod b/neonView/ObjectRelationTree_view/ObjectRelationTree_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..e85a4964fbb7a4116241a68932a2666dd19436fb
--- /dev/null
+++ b/neonView/ObjectRelationTree_view/ObjectRelationTree_view.aod
@@ -0,0 +1,16 @@
+<?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>ObjectRelationTree_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <treetableViewTemplate>
+      <name>objectRelations</name>
+      <entityField>#ENTITY</entityField>
+    </treetableViewTemplate>
+  </children>
+</neonView>
diff --git a/others/db_changes/data_alias/basic/2019.2/add_ObjectRelationKeyword.xml b/others/db_changes/data_alias/basic/2019.2/add_ObjectRelationKeyword.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c3ba23a84cb792e8608ce298def08e6377e25515
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/add_ObjectRelationKeyword.xml
@@ -0,0 +1,132 @@
+<?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="j.hoermann" id="e19fc338-8596-4dbb-81e0-0cb6a1af6bf2">
+        <addColumn tableName="AB_OBJECTRELATION">
+            <column name="TYPE" type="CHAR(36)"/>
+        </addColumn>
+        
+        <!-- define attributes for the object relation -->
+        <insert tableName="AB_KEYWORD_ATTRIBUTE">
+            <column name="AB_KEYWORD_ATTRIBUTEID" value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+            <column name="NAME" value="Object1Title"/>
+            <column name="TYPE" value="CHAR_VALUE"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTE">
+            <column name="AB_KEYWORD_ATTRIBUTEID" value="e8c85be3-1acb-45f6-aeea-726ba5811ab8"/>
+            <column name="NAME" value="Object2Title"/>
+            <column name="TYPE" value="CHAR_VALUE"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTE">
+            <column name="AB_KEYWORD_ATTRIBUTEID" value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+            <column name="NAME" value="Object1Type"/>
+            <column name="TYPE" value="CHAR_VALUE"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTE">
+            <column name="AB_KEYWORD_ATTRIBUTEID" value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+            <column name="NAME" value="Object2Type"/>
+            <column name="TYPE" value="CHAR_VALUE"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+        </insert>
+        
+      
+        <!-- insert the possible relations --> 
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="c9b7ce6b-1100-46f6-8498-2da6ac24189e"/>
+            <column name="KEYID" value="85ad4578-dce2-49df-a844-d162f1bd9f2f"/>
+            <column name="TITLE" value="parent company - subsidiary"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+            <column name="SORTING" valueNumeric="0"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="4e986a5a-2262-4ec0-b421-c2f5d88be018"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="c9b7ce6b-1100-46f6-8498-2da6ac24189e"/>
+            <column name="CHAR_VALUE" value="parent company"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="7b9e8730-b6c8-482a-8a75-aee066a8efe5"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="e8c85be3-1acb-45f6-aeea-726ba5811ab8"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="c9b7ce6b-1100-46f6-8498-2da6ac24189e"/>
+            <column name="CHAR_VALUE" value="subsidiary"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="b6526d57-2ad9-48dc-94a7-689e8d263c16"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="c9b7ce6b-1100-46f6-8498-2da6ac24189e"/>
+            <column name="CHAR_VALUE" value="Organisation"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="d9a32354-81a5-4172-bab7-fef08a49ca74"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="c9b7ce6b-1100-46f6-8498-2da6ac24189e"/>
+            <column name="CHAR_VALUE" value="Organisation"/>
+        </insert>
+    
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="727959cf-35ae-4f31-94f0-03f1aa86ce63"/>
+            <column name="KEYID" value="727959cf-35ae-4f31-94f0-03f1aa86ce63"/>
+            <column name="TITLE" value="parent - child"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="8a59bb48-9a59-44d4-a850-2efe195c86a3"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="727959cf-35ae-4f31-94f0-03f1aa86ce63"/>
+            <column name="CHAR_VALUE" value="parent"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="df713320-3aa3-4fb0-949d-8d23e03bdcbf"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="e8c85be3-1acb-45f6-aeea-726ba5811ab8"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="727959cf-35ae-4f31-94f0-03f1aa86ce63"/>
+            <column name="CHAR_VALUE" value="child"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="361a2bbf-2e1b-49fc-8d5d-8926b6ad279f"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="727959cf-35ae-4f31-94f0-03f1aa86ce63"/>
+            <column name="CHAR_VALUE" value="Person"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="f8671437-0f70-406f-bd45-8013709b8b00"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="727959cf-35ae-4f31-94f0-03f1aa86ce63"/>
+            <column name="CHAR_VALUE" value="Person"/>
+        </insert>
+    
+    
+    
+        <rollback>
+            <dropColumn tableName="AB_OBJECTRELATION" columnName="TYPE"/>
+            
+            <delete tableName="AB_KEYWORD_ATTRIBUTE">
+                <where>CONTAINER = ?</where>
+                <whereParams>
+                    <param value="ObjectRelationType"/>
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>CONTAINER = ?</where>
+                <whereParams>
+                    <param value="ObjectRelationType"/>
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ATTRIBUTERELATION">
+                <where>AB_KEYWORD_ATTRIBUTE_ID in (?, ?, ?, ?)</where>
+                <whereParams>
+                    <param value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+                    <param value="e8c85be3-1acb-45f6-aeea-726ba5811ab8"/>
+                    <param value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+                    <param value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+                </whereParams>
+            </delete>
+        </rollback>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/changelog.xml b/others/db_changes/data_alias/basic/2019.2/changelog.xml
index 6677259879dd02f5fd5256bd666331a83fc8e3bc..49f4486f0d8a921bae481d8250b98638b5b936a2 100644
--- a/others/db_changes/data_alias/basic/2019.2/changelog.xml
+++ b/others/db_changes/data_alias/basic/2019.2/changelog.xml
@@ -49,4 +49,5 @@
     <include relativeToChangelogFile="true" file="task_add_parent.xml"/>
     
     <include relativeToChangelogFile="true" file="drop_estimation_salesproject.xml"/>
+    <include relativeToChangelogFile="true" file="add_ObjectRelationKeyword.xml"/>
 </databaseChangeLog>
\ No newline at end of file