diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index f92410dc6e452781251f2c741f9e2a4632626f17..2e94d4bd228e5e2984c5e849f7cf651916f2fa05 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>RELATION_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/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index ece6be667f3735f1bf350754596a6d0bd001ff7f..9e148be36ba46b56d64e22f048bf0159f6ad728f 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -150,31 +150,9 @@
       <mandatory v="false" />
       <description>PARAMETER</description>
     </entityParameter>
-    <entityConsumer>
-      <name>ObjectRelations</name>
-      <title>Relations</title>
-      <fieldType>DEPENDENCY_OUT</fieldType>
-      <dependency>
-        <name>dependency</name>
-        <entityName>ObjectRelation_entity</entityName>
-        <fieldName>Object1</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>Object1Rowid_param</name>
-          <code>%aditoprj%/entity/Activity_entity/entityfields/objectrelations/children/object1rowid_param/code.js</code>
-          <triggerRecalculation v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object1Type_param</name>
-          <code>%aditoprj%/entity/Activity_entity/entityfields/objectrelations/children/object1type_param/code.js</code>
-          <triggerRecalculation v="true" />
-        </entityParameter>
-      </children>
-    </entityConsumer>
     <entityConsumer>
       <name>Links</name>
-      <title>Beziehungen</title>
+      <title>Verknüpfungen</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
diff --git a/entity/AppointmentLink_entity/AppointmentLink_entity.aod b/entity/AppointmentLink_entity/AppointmentLink_entity.aod
index bc72da91e628ee5f62b0bdf68103841c9314e292..88950dc8c8a13e8fa81aa062eb65ccbf8eda13e3 100644
--- a/entity/AppointmentLink_entity/AppointmentLink_entity.aod
+++ b/entity/AppointmentLink_entity/AppointmentLink_entity.aod
@@ -84,7 +84,6 @@
       <name>db</name>
       <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <onDBInsert>%aditoprj%/entity/AppointmentLink_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <linkInformation>
         <linkInformation>
           <name>211047ab-be9d-401b-a2d9-3dd1e048c5c5</name>
diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index de0bacc7b2ce10ec457028c7be050fd9c5d87e09..4ca857a7c8dec52f7cb7a2ff3b4af4a20426e478 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -252,6 +252,12 @@
           <fieldName>KeywordProbabilties</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>49156847-1f96-462c-b914-e3c22f10ba18</name>
+          <entityName>ObjectRelation_entity</entityName>
+          <fieldName>KeywordObjectRelationType</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
         <entityDependency>
           <name>a44375e9-917c-4db8-9aa8-de0625caf78f</name>
           <entityName>Activity_entity</entityName>
diff --git a/entity/ObjectRelation_entity/ObjectRelation_entity.aod b/entity/ObjectRelation_entity/ObjectRelation_entity.aod
index 7962870d76d7b67f7f3d91d16bb3a4a301c3cc2d..4ea612737b1477d8e10af5778db15db7348729c2 100644
--- a/entity/ObjectRelation_entity/ObjectRelation_entity.aod
+++ b/entity/ObjectRelation_entity/ObjectRelation_entity.aod
@@ -15,9 +15,6 @@
       <consumer>Contexts</consumer>
       <linkedContext>Context</linkedContext>
       <mandatory v="true" />
-      <stateProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_type/stateProcess.js</stateProcess>
-      <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_type/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_type/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>OBJECT1_ROWID</name>
@@ -25,9 +22,6 @@
       <consumer>Objects1</consumer>
       <linkedContextProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_rowid/linkedContextProcess.js</linkedContextProcess>
       <mandatory v="true" />
-      <stateProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_rowid/stateProcess.js</stateProcess>
-      <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_rowid/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_rowid/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>AB_OBJECTRELATIONID</name>
@@ -39,10 +33,7 @@
       <consumer>Objects2</consumer>
       <linkedContextProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2_rowid/linkedContextProcess.js</linkedContextProcess>
       <mandatory v="true" />
-      <stateProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2_rowid/stateProcess.js</stateProcess>
       <titleProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2_rowid/titleProcess.js</titleProcess>
-      <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2_rowid/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2_rowid/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>OBJECT2_TYPE</name>
@@ -50,235 +41,7 @@
       <consumer>Contexts</consumer>
       <linkedContext>Context</linkedContext>
       <mandatory v="true" />
-      <stateProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2_type/stateProcess.js</stateProcess>
-      <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2_type/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2_type/displayValueProcess.js</displayValueProcess>
     </entityField>
-    <entityParameter>
-      <name>Object1Type_param</name>
-      <expose v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityProvider>
-      <name>Object1</name>
-      <fieldType>DEPENDENCY_IN</fieldType>
-      <targetContextField>OBJECT2_TYPE</targetContextField>
-      <targetIdField>OBJECT2_ROWID</targetIdField>
-      <documentation>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1/documentation.adoc</documentation>
-      <recordContainer>db</recordContainer>
-      <dependencies>
-        <entityDependency>
-          <name>637d4127-8eba-42e3-9857-a2869668f94c</name>
-          <entityName>Activity_entity</entityName>
-          <fieldName>ObjectRelations</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
-      <children>
-        <entityParameter>
-          <name>AnyObjectRowid_param</name>
-          <expose v="false" />
-          <mandatory v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>AnyObjectType_param</name>
-          <expose v="false" />
-          <mandatory v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object2Rowid_param</name>
-          <expose v="false" />
-          <mandatory v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object2Type_param</name>
-          <expose v="false" />
-          <mandatory v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object1Type_param</name>
-          <expose v="true" />
-          <mandatory v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object1Rowid_param</name>
-          <expose v="true" />
-        </entityParameter>
-      </children>
-    </entityProvider>
-    <entityParameter>
-      <name>Object1Rowid_param</name>
-      <expose v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityProvider>
-      <name>Object2</name>
-      <fieldType>DEPENDENCY_IN</fieldType>
-      <targetContextField>OBJECT1_TYPE</targetContextField>
-      <targetIdField>OBJECT1_ROWID</targetIdField>
-      <documentation>%aditoprj%/entity/ObjectRelation_entity/entityfields/object2/documentation.adoc</documentation>
-      <recordContainer>db</recordContainer>
-      <children>
-        <entityParameter>
-          <name>AnyObjectRowid_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>AnyObjectType_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object1Rowid_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object1Type_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object2Rowid_param</name>
-          <expose v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object2Type_param</name>
-          <expose v="true" />
-          <mandatory v="true" />
-        </entityParameter>
-      </children>
-    </entityProvider>
-    <entityProvider>
-      <name>BothObjects</name>
-      <fieldType>DEPENDENCY_IN</fieldType>
-      <targetContextField>OBJECT2_TYPE</targetContextField>
-      <targetIdField>OBJECT2_ROWID</targetIdField>
-      <documentation>%aditoprj%/entity/ObjectRelation_entity/entityfields/bothobjects/documentation.adoc</documentation>
-      <recordContainer>db</recordContainer>
-      <dependencies>
-        <entityDependency>
-          <name>cb49ee3d-4497-4edc-90b6-82d397464f75</name>
-          <entityName>Organisation_entity</entityName>
-          <fieldName>TaskObjectRelations</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
-      <children>
-        <entityParameter>
-          <name>AnyObjectRowid_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>AnyObjectType_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object1Rowid_param</name>
-          <expose v="true" />
-          <mandatory v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object1Type_param</name>
-          <expose v="true" />
-          <mandatory v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object2Rowid_param</name>
-          <expose v="true" />
-          <mandatory v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object2Type_param</name>
-          <expose v="true" />
-          <mandatory v="true" />
-        </entityParameter>
-      </children>
-    </entityProvider>
-    <entityParameter>
-      <name>Object2Rowid_param</name>
-      <expose v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityParameter>
-      <name>Object2Type_param</name>
-      <expose v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityParameter>
-      <name>AnyObjectRowid_param</name>
-      <expose v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityParameter>
-      <name>AnyObjectType_param</name>
-      <expose v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityProvider>
-      <name>AnyObject</name>
-      <fieldType>DEPENDENCY_IN</fieldType>
-      <targetContextField>AnyObjectType</targetContextField>
-      <targetIdField>AnyObjectRowid</targetIdField>
-      <documentation>%aditoprj%/entity/ObjectRelation_entity/entityfields/anyobject/documentation.adoc</documentation>
-      <recordContainer>db</recordContainer>
-      <dependencies>
-        <entityDependency>
-          <name>744259f7-3b08-4147-8376-3311b7a35712</name>
-          <entityName>Person_entity</entityName>
-          <fieldName>ObjectRelations</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>38acc24a-716c-4c58-9e6f-9d3ccca0ab43</name>
-          <entityName>Organisation_entity</entityName>
-          <fieldName>ObjectRelations</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>f3b9bfa5-e04d-45b4-8bd6-baed4c7ceac0</name>
-          <entityName>Appointment_entity</entityName>
-          <fieldName>ObjectRelations</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>279f61ad-de6d-4538-a763-51965e2c7e0a</name>
-          <entityName>Salesproject_entity</entityName>
-          <fieldName>ObjectRelations</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
-      <children>
-        <entityParameter>
-          <name>Object1Rowid_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object1Type_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object2Rowid_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>Object2Type_param</name>
-          <expose v="false" />
-        </entityParameter>
-        <entityParameter>
-          <name>AnyObjectRowid_param</name>
-          <expose v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>AnyObjectType_param</name>
-          <expose v="true" />
-          <mandatory v="true" />
-        </entityParameter>
-      </children>
-    </entityProvider>
     <entityConsumer>
       <name>Contexts</name>
       <fieldType>DEPENDENCY_OUT</fieldType>
@@ -321,25 +84,103 @@
       </children>
     </entityConsumer>
     <entityField>
-      <name>AnyObjectRowid</name>
-      <documentation>%aditoprj%/entity/ObjectRelation_entity/entityfields/anyobjectrowid/documentation.adoc</documentation>
-      <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/anyobjectrowid/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/anyobjectrowid/displayValueProcess.js</displayValueProcess>
+      <name>OtherObjectRowid</name>
+      <title>Object</title>
+      <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/otherobjectrowid/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/otherobjectrowid/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>OtherObjectType</name>
+      <title>Object type</title>
+      <groupable v="true" />
+      <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/otherobjecttype/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/otherobjecttype/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
-      <name>AnyObjectType</name>
-      <documentation>%aditoprj%/entity/ObjectRelation_entity/entityfields/anyobjecttype/documentation.adoc</documentation>
+      <name>RELATION_TYPE</name>
+      <title>Relationtype</title>
+      <consumer>KeywordObjectRelationType</consumer>
+      <searchable v="true" />
       <groupable v="true" />
-      <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/anyobjecttype/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/anyobjecttype/displayValueProcess.js</displayValueProcess>
+      <displayValueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/relation_type/displayValueProcess.js</displayValueProcess>
     </entityField>
+    <entityProvider>
+      <name>ObjectRelations</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <targetContextField>OtherObjectType</targetContextField>
+      <targetIdField>OtherObjectRowid</targetIdField>
+      <dependencies>
+        <entityDependency>
+          <name>30a7c954-3127-4ceb-9838-a0b7b55d0c8c</name>
+          <entityName>Person_entity</entityName>
+          <fieldName>ObjectRelations</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>3f268dec-4672-4de0-98b2-7616f344248f</name>
+          <entityName>Organisation_entity</entityName>
+          <fieldName>ObjectRelations</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>ProviderType_param</name>
+          <code>%aditoprj%/entity/ObjectRelation_entity/entityfields/objectrelations/children/providertype_param/code.js</code>
+          <expose v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectRowid_param</name>
+          <expose v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <expose v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
     <entityParameter>
-      <name>Object2RowidTitle_param</name>
+      <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>
+    <entityConsumer>
+      <name>KeywordObjectRelationType</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>containerName_param</name>
+          <code>%aditoprj%/entity/ObjectRelation_entity/entityfields/keywordobjectrelationtype/children/containername_param/code.js</code>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+      <triggerRecalculation v="true" />
+      <mandatory v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectRowid_param</name>
+      <expose v="true" />
+      <triggerRecalculation v="true" />
+      <mandatory v="true" />
       <description>PARAMETER</description>
     </entityParameter>
     <entityField>
-      <name>EMPTY</name>
+      <name>CurrentObjectNumber</name>
+      <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/currentobjectnumber/valueProcess.js</valueProcess>
     </entityField>
   </entityFields>
   <recordContainers>
@@ -347,15 +188,23 @@
       <name>db</name>
       <description>&amp;lt;null value&amp;gt;</description>
       <alias>Data_alias</alias>
+      <fromClauseProcess>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <linkInformation>
         <linkInformation>
-          <name>5c101805-5643-466c-b1b8-0462cd90c400</name>
+          <name>cdd73537-58eb-45af-a9a6-12ccc2013276</name>
           <tableName>AB_OBJECTRELATION</tableName>
           <primaryKey>AB_OBJECTRELATIONID</primaryKey>
           <isUIDTable v="true" />
           <readonly v="false" />
         </linkInformation>
+        <linkInformation>
+          <name>7d06e3b3-0455-4a32-876a-ee6430248f53</name>
+          <tableName>AB_KEYWORD_ENTRY</tableName>
+          <primaryKey>AB_KEYWORD_ENTRYID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
       </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
@@ -386,6 +235,10 @@
           <name>OBJECT1_ROWID.displayValue</name>
           <expression>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_rowid.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>RELATION_TYPE.value</name>
+          <recordfield>AB_OBJECTRELATION.RELATION_TYPE</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
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/documentation.adoc b/entity/ObjectRelation_entity/entityfields/anyobject/documentation.adoc
deleted file mode 100644
index 11ee142148f46c766d5cff09a51554b9586ae806..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/anyobject/documentation.adoc
+++ /dev/null
@@ -1,10 +0,0 @@
-== AnyObject provider ==
-
-is for bidirectional Objectrelations.
-
-Example:
-if you provide the contact "Lisa Sommer" as parameters (any..._param) you will get all relations which contain "Lisa Sommer" as Object1 OR Object2.
-
-You will get both:
-Object1 = "Lisa Sommer", Object2 = "GFK"
-Object1 = "GFK", Object2 = "Lisa Sommer"
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/bothobjects/documentation.adoc b/entity/ObjectRelation_entity/entityfields/bothobjects/documentation.adoc
deleted file mode 100644
index 12b757625cd1d43f35571bf502247121fa75bfad..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/bothobjects/documentation.adoc
+++ /dev/null
@@ -1,16 +0,0 @@
-== BothObject provider ==
-
-is for getting relations between TWO SPECIFIC objects.
-
-Example:
-if you provide the contact "Lisa Sommer" and organisation "GFK" as parameters (objectX..._param) you will get all relations which contain "Lisa Sommer" as Object1 and "GFK" as Object2.
-
-You will get only:
-Object1 = "Lisa Sommer", Object2 = "GFK"
-
-
-You WON'T get:
-Object1 = "GFK", Object2 = "Lisa Sommer"
-Object1 = "Peter Pfiffig", Object2 = "Lisa Sommer"
-Object1 = "Peter Pfiffig", Object2 = "GFK"
-...
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/currentobjectnumber/valueProcess.js b/entity/ObjectRelation_entity/entityfields/currentobjectnumber/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8df1445a9bceed11f2ea0643cb5f75f04b5f6257
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/currentobjectnumber/valueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("ObjectRelation_lib");
+
+result.string(ObjectRelationUtils.getCurrentObjectNum(
+                    "$param.ObjectType_param",
+                    "$param.ObjectRowid_param",
+                    "$field.OBJECT1_TYPE",
+                    "$field.OBJECT1_ROWID",
+                    "$field.OBJECT2_TYPE",
+                    "$field.OBJECT2_ROWID"));
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/keywordobjectrelationtype/children/containername_param/code.js b/entity/ObjectRelation_entity/entityfields/keywordobjectrelationtype/children/containername_param/code.js
new file mode 100644
index 0000000000000000000000000000000000000000..48379a6374dacddb9ccbcaa323c9a24e96e105c1
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/keywordobjectrelationtype/children/containername_param/code.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("ObjectRelationType");
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object1/documentation.adoc b/entity/ObjectRelation_entity/entityfields/object1/documentation.adoc
deleted file mode 100644
index ba1539f3db1bde56a2cbc29def9c110b3402ba82..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object1/documentation.adoc
+++ /dev/null
@@ -1,16 +0,0 @@
-== Object1 provider ==
-
-is for getting relations between Object1 and something.
-
-Example:
-if you provide the contact "Lisa Sommer" as parameter (object1..._param) you will get all relations which contain "Lisa Sommer" as Object1.
-
-You will get:
-Object1 = "Lisa Sommer", Object2 = "GFK"
-
-
-You WON'T get:
-Object1 = "GFK", Object2 = "Lisa Sommer"
-Object1 = "Peter Pfiffig", Object2 = "Lisa Sommer"
-Object1 = "Peter Pfiffig", Object2 = "GFK"
-...
\ 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
deleted file mode 100644
index f82167f8b69e5413ef49fe0d7ce1dc2cbdebc500..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object1_rowid/displayValueProcess.js
+++ /dev/null
@@ -1,25 +0,0 @@
-import("system.neon");
-import("system.vars");
-import("system.result");
-import("system.db");
-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"))
-    {
-        result.string(db.cell(ContextUtils.getNameSql(vars.get("$param.AnyObjectType_param"), vars.get("$param.AnyObjectRowid_param"))));
-    }
-    else if (vars.exists("$param.Object1Rowid_param") && vars.get("$param.Object1Rowid_param"))
-    {
-        result.string(vars.get("$param.Object1Rowid_param"));
-    }
-}
-else if (recordstate == neon.OPERATINGSTATE_EDIT)
-{
-    if (vars.exists("$field.OBJECT1_ROWID") && vars.get("$field.OBJECT1_ROWID") && vars.exists("$field.OBJECT1_TYPE") && vars.get("$field.OBJECT1_TYPE"))
-    {
-        result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT1_TYPE"), vars.get("$field.OBJECT1_ROWID"))));
-    }
-}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object1_rowid/stateProcess.js b/entity/ObjectRelation_entity/entityfields/object1_rowid/stateProcess.js
deleted file mode 100644
index 5f470da0cc219d8c305b419a6a832c5e7a5a3b54..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object1_rowid/stateProcess.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import("system.result");
-import("system.neon");
-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")))
-    {
-        result.string(neon.COMPONENTSTATE_READONLY);
-    }
-}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object1_rowid/valueProcess.js b/entity/ObjectRelation_entity/entityfields/object1_rowid/valueProcess.js
deleted file mode 100644
index 679db41733d3a5ffa393e371edb985ae2c8dc344..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object1_rowid/valueProcess.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import("system.result");
-import("system.neon");
-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"))
-    {
-        result.string(vars.get("$param.AnyObjectRowid_param"));
-    }
-    else if (vars.exists("$param.Object1Rowid_param") && vars.get("$param.Object1Rowid_param"))
-    {
-        result.string(vars.get("$param.Object1Rowid_param"));
-    }
-    else if (!vars.get("$field.OBJECT2_TYPE"))
-    {
-        result.string("");
-    }
-}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object1_type/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/object1_type/displayValueProcess.js
deleted file mode 100644
index b6e7d799d813ac8a3965c6578ab8d5da3ba285ee..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object1_type/displayValueProcess.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-import("system.project");
-
-var recordstate = vars.get("$sys.recordstate");
-if (recordstate == neon.OPERATINGSTATE_NEW)
-{
-    if (vars.exists("$param.AnyObjectType_param") && vars.get("$param.AnyObjectType_param"))
-    {
-        result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$param.AnyObjectType_param"))[1]);
-    }
-    else if (vars.exists("$param.Object1Type_param") && vars.get("$param.Object1Type_param"))
-    {
-        result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$param.Object1Type_param"))[1]);
-    }
-}
-else
-{
-    if (vars.exists("$field.OBJECT1_TYPE") && vars.get("$field.OBJECT1_TYPE"))
-    {
-        result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECT1_TYPE"))[1]);
-    }
-}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object1_type/stateProcess.js b/entity/ObjectRelation_entity/entityfields/object1_type/stateProcess.js
deleted file mode 100644
index 7cbd5a35ac443244ab9d384daab659e8ffc0a4ef..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object1_type/stateProcess.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import("system.result");
-import("system.neon");
-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")))
-    {
-        result.string(neon.COMPONENTSTATE_READONLY);
-    }
-}
-result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object1_type/valueProcess.js b/entity/ObjectRelation_entity/entityfields/object1_type/valueProcess.js
deleted file mode 100644
index 86b9f8b6ba7ce8a629827f7f4387e2554482268c..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object1_type/valueProcess.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-
-var recordstate = vars.get("$sys.recordstate");
-if (recordstate == neon.OPERATINGSTATE_NEW)
-{
-    if (vars.exists("$param.AnyObjectType_param") && vars.get("$param.AnyObjectType_param"))
-    {
-        result.string(vars.get("$param.AnyObjectType_param"));
-    }
-    else if (vars.exists("$param.Object1Type_param") && vars.get("$param.Object1Type_param"))
-    {
-        result.string(vars.get("$param.Object1Type_param"));
-    }
-}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object2/documentation.adoc b/entity/ObjectRelation_entity/entityfields/object2/documentation.adoc
deleted file mode 100644
index 9ce67b8769d5d8f1ae4a0e687d20c756db0572e9..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object2/documentation.adoc
+++ /dev/null
@@ -1,17 +0,0 @@
-== Object2 provider ==
-
-is for getting relations between something and Object2.
-
-Example:
-if you provide the contact "Lisa Sommer" as parameter (object2..._param) you will get all relations which contain "Lisa Sommer" as Object2.
-
-You will get:
-Object1 = "GFK", Object2 = "Lisa Sommer"
-Object1 = "Peter Pfiffig", Object2 = "Lisa Sommer"
-
-
-You WON'T get:
-Object1 = "Lisa Sommer", Object2 = "GFK"
-Object1 = "Peter Pfiffig", Object2 = "GFK"
-Object1 = "Lisa Sommer", Object2 = "Peter Pfiffig"
-...
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object2_rowid/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/object2_rowid/displayValueProcess.js
deleted file mode 100644
index 04cbd7a32102a5efd583a0af62b1ce46ecebdbb7..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object2_rowid/displayValueProcess.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import("system.neon");
-import("system.vars");
-import("system.result");
-import("system.db");
-import("Context_lib");
-
-var recordstate = vars.get("$sys.recordstate");
-if (recordstate == neon.OPERATINGSTATE_EDIT)
-{
-    if (vars.exists("$field.OBJECT1_ROWID") && vars.get("$field.OBJECT1_ROWID") && vars.exists("$field.OBJECT1_TYPE") && vars.get("$field.OBJECT1_TYPE"))
-    {
-        result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT1_TYPE"), vars.get("$field.OBJECT1_ROWID"))));
-    }
-}
\ 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
deleted file mode 100644
index 51c5fa78a283b5a93d4c88cdf1fa8e8f63b0b5c8..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object2_rowid/stateProcess.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("system.result");
-import("system.neon");
-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"))
-        result.string(neon.COMPONENTSTATE_READONLY);
-}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object2_rowid/valueProcess.js b/entity/ObjectRelation_entity/entityfields/object2_rowid/valueProcess.js
deleted file mode 100644
index 907eff1114e5acdd24b9b180372e7059ede6e6db..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object2_rowid/valueProcess.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import("system.result");
-import("system.neon");
-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"))
-    {
-        result.string(vars.get("$param.Object2Rowid_param"));
-    }
-    else if (!vars.get("$field.OBJECT2_TYPE"))
-    {
-        result.string("");
-    }
-}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object2_type/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/object2_type/displayValueProcess.js
deleted file mode 100644
index ba3a5abf21cc5c380abfdb4ecd12e0306f3180aa..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object2_type/displayValueProcess.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import("system.result");
-import("system.vars");
-import("system.project");
-
-if (vars.exists("$field.OBJECT2_TYPE") && vars.get("$field.OBJECT2_TYPE"))
-{
-    result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECT2_TYPE"))[1]);
-}
\ 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
deleted file mode 100644
index 7d99ab991e0db32c5e2666c93aebe5ba80473a3f..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object2_type/stateProcess.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("system.result");
-import("system.neon");
-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"))
-        result.string(neon.COMPONENTSTATE_READONLY);
-}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object2_type/valueProcess.js b/entity/ObjectRelation_entity/entityfields/object2_type/valueProcess.js
deleted file mode 100644
index 55e043e903bc285e19000fa5a2499afac485b547..0000000000000000000000000000000000000000
--- a/entity/ObjectRelation_entity/entityfields/object2_type/valueProcess.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-
-var recordstate = vars.get("$sys.recordstate");
-if (recordstate == neon.OPERATINGSTATE_NEW)
-{
-    if (vars.exists("$param.Object2Type_param") && vars.get("$param.Object2Type_param"))
-    {
-        result.string(vars.get("$param.Object2Type_param"));
-    }
-}
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/taskobjectrelations/children/object2type_param/code.js b/entity/ObjectRelation_entity/entityfields/objectrelations/children/providertype_param/code.js
similarity index 54%
rename from entity/Organisation_entity/entityfields/taskobjectrelations/children/object2type_param/code.js
rename to entity/ObjectRelation_entity/entityfields/objectrelations/children/providertype_param/code.js
index 86bf9bdfc95f2757f6ee947b7549edad4ce0b154..4a2d2e1c96782b8407f30181246efb90a9efd35a 100644
--- a/entity/Organisation_entity/entityfields/taskobjectrelations/children/object2type_param/code.js
+++ b/entity/ObjectRelation_entity/entityfields/objectrelations/children/providertype_param/code.js
@@ -1,3 +1,3 @@
 import("system.result");
 
-result.string("Task");
\ No newline at end of file
+result.string("tree");
\ 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/otherobjectrowid/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/otherobjectrowid/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dbd64f0ccc27bc7902948dc271790de92717a9c1
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/otherobjectrowid/displayValueProcess.js
@@ -0,0 +1,7 @@
+import("system.db");
+import("system.result");
+import("system.vars");
+import("Context_lib");
+
+if (vars.exists("$field.OtherObjectType") && vars.get("$field.OtherObjectType") && (vars.exists("$field.OtherObjectRowid") && vars.get("$field.OtherObjectRowid")))
+    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OtherObjectType"), vars.get("$field.OtherObjectRowid"))));
diff --git a/entity/ObjectRelation_entity/entityfields/otherobjectrowid/valueProcess.js b/entity/ObjectRelation_entity/entityfields/otherobjectrowid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..926cb573d8e4f18eb116616164664813e314d684
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/otherobjectrowid/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.result");
+import("system.vars");
+
+var currentNum = vars.get("$field.CurrentObjectNumber");
+if (currentNum == "1")
+{
+    result.string(vars.get("$field.OBJECT2_ROWID"));
+}
+else if (currentNum == "2")
+{
+    result.string(vars.get("$field.OBJECT1_ROWID"));
+}
\ No newline at end of file
diff --git a/entity/AppointmentLink_entity/recordcontainers/db/onDBInsert.js b/entity/ObjectRelation_entity/entityfields/otherobjecttype/displayValueProcess.js
similarity index 100%
rename from entity/AppointmentLink_entity/recordcontainers/db/onDBInsert.js
rename to entity/ObjectRelation_entity/entityfields/otherobjecttype/displayValueProcess.js
diff --git a/entity/ObjectRelation_entity/entityfields/otherobjecttype/valueProcess.js b/entity/ObjectRelation_entity/entityfields/otherobjecttype/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2633a8804cecc2165d00ad13c9e334d887404830
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/otherobjecttype/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.result");
+import("system.vars");
+
+var currentNum = vars.get("$field.CurrentObjectNumber");
+if (currentNum == "1")
+{
+    result.string(vars.get("$field.OBJECT2_TYPE"));
+}
+else if (currentNum == "2")
+{
+    result.string(vars.get("$field.OBJECT1_TYPE"));
+}
\ 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/entityfields/relation_type/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/relation_type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..087347e37ccd95d5c0a15ff8f2c7548e0b6aa70f
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/relation_type/displayValueProcess.js
@@ -0,0 +1,29 @@
+import("system.db");
+import("system.result");
+import("system.vars");
+import("system.translate");
+import("Context_lib");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+if (vars.exists("$field.OtherObjectType") && vars.get("$field.OtherObjectType") && (vars.exists("$field.OtherObjectRowid") && vars.get("$field.OtherObjectRowid")))
+{
+    var attributes = KeywordUtils.getAttributeRelationsByKey(vars.get("$field.RELATION_TYPE"), $KeywordRegistry.objectRelationType());
+    var currentObjectNum = vars.get("$field.CurrentObjectNumber");
+    var name = "";
+    
+    switch (currentObjectNum)
+    {
+        case "1":
+            // if second title doesn't exist, it is same like the first one.
+            if (attributes.Object2Title == null) 
+                name = attributes.Object1Title;
+            else
+                name = attributes.Object2Title;
+            break;
+        case "2":
+            name = attributes.Object1Title;
+            break;
+    }
+    result.string(translate.text(name));
+}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/anyobjectrowid/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/targetobjectrowid/displayValueProcess.js
similarity index 58%
rename from entity/ObjectRelation_entity/entityfields/anyobjectrowid/displayValueProcess.js
rename to entity/ObjectRelation_entity/entityfields/targetobjectrowid/displayValueProcess.js
index 29b3c356fb8f351c572ff747316347964f3b279d..f262c44d341bd7722a749aaaf5551dfac9ec5ced 100644
--- a/entity/ObjectRelation_entity/entityfields/anyobjectrowid/displayValueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/targetobjectrowid/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/documentation.adoc b/entity/ObjectRelation_entity/entityfields/targetobjectrowid/documentation.adoc
similarity index 100%
rename from entity/ObjectRelation_entity/entityfields/anyobjectrowid/documentation.adoc
rename to entity/ObjectRelation_entity/entityfields/targetobjectrowid/documentation.adoc
diff --git a/entity/ObjectRelation_entity/entityfields/anyobjectrowid/valueProcess.js b/entity/ObjectRelation_entity/entityfields/targetobjectrowid/valueProcess.js
similarity index 90%
rename from entity/ObjectRelation_entity/entityfields/anyobjectrowid/valueProcess.js
rename to entity/ObjectRelation_entity/entityfields/targetobjectrowid/valueProcess.js
index 30698cf10e59153bd413ab2cd1a62f6438142a74..7b5c62b30062a183c218818a9446d53cee05986c 100644
--- a/entity/ObjectRelation_entity/entityfields/anyobjectrowid/valueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/targetobjectrowid/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/targetobjecttype/displayValueProcess.js
similarity index 63%
rename from entity/ObjectRelation_entity/entityfields/anyobjecttype/displayValueProcess.js
rename to entity/ObjectRelation_entity/entityfields/targetobjecttype/displayValueProcess.js
index ca00da6bc37690b86ed4f22e84626869fba6984b..24c141470a2c2abc3d1f6f0f81af2ddbdbf9fbc0 100644
--- a/entity/ObjectRelation_entity/entityfields/anyobjecttype/displayValueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/targetobjecttype/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/documentation.adoc b/entity/ObjectRelation_entity/entityfields/targetobjecttype/documentation.adoc
similarity index 100%
rename from entity/ObjectRelation_entity/entityfields/anyobjecttype/documentation.adoc
rename to entity/ObjectRelation_entity/entityfields/targetobjecttype/documentation.adoc
diff --git a/entity/ObjectRelation_entity/entityfields/anyobjecttype/valueProcess.js b/entity/ObjectRelation_entity/entityfields/targetobjecttype/valueProcess.js
similarity index 91%
rename from entity/ObjectRelation_entity/entityfields/anyobjecttype/valueProcess.js
rename to entity/ObjectRelation_entity/entityfields/targetobjecttype/valueProcess.js
index 8635bcb6845130b5780e8ee872af7afa2159b97d..03a9ea0a0fcf48ff3abea05942f910e7ca25bdbc 100644
--- a/entity/ObjectRelation_entity/entityfields/anyobjecttype/valueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/targetobjecttype/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/recordcontainers/db/conditionProcess.js b/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js
index fd3608bd8705e0b8cc518d06c4530b32a7e3e589..0db999c185394838074362e6a4b40b07f0eee4cd 100644
--- a/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/ObjectRelation_entity/recordcontainers/db/conditionProcess.js
@@ -1,37 +1,26 @@
+import("system.logging");
 import("system.vars");
 import("system.result");
 import("system.db");
 import("Sql_lib");
 
-var anyObject = SqlCondition.begin()
-                            .orSqlCondition(SqlCondition.begin()
-                                                        .andPrepareVars("AB_OBJECTRELATION.OBJECT1_TYPE", "$param.AnyObjectType_param")
-                                                        .andPrepareVars("AB_OBJECTRELATION.OBJECT1_ROWID", "$param.AnyObjectRowid_param"))
-                            .orSqlCondition(SqlCondition.begin()
-                                                        .andPrepareVars("AB_OBJECTRELATION.OBJECT2_TYPE", "$param.AnyObjectType_param")
-                                                        .andPrepareVars("AB_OBJECTRELATION.OBJECT2_ROWID", "$param.AnyObjectRowid_param"));
-var object1 = SqlCondition.begin()
-                          .andPrepareVars("AB_OBJECTRELATION.OBJECT1_TYPE", "$param.Object1Type_param")
-                          .andPrepareVars("AB_OBJECTRELATION.OBJECT1_ROWID", "$param.Object1Rowid_param");
-                          
-var object2 = SqlCondition.begin()
-                          .andPrepareVars("AB_OBJECTRELATION.OBJECT2_TYPE", "$param.Object2Type_param")
-                          .andPrepareVars("AB_OBJECTRELATION.OBJECT2_ROWID", "$param.Object2Rowid_param");
+var fullCondition = 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
-{
-    fullCondition.orSqlCondition(anyObject)
-                 .orSqlCondition(object1)
-                 .orSqlCondition(object2);
+// the parameters have to be present
+if (vars.exists("$param.ObjectType_param") && vars.exists("$param.ObjectRowid_param"))
+{ 
+    var objectType = vars.getString("$param.ObjectType_param");
+    var objectRowid = vars.getString("$param.ObjectRowid_param");
+    if (objectType && objectRowid)
+    {
+        fullCondition.orSqlCondition(SqlCondition.begin()
+                     .andPrepare("AB_OBJECTRELATION.OBJECT1_TYPE", objectType)
+                     .andPrepare("AB_OBJECTRELATION.OBJECT1_ROWID", objectRowid))
+                 .orSqlCondition(SqlCondition.begin()
+                     .andPrepare("AB_OBJECTRELATION.OBJECT2_TYPE", objectType)
+                     .andPrepare("AB_OBJECTRELATION.OBJECT2_ROWID", objectRowid));
+    }
+    
 }
 
 result.string(db.translateCondition(fullCondition.build("1=2")));
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/recordcontainers/db/fromClauseProcess.js b/entity/ObjectRelation_entity/recordcontainers/db/fromClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..55044aaa15f3b92080f74775f4c7d02ac05408c1
--- /dev/null
+++ b/entity/ObjectRelation_entity/recordcontainers/db/fromClauseProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.db");
+import("Sql_lib");
+import("ObjectRelation_lib");
+
+result.string(ObjectRelationUtils.getRelationTypeJoin());
\ No newline at end of file
diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod
index 247b2f16f95400348e463b7d9529ae2af6593aad..e80a55b98df5c4bc34cbc092f3d2d74817b2584d 100644
--- a/entity/Object_entity/Object_entity.aod
+++ b/entity/Object_entity/Object_entity.aod
@@ -47,20 +47,6 @@
       <fieldType>DEPENDENCY_IN</fieldType>
       <documentation>%aditoprj%/entity/Object_entity/entityfields/oneobject/documentation.adoc</documentation>
       <recordContainer>jdito</recordContainer>
-      <dependencies>
-        <entityDependency>
-          <name>a85ea94b-20dc-42f2-9fd6-412995ea7f03</name>
-          <entityName>ObjectRelation_entity</entityName>
-          <fieldName>Object1</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>47b7bc71-753e-41c5-8d17-296c5ae707ba</name>
-          <entityName>ObjectRelation_entity</entityName>
-          <fieldName>Object2</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
       <children>
         <entityParameter>
           <name>ObjectRowId_param</name>
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index a8b5fc48f7e01bc3226aa0ecb31a6beb84c386be..d1d82e94d8db780bfaefd989882d93f2945b4341 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -203,7 +203,6 @@
     <entityField>
       <name>OFFER_ID</name>
       <documentation>%aditoprj%/entity/Offer_entity/entityfields/offer_id/documentation.adoc</documentation>
-      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offer_id/valueProcess.js</valueProcess>
     </entityField>
     <entityFieldGroup>
       <name>OfferCode_VersNr_fieldgroup</name>
diff --git a/entity/Offer_entity/entityfields/offer_id/valueProcess.js b/entity/Offer_entity/entityfields/offer_id/valueProcess.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index 30d4db8b1af96db100479818f7a269c4d1cf4ce1..4a5820d407a8e93344c12a06bd9579250ce7f443 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -426,18 +426,16 @@
       <dependency>
         <name>dependency</name>
         <entityName>ObjectRelation_entity</entityName>
-        <fieldName>AnyObject</fieldName>
+        <fieldName>ObjectRelations</fieldName>
       </dependency>
       <children>
         <entityParameter>
-          <name>AnyObjectRowid_param</name>
-          <code>%aditoprj%/entity/Organisation_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js</code>
-          <triggerRecalculation v="true" />
+          <name>ObjectRowid_param</name>
+          <code>%aditoprj%/entity/Organisation_entity/entityfields/objectrelations/children/objectrowid_param/code.js</code>
         </entityParameter>
         <entityParameter>
-          <name>AnyObjectType_param</name>
-          <code>%aditoprj%/entity/Organisation_entity/entityfields/objectrelations/children/anyobjecttype_param/code.js</code>
-          <triggerRecalculation v="true" />
+          <name>ObjectType_param</name>
+          <code>%aditoprj%/entity/Organisation_entity/entityfields/objectrelations/children/objecttype_param/code.js</code>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -538,25 +536,21 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>ObjectRelation_entity</entityName>
-        <fieldName>BothObjects</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Salesprojects</name>
+      <title>Salesprojects</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Salesproject_entity</entityName>
+        <fieldName>Salesprojects</fieldName>
       </dependency>
       <children>
         <entityParameter>
-          <name>Object1Rowid_param</name>
-          <code>%aditoprj%/entity/Organisation_entity/entityfields/taskobjectrelations/children/object1rowid_param/code.js</code>
-        </entityParameter>
-        <entityParameter>
-          <name>Object1Type_param</name>
-          <code>%aditoprj%/entity/Organisation_entity/entityfields/taskobjectrelations/children/object1type_param/code.js</code>
-        </entityParameter>
-        <entityParameter>
-          <name>Object2Type_param</name>
-          <code>%aditoprj%/entity/Organisation_entity/entityfields/taskobjectrelations/children/object2type_param/code.js</code>
-        </entityParameter>
-        <entityParameter>
-          <name>Object2RowidTitle_param</name>
-          <code>%aditoprj%/entity/Organisation_entity/entityfields/taskobjectrelations/children/object2rowidtitle_param/code.js</code>
+          <name>ContactId_param</name>
+          <code>%aditoprj%/entity/Organisation_entity/entityfields/salesprojects/children/contactid_param/code.js</code>
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/Organisation_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js b/entity/Organisation_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js
deleted file mode 100644
index 3d5da2b2ee3ab0c347c8b6a3be5233100b36a0d9..0000000000000000000000000000000000000000
--- a/entity/Organisation_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$field.ORGANISATIONID"))
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/objectrelations/children/anyobjecttype_param/code.js b/entity/Organisation_entity/entityfields/objectrelations/children/anyobjecttype_param/code.js
deleted file mode 100644
index efc405cb8b7289310ca284800a6ff50eea9bbe12..0000000000000000000000000000000000000000
--- a/entity/Organisation_entity/entityfields/objectrelations/children/anyobjecttype_param/code.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("Context_lib");
-
-result.string(ContextUtils.getCurrentContextId())
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/taskobjectrelations/children/object1rowid_param/code.js b/entity/Organisation_entity/entityfields/objectrelations/children/objectrowid_param/code.js
similarity index 100%
rename from entity/Organisation_entity/entityfields/taskobjectrelations/children/object1rowid_param/code.js
rename to entity/Organisation_entity/entityfields/objectrelations/children/objectrowid_param/code.js
diff --git a/entity/Organisation_entity/entityfields/taskobjectrelations/children/object1type_param/code.js b/entity/Organisation_entity/entityfields/objectrelations/children/objecttype_param/code.js
similarity index 100%
rename from entity/Organisation_entity/entityfields/taskobjectrelations/children/object1type_param/code.js
rename to entity/Organisation_entity/entityfields/objectrelations/children/objecttype_param/code.js
diff --git a/entity/Organisation_entity/entityfields/taskobjectrelations/children/object2rowidtitle_param/code.js b/entity/Organisation_entity/entityfields/taskobjectrelations/children/object2rowidtitle_param/code.js
deleted file mode 100644
index e273ebaf0d31de77e8d77836146eeb81503ed474..0000000000000000000000000000000000000000
--- a/entity/Organisation_entity/entityfields/taskobjectrelations/children/object2rowidtitle_param/code.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.translate");
-import("system.result");
-result.string(translate.text("Task"))
\ No newline at end of file
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index 5670b1cf170b95644959a18c467cbb0853c025ea..5b250419d7c397ff42b7e46584edc5fb6c71d5bd 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -190,7 +190,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
         </entityParameter>
         <entityParameter>
           <name>CommCategory_param</name>
-          <code>%aditoprj%/entity/Person_entity/entityfields/communications/children/commcategory_param/code.js</code>
           <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
         </entityParameter>
       </children>
@@ -475,19 +474,16 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <dependency>
         <name>dependency</name>
         <entityName>ObjectRelation_entity</entityName>
-        <fieldName>AnyObject</fieldName>
+        <fieldName>ObjectRelations</fieldName>
       </dependency>
       <children>
         <entityParameter>
-          <name>AnyObjectRowid_param</name>
-          <title></title>
-          <code>%aditoprj%/entity/Person_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js</code>
-          <triggerRecalculation v="true" />
+          <name>ObjectType_param</name>
+          <code>%aditoprj%/entity/Person_entity/entityfields/objectrelations/children/objecttype_param/code.js</code>
         </entityParameter>
         <entityParameter>
-          <name>AnyObjectType_param</name>
-          <code>%aditoprj%/entity/Person_entity/entityfields/objectrelations/children/anyobjecttype_param/code.js</code>
-          <triggerRecalculation v="true" />
+          <name>ObjectRowid_param</name>
+          <code>%aditoprj%/entity/Person_entity/entityfields/objectrelations/children/objectrowid_param/code.js</code>
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/Person_entity/entityfields/communications/children/commcategory_param/code.js b/entity/Person_entity/entityfields/communications/children/commcategory_param/code.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/Person_entity/entityfields/objectrelations/children/anyobjecttype_param/code.js b/entity/Person_entity/entityfields/objectrelations/children/anyobjecttype_param/code.js
deleted file mode 100644
index efc405cb8b7289310ca284800a6ff50eea9bbe12..0000000000000000000000000000000000000000
--- a/entity/Person_entity/entityfields/objectrelations/children/anyobjecttype_param/code.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.result");
-import("Context_lib");
-
-result.string(ContextUtils.getCurrentContextId())
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js b/entity/Person_entity/entityfields/objectrelations/children/objectrowid_param/code.js
similarity index 53%
rename from entity/Person_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js
rename to entity/Person_entity/entityfields/objectrelations/children/objectrowid_param/code.js
index 032082b609152ed5785d5b376fdd6b6becd7209b..ee0cddc370f78c08084b64d57e2a36686aad1e82 100644
--- a/entity/Person_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js
+++ b/entity/Person_entity/entityfields/objectrelations/children/objectrowid_param/code.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.PERSONID"))
\ No newline at end of file
+result.string(vars.get("$field.PERSONID"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/objectrelations/children/anyobjecttype_param/code.js b/entity/Person_entity/entityfields/objectrelations/children/objecttype_param/code.js
similarity index 100%
rename from entity/Salesproject_entity/entityfields/objectrelations/children/anyobjecttype_param/code.js
rename to entity/Person_entity/entityfields/objectrelations/children/objecttype_param/code.js
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index ba6d97987914c6244f166356290f2e8fa2986075..7230670a82e650680c601875204a12adcbb1d5fb 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -279,21 +279,7 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>ObjectRelation_entity</entityName>
-        <fieldName>AnyObject</fieldName>
       </dependency>
-      <children>
-        <entityParameter>
-          <name>AnyObjectRowid_param</name>
-          <code>%aditoprj%/entity/Salesproject_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js</code>
-          <triggerRecalculation v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>AnyObjectType_param</name>
-          <code>%aditoprj%/entity/Salesproject_entity/entityfields/objectrelations/children/anyobjecttype_param/code.js</code>
-          <triggerRecalculation v="true" />
-        </entityParameter>
-      </children>
     </entityConsumer>
     <entityField>
       <name>TIMETRACKINGSUM</name>
diff --git a/entity/Salesproject_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js b/entity/Salesproject_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js
deleted file mode 100644
index 2b119ebfa1944164fd2a1cb645511740bec9015e..0000000000000000000000000000000000000000
--- a/entity/Salesproject_entity/entityfields/objectrelations/children/anyobjectrowid_param/code.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$field.SALESPROJECTID"));
\ No newline at end of file
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 8284ec231dcc09a93a47c3dd7ef7b64e97c2290c..59f7463d732a7b495bd384993f1ba8cbec4030d1 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -4,7 +4,6 @@
   <title>Task</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Task_entity/documentation.adoc</documentation>
-  <onValidation>%aditoprj%/entity/Task_entity/onValidation.js</onValidation>
   <iconId>VAADIN:TASKS</iconId>
   <iconIdProcess>%aditoprj%/entity/Task_entity/iconIdProcess.js</iconIdProcess>
   <recordContainer>db</recordContainer>
diff --git a/entity/Task_entity/entityfields/contacteditors/children/contactid_param/code.js b/entity/Task_entity/entityfields/contacteditors/children/contactid_param/code.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/Task_entity/entityfields/contactrequestors/children/contactid_param/code.js b/entity/Task_entity/entityfields/contactrequestors/children/contactid_param/code.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/Task_entity/onValidation.js b/entity/Task_entity/onValidation.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index bb50a0cfc5ae38837d03dbd597767fbd1009e531..bc6513be021a2415c77ad53cac33db7842e82933 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -2385,6 +2385,123 @@
     <entry>
       <key>the specified key has to be unique for that container but does already exist</key>
     </entry>
+    <entry>
+      <key>Neue Aktivität</key>
+    </entry>
+    <entry>
+      <key>Tree Entity</key>
+    </entry>
+    <entry>
+      <key>Baum</key>
+    </entry>
+    <entry>
+      <key>Neue Aufgabe</key>
+    </entry>
+    <entry>
+      <key>Relationtype</key>
+    </entry>
+    <entry>
+      <key>Tree</key>
+    </entry>
+    <entry>
+      <key>100%</key>
+    </entry>
+    <entry>
+      <key>grandparents of - ankle of</key>
+    </entry>
+    <entry>
+      <key>Mobil</key>
+    </entry>
+    <entry>
+      <key>society - member</key>
+    </entry>
+    <entry>
+      <key>25%</key>
+    </entry>
+    <entry>
+      <key>supporter - supported</key>
+    </entry>
+    <entry>
+      <key>parent of - child of</key>
+    </entry>
+    <entry>
+      <key>50%</key>
+    </entry>
+    <entry>
+      <key>75%</key>
+    </entry>
+    <entry>
+      <key>Verknüpfungen</key>
+    </entry>
+    <entry>
+      <key>no keyword attribute \&amp;quot;%0\&amp;quot; found in keyword container \&amp;quot;%1\&amp;quot;</key>
+    </entry>
+    <entry>
+      <key>competitor</key>
+    </entry>
+    <entry>
+      <key>0%</key>
+    </entry>
+    <entry>
+      <key>parent company - subsidiary</key>
+    </entry>
+    <entry>
+      <key>promotion target by - solicits</key>
+    </entry>
+    <entry>
+      <key>supervisor of - reports to</key>
+    </entry>
+    <entry>
+      <key>acquainted with</key>
+    </entry>
+    <entry>
+      <key>collaboration with</key>
+    </entry>
+    <entry>
+      <key>parent company</key>
+    </entry>
+    <entry>
+      <key>society</key>
+    </entry>
+    <entry>
+      <key>ankle of</key>
+    </entry>
+    <entry>
+      <key>solicits</key>
+    </entry>
+    <entry>
+      <key>child of</key>
+    </entry>
+    <entry>
+      <key>supervisor of</key>
+    </entry>
+    <entry>
+      <key>supports - supported by</key>
+    </entry>
+    <entry>
+      <key>reports to</key>
+    </entry>
+    <entry>
+      <key>subsidiary</key>
+    </entry>
+    <entry>
+      <key>supported by</key>
+    </entry>
+    <entry>
+      <key>member</key>
+    </entry>
+    <entry>
+      <key>promotion target by</key>
+    </entry>
+    <entry>
+      <key>supports</key>
+    </entry>
+    <entry>
+      <key>parent of</key>
+    </entry>
+    <entry>
+      <key>grandparents of</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
   <sqlModels>
@@ -2396,7 +2513,10 @@
 union
 select AB_LANGUAGE.NAME_LATIN from AB_LANGUAGE
 union
-select AB_COUNTRYINFO.NAME_LATIN from AB_COUNTRYINFO</element>
+select AB_COUNTRYINFO.NAME_LATIN from AB_COUNTRYINFO
+union -- Object1Title and Object2Title for Keyword-Container ObjectRelationType
+select CHAR_VALUE from AB_KEYWORD_ATTRIBUTERELATION
+where AB_KEYWORD_ATTRIBUTE_ID in (&amp;apos;6f81d079-d404-4bda-a7c7-b830ed3d80d5&amp;apos;, &amp;apos;e8c85be3-1acb-45f6-aeea-726ba5811ab8&amp;apos;)</element>
       </statements>
     </languageSql>
   </sqlModels>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 4baa4574a45806c0993e401a200959da763462fa..c513b2b07abdc7890fb6669405d54fd431aecbea 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -983,6 +983,10 @@
       <key>Show all offers</key>
       <value>Alle Angebote anzeigen</value>
     </entry>
+    <entry>
+      <key>child of</key>
+      <value>Kind von</value>
+    </entry>
     <entry>
       <key>Products</key>
       <value>Produkte</value>
@@ -1600,9 +1604,11 @@
     </entry>
     <entry>
       <key>Object 2</key>
+      <value>Objekt 2</value>
     </entry>
     <entry>
       <key>Object 1</key>
+      <value>Objekt 1</value>
     </entry>
     <entry>
       <key>Type 2</key>
@@ -2769,6 +2775,145 @@
     <entry>
       <key>Estimation</key>
     </entry>
+    <entry>
+      <key>Neue Aktivität</key>
+    </entry>
+    <entry>
+      <key>Tree Entity</key>
+    </entry>
+    <entry>
+      <key>Baum</key>
+    </entry>
+    <entry>
+      <key>Neue Aufgabe</key>
+    </entry>
+    <entry>
+      <key>Relationtype</key>
+      <value>Beziehungsart</value>
+    </entry>
+    <entry>
+      <key>Tree</key>
+    </entry>
+    <entry>
+      <key>100%</key>
+    </entry>
+    <entry>
+      <key>grandparents of - ankle of</key>
+      <value>Großeltern von - Enkel/in von</value>
+    </entry>
+    <entry>
+      <key>Mobil</key>
+    </entry>
+    <entry>
+      <key>society - member</key>
+      <value>Verband - Mitglied</value>
+    </entry>
+    <entry>
+      <key>25%</key>
+    </entry>
+    <entry>
+      <key>supports - supported by</key>
+      <value>Unterstützt - Wird unterstützt von</value>
+    </entry>
+    <entry>
+      <key>parent of - child of</key>
+      <value>Elternteil von - Kind von</value>
+    </entry>
+    <entry>
+      <key>50%</key>
+    </entry>
+    <entry>
+      <key>75%</key>
+    </entry>
+    <entry>
+      <key>Verknüpfungen</key>
+    </entry>
+    <entry>
+      <key>no keyword attribute \&amp;quot;%0\&amp;quot; found in keyword container \&amp;quot;%1\&amp;quot;</key>
+    </entry>
+    <entry>
+      <key>competitor</key>
+      <value>Konkurrent</value>
+    </entry>
+    <entry>
+      <key>0%</key>
+    </entry>
+    <entry>
+      <key>parent company - subsidiary</key>
+      <value>Konzernmutter - Tochtergesellschaft</value>
+    </entry>
+    <entry>
+      <key>promotion target by - solicits</key>
+      <value>Werbezielgruppe von - Bewirbt</value>
+    </entry>
+    <entry>
+      <key>supervisor of - reports to</key>
+      <value>Vorgesetzter von - Bewirbt</value>
+    </entry>
+    <entry>
+      <key>acquainted with</key>
+      <value>Bekannt mit</value>
+    </entry>
+    <entry>
+      <key>collaboration with</key>
+      <value>Zusammenarbeit mit</value>
+    </entry>
+    <entry>
+      <key>parent company</key>
+      <value>Konzernmutter</value>
+    </entry>
+    <entry>
+      <key>society</key>
+      <value>Verband</value>
+    </entry>
+    <entry>
+      <key>ankle of</key>
+      <value>Enkel/in von</value>
+    </entry>
+    <entry>
+      <key>solicits</key>
+      <value>Bewirbt</value>
+    </entry>
+    <entry>
+      <key>supervisor of</key>
+      <value>Vorgesetzter von</value>
+    </entry>
+    <entry>
+      <key>reports to</key>
+      <value>Berichtet an</value>
+    </entry>
+    <entry>
+      <key>subsidiary</key>
+      <value>Tochtergesellschaft</value>
+    </entry>
+    <entry>
+      <key>supported by</key>
+      <value>Wird unterstützt von</value>
+    </entry>
+    <entry>
+      <key>member</key>
+      <value>Mitglied</value>
+    </entry>
+    <entry>
+      <key>promotion target by</key>
+      <value>Werbezielgruppe von</value>
+    </entry>
+    <entry>
+      <key>supports</key>
+      <value>Unterstützt</value>
+    </entry>
+    <entry>
+      <key>parent of</key>
+      <value>Elternteil von</value>
+    </entry>
+    <entry>
+      <key>grandparents of</key>
+      <value>Großeltern von</value>
+    </entry>
+    <entry>
+      <key>supporter - supported</key>
+      <value>Unterstützt - Wird unterstützt von</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 2706834c9bd2202b6fc5a8db92a380eec72a3c64..6af4c86de689459a4682fab8b89a085d272e987f 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -2409,6 +2409,123 @@
     <entry>
       <key>Estimation</key>
     </entry>
+    <entry>
+      <key>Neue Aktivität</key>
+    </entry>
+    <entry>
+      <key>Tree Entity</key>
+    </entry>
+    <entry>
+      <key>Baum</key>
+    </entry>
+    <entry>
+      <key>Neue Aufgabe</key>
+    </entry>
+    <entry>
+      <key>Relationtype</key>
+    </entry>
+    <entry>
+      <key>Tree</key>
+    </entry>
+    <entry>
+      <key>100%</key>
+    </entry>
+    <entry>
+      <key>grandparents of - ankle of</key>
+    </entry>
+    <entry>
+      <key>Mobil</key>
+    </entry>
+    <entry>
+      <key>society - member</key>
+    </entry>
+    <entry>
+      <key>25%</key>
+    </entry>
+    <entry>
+      <key>supporter - supported</key>
+    </entry>
+    <entry>
+      <key>parent of - child of</key>
+    </entry>
+    <entry>
+      <key>50%</key>
+    </entry>
+    <entry>
+      <key>75%</key>
+    </entry>
+    <entry>
+      <key>Verknüpfungen</key>
+    </entry>
+    <entry>
+      <key>no keyword attribute \&amp;quot;%0\&amp;quot; found in keyword container \&amp;quot;%1\&amp;quot;</key>
+    </entry>
+    <entry>
+      <key>competitor</key>
+    </entry>
+    <entry>
+      <key>0%</key>
+    </entry>
+    <entry>
+      <key>parent company - subsidiary</key>
+    </entry>
+    <entry>
+      <key>promotion target by - solicits</key>
+    </entry>
+    <entry>
+      <key>supervisor of - reports to</key>
+    </entry>
+    <entry>
+      <key>acquainted with</key>
+    </entry>
+    <entry>
+      <key>collaboration with</key>
+    </entry>
+    <entry>
+      <key>parent company</key>
+    </entry>
+    <entry>
+      <key>society</key>
+    </entry>
+    <entry>
+      <key>ankle of</key>
+    </entry>
+    <entry>
+      <key>solicits</key>
+    </entry>
+    <entry>
+      <key>child of</key>
+    </entry>
+    <entry>
+      <key>supervisor of</key>
+    </entry>
+    <entry>
+      <key>supports - supported by</key>
+    </entry>
+    <entry>
+      <key>reports to</key>
+    </entry>
+    <entry>
+      <key>subsidiary</key>
+    </entry>
+    <entry>
+      <key>supported by</key>
+    </entry>
+    <entry>
+      <key>member</key>
+    </entry>
+    <entry>
+      <key>promotion target by</key>
+    </entry>
+    <entry>
+      <key>supports</key>
+    </entry>
+    <entry>
+      <key>parent of</key>
+    </entry>
+    <entry>
+      <key>grandparents of</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/neonContext/ObjectRelation/ObjectRelation.aod b/neonContext/ObjectRelation/ObjectRelation.aod
index 763a754b47c69d0746663e2b28c48748487daaa0..527072eafea065a47cd085f6a6dd47db6e4dad9b 100644
--- a/neonContext/ObjectRelation/ObjectRelation.aod
+++ b/neonContext/ObjectRelation/ObjectRelation.aod
@@ -2,15 +2,11 @@
 <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</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterview>AnyObjectRelationFilter_view</filterview>
+  <filterview>ObjectRelationFilter_view</filterview>
   <editview>ObjectRelationEdit_view</editview>
   <preview>ObjectRelationPreview_view</preview>
   <entity>ObjectRelation_entity</entity>
   <references>
-    <neonViewReference>
-      <name>f6b27aa2-d0a7-479c-812e-8b16400b564b</name>
-      <view>AnyObjectRelationFilter_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>dc0bd793-a472-4a7b-8394-06c4bc31258a</name>
       <view>ObjectRelationPreview_view</view>
@@ -20,8 +16,12 @@
       <view>ObjectRelationEdit_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>cec4dc52-b38f-4f7c-b8ca-4b81ccda3ac1</name>
-      <view>Object1RelationFilter_view</view>
+      <name>a1efaa32-2313-40b5-9cd0-715b9c635036</name>
+      <view>ObjectRelationTree_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>ec83a8eb-11a5-4544-8a06-47789704a626</name>
+      <view>ObjectRelationFilter_view</view>
     </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonView/AnyObjectRelationFilter_view/AnyObjectRelationFilter_view.aod b/neonView/AnyObjectRelationFilter_view/AnyObjectRelationFilter_view.aod
deleted file mode 100644
index bcfa55713b2623688e648247cfb45de79368a04e..0000000000000000000000000000000000000000
--- a/neonView/AnyObjectRelationFilter_view/AnyObjectRelationFilter_view.aod
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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>AnyObjectRelationFilter_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterable v="true" />
-  <layout>
-    <groupLayout>
-      <name>layout</name>
-    </groupLayout>
-  </layout>
-  <children>
-    <tableViewTemplate>
-      <name>ObjectRelations</name>
-      <autoNewRow v="true" />
-      <entityField>#ENTITY</entityField>
-      <title>Object Relation</title>
-      <columns>
-        <neonTableColumn>
-          <name>2567cbb7-0228-4103-b153-e5f623f46382</name>
-          <entityField>OBJECT1_TYPE</entityField>
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>4fb01378-e6c6-4fb5-8b3b-8a90b3550105</name>
-          <entityField>OBJECT1_ROWID</entityField>
-          <width v="75" />
-          <expandRatio v="100" />
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>158130c9-8aa3-4ad6-a608-0271c70178bc</name>
-          <entityField>OBJECT2_TYPE</entityField>
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>027a408e-56bc-4dcd-a0da-57e531954d20</name>
-          <entityField>OBJECT2_ROWID</entityField>
-        </neonTableColumn>
-      </columns>
-    </tableViewTemplate>
-    <treetableViewTemplate>
-      <name>AnyObjectRelations</name>
-      <favoriteActionGroup2></favoriteActionGroup2>
-      <titleField>AnyObjectType</titleField>
-      <descriptionField>AnyObjectRowid</descriptionField>
-      <entityField>#ENTITY</entityField>
-    </treetableViewTemplate>
-  </children>
-</neonView>
diff --git a/neonView/Object1RelationFilter_view/Object1RelationFilter_view.aod b/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod
similarity index 56%
rename from neonView/Object1RelationFilter_view/Object1RelationFilter_view.aod
rename to neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod
index bd5d9de2901e7bcb490f61daef99819f696d9c1f..7ba25afe2f321463c222a106ee5684c4bf4c8900 100644
--- a/neonView/Object1RelationFilter_view/Object1RelationFilter_view.aod
+++ b/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod
@@ -1,7 +1,8 @@
 <?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>Object1RelationFilter_view</name>
+  <name>ObjectRelationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
   <layout>
     <boxLayout>
       <name>layout</name>
@@ -9,16 +10,20 @@
   </layout>
   <children>
     <tableViewTemplate>
-      <name>Object2</name>
+      <name>ObjectRelations</name>
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
-          <name>9df2f22f-96ab-461e-af54-2dfdfa2de221</name>
-          <entityField>OBJECT2_ROWID</entityField>
+          <name>88896a05-3fbc-4681-b935-8bd239ecdf5c</name>
+          <entityField>RELATION_TYPE</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>9df2f22f-96ab-461e-af54-2dfdfa7de221</name>
-          <entityField>EMPTY</entityField>
+          <name>99904354-1288-45c1-98cb-d40dcff310ce</name>
+          <entityField>OtherObjectType</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>654de038-0a31-4009-981a-efc2b5ded7ee</name>
+          <entityField>OtherObjectRowid</entityField>
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
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/neonView/OrganisationMain_view/OrganisationMain_view.aod b/neonView/OrganisationMain_view/OrganisationMain_view.aod
index 5fcec76945e9d274d53facb435b159b212b99989..8983facca327c13b601989999d56186c88738daa 100644
--- a/neonView/OrganisationMain_view/OrganisationMain_view.aod
+++ b/neonView/OrganisationMain_view/OrganisationMain_view.aod
@@ -40,25 +40,20 @@
       <entityField>Contracts</entityField>
       <view>ContractFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>ee7395b9-b787-4662-9021-f6e2d486bd16</name>
+      <entityField>ObjectRelations</entityField>
+      <view>ObjectRelationFilter_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>39c98ccb-7f77-4df0-818f-1f302f69fec4</name>
       <entityField>Attributes</entityField>
       <view>AttributeRelationFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>ee7395b9-b787-4662-9021-f6e2d486bd16</name>
-      <entityField>ObjectRelations</entityField>
-      <view>AnyObjectRelationFilter_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>dc1aa0ca-d0bd-45fd-84dc-55cfcf3ca430</name>
       <entityField>Salesprojects</entityField>
       <view>SalesprojectFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>331f8519-f112-48c8-8430-85927dd0635e</name>
-      <entityField>TaskObjectRelations</entityField>
-      <view>Object1RelationFilter_view</view>
-    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/PersonMain_view/PersonMain_view.aod b/neonView/PersonMain_view/PersonMain_view.aod
index 93442d69e26e9db2feda7e0dc32b9613366468ff..b07812c6fb5489af9f31efcd9f1bc7b71816e1b9 100644
--- a/neonView/PersonMain_view/PersonMain_view.aod
+++ b/neonView/PersonMain_view/PersonMain_view.aod
@@ -35,9 +35,9 @@
       <view>ContractFilter_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>726f10a6-dad6-4325-a73e-2d6caf0340db</name>
+      <name>a713a58e-eae0-4657-9cb0-ffffbd41d4ab</name>
       <entityField>ObjectRelations</entityField>
-      <view>AnyObjectRelationFilter_view</view>
+      <view>ObjectRelationFilter_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>be48c6fe-1837-4c40-aef1-130fc1a5c544</name>
diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
index c7d28d906bcbd9991378592dda9dfbebf03539a2..86f931d7521318c8f855c0602cfed8fe337205b2 100644
--- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
+++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
@@ -54,11 +54,6 @@
       <entityField>Timetrackings</entityField>
       <view>TimetrackingFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>d02bf839-1901-4ca1-bcee-245ee9512fe2</name>
-      <entityField>ObjectRelations</entityField>
-      <view>AnyObjectRelationFilter_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>0a3f2444-8d91-41e3-8f4d-19a6013c29c5</name>
       <entityField>Documents</entityField>
diff --git a/others/db_changes/data_alias/basic/2019.2/ObjectRelation_add_type.xml b/others/db_changes/data_alias/basic/2019.2/ObjectRelation_add_type.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0fd9deec3ba9940127f7e0a7d4f99887cf328fa1
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/ObjectRelation_add_type.xml
@@ -0,0 +1,8 @@
+<?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="RELATION_TYPE" type="CHAR(36)"/>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/ObjectRelation_add_type_exampleData.xml b/others/db_changes/data_alias/basic/2019.2/ObjectRelation_add_type_exampleData.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5928e9f4869d10562fbb2e0a461308ad674b8e54
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/ObjectRelation_add_type_exampleData.xml
@@ -0,0 +1,48 @@
+<?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">
+        <insert tableName="AB_OBJECTRELATION">
+            <column name="AB_OBJECTRELATIONID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/>
+            <column name="OBJECT1_TYPE" value="Person"/>
+            <column name="OBJECT1_ROWID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/>
+            <column name="OBJECT2_TYPE" value="Person"/>
+            <column name="OBJECT2_ROWID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/>
+            <column name="RELATION_TYPE" value="727959cf-35ae-4f31-94f0-03f1aa86ce63"/>
+        </insert>
+        <insert tableName="AB_OBJECTRELATION">
+            <column name="AB_OBJECTRELATIONID" value="85ad4578-dce2-49df-a844-d162f1bd9f2f"/>
+            <column name="OBJECT1_TYPE" value="Organisation"/>
+            <column name="OBJECT1_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
+            <column name="OBJECT2_TYPE" value="Organisation"/>
+            <column name="OBJECT2_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
+            <column name="RELATION_TYPE" value="85ad4578-dce2-49df-a844-d162f1bd9f2f"/>
+        </insert>
+        <insert tableName="AB_OBJECTRELATION">
+            <column name="AB_OBJECTRELATIONID" value="5c545235-231f-4082-9e74-4ec4512eb98d"/>
+            <column name="OBJECT1_TYPE" value="Person"/>
+            <column name="OBJECT1_ROWID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/>
+            <column name="OBJECT2_TYPE" value="Organisation"/>
+            <column name="OBJECT2_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/>
+            <column name="RELATION_TYPE" value="600cd496-c7c1-4be0-a339-76f057711025"/>
+        </insert>
+        <insert tableName="AB_OBJECTRELATION">
+            <column name="AB_OBJECTRELATIONID" value="4c9bc7f3-c13b-4e55-9c23-012ba40196c9"/>
+            <column name="OBJECT1_TYPE" value="Person"/>
+            <column name="OBJECT1_ROWID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
+            <column name="OBJECT2_TYPE" value="Person"/>
+            <column name="OBJECT2_ROWID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/>
+            <column name="RELATION_TYPE" value="493ecd1a-c1ba-457c-bbe1-0f9279ad653e"/>
+        </insert>
+        <rollback>
+            <delete tableName="AB_OBJECTRELATION">
+            <where>AB_OBJECTRELATIONID = in(?, ?, ?, ?)</where>
+            <whereParams>
+                <param value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7" />
+                <param value="85ad4578-dce2-49df-a844-d162f1bd9f2f" />
+                <param value="5c545235-231f-4082-9e74-4ec4512eb98d" />
+                <param value="4c9bc7f3-c13b-4e55-9c23-012ba40196c9" />
+            </whereParams>
+        </delete>
+        </rollback>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
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..d62b568bdd6032a3928f1ad4493b0aae8e0b7ac8
--- /dev/null
+++ b/others/db_changes/data_alias/basic/2019.2/add_ObjectRelationKeyword.xml
@@ -0,0 +1,444 @@
+<?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">
+        <!-- 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 tableName="AB_KEYWORD_ATTRIBUTE">
+            <column name="AB_KEYWORD_ATTRIBUTEID" value="7e875176-e580-4757-affc-739a80c85363"/>
+            <column name="NAME" value="Hierarchy"/>
+            <column name="TYPE" value="BOOL_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_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="ae4d4dc8-a581-4e59-ace0-7f01e716e5a6"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="7e875176-e580-4757-affc-739a80c85363"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="c9b7ce6b-1100-46f6-8498-2da6ac24189e"/>
+            <column name="BOOL_VALUE" valueNumeric="1"/>
+        </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 of - child of"/>
+            <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 of"/>
+        </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 of"/>
+        </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>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="d9da1d2d-de57-411e-9e7b-341711134270"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="7e875176-e580-4757-affc-739a80c85363"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="727959cf-35ae-4f31-94f0-03f1aa86ce63"/>
+            <column name="BOOL_VALUE" valueNumeric="0"/>
+        </insert>
+        
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="d912e828-a3de-4798-b169-52db380d6d1c"/>
+            <column name="KEYID" value="1276bd28-7cac-4445-8d73-2ee99d97bfc7"/>
+            <column name="TITLE" value="supports - supported by"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+            <column name="SORTING" valueNumeric="2"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="00e6118c-5c94-49c9-b0da-f46575540148"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="d912e828-a3de-4798-b169-52db380d6d1c"/>
+            <column name="CHAR_VALUE" value="supports"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="b5ad48e3-1a96-4357-bae7-977835defcf2"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="e8c85be3-1acb-45f6-aeea-726ba5811ab8"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="d912e828-a3de-4798-b169-52db380d6d1c"/>
+            <column name="CHAR_VALUE" value="supported by"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="1f7f6020-298d-430c-a1f4-ca0ca334ff67"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="d912e828-a3de-4798-b169-52db380d6d1c"/>
+            <column name="CHAR_VALUE" value="Person"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="5ed69afb-38bf-4f08-938e-ecdca1d16a04"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="d912e828-a3de-4798-b169-52db380d6d1c"/>
+            <column name="CHAR_VALUE" value="Person"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="9b136732-6472-4b21-a1f7-3e1014471158"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="7e875176-e580-4757-affc-739a80c85363"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="d912e828-a3de-4798-b169-52db380d6d1c"/>
+            <column name="BOOL_VALUE" valueNumeric="0"/>
+        </insert>
+    
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="a7a9338b-7508-414b-9e88-7d813dc9ee3a"/>
+            <column name="KEYID" value="8792ea2b-f1bc-48bb-899b-1de01acbfc5a"/>
+            <column name="TITLE" value="supervisor of - reports to"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+            <column name="SORTING" valueNumeric="3"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="94fa8dc2-cc7c-4f71-9a88-72ee0bd9f79a"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="a7a9338b-7508-414b-9e88-7d813dc9ee3a"/>
+            <column name="CHAR_VALUE" value="supervisor of"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="c88680d8-a9d2-467b-9337-dce1539b20ca"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="e8c85be3-1acb-45f6-aeea-726ba5811ab8"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="a7a9338b-7508-414b-9e88-7d813dc9ee3a"/>
+            <column name="CHAR_VALUE" value="reports to"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="30cf7f61-2e22-4b91-91eb-d5eda5e53fa8"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="a7a9338b-7508-414b-9e88-7d813dc9ee3a"/>
+            <column name="CHAR_VALUE" value="Person"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="96d5c7d1-023a-4705-984e-c4a269650138"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="a7a9338b-7508-414b-9e88-7d813dc9ee3a"/>
+            <column name="CHAR_VALUE" value="Person"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="765a4200-0e87-4e7f-9ac1-f78fc249cbad"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="7e875176-e580-4757-affc-739a80c85363"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="a7a9338b-7508-414b-9e88-7d813dc9ee3a"/>
+            <column name="BOOL_VALUE" valueNumeric="0"/>
+        </insert>
+
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="9e7c904f-8ddc-4364-be5d-eee3561248b6"/>
+            <column name="KEYID" value="600cd496-c7c1-4be0-a339-76f057711025"/>
+            <column name="TITLE" value="promotion target by - solicits"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+            <column name="SORTING" valueNumeric="4"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="08348377-9319-4b64-a252-f8e3f02e4140"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="9e7c904f-8ddc-4364-be5d-eee3561248b6"/>
+            <column name="CHAR_VALUE" value="promotion target by"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="c80eeaee-5434-407c-b454-cfbfefdb2092"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="e8c85be3-1acb-45f6-aeea-726ba5811ab8"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="9e7c904f-8ddc-4364-be5d-eee3561248b6"/>
+            <column name="CHAR_VALUE" value="solicits"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="e8f5072a-3705-4f54-a845-92dafa37439c"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="9e7c904f-8ddc-4364-be5d-eee3561248b6"/>
+            <column name="CHAR_VALUE" value="Person"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="cddccada-b6df-4d91-9b87-d130b5eecc69"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="9e7c904f-8ddc-4364-be5d-eee3561248b6"/>
+            <column name="CHAR_VALUE" value="Organisation"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="cb0b466b-2b3d-4255-9f0b-40e14d687d05"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="7e875176-e580-4757-affc-739a80c85363"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="9e7c904f-8ddc-4364-be5d-eee3561248b6"/>
+            <column name="BOOL_VALUE" valueNumeric="0"/>
+        </insert>
+        
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="ba666b30-27b0-46ba-8ea7-442518cb862f"/>
+            <column name="KEYID" value="a19802ad-f5aa-47dc-abb3-02791a4aa7ac"/>
+            <column name="TITLE" value="competitor"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+            <column name="SORTING" valueNumeric="5"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="6213ea88-eb7f-476e-aa00-956a83ba9c6d"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="ba666b30-27b0-46ba-8ea7-442518cb862f"/>
+            <column name="CHAR_VALUE" value="competitor"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="7f0df183-d0ff-467b-a12b-fc6a0b96fd48"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="ba666b30-27b0-46ba-8ea7-442518cb862f"/>
+            <column name="CHAR_VALUE" value="Organisation"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="740289a9-54d1-48e0-8e3a-207e9501853f"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="ba666b30-27b0-46ba-8ea7-442518cb862f"/>
+            <column name="CHAR_VALUE" value="Organisation"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="1eb8338f-0e10-4667-bd4a-fb32a844c1a4"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="7e875176-e580-4757-affc-739a80c85363"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="9e7c904f-8ddc-4364-be5d-eee3561248b6"/>
+            <column name="BOOL_VALUE" valueNumeric="0"/>
+        </insert>
+
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="9f8c0b60-5677-4f9b-8929-5e55a13f7910"/>
+            <column name="KEYID" value="a35a0962-9607-41ff-83d0-666d74b4259a"/>
+            <column name="TITLE" value="society - member"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+            <column name="SORTING" valueNumeric="6"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="a3d86cfb-b784-4c38-9c5d-eb403c120bb5"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="9f8c0b60-5677-4f9b-8929-5e55a13f7910"/>
+            <column name="CHAR_VALUE" value="society"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="c44695d7-73da-4d42-9ecc-ade12952e3b1"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="e8c85be3-1acb-45f6-aeea-726ba5811ab8"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="9f8c0b60-5677-4f9b-8929-5e55a13f7910"/>
+            <column name="CHAR_VALUE" value="member"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="cd13e7a1-e7c0-4aae-8f5b-5c813d25de65"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="9f8c0b60-5677-4f9b-8929-5e55a13f7910"/>
+            <column name="CHAR_VALUE" value="Organisation"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="68a5fd04-85e8-4dab-9812-24e829bf62d9"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="9f8c0b60-5677-4f9b-8929-5e55a13f7910"/>
+            <column name="CHAR_VALUE" value="Organisation"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="4b1d8f5e-620a-465a-89b1-dbde63a13c87"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="7e875176-e580-4757-affc-739a80c85363"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="9f8c0b60-5677-4f9b-8929-5e55a13f7910"/>
+            <column name="BOOL_VALUE" valueNumeric="0"/>
+        </insert>
+        
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="c4e1e83f-55be-46aa-a29c-0564ae22df9b"/>
+            <column name="KEYID" value="493ecd1a-c1ba-457c-bbe1-0f9279ad653e"/>
+            <column name="TITLE" value="acquainted with"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+            <column name="SORTING" valueNumeric="7"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="195b8f8b-9a3d-47b0-8f54-d36d2d91d921"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="c4e1e83f-55be-46aa-a29c-0564ae22df9b"/>
+            <column name="CHAR_VALUE" value="acquainted with"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="d0326c46-28b3-4aee-918b-2389b076947b"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="c4e1e83f-55be-46aa-a29c-0564ae22df9b"/>
+            <column name="CHAR_VALUE" value="Person"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="04bc8d76-08c2-4f3f-b2ae-82769c824aad"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="c4e1e83f-55be-46aa-a29c-0564ae22df9b"/>
+            <column name="CHAR_VALUE" value="Person"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="0492943c-a14c-43bb-ad15-18ac8b6c696f"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="7e875176-e580-4757-affc-739a80c85363"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="c4e1e83f-55be-46aa-a29c-0564ae22df9b"/>
+            <column name="BOOL_VALUE" valueNumeric="0"/>
+        </insert>
+
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="6727c8f1-7712-4886-b3d4-a83ef721a174"/>
+            <column name="KEYID" value="003e1f5f-aa21-47aa-bd21-2aa3b4154792"/>
+            <column name="TITLE" value="collaboration with"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+            <column name="SORTING" valueNumeric="8"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="2f54c8cd-44d4-422e-a8c0-be6c26793b32"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="6727c8f1-7712-4886-b3d4-a83ef721a174"/>
+            <column name="CHAR_VALUE" value="collaboration with"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="236adff1-8c85-4546-9391-0ef838e0fb8a"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="6727c8f1-7712-4886-b3d4-a83ef721a174"/>
+            <column name="CHAR_VALUE" value="Organisation"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="ac5dac4c-df10-4095-a3ca-5d700def4266"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="6727c8f1-7712-4886-b3d4-a83ef721a174"/>
+            <column name="CHAR_VALUE" value="Organisation"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="3acce4b1-a1c9-4793-b221-039412db7a67"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="7e875176-e580-4757-affc-739a80c85363"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="6727c8f1-7712-4886-b3d4-a83ef721a174"/>
+            <column name="BOOL_VALUE" valueNumeric="0"/>
+        </insert>
+                
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="bad1ccc0-1fa4-43eb-b650-4087c4c56522"/>
+            <column name="KEYID" value="7a932349-b7bd-4b46-90f6-1f82d48615da"/>
+            <column name="TITLE" value="grandparents of - ankle of"/>
+            <column name="CONTAINER" value="ObjectRelationType"/>
+            <column name="SORTING" valueNumeric="9"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="b01c8949-9a73-4ef0-bb4e-8d7d524305fc"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="6f81d079-d404-4bda-a7c7-b830ed3d80d5"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="bad1ccc0-1fa4-43eb-b650-4087c4c56522"/>
+            <column name="CHAR_VALUE" value="grandparents of"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="b7805a07-1c8a-4790-984d-d3c528a6d1e0"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="e8c85be3-1acb-45f6-aeea-726ba5811ab8"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="bad1ccc0-1fa4-43eb-b650-4087c4c56522"/>
+            <column name="CHAR_VALUE" value="ankle of"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="737371f2-a2c6-4e6f-8533-cf57ff94dfad"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="c81d7fda-9779-46cc-b170-a1c49300b8c2"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="bad1ccc0-1fa4-43eb-b650-4087c4c56522"/>
+            <column name="CHAR_VALUE" value="Person"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="c0737adb-17eb-438d-86f6-4975fff54494"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="0b5d7e46-45c2-48f3-a48a-b3d1a0af674c"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="bad1ccc0-1fa4-43eb-b650-4087c4c56522"/>
+            <column name="CHAR_VALUE" value="Person"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ATTRIBUTERELATION">
+            <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="29cbc01b-3f21-4b4d-902b-d9ffba462cc8"/>
+            <column name="AB_KEYWORD_ATTRIBUTE_ID" value="7e875176-e580-4757-affc-739a80c85363"/>
+            <column name="AB_KEYWORD_ENTRY_ID" value="bad1ccc0-1fa4-43eb-b650-4087c4c56522"/>
+            <column name="BOOL_VALUE" valueNumeric="0"/>
+        </insert>
+        
+        <rollback>
+            <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 e898a40840fca7fd698b2abc1dfc10ec46bb115c..da40ca16be5001d60999c94f9d7ed42827698158 100644
--- a/others/db_changes/data_alias/basic/2019.2/changelog.xml
+++ b/others/db_changes/data_alias/basic/2019.2/changelog.xml
@@ -49,6 +49,10 @@
     <include relativeToChangelogFile="true" file="task_add_parent.xml"/>
     
     <include relativeToChangelogFile="true" file="drop_estimation_salesproject.xml"/>
+    
+    <include relativeToChangelogFile="true" file="add_ObjectRelationKeyword.xml"/>
+    <include relativeToChangelogFile="true" file="ObjectRelation_add_type.xml"/>
+    <include relativeToChangelogFile="true" file="ObjectRelation_add_type_exampleData.xml" context="example"/>
 
     <!--References to the Keyword Values-->
     <include relativeToChangelogFile="true" file="OfferProbability.xml"/>
diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js
index bbeda2b0eaef54e86e6a5360130abe7d37e8aa58..b57b5acc67c6766ede94b1b657d829464a0edc1f 100644
--- a/process/KeywordRegistry_basic/process.js
+++ b/process/KeywordRegistry_basic/process.js
@@ -55,4 +55,5 @@ $KeywordRegistry.salesprojectStrenght = function(){return "SalesprojectStrenght"
 $KeywordRegistry.salesprojectState = function(){return "SalesprojectState"};
 $KeywordRegistry.salesprojectPhase = function(){return "SalesprojectPhase"};
 $KeywordRegistry.taskPriority = function(){return "TaskPriority"};
-$KeywordRegistry.salesprojectCompetitionState = function(){return "SalesprojectCompetitionState"};
\ No newline at end of file
+$KeywordRegistry.salesprojectCompetitionState = function(){return "SalesprojectCompetitionState"};
+$KeywordRegistry.objectRelationType = function(){return "ObjectRelationType"};
diff --git a/process/ObjectRelation_lib/ObjectRelation_lib.aod b/process/ObjectRelation_lib/ObjectRelation_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..77cc2f184e4c94f8e0a4bde129557dcb4873bb49
--- /dev/null
+++ b/process/ObjectRelation_lib/ObjectRelation_lib.aod
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.1.7">
+  <name>ObjectRelation_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/ObjectRelation_lib/process.js</process>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/ObjectRelation_lib/process.js b/process/ObjectRelation_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..fa9c6bd8b2f23e5f85295f4528c18b0ca49f25af
--- /dev/null
+++ b/process/ObjectRelation_lib/process.js
@@ -0,0 +1,51 @@
+import("system.vars");
+import("system.db");
+import("Keyword_lib");
+import("Sql_lib");
+import("KeywordRegistry_basic")
+/**
+ * Methods to manage objectRelations.
+ * Do not create an instance of this!
+ * 
+ * @class
+ */
+function ObjectRelationUtils() {}
+   
+
+ObjectRelationUtils.getRelationTypeJoin = function(pObjectTypeParamName) 
+{
+    return db.translateStatement(
+            SqlCondition.begin()
+                .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.objectRelationType())
+                .andSqlCondition(SqlCondition.begin()
+                                    .orPrepareVars(["AB_KEYWORD_ATTRIBUTERELATION", "CHAR_VALUE", "objType1"], pObjectTypeParamName)
+                                    .orPrepareVars(["AB_KEYWORD_ATTRIBUTERELATION", "CHAR_VALUE", "objType2"], pObjectTypeParamName))
+                .buildSql( // subselect should be cached by the sql-server because it is not correlated
+                    "AB_OBJECTRELATION \n\
+                    join AB_KEYWORD_ENTRY on KEYID = RELATION_TYPE \n\
+                        and KEYID in ( \n\
+                    select KEYID from AB_KEYWORD_ENTRY  \n\
+                        join AB_KEYWORD_ATTRIBUTERELATION objType1 on AB_KEYWORD_ENTRYID = objType1.AB_KEYWORD_ENTRY_ID and objType1.AB_KEYWORD_ATTRIBUTE_ID = 'c81d7fda-9779-46cc-b170-a1c49300b8c2' \n\
+                        join AB_KEYWORD_ATTRIBUTERELATION objType2 on AB_KEYWORD_ENTRYID = objType2.AB_KEYWORD_ENTRY_ID and objType2.AB_KEYWORD_ATTRIBUTE_ID = '0b5d7e46-45c2-48f3-a48a-b3d1a0af674c'"
+                     ,"", ")"));
+}
+
+ObjectRelationUtils.getCurrentObjectNum = function(pObjectTypeParamName, pObjectRowidParamName, pObject1TypeFieldName, pObject1RowidFieldName, pObject2TypeFieldName, pObject2RowidFieldName)
+{
+    var objectType = vars.get(pObjectTypeParamName);
+    var objectRowid = vars.get(pObjectRowidParamName);
+    
+    var object1Type = vars.get(pObject1TypeFieldName);
+    var object1Rowid = vars.get(pObject1RowidFieldName);
+    
+    var object2Type = vars.get(pObject2TypeFieldName);
+    var object2Rowid = vars.get(pObject2RowidFieldName);
+    
+    if (objectType == object1Type && objectRowid == object1Rowid)
+        return 1;
+    
+    if (objectType == object2Type && objectRowid == object2Rowid)
+        return 2;
+    
+    return -1
+}
\ No newline at end of file
diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js
index 98e631dea84403ba8da2969a74db4a5247d1a0d3..bfe2e05841546c263bffe7c908bec33834ff44f7 100644
--- a/process/Sql_lib/process.js
+++ b/process/Sql_lib/process.js
@@ -168,7 +168,7 @@ SqlCondition.prototype.orSqlCondition = function(cond, alternativeCond) {
 
 /**
  * same as the "and"-function but with preparedStatement functionality
- * @param {String} field the database field as "tablename.columnname"; e.g. "ORGANISATION.NAME"
+ * @param {String | String[]} field the database field as "tablename.columnname"; e.g. "ORGANISATION.NAME" or as array with column-alias: ["ORGANISATION", "NAME", "myorgAlias"]
  * @param {String} value the value that shall be set into the prepared statement
  * @param {String} [cond="# = ?"] the strucutre of the SQL condition as preparedString, you can use a number sign "#" as placeholder for you fieldname; 
  *                 e.g. "# > ?"; escaping the number sign is possible with a backslash "\"
@@ -187,7 +187,7 @@ SqlCondition.prototype.andPrepare = function(field, value, cond, fieldType) {
 
 /**
  * same as the "or"-function but with preparedStatement functionality
- * @param {String} field the database field as "tablename.columnname"; e.g. "ORGANISATION.NAME"
+ * @param {String | String[]} field the database field as "tablename.columnname"; e.g. "ORGANISATION.NAME" or as array with column-alias: ["ORGANISATION", "NAME", "myorgAlias"]
  * @param {String} value the value that shall be set into the prepared statement
  * @param {String} [cond="# = ?"] the strucutre of the SQL condition as preparedString, you can use a number sign "#" as placeholder for you fieldname; 
  *                 e.g. "# > ?"; escaping the number sign is possible with a backslash "\"
@@ -206,7 +206,7 @@ SqlCondition.prototype.orPrepare = function(field, value, cond, fieldType) {
 
 /**
  * same as the "andPrepare"-function but with validation of adito-variables functionality
- * @param {String} field the database field as "tablename.columnname"; e.g. "ORGANISATION.NAME"
+ * @param {String | String[]} field the database field as "tablename.columnname"; e.g. "ORGANISATION.NAME" or as array with column-alias: ["ORGANISATION", "NAME", "myorgAlias"]
  * @param {String} variable the adito-variable that shall be set into the prepared statement
  * @param {String} [cond = "# = ?" ] the strucutre of the SQL condition as preparedString, you can use a number sign "#" as placeholder for you fieldname; 
  *                 e.g. "# > ?"; escaping the number sign is possible with a backslash "\"
@@ -228,7 +228,7 @@ SqlCondition.prototype.andPrepareVars = function(field, variable, cond, fieldTyp
 
 /**
  * same as the "orPrepare"-function but with validation of adito-variables functionality
- * @param {String} field the database field as "tablename.columnname"; e.g. "ORGANISATION.NAME"
+ * @param {String | String[]} field the database field as "tablename.columnname"; e.g. "ORGANISATION.NAME" or as array with column-alias: ["ORGANISATION", "NAME", "myorgAlias"]
  * @param {String} variable the adito-variable that shall be set into the prepared statement
  * @param {String} [cond="# = ?"] the strucutre of the SQL condition as preparedString, you can use a number sign "#" as placeholder for you fieldname; 
  *                 e.g. "# > ?"; escaping the number sign is possible with a backslash "\"
@@ -321,7 +321,7 @@ SqlCondition.prototype._checkVars = function(variable) {
 
 /**
  * hidden function for composing preparedStatements
- * @param {String | String[]} field the database field as "tablename.columnname"; e.g. "ORGANISATION.NAME" or as array with alias: ["ORGANISATION", "NAME", "myorgAlias"]
+ * @param {String | String[]} field the database field as "tablename.columnname"; e.g. "ORGANISATION.NAME" or as array with column-alias: ["ORGANISATION", "NAME", "myorgAlias"]
  * @param {String} value the value that shall be set into the prepared statement
  * @param {String} cond the strucutre of the SQL condition as preparedString, you can use a number sign "#" as placeholder for you fieldname; 
  *                 e.g. "# > ?"; escaping the number sign is possible with a backslash "\"