diff --git a/.aditoprj/project.version b/.aditoprj/project.version
index e2ebfe82e0e67280f5f1a1e17d8f76f0dcdb7fb7..e2deba5a713985f7b57474c4976932b2bcfa097e 100644
--- a/.aditoprj/project.version
+++ b/.aditoprj/project.version
@@ -1,3 +1,3 @@
 #This file is generated by ADITO designer. Do NOT delete or modify!
-#Mon Mar 18 10:57:45 CET 2019
-version=5.1.9
+#Thu Apr 04 07:54:23 CEST 2019
+version=5.1.11
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_ActivityCategory.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_ActivityCategory.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_ActivityCategory.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_ActivityCategory.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AddressType.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_AddressType.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AddressType.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_AddressType.xml
diff --git a/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_AttributeKeyword_target_group.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_AttributeKeyword_target_group.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5d05350bab596ec9287d824a8c7ab0165f29d690
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_AttributeKeyword_target_group.xml
@@ -0,0 +1,90 @@
+<?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="7401faab-a383-48de-82db-0a869b77445d">
+        <insert tableName="AB_ATTRIBUTE">
+            <column name="AB_ATTRIBUTEID" value="5d1a2b05-f04e-4ad7-9fd0-8efa09a33a53"/>
+            <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
+            <column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
+            <column name="ATTRIBUTE_NAME" value="Zielgruppe"/>
+            <column name="ATTRIBUTE_PARENT_ID"/>
+            <column name="ATTRIBUTE_TYPE" value="KEYWORD                             "/>
+            <column name="KEYWORD_CONTAINER" value="TargetGroup"/>
+        </insert>
+        
+        <insert tableName="AB_ATTRIBUTEUSAGE">
+            <column name="AB_ATTRIBUTEUSAGEID" value="d3d71563-cb7a-41a1-80be-148f090dafe1"/>
+            <column name="AB_ATTRIBUTE_ID" value="5d1a2b05-f04e-4ad7-9fd0-8efa09a33a53"/>
+            <column name="OBJECT_TYPE" value="Organisation"/>
+        </insert>
+        
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="e9d25ed2-60d6-4512-81e0-f0c234bb099b"/>
+            <column name="KEYID" value="9ba661a1-82df-46b1-8e9f-79d9c14a2f8c"/>
+            <column name="TITLE" value="Customer"/>
+            <column name="CONTAINER" value="TargetGroup"/>
+            <column name="SORTING" valueNumeric="0"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="739898f5-f498-4d55-b384-03d0f2399581"/>
+            <column name="KEYID" value="765e57ad-964c-47da-91eb-9bcdaa63b6c8"/>
+            <column name="TITLE" value="Prospective customer"/>
+            <column name="CONTAINER" value="TargetGroup"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="3417041a-11bc-47e6-9ebb-43c82fbb9c05"/>
+            <column name="KEYID" value="41b0832f-8de2-4ab5-a6e0-9a793c5f80c3"/>
+            <column name="TITLE" value="Manufacturer"/>
+            <column name="CONTAINER" value="TargetGroup"/>
+            <column name="SORTING" valueNumeric="2"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="d3e23da8-3551-4d7f-ba8c-da8b6839c3da"/>
+            <column name="KEYID" value="fc09afd5-5f74-4e48-af26-3600bb4c9610"/>
+            <column name="TITLE" value="Competitor"/>
+            <column name="CONTAINER" value="TargetGroup"/>
+            <column name="SORTING" valueNumeric="3"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="aaef93fa-6ca5-46b7-a850-84e02a99de48"/>
+            <column name="KEYID" value="defe2588-5892-46b2-81d9-00ebde7ca3d7"/>
+            <column name="TITLE" value="Partner"/>
+            <column name="CONTAINER" value="TargetGroup"/>
+            <column name="SORTING" valueNumeric="4"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <rollback>
+            <delete tableName="AB_ATTRIBUTE">
+                <where>AB_ATTRIBUTEID in (?)</where>
+                <whereParams>
+                    <param value="5d1a2b05-f04e-4ad7-9fd0-8efa09a33a53"/>
+                </whereParams>
+            </delete>
+            <delete tableName="AB_ATTRIBUTEUSAGE">
+                <where>AB_ATTRIBUTE_ID in (?)</where>
+                <whereParams>
+                    <param value="5d1a2b05-f04e-4ad7-9fd0-8efa09a33a53"/>
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID in (?, ?, ?, ?, ?)</where>
+                <whereParams>
+                    <param value="e9d25ed2-60d6-4512-81e0-f0c234bb099b"/>
+                    <param value="739898f5-f498-4d55-b384-03d0f2399581"/>
+                    <param value="3417041a-11bc-47e6-9ebb-43c82fbb9c05"/>
+                    <param value="d3e23da8-3551-4d7f-ba8c-da8b6839c3da"/>
+                    <param value="aaef93fa-6ca5-46b7-a850-84e02a99de48"/>
+                </whereParams>
+            </delete>
+        </rollback>
+    </changeSet>
+</databaseChangeLog>
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AttributeType.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_AttributeType.xml
similarity index 69%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AttributeType.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_AttributeType.xml
index 99852b24f7249d850ec0f6f8a32fd7503de7a471..d9d8b0d5c9a7af796f4e305693341aeacc76967b 100644
--- a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AttributeType.xml
+++ b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_AttributeType.xml
@@ -17,15 +17,6 @@
             <column name="ISACTIVE" valueNumeric="1"/>
             <column name="ISESSENTIAL" valueNumeric="1"/>
         </insert>
-        <insert tableName="AB_KEYWORD_ENTRY">
-            <column name="AB_KEYWORD_ENTRYID" value="1fa94dc3-b875-4e95-9ec1-8cb714f058fb"/>
-            <column name="KEYID" value="MEMO"/>
-            <column name="TITLE" value="Memo"/>
-            <column name="CONTAINER" value="AttributeType"/>
-            <column name="SORTING" valueNumeric="8"/>
-            <column name="ISACTIVE" valueNumeric="1"/>
-            <column name="ISESSENTIAL" valueNumeric="1"/>
-        </insert>
         <rollback>
             <delete tableName="AB_KEYWORD_ENTRY">
                 <where>AB_KEYWORD_ENTRYID = ?</where>
@@ -33,12 +24,6 @@
                     <param value="9d2f9605-1a5e-47d3-8920-168f5637e37f"/>
                 </whereParams>
             </delete>
-            <delete tableName="AB_KEYWORD_ENTRY">
-                <where>AB_KEYWORD_ENTRYID = ?</where>
-                <whereParams>
-                    <param value="1fa94dc3-b875-4e95-9ec1-8cb714f058fb"/>
-                </whereParams>
-            </delete>
         </rollback>
     </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_CommunicationMedium.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_CommunicationMedium.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_CommunicationMedium.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_CommunicationMedium.xml
diff --git a/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_ContactContactrole.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_ContactContactrole.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e63bb7ba7d4a32faf22bc6e1f01365c7672d7b33
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_ContactContactrole.xml
@@ -0,0 +1,135 @@
+<?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.goderbauer" id="88938510-188f-4814-b25d-0b5e393cd837">
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="767b89c6-2461-4d0e-9b7a-dda33e5090c9"/>
+
+            <column name="KEYID" value="47abd1f8-d449-4d81-9e6d-c48783119b0b"/>
+            <column name="TITLE" value="Managing director"/>
+            <column name="CONTAINER" value="ContactContactrole"/>
+            <column name="SORTING" valueNumeric="0"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="2fa7cddb-1e2c-438f-8f16-92f245af09f4"/>
+
+            <column name="KEYID" value="07ec8a18-c830-4982-a4c6-d2795841b07a"/>
+            <column name="TITLE" value="Purchasing manager"/>
+            <column name="CONTAINER" value="ContactContactrole"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="67ea4d33-b683-4a04-b2e3-4af54d6debcb"/>
+
+            <column name="KEYID" value="91411987-8700-43d7-a101-4bd375c6e3af"/>
+            <column name="TITLE" value="Executive board"/>
+            <column name="CONTAINER" value="ContactContactrole"/>
+            <column name="SORTING" valueNumeric="2"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="d7be200e-ffc0-47a7-b0bb-3da92f39b993"/>
+
+            <column name="KEYID" value="bd0c1b58-6c8c-42a4-b68b-7099ef05bc0e"/>
+            <column name="TITLE" value="Marketing manager"/>
+            <column name="CONTAINER" value="ContactContactrole"/>
+            <column name="SORTING" valueNumeric="3"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="3b836d42-9ecf-49b9-8df9-570c27860c01"/>
+
+            <column name="KEYID" value="97d0d10d-14a2-4d85-908d-ea14624b2bfd"/>
+            <column name="TITLE" value="Sales manager"/>
+            <column name="CONTAINER" value="ContactContactrole"/>
+            <column name="SORTING" valueNumeric="4"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="2a4e6516-8493-4dde-a9df-bf2efd4db0c8"/>
+
+            <column name="KEYID" value="9c3aea50-b402-4e51-b48d-bfc50c107232"/>
+            <column name="TITLE" value="Supervisory board"/>
+            <column name="CONTAINER" value="ContactContactrole"/>
+            <column name="SORTING" valueNumeric="5"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="3e7f2a42-ad8b-48da-aa11-95525ca36d01"/>
+
+            <column name="KEYID" value="7b71b7e0-fb4a-4557-a4ab-7122574b292b"/>
+            <column name="TITLE" value="Administrator"/>
+            <column name="CONTAINER" value="ContactContactrole"/>
+            <column name="SORTING" valueNumeric="6"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="11c05d41-78ec-4d7c-acbe-f94912f2386c"/>
+
+            <column name="KEYID" value="6d6f2261-2dbd-445a-9189-18418e7c44ef"/>
+            <column name="TITLE" value="IT manager"/>
+            <column name="CONTAINER" value="ContactContactrole"/>
+            <column name="SORTING" valueNumeric="7"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <rollback>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="767b89c6-2461-4d0e-9b7a-dda33e5090c9" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="2fa7cddb-1e2c-438f-8f16-92f245af09f4" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="67ea4d33-b683-4a04-b2e3-4af54d6debcb" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="d7be200e-ffc0-47a7-b0bb-3da92f39b993" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="3b836d42-9ecf-49b9-8df9-570c27860c01" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="2a4e6516-8493-4dde-a9df-bf2efd4db0c8" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="3e7f2a42-ad8b-48da-aa11-95525ca36d01" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="11c05d41-78ec-4d7c-acbe-f94912f2386c" />
+                </whereParams>
+            </delete>
+        </rollback>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_ContactDepartment.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_ContactDepartment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..15f81f525dd0bcdd343a3849029af4d14c32df4b
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_ContactDepartment.xml
@@ -0,0 +1,87 @@
+<?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.goderbauer" id="88938510-188f-4814-b25d-0b5e393cd837">
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="75bd97bc-56f3-4ea3-a132-df3cb9cda071"/>
+
+            <column name="KEYID" value="c58a028c-772a-444f-8109-37cfde3f60a0"/>
+            <column name="TITLE" value="Management"/>
+            <column name="CONTAINER" value="ContactDepartment"/>
+            <column name="SORTING" valueNumeric="0"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="6e30d397-e31f-4ccb-96e9-51cf71d259fa"/>
+
+            <column name="KEYID" value="afc7a9b8-895d-41b9-b68c-e1bdb8ba878f"/>
+            <column name="TITLE" value="Sales"/>
+            <column name="CONTAINER" value="ContactDepartment"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="722e83bc-148a-4762-abda-d491bf590bd5"/>
+
+            <column name="KEYID" value="e00eb3fc-2c8d-46a9-990a-ed2bf1948ffe"/>
+            <column name="TITLE" value="Production"/>
+            <column name="CONTAINER" value="ContactDepartment"/>
+            <column name="SORTING" valueNumeric="2"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="191617b2-09cc-4fe6-bc02-1cee746285d5"/>
+
+            <column name="KEYID" value="bde6d083-517e-45bd-8326-d84e7f8aeba0"/>
+            <column name="TITLE" value="Marketing"/>
+            <column name="CONTAINER" value="ContactDepartment"/>
+            <column name="SORTING" valueNumeric="3"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="87f97554-c335-4328-911a-345d8a9abd7d"/>
+
+            <column name="KEYID" value="b1113c19-2f1f-4d0a-806e-b0165ecc1b4a"/>
+            <column name="TITLE" value="IT"/>
+            <column name="CONTAINER" value="ContactDepartment"/>
+            <column name="SORTING" valueNumeric="4"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <rollback>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="75bd97bc-56f3-4ea3-a132-df3cb9cda071" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="6e30d397-e31f-4ccb-96e9-51cf71d259fa" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="722e83bc-148a-4762-abda-d491bf590bd5" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="191617b2-09cc-4fe6-bc02-1cee746285d5" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="87f97554-c335-4328-911a-345d8a9abd7d" />
+                </whereParams>
+            </delete>
+        </rollback>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_ContactPosition.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_ContactPosition.xml
new file mode 100644
index 0000000000000000000000000000000000000000..136f8bbd47dc2b9753b1cdb8d7d98cb2aa853673
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_ContactPosition.xml
@@ -0,0 +1,55 @@
+<?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.goderbauer" id="88938510-188f-4814-b25d-0b5e393cd837">
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="ba369295-c717-48eb-ae76-314087375e06"/>
+
+            <column name="KEYID" value="3308c1e5-cf4d-4934-86b7-981b8f026369"/>
+            <column name="TITLE" value="CEO"/>
+            <column name="CONTAINER" value="ContactPosition"/>
+            <column name="SORTING" valueNumeric="0"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="dcacb175-4c8a-4941-a417-69a971f52583"/>
+
+            <column name="KEYID" value="a4952791-73e4-41a1-8a78-5a27640ff0fd"/>
+            <column name="TITLE" value="CSO"/>
+            <column name="CONTAINER" value="ContactPosition"/>
+            <column name="SORTING" valueNumeric="1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="1a508899-e2bf-409d-8a57-3ca31c9c832d"/>
+
+            <column name="KEYID" value="77dcf148-112e-4251-8a0e-9e8bd811f0b7"/>
+            <column name="TITLE" value="Production manager"/>
+            <column name="CONTAINER" value="ContactPosition"/>
+            <column name="SORTING" valueNumeric="2"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+        <rollback>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="ba369295-c717-48eb-ae76-314087375e06" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="dcacb175-4c8a-4941-a417-69a971f52583" />
+                </whereParams>
+            </delete>
+            <delete tableName="AB_KEYWORD_ENTRY">
+                <where>AB_KEYWORD_ENTRYID = ?</where>
+                <whereParams>
+                    <param value="1a508899-e2bf-409d-8a57-3ca31c9c832d" />
+                </whereParams>
+            </delete>
+        </rollback>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_DeliveryTerm.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_DeliveryTerm.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_DeliveryTerm.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_DeliveryTerm.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_OfferProbability.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_OfferProbability.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_OfferProbability.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_OfferProbability.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_PaymentTerm.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_PaymentTerm.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_PaymentTerm.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_PaymentTerm.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_SalesprojectCompetitionState.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_SalesprojectCompetitionState.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_SalesprojectCompetitionState.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_SalesprojectCompetitionState.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_SalesprojectPhase.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_SalesprojectPhase.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_SalesprojectPhase.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_SalesprojectPhase.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_SalesprojectState.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_SalesprojectState.xml
similarity index 90%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_SalesprojectState.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_SalesprojectState.xml
index ce858a70d018230f40877955af88b26e8c2cfc5b..19c59bfef3859b3736d8098ec846f1cc25ad3355 100644
--- a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_SalesprojectState.xml
+++ b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_SalesprojectState.xml
@@ -1,16 +1,6 @@
 <?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.goderbauer" id="033b6fcb-53d9-4e23-8c29-4e739294a704">
-        <insert tableName="AB_KEYWORD_ENTRY">
-            <column name="AB_KEYWORD_ENTRYID" value="c6eeab06-cec9-42c3-8f11-468c7e602de4"/>
-
-            <column name="KEYID" value="25b0ac77-ef92-4809-802e-bb9d8782f865"/>
-            <column name="TITLE" value="Open"/>
-            <column name="CONTAINER" value="SalesprojectState"/>
-            <column name="SORTING" valueNumeric="1"/>
-            <column name="ISACTIVE" valueNumeric="1"/>
-            <column name="ISESSENTIAL" valueNumeric="0"/>
-        </insert>
         <insert tableName="AB_KEYWORD_ENTRY">
             <column name="AB_KEYWORD_ENTRYID" value="115495eb-dff4-436d-8114-b9a7644586bf"/>
 
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_TaskPriority.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_TaskPriority.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_TaskPriority.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_TaskPriority.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_TaskProgress.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/init_TaskProgress.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/AditoBasic/init_TaskProgress.xml
rename to .liquibase/Data_alias/basic/2019.2/AditoBasic/init_TaskProgress.xml
diff --git a/.liquibase/Data_alias/basic/2019.2/AditoBasic/insert_offer_status_keyword.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/insert_offer_status_keyword.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4fd7389268c4484ffa9c4768b3656607cae7cf1a
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/AditoBasic/insert_offer_status_keyword.xml
@@ -0,0 +1,14 @@
+<?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="3e9548bd-2c3e-413f-a8b0-405d926f2790">       
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="3c734077-8677-4732-86ef-7df01d9646b3"/>
+            <column name="KEYID" value="70d27a1b-7233-481d-826f-01a13a4bb0b2"/>
+            <column name="TITLE" value="Open"/>
+            <column name="CONTAINER" value="OfferStatus"/>
+            <column name="SORTING" valueNumeric="-1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/AditoBasic/insert_salesproject_state_keyword.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/insert_salesproject_state_keyword.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ba9ff8eababab916e26ccb7f0c959ee8cee040f5
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/AditoBasic/insert_salesproject_state_keyword.xml
@@ -0,0 +1,14 @@
+<?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="cfe5294c-5f89-4527-bd1d-ebe9d0597f63">       
+        <insert tableName="AB_KEYWORD_ENTRY">
+            <column name="AB_KEYWORD_ENTRYID" value="b0123a07-0d21-4365-9aa2-c8be18c56141"/>
+            <column name="KEYID" value="483bcaeb-1e5b-4772-b54e-7d7d8aa65712"/>
+            <column name="TITLE" value="Open"/>
+            <column name="CONTAINER" value="SalesprojectState"/>
+            <column name="SORTING" valueNumeric="-1"/>
+            <column name="ISACTIVE" valueNumeric="1"/>
+            <column name="ISESSENTIAL" valueNumeric="0"/>
+        </insert>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/AditoBasic/update_Strength_Weakness.xml b/.liquibase/Data_alias/basic/2019.2/AditoBasic/update_Strength_Weakness.xml
new file mode 100644
index 0000000000000000000000000000000000000000..437e3b8b61ec4bbd8629bb955dd9a263a42436a8
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/AditoBasic/update_Strength_Weakness.xml
@@ -0,0 +1,59 @@
+<?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="a.veogl" id="3e9548bd-2c3e-413f-a8b0-405d926f2790">
+        <update tableName="AB_KEYWORD_ENTRY">
+            <column name="TITLE" value="Price policy"/>
+            <where>AB_KEYWORD_ENTRYID = ? and TITLE = ?</where>
+            <whereParams>
+                <param value="7963d4ed-f7a7-4a9f-aa86-fea42167145f"/>
+                <param value="Strength 1"/>
+            </whereParams>
+        </update>
+        
+        <update tableName="AB_KEYWORD_ENTRY">
+            <column name="TITLE" value="Personal appearance"/>
+            <where>AB_KEYWORD_ENTRYID = ? and TITLE = ?</where>
+            <whereParams>
+                <param value="2cacfe09-7dcd-454a-b263-46aee796bc21"/>
+                <param value="Strength 2"/>
+            </whereParams>
+        </update>
+        
+        <update tableName="AB_KEYWORD_ENTRY">
+            <column name="TITLE" value="Product content"/>
+            <where>AB_KEYWORD_ENTRYID = ? and TITLE = ?</where>
+            <whereParams>
+                <param value="919cffee-5943-4105-a5bc-a14bd33b9f67"/>
+                <param value="Strength 3"/>
+            </whereParams>
+        </update>
+        
+        
+        <update tableName="AB_KEYWORD_ENTRY">
+            <column name="TITLE" value="Know How"/>
+            <where>AB_KEYWORD_ENTRYID = ? and TITLE = ?</where>
+            <whereParams>
+                <param value="fd012937-8fe7-418e-8e55-80b3b5db331c"/>
+                <param value="Weakness 1"/>
+            </whereParams>
+        </update>
+        
+        <update tableName="AB_KEYWORD_ENTRY">
+            <column name="TITLE" value="Market situation"/>
+            <where>AB_KEYWORD_ENTRYID = ? and TITLE = ?</where>
+            <whereParams>
+                <param value="b62e1a05-af41-4d2d-978c-6c2950b202d8"/>
+                <param value="Weakness 2"/>
+            </whereParams>
+        </update>
+        
+        <update tableName="AB_KEYWORD_ENTRY">
+            <column name="TITLE" value="Liquidity"/>
+            <where>AB_KEYWORD_ENTRYID = ? and TITLE = ?</where>
+            <whereParams>
+                <param value="294db00d-6237-4db8-b7b6-41c5dc79a1e4"/>
+                <param value="Weakness 3"/>
+            </whereParams>
+        </update>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/AttributeKeyword.xml b/.liquibase/Data_alias/basic/2019.2/AttributeKeyword.xml
similarity index 78%
rename from others/db_changes/data_alias/basic/2019.2/AttributeKeyword.xml
rename to .liquibase/Data_alias/basic/2019.2/AttributeKeyword.xml
index 0186627b55d3410360406bd0a6263d5bbccd04d0..272ae0c6a2922b4096ce2e511adc036fcdb3b88c 100644
--- a/others/db_changes/data_alias/basic/2019.2/AttributeKeyword.xml
+++ b/.liquibase/Data_alias/basic/2019.2/AttributeKeyword.xml
@@ -3,16 +3,16 @@
     <changeSet author="s.listl" id="f527a5cc-f1e5-497f-a069-33aee944d421">
 	<addColumn tableName="AB_ATTRIBUTE">
             <column name="KEYWORD_CONTAINER" type="VARCHAR(80)"/>
-	</addColumn>
-        <addColumn tableName="AB_ATTRIBUTE">
             <column name="ATTRIBUTE_INFO" type="NCLOB"/>
-	</addColumn>
-        <addColumn tableName="AB_ATTRIBUTE">
             <column name="SORTING" type="INTEGER"/>
 	</addColumn>
 	<addColumn tableName="AB_ATTRIBUTERELATION">
-            <column name="MEMO_VALUE" type="NCLOB"/>
+            <column name="INT_VALUE" type="INTEGER"/>
 	</addColumn>
+        <dropColumn tableName="AB_ATTRIBUTERELATION">
+            <column name="BOOL_VALUE"/>
+        </dropColumn>
+	<modifyDataType tableName="AB_ATTRIBUTERELATION" columnName="CHAR_VALUE" newDataType="NVARCHAR(512)"/>
 	<createIndex indexName="IDX_ATTRPARENT" tableName="AB_ATTRIBUTE">
 		<column name="ATTRIBUTE_PARENT_ID"/>
 	</createIndex>
diff --git a/others/db_changes/data_alias/basic/2019.2/ChangeNotes.txt b/.liquibase/Data_alias/basic/2019.2/ChangeNotes.txt
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/ChangeNotes.txt
rename to .liquibase/Data_alias/basic/2019.2/ChangeNotes.txt
diff --git a/others/db_changes/data_alias/basic/2019.2/Contact_add_columns.xml b/.liquibase/Data_alias/basic/2019.2/Contact_add_columns.xml
similarity index 93%
rename from others/db_changes/data_alias/basic/2019.2/Contact_add_columns.xml
rename to .liquibase/Data_alias/basic/2019.2/Contact_add_columns.xml
index 545d958d08be291d9667e9aa645187ed448c984a..780b48296710114efc6602379aa4e0c63c549725 100644
--- a/others/db_changes/data_alias/basic/2019.2/Contact_add_columns.xml
+++ b/.liquibase/Data_alias/basic/2019.2/Contact_add_columns.xml
@@ -8,7 +8,7 @@
             <column name="CONTACTROLE" type="NVARCHAR(50)"/>
         </addColumn>
         <addColumn tableName="CONTACT">
-            <column name="POSTITION" type="NVARCHAR(50)"/>
+            <column name="POSITION" type="NVARCHAR(50)"/>
         </addColumn>
     </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/Contactmanagement_added_ImageBlobs.xml b/.liquibase/Data_alias/basic/2019.2/Contactmanagement_added_ImageBlobs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..285d0f993be8fb154019c0127ec548e10051b320
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/Contactmanagement_added_ImageBlobs.xml
@@ -0,0 +1,13 @@
+<?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.goderbauer" id="2f82302d-1fb0-46d2-a290-dbeca32f427f">
+        <addColumn tableName="PERSON">
+            <column name="PICTURE" type="BLOB"/>
+        </addColumn>
+        <addColumn tableName="ORGANISATION">
+            <column name="PICTURE" type="BLOB"/>
+        </addColumn>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/ActivityCategory.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/ActivityCategory.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/ActivityCategory.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/ActivityCategory.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/AddressType.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/AddressType.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/AddressType.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/AddressType.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/CommunicationMedium.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/CommunicationMedium.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/CommunicationMedium.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/CommunicationMedium.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/OfferProbability.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/OfferProbability.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/OfferProbability.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/OfferProbability.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectCompetitionPhase.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectCompetitionPhase.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectCompetitionPhase.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectCompetitionPhase.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPhase.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPhase.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPhase.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPhase.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPricePolitics.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPricePolitics.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPricePolitics.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectPricePolitics.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectState.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectState.xml
similarity index 95%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectState.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectState.xml
index 2d71ed03849fc35bcd8f0036930b32ee2073540e..579f8bdd2cc8014a5925b76aa546cf95fcce9bff 100644
--- a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectState.xml
+++ b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectState.xml
@@ -6,7 +6,7 @@
             <column name="STATE" type="CHAR(36)"/>
 	</addColumn> 
         <update tableName="SALESPROJECT">
-            <column name="STATE" value="25b0ac77-ef92-4809-802e-bb9d8782f865"/>
+            <column name="STATE" value="483bcaeb-1e5b-4772-b54e-7d7d8aa65712"/>
             <where>STATE_OLD = 1</where>
         </update>
         <update tableName="SALESPROJECT">
@@ -38,7 +38,7 @@
             </addColumn>   
             <update tableName="SALESPROJECT">
                 <column name="STATE" valueNumeric="1"/>
-                <where>STATE_OLD = '25b0ac77-ef92-4809-802e-bb9d8782f865'</where>
+                <where>STATE_OLD = '483bcaeb-1e5b-4772-b54e-7d7d8aa65712'</where>
             </update>
             <update tableName="SALESPROJECT">
                 <column name="STATE" valueNumeric="2"/>
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectStrength.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectStrength.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectStrength.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectStrength.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectWeakness.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectWeakness.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectWeakness.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesProjectWeakness.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesprojectCompetitionState.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesprojectCompetitionState.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesprojectCompetitionState.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/SalesprojectCompetitionState.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/TaskPriority.xml b/.liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/TaskPriority.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/KeywordRelatedStructureChanges/TaskPriority.xml
rename to .liquibase/Data_alias/basic/2019.2/KeywordRelatedStructureChanges/TaskPriority.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/Offer_terms.xml b/.liquibase/Data_alias/basic/2019.2/Offer_terms.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/Offer_terms.xml
rename to .liquibase/Data_alias/basic/2019.2/Offer_terms.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/Product_remove_fk.xml b/.liquibase/Data_alias/basic/2019.2/Product_remove_fk.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/Product_remove_fk.xml
rename to .liquibase/Data_alias/basic/2019.2/Product_remove_fk.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/SalesOrder_source_offer.xml b/.liquibase/Data_alias/basic/2019.2/SalesOrder_source_offer.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/SalesOrder_source_offer.xml
rename to .liquibase/Data_alias/basic/2019.2/SalesOrder_source_offer.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/Salesproject_add_column.xml b/.liquibase/Data_alias/basic/2019.2/Salesproject_add_column.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/Salesproject_add_column.xml
rename to .liquibase/Data_alias/basic/2019.2/Salesproject_add_column.xml
diff --git a/.liquibase/Data_alias/basic/2019.2/activity_add_date_editnew_user_editnew.xml b/.liquibase/Data_alias/basic/2019.2/activity_add_date_editnew_user_editnew.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2dc4d279cfb4fbd8005a5c7b8b952f8774d9e118
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/activity_add_date_editnew_user_editnew.xml
@@ -0,0 +1,28 @@
+<?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="d.buechler" id="12efe6d0-710d-4db2-beba-adef412a641e">
+        <addColumn tableName="ACTIVITY">
+            <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+        
+        <update tableName="ACTIVITY">
+            <column name="USER_NEW" type="NVARCHAR(50)" value="Admin"/>
+            <column name="DATE_NEW" type="DATETIME" valueComputed="current_datetime"/>
+        </update>
+        
+        <addNotNullConstraint
+            columnDataType="NVARCHAR(50)"
+            columnName="USER_NEW"
+            tableName="ACTIVITY"/>
+        
+        <addNotNullConstraint
+            columnDataType="DATETIME"
+            columnName="DATE_NEW"
+            tableName="ACTIVITY"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/activity_add_parent.xml b/.liquibase/Data_alias/basic/2019.2/activity_add_parent.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/activity_add_parent.xml
rename to .liquibase/Data_alias/basic/2019.2/activity_add_parent.xml
diff --git a/.liquibase/Data_alias/basic/2019.2/activitylink_add_date_editnew_user_editnew.xml b/.liquibase/Data_alias/basic/2019.2/activitylink_add_date_editnew_user_editnew.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8fadb2fd79360619b4eb68bcb7592a79bc95210d
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/activitylink_add_date_editnew_user_editnew.xml
@@ -0,0 +1,29 @@
+<?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="d.buechler" id="4974c7ff-9b83-488e-b2d8-4d3d3fbfa13b">
+        <addColumn tableName="ACTIVITYLINK">
+	    <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+        
+        <update
+            tableName="ACTIVITYLINK">
+        <column name="USER_NEW" type="NVARCHAR(50)" value="Admin"/>
+        <column name="DATE_NEW" type="DATETIME" valueComputed="current_datetime"/>
+        </update>
+        
+        <addNotNullConstraint
+            columnDataType="NVARCHAR(50)"
+            columnName="USER_NEW"
+            tableName="ACTIVITYLINK"/>
+        
+        <addNotNullConstraint
+            columnDataType="DATETIME"
+            columnName="DATE_NEW"
+            tableName="ACTIVITYLINK"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/add_ObjectRelation_type.xml b/.liquibase/Data_alias/basic/2019.2/add_ObjectRelation_type.xml
similarity index 89%
rename from others/db_changes/data_alias/basic/2019.2/add_ObjectRelation_type.xml
rename to .liquibase/Data_alias/basic/2019.2/add_ObjectRelation_type.xml
index 1fe970cb978fa75867033eedcd40729919b23316..063480e4508574b391d37f3a116a0ae7924670b9 100644
--- a/others/db_changes/data_alias/basic/2019.2/add_ObjectRelation_type.xml
+++ b/.liquibase/Data_alias/basic/2019.2/add_ObjectRelation_type.xml
@@ -17,11 +17,15 @@
             <column name="SIDE" type="INTEGER">
                 <constraints nullable="false"/>
             </column>
+            <column name="HIERARCHY" type="INTEGER">
+                <constraints nullable="false"/>
+            </column>
         </createTable>
         
         <addColumn tableName="AB_OBJECTRELATION">
             <column name="AB_OBJECTRELATIONTYPE1" type="CHAR(36)"/>
             <column name="AB_OBJECTRELATIONTYPE2" type="CHAR(36)"/>
+            <column name="INFO" type="NCLOB"/>
         </addColumn>
         
         <dropIndex tableName="AB_OBJECTRELATION" indexName="IDX_AB_OBJECTRELATION_OBJECT1"/>
@@ -38,6 +42,7 @@
             <column name="RELATION_TITLE" value="parent company"/>
             <column name="RELATION_TYPE" value="a054875d-b9a2-499d-877b-ccec31358324"/>
             <column name="SIDE" valueNumeric="1"/>
+            <column name="HIERARCHY" valueNumeric="1"/>
         </insert>
         <insert tableName="AB_OBJECTRELATIONTYPE">
             <column name="AB_OBJECTRELATIONTYPEID" value="259babbd-7827-44d4-b9ec-8245d27b5f70"/>
@@ -45,6 +50,7 @@
             <column name="RELATION_TITLE" value="subsidiary"/>
             <column name="RELATION_TYPE" value="a054875d-b9a2-499d-877b-ccec31358324"/>
             <column name="SIDE" valueNumeric="2"/>
+            <column name="HIERARCHY" valueNumeric="1"/>
         </insert>
         
         <insert tableName="AB_OBJECTRELATIONTYPE">
@@ -53,6 +59,7 @@
             <column name="RELATION_TITLE" value="parent of"/>
             <column name="RELATION_TYPE" value="52f3ec58-71d5-469f-85e4-37ef2eeeb3e0"/>
             <column name="SIDE" valueNumeric="1"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
         <insert tableName="AB_OBJECTRELATIONTYPE">
             <column name="AB_OBJECTRELATIONTYPEID" value="b3b85332-1c86-4cd8-a3b9-34c49c51f01a"/>
@@ -60,6 +67,7 @@
             <column name="RELATION_TITLE" value="child of"/>
             <column name="RELATION_TYPE" value="52f3ec58-71d5-469f-85e4-37ef2eeeb3e0"/>
             <column name="SIDE" valueNumeric="2"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
 
         <insert tableName="AB_OBJECTRELATIONTYPE">
@@ -68,6 +76,7 @@
             <column name="RELATION_TITLE" value="supports"/>
             <column name="RELATION_TYPE" value="5ab4d256-4220-4c28-88d6-1db01e2f4667"/>
             <column name="SIDE" valueNumeric="1"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
         <insert tableName="AB_OBJECTRELATIONTYPE">
             <column name="AB_OBJECTRELATIONTYPEID" value="a51e23c0-d44a-4e39-a79b-7a357fb79cc2"/>
@@ -75,6 +84,7 @@
             <column name="RELATION_TITLE" value="supported by"/>
             <column name="RELATION_TYPE" value="5ab4d256-4220-4c28-88d6-1db01e2f4667"/>
             <column name="SIDE" valueNumeric="2"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
     
         <insert tableName="AB_OBJECTRELATIONTYPE">
@@ -83,6 +93,7 @@
             <column name="RELATION_TITLE" value="supervisor of"/>
             <column name="RELATION_TYPE" value="4df4160d-6efc-43b3-9b02-710ab3d0228c"/>
             <column name="SIDE" valueNumeric="1"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
         <insert tableName="AB_OBJECTRELATIONTYPE">
             <column name="AB_OBJECTRELATIONTYPEID" value="0a47c346-9b6f-4cdd-8c38-77800d7012f5"/>
@@ -90,21 +101,24 @@
             <column name="RELATION_TITLE" value="reports to"/>
             <column name="RELATION_TYPE" value="4df4160d-6efc-43b3-9b02-710ab3d0228c"/>
             <column name="SIDE" valueNumeric="2"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
     
         <insert tableName="AB_OBJECTRELATIONTYPE">
             <column name="AB_OBJECTRELATIONTYPEID" value="9d4739ba-33b0-4e87-b281-561e2cbdd277"/>
             <column name="OBJECT_TYPE" value="Person"/>
-            <column name="RELATION_TITLE" value="promotion target of"/>
+            <column name="RELATION_TITLE" value="solicits"/>
             <column name="RELATION_TYPE" value="ddad6aa3-267b-4784-afbb-98242218fcf5"/>
             <column name="SIDE" valueNumeric="1"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
         <insert tableName="AB_OBJECTRELATIONTYPE">
             <column name="AB_OBJECTRELATIONTYPEID" value="e397b595-38ae-4365-908e-75ee388838eb"/>
             <column name="OBJECT_TYPE" value="Organisation"/>
-            <column name="RELATION_TITLE" value="solicits"/>
+            <column name="RELATION_TITLE" value="promotion target of"/>
             <column name="RELATION_TYPE" value="ddad6aa3-267b-4784-afbb-98242218fcf5"/>
             <column name="SIDE" valueNumeric="2"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
 
         <insert tableName="AB_OBJECTRELATIONTYPE">
@@ -113,6 +127,7 @@
             <column name="RELATION_TITLE" value="competitor"/>
             <column name="RELATION_TYPE" value="032ebe0a-7204-4eec-82a2-cb13b65850d7"/>
             <column name="SIDE" valueNumeric="1"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
         
         <insert tableName="AB_OBJECTRELATIONTYPE">
@@ -121,6 +136,7 @@
             <column name="RELATION_TITLE" value="society"/>
             <column name="RELATION_TYPE" value="9f65f915-2767-40c4-9e7b-e818e915648f"/>
             <column name="SIDE" valueNumeric="1"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
         <insert tableName="AB_OBJECTRELATIONTYPE">
             <column name="AB_OBJECTRELATIONTYPEID" value="fa879afd-b2c5-4eee-9799-d63c6764b348"/>
@@ -128,6 +144,7 @@
             <column name="RELATION_TITLE" value="member"/>
             <column name="RELATION_TYPE" value="9f65f915-2767-40c4-9e7b-e818e915648f"/>
             <column name="SIDE" valueNumeric="2"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
 
         <insert tableName="AB_OBJECTRELATIONTYPE">
@@ -136,6 +153,7 @@
             <column name="RELATION_TITLE" value="acquainted with"/>
             <column name="RELATION_TYPE" value="84120fad-e7a2-4961-8c29-d00da41efe48"/>
             <column name="SIDE" valueNumeric="1"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
 
         <insert tableName="AB_OBJECTRELATIONTYPE">
@@ -144,6 +162,7 @@
             <column name="RELATION_TITLE" value="collaboration with"/>
             <column name="RELATION_TYPE" value="091d866f-67e8-4fd6-afdc-e40d0f2be224"/>
             <column name="SIDE" valueNumeric="1"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
         
         <insert tableName="AB_OBJECTRELATIONTYPE">
@@ -152,6 +171,7 @@
             <column name="RELATION_TITLE" value="grandparents of"/>
             <column name="RELATION_TYPE" value="f36c69c2-6d03-45ef-81a0-f9118ce3f4c6"/>
             <column name="SIDE" valueNumeric="1"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
         <insert tableName="AB_OBJECTRELATIONTYPE">
             <column name="AB_OBJECTRELATIONTYPEID" value="a2296f93-2371-4ab8-9f29-ef0795d1e9b2"/>
@@ -159,6 +179,7 @@
             <column name="RELATION_TITLE" value="ankle of"/>
             <column name="RELATION_TYPE" value="f36c69c2-6d03-45ef-81a0-f9118ce3f4c6"/>
             <column name="SIDE" valueNumeric="2"/>
+            <column name="HIERARCHY" valueNumeric="0"/>
         </insert>
     </changeSet>
 </databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/address_add_date_editnew_user_editnew.xml b/.liquibase/Data_alias/basic/2019.2/address_add_date_editnew_user_editnew.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1f1c3fb9885b3820b9fda0accee7134382c2b740
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/address_add_date_editnew_user_editnew.xml
@@ -0,0 +1,29 @@
+<?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="d.buechler" id="5de48032-5931-4d48-ac9d-fca8da4cef93">
+        <addColumn tableName="ADDRESS">
+	        <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+        
+        <update
+            tableName="ADDRESS">
+        <column name="USER_NEW" type="NVARCHAR(50)" value="Admin"/>
+        <column name="DATE_NEW" type="DATETIME" valueComputed="current_datetime"/>
+        </update>
+        
+        <addNotNullConstraint
+            columnDataType="NVARCHAR(50)"
+            columnName="USER_NEW"
+            tableName="ADDRESS"/>
+        
+        <addNotNullConstraint
+            columnDataType="DATETIME"
+            columnName="DATE_NEW"
+            tableName="ADDRESS"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/alter_activityLink_Derby.xml b/.liquibase/Data_alias/basic/2019.2/alter_activityLink_Derby.xml
new file mode 100644
index 0000000000000000000000000000000000000000..42dad5d1fe1233018439f983730dda81cbaf8f26
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/alter_activityLink_Derby.xml
@@ -0,0 +1,11 @@
+<?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 dbms="derby" author="j.hoermann" id="4e0bce38-7470-4289-a656-2f2e34cefd9c">
+        <sql>
+            ALTER TABLE ACTIVITYLINK ADD COLUMN ACTIVITY_ID_NEW CHAR(36);
+            UPDATE ACTIVITYLINK SET ACTIVITY_ID_NEW=ACTIVITY_ID;
+            ALTER TABLE ACTIVITYLINK DROP COLUMN ACTIVITY_ID;
+            RENAME COLUMN ACTIVITYLINK.ACTIVITY_ID_NEW TO ACTIVITY_ID;
+        </sql>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/alter_activityLink_notDerby.xml b/.liquibase/Data_alias/basic/2019.2/alter_activityLink_notDerby.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1f3a0b842f009417b8ed199eb918f583bf670807
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/alter_activityLink_notDerby.xml
@@ -0,0 +1,6 @@
+<?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 dbms="!derby" author="j.hoermann" id="634590d7-8bcc-40f9-9615-9de7cd91e586">
+        <modifyDataType tableName="ACTIVITYLINK" columnName="ACTIVITY_ID" newDataType="CHAR(36)"/>
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/attributerelation_add_date_editnew_user_editnew.xml b/.liquibase/Data_alias/basic/2019.2/attributerelation_add_date_editnew_user_editnew.xml
new file mode 100644
index 0000000000000000000000000000000000000000..be425b68229f16684658fce5543cf881a5c27a8f
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/attributerelation_add_date_editnew_user_editnew.xml
@@ -0,0 +1,29 @@
+<?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="d.buechler" id="7e51f1e1-2eeb-4334-9c4b-09519681bb8f">
+        <addColumn tableName="AB_ATTRIBUTERELATION">
+            <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+        
+        <update
+            tableName="AB_ATTRIBUTERELATION">
+        <column name="USER_NEW" type="NVARCHAR(50)" value="Admin"/>
+        <column name="DATE_NEW" type="DATETIME" valueComputed="current_datetime"/>
+        </update>
+        
+        <addNotNullConstraint
+            columnDataType="NVARCHAR(50)"
+            columnName="USER_NEW"
+            tableName="AB_ATTRIBUTERELATION"/>
+        
+        <addNotNullConstraint
+            columnDataType="DATETIME"
+            columnName="DATE_NEW"
+            tableName="AB_ATTRIBUTERELATION"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/changelog.xml b/.liquibase/Data_alias/basic/2019.2/changelog.xml
similarity index 76%
rename from others/db_changes/data_alias/basic/2019.2/changelog.xml
rename to .liquibase/Data_alias/basic/2019.2/changelog.xml
index 139a4d6f4512a4ad12688edf19af74d879ee6007..02937d764360a0c437d30c9b100d7e006606f087 100644
--- a/others/db_changes/data_alias/basic/2019.2/changelog.xml
+++ b/.liquibase/Data_alias/basic/2019.2/changelog.xml
@@ -20,7 +20,7 @@
     <include relativeToChangelogFile="true" file="data/example_contract/CONTRACT_1002.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_contract/CONTRACT_1003.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_contract/CONTRACT_1004.xml" context="example"/>
-    <include relativeToChangelogFile="true" file="data/example_product/PRODUCT_42154311.xml" context="example"/>    
+    <include relativeToChangelogFile="true" file="data/example_product/PRODUCT_42154311.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_salesproject/SALESPROJECT_gfk.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_salesproject/SALESPROJECT_jkl.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_activity/ACTIVITY_gfk.xml" context="example"/>
@@ -28,30 +28,30 @@
     <include relativeToChangelogFile="true" file="data/example_offer/OFFER_1001.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_offer/OFFER_1002.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_offer/OFFER_1003.xml" context="example"/>
-    <include relativeToChangelogFile="true" file="data/example_offer/OFFER_1004.xml" context="example"/>    
+    <include relativeToChangelogFile="true" file="data/example_offer/OFFER_1004.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1000.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1001.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1002.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1003.xml" context="example"/>
-    <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1004.xml" context="example"/>  
-    <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1005.xml" context="example"/>  
-    <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1006.xml" context="example"/>  
-    <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1007.xml" context="example"/>  
+    <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1004.xml" context="example"/>
+    <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1005.xml" context="example"/>
+    <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1006.xml" context="example"/>
+    <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1007.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1008.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_salesorder/SALESORDER_1009.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_task/base.xml" context="example"/>
-    
+
     <include relativeToChangelogFile="true" file="update_TaskType_Task.xml"/>
-    
+
     <include relativeToChangelogFile="true" file="removeTaskCode.xml"/>
-    
+
     <include relativeToChangelogFile="true" file="activity_add_parent.xml"/>
     <include relativeToChangelogFile="true" file="task_add_parent.xml"/>
 
     <include relativeToChangelogFile="true" file="create_salutation.xml"/>
-    
+
     <include relativeToChangelogFile="true" file="drop_estimation_salesproject.xml"/>
-    
+
     <!--References to the Keyword Values-->
     <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/OfferProbability.xml"/>
     <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/ActivityCategory.xml"/>
@@ -65,7 +65,7 @@
     <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/TaskPriority.xml"/>
     <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/SalesprojectCompetitionState.xml"/>
     <include relativeToChangelogFile="true" file="KeywordRelatedStructureChanges/SalesProjectCompetitionPhase.xml"/>
-       
+
     <!--References to the reference files-->
     <include relativeToChangelogFile="true" file="AditoBasic/init_OfferProbability.xml"/>
     <include relativeToChangelogFile="true" file="AditoBasic/init_ActivityCategory.xml"/>
@@ -83,24 +83,57 @@
     <include relativeToChangelogFile="true" file="Contact_add_columns.xml"/>
     <include relativeToChangelogFile="true" file="SalesOrder_source_offer.xml"/>
     <include relativeToChangelogFile="true" file="Product_remove_fk.xml"/>
-    
+
     <include relativeToChangelogFile="true" file="data/example_attribute/Attribute.xml" context="example"/>
     <include relativeToChangelogFile="true" file="data/example_attribute/AttributeUsage.xml" context="example"/>
-	
+
     <include relativeToChangelogFile="true" file="drop_contact_id_sp_forecast.xml"/>
-    
+
     <include relativeToChangelogFile="true" file="fix_sp_phases.xml"/>
-    
+
     <include relativeToChangelogFile="true" file="drop_pricePolitics-weakness-strength.xml"/>
-    
+
     <include relativeToChangelogFile="true" file="update_pricelist_keyword.xml"/>
-    
+
     <include relativeToChangelogFile="true" file="create_taskLink.xml"/>
-    
+
     <include relativeToChangelogFile="true" file="Offer_terms.xml"/>
-    
+
     <include relativeToChangelogFile="true" file="add_ObjectRelation_type.xml"/>
     <include relativeToChangelogFile="true" file="data/AditoBasic/ObjectRelation_exampleData.xml" context="example"/>
-    
+
     <include relativeToChangelogFile="true" file="Salesproject_add_column.xml"/>
+
+    <include relativeToChangelogFile="true" file="AditoBasic/update_Strength_Weakness.xml"/>
+    <include relativeToChangelogFile="true" file="AditoBasic/init_ContactDepartment.xml"/>
+    <include relativeToChangelogFile="true" file="AditoBasic/init_ContactContactrole.xml"/>
+    <include relativeToChangelogFile="true" file="AditoBasic/init_ContactPosition.xml"/>
+
+    <include relativeToChangelogFile="true" file="AditoBasic/init_AttributeKeyword_target_group.xml"/>
+    <include relativeToChangelogFile="true" file="AditoBasic/insert_offer_status_keyword.xml"/>
+    <include relativeToChangelogFile="true" file="AditoBasic/insert_salesproject_state_keyword.xml"/>
+
+
+    <include relativeToChangelogFile="true" file="organisation_add_date_editnew_user_editnew.xml"/>
+    <include relativeToChangelogFile="true" file="person_add_date_editnew_user_editnew.xml"/>
+    <include relativeToChangelogFile="true" file="address_add_date_editnew_user_editnew.xml"/>
+    <include relativeToChangelogFile="true" file="contact_add_date_editnew_user_editnew.xml"/>
+    <include relativeToChangelogFile="true" file="activity_add_date_editnew_user_editnew.xml"/>
+    <include relativeToChangelogFile="true" file="activitylink_add_date_editnew_user_editnew.xml"/>
+    <include relativeToChangelogFile="true" file="product_add_date_editnew_user_editnew.xml"/>
+    <include relativeToChangelogFile="true" file="offer_add_date_editnew_user_editnew.xml"/>
+    <include relativeToChangelogFile="true" file="attributerelation_add_date_editnew_user_editnew.xml"/>
+    <include relativeToChangelogFile="true" file="communication_add_date_editnew_user_editnew.xml"/>
+
+    <include relativeToChangelogFile="true" file="indicesRefactor/ContactManagement.xml"/>
+    <include relativeToChangelogFile="true" file="indicesRefactor/Keyword.xml"/>
+    <include relativeToChangelogFile="true" file="indicesRefactor/Activity.xml"/>
+    <include relativeToChangelogFile="true" file="indicesRefactor/Task.xml"/>
+
+    <include relativeToChangelogFile="true" file="update_Keyword_Essentials.xml" />
+    <include relativeToChangelogFile="true" file="Contactmanagement_added_ImageBlobs.xml" />
+	
+    <!-- Derby needs special handling -->
+    <include relativeToChangelogFile="true" file="alter_activityLink_notDerby.xml" />
+    <include relativeToChangelogFile="true" file="alter_activityLink_Derby.xml" />
 </databaseChangeLog>
diff --git a/.liquibase/Data_alias/basic/2019.2/communication_add_date_editnew_user_editnew.xml b/.liquibase/Data_alias/basic/2019.2/communication_add_date_editnew_user_editnew.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bcc8c48b77c06cfd0508682bac258766883ca297
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/communication_add_date_editnew_user_editnew.xml
@@ -0,0 +1,28 @@
+<?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="d.buechler" id="1ae11ac7-b51f-4286-a6d6-fd3e17353d01">
+        <addColumn tableName="COMMUNICATION">
+            <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+        
+        <update tableName="COMMUNICATION">
+            <column name="USER_NEW" type="NVARCHAR(50)" value="Admin"/>
+            <column name="DATE_NEW" type="DATETIME" valueComputed="current_datetime"/>
+        </update>
+        
+        <addNotNullConstraint
+            columnDataType="NVARCHAR(50)"
+            columnName="USER_NEW"
+            tableName="COMMUNICATION"/>
+        
+        <addNotNullConstraint
+            columnDataType="DATETIME"
+            columnName="DATE_NEW"
+            tableName="COMMUNICATION"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/contact_add_date_editnew_user_editnew.xml b/.liquibase/Data_alias/basic/2019.2/contact_add_date_editnew_user_editnew.xml
new file mode 100644
index 0000000000000000000000000000000000000000..95c4a880cda31d396db4ff336742af4ea765d990
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/contact_add_date_editnew_user_editnew.xml
@@ -0,0 +1,29 @@
+<?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="d.buechler" id="4628bfa2-db32-4f70-a18c-051ba688db15">
+        <addColumn tableName="CONTACT">
+            <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+        
+        <update
+            tableName="CONTACT">
+        <column name="USER_NEW" type="NVARCHAR(50)" value="Admin"/>
+        <column name="DATE_NEW" type="DATETIME" valueComputed="current_datetime"/>
+        </update>
+        
+        <addNotNullConstraint
+            columnDataType="NVARCHAR(50)"
+            columnName="USER_NEW"
+            tableName="CONTACT"/>
+        
+        <addNotNullConstraint
+            columnDataType="DATETIME"
+            columnName="DATE_NEW"
+            tableName="CONTACT"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/create_salutation.xml b/.liquibase/Data_alias/basic/2019.2/create_salutation.xml
similarity index 99%
rename from others/db_changes/data_alias/basic/2019.2/create_salutation.xml
rename to .liquibase/Data_alias/basic/2019.2/create_salutation.xml
index 7e3a19612134c8a967fc6d788a62fd423b9159a0..70b4f1edcdc170e7cc26d53a0969048ce77ca013 100644
--- a/others/db_changes/data_alias/basic/2019.2/create_salutation.xml
+++ b/.liquibase/Data_alias/basic/2019.2/create_salutation.xml
@@ -145,10 +145,10 @@
             <column name="SALUTATIONID" value="76fe57c0-cf68-4240-ba6d-eb7d52f46317"/>
         </insert>
         <insert tableName="SALUTATION">
-            <column name="HEADLINE" value="Herr Präsidengt {fn} {ln}"/>
-            <column name="LETTERSALUTATION" value="Sehr geehrter Herr Präsidengt"/>
+            <column name="HEADLINE" value="Herr Präsident {fn} {ln}"/>
+            <column name="LETTERSALUTATION" value="Sehr geehrter Herr Präsident"/>
             <column name="SEX" value="m"/>
-            <column name="TITLE" value="Präsidengt"/>
+            <column name="TITLE" value="Präsident"/>
             <column name="SALUTATION" value="Herr"/>
             <column name="LANGUAGE" value="deu"/>
             <column name="SORT" valueNumeric="14"/>
diff --git a/others/db_changes/data_alias/basic/2019.2/create_taskLink.xml b/.liquibase/Data_alias/basic/2019.2/create_taskLink.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/create_taskLink.xml
rename to .liquibase/Data_alias/basic/2019.2/create_taskLink.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/AditoBasic/ObjectRelation_exampleData.xml b/.liquibase/Data_alias/basic/2019.2/data/AditoBasic/ObjectRelation_exampleData.xml
similarity index 92%
rename from others/db_changes/data_alias/basic/2019.2/data/AditoBasic/ObjectRelation_exampleData.xml
rename to .liquibase/Data_alias/basic/2019.2/data/AditoBasic/ObjectRelation_exampleData.xml
index db8fa70a9c5427c29c02f22db8e08f93f8fa83b5..0ab7bfdba630f23532fd1413518d700251d296cb 100644
--- a/others/db_changes/data_alias/basic/2019.2/data/AditoBasic/ObjectRelation_exampleData.xml
+++ b/.liquibase/Data_alias/basic/2019.2/data/AditoBasic/ObjectRelation_exampleData.xml
@@ -6,14 +6,14 @@
         <insert tableName="AB_OBJECTRELATION">
             <column name="AB_OBJECTRELATIONID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/>
             <column name="OBJECT1_ROWID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-            <column name="OBJECT2_ROWID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/>
+            <column name="OBJECT2_ROWID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/>
             <column name="AB_OBJECTRELATIONTYPE1" value="c74ad02c-1db9-4f47-8691-aba349dbe316"/>
             <column name="AB_OBJECTRELATIONTYPE2" value="b3b85332-1c86-4cd8-a3b9-34c49c51f01a"/>
         </insert>
         <insert tableName="AB_OBJECTRELATION">
             <column name="AB_OBJECTRELATIONID" value="85ad4578-dce2-49df-a844-d162f1bd9f2f"/>
-            <column name="OBJECT1_ROWID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
-            <column name="OBJECT2_ROWID" value="73d7306c-e7f5-11e8-9f32-f2801f1b9fd1"/>
+            <column name="OBJECT1_ROWID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/>
+            <column name="OBJECT2_ROWID" value="ef345d11-a40d-59e0-a24c-afcb6095d2cb"/>
             <column name="AB_OBJECTRELATIONTYPE1" value="090f6adc-c2b8-44b7-8c61-39dbb5660aa0"/>
             <column name="AB_OBJECTRELATIONTYPE2" value="090f6adc-c2b8-44b7-8c61-39dbb5660aa0"/>
         </insert>
diff --git a/others/db_changes/data_alias/basic/2019.2/data/ORGANISATION_private.xml b/.liquibase/Data_alias/basic/2019.2/data/ORGANISATION_private.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/ORGANISATION_private.xml
rename to .liquibase/Data_alias/basic/2019.2/data/ORGANISATION_private.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_activity/ACTIVITY_gfk.xml b/.liquibase/Data_alias/basic/2019.2/data/example_activity/ACTIVITY_gfk.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_activity/ACTIVITY_gfk.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_activity/ACTIVITY_gfk.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_activity/LOBs/subjectText_661a7b87.txt b/.liquibase/Data_alias/basic/2019.2/data/example_activity/LOBs/subjectText_661a7b87.txt
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_activity/LOBs/subjectText_661a7b87.txt
rename to .liquibase/Data_alias/basic/2019.2/data/example_activity/LOBs/subjectText_661a7b87.txt
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_activity/LOBs/subjectText_661a7b87_1.txt b/.liquibase/Data_alias/basic/2019.2/data/example_activity/LOBs/subjectText_661a7b87_1.txt
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_activity/LOBs/subjectText_661a7b87_1.txt
rename to .liquibase/Data_alias/basic/2019.2/data/example_activity/LOBs/subjectText_661a7b87_1.txt
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_attribute/Attribute.xml b/.liquibase/Data_alias/basic/2019.2/data/example_attribute/Attribute.xml
similarity index 98%
rename from others/db_changes/data_alias/basic/2019.2/data/example_attribute/Attribute.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_attribute/Attribute.xml
index 7ad3f95ced078aeeab93939d4abdade69125db82..632b9c9749a3758287c9d0ddfc316b3e6295dc25 100644
--- a/others/db_changes/data_alias/basic/2019.2/data/example_attribute/Attribute.xml
+++ b/.liquibase/Data_alias/basic/2019.2/data/example_attribute/Attribute.xml
@@ -300,7 +300,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="e857f9ee-fb27-4507-8381-46ba0a181cef"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
 	<column name="ATTRIBUTE_NAME" value="Jahresurlaub"/>
 	<column name="ATTRIBUTE_PARENT_ID" value="acaf54c3-9613-4740-aa22-4f6ebd0d6cb0"/>
@@ -417,7 +417,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="1d4c071b-237e-4a11-abff-0acaeaf6f8b1"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
 	<column name="ATTRIBUTE_NAME" value="Signatur"/>
 	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
@@ -762,7 +762,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="acaf54c3-9613-4740-aa22-4f6ebd0d6cb0"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
 	<column name="ATTRIBUTE_NAME" value="Personal"/>
 	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
@@ -811,7 +811,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="bad29370-3c47-4ac7-8d5d-4e86439000ef"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="0"/>
 	<column name="ATTRIBUTE_NAME" value="Mitarbeiterkonto"/>
 	<column name="ATTRIBUTE_TYPE" value="GROUP                               "/>
@@ -871,7 +871,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="292fae38-6557-466d-8843-3b1b4a1f6599"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
 	<column name="ATTRIBUTE_NAME" value="Zahlungskondition"/>
 	<column name="ATTRIBUTE_PARENT_ID" value="ab545654-1fce-4993-b763-0ec469781302"/>
@@ -880,7 +880,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
 	<column name="ATTRIBUTE_NAME" value="Lieferkondition"/>
 	<column name="ATTRIBUTE_PARENT_ID" value="ab545654-1fce-4993-b763-0ec469781302"/>
@@ -889,12 +889,14 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
 	<column name="ATTRIBUTE_NAME" value="Preisliste"/>
 	<column name="ATTRIBUTE_PARENT_ID" value="ab545654-1fce-4993-b763-0ec469781302"/>
 	<column name="ATTRIBUTE_TYPE" value="KEYWORD                             "/>
+        <column name="KEYWORD_CONTAINER" value="ProductPricelist"/>
 </insert>
+
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="e7886e41-252e-414c-a169-5d1481d010c8"/>
 	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
@@ -912,7 +914,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="e8999504-5851-4934-a3f1-fb4b513d41e9"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
 	<column name="ATTRIBUTE_NAME" value="schreibt für"/>
 	<column name="ATTRIBUTE_PARENT_ID" value="1d4c071b-237e-4a11-abff-0acaeaf6f8b1"/>
@@ -934,7 +936,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="28fd7a4b-72d8-40ff-a893-a9479abcf19e"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
 	<column name="ATTRIBUTE_NAME" value="Feiertag"/>
 	<column name="ATTRIBUTE_PARENT_ID" value="bad29370-3c47-4ac7-8d5d-4e86439000ef"/>
@@ -974,7 +976,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="ff84c147-27c7-4698-83ff-0e25b1d33851"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
 	<column name="ATTRIBUTE_NAME" value="Vorgesetzter von"/>
 	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
@@ -982,7 +984,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="d637fc6c-9452-4498-8379-ec71d946cbab"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
 	<column name="ATTRIBUTE_NAME" value="berichtet an"/>
 	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
@@ -990,7 +992,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="6bdb658c-94bc-4e68-aefb-a38483ee68b1"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
 	<column name="ATTRIBUTE_NAME" value="Gebiet"/>
 	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
@@ -998,7 +1000,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="3e5736c4-93ff-4471-96f5-48bb34ab53d2"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
 	<column name="ATTRIBUTE_NAME" value="Urlaubsgenehmigung durch"/>
 	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
@@ -1006,7 +1008,7 @@
 </insert>
 <insert tableName="AB_ATTRIBUTE">
 	<column name="AB_ATTRIBUTEID" value="3f119858-9d69-4903-a572-d286be151f73"/>
-	<column name="ATTRIBUTE_ACTIVE" valueNumeric="0"/>
+	<column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/>
 	<column name="ATTRIBUTE_LEVEL" valueNumeric="1"/>
 	<column name="ATTRIBUTE_NAME" value="Urlaubsprüfung durch"/>
 	<column name="ATTRIBUTE_PARENT_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_attribute/AttributeUsage.xml b/.liquibase/Data_alias/basic/2019.2/data/example_attribute/AttributeUsage.xml
similarity index 59%
rename from others/db_changes/data_alias/basic/2019.2/data/example_attribute/AttributeUsage.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_attribute/AttributeUsage.xml
index e6019bb9b660635d94b05846fc6b0673494611a9..ae2d23abf2da9b6232b34b24e86c8c13bd1b1205 100644
--- a/others/db_changes/data_alias/basic/2019.2/data/example_attribute/AttributeUsage.xml
+++ b/.liquibase/Data_alias/basic/2019.2/data/example_attribute/AttributeUsage.xml
@@ -1,6 +1,11 @@
 <?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="s.listl" id="33bfbf9d-e3b9-4dd0-94e5-f22c74bc3014">
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="3234f4e2-0ee7-4782-9b10-c953b7b1be29"/>
+	<column name="AB_ATTRIBUTE_ID" value="97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
 <insert tableName="AB_ATTRIBUTEUSAGE">
 	<column name="AB_ATTRIBUTEUSAGEID" value="c4f2943f-a63c-4ede-815b-0d588f33d5fb"/>
 	<column name="AB_ATTRIBUTE_ID" value="752d7706-ac6e-4b51-a918-4265531794a4"/>
@@ -43,11 +48,6 @@
 	<column name="MIN_COUNT" valueNumeric="1"/>
 	<column name="OBJECT_TYPE" value="Organisation"/>
 </insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="5b9d5f38-4486-4586-8de0-9c607d51e698"/>
-	<column name="AB_ATTRIBUTE_ID" value="be31d7a5-9a02-4ae0-8265-916d32c1fccb"/>
-	<column name="OBJECT_TYPE" value="Document_entity"/>
-</insert>
 <insert tableName="AB_ATTRIBUTEUSAGE">
 	<column name="AB_ATTRIBUTEUSAGEID" value="9216c562-b361-4a9d-be60-a6fdf9bdc07c"/>
 	<column name="AB_ATTRIBUTE_ID" value="0644222a-2b3b-4f5e-a85a-d24c32fa0e72"/>
@@ -58,21 +58,11 @@
 	<column name="AB_ATTRIBUTE_ID" value="ab545654-1fce-4993-b763-0ec469781302"/>
 	<column name="OBJECT_TYPE" value="Person"/>
 </insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="8adfbc93-2daa-4e6b-a3ce-76110b46e458"/>
-	<column name="AB_ATTRIBUTE_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
-	<column name="OBJECT_TYPE" value="Activity"/>
-</insert>
 <insert tableName="AB_ATTRIBUTEUSAGE">
 	<column name="AB_ATTRIBUTEUSAGEID" value="6ad188dc-5e76-467a-9bc3-8c63f50862ae"/>
 	<column name="AB_ATTRIBUTE_ID" value="ab545654-1fce-4993-b763-0ec469781302"/>
 	<column name="OBJECT_TYPE" value="Contract"/>
 </insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="31b6b6f1-b980-4b14-a382-a718be560009"/>
-	<column name="AB_ATTRIBUTE_ID" value="9e9568c5-ad8a-4c1e-a6e6-72c9b4a3acf7"/>
-	<column name="OBJECT_TYPE" value="Document_entity"/>
-</insert>
 <insert tableName="AB_ATTRIBUTEUSAGE">
 	<column name="AB_ATTRIBUTEUSAGEID" value="c32d3322-5ff6-400a-82b6-4f8524ec7f6b"/>
 	<column name="AB_ATTRIBUTE_ID" value="b78ef891-16a3-4354-bc95-7b70ef5b4e2e"/>
@@ -98,36 +88,11 @@
 	<column name="AB_ATTRIBUTE_ID" value="a844a395-e857-447d-b8f8-fa850bbceb82"/>
 	<column name="OBJECT_TYPE" value="Product"/>
 </insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="89be2b44-2766-4dea-9a73-725b84a20d6d"/>
-	<column name="AB_ATTRIBUTE_ID" value="ab545654-1fce-4993-b763-0ec469781302"/>
-	<column name="OBJECT_TYPE" value="Contact"/>
-</insert>
 <insert tableName="AB_ATTRIBUTEUSAGE">
 	<column name="AB_ATTRIBUTEUSAGEID" value="0766ff88-304d-41a7-8224-642a0aee5587"/>
 	<column name="AB_ATTRIBUTE_ID" value="c7d28377-8cb1-4f92-a9ac-ed08041a782b"/>
 	<column name="OBJECT_TYPE" value="Salesproject"/>
 </insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="ef63620d-f247-4ca0-bd92-9efa0b14676e"/>
-	<column name="AB_ATTRIBUTE_ID" value="f310ae37-5ec3-47c6-839b-a92fc8fcd252"/>
-	<column name="OBJECT_TYPE" value="Organisation"/>
-</insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="512ef5be-3381-42ac-860a-b1fbb9be665b"/>
-	<column name="AB_ATTRIBUTE_ID" value="f310ae37-5ec3-47c6-839b-a92fc8fcd252"/>
-	<column name="OBJECT_TYPE" value="Activity"/>
-</insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="dbb70409-43b2-4a94-b7f7-bbb4e4ba101d"/>
-	<column name="AB_ATTRIBUTE_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
-	<column name="OBJECT_TYPE" value="Person"/>
-</insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="f579e0d5-42f4-4682-99b5-358e06ffe4a1"/>
-	<column name="AB_ATTRIBUTE_ID" value="f310ae37-5ec3-47c6-839b-a92fc8fcd252"/>
-	<column name="OBJECT_TYPE" value="Person"/>
-</insert>
 <insert tableName="AB_ATTRIBUTEUSAGE">
 	<column name="AB_ATTRIBUTEUSAGEID" value="06afbdb4-a9e1-493d-b45e-c14e114a9cc7"/>
 	<column name="AB_ATTRIBUTE_ID" value="fd3963bc-8e60-411a-9911-b97eb73e5cf7"/>
@@ -145,21 +110,11 @@
 	<column name="MIN_COUNT" valueNumeric="1"/>
 	<column name="OBJECT_TYPE" value="Person"/>
 </insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="9a145e7f-bb66-4541-bb99-28c2dd944f3d"/>
-	<column name="AB_ATTRIBUTE_ID" value="fa0171cf-2e0d-4ff0-bbe7-8ff083a96593"/>
-	<column name="OBJECT_TYPE" value="Document_entity"/>
-</insert>
 <insert tableName="AB_ATTRIBUTEUSAGE">
 	<column name="AB_ATTRIBUTEUSAGEID" value="37855ddd-c5cb-4692-86a5-3a94aae7c455"/>
 	<column name="AB_ATTRIBUTE_ID" value="7b687991-601c-4d75-b201-00a6cc9c6b93"/>
 	<column name="OBJECT_TYPE" value="Product"/>
 </insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="fade7115-40fb-41a2-8f71-dbb6905176e9"/>
-	<column name="AB_ATTRIBUTE_ID" value="b93fc811-e0dc-4e50-9ca6-107f43ac4c0c"/>
-	<column name="OBJECT_TYPE" value="Document_entity"/>
-</insert>
 <insert tableName="AB_ATTRIBUTEUSAGE">
 	<column name="AB_ATTRIBUTEUSAGEID" value="97dce2df-5757-4a2e-89a1-60a9a88d181c"/>
 	<column name="AB_ATTRIBUTE_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
@@ -177,11 +132,6 @@
 	<column name="MIN_COUNT" valueNumeric="2"/>
 	<column name="OBJECT_TYPE" value="Organisation"/>
 </insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="6fd80f33-6d9a-4b95-b420-c3c5b249caf9"/>
-	<column name="AB_ATTRIBUTE_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
-	<column name="OBJECT_TYPE" value="Organisation"/>
-</insert>
 <insert tableName="AB_ATTRIBUTEUSAGE">
 	<column name="AB_ATTRIBUTEUSAGEID" value="7c0f32be-d3f5-48be-8b7e-a80eb6ade28d"/>
 	<column name="AB_ATTRIBUTE_ID" value="786148de-56b3-497e-88db-2ff5e4dc0bd7"/>
@@ -203,12 +153,6 @@
 	<column name="AB_ATTRIBUTE_ID" value="65f0027d-7939-4342-b531-f31f10c3c045"/>
 	<column name="OBJECT_TYPE" value="Person"/>
 </insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="ebb3b2a2-0fd2-4307-8f21-c118e7ad7b8e"/>
-	<column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
-	<column name="MIN_COUNT" valueNumeric="1"/>
-	<column name="OBJECT_TYPE" value="Contact"/>
-</insert>
 <insert tableName="AB_ATTRIBUTEUSAGE">
 	<column name="AB_ATTRIBUTEUSAGEID" value="755239d0-7fe3-46bc-8ec4-923977148455"/>
 	<column name="AB_ATTRIBUTE_ID" value="7621696c-40ce-4cf2-92ec-74bc940e49ec"/>
@@ -219,12 +163,6 @@
 	<column name="AB_ATTRIBUTE_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
 	<column name="OBJECT_TYPE" value="Person"/>
 </insert>
-<insert tableName="AB_ATTRIBUTEUSAGE">
-	<column name="AB_ATTRIBUTEUSAGEID" value="0826cf13-f379-417d-9fed-302fe44a618e"/>
-	<column name="AB_ATTRIBUTE_ID" value="dc52ede6-2b79-488c-b7bb-48877bd5d198"/>
-	<column name="MIN_COUNT" valueNumeric="1"/>
-	<column name="OBJECT_TYPE" value="Activity"/>
-</insert>
 <insert tableName="AB_ATTRIBUTEUSAGE">
 	<column name="AB_ATTRIBUTEUSAGEID" value="2d2c7f0f-29aa-42e8-88f5-b6234d52e349"/>
 	<column name="AB_ATTRIBUTE_ID" value="e73ed929-8631-46de-b28f-eb1423abb808"/>
@@ -241,7 +179,188 @@
 	<column name="AB_ATTRIBUTE_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
 	<column name="OBJECT_TYPE" value="Product"/>
 </insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="8998c3b4-4eb8-4885-a290-3915f7e115a4"/>
+	<column name="AB_ATTRIBUTE_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="OBJECT_TYPE" value="Activity"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="219ea36e-d350-4ea9-9af0-9f396464e138"/>
+	<column name="AB_ATTRIBUTE_ID" value="dc52ede6-2b79-488c-b7bb-48877bd5d198"/>
+	<column name="OBJECT_TYPE" value="Activity"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="118a4133-c604-4c91-b1d5-13769d2c2bfb"/>
+	<column name="AB_ATTRIBUTE_ID" value="f310ae37-5ec3-47c6-839b-a92fc8fcd252"/>
+	<column name="OBJECT_TYPE" value="Activity"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="d72e9c6d-ad1d-419c-9794-b044c69f9c22"/>
+	<column name="AB_ATTRIBUTE_ID" value="14847ea6-b6fd-43f6-a819-af2b1e53177e"/>
+	<column name="OBJECT_TYPE" value="Activity"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="e04d728d-f920-4e38-a8eb-258789d5c387"/>
+	<column name="AB_ATTRIBUTE_ID" value="cd90b9e3-e663-4248-b9ed-4e25ed330c58"/>
+	<column name="OBJECT_TYPE" value="Activity"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="eedcc2e4-6af2-42f9-ab48-379d0188d5d8"/>
+	<column name="AB_ATTRIBUTE_ID" value="7abdc3a7-f46b-4021-b695-7fde6b21c6a4"/>
+	<column name="OBJECT_TYPE" value="Activity"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="f10f8bd6-1bbd-4970-a41d-af027c063cfc"/>
+	<column name="AB_ATTRIBUTE_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="3ab3fec6-229e-430e-b92c-d4f06be3829d"/>
+	<column name="AB_ATTRIBUTE_ID" value="f310ae37-5ec3-47c6-839b-a92fc8fcd252"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="5c357e7d-68f7-4408-8b60-36f8a029db28"/>
+	<column name="AB_ATTRIBUTE_ID" value="14847ea6-b6fd-43f6-a819-af2b1e53177e"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="9635f83e-6714-4ede-ab07-0f8180548d56"/>
+	<column name="AB_ATTRIBUTE_ID" value="cd90b9e3-e663-4248-b9ed-4e25ed330c58"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="3eb17fc4-94ea-468b-b2bb-0f59101407c4"/>
+	<column name="AB_ATTRIBUTE_ID" value="7abdc3a7-f46b-4021-b695-7fde6b21c6a4"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="5fcdb4a4-5b63-4379-a839-319701612438"/>
+	<column name="AB_ATTRIBUTE_ID" value="2f963668-9e8c-41d7-aee4-6beaf37492e4"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="d3d2d6ba-5b4f-4f8a-95c2-6c9abc74a9d6"/>
+	<column name="AB_ATTRIBUTE_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="b0f42fce-45e4-47e7-9534-534d3c762c81"/>
+	<column name="AB_ATTRIBUTE_ID" value="f310ae37-5ec3-47c6-839b-a92fc8fcd252"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="b41518a1-a7e9-452e-be4b-9d1658a9f931"/>
+	<column name="AB_ATTRIBUTE_ID" value="cd90b9e3-e663-4248-b9ed-4e25ed330c58"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="4e5e648a-c468-49bb-9ec3-0199ae308045"/>
+	<column name="AB_ATTRIBUTE_ID" value="7abdc3a7-f46b-4021-b695-7fde6b21c6a4"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="2dcc2277-4e49-4232-a435-2c1b233bf9f2"/>
+	<column name="AB_ATTRIBUTE_ID" value="44d53f3a-a8cd-4e79-bc09-a6e17d678e7e"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="4de9d31f-82a4-4598-85ae-de0b8ce5590d"/>
+	<column name="AB_ATTRIBUTE_ID" value="3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="2c1af7b9-f015-4e9e-911a-b975f077f471"/>
+	<column name="AB_ATTRIBUTE_ID" value="3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="7d936ff2-41d9-47c6-9145-d165c8b70fe7"/>
+	<column name="AB_ATTRIBUTE_ID" value="292fae38-6557-466d-8843-3b1b4a1f6599"/>
+	<column name="OBJECT_TYPE" value="Organisation"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="5f0274a2-6425-4258-9f1f-a510ca6b5861"/>
+	<column name="AB_ATTRIBUTE_ID" value="292fae38-6557-466d-8843-3b1b4a1f6599"/>
+	<column name="OBJECT_TYPE" value="Person"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="1f269307-9900-44e7-b575-0412f0ac2908"/>
+	<column name="AB_ATTRIBUTE_ID" value="e857f9ee-fb27-4507-8381-46ba0a181cef"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="3721b0c0-93e0-4c3e-911b-5a30a46f62d9"/>
+	<column name="AB_ATTRIBUTE_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="9b23c42d-aff1-40e4-9253-a8eb42ffbdc7"/>
+	<column name="AB_ATTRIBUTE_ID" value="83e627b7-39da-4519-8023-ed384d3a0a42"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="692a0346-58ca-4c26-ade9-89d496fb3eb2"/>
+	<column name="AB_ATTRIBUTE_ID" value="1d4c071b-237e-4a11-abff-0acaeaf6f8b1"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="926c93ac-7b5e-49dd-bde8-5afe05256584"/>
+	<column name="AB_ATTRIBUTE_ID" value="f310ae37-5ec3-47c6-839b-a92fc8fcd252"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="6ee459e7-d251-4434-bd26-aff75f3153ea"/>
+	<column name="AB_ATTRIBUTE_ID" value="acaf54c3-9613-4740-aa22-4f6ebd0d6cb0"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="93566ad5-a887-4ead-80bf-d00caffcdceb"/>
+	<column name="AB_ATTRIBUTE_ID" value="bad29370-3c47-4ac7-8d5d-4e86439000ef"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="1b504a1c-7f0b-4acd-8247-35e696468365"/>
+	<column name="AB_ATTRIBUTE_ID" value="e8999504-5851-4934-a3f1-fb4b513d41e9"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="931958f6-efaf-4da2-89b1-92f844787094"/>
+	<column name="AB_ATTRIBUTE_ID" value="28fd7a4b-72d8-40ff-a893-a9479abcf19e"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="c125401f-ed45-4b07-8e87-3f2e20ddb86d"/>
+	<column name="AB_ATTRIBUTE_ID" value="ff84c147-27c7-4698-83ff-0e25b1d33851"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="278356bb-a558-4049-bf84-b529b6e7d0ff"/>
+	<column name="AB_ATTRIBUTE_ID" value="d637fc6c-9452-4498-8379-ec71d946cbab"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="fff6be17-2fb6-4159-b2ca-0409f7f0640e"/>
+	<column name="AB_ATTRIBUTE_ID" value="6bdb658c-94bc-4e68-aefb-a38483ee68b1"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="78b09c7a-c313-49db-bb4d-8f71709caf0b"/>
+	<column name="AB_ATTRIBUTE_ID" value="3e5736c4-93ff-4471-96f5-48bb34ab53d2"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
+<insert tableName="AB_ATTRIBUTEUSAGE">
+	<column name="AB_ATTRIBUTEUSAGEID" value="404278ec-6e1b-42d7-bbcc-00fd4a1b1db7"/>
+	<column name="AB_ATTRIBUTE_ID" value="3f119858-9d69-4903-a572-d286be151f73"/>
+	<column name="OBJECT_TYPE" value="Employee"/>
+</insert>
 <rollback>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="3234f4e2-0ee7-4782-9b10-c953b7b1be29"/>
+	</whereParams>
+</delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
@@ -293,229 +412,361 @@
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="5b9d5f38-4486-4586-8de0-9c607d51e698"/>
+		<param value="9216c562-b361-4a9d-be60-a6fdf9bdc07c"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="9216c562-b361-4a9d-be60-a6fdf9bdc07c"/>
+		<param value="f06dd320-4757-4261-aace-cb827a313d28"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="f06dd320-4757-4261-aace-cb827a313d28"/>
+		<param value="6ad188dc-5e76-467a-9bc3-8c63f50862ae"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="8adfbc93-2daa-4e6b-a3ce-76110b46e458"/>
+		<param value="c32d3322-5ff6-400a-82b6-4f8524ec7f6b"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="6ad188dc-5e76-467a-9bc3-8c63f50862ae"/>
+		<param value="e744c324-27ca-4d91-bf57-c487a904d8d6"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="31b6b6f1-b980-4b14-a382-a718be560009"/>
+		<param value="e5ccaa2e-1cae-4ac8-b76c-5c06eac0e53d"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="c32d3322-5ff6-400a-82b6-4f8524ec7f6b"/>
+		<param value="9e9829fe-880d-4b65-b729-34a99b37c5bf"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="e744c324-27ca-4d91-bf57-c487a904d8d6"/>
+		<param value="86d385a6-f97f-4868-a65a-9b60940886f0"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="e5ccaa2e-1cae-4ac8-b76c-5c06eac0e53d"/>
+		<param value="0766ff88-304d-41a7-8224-642a0aee5587"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="9e9829fe-880d-4b65-b729-34a99b37c5bf"/>
+		<param value="06afbdb4-a9e1-493d-b45e-c14e114a9cc7"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="86d385a6-f97f-4868-a65a-9b60940886f0"/>
+		<param value="d31efbea-3583-4772-9b5b-b900ab88c9a3"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="89be2b44-2766-4dea-9a73-725b84a20d6d"/>
+		<param value="e79d1096-a2e0-4c4f-acca-2f5976699dcd"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="0766ff88-304d-41a7-8224-642a0aee5587"/>
+		<param value="37855ddd-c5cb-4692-86a5-3a94aae7c455"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="ef63620d-f247-4ca0-bd92-9efa0b14676e"/>
+		<param value="97dce2df-5757-4a2e-89a1-60a9a88d181c"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="512ef5be-3381-42ac-860a-b1fbb9be665b"/>
+		<param value="66cac4bb-6dd9-4ddd-b329-14d4542bfd2e"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="dbb70409-43b2-4a94-b7f7-bbb4e4ba101d"/>
+		<param value="05576033-1bee-4547-ab82-fdfcdd039642"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="f579e0d5-42f4-4682-99b5-358e06ffe4a1"/>
+		<param value="7c0f32be-d3f5-48be-8b7e-a80eb6ade28d"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="06afbdb4-a9e1-493d-b45e-c14e114a9cc7"/>
+		<param value="4ff67f07-1aa7-47d4-8e5f-c4860793085a"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="d31efbea-3583-4772-9b5b-b900ab88c9a3"/>
+		<param value="8593dbe5-617a-4f09-a789-02b54157b1d3"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="e79d1096-a2e0-4c4f-acca-2f5976699dcd"/>
+		<param value="96d0c724-a00a-4d04-ad44-6a4014318e5a"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="9a145e7f-bb66-4541-bb99-28c2dd944f3d"/>
+		<param value="755239d0-7fe3-46bc-8ec4-923977148455"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="37855ddd-c5cb-4692-86a5-3a94aae7c455"/>
+		<param value="4d649c71-ba74-4ee1-ba73-6155327190d4"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="fade7115-40fb-41a2-8f71-dbb6905176e9"/>
+		<param value="2d2c7f0f-29aa-42e8-88f5-b6234d52e349"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="97dce2df-5757-4a2e-89a1-60a9a88d181c"/>
+		<param value="be7d0f5c-8941-4b3d-b128-bab67e1d609b"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="66cac4bb-6dd9-4ddd-b329-14d4542bfd2e"/>
+		<param value="44398121-8b60-41ff-a657-84b2b5c1e034"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="05576033-1bee-4547-ab82-fdfcdd039642"/>
+		<param value="8998c3b4-4eb8-4885-a290-3915f7e115a4"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="6fd80f33-6d9a-4b95-b420-c3c5b249caf9"/>
+		<param value="219ea36e-d350-4ea9-9af0-9f396464e138"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="7c0f32be-d3f5-48be-8b7e-a80eb6ade28d"/>
+		<param value="118a4133-c604-4c91-b1d5-13769d2c2bfb"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="4ff67f07-1aa7-47d4-8e5f-c4860793085a"/>
+		<param value="d72e9c6d-ad1d-419c-9794-b044c69f9c22"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="8593dbe5-617a-4f09-a789-02b54157b1d3"/>
+		<param value="e04d728d-f920-4e38-a8eb-258789d5c387"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="96d0c724-a00a-4d04-ad44-6a4014318e5a"/>
+		<param value="eedcc2e4-6af2-42f9-ab48-379d0188d5d8"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="ebb3b2a2-0fd2-4307-8f21-c118e7ad7b8e"/>
+		<param value="f10f8bd6-1bbd-4970-a41d-af027c063cfc"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="755239d0-7fe3-46bc-8ec4-923977148455"/>
+		<param value="3ab3fec6-229e-430e-b92c-d4f06be3829d"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="4d649c71-ba74-4ee1-ba73-6155327190d4"/>
+		<param value="5c357e7d-68f7-4408-8b60-36f8a029db28"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="0826cf13-f379-417d-9fed-302fe44a618e"/>
+		<param value="9635f83e-6714-4ede-ab07-0f8180548d56"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="2d2c7f0f-29aa-42e8-88f5-b6234d52e349"/>
+		<param value="3eb17fc4-94ea-468b-b2bb-0f59101407c4"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="be7d0f5c-8941-4b3d-b128-bab67e1d609b"/>
+		<param value="5fcdb4a4-5b63-4379-a839-319701612438"/>
 	</whereParams>
 </delete>
 <delete tableName="AB_ATTRIBUTEUSAGE">
 	<where>AB_ATTRIBUTEUSAGEID = ?</where>
 	<whereParams>
-		<param value="44398121-8b60-41ff-a657-84b2b5c1e034"/>
+		<param value="d3d2d6ba-5b4f-4f8a-95c2-6c9abc74a9d6"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="b0f42fce-45e4-47e7-9534-534d3c762c81"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="b41518a1-a7e9-452e-be4b-9d1658a9f931"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="4e5e648a-c468-49bb-9ec3-0199ae308045"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="2dcc2277-4e49-4232-a435-2c1b233bf9f2"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="4de9d31f-82a4-4598-85ae-de0b8ce5590d"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="2c1af7b9-f015-4e9e-911a-b975f077f471"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="7d936ff2-41d9-47c6-9145-d165c8b70fe7"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="5f0274a2-6425-4258-9f1f-a510ca6b5861"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="1f269307-9900-44e7-b575-0412f0ac2908"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="3721b0c0-93e0-4c3e-911b-5a30a46f62d9"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="9b23c42d-aff1-40e4-9253-a8eb42ffbdc7"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="692a0346-58ca-4c26-ade9-89d496fb3eb2"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="926c93ac-7b5e-49dd-bde8-5afe05256584"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="6ee459e7-d251-4434-bd26-aff75f3153ea"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="93566ad5-a887-4ead-80bf-d00caffcdceb"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="1b504a1c-7f0b-4acd-8247-35e696468365"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="931958f6-efaf-4da2-89b1-92f844787094"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="c125401f-ed45-4b07-8e87-3f2e20ddb86d"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="278356bb-a558-4049-bf84-b529b6e7d0ff"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="fff6be17-2fb6-4159-b2ca-0409f7f0640e"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="78b09c7a-c313-49db-bb4d-8f71709caf0b"/>
+	</whereParams>
+</delete>
+<delete tableName="AB_ATTRIBUTEUSAGE">
+	<where>AB_ATTRIBUTEUSAGEID = ?</where>
+	<whereParams>
+		<param value="04278ec-6e1b-42d7-bbcc-00fd4a1b1db7"/>
 	</whereParams>
 </delete>
 </rollback>
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_contract/CONTRACT_1000.xml b/.liquibase/Data_alias/basic/2019.2/data/example_contract/CONTRACT_1000.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_contract/CONTRACT_1000.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_contract/CONTRACT_1000.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_contract/CONTRACT_1001.xml b/.liquibase/Data_alias/basic/2019.2/data/example_contract/CONTRACT_1001.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_contract/CONTRACT_1001.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_contract/CONTRACT_1001.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_contract/CONTRACT_1002.xml b/.liquibase/Data_alias/basic/2019.2/data/example_contract/CONTRACT_1002.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_contract/CONTRACT_1002.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_contract/CONTRACT_1002.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_contract/CONTRACT_1003.xml b/.liquibase/Data_alias/basic/2019.2/data/example_contract/CONTRACT_1003.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_contract/CONTRACT_1003.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_contract/CONTRACT_1003.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_contract/CONTRACT_1004.xml b/.liquibase/Data_alias/basic/2019.2/data/example_contract/CONTRACT_1004.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_contract/CONTRACT_1004.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_contract/CONTRACT_1004.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_offer/OFFER_1000.xml b/.liquibase/Data_alias/basic/2019.2/data/example_offer/OFFER_1000.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_offer/OFFER_1000.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_offer/OFFER_1000.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_offer/OFFER_1001.xml b/.liquibase/Data_alias/basic/2019.2/data/example_offer/OFFER_1001.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_offer/OFFER_1001.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_offer/OFFER_1001.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_offer/OFFER_1002.xml b/.liquibase/Data_alias/basic/2019.2/data/example_offer/OFFER_1002.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_offer/OFFER_1002.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_offer/OFFER_1002.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_offer/OFFER_1003.xml b/.liquibase/Data_alias/basic/2019.2/data/example_offer/OFFER_1003.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_offer/OFFER_1003.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_offer/OFFER_1003.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_offer/OFFER_1004.xml b/.liquibase/Data_alias/basic/2019.2/data/example_offer/OFFER_1004.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_offer/OFFER_1004.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_offer/OFFER_1004.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_gfk.xml b/.liquibase/Data_alias/basic/2019.2/data/example_organisation/ORGANISATION_gfk.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_gfk.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_organisation/ORGANISATION_gfk.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_kaeltetechnik.xml b/.liquibase/Data_alias/basic/2019.2/data/example_organisation/ORGANISATION_kaeltetechnik.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_kaeltetechnik.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_organisation/ORGANISATION_kaeltetechnik.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_lichtenstein.xml b/.liquibase/Data_alias/basic/2019.2/data/example_organisation/ORGANISATION_lichtenstein.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_lichtenstein.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_organisation/ORGANISATION_lichtenstein.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_mnf.xml b/.liquibase/Data_alias/basic/2019.2/data/example_organisation/ORGANISATION_mnf.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_mnf.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_organisation/ORGANISATION_mnf.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_pichelmaier.xml b/.liquibase/Data_alias/basic/2019.2/data/example_organisation/ORGANISATION_pichelmaier.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_organisation/ORGANISATION_pichelmaier.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_organisation/ORGANISATION_pichelmaier.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_gruener.xml b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_gruener.xml
similarity index 88%
rename from others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_gruener.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_gruener.xml
index 4c56d28a9fe6ffa708e17108b8a9e735ab4c999b..3d748a734c6d1c673e12d7edc2ef9afe85c11aa8 100644
--- a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_gruener.xml
+++ b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_gruener.xml
@@ -2,7 +2,7 @@
 <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="m.escher" id="efc45d2-a40d-49e0-a24c-afab6095d1cb">
 	<insert tableName="PERSON">
-		<column name="PERSONID" value="73d732ce-e7f5-11e8-9f32-f2801f1b9fd1"/>
+		<column name="PERSONID" value="7c1efe4c-cc73-4e95-bdf0-208a3ff699b5"/>
             <column name="FIRSTNAME" value="Jerome"/>
             <column name="MIDDLENAME"/>
             <column name="LASTNAME" value="Grüner"/>
@@ -13,7 +13,7 @@
 	<insert tableName="CONTACT">
                 <column name="RELATIONSHIP" valueNumeric="1"/>
                 <column name="LANGUAGE" value="deu"/>
-		<column name="PERSON_ID" value="73d732ce-e7f5-11e8-9f32-f2801f1b9fd1"/>
+		<column name="PERSON_ID" value="7c1efe4c-cc73-4e95-bdf0-208a3ff699b5"/>
 		<column name="CONTACTID" value="73d73404-e7f5-11e8-9f32-f2801f1b9fd1"/>
 		<column name="ORGANISATION_ID" value="0"/>
 		<column name="STATUS" value="BSIC0rel-stat-actv-ae03-b6b04430e90b"/>
@@ -28,7 +28,7 @@
 		<delete tableName="PERSON">
 			<where>PERSONID = ?</where>
 			<whereParams>
-				<param value="73d732ce-e7f5-11e8-9f32-f2801f1b9fd1" />
+				<param value="7c1efe4c-cc73-4e95-bdf0-208a3ff699b5" />
 			</whereParams>
 		</delete>
 	</rollback>
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_kanzler.xml b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_kanzler.xml
similarity index 88%
rename from others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_kanzler.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_kanzler.xml
index 8b82284ee002bdc39792f40c57c34ec6e7f5e9d6..6eade59392e5f2120e1405d4e5d74cffa4bf68b6 100644
--- a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_kanzler.xml
+++ b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_kanzler.xml
@@ -2,7 +2,7 @@
 <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="m.escher" id="efc45d2-a40d-49e0-a24c-afab6095d1cb">
 	<insert tableName="PERSON">
-		<column name="PERSONID" value="73d7306c-e7f5-11e8-9f32-f2801f1b9fd1"/>
+		<column name="PERSONID" value="4a55726c-4ca6-43cb-9d3f-8e55d97b7aaf"/>
         <column name="FIRSTNAME" value="Ludwig"/>
         <column name="MIDDLENAME"/>
         <column name="LASTNAME" value="Kanzler"/>
@@ -13,7 +13,7 @@
 	<insert tableName="CONTACT">
                 <column name="RELATIONSHIP" valueNumeric="1"/>
                 <column name="LANGUAGE" value="deu"/>
-		<column name="PERSON_ID" value="73d7306c-e7f5-11e8-9f32-f2801f1b9fd1"/>
+		<column name="PERSON_ID" value="4a55726c-4ca6-43cb-9d3f-8e55d97b7aaf"/>
 		<column name="CONTACTID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/>
 		<column name="ORGANISATION_ID" value="0"/>
 		<column name="STATUS" value="BSIC0rel-stat-actv-ae03-b6b04430e90b"/>
@@ -28,7 +28,7 @@
 		<delete tableName="PERSON">
 			<where>PERSONID = ?</where>
 			<whereParams>
-				<param value="73d7306c-e7f5-11e8-9f32-f2801f1b9fd1" />
+				<param value="4a55726c-4ca6-43cb-9d3f-8e55d97b7aaf" />
 			</whereParams>
 		</delete>
 	</rollback>
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_leicht.xml b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_leicht.xml
similarity index 83%
rename from others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_leicht.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_leicht.xml
index 286d335285d3ba16b61bbc1137c9686c95e6842a..d14a4606b8a5cad89c9dff0ab250f2b61569d7f4 100644
--- a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_leicht.xml
+++ b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_leicht.xml
@@ -2,7 +2,7 @@
 <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="m.escher" id="efc45d2-a40d-49e0-a24c-afab6095d1cb">
     <insert tableName="PERSON">
-        <column name="PERSONID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/>
+        <column name="PERSONID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
         <column name="FIRSTNAME" value="Birgit"/>
         <column name="MIDDLENAME"/>
         <column name="LASTNAME" value="Leicht"/>
@@ -13,8 +13,8 @@
     <insert tableName="CONTACT">
         <column name="RELATIONSHIP" valueNumeric="1"/>
         <column name="LANGUAGE" value="deu"/>
-        <column name="PERSON_ID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/>
-        <column name="CONTACTID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/>
+        <column name="PERSON_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
+        <column name="CONTACTID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
         <column name="ORGANISATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
         <column name="STATUS" value="BSIC0rel-stat-actv-ae03-b6b04430e90b"/>
     </insert>
@@ -23,7 +23,7 @@
         <column name="ADDR_TYPE" valueNumeric="2"/>
         <column name="CITY" value="Landshut"/>
         <column name="COUNTRY" value="DE"/>
-        <column name="CONTACT_ID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/>
+        <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
         <column name="ADDRIDENTIFIER" value=""/>
         <column name="REGION" value="Niederbayern"/>
         <column name="ADDRESSID" value="ce990566-3b86-48fe-bd0c-1167142e584b"/>
@@ -38,7 +38,7 @@
         <column name="ADDR_TYPE" valueNumeric="3"/>
         <column name="CITY" value="Landshut"/>
         <column name="COUNTRY" value="DE"/>
-        <column name="CONTACT_ID" value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1"/>
+        <column name="CONTACT_ID" value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87"/>
         <column name="ADDRIDENTIFIER" value=""/>
         <column name="REGION" value="Niederbayern"/>
         <column name="ADDRESSID" value="43b8aea1-2444-448f-87c5-f12fe1ef4ca0"/>
@@ -52,19 +52,19 @@
         <delete tableName="CONTACT">
             <where>CONTACTID = ?</where>
             <whereParams>
-                <param value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1" />
+                <param value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
             </whereParams>
         </delete>
         <delete tableName="PERSON">
             <where>PERSONID = ?</where>
             <whereParams>
-                <param value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1" />
+                <param value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
             </whereParams>
         </delete>
         <delete tableName="ADDRESS">
             <where>CONTACT_ID = ?</where>
             <whereParams>
-                <param value="73d72f18-e7f5-11e8-9f32-f2801f1b9fd1" />
+                <param value="d5a2dc64-e503-4aed-a0c6-d54f49b8db87" />
             </whereParams>
         </delete>
     </rollback>
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_lustig.xml b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_lustig.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_lustig.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_lustig.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_muller.xml b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_muller.xml
similarity index 81%
rename from others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_muller.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_muller.xml
index 92325841d488cb250e60837236ed62834513e74e..a647b15464c1a77feaf6e539c5b0c6b9a6eec364 100644
--- a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_muller.xml
+++ b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_muller.xml
@@ -2,7 +2,7 @@
 <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="m.escher" id="efc45d2-a40d-49e0-a24c-afab6095d1cb">
 	<insert tableName="PERSON">
-		<column name="PERSONID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/>
+		<column name="PERSONID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/>
         <column name="FIRSTNAME" value="Franz"/>
         <column name="MIDDLENAME"/>
         <column name="LASTNAME" value="Müller"/>
@@ -13,8 +13,8 @@
 	<insert tableName="CONTACT">
                 <column name="RELATIONSHIP" valueNumeric="1"/>
                 <column name="LANGUAGE" value="deu"/>
-		<column name="CONTACTID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/>
-		<column name="PERSON_ID" value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1"/>
+		<column name="CONTACTID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/>
+		<column name="PERSON_ID" value="f0fb7676-8183-4bc7-beca-ca32c1e11c10"/>
 		<column name="ORGANISATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
 		<column name="STATUS" value="BSIC0rel-stat-actv-ae03-b6b04430e90b"/>
 	</insert>
@@ -22,13 +22,13 @@
 		<delete tableName="CONTACT">
 			<where>CONTACTID = ?</where>
 			<whereParams>
-				<param value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1" />
+				<param value="f0fb7676-8183-4bc7-beca-ca32c1e11c10" />
 			</whereParams>
 		</delete>
 		<delete tableName="PERSON">
 			<where>PERSONID = ?</where>
 			<whereParams>
-				<param value="73d72702-e7f5-11e8-9f32-f2801f1b9fd1" />
+				<param value="f0fb7676-8183-4bc7-beca-ca32c1e11c10" />
 			</whereParams>
 		</delete>
 	</rollback>
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_obermeier.xml b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_obermeier.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_obermeier.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_obermeier.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_pfiffig.xml b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_pfiffig.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_pfiffig.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_pfiffig.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_smith.xml b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_smith.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_smith.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_smith.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_sommer.xml b/.liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_sommer.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_person/PERSON_sommer.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_person/PERSON_sommer.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_product/PRODUCT_42154311.xml b/.liquibase/Data_alias/basic/2019.2/data/example_product/PRODUCT_42154311.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_product/PRODUCT_42154311.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_product/PRODUCT_42154311.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1000.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1000.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1000.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1000.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1001.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1001.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1001.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1001.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1002.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1002.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1002.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1002.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1003.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1003.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1003.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1003.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1004.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1004.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1004.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1004.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1005.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1005.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1005.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1005.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1006.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1006.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1006.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1006.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1007.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1007.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1007.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1007.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1008.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1008.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1008.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1008.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1009.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1009.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1009.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesorder/SALESORDER_1009.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesproject/SALESPROJECT_gfk.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesproject/SALESPROJECT_gfk.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesproject/SALESPROJECT_gfk.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesproject/SALESPROJECT_gfk.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_salesproject/SALESPROJECT_jkl.xml b/.liquibase/Data_alias/basic/2019.2/data/example_salesproject/SALESPROJECT_jkl.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_salesproject/SALESPROJECT_jkl.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_salesproject/SALESPROJECT_jkl.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/data/example_task/base.xml b/.liquibase/Data_alias/basic/2019.2/data/example_task/base.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/data/example_task/base.xml
rename to .liquibase/Data_alias/basic/2019.2/data/example_task/base.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/drop_contact_id_sp_forecast.xml b/.liquibase/Data_alias/basic/2019.2/drop_contact_id_sp_forecast.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/drop_contact_id_sp_forecast.xml
rename to .liquibase/Data_alias/basic/2019.2/drop_contact_id_sp_forecast.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/drop_estimation_salesproject.xml b/.liquibase/Data_alias/basic/2019.2/drop_estimation_salesproject.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/drop_estimation_salesproject.xml
rename to .liquibase/Data_alias/basic/2019.2/drop_estimation_salesproject.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/drop_pricePolitics-weakness-strength.xml b/.liquibase/Data_alias/basic/2019.2/drop_pricePolitics-weakness-strength.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/drop_pricePolitics-weakness-strength.xml
rename to .liquibase/Data_alias/basic/2019.2/drop_pricePolitics-weakness-strength.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/fix_sp_phases.xml b/.liquibase/Data_alias/basic/2019.2/fix_sp_phases.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/fix_sp_phases.xml
rename to .liquibase/Data_alias/basic/2019.2/fix_sp_phases.xml
diff --git a/.liquibase/Data_alias/basic/2019.2/indicesRefactor/Activity.xml b/.liquibase/Data_alias/basic/2019.2/indicesRefactor/Activity.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c25802bbc3f40bb293a814d354247c1424812d34
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/indicesRefactor/Activity.xml
@@ -0,0 +1,14 @@
+<?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.goderbauer" id="9b4644f6-3060-4791-b9f5-684939b78dcb">
+		<createIndex indexName="IDX_ACTIVITY_PARENT" tableName="ACTIVITY">
+			<column name="PARENT_CONTEXT"/>
+			<column name="PARENT_ID"/>
+		</createIndex>
+		<createIndex indexName="IDX_ACTIVITYLINK_ACTIVITY_ID" tableName="ACTIVITYLINK">
+			<column name="ACTIVITY_ID"/>
+		</createIndex>
+	</changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/indicesRefactor/ContactManagement.xml b/.liquibase/Data_alias/basic/2019.2/indicesRefactor/ContactManagement.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d5febea39b249fceb6f2e0e6612585a5847414a9
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/indicesRefactor/ContactManagement.xml
@@ -0,0 +1,23 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" 
+	xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" 
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+	<changeSet author="j.goderbauer" id="0f2ec94d-75d0-42d9-8026-d70197f0ded4">
+		<createIndex indexName="IDX_ADDRESS_CONTACT_ID" tableName="ADDRESS">
+			<column name="CONTACT_ID"/>
+		</createIndex>
+		<createIndex indexName="IDX_CONTACT_ANY_CONTACT" tableName="CONTACT">
+			<column name="PERSON_ID"/>
+			<column name="ORGANISATION_ID"/>
+		</createIndex>
+		<createIndex indexName="IDX_CONTACT_ADDRESS_ID" tableName="CONTACT">
+			<column name="ADDRESS_ID"/>
+		</createIndex>
+		<createIndex indexName="IDX_COMMUNICATION_CONTACT_ID" tableName="COMMUNICATION">
+			<column name="CONTACT_ID"/>
+		</createIndex>
+		<createIndex indexName="IDX_COMMUNICATION_MEDIUM_ID" tableName="COMMUNICATION">
+			<column name="MEDIUM_ID"/>
+		</createIndex>
+	</changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/indicesRefactor/Keyword.xml b/.liquibase/Data_alias/basic/2019.2/indicesRefactor/Keyword.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6bda5489c9a6e0d9882d7f9c99d15e0ed22579bd
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/indicesRefactor/Keyword.xml
@@ -0,0 +1,18 @@
+<?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.goderbauer" id="95a53a6c-6157-4fc8-a4cb-501da22ad326">
+		<!-- the database will propably never use these indices since there are too less entries within the tables 
+		but IF there should be a lot of entries (thanks to imports or else) there are at least indices -->
+		<createIndex indexName="IDX_KWD_ENTRY_CONTAINER" tableName="AB_KEYWORD_ENTRY">
+			<column name="CONTAINER"/>
+		</createIndex>
+		<createIndex indexName="IDX_KWD_ATTR_CONTAINER" tableName="AB_KEYWORD_ATTRIBUTE">
+			<column name="CONTAINER"/>
+		</createIndex>
+		<createIndex indexName="IDX_KWD_ATTRREL_KWD_ENTRY_ID" tableName="AB_KEYWORD_ATTRIBUTERELATION">
+			<column name="AB_KEYWORD_ENTRY_ID"/>
+		</createIndex>
+	</changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/indicesRefactor/Task.xml b/.liquibase/Data_alias/basic/2019.2/indicesRefactor/Task.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6b5f7c38c4e82f30116968adadf5aebeca75bd8
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/indicesRefactor/Task.xml
@@ -0,0 +1,20 @@
+<?xml version="1.1" encoding="UTF-8" standalone="no"?>
+<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" 
+	xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" 
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
+	<changeSet author="j.goderbauer" id="038575fd-cbf2-452a-8eae-0b594779cd1b">
+		<createIndex indexName="IDX_TASK_REQUESTOR_CONTACT_ID" tableName="TASK">
+			<column name="REQUESTOR_CONTACT_ID"/>
+		</createIndex>
+		<createIndex indexName="IDX_TASK_EDITOR_CONTACT_ID" tableName="TASK">
+			<column name="EDITOR_CONTACT_ID"/>
+		</createIndex>
+		<createIndex indexName="IDX_TASK_PARENT" tableName="TASK">
+			<column name="PARENT_CONTEXT"/>
+			<column name="PARENT_ID"/>
+		</createIndex>
+		<createIndex indexName="IDX_TASKLINK_TASK_ID" tableName="TASKLINK">
+			<column name="TASK_ID"/>
+		</createIndex>
+	</changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/offer_add_date_editnew_user_editnew.xml b/.liquibase/Data_alias/basic/2019.2/offer_add_date_editnew_user_editnew.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a55fa56091c98f250fa9c868f0d2648d572c2f9b
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/offer_add_date_editnew_user_editnew.xml
@@ -0,0 +1,29 @@
+<?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="d.buechler" id="c7c98743-8939-4b32-b04d-b587ede752dd">
+        <addColumn tableName="OFFER">
+            <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+        
+        <update
+            tableName="OFFER">
+        <column name="USER_NEW" type="NVARCHAR(50)" value="Admin"/>
+        <column name="DATE_NEW" type="DATETIME" valueComputed="current_datetime"/>
+        </update>
+        
+        <addNotNullConstraint
+            columnDataType="NVARCHAR(50)"
+            columnName="USER_NEW"
+            tableName="OFFER"/>
+        
+        <addNotNullConstraint
+            columnDataType="DATETIME"
+            columnName="DATE_NEW"
+            tableName="OFFER"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/organisation_add_date_editnew_user_editnew.xml b/.liquibase/Data_alias/basic/2019.2/organisation_add_date_editnew_user_editnew.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7a9b29f0e0571a5ffa7090cf2984c6118c725c6a
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/organisation_add_date_editnew_user_editnew.xml
@@ -0,0 +1,29 @@
+<?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="d.buechler" id="6a32f69d-9100-4657-8380-575c9dbe41ff">
+        <addColumn tableName="ORGANISATION">
+            <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+        
+        <update
+            tableName="ORGANISATION">
+        <column name="USER_NEW" type="NVARCHAR(50)" value="Admin"/>
+        <column name="DATE_NEW" type="DATETIME" valueComputed="current_datetime"/>
+        </update>
+        
+        <addNotNullConstraint
+            columnDataType="NVARCHAR(50)"
+            columnName="USER_NEW"
+            tableName="ORGANISATION"/>
+        
+        <addNotNullConstraint
+            columnDataType="DATETIME"
+            columnName="DATE_NEW"
+            tableName="ORGANISATION"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/person_add_date_editnew_user_editnew.xml b/.liquibase/Data_alias/basic/2019.2/person_add_date_editnew_user_editnew.xml
new file mode 100644
index 0000000000000000000000000000000000000000..52d41d55eb7655d04a149a5967258494b03a3650
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/person_add_date_editnew_user_editnew.xml
@@ -0,0 +1,29 @@
+<?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="d.buechler" id="02de3b65-44a3-4dbf-ace6-33dfef0b998c">
+        <addColumn tableName="PERSON">
+            <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+        
+        <update
+            tableName="PERSON">
+        <column name="USER_NEW" type="NVARCHAR(50)" value="Admin"/>
+        <column name="DATE_NEW" type="DATETIME" valueComputed="current_datetime"/>
+        </update>
+        
+        <addNotNullConstraint
+            columnDataType="NVARCHAR(50)"
+            columnName="USER_NEW"
+            tableName="PERSON"/>
+        
+        <addNotNullConstraint
+            columnDataType="DATETIME"
+            columnName="DATE_NEW"
+            tableName="PERSON"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/.liquibase/Data_alias/basic/2019.2/product_add_date_editnew_user_editnew.xml b/.liquibase/Data_alias/basic/2019.2/product_add_date_editnew_user_editnew.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6b7003875fe8ba96f6a8b2d84f7a336dd562f2aa
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/product_add_date_editnew_user_editnew.xml
@@ -0,0 +1,29 @@
+<?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="d.buechler" id="7f4376c0-2ee1-444d-9101-57b6e851b0ba">
+        <addColumn tableName="PRODUCT">
+            <column name="USER_NEW" type="NVARCHAR(50)" />
+            <column name="DATE_NEW" type="DATETIME" />
+            <column name="USER_EDIT" type="NVARCHAR(50)" />
+            <column name="DATE_EDIT" type="DATETIME" />
+        </addColumn>
+        
+        <update
+            tableName="PRODUCT">
+        <column name="USER_NEW" type="NVARCHAR(50)" value="Admin"/>
+        <column name="DATE_NEW" type="DATETIME" valueComputed="current_datetime"/>
+        </update>
+        
+        <addNotNullConstraint
+            columnDataType="NVARCHAR(50)"
+            columnName="USER_NEW"
+            tableName="PRODUCT"/>
+        
+        <addNotNullConstraint
+            columnDataType="DATETIME"
+            columnName="DATE_NEW"
+            tableName="PRODUCT"/>
+        
+    </changeSet>
+</databaseChangeLog>
\ No newline at end of file
diff --git a/others/db_changes/data_alias/basic/2019.2/removeTaskCode.xml b/.liquibase/Data_alias/basic/2019.2/removeTaskCode.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/removeTaskCode.xml
rename to .liquibase/Data_alias/basic/2019.2/removeTaskCode.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/task_add_parent.xml b/.liquibase/Data_alias/basic/2019.2/task_add_parent.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/task_add_parent.xml
rename to .liquibase/Data_alias/basic/2019.2/task_add_parent.xml
diff --git a/.liquibase/Data_alias/basic/2019.2/update_Keyword_Essentials.xml b/.liquibase/Data_alias/basic/2019.2/update_Keyword_Essentials.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f9e3cb33a23bef6fd498164e20d1bd0ac1cbc16f
--- /dev/null
+++ b/.liquibase/Data_alias/basic/2019.2/update_Keyword_Essentials.xml
@@ -0,0 +1,17 @@
+<?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="a.loreth" id="b1629529-92ab-437d-b864-0fd68fe5ceab">
+    <update tableName="AB_KEYWORD_ENTRY">
+      <column name="ISESSENTIAL" valueNumeric="1" />
+      <where>KEYID in ('BSICacti-0dir-0inc-b8a3-f43e2c73df65', 'BSICacti-0dir-outg-8337-909b0f93143a', 'BSIC0rel-stat-actv-ae03-b6b04430e90b', '21bc4d20-1a87-4247-8f7c-8d3a09631850', '4dee8727-8299-422e-ae41-6cdf9de2dfd7', '02553fc7-4611-4914-8ff5-0b7c4e7531c9', '09072b59-d12f-469b-acbd-18a28232ff70', 'ec92271b-eac2-4ec2-be24-ab4abde7e939')</where>
+    </update>
+
+
+    <rollback>
+      <update tableName="AB_KEYWORD_ENTRY">
+        <column name="ISESSENTIAL" valueNumeric="0" />
+        <where>KEYID in ('BSICacti-0dir-0inc-b8a3-f43e2c73df65', 'BSICacti-0dir-outg-8337-909b0f93143a', 'BSIC0rel-stat-actv-ae03-b6b04430e90b', '21bc4d20-1a87-4247-8f7c-8d3a09631850', '4dee8727-8299-422e-ae41-6cdf9de2dfd7', '02553fc7-4611-4914-8ff5-0b7c4e7531c9', '09072b59-d12f-469b-acbd-18a28232ff70', 'ec92271b-eac2-4ec2-be24-ab4abde7e939')</where>
+      </update>
+    </rollback>
+  </changeSet>
+</databaseChangeLog>
diff --git a/others/db_changes/data_alias/basic/2019.2/update_TaskType_Task.xml b/.liquibase/Data_alias/basic/2019.2/update_TaskType_Task.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/update_TaskType_Task.xml
rename to .liquibase/Data_alias/basic/2019.2/update_TaskType_Task.xml
diff --git a/others/db_changes/data_alias/basic/2019.2/update_pricelist_keyword.xml b/.liquibase/Data_alias/basic/2019.2/update_pricelist_keyword.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/2019.2/update_pricelist_keyword.xml
rename to .liquibase/Data_alias/basic/2019.2/update_pricelist_keyword.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AD.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AD.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AD.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AD.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AF.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AF.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AF.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AF.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AI.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AI.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AI.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AI.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AL.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AL.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AL.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AL.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AQ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AQ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AQ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AQ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AS.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AS.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AS.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AS.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AT.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AT.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AT.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AT.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AU.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AU.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AU.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AU.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AW.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AW.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AW.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AW.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AX.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AX.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AX.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AX.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AZ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AZ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AZ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/AZ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BB.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BB.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BB.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BB.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BD.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BD.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BD.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BD.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BF.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BF.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BF.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BF.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BH.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BH.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BH.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BH.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BI.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BI.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BI.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BI.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BJ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BJ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BJ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BJ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BL.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BL.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BL.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BL.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BN.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BN.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BN.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BN.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BQ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BQ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BQ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BQ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BS.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BS.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BS.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BS.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BT.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BT.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BT.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BT.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BV.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BV.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BV.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BV.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BW.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BW.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BW.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BW.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BY.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BY.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BY.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BY.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BZ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BZ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BZ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/BZ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CC.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CC.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CC.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CC.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CD.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CD.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CD.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CD.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CF.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CF.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CF.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CF.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CH.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CH.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CH.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CH.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CI.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CI.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CI.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CI.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CK.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CK.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CK.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CK.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CL.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CL.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CL.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CL.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CN.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CN.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CN.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CN.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CU.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CU.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CU.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CU.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CV.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CV.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CV.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CV.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CW.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CW.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CW.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CW.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CX.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CX.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CX.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CX.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CY.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CY.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CY.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CY.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CZ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CZ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CZ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/CZ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DJ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DJ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DJ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DJ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DK.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DK.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DK.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DK.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DZ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DZ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DZ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/DZ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EC.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EC.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EC.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EC.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EH.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EH.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EH.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/EH.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ER.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ER.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ER.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ER.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ES.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ES.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ES.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ES.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ET.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ET.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ET.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ET.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FI.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FI.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FI.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FI.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FJ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FJ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FJ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FJ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FK.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FK.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FK.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FK.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/FR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GB.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GB.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GB.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GB.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GD.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GD.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GD.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GD.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GF.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GF.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GF.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GF.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GH.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GH.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GH.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GH.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GI.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GI.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GI.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GI.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GL.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GL.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GL.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GL.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GN.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GN.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GN.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GN.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GP.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GP.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GP.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GP.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GQ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GQ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GQ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GQ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GS.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GS.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GS.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GS.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GT.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GT.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GT.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GT.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GU.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GU.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GU.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GU.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GW.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GW.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GW.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GW.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GY.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GY.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GY.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/GY.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HK.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HK.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HK.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HK.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HN.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HN.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HN.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HN.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HT.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HT.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HT.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HT.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HU.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HU.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HU.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/HU.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ID.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ID.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ID.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ID.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IL.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IL.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IL.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IL.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IN.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IN.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IN.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IN.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IQ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IQ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IQ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IQ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IS.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IS.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IS.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IS.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IT.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IT.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IT.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/IT.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JP.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JP.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JP.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/JP.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KH.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KH.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KH.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KH.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KI.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KI.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KI.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KI.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KN.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KN.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KN.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KN.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KP.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KP.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KP.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KP.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KW.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KW.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KW.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KW.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KY.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KY.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KY.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KY.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KZ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KZ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KZ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/KZ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LB.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LB.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LB.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LB.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LC.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LC.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LC.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LC.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LI.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LI.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LI.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LI.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LK.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LK.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LK.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LK.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LS.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LS.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LS.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LS.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LT.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LT.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LT.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LT.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LU.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LU.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LU.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LU.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LV.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LV.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LV.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LV.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LY.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LY.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LY.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/LY.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MC.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MC.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MC.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MC.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MD.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MD.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MD.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MD.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ME.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ME.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ME.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ME.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MF.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MF.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MF.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MF.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MH.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MH.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MH.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MH.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MK.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MK.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MK.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MK.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ML.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ML.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ML.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ML.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MN.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MN.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MN.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MN.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MP.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MP.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MP.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MP.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MQ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MQ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MQ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MQ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MS.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MS.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MS.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MS.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MT.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MT.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MT.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MT.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MU.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MU.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MU.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MU.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MV.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MV.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MV.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MV.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MW.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MW.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MW.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MW.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MX.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MX.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MX.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MX.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MY.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MY.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MY.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MY.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MZ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MZ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MZ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/MZ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NC.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NC.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NC.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NC.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NF.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NF.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NF.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NF.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NI.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NI.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NI.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NI.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NL.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NL.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NL.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NL.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NP.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NP.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NP.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NP.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NU.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NU.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NU.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NU.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NZ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NZ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NZ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/NZ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/OM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/OM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/OM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/OM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PF.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PF.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PF.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PF.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PH.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PH.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PH.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PH.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PK.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PK.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PK.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PK.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PL.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PL.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PL.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PL.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PN.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PN.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PN.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PN.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PS.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PS.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PS.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PS.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PT.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PT.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PT.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PT.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PW.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PW.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PW.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PW.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PY.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PY.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PY.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/PY.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/QA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/QA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/QA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/QA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RS.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RS.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RS.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RS.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RU.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RU.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RU.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RU.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RW.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RW.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RW.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/RW.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SB.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SB.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SB.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SB.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SC.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SC.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SC.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SC.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SD.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SD.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SD.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SD.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SH.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SH.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SH.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SH.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SI.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SI.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SI.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SI.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SJ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SJ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SJ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SJ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SK.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SK.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SK.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SK.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SL.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SL.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SL.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SL.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SN.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SN.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SN.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SN.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SS.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SS.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SS.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SS.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ST.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ST.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ST.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ST.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SV.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SV.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SV.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SV.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SX.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SX.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SX.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SX.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SY.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SY.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SY.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SY.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SZ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SZ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SZ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/SZ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TC.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TC.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TC.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TC.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TD.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TD.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TD.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TD.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TF.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TF.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TF.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TF.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TH.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TH.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TH.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TH.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TJ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TJ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TJ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TJ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TK.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TK.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TK.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TK.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TL.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TL.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TL.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TL.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TN.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TN.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TN.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TN.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TO.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TO.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TO.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TO.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TR.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TR.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TR.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TR.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TT.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TT.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TT.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TT.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TV.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TV.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TV.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TV.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TW.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TW.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TW.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TW.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TZ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TZ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TZ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/TZ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/US.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/US.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/US.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/US.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UY.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UY.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UY.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UY.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UZ.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UZ.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UZ.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/UZ.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VC.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VC.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VC.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VC.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VG.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VG.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VG.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VG.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VI.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VI.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VI.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VI.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VN.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VN.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VN.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VN.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VU.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VU.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VU.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/VU.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/WF.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/WF.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/WF.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/WF.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/WS.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/WS.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/WS.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/WS.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/XK.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/XK.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/XK.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/XK.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/YE.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/YE.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/YE.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/YE.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/YT.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/YT.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/YT.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/YT.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZA.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZA.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZA.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZA.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZM.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZM.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZM.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZM.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZW.svg b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZW.svg
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZW.svg
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/ChangesLobFile/blob/ZW.svg
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/init_ab_countryinfo.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/init_ab_countryinfo.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_countryinfo/init_ab_countryinfo.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_countryinfo/init_ab_countryinfo.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_attribute.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_attribute.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_attribute.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_attribute.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ActivityDirection.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ActivityDirection.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ActivityDirection.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ActivityDirection.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_AttributeType.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_AttributeType.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_AttributeType.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_AttributeType.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContactStatus.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContactStatus.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContactStatus.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContactStatus.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractPayment.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractPayment.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractPayment.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractPayment.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractStatus.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractStatus.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractStatus.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractStatus.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractType.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractType.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractType.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ContractType.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_Currency.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_Currency.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_Currency.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_Currency.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_KeywordAttributeType.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_KeywordAttributeType.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_KeywordAttributeType.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_KeywordAttributeType.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_OfferStatus.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_OfferStatus.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_OfferStatus.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_OfferStatus.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_OrganisationType.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_OrganisationType.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_OrganisationType.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_OrganisationType.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_PersonGender.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_PersonGender.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_PersonGender.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_PersonGender.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ProductGroupcode.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ProductGroupcode.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ProductGroupcode.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ProductGroupcode.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ProductPricelist.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ProductPricelist.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ProductPricelist.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_ProductPricelist.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_QuantityUnit.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_QuantityUnit.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_QuantityUnit.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_QuantityUnit.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesorderState.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesorderState.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesorderState.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesorderState.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectMemberRole.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectMemberRole.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectMemberRole.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectMemberRole.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectPricePolitics.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectPricePolitics.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectPricePolitics.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectPricePolitics.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectProbability.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectProbability.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectProbability.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectProbability.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectSource.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectSource.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectSource.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectSource.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectStrength.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectStrength.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectStrength.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectStrength.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectWeakness.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectWeakness.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectWeakness.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectWeakness.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectWonLost.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectWonLost.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectWonLost.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_SalesprojectWonLost.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_StockWarehouse.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_StockWarehouse.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_StockWarehouse.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_StockWarehouse.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_TaskStatus.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_TaskStatus.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_TaskStatus.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_TaskStatus.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_TaskType.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_TaskType.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_TaskType.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/ab_keyword_entry/init_TaskType.xml
diff --git a/others/db_changes/data_alias/basic/init/data/AditoBasic/init_ab_language.xml b/.liquibase/Data_alias/basic/init/data/AditoBasic/init_ab_language.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/data/AditoBasic/init_ab_language.xml
rename to .liquibase/Data_alias/basic/init/data/AditoBasic/init_ab_language.xml
diff --git a/.liquibase/Data_alias/basic/init/init.xml b/.liquibase/Data_alias/basic/init/init.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c4653839c7b975a5f2951845804b0ef995888eeb
--- /dev/null
+++ b/.liquibase/Data_alias/basic/init/init.xml
@@ -0,0 +1,47 @@
+<?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">
+    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_objectrelation.xml"/>
+    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_attribute.xml"/>
+    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_attributerelation.xml"/>
+    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_attributeusage.xml"/>
+    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_keyword_entry.xml"/>
+    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_keyword_attribute.xml"/>
+    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_keyword_attributerelation.xml"/>
+    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_countryinfo.xml"/>
+    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_language.xml"/>
+    
+    <include relativeToChangelogFile="true" file="struct/create_person.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_organisation.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_contact.xml"/>    
+    <include relativeToChangelogFile="true" file="struct/create_activity.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_activitylink.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_appointmentlink.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_address.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_communication.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_contract.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_product.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_prod2prod.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_productprice.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_stock.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_salesproject.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_salesproject_classification.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_salesproject_competition.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_salesproject_cycle.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_salesproject_forecast.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_salesproject_member.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_salesproject_source.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_offer.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_offeritem.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_salesorder.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_salesorderitem.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_timetracking.xml"/>
+    <include relativeToChangelogFile="true" file="struct/create_task.xml"/>
+    
+    <!--reference files for keywords:--> 
+    <include relativeToChangelogFile="true" file="data/AditoBasic/ab_keyword_entry.xml"/>
+    <include relativeToChangelogFile="true" file="data/AditoBasic/ab_keyword_attribute.xml"/>
+    <!--special case countryinfo data-->
+    <include relativeToChangelogFile="true" file="data/AditoBasic/ab_countryinfo/init_ab_countryinfo.xml"/>
+
+    <include relativeToChangelogFile="true" file="data/AditoBasic/init_ab_language.xml"/>
+</databaseChangeLog>
diff --git a/others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_attribute.xml b/.liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_attribute.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_attribute.xml
rename to .liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_attribute.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_attributerelation.xml b/.liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_attributerelation.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_attributerelation.xml
rename to .liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_attributerelation.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_attributeusage.xml b/.liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_attributeusage.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_attributeusage.xml
rename to .liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_attributeusage.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_countryinfo.xml b/.liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_countryinfo.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_countryinfo.xml
rename to .liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_countryinfo.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_keyword_attribute.xml b/.liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_keyword_attribute.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_keyword_attribute.xml
rename to .liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_keyword_attribute.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_keyword_attributerelation.xml b/.liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_keyword_attributerelation.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_keyword_attributerelation.xml
rename to .liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_keyword_attributerelation.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_keyword_entry.xml b/.liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_keyword_entry.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_keyword_entry.xml
rename to .liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_keyword_entry.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_language.xml b/.liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_language.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_language.xml
rename to .liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_language.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_objectrelation.xml b/.liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_objectrelation.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/AditoBasic/create_ab_objectrelation.xml
rename to .liquibase/Data_alias/basic/init/struct/AditoBasic/create_ab_objectrelation.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_activity.xml b/.liquibase/Data_alias/basic/init/struct/create_activity.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_activity.xml
rename to .liquibase/Data_alias/basic/init/struct/create_activity.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_activitylink.xml b/.liquibase/Data_alias/basic/init/struct/create_activitylink.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_activitylink.xml
rename to .liquibase/Data_alias/basic/init/struct/create_activitylink.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_address.xml b/.liquibase/Data_alias/basic/init/struct/create_address.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_address.xml
rename to .liquibase/Data_alias/basic/init/struct/create_address.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_appointmentlink.xml b/.liquibase/Data_alias/basic/init/struct/create_appointmentlink.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_appointmentlink.xml
rename to .liquibase/Data_alias/basic/init/struct/create_appointmentlink.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_communication.xml b/.liquibase/Data_alias/basic/init/struct/create_communication.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_communication.xml
rename to .liquibase/Data_alias/basic/init/struct/create_communication.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_contact.xml b/.liquibase/Data_alias/basic/init/struct/create_contact.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_contact.xml
rename to .liquibase/Data_alias/basic/init/struct/create_contact.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_contract.xml b/.liquibase/Data_alias/basic/init/struct/create_contract.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_contract.xml
rename to .liquibase/Data_alias/basic/init/struct/create_contract.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_offer.xml b/.liquibase/Data_alias/basic/init/struct/create_offer.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_offer.xml
rename to .liquibase/Data_alias/basic/init/struct/create_offer.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_offeritem.xml b/.liquibase/Data_alias/basic/init/struct/create_offeritem.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_offeritem.xml
rename to .liquibase/Data_alias/basic/init/struct/create_offeritem.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_organisation.xml b/.liquibase/Data_alias/basic/init/struct/create_organisation.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_organisation.xml
rename to .liquibase/Data_alias/basic/init/struct/create_organisation.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_person.xml b/.liquibase/Data_alias/basic/init/struct/create_person.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_person.xml
rename to .liquibase/Data_alias/basic/init/struct/create_person.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_prod2prod.xml b/.liquibase/Data_alias/basic/init/struct/create_prod2prod.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_prod2prod.xml
rename to .liquibase/Data_alias/basic/init/struct/create_prod2prod.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_product.xml b/.liquibase/Data_alias/basic/init/struct/create_product.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_product.xml
rename to .liquibase/Data_alias/basic/init/struct/create_product.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_productprice.xml b/.liquibase/Data_alias/basic/init/struct/create_productprice.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_productprice.xml
rename to .liquibase/Data_alias/basic/init/struct/create_productprice.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_salesorder.xml b/.liquibase/Data_alias/basic/init/struct/create_salesorder.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_salesorder.xml
rename to .liquibase/Data_alias/basic/init/struct/create_salesorder.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_salesorderitem.xml b/.liquibase/Data_alias/basic/init/struct/create_salesorderitem.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_salesorderitem.xml
rename to .liquibase/Data_alias/basic/init/struct/create_salesorderitem.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_salesproject.xml b/.liquibase/Data_alias/basic/init/struct/create_salesproject.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_salesproject.xml
rename to .liquibase/Data_alias/basic/init/struct/create_salesproject.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_salesproject_classification.xml b/.liquibase/Data_alias/basic/init/struct/create_salesproject_classification.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_salesproject_classification.xml
rename to .liquibase/Data_alias/basic/init/struct/create_salesproject_classification.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_salesproject_competition.xml b/.liquibase/Data_alias/basic/init/struct/create_salesproject_competition.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_salesproject_competition.xml
rename to .liquibase/Data_alias/basic/init/struct/create_salesproject_competition.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_salesproject_cycle.xml b/.liquibase/Data_alias/basic/init/struct/create_salesproject_cycle.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_salesproject_cycle.xml
rename to .liquibase/Data_alias/basic/init/struct/create_salesproject_cycle.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_salesproject_forecast.xml b/.liquibase/Data_alias/basic/init/struct/create_salesproject_forecast.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_salesproject_forecast.xml
rename to .liquibase/Data_alias/basic/init/struct/create_salesproject_forecast.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_salesproject_member.xml b/.liquibase/Data_alias/basic/init/struct/create_salesproject_member.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_salesproject_member.xml
rename to .liquibase/Data_alias/basic/init/struct/create_salesproject_member.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_salesproject_source.xml b/.liquibase/Data_alias/basic/init/struct/create_salesproject_source.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_salesproject_source.xml
rename to .liquibase/Data_alias/basic/init/struct/create_salesproject_source.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_stock.xml b/.liquibase/Data_alias/basic/init/struct/create_stock.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_stock.xml
rename to .liquibase/Data_alias/basic/init/struct/create_stock.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_task.xml b/.liquibase/Data_alias/basic/init/struct/create_task.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_task.xml
rename to .liquibase/Data_alias/basic/init/struct/create_task.xml
diff --git a/others/db_changes/data_alias/basic/init/struct/create_timetracking.xml b/.liquibase/Data_alias/basic/init/struct/create_timetracking.xml
similarity index 100%
rename from others/db_changes/data_alias/basic/init/struct/create_timetracking.xml
rename to .liquibase/Data_alias/basic/init/struct/create_timetracking.xml
diff --git a/others/db_changes/data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml
similarity index 100%
rename from others/db_changes/data_alias/changelog.xml
rename to .liquibase/Data_alias/changelog.xml
diff --git a/others/db_changes/system_alias/data/defaultBlob/_____configuration.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____configuration.xml
similarity index 100%
rename from others/db_changes/system_alias/data/defaultBlob/_____configuration.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____configuration.xml
diff --git a/others/db_changes/system_alias/data/defaultBlob/_____system_sysdb_version.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____system_sysdb_version.xml
similarity index 100%
rename from others/db_changes/system_alias/data/defaultBlob/_____system_sysdb_version.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/_____system_sysdb_version.xml
diff --git a/others/db_changes/system_alias/data/defaultBlob/data_alias.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/data_alias.xml
similarity index 100%
rename from others/db_changes/system_alias/data/defaultBlob/data_alias.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/defaultBlob/data_alias.xml
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/Birgit_Leicht_Image.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/Birgit_Leicht_Image.xml
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/Birgit_Leicht_Image.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/Birgit_Leicht_Image.xml
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/Harold_Smith_Image.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/Harold_Smith_Image.xml
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/Harold_Smith_Image.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/Harold_Smith_Image.xml
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/Herbert_Obermeier_Image.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/Herbert_Obermeier_Image.xml
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/Herbert_Obermeier_Image.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/Herbert_Obermeier_Image.xml
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/Lisa_Sommer_Image.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/Lisa_Sommer_Image.xml
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/Lisa_Sommer_Image.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/Lisa_Sommer_Image.xml
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/Susanne_Lustig_Image.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/Susanne_Lustig_Image.xml
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/Susanne_Lustig_Image.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/Susanne_Lustig_Image.xml
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/blob/Birgit_Leicht.png b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Birgit_Leicht.png
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/blob/Birgit_Leicht.png
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Birgit_Leicht.png
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/blob/Birgit_Leicht_preview.jpeg b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Birgit_Leicht_preview.jpeg
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/blob/Birgit_Leicht_preview.jpeg
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Birgit_Leicht_preview.jpeg
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/blob/Harold_Smith.png b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Harold_Smith.png
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/blob/Harold_Smith.png
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Harold_Smith.png
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/blob/Harold_Smith_preview.jpeg b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Harold_Smith_preview.jpeg
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/blob/Harold_Smith_preview.jpeg
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Harold_Smith_preview.jpeg
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/blob/Herbert_Obermeier.png b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Herbert_Obermeier.png
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/blob/Herbert_Obermeier.png
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Herbert_Obermeier.png
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/blob/Herbert_Obermeier_preview.jpeg b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Herbert_Obermeier_preview.jpeg
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/blob/Herbert_Obermeier_preview.jpeg
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Herbert_Obermeier_preview.jpeg
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/blob/Lisa_Sommer.png b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Lisa_Sommer.png
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/blob/Lisa_Sommer.png
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Lisa_Sommer.png
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/blob/Lisa_Sommer_preview.jpeg b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Lisa_Sommer_preview.jpeg
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/blob/Lisa_Sommer_preview.jpeg
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Lisa_Sommer_preview.jpeg
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/blob/Susanne_Lustig.png b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Susanne_Lustig.png
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/blob/Susanne_Lustig.png
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Susanne_Lustig.png
diff --git a/others/db_changes/system_alias/data/example_asys_binaries/blob/Susanne_Lustig_preview.jpeg b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Susanne_Lustig_preview.jpeg
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_binaries/blob/Susanne_Lustig_preview.jpeg
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_binaries/blob/Susanne_Lustig_preview.jpeg
diff --git a/others/db_changes/system_alias/data/example_asys_users/Birgit_Leicht.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_users/Birgit_Leicht.xml
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_users/Birgit_Leicht.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_users/Birgit_Leicht.xml
diff --git a/others/db_changes/system_alias/data/example_asys_users/Harold_Smith.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_users/Harold_Smith.xml
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_users/Harold_Smith.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_users/Harold_Smith.xml
diff --git a/others/db_changes/system_alias/data/example_asys_users/Herbert_Obermeier.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_users/Herbert_Obermeier.xml
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_users/Herbert_Obermeier.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_users/Herbert_Obermeier.xml
diff --git a/others/db_changes/system_alias/data/example_asys_users/Lisa_Sommer.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_users/Lisa_Sommer.xml
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_users/Lisa_Sommer.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_users/Lisa_Sommer.xml
diff --git a/others/db_changes/system_alias/data/example_asys_users/Susanne_Lustig.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_users/Susanne_Lustig.xml
similarity index 100%
rename from others/db_changes/system_alias/data/example_asys_users/Susanne_Lustig.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/example_asys_users/Susanne_Lustig.xml
diff --git a/others/db_changes/system_alias/data/insert_asys_aliasconfig.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_aliasconfig.xml
similarity index 100%
rename from others/db_changes/system_alias/data/insert_asys_aliasconfig.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_aliasconfig.xml
diff --git a/others/db_changes/system_alias/data/insert_asys_system.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_system.xml
similarity index 100%
rename from others/db_changes/system_alias/data/insert_asys_system.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_system.xml
diff --git a/others/db_changes/system_alias/data/insert_asys_users-admin.xml b/.liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_users-admin.xml
similarity index 100%
rename from others/db_changes/system_alias/data/insert_asys_users-admin.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/data/insert_asys_users-admin.xml
diff --git a/others/db_changes/system_alias/EXPERIMENTAL_system_aliasDefault.xml b/.liquibase/_____SYSTEMALIAS/basic/init/init.xml
similarity index 100%
rename from others/db_changes/system_alias/EXPERIMENTAL_system_aliasDefault.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/init.xml
diff --git a/others/db_changes/system_alias/struct/create_asys_aliasconfig.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml
similarity index 100%
rename from others/db_changes/system_alias/struct/create_asys_aliasconfig.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml
diff --git a/others/db_changes/system_alias/struct/create_asys_binaries.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_binaries.xml
similarity index 100%
rename from others/db_changes/system_alias/struct/create_asys_binaries.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_binaries.xml
diff --git a/others/db_changes/system_alias/struct/create_asys_calendarbackend.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml
similarity index 100%
rename from others/db_changes/system_alias/struct/create_asys_calendarbackend.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml
diff --git a/others/db_changes/system_alias/struct/create_asys_calendarlink.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml
similarity index 100%
rename from others/db_changes/system_alias/struct/create_asys_calendarlink.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml
diff --git a/others/db_changes/system_alias/struct/create_asys_dashletconfigurations.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml
similarity index 100%
rename from others/db_changes/system_alias/struct/create_asys_dashletconfigurations.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml
diff --git a/others/db_changes/system_alias/struct/create_asys_dashlets.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml
similarity index 100%
rename from others/db_changes/system_alias/struct/create_asys_dashlets.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml
diff --git a/others/db_changes/system_alias/struct/create_asys_notifications.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml
similarity index 100%
rename from others/db_changes/system_alias/struct/create_asys_notifications.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml
diff --git a/others/db_changes/system_alias/struct/create_asys_sequences.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml
similarity index 100%
rename from others/db_changes/system_alias/struct/create_asys_sequences.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml
diff --git a/others/db_changes/system_alias/struct/create_asys_system.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_system.xml
similarity index 100%
rename from others/db_changes/system_alias/struct/create_asys_system.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_system.xml
diff --git a/others/db_changes/system_alias/struct/create_asys_timer.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timer.xml
similarity index 100%
rename from others/db_changes/system_alias/struct/create_asys_timer.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timer.xml
diff --git a/others/db_changes/system_alias/struct/create_asys_users.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml
similarity index 100%
rename from others/db_changes/system_alias/struct/create_asys_users.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml
diff --git a/others/db_changes/system_alias/system_aliasTestdata.xml b/.liquibase/_____SYSTEMALIAS/basic/init/system_aliasTestdata.xml
similarity index 100%
rename from others/db_changes/system_alias/system_aliasTestdata.xml
rename to .liquibase/_____SYSTEMALIAS/basic/init/system_aliasTestdata.xml
diff --git a/.liquibase/_____SYSTEMALIAS/changelog.xml b/.liquibase/_____SYSTEMALIAS/changelog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5fea0f98a129af771181ebddc56030c59aa75c10
--- /dev/null
+++ b/.liquibase/_____SYSTEMALIAS/changelog.xml
@@ -0,0 +1,4 @@
+<?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">
+    <include file="basic/init/init.xml"/>
+</databaseChangeLog>
diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 076a79281415b2ccded347826231ef5b5153a596..c50f192679ff97b3beea99f68fe1ed62fa10c59e 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -104,6 +104,76 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>PICTURE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2004" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -197,7 +267,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -244,7 +314,7 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>POSTITION</name>
+                <name>POSITION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
@@ -257,6 +327,62 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -400,6 +526,76 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>PICTURE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2004" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -571,7 +767,7 @@
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
                 <dependencies>
@@ -595,6 +791,62 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -636,7 +888,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
               </entityFieldDb>
@@ -649,7 +901,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <title></title>
                 <description></description>
                 <dependencies>
@@ -686,6 +938,62 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -1013,6 +1321,62 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -1746,9 +2110,65 @@
                 <name>ADDRESS</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
-                <scale v="0" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>PAYMENTTERMS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DELIVERYTERMS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INFO</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -1757,11 +2177,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>PAYMENTTERMS</name>
+                <name>USER_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <columnType v="12" />
+                <size v="50" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -1771,13 +2191,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DELIVERYTERMS</name>
+                <name>DATE_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -1785,13 +2205,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>INFO</name>
+                <name>USER_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
+                <columnType v="12" />
+                <size v="50" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -2938,7 +3358,7 @@
             <description></description>
             <auditSyncConfig>
               <name>auditSyncConfig</name>
-              <auditMode v="1" />
+              <auditMode v="0" />
               <syncActive v="false" />
               <syncComplete v="true" />
               <syncDirection v="1" />
@@ -3071,6 +3491,62 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -3599,7 +4075,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -3669,7 +4145,7 @@
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -3861,6 +4337,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>INFO</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -4107,7 +4597,7 @@
             <description></description>
             <auditSyncConfig>
               <name>auditSyncConfig</name>
-              <auditMode v="1" />
+              <auditMode v="0" />
               <syncActive v="false" />
               <syncComplete v="true" />
               <syncDirection v="1" />
@@ -4128,20 +4618,6 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
-              <entityFieldDb>
-                <name>BOOL_VALUE</name>
-                <dbName></dbName>
-                <primaryKey v="false" />
-                <columnType v="5" />
-                <size v="5" />
-                <scale v="0" />
-                <notNull v="false" />
-                <isUnique v="false" />
-                <index v="false" />
-                <documentation></documentation>
-                <title></title>
-                <description></description>
-              </entityFieldDb>
               <entityFieldDb>
                 <name>DATE_VALUE</name>
                 <dbName></dbName>
@@ -4203,7 +4679,7 @@
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="63" />
+                <size v="512" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -4241,46 +4717,158 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>MEMO_VALUE</name>
+                <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>INT_VALUE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>ACTIVITYLINK</name>
+            <dbName></dbName>
+            <idColumn>ACTIVITYLINKID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>OBJECT_ROWID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ACTIVITYLINKID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ACTIVITY_ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>OBJECT_TYPE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="63" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
-            </entityFields>
-          </entityDb>
-          <entityDb>
-            <name>ACTIVITYLINK</name>
-            <dbName></dbName>
-            <idColumn>ACTIVITYLINKID</idColumn>
-            <idGeneratorType v="0" />
-            <idGeneratorInterval v="1" />
-            <title></title>
-            <description></description>
-            <auditSyncConfig>
-              <name>auditSyncConfig</name>
-              <auditMode v="0" />
-              <syncActive v="false" />
-              <syncComplete v="true" />
-              <syncDirection v="1" />
-              <syncIds></syncIds>
-            </auditSyncConfig>
-            <entityFields>
               <entityFieldDb>
-                <name>OBJECT_ROWID</name>
+                <name>DATE_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
-                <notNull v="true" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -4288,25 +4876,25 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>ACTIVITYLINKID</name>
+                <name>DATE_NEW</name>
                 <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
-                <size v="36" />
-                <scale v="0" />
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
                 <notNull v="true" />
-                <isUnique v="true" />
+                <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>ACTIVITY_ID</name>
+                <name>USER_NEW</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="63" />
+                <size v="50" />
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
@@ -4316,13 +4904,13 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>OBJECT_TYPE</name>
+                <name>USER_EDIT</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="63" />
+                <size v="50" />
                 <scale v="0" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -4371,7 +4959,7 @@
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -4577,7 +5165,7 @@
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -4694,7 +5282,7 @@
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -4859,7 +5447,7 @@
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
-                <index v="false" />
+                <index v="true" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
@@ -4954,6 +5542,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>HIERARCHY</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
           <entityDb>
@@ -5089,10 +5691,10 @@
             </entityFields>
           </entityDb>
           <entityDb>
-            <name>AB_LOGHISTORY</name>
+            <name>DATABASECHANGELOG</name>
             <dbName></dbName>
-            <idColumn>AB_LOGHISTORYID</idColumn>
-            <idGeneratorType v="0" />
+            <idColumn></idColumn>
+            <idGeneratorType v="1" />
             <idGeneratorInterval v="1" />
             <documentation></documentation>
             <title></title>
@@ -5107,13 +5709,13 @@
             </auditSyncConfig>
             <entityFields>
               <entityFieldDb>
-                <name>TABLENAME</name>
+                <name>EXECTYPE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="30" />
+                <size v="10" />
                 <scale v="0" />
-                <notNull v="false" />
+                <notNull v="true" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -5121,12 +5723,40 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DATE_EDIT</name>
+                <name>DATEEXECUTED</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
                 <size v="29" />
                 <scale v="9" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ORDEREXECUTED</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>COMMENTS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
@@ -5135,11 +5765,25 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DESCRIPTION</name>
+                <name>AUTHOR</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="2005" />
-                <size v="2147483647" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>CONTEXTS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5149,11 +5793,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>SOURCE_TABLENAMEID</name>
+                <name>MD5SUM</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <columnType v="12" />
+                <size v="35" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5163,11 +5807,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>LOGTYPE</name>
+                <name>DESCRIPTION</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="1" />
+                <columnType v="12" />
+                <size v="255" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5177,11 +5821,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>SOURCE_TABLENAME</name>
+                <name>LIQUIBASE</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="30" />
+                <size v="20" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5191,25 +5835,39 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>AB_LOGHISTORYID</name>
+                <name>DEPLOYMENT_ID</name>
                 <dbName></dbName>
-                <primaryKey v="true" />
-                <columnType v="1" />
-                <size v="36" />
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>ID</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
                 <scale v="0" />
                 <notNull v="true" />
-                <isUnique v="true" />
+                <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
                 <title></title>
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>TABLENAMEID</name>
+                <name>TAG</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="1" />
-                <size v="36" />
+                <columnType v="12" />
+                <size v="255" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5219,13 +5877,61 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>DATE_NEW</name>
+                <name>LABELS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>FILENAME</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="255" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
+          <entityDb>
+            <name>DATABASECHANGELOGLOCK</name>
+            <dbName></dbName>
+            <idColumn>ID</idColumn>
+            <idGeneratorType v="1" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>LOCKGRANTED</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="93" />
                 <size v="29" />
                 <scale v="9" />
-                <notNull v="true" />
+                <notNull v="false" />
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
@@ -5233,11 +5939,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_NEW</name>
+                <name>LOCKED</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
-                <columnType v="12" />
-                <size v="50" />
+                <columnType v="16" />
+                <size v="1" />
                 <scale v="0" />
                 <notNull v="true" />
                 <isUnique v="false" />
@@ -5247,11 +5953,11 @@
                 <description></description>
               </entityFieldDb>
               <entityFieldDb>
-                <name>USER_EDIT</name>
+                <name>LOCKEDBY</name>
                 <dbName></dbName>
                 <primaryKey v="false" />
                 <columnType v="12" />
-                <size v="50" />
+                <size v="255" />
                 <scale v="0" />
                 <notNull v="false" />
                 <isUnique v="false" />
@@ -5260,6 +5966,20 @@
                 <title></title>
                 <description></description>
               </entityFieldDb>
+              <entityFieldDb>
+                <name>ID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="4" />
+                <size v="10" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
             </entityFields>
           </entityDb>
         </entities>
@@ -5304,5 +6024,80 @@
       </affectedTables>
       <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/person/affectedIds.js</affectedIds>
     </indexSearchGroup>
+    <indexSearchGroup>
+      <name>OFFER</name>
+      <title>Offer</title>
+      <icon>VAADIN:CART</icon>
+      <active v="true" />
+      <idColumn>OFFERID</idColumn>
+      <titleColumn>TITLECOLUMN</titleColumn>
+      <descriptionColumn>DESCCOLUMN</descriptionColumn>
+      <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js</query>
+      <resultContextNeon>Offer</resultContextNeon>
+      <affectedTables>
+        <element>OFFER</element>
+      </affectedTables>
+      <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/offer/affectedIds.js</affectedIds>
+    </indexSearchGroup>
+    <indexSearchGroup>
+      <name>SALESORDER</name>
+      <title>Receipt</title>
+      <icon>VAADIN:DOLLAR</icon>
+      <active v="true" />
+      <idColumn>SALESORDERID</idColumn>
+      <titleColumn>TITLECOLUMN</titleColumn>
+      <descriptionColumn>DESCCOLUMN</descriptionColumn>
+      <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js</query>
+      <resultContextNeon>Order</resultContextNeon>
+      <affectedTables>
+        <element>SALESORDER</element>
+      </affectedTables>
+      <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/salesorder/affectedIds.js</affectedIds>
+    </indexSearchGroup>
+    <indexSearchGroup>
+      <name>CONTRACT</name>
+      <title>Contract</title>
+      <icon>VAADIN:FILE_TEXT</icon>
+      <active v="true" />
+      <idColumn>CONTRACTID</idColumn>
+      <titleColumn>TITLECOLUMN</titleColumn>
+      <descriptionColumn>DESCCOLUMN</descriptionColumn>
+      <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/contract/query.js</query>
+      <resultContextNeon>Contract</resultContextNeon>
+      <affectedTables>
+        <element>CONTRACT</element>
+      </affectedTables>
+      <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/contract/affectedIds.js</affectedIds>
+    </indexSearchGroup>
+    <indexSearchGroup>
+      <name>PRODUCT</name>
+      <title>Product</title>
+      <icon>VAADIN:HAMMER</icon>
+      <active v="true" />
+      <idColumn>PRODUCTID</idColumn>
+      <titleColumn>TITLECOLUMN</titleColumn>
+      <descriptionColumn>DESCCOLUMN</descriptionColumn>
+      <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/product/query.js</query>
+      <resultContextNeon>Product</resultContextNeon>
+      <affectedTables>
+        <element>PRODUCT</element>
+      </affectedTables>
+      <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/product/affectedIds.js</affectedIds>
+    </indexSearchGroup>
+    <indexSearchGroup>
+      <name>SALESPROJECT</name>
+      <title>Salesproject</title>
+      <icon>VAADIN:BOOK_DOLLAR</icon>
+      <active v="true" />
+      <idColumn>SALESPROJECTID</idColumn>
+      <titleColumn>TITLECOLUMN</titleColumn>
+      <descriptionColumn>DESCCOLUMN</descriptionColumn>
+      <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/salesproject/query.js</query>
+      <resultContextNeon>Salesproject</resultContextNeon>
+      <affectedTables>
+        <element>SALESPROJECT</element>
+      </affectedTables>
+      <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/salesproject/affectedIds.js</affectedIds>
+    </indexSearchGroup>
   </indexSearchGroups>
 </aliasDefinition>
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/contract/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/contract/affectedIds.js
new file mode 100644
index 0000000000000000000000000000000000000000..548f327a66b7b08252086a013c0152cd52f8da20
--- /dev/null
+++ b/aliasDefinition/Data_alias/indexsearchgroups/contract/affectedIds.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.object([vars.getString("$local.idvalue")]);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/contract/query.js b/aliasDefinition/Data_alias/indexsearchgroups/contract/query.js
new file mode 100644
index 0000000000000000000000000000000000000000..c80b55a38be25139beeefac4cbcbeb4b08a88cad
--- /dev/null
+++ b/aliasDefinition/Data_alias/indexsearchgroups/contract/query.js
@@ -0,0 +1,28 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("system.calendars");
+import("system.db");
+import("Keyword_lib");
+import("Sql_lib");
+import("KeywordRegistry_basic");
+
+var sqlQuery, sqlHelper, queryCondition, affectedIds;
+queryCondition = "";
+if (vars.exists("$local.idvalue")) {
+    affectedIds = vars.get("$local.idvalue");
+    queryCondition = "where CONTRACTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')";
+    //TODO: refactor this for incremental indexer (injections?)
+}
+sqlHelper = new SqlMaskingUtils();
+sqlQuery = "select CONTRACTID, " 
+    + sqlHelper.concat(["CONTRACTCODE", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractStatus(), "CONTRACTSTATUS")], " | ")
+    + " as TITLECOLUMN, " 
+    + sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Type of contract") + ":'", 
+            KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractType(), "CONTRACTTYPE")]) 
+    + " as DESCCOLUMN, CONTRACTCODE, ORGANISATION.NAME, CUSTOMERCODE " 
+    + " from CONTRACT "
+    + " join CONTACT on CONTRACT.CONTACT_ID = CONTACTID "
+    + " join ORGANISATION on ORGANISATIONID = CONTACT.ORGANISATION_ID "
+    + queryCondition + " order by CONTRACTCODE ";
+result.string(sqlQuery);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/offer/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/offer/affectedIds.js
new file mode 100644
index 0000000000000000000000000000000000000000..548f327a66b7b08252086a013c0152cd52f8da20
--- /dev/null
+++ b/aliasDefinition/Data_alias/indexsearchgroups/offer/affectedIds.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.object([vars.getString("$local.idvalue")]);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js b/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js
new file mode 100644
index 0000000000000000000000000000000000000000..edc6c63a6391c12b33b79fee916d3ecd17515e15
--- /dev/null
+++ b/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js
@@ -0,0 +1,28 @@
+import("system.SQLTYPES");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("system.calendars");
+import("system.db");
+import("Keyword_lib");
+import("Sql_lib");
+import("KeywordRegistry_basic");
+
+var sqlQuery, sqlHelper, queryCondition, affectedIds;
+queryCondition = "";
+if (vars.exists("$local.idvalue")) {
+    affectedIds = vars.get("$local.idvalue");
+    queryCondition = "where OFFERID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')";
+    //TODO: refactor this for incremental indexer (injections?)
+}
+sqlHelper = new SqlMaskingUtils();
+sqlQuery = "select OFFERID, " 
+    + sqlHelper.concat([sqlHelper.cast("OFFERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.offerStatus(), "OFFER.STATUS")], " | ")
+    + " as TITLECOLUMN, " 
+    + sqlHelper.concat(["ORGANISATION.NAME"], " | ") // "'" + translate.text("Description") + ":'", sqlHelper.castLob("OFFER.INFO", 256)
+    + " as DESCCOLUMN, OFFERCODE, ORGANISATION.NAME, CUSTOMERCODE " 
+    + " from OFFER "
+    + " join CONTACT on OFFER.CONTACT_ID = CONTACTID "
+    + " join ORGANISATION on ORGANISATIONID = CONTACT.ORGANISATION_ID "
+    + queryCondition + " order by OFFERCODE ";
+result.string(sqlQuery);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/organisation/query.js b/aliasDefinition/Data_alias/indexsearchgroups/organisation/query.js
index 8deb7a7a4f7cb64fd986063e70aca8baf5b32b51..791c356592a9b881be9e598b9a5ba50cd7c86bab 100644
--- a/aliasDefinition/Data_alias/indexsearchgroups/organisation/query.js
+++ b/aliasDefinition/Data_alias/indexsearchgroups/organisation/query.js
@@ -1,8 +1,10 @@
+import("system.translate");
 import("system.result");
 import("system.vars");
 import("system.calendars");
 import("system.db");
 import("Sql_lib");
+import("Communication_lib");
 
 var sqlQuery, sqlHelper, queryCondition, affectedIds;
 if (vars.exists("$local.idvalue")) {
@@ -12,12 +14,14 @@ if (vars.exists("$local.idvalue")) {
 }
 sqlHelper = new SqlMaskingUtils();
 sqlQuery = "select CONTACT.CONTACTID "
-    + "," + sqlHelper.concat(["ORGANISATION.NAME", "ORGANISATION.CUSTOMERCODE"]) 
+    + "," + sqlHelper.concat(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"]) 
     + " as TITLECOLUMN "
     + "," + sqlHelper.concat([
-         sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO"])
-        ,sqlHelper.concat(["defaultAddress.ZIP", "defaultAddress.CITY"])
-        ,"defaultAddress.COUNTRY"], ", ") + " as DESCCOLUMN "
+         sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'"
+            ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"])
+        ,sqlHelper.concat(["'" + translate.text("Phone") + ":'", CommUtil.getStandardSubSqlPhone("CONTACTID")])
+        ,sqlHelper.concat(["'" + translate.text("Email") + ":'", CommUtil.getStandardSubSqlMail("CONTACTID")])
+        ], " | ") + " as DESCCOLUMN "
     //additional indexed fields
     + ",ORGANISATION.NAME, COMMUNICATION.ADDR "
     + " from ORGANISATION "
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/person/query.js b/aliasDefinition/Data_alias/indexsearchgroups/person/query.js
index 8dd398447fea4415f16fb1817371b839119b6221..44981a5fe2a7c0a2510485756b7d3ef523f743d2 100644
--- a/aliasDefinition/Data_alias/indexsearchgroups/person/query.js
+++ b/aliasDefinition/Data_alias/indexsearchgroups/person/query.js
@@ -1,8 +1,10 @@
+import("system.translate");
 import("system.result");
 import("system.vars");
 import("system.calendars");
 import("system.db");
 import("Sql_lib");
+import("Communication_lib");
 
 var sqlQuery, sqlHelper, queryCondition, affectedIds;
 if (vars.exists("$local.idvalue")) {
@@ -12,12 +14,14 @@ if (vars.exists("$local.idvalue")) {
 }
 sqlHelper = new SqlMaskingUtils();
 sqlQuery = "select CONTACT.CONTACTID "
-    + "," + sqlHelper.concat(["PERSON.SALUTATION", "PERSON.FIRSTNAME", "PERSON.LASTNAME", "ORGANISATION.NAME"]) 
+    + "," + sqlHelper.concat(["PERSON.SALUTATION", "PERSON.FIRSTNAME", "PERSON.LASTNAME", "'|'", "ORGANISATION.NAME"]) 
     + " as TITLECOLUMN "
     + "," + sqlHelper.concat([
-         sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO"])
-        ,sqlHelper.concat(["defaultAddress.ZIP", "defaultAddress.CITY"])
-        ,"defaultAddress.COUNTRY"], ", ") + " as DESCCOLUMN "
+         sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'"
+            ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"])
+        ,sqlHelper.concat(["'" + translate.text("Phone") + ":'", CommUtil.getStandardSubSqlPhone("CONTACTID")])
+        ,sqlHelper.concat(["'" + translate.text("Email") + ":'", CommUtil.getStandardSubSqlMail("CONTACTID")])
+        ], " | ") + " as DESCCOLUMN "
     //additional indexed fields
     + ",ORGANISATION.NAME, COMMUNICATION.ADDR "
     + " from PERSON "
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/product/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/product/affectedIds.js
new file mode 100644
index 0000000000000000000000000000000000000000..548f327a66b7b08252086a013c0152cd52f8da20
--- /dev/null
+++ b/aliasDefinition/Data_alias/indexsearchgroups/product/affectedIds.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.object([vars.getString("$local.idvalue")]);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/product/query.js b/aliasDefinition/Data_alias/indexsearchgroups/product/query.js
new file mode 100644
index 0000000000000000000000000000000000000000..9f8b8240c20e0a74ef734bcc01787ba192206ffa
--- /dev/null
+++ b/aliasDefinition/Data_alias/indexsearchgroups/product/query.js
@@ -0,0 +1,24 @@
+import("system.result");
+import("system.vars");
+import("system.calendars");
+import("system.db");
+import("Keyword_lib");
+import("Sql_lib");
+import("KeywordRegistry_basic");
+
+var sqlQuery, sqlHelper, queryCondition, affectedIds;
+queryCondition = "";
+if (vars.exists("$local.idvalue")) {
+    affectedIds = vars.get("$local.idvalue");
+    queryCondition = "where PRODUCTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')";
+    //TODO: refactor this for incremental indexer (injections?)
+}
+sqlHelper = new SqlMaskingUtils();
+sqlQuery = "select PRODUCTID, " 
+    + sqlHelper.concat(["PRODUCTCODE", "PRODUCTNAME"], " | ")
+    + " as TITLECOLUMN, " 
+    + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "GROUPCODEID")
+    + " as DESCCOLUMN, PRODUCTCODE " 
+    + " from PRODUCT "
+    + queryCondition + " order by PRODUCTCODE ";
+result.string(sqlQuery);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/salesorder/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/salesorder/affectedIds.js
new file mode 100644
index 0000000000000000000000000000000000000000..548f327a66b7b08252086a013c0152cd52f8da20
--- /dev/null
+++ b/aliasDefinition/Data_alias/indexsearchgroups/salesorder/affectedIds.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.object([vars.getString("$local.idvalue")]);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js b/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js
new file mode 100644
index 0000000000000000000000000000000000000000..b3953edcbdba55a383ccbf7336ed9493f7c79617
--- /dev/null
+++ b/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js
@@ -0,0 +1,27 @@
+import("system.SQLTYPES");
+import("system.result");
+import("system.vars");
+import("system.calendars");
+import("system.db");
+import("Sql_lib");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var sqlQuery, sqlHelper, queryCondition, affectedIds;
+queryCondition = "";
+if (vars.exists("$local.idvalue")) {
+    affectedIds = vars.get("$local.idvalue");
+    queryCondition = "where OFFERID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')";
+    //TODO: refactor this for incremental indexer (injections?)
+}
+sqlHelper = new SqlMaskingUtils();
+sqlQuery = "select SALESORDERID, " 
+    + sqlHelper.concat([sqlHelper.cast("SALESORDERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesorderState(), "SALESORDER.STATUS")], " | ")
+    + " as TITLECOLUMN, " 
+    + sqlHelper.concat(["ORGANISATION.NAME"], " | ") 
+    + " as DESCCOLUMN, SALESORDERCODE, ORGANISATION.NAME, CUSTOMERCODE "
+    + " from SALESORDER "
+    + " join CONTACT on SALESORDER.CONTACT_ID = CONTACTID "
+    + " join ORGANISATION on ORGANISATIONID = CONTACT.ORGANISATION_ID "
+    + queryCondition + " order by SALESORDERCODE ";
+result.string(sqlQuery);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/salesproject/affectedIds.js b/aliasDefinition/Data_alias/indexsearchgroups/salesproject/affectedIds.js
new file mode 100644
index 0000000000000000000000000000000000000000..548f327a66b7b08252086a013c0152cd52f8da20
--- /dev/null
+++ b/aliasDefinition/Data_alias/indexsearchgroups/salesproject/affectedIds.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.object([vars.getString("$local.idvalue")]);
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/indexsearchgroups/salesproject/query.js b/aliasDefinition/Data_alias/indexsearchgroups/salesproject/query.js
new file mode 100644
index 0000000000000000000000000000000000000000..b5db958b18fdb85576d0ee3ce7e7a929188e9297
--- /dev/null
+++ b/aliasDefinition/Data_alias/indexsearchgroups/salesproject/query.js
@@ -0,0 +1,26 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("system.calendars");
+import("system.db");
+import("Keyword_lib");
+import("Sql_lib");
+import("KeywordRegistry_basic");
+
+var sqlQuery, sqlHelper, queryCondition, affectedIds;
+queryCondition = "";
+if (vars.exists("$local.idvalue")) {
+    affectedIds = vars.get("$local.idvalue");
+    queryCondition = "where SALESPROJECTID in ('" + affectedIds.map(function (v){return db.quote(v);}).join("', '") + "')";
+    //TODO: refactor this for incremental indexer (injections?)
+}
+sqlHelper = new SqlMaskingUtils();
+sqlQuery = "select SALESPROJECTID, PROJECTTITLE as TITLECOLUMN, " 
+    + sqlHelper.concat([
+        "'" + translate.text("Status") + ":'",  KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectState(), "STATE"),
+        "'| " + translate.text("Phase") + ":'",  KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectPhase(), "PHASE")
+      ]) 
+    + " as DESCCOLUMN, PROJECTCODE " 
+    + " from SALESPROJECT "
+    + queryCondition + " order by PROJECTCODE ";
+result.string(sqlQuery);
\ No newline at end of file
diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
index 29aff4640e7d1b3091d0a8cdf4444ad2d860f2c9..2d715c6e5a0360e97f68cafd23bfc6179425aca6 100644
--- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
+++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod
@@ -4,7 +4,7 @@
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <entityNode name="_____SYSTEM_COMPANY" kind="200">
     <node name="CONTACTS" kind="123" title="Contactmanagement">
-      <icon>VAADIN:STAR</icon>
+      <icon>VAADIN:CONNECT</icon>
       <node name="Group1" kind="123" title="">
         <node name="Person" kind="10077" />
         <node name="Organisation" kind="10077" />
@@ -32,7 +32,8 @@
         <node name="Attribute" kind="10077" />
         <node name="KeywordEntry" kind="10077" />
         <node name="KeywordAttribute" kind="10077" />
-        <node name="Salutation" kind="10077" />
+        <node name="Employee" kind="10077" />
+        <node name="ObjectRelationType" kind="10077" />
         <node name="INTERNAL_ADMINISTRATOR" kind="159" />
       </node>
     </node>
diff --git a/application/_____SYSTEM_CALENDAR_RIBBON/_____SYSTEM_CALENDAR_RIBBON.aod b/application/_____SYSTEM_CALENDAR_RIBBON/_____SYSTEM_CALENDAR_RIBBON.aod
index b8dc2fcdd6569d77239376a8343f0bd0bb791ea2..42fef1c4124cc59559c680d1fe53f8b8b91ace0a 100644
--- a/application/_____SYSTEM_CALENDAR_RIBBON/_____SYSTEM_CALENDAR_RIBBON.aod
+++ b/application/_____SYSTEM_CALENDAR_RIBBON/_____SYSTEM_CALENDAR_RIBBON.aod
@@ -1,5 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/application/1.2.0">
-   <name>_____SYSTEM_CALENDAR_RIBBON</name>
+<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/application/1.2.0">
+  <name>_____SYSTEM_CALENDAR_RIBBON</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <entityNode name="_____SYSTEM_COMPANY" kind="200" />
   <calendarRibbon>
diff --git a/entity/360Degree_entity/360Degree_entity.aod b/entity/360Degree_entity/360Degree_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..66b17d986f3f77f93e3bea9c803ef2a87d1a95bb
--- /dev/null
+++ b/entity/360Degree_entity/360Degree_entity.aod
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
+  <name>360Degree_entity</name>
+  <title>360 Degree</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>UID</name>
+      <searchable v="false" />
+    </entityField>
+    <entityField>
+      <name>TITLE</name>
+      <searchable v="false" />
+    </entityField>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>OrganisationObjects</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <targetContextField>TARGET_CONTEXT</targetContextField>
+      <targetIdField>TARGET_ID</targetIdField>
+      <dependencies>
+        <entityDependency>
+          <name>15488007-165c-4630-828a-447cf2c27899</name>
+          <entityName>Organisation_entity</entityName>
+          <fieldName>360DegreeObjects</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityField>
+      <name>TARGET_CONTEXT</name>
+      <searchable v="false" />
+    </entityField>
+    <entityField>
+      <name>TARGET_ID</name>
+      <searchable v="false" />
+    </entityField>
+    <entityField>
+      <name>CONTEXT_NAME</name>
+      <title>Module</title>
+      <groupable v="true" />
+      <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/context_name/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE</name>
+      <title>Date</title>
+      <contentType>DATE</contentType>
+    </entityField>
+    <entityProvider>
+      <name>PersonObjects</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <targetContextField>TARGET_CONTEXT</targetContextField>
+      <targetIdField>TARGET_ID</targetIdField>
+      <dependencies>
+        <entityDependency>
+          <name>1d931ae6-137a-4db3-b02c-eb8872d349c6</name>
+          <entityName>Person_entity</entityName>
+          <fieldName>360DegreeObjects</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityField>
+      <name>YEAR</name>
+      <title>Year</title>
+      <groupable v="true" />
+      <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/year/valueProcess.js</valueProcess>
+    </entityField>
+    <entityActionGroup>
+      <name>newModule</name>
+      <title>New module</title>
+      <iconId>VAADIN:PLUS_CIRCLE</iconId>
+      <children>
+        <entityActionField>
+          <name>newOffer</name>
+          <fieldType>ACTION</fieldType>
+          <title>Offer</title>
+          <onActionProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newoffer/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:CART</iconId>
+          <stateProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js</stateProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>newSalesproject</name>
+          <fieldType>ACTION</fieldType>
+          <title>Salesproject</title>
+          <onActionProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:BOOK_DOLLAR</iconId>
+          <stateProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js</stateProcess>
+        </entityActionField>
+        <entityActionField>
+          <name>newContract</name>
+          <fieldType>ACTION</fieldType>
+          <title>Contract</title>
+          <onActionProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newcontract/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:FILE_TEXT</iconId>
+          <iconIdProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newcontract/iconIdProcess.js</iconIdProcess>
+          <stateProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js</stateProcess>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityField>
+      <name>ICON</name>
+      <contentType>IMAGE</contentType>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/icon/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>ACTIVE</name>
+      <title>Active</title>
+      <contentType>TEXT</contentType>
+      <possibleItemsProcess>%aditoprj%/entity/360Degree_entity/entityfields/active/possibleItemsProcess.js</possibleItemsProcess>
+      <searchable v="true" />
+      <groupable v="true" />
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <recordFields>
+        <element>UID.value</element>
+        <element>TARGET_ID.value</element>
+        <element>TARGET_CONTEXT.value</element>
+        <element>TITLE.value</element>
+        <element>DATE.value</element>
+        <element>ACTIVE.value</element>
+      </recordFields>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/360Degree_entity/entityfields/active/possibleItemsProcess.js b/entity/360Degree_entity/entityfields/active/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7eff15173e4d7fb99e918373472cf56decbaf018
--- /dev/null
+++ b/entity/360Degree_entity/entityfields/active/possibleItemsProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("system.translate");
+
+result.object([["true", translate.text("True")], ["false",translate.text("False")]]);
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/context_name/valueProcess.js b/entity/360Degree_entity/entityfields/context_name/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..618f59f467b2f706dfca685c1e93818af1dbf3de
--- /dev/null
+++ b/entity/360Degree_entity/entityfields/context_name/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.translate");
+import("system.vars");
+import("system.result");
+
+result.string(translate.text(vars.getString("$field.TARGET_CONTEXT")));
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/icon/valueProcess.js b/entity/360Degree_entity/entityfields/icon/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6b0bb83e3c5e90e1fd2f90c044fb085ac09d4a35
--- /dev/null
+++ b/entity/360Degree_entity/entityfields/icon/valueProcess.js
@@ -0,0 +1,17 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+var context = vars.getString("$field.TARGET_CONTEXT");
+switch (context)
+{
+    case "Salesproject":
+        result.string("VAADIN:BOOK_DOLLAR");
+        break; 
+    case "Offer":
+        result.string("VAADIN:CART");
+        break;    
+    case "Contract":
+        result.string("VAADIN:FILE_TEXT");
+        break;           
+}
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/onActionProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c441f436ac1b006d8c653a13d4095207a9752c56
--- /dev/null
+++ b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/onActionProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("Contract_lib");
+import("system.logging");
+
+ContractUtils.createNewContract(vars.getString("$param.ObjectRowId_param"));
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..45d4c0d1cadf0fd4f0a44a660ff1a9a8e481e879
--- /dev/null
+++ b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js
@@ -0,0 +1,16 @@
+import("system.result");
+import("system.vars");
+import("system.neon");
+import("system.logging");
+    
+var contextList = JSON.parse(vars.getString("$param.ObjectType_param"));
+var found = false;
+contextList.forEach(function (context) 
+{
+    if(context == "Contract")
+        found = true;        
+});
+if(found)
+    result.string(neon.COMPONENTSTATE_AUTO);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newoffer/onActionProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newoffer/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0be1b35b781bca3828a99415c0d7dac475792176
--- /dev/null
+++ b/entity/360Degree_entity/entityfields/newmodule/children/newoffer/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("Offer_lib");
+
+OfferUtils.createNewOffer(null, vars.getString("$param.ObjectRowId_param"));
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..43eff24495608393dc02b1e5d9bfd2c0cae8e116
--- /dev/null
+++ b/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js
@@ -0,0 +1,15 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+var contextList = JSON.parse(vars.getString("$param.ObjectType_param"));
+var found = false;
+contextList.forEach(function (context) 
+{
+    if(context == "Offer")
+        found = true;        
+});
+if(found)
+    result.string(neon.COMPONENTSTATE_AUTO);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/onActionProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d7426e72df2caec7058f23a716c698e10a848a54
--- /dev/null
+++ b/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/onActionProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("Salesproject_lib");
+
+Salesproject.createNewSalesproject(vars.getString("$param.ObjectRowId_param"));
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..faec2ba794559373ea139bc95e18d782c01164d0
--- /dev/null
+++ b/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js
@@ -0,0 +1,15 @@
+import("system.vars");
+import("system.neon");
+import("system.result");
+
+var contextList = JSON.parse(vars.getString("$param.ObjectType_param"));
+var found = false;
+contextList.forEach(function (context) 
+{
+    if(context == "Salesproject")
+        found = true;        
+});
+if(found)
+    result.string(neon.COMPONENTSTATE_AUTO);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js b/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..bb07a1ee2ed5f16932e450be46af31e10e5ec7ee
--- /dev/null
+++ b/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.object(["Salesproject", "Offer", "Contract"]);
\ No newline at end of file
diff --git a/entity/AnyContact_entity/entityfields/emailcommunications/children/contactid_param/valueProcess.js b/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js
similarity index 52%
rename from entity/AnyContact_entity/entityfields/emailcommunications/children/contactid_param/valueProcess.js
rename to entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js
index 7b6137b4d105e9ba592cf8ef6e796fb838a32b09..15de0e1ae47eb721911420272e0952a8d0aab01c 100644
--- a/entity/AnyContact_entity/entityfields/emailcommunications/children/contactid_param/valueProcess.js
+++ b/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.CONTACTID"));
\ No newline at end of file
+result.object(["Offer", "Contract"]);
\ No newline at end of file
diff --git a/entity/360Degree_entity/entityfields/year/valueProcess.js b/entity/360Degree_entity/entityfields/year/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c21dcc8cde6f3f27028dbb1844895cc55f093ff8
--- /dev/null
+++ b/entity/360Degree_entity/entityfields/year/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.datetime");
+import("system.result");
+import("system.vars");
+
+var dateVal = vars.get("$field.DATE");
+result.string(datetime.toDate(dateVal, "yyyy"));
\ No newline at end of file
diff --git a/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f74342ef8fe31213bd81788524244cb58c2a2271
--- /dev/null
+++ b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,59 @@
+import("system.logging");
+import("system.util");
+import("system.db");
+import("system.vars");
+import("system.result");
+import("Context_lib");
+import("system.translate");
+import("system.logging");
+
+var resultList = [];
+if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param") && vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"))
+{
+    
+    var active;
+    var selectMap = ContextUtils.getSelectMap ()
+    if(vars.exists("$local.filter") && vars.get("$local.filter") )
+    {
+        var filter = JSON.parse(vars.getString("$local.filter"));
+        if(filter.childs != null && filter.childs.length > 0)
+        {
+            filter.childs.forEach(function(child)
+            {
+                if(child.name === "ACTIVE")
+                    active = JSON.parse(child.key);
+            });  
+        }  
+    }
+    
+    var contextList = JSON.parse(vars.getString("$param.ObjectType_param"));
+    contextList.forEach(function (context) 
+    {
+        var data = db.table(ContextUtils.getContextDataSql(context, vars.get("$param.ObjectRowId_param"), true, active, true));
+        data.forEach(function (row) 
+        {
+            var record = [];
+            record[0] = util.getNewUUID(); // UID
+            record[1] = row[0]; // TARGET_ID
+            record[2] = context; // TARGET_CONTEXT
+            record[3] = row[1]; // TITLE
+            record[4] = row[2]; //DATE
+            if(active != undefined) //ACTIVE
+                record[5] = translate.text(active);
+            else
+            {
+               if(selectMap[context].activeStates.indexOf(row[3]) > -1)    
+                  record[5] = translate.text("true");
+               else
+                  record[5] = translate.text("false");
+            }
+            resultList.push(record); 
+        });       
+                  
+    });            
+    result.object(resultList)  
+} 
+else
+{
+    result.object(resultList);
+}
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/ActivityLink_entity.aod b/entity/ActivityLink_entity/ActivityLink_entity.aod
index 34b9c2ad504abfa630a745fbe5f9282db64cfd2a..312eb108037270268629d5641532f061c3d07e27 100644
--- a/entity/ActivityLink_entity/ActivityLink_entity.aod
+++ b/entity/ActivityLink_entity/ActivityLink_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>ActivityLink_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <recordContainer>db</recordContainer>
@@ -14,13 +14,13 @@
     </entityField>
     <entityField>
       <name>OBJECT_TYPE</name>
-      <title>Object type</title>
+      <title>{$OBJECTLINK_TYPE}</title>
       <consumer>Context</consumer>
       <displayValueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>OBJECT_ROWID</name>
-      <title>Beziehung</title>
+      <title>{$OBJECTLINK_OBJECT}</title>
       <consumer>Objects</consumer>
       <linkedContextProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/object_rowid/linkedContextProcess.js</linkedContextProcess>
       <displayValueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess>
@@ -73,7 +73,7 @@
       <dependency>
         <name>dependency</name>
         <entityName>Context_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
+        <fieldName>ActivityLinkable</fieldName>
       </dependency>
     </entityConsumer>
     <entityParameter>
@@ -81,6 +81,22 @@
       <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -117,6 +133,22 @@
           <name>OBJECT_ROWID.displayValue</name>
           <expression>%aditoprj%/entity/ActivityLink_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>ACTIVITYLINK.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>ACTIVITYLINK.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>ACTIVITYLINK.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>ACTIVITYLINK.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/ActivityLink_entity/entityfields/date_edit/valueProcess.js b/entity/ActivityLink_entity/entityfields/date_edit/valueProcess.js
index 710ac8a06a9911f82ff222c7d9d231846ca93fb2..8d41a64d6993f71d00e0879f5eb4aed0aa0b866d 100644
--- a/entity/ActivityLink_entity/entityfields/date_edit/valueProcess.js
+++ b/entity/ActivityLink_entity/entityfields/date_edit/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/entityfields/date_new/valueProcess.js b/entity/ActivityLink_entity/entityfields/date_new/valueProcess.js
index 3a0d59096cd2de39b6098f1ed95af580dcebfce0..8ee28e84edb9930de54975f81e8cb5a13c9aa02f 100644
--- a/entity/ActivityLink_entity/entityfields/date_new/valueProcess.js
+++ b/entity/ActivityLink_entity/entityfields/date_new/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/entityfields/user_edit/valueProcess.js b/entity/ActivityLink_entity/entityfields/user_edit/valueProcess.js
index 1581e18d9763043ae602b98658f87cb0a3b0c967..90383c071316dc55fe51d43a93dd7db75551842e 100644
--- a/entity/ActivityLink_entity/entityfields/user_edit/valueProcess.js
+++ b/entity/ActivityLink_entity/entityfields/user_edit/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/entityfields/user_new/valueProcess.js b/entity/ActivityLink_entity/entityfields/user_new/valueProcess.js
index 7c566863b493d778b72dea7d8822f6a59333e77d..dda83cfd00e13df5c6da64151f5d1e6d932a681e 100644
--- a/entity/ActivityLink_entity/entityfields/user_new/valueProcess.js
+++ b/entity/ActivityLink_entity/entityfields/user_new/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index aa6d82357401f41060bae35d83685bee1d2e9b02..8d1f8c7048a5dbf2e54d0213c01465d38cbe0fbc 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Activity_entity</name>
   <title>Activity</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -13,6 +13,7 @@
       <name>DIRECTION</name>
       <title>Direction</title>
       <consumer>KeywordDirections</consumer>
+      <mandatory v="true" />
       <groupable v="true" />
       <displayValueProcess>%aditoprj%/entity/Activity_entity/entityfields/direction/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -20,7 +21,6 @@
       <name>ENTRYDATE</name>
       <title>Entrydate</title>
       <contentType>DATE</contentType>
-      <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/entrydate/valueProcess.js</valueProcess>
@@ -41,6 +41,7 @@
       <consumer>KeywordCategories</consumer>
       <mandatory v="false" />
       <groupable v="true" />
+      <displayValueProcess>%aditoprj%/entity/Activity_entity/entityfields/category/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>SUBJECT</name>
@@ -145,6 +146,7 @@
       <onValueChangeTypes>
         <element>MASK</element>
         <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
       </onValueChangeTypes>
     </entityField>
     <entityConsumer>
@@ -259,10 +261,11 @@
     <entityField>
       <name>CREATOR</name>
       <title>Creator</title>
-      <consumer>Contacts</consumer>
+      <consumer>Employees</consumer>
       <linkedContext>Person</linkedContext>
       <searchable v="false" />
       <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/creator/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Activity_entity/entityfields/creator/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
       <name>ModuleTrees</name>
@@ -376,12 +379,12 @@
       <iconId>VAADIN:CART</iconId>
     </entityActionField>
     <entityConsumer>
-      <name>Contacts</name>
+      <name>Employees</name>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Person_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
+        <entityName>Employee_entity</entityName>
+        <fieldName>Employees</fieldName>
       </dependency>
     </entityConsumer>
     <entityParameter>
@@ -390,6 +393,44 @@
       <documentation>%aditoprj%/entity/Activity_entity/entityfields/presetlinks_param/documentation.adoc</documentation>
       <description>PARAMETER</description>
     </entityParameter>
+    <entityConsumer>
+      <name>AttributeTree</name>
+      <title>Attribute Tree</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelationTree_entity</entityName>
+        <fieldName>TreeProvider</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -456,6 +497,22 @@
           <name>CREATOR.displayValue</name>
           <expression>%aditoprj%/entity/Activity_entity/recordcontainers/db/recordfieldmappings/creator.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>ACTIVITY.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>ACTIVITY.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>ACTIVITY.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>ACTIVITY.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Activity_entity/afterUiInit.js b/entity/Activity_entity/afterUiInit.js
index 335bfa9bbfb9f2b5becf5ba8882adf5e18187f0c..0f3cf2b05300e9e6aeafee314f1d17de5ab2fc20 100644
--- a/entity/Activity_entity/afterUiInit.js
+++ b/entity/Activity_entity/afterUiInit.js
@@ -4,5 +4,5 @@ import("ActivityTask_lib");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
 {
-    ActivityUtils.addLinkRecords("$param.ObjectId_param", "$param.RowId_param", "$param.PresetLinks_param");
+    ActivityUtils.addLinkRecords("$param.ObjectId_param", "$param.RowId_param", "$param.PresetLinks_param", "$field.PARENT_CONTEXT", "$field.PARENT_ID");
 }
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js b/entity/Activity_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6717e012d6f73633d708947198ce7e04dee68d82
--- /dev/null
+++ b/entity/Activity_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.ACTIVITYID"));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js b/entity/Activity_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..431bcc952145cb451362fc69754f84ff1514bac5
--- /dev/null
+++ b/entity/Activity_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
diff --git a/entity/Activity_entity/entityfields/category/displayValueProcess.js b/entity/Activity_entity/entityfields/category/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5a77b5521266503239321a1a8a471047b9c58cd9
--- /dev/null
+++ b/entity/Activity_entity/entityfields/category/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.activityCategory(), vars.get("$field.CATEGORY")));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/creator/displayValueProcess.js b/entity/Activity_entity/entityfields/creator/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0dde82e7728286629b1c210326725aac2ebb92c5
--- /dev/null
+++ b/entity/Activity_entity/entityfields/creator/displayValueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.vars");
+import("Contact_lib");
+
+var id = vars.get("$this.value");
+//show the simpel title since this will be later an employee-entry and therefore no organisation is needed
+var title = ContactUtils.getTitleByContactId(id);
+result.string(title);
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/creator/valueProcess.js b/entity/Activity_entity/entityfields/creator/valueProcess.js
index fbf6105a85aaeeb73fa5784afaf603d6d650a770..a95c59aa0b3b800aa722f4da67d502dd69d18ae9 100644
--- a/entity/Activity_entity/entityfields/creator/valueProcess.js
+++ b/entity/Activity_entity/entityfields/creator/valueProcess.js
@@ -1,8 +1,7 @@
-import("system.result");
-import("system.vars");
 import("system.neon");
+import("system.vars");
+import("system.result");
+import("Employee_lib");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-{
-    result.string(vars.get("$sys.user"));
-}
\ No newline at end of file
+    result.string(EmployeeUtils.getCurrentContactId());
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/date_edit/valueProcess.js b/entity/Activity_entity/entityfields/date_edit/valueProcess.js
index 710ac8a06a9911f82ff222c7d9d231846ca93fb2..8d41a64d6993f71d00e0879f5eb4aed0aa0b866d 100644
--- a/entity/Activity_entity/entityfields/date_edit/valueProcess.js
+++ b/entity/Activity_entity/entityfields/date_edit/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/date_new/valueProcess.js b/entity/Activity_entity/entityfields/date_new/valueProcess.js
index 3a0d59096cd2de39b6098f1ed95af580dcebfce0..8ee28e84edb9930de54975f81e8cb5a13c9aa02f 100644
--- a/entity/Activity_entity/entityfields/date_new/valueProcess.js
+++ b/entity/Activity_entity/entityfields/date_new/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/direction_icon/valueProcess.js b/entity/Activity_entity/entityfields/direction_icon/valueProcess.js
index b07c641b6bef1549558e3ea5d84bd51056126873..ce60c7e40748a7e42e76f0762efb600701d2ffcb 100644
--- a/entity/Activity_entity/entityfields/direction_icon/valueProcess.js
+++ b/entity/Activity_entity/entityfields/direction_icon/valueProcess.js
@@ -1,8 +1,21 @@
 import("system.vars");
 import("system.result");
 import("system.neon");
+import("KeywordRegistry_basic");
 
-if(vars.getString("$field.DIRECTION") == "i")
-    result.string("vaadin:arrow_backward");
-else
-    result.string("vaadin:arrow_forward");   
+var direction = vars.getString("$field.DIRECTION");
+var res;
+switch (direction) 
+{
+    case $KeywordRegistry.activityDirection$incoming():
+        res = "VAADIN:ARROW_BACKWARD";
+        break;
+    case $KeywordRegistry.activityDirection$outgoing():
+        res = "VAADIN:ARROW_FORWARD";
+        break;
+    default:
+        res = "";
+        break;
+}
+
+result.string(res);
diff --git a/entity/Activity_entity/entityfields/newactivity/onActionProcess.js b/entity/Activity_entity/entityfields/newactivity/onActionProcess.js
index 39352aaa738090de2afb9e23b20d769ab3da2c9e..1216eaeb421795cf0f17dc01e8bf746808f6fb46 100644
--- a/entity/Activity_entity/entityfields/newactivity/onActionProcess.js
+++ b/entity/Activity_entity/entityfields/newactivity/onActionProcess.js
@@ -1,9 +1,5 @@
-import("system.neon");
 import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
 
-var params = {
-  "ParentId_param": vars.get("$field.ACTIVITYID"),
-  "ParentContext_param": "Activity"
-};
-
-neon.openContext("Activity", "ActivityEdit_view", null, neon.OPERATINGSTATE_NEW, params)
\ No newline at end of file
+ActivityUtils.createNewActivity(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.ACTIVITYID"));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/newtask/onActionProcess.js b/entity/Activity_entity/entityfields/newtask/onActionProcess.js
index 48a549d48255e00aaad61e8ddcfec1f384a85b69..47fc4622916aac692f47be0c0cd750900fcb44ca 100644
--- a/entity/Activity_entity/entityfields/newtask/onActionProcess.js
+++ b/entity/Activity_entity/entityfields/newtask/onActionProcess.js
@@ -1,8 +1,5 @@
-import("system.neon");
 import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
 
-var params = {
-    "ParentId_param" : vars.get("$field.ACTIVITYID"),
-    "ParentContext_param" : "Activity"
-};
-neon.openContext("Task", "TaskEdit_view", null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
+TaskUtils.createNewTask(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.ACTIVITYID"));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/subject_details/valueProcess.js b/entity/Activity_entity/entityfields/subject_details/valueProcess.js
index c30d6b2520c493830ac572123194912dd8ef0d1b..db1ed69d22949c42f33e439c7a6fe0d8b9bcb94b 100644
--- a/entity/Activity_entity/entityfields/subject_details/valueProcess.js
+++ b/entity/Activity_entity/entityfields/subject_details/valueProcess.js
@@ -1,7 +1,5 @@
 import("system.vars");
 import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
 
-var histMedium = vars.get("$field.CATEGORY");
-result.string(vars.get("$field.SUBJECT") + (histMedium ? " (" + KeywordUtils.getViewValue($KeywordRegistry.activityCategory(), histMedium) + ")" : ""));
+var category = vars.get("$field.CATEGORY.displayValue");
+result.string(vars.get("$field.SUBJECT") + (category ? " (" + category + ")" : ""));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/user_edit/valueProcess.js b/entity/Activity_entity/entityfields/user_edit/valueProcess.js
index 1581e18d9763043ae602b98658f87cb0a3b0c967..90383c071316dc55fe51d43a93dd7db75551842e 100644
--- a/entity/Activity_entity/entityfields/user_edit/valueProcess.js
+++ b/entity/Activity_entity/entityfields/user_edit/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Activity_entity/entityfields/user_new/valueProcess.js b/entity/Activity_entity/entityfields/user_new/valueProcess.js
index 7c566863b493d778b72dea7d8822f6a59333e77d..dda83cfd00e13df5c6da64151f5d1e6d932a681e 100644
--- a/entity/Activity_entity/entityfields/user_new/valueProcess.js
+++ b/entity/Activity_entity/entityfields/user_new/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Activity_entity/recordcontainers/db/conditionProcess.js b/entity/Activity_entity/recordcontainers/db/conditionProcess.js
index 9c8391b37c47aa5a3d88d8d58f8d5b59760f8470..c772668cbde4f80831fa000cd266d7e6d8cc97af 100644
--- a/entity/Activity_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Activity_entity/recordcontainers/db/conditionProcess.js
@@ -6,7 +6,16 @@ import("Sql_lib");
 var cond = new SqlCondition();
 if (vars.exists("$param.RowId_param") && vars.get("$param.RowId_param") && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param"))
 {
-    var activityLinkCond = SqlCondition.begin().andPrepareVars("ACTIVITYLINK.OBJECT_ROWID", "$param.RowId_param")
+    var rowId = vars.get("$param.RowId_param");
+    var rowIdCond = null;
+    if (vars.get("$param.ObjectId_param") == "Person")
+    {
+        rowId = db.cell(SqlCondition.begin()
+            .andPrepare("CONTACT.CONTACTID", rowId)
+            .buildSql("select PERSON_ID from CONTACT", "1 = 2"))
+        rowIdCond = "# in (select CONTACTID from CONTACT where PERSON_ID = ?)";
+    }
+    var activityLinkCond = SqlCondition.begin().andPrepare("ACTIVITYLINK.OBJECT_ROWID", rowId, rowIdCond)
                                                .andPrepareVars("ACTIVITYLINK.OBJECT_TYPE", "$param.ObjectId_param");
 
                                                             // TODO: more performant way than IN. Maybe a join??
diff --git a/entity/Activity_entity/recordcontainers/db/onDBDelete.js b/entity/Activity_entity/recordcontainers/db/onDBDelete.js
index 787c4614c1462768ec4b375d47ef1a79eb2d57d3..3ede97828741f9baed6f5ef05de7d3913953e3fc 100644
--- a/entity/Activity_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Activity_entity/recordcontainers/db/onDBDelete.js
@@ -1,11 +1,8 @@
 import("system.vars");
 import("system.db");
 import("Sql_lib");
-import("Context_lib");
 
 var activityObjectsCondition = SqlCondition.begin()
-                                           .andPrepare("AB_OBJECTRELATION.OBJECT1_TYPE", ContextUtils.getCurrentContextId())
-                                           .andPrepareVars("AB_OBJECTRELATION.OBJECT1_ROWID", "$field.ACTIVITYID");
-
-db.deleteData("AB_OBJECTRELATION", activityObjectsCondition.build("1=2"));
+                                           .andPrepareVars("ACTIVITYLINK.ACTIVITY_ID", "$field.ACTIVITYID");
 
+db.deleteData("ACTIVITYLINK", activityObjectsCondition.build("1=2"));
\ No newline at end of file
diff --git a/entity/AddressType_entity/AddressType_entity.aod b/entity/AddressType_entity/AddressType_entity.aod
index 48ca8e67b91507e4f0b7da1a3cc976e8b6a5027e..909902406deb535fd2c94eb6eea4d06559810eab 100644
--- a/entity/AddressType_entity/AddressType_entity.aod
+++ b/entity/AddressType_entity/AddressType_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>AddressType_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <titleProcess>%aditoprj%/entity/AddressType_entity/titleProcess.js</titleProcess>
diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod
index 67b08770d2ad0f4346df83f0a2758f14fcd9299e..df8385fa8fbe6b6e32f925fcf2bba765e0d03d3d 100644
--- a/entity/Address_entity/Address_entity.aod
+++ b/entity/Address_entity/Address_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Address_entity</name>
   <title>Addresses</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -21,6 +21,7 @@
     </entityField>
     <entityField>
       <name>ADDRIDENTIFIER</name>
+      <title>{$ADDRESS_IDENTIFIER}</title>
     </entityField>
     <entityField>
       <name>ADDR_TYPE</name>
@@ -141,6 +142,10 @@
           <name>DefaultAddressId_param</name>
           <expose v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>OrganisationId_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityProvider>
@@ -188,6 +193,7 @@
     </entityField>
     <entityParameter>
       <name>DefaultAddressId_param</name>
+      <valueProcess>%aditoprj%/entity/Address_entity/entityfields/defaultaddressid_param/valueProcess.js</valueProcess>
       <expose v="true" />
       <mandatory v="false" />
       <documentation>%aditoprj%/entity/Address_entity/entityfields/defaultaddressid_param/documentation.adoc</documentation>
@@ -210,6 +216,12 @@
           <fieldName>ContactAndOrganisationAddresses</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>daa41953-8e95-46f2-b08a-6c843ab87985</name>
+          <entityName>Offer_entity</entityName>
+          <fieldName>PossibleAddresses</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
@@ -222,7 +234,10 @@
         </entityParameter>
         <entityParameter>
           <name>OrganisationId_param</name>
+          <title></title>
+          <valueProcess>%aditoprj%/entity/Address_entity/entityfields/organisationandcontactaddresses/children/organisationid_param/valueProcess.js</valueProcess>
           <expose v="true" />
+          <documentation>%aditoprj%/entity/Address_entity/entityfields/organisationandcontactaddresses/children/organisationid_param/documentation.adoc</documentation>
         </entityParameter>
         <entityParameter>
           <name>ContactId_param</name>
@@ -250,12 +265,37 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/Address_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Address_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/Address_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Address_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>IS_STANDARD_ICON</name>
+      <title>Standard</title>
+      <contentType>IMAGE</contentType>
+      <contentTypeProcess>%aditoprj%/entity/Address_entity/entityfields/is_standard_icon/contentTypeProcess.js</contentTypeProcess>
+      <valueProcess>%aditoprj%/entity/Address_entity/entityfields/is_standard_icon/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
       <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/Address_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/Address_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBInsert>%aditoprj%/entity/Address_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <linkInformation>
         <linkInformation>
           <name>6a0005cc-c64b-4044-9712-c9d00f02d7a8</name>
@@ -321,6 +361,22 @@
           <name>ADDR_TYPE.displayValue</name>
           <expression>%aditoprj%/entity/Address_entity/recordcontainers/db/recordfieldmappings/addr_type.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>ADDRESS.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>ADDRESS.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>ADDRESS.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>ADDRESS.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Address_entity/entityfields/country/valueProcess.js b/entity/Address_entity/entityfields/country/valueProcess.js
index 041ab63a44192cb45fc7c5ba3845dc733cb61600..0bbec92588a0d5155ba8f200c1c8699e0c106ed7 100644
--- a/entity/Address_entity/entityfields/country/valueProcess.js
+++ b/entity/Address_entity/entityfields/country/valueProcess.js
@@ -1,10 +1,8 @@
-import("system.logging");
 import("system.util");
 import("system.result");
 import("system.neon");
 import("system.vars");
 
-logging.log("recordstate = " + vars.get("$sys.recordstate"))
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value"))
 {
     result.string("DE");
diff --git a/entity/Address_entity/entityfields/date_edit/valueProcess.js b/entity/Address_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5e6ef059738e0c724a468685333a5e257ac228ce
--- /dev/null
+++ b/entity/Address_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/date_new/valueProcess.js b/entity/Address_entity/entityfields/date_new/valueProcess.js
index 408c498a4c90f59cd95eafbf74a8ea2683bab068..a72892783bf2bd04fe353c47f1be0cb570bbb323 100644
--- a/entity/Address_entity/entityfields/date_new/valueProcess.js
+++ b/entity/Address_entity/entityfields/date_new/valueProcess.js
@@ -1,7 +1,7 @@
-import("system.vars");
+import("system.util");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.date"));
-
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/defaultaddressid_param/valueProcess.js b/entity/Address_entity/entityfields/defaultaddressid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9c5d394a1a55a336b53ea24c4bbe5cc5afa53be7
--- /dev/null
+++ b/entity/Address_entity/entityfields/defaultaddressid_param/valueProcess.js
@@ -0,0 +1,20 @@
+import("Sql_lib");
+import("system.db");
+import("system.result");
+import("system.vars");
+
+//this organisationId param is optional which means:
+//if it's not given for the "OrganisationAndContactAddresses"-provider we've to find the orgId by the passed CONTACTID
+//the reason behind this is: whenever the consuming entity can provide the organisationid it should provide the id to improve performance 
+//(since we[Address_entity] have not to find out the value our own) 
+//but if the consuming entity does not have the value we[Address_entity] will do it for the sake of simpler usage
+
+var contactId = vars.get("$param.ContactId_param");
+if (contactId)
+{
+    var sql = SqlCondition.begin()
+    .andPrepare("CONTACT.CONTACTID", contactId)
+    .buildSql("select CONTACT.ADDRESS_ID from CONTACT");
+    var organisationId = db.cell(sql);
+    result.string(organisationId);
+}
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/is_standard/documentation.adoc b/entity/Address_entity/entityfields/is_standard/documentation.adoc
index fb7d4bac8de251235814acac61084c0f44919064..6a7186b4676561a755c46356e525477ed0c6ea28 100644
--- a/entity/Address_entity/entityfields/is_standard/documentation.adoc
+++ b/entity/Address_entity/entityfields/is_standard/documentation.adoc
@@ -1,3 +1,3 @@
 The `IS_STANDARD` field specifies if an ADDRESS is the standard address (see Address_entity documentation)
-
-However that information is not stored directly in the `ADDRESS` database table. Every `CONTACT`-record has an own standard address.
\ No newline at end of file
+However that information is not stored directly in the `ADDRESS` database table. Every `CONTACT`-record has an own standard address.
+This fields works only correct if `DefaultAddressId_param` is passed.
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/is_standard_icon/contentTypeProcess.js b/entity/Address_entity/entityfields/is_standard_icon/contentTypeProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2c348afa93c82ff8f11312242f9eb36fcd174111
--- /dev/null
+++ b/entity/Address_entity/entityfields/is_standard_icon/contentTypeProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.result");
+
+var isStandard = vars.getString("$field.IS_STANDARD") == "true";
+var res;
+if (isStandard)
+    res = "IMAGE";
+else
+    res = "TEXT";
+result.string(res);
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/is_standard_icon/valueProcess.js b/entity/Address_entity/entityfields/is_standard_icon/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7420487f08a230ce60f272cdd253abf4331667c2
--- /dev/null
+++ b/entity/Address_entity/entityfields/is_standard_icon/valueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+
+var isStandard = vars.getString("$field.IS_STANDARD") == "true";
+var res;
+if (isStandard)
+    res = "VAADIN:MAP_MARKER";
+else
+    res = "";
+result.string(res);
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/organisationandcontactaddresses/children/organisationid_param/documentation.adoc b/entity/Address_entity/entityfields/organisationandcontactaddresses/children/organisationid_param/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..74649993db04d3b1a82da68fb7f50ba86b972235
--- /dev/null
+++ b/entity/Address_entity/entityfields/organisationandcontactaddresses/children/organisationid_param/documentation.adoc
@@ -0,0 +1,2 @@
+This param will be calculated automatically with the given "ContactId_param" if you do not pass it.
+When you've got the ORGANISTAIONID-value already you should pass it for better performance.
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/organisationandcontactaddresses/children/organisationid_param/valueProcess.js b/entity/Address_entity/entityfields/organisationandcontactaddresses/children/organisationid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c4bf0500f2c4d1835300f8dbcb921f28b8917f7c
--- /dev/null
+++ b/entity/Address_entity/entityfields/organisationandcontactaddresses/children/organisationid_param/valueProcess.js
@@ -0,0 +1,20 @@
+import("Sql_lib");
+import("system.db");
+import("system.result");
+import("system.vars");
+
+//this organisationId param is optional which means:
+//if it's not given for the "OrganisationAndContactAddresses"-provider we've to find the orgId by the passed CONTACTID
+//the reason behind this is: whenever the consuming entity can provide the organisationid it should provide the id to improve performance 
+//(since we[Address_entity] have not to find out the value our own) 
+//but if the consuming entity does not have the value we[Address_entity] will do it for the sake of simpler usage
+
+var contactId = vars.get("$param.ContactId_param");
+if (contactId)
+{
+    var sql = SqlCondition.begin()
+                          .andPrepare("CONTACT.CONTACTID", contactId)
+                          .buildSql("select CONTACT.ORGANISATION_ID from CONTACT");
+    var organisationId = db.cell(sql);
+    result.string(organisationId);
+}
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/user_edit/valueProcess.js b/entity/Address_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6af880ae3e0e2b89b4eee8327ed49f1eefe458af
--- /dev/null
+++ b/entity/Address_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/user_new/valueProcess.js b/entity/Address_entity/entityfields/user_new/valueProcess.js
index 7c566863b493d778b72dea7d8822f6a59333e77d..e518bc75a9494e53a83613dedd943106e74fc00a 100644
--- a/entity/Address_entity/entityfields/user_new/valueProcess.js
+++ b/entity/Address_entity/entityfields/user_new/valueProcess.js
@@ -1,6 +1,7 @@
-import("system.vars");
+import("system.util");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Address_entity/recordcontainers/db/onDBInsert.js b/entity/Address_entity/recordcontainers/db/onDBInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..4f0f20e26a8335a324327f5df12e37c8399545e3
--- /dev/null
+++ b/entity/Address_entity/recordcontainers/db/onDBInsert.js
@@ -0,0 +1,13 @@
+import("system.logging");
+import("system.vars");
+import("StandardObject_lib");
+
+var typeParam = vars.get("$param.ContactType_param");
+var scopeType = null
+if (typeParam === "contact")
+    scopeType = "Person"
+else if (typeParam === "organisation")
+    scopeType = "Organisation"
+
+new StandardObject("Address", vars.get("$field.ADDRESSID"), scopeType, vars.get("$field.CONTACT_ID"))
+    .onObjectInsert()
diff --git a/entity/Address_entity/recordcontainers/db/orderClauseProcess.js b/entity/Address_entity/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7cafef1a54066dc53101218e6709f0d4f18b400e
--- /dev/null
+++ b/entity/Address_entity/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.db");
+
+result.object({"ADDRESS.COUNTRY": db.ASCENDING,
+               "ADDRESS.ADDRESS": db.ASCENDING});
\ No newline at end of file
diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod
index bd84a0459439912929c80568adf8f0c59af700bc..65221a6d022823d235aff680ff5f1d6fee485bb2 100644
--- a/entity/AnyContact_entity/AnyContact_entity.aod
+++ b/entity/AnyContact_entity/AnyContact_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>AnyContact_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <titleProcess>%aditoprj%/entity/AnyContact_entity/titleProcess.js</titleProcess>
@@ -62,36 +62,6 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description>
       <searchable v="false" />
       <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/contactType/valueProcess.js</valueProcess>
     </entityField>
-    <entityConsumer>
-      <name>Contact</name>
-      <fieldType>DEPENDENCY_OUT</fieldType>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Person_entity</entityName>
-        <fieldName>Contact</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/contact/children/contactid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityConsumer>
-      <name>Organisations</name>
-      <fieldType>DEPENDENCY_OUT</fieldType>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Organisation_entity</entityName>
-        <fieldName>Organisations</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/organisation/children/ContactId_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
     <entityField>
       <name>ORGANISATION_NAME</name>
       <title>Organisation name</title>
@@ -110,38 +80,6 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description>
       <searchable v="false" />
       <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/image/valueProcess.js</valueProcess>
     </entityField>
-    <entityConsumer>
-      <name>EmailCommunications</name>
-      <fieldType>DEPENDENCY_OUT</fieldType>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Communication_entity</entityName>
-        <fieldName>EmailCommunications</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/emailcommunications/children/contactid_param/valueProcess.js</valueProcess>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityConsumer>
-    <entityConsumer>
-      <name>PhoneCommunications</name>
-      <fieldType>DEPENDENCY_OUT</fieldType>
-      <dependency>
-        <name>dependency</name>
-        <entityName>Communication_entity</entityName>
-        <fieldName>PhoneCommunications</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>ContactId_param</name>
-          <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/phonecommunications/children/contactid_param/valueProcess.js</valueProcess>
-          <expose v="false" />
-        </entityParameter>
-      </children>
-    </entityConsumer>
     <entityField>
       <name>STANDARD_EMAIL_COMMUNICATION</name>
       <title>standard email</title>
@@ -177,6 +115,8 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description>
       <name>db</name>
       <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/AnyContact_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
+      <conditionProcess>%aditoprj%/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/AnyContact_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <linkInformation>
         <linkInformation>
           <name>7b3fa460-44a1-40f3-89e3-1625ce9c6bb3</name>
diff --git a/entity/AnyContact_entity/entityfields/contacttype/valueProcess.js b/entity/AnyContact_entity/entityfields/contacttype/valueProcess.js
index 32bb8ca1976dad71cedfc90616c378fce1d9ccde..1974bb4d5a7c88145de2d44d53a22c00ece7aab3 100644
--- a/entity/AnyContact_entity/entityfields/contacttype/valueProcess.js
+++ b/entity/AnyContact_entity/entityfields/contacttype/valueProcess.js
@@ -2,4 +2,4 @@ import("system.result");
 import("system.vars");
 import("Contact_lib")
 
-result.object(ContactUtils.getRelationType(vars.get("$field.CONTACTID"), vars.get("$field.PERSON_ID"), vars.get("$field.ORGANISATION_ID")));
\ No newline at end of file
+result.object(ContactUtils.getContactType(vars.get("$field.CONTACTID"), vars.get("$field.PERSON_ID"), vars.get("$field.ORGANISATION_ID")));
\ No newline at end of file
diff --git a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js
index be3227f265bc70e2000c01813a33053950a02445..e3e997905f8c97b4a21ca506627746a2b93dbde1 100644
--- a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js
@@ -1,13 +1,14 @@
-import("system.vars");
 import("system.db");
 import("system.result");
 import("Sql_lib");
 
+//exclude private organisation
 var cond = SqlCondition.begin()
-                            
-// filter privat company if it is not needed
-if (!vars.exists("$param.WithPrivat_param") || vars.get("$param.WithPrivat_param") != "1")
-    cond.andPrepare("ORGANISATION.ORGANISATIONID", "0", "# <> ?");
+                       .andPrepare("CONTACT.ORGANISATION_ID", "0", "# != ?")
+                       .orSqlCondition(SqlCondition.begin()
+                                                     .andPrepare("CONTACT.ORGANISATION_ID", "0")
+                                                     .and("CONTACT.PERSON_ID is not null")
+                       );
+                       
 
-//TODO: use a preparedCondition when available #1030812 #1034026
-result.string(db.translateCondition(cond.build("1 = 1")));
\ No newline at end of file
+result.string(db.translateCondition(cond.build()));
\ No newline at end of file
diff --git a/entity/AnyContact_entity/recordcontainers/db/fromClauseProcess.js b/entity/AnyContact_entity/recordcontainers/db/fromClauseProcess.js
index c2008fc0d19dfe96ca7074d6f2ceddf2c5941f78..7dc4c1aa3f7ef16b0515795e0db3bfd3aabff75a 100644
--- a/entity/AnyContact_entity/recordcontainers/db/fromClauseProcess.js
+++ b/entity/AnyContact_entity/recordcontainers/db/fromClauseProcess.js
@@ -1,4 +1,4 @@
 import("system.result");
 import("Contact_lib")
 
-result.string(ContactUtils.getFullRelationString());
\ No newline at end of file
+result.string(ContactUtils.getFullContactString());
\ No newline at end of file
diff --git a/entity/AnyContact_entity/recordcontainers/db/orderClauseProcess.js b/entity/AnyContact_entity/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..19dc62881edc6aaf5268121f4d793bc895e8e942
--- /dev/null
+++ b/entity/AnyContact_entity/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.db");
+
+result.object({
+    "ORGANISATION.CUSTOMERCODE": db.ASCENDING,
+    "ORGANISATION.NAME": db.ASCENDING,
+    "PERSON.LASTNAME": db.ASCENDING,
+    "PERSON.FIRSTNAME": db.ASCENDING
+    });
\ No newline at end of file
diff --git a/entity/AppointmentLink_entity/AppointmentLink_entity.aod b/entity/AppointmentLink_entity/AppointmentLink_entity.aod
index 47911cce2a6a948fc2303ff76b18693c7cab17cc..ca77a525dedd69f42891f6f25b319b1cba1a6afe 100644
--- a/entity/AppointmentLink_entity/AppointmentLink_entity.aod
+++ b/entity/AppointmentLink_entity/AppointmentLink_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>AppointmentLink_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <recordContainer>db</recordContainer>
@@ -18,13 +18,21 @@
     </entityField>
     <entityField>
       <name>OBJECTID</name>
+      <title>{$OBJECTLINK_OBJECT}</title>
       <consumer>Objects</consumer>
-      <linkedContext>Object_context</linkedContext>
+      <linkedContext>Object</linkedContext>
+      <displayValueProcess>%aditoprj%/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js</displayValueProcess>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
     </entityField>
     <entityField>
       <name>OBJECTTYPE</name>
+      <title>{$OBJECTLINK_TYPE}</title>
       <consumer>Context</consumer>
-      <linkedContext>Context_context</linkedContext>
+      <linkedContext>Context</linkedContext>
       <displayValueProcess>%aditoprj%/entity/AppointmentLink_entity/entityfields/objecttype/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityParameter>
@@ -50,6 +58,7 @@
         <entityParameter>
           <name>AppointmentId_param</name>
           <expose v="true" />
+          <triggerRecalculation v="true" />
         </entityParameter>
       </children>
     </entityProvider>
@@ -79,6 +88,11 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityActionField>
+      <name>opencontext</name>
+      <fieldType>ACTION</fieldType>
+      <onActionProcess>%aditoprj%/entity/AppointmentLink_entity/entityfields/opencontext/onActionProcess.js</onActionProcess>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js b/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..844708f89dc0cc824e7651eade24917d5a38e4fb
--- /dev/null
+++ b/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js
@@ -0,0 +1,7 @@
+import("system.logging");
+import("system.db");
+import("system.vars");
+import("system.result");
+import("Context_lib")
+
+result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECTTYPE"), vars.get("$field.OBJECTID"))));
\ No newline at end of file
diff --git a/entity/AppointmentLink_entity/entityfields/objecttype/displayValueProcess.js b/entity/AppointmentLink_entity/entityfields/objecttype/displayValueProcess.js
index bc84d07a9f8ab6e9bbfde0de443cd0322a26a69b..9e7fb9a949fc371e06d22408fb69bf998b9488e7 100644
--- a/entity/AppointmentLink_entity/entityfields/objecttype/displayValueProcess.js
+++ b/entity/AppointmentLink_entity/entityfields/objecttype/displayValueProcess.js
@@ -1,9 +1,11 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-import("system.project");
-
-if (vars.exists("$field.OBJECTTYPE") && vars.get("$field.OBJECTTYPE"))
-{
-    result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECTTYPE"))[1]);
+import("system.logging");
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("system.project");
+
+if (vars.exists("$field.OBJECTTYPE") && vars.get("$field.OBJECTTYPE"))
+{
+    logging.log("objecttype value: " + project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECTTYPE"))[1]);
+    result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECTTYPE"))[1]);
 }
\ No newline at end of file
diff --git a/entity/AppointmentLink_entity/entityfields/opencontext/onActionProcess.js b/entity/AppointmentLink_entity/entityfields/opencontext/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..961eba99f12d553ebe624d8a5e8aa2adb588da7f
--- /dev/null
+++ b/entity/AppointmentLink_entity/entityfields/opencontext/onActionProcess.js
@@ -0,0 +1,5 @@
+import("system.logging");
+
+
+
+logging.log("derp");
\ No newline at end of file
diff --git a/entity/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod
index afc0d976212f4f029d428c480c6c525e1aec5161..4fa14d9e2bbd366ce8140f32e29d28a339b06d76 100644
--- a/entity/Appointment_entity/Appointment_entity.aod
+++ b/entity/Appointment_entity/Appointment_entity.aod
@@ -1,200 +1,207 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
-  <name>Appointment_entity</name>
-  <title>Termin</title>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <documentation>%aditoprj%/entity/Appointment_entity/documentation.adoc</documentation>
-  <recordContainer>jdito</recordContainer>
-  <entityFields>
-    <entityField>
-      <name>SUMMARY</name>
-      <title>Betreff</title>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/summary/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>DESCRIPTION</name>
-    </entityField>
-    <entityField>
-      <name>CLASSIFICATION</name>
-      <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/classification/possibleItemsProcess.js</possibleItemsProcess>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/classification/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>BEGIN</name>
-      <selectionMode>SINGLE</selectionMode>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/begin/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>END</name>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/end/valueProcess.js</valueProcess>
-    </entityField>
-    <entityFieldGroup>
-      <name>STARTEND</name>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/startend/valueProcess.js</valueProcess>
-      <description>FIELDGROUP</description>
-      <fields>
-        <element>BEGIN</element>
-        <element>END</element>
-      </fields>
-    </entityFieldGroup>
-    <entityField>
-      <name>STATUS</name>
-      <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess>
-    </entityField>
-    <entityField>
-      <name>LOCATION</name>
-    </entityField>
-    <entityField>
-      <name>REMINDER_CHECK</name>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/reminder_check/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>REMINDER</name>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/reminder/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>CATEGORIES</name>
-      <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/categories/possibleItemsProcess.js</possibleItemsProcess>
-    </entityField>
-    <entityField>
-      <name>ATTENDEES</name>
-      <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/attendees/possibleItemsProcess.js</possibleItemsProcess>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/attendees/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>TRANSPARENCY</name>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/transparency/valueProcess.js</valueProcess>
-    </entityField>
-    <entityActionGroup>
-      <name>PartStatActionGroup</name>
-      <children>
-        <entityActionField>
-          <name>accept</name>
-          <fieldType>ACTION</fieldType>
-          <title>accept</title>
-          <onActionProcess>%aditoprj%/entity/Appointment_entity/entityfields/partstatactiongroup/children/accept/onActionProcess.js</onActionProcess>
-          <actionOrder v="0" />
-          <iconId>VAADIN:CHECK</iconId>
-        </entityActionField>
-        <entityActionField>
-          <name>decline</name>
-          <fieldType>ACTION</fieldType>
-          <title>decline</title>
-          <description></description>
-          <onActionProcess>%aditoprj%/entity/Appointment_entity/entityfields/partstatactiongroup/children/decline/onActionProcess.js</onActionProcess>
-          <iconId>VAADIN:CLOSE</iconId>
-        </entityActionField>
-        <entityActionField>
-          <name>tentative</name>
-          <fieldType>ACTION</fieldType>
-          <title>tentative</title>
-          <onActionProcess>%aditoprj%/entity/Appointment_entity/entityfields/partstatactiongroup/children/tentative/onActionProcess.js</onActionProcess>
-          <iconId>VAADIN:QUESTION</iconId>
-        </entityActionField>
-      </children>
-    </entityActionGroup>
-    <entityProvider>
-      <name>#PROVIDER</name>
-      <recordContainer>jdito</recordContainer>
-    </entityProvider>
-    <entityParameter>
-      <name>MasterEntry_param</name>
-      <expose v="true" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityField>
-      <name>ORGANIZER</name>
-    </entityField>
-    <entityField>
-      <name>RRULE</name>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/rrule/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>RECURRENCEID</name>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/recurrenceid/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>SAFESCOPEFIELD</name>
-    </entityField>
-    <entityField>
-      <name>MASTERBEGIN</name>
-    </entityField>
-    <entityField>
-      <name>MASTEREND</name>
-    </entityField>
-    <entityField>
-      <name>UID</name>
-      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/uid/valueProcess.js</valueProcess>
-    </entityField>
-    <entityField>
-      <name>ATTENDEESLENGTH</name>
-    </entityField>
-    <entityField>
-      <name>ICON</name>
-    </entityField>
-    <entityParameter>
-      <name>Entry_param</name>
-      <expose v="true" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityParameter>
-      <name>AnyObjectRowid_param</name>
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityParameter>
-      <name>AnyObjectType_param</name>
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityConsumer>
-      <name>AppointmentLinks</name>
-      <fieldType>DEPENDENCY_OUT</fieldType>
-      <dependency>
-        <name>dependency</name>
-        <entityName>AppointmentLink_entity</entityName>
-        <fieldName>Links</fieldName>
-      </dependency>
-      <children>
-        <entityParameter>
-          <name>AppointmentId_param</name>
-          <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/appointmentlinks/children/appointmentid_param/valueProcess.js</valueProcess>
-        </entityParameter>
-      </children>
-    </entityConsumer>
-  </entityFields>
-  <recordContainers>
-    <jDitoRecordContainer>
-      <name>jdito</name>
-      <title>jdito</title>
-      <description></description>
-      <jDitoRecordAlias>_____SYSTEMALIAS</jDitoRecordAlias>
-      <contentProcess>%aditoprj%/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
-      <onInsert>%aditoprj%/entity/Appointment_entity/recordcontainers/jdito/onInsert.js</onInsert>
-      <onUpdate>%aditoprj%/entity/Appointment_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
-      <onDelete>%aditoprj%/entity/Appointment_entity/recordcontainers/jdito/onDelete.js</onDelete>
-      <recordFields>
-        <element>UID.value</element>
-        <element>ATTENDEESLENGTH.value</element>
-        <element>BEGIN.value</element>
-        <element>END.value</element>
-        <element>SUMMARY.value</element>
-        <element>ORGANIZER.value</element>
-        <element>ATTENDEES.value</element>
-        <element>STATUS.value</element>
-        <element>LINKS.value</element>
-        <element>DESCRIPTION.value</element>
-        <element>LOCATION.value</element>
-        <element>ICON.value</element>
-        <element>CLASSIFICATION.value</element>
-        <element>TRANSPARENCY.value</element>
-        <element>CATEGORIES.value</element>
-        <element>REMINDER.value</element>
-        <element>REMINDER_CHECK.value</element>
-        <element>RRULE.value</element>
-        <element>RECURRENCEID.value</element>
-        <element>SAFESCOPEFIELD.value</element>
-        <element>MASTERBEGIN.value</element>
-        <element>MASTEREND.value</element>
-      </recordFields>
-    </jDitoRecordContainer>
-  </recordContainers>
-</entity>
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
+  <name>Appointment_entity</name>
+  <title>Termin</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/Appointment_entity/documentation.adoc</documentation>
+  <afterUiInit>%aditoprj%/entity/Appointment_entity/afterUiInit.js</afterUiInit>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityField>
+      <name>SUMMARY</name>
+      <title>Betreff</title>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/summary/valueProcess.js</valueProcess>
+      <onValueChange>%aditoprj%/entity/Appointment_entity/entityfields/summary/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
+    </entityField>
+    <entityField>
+      <name>DESCRIPTION</name>
+    </entityField>
+    <entityField>
+      <name>CLASSIFICATION</name>
+      <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/classification/possibleItemsProcess.js</possibleItemsProcess>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/classification/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>BEGIN</name>
+      <selectionMode>SINGLE</selectionMode>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/begin/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>END</name>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/end/valueProcess.js</valueProcess>
+    </entityField>
+    <entityFieldGroup>
+      <name>STARTEND</name>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/startend/valueProcess.js</valueProcess>
+      <description>FIELDGROUP</description>
+      <fields>
+        <element>BEGIN</element>
+        <element>END</element>
+      </fields>
+    </entityFieldGroup>
+    <entityField>
+      <name>STATUS</name>
+      <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+    <entityField>
+      <name>LOCATION</name>
+    </entityField>
+    <entityField>
+      <name>REMINDER_CHECK</name>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/reminder_check/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>REMINDER</name>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/reminder/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>CATEGORIES</name>
+      <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/categories/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+    <entityField>
+      <name>ATTENDEES</name>
+      <possibleItemsProcess>%aditoprj%/entity/Appointment_entity/entityfields/attendees/possibleItemsProcess.js</possibleItemsProcess>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/attendees/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>TRANSPARENCY</name>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/transparency/valueProcess.js</valueProcess>
+    </entityField>
+    <entityActionGroup>
+      <name>PartStatActionGroup</name>
+      <children>
+        <entityActionField>
+          <name>accept</name>
+          <fieldType>ACTION</fieldType>
+          <title>accept</title>
+          <onActionProcess>%aditoprj%/entity/Appointment_entity/entityfields/partstatactiongroup/children/accept/onActionProcess.js</onActionProcess>
+          <actionOrder v="0" />
+          <iconId>VAADIN:CHECK</iconId>
+        </entityActionField>
+        <entityActionField>
+          <name>decline</name>
+          <fieldType>ACTION</fieldType>
+          <title>decline</title>
+          <description></description>
+          <onActionProcess>%aditoprj%/entity/Appointment_entity/entityfields/partstatactiongroup/children/decline/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:CLOSE</iconId>
+        </entityActionField>
+        <entityActionField>
+          <name>tentative</name>
+          <fieldType>ACTION</fieldType>
+          <title>tentative</title>
+          <onActionProcess>%aditoprj%/entity/Appointment_entity/entityfields/partstatactiongroup/children/tentative/onActionProcess.js</onActionProcess>
+          <iconId>VAADIN:QUESTION</iconId>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityProvider>
+      <name>#PROVIDER</name>
+      <recordContainer>jdito</recordContainer>
+    </entityProvider>
+    <entityParameter>
+      <name>MasterEntry_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityField>
+      <name>ORGANIZER</name>
+    </entityField>
+    <entityField>
+      <name>RRULE</name>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/rrule/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>RECURRENCEID</name>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/recurrenceid/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>SAFESCOPEFIELD</name>
+    </entityField>
+    <entityField>
+      <name>MASTERBEGIN</name>
+    </entityField>
+    <entityField>
+      <name>MASTEREND</name>
+    </entityField>
+    <entityField>
+      <name>UID</name>
+      <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/uid/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>ATTENDEESLENGTH</name>
+    </entityField>
+    <entityField>
+      <name>ICON</name>
+    </entityField>
+    <entityParameter>
+      <name>Entry_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>AnyObjectRowid_param</name>
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>AnyObjectType_param</name>
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityConsumer>
+      <name>AppointmentLinks</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AppointmentLink_entity</entityName>
+        <fieldName>Links</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>AppointmentId_param</name>
+          <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/appointmentlinks/children/appointmentid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <title>jdito</title>
+      <description></description>
+      <jDitoRecordAlias>_____SYSTEMALIAS</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <onInsert>%aditoprj%/entity/Appointment_entity/recordcontainers/jdito/onInsert.js</onInsert>
+      <onUpdate>%aditoprj%/entity/Appointment_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
+      <onDelete>%aditoprj%/entity/Appointment_entity/recordcontainers/jdito/onDelete.js</onDelete>
+      <recordFields>
+        <element>UID.value</element>
+        <element>ATTENDEESLENGTH.value</element>
+        <element>BEGIN.value</element>
+        <element>END.value</element>
+        <element>SUMMARY.value</element>
+        <element>ORGANIZER.value</element>
+        <element>ATTENDEES.value</element>
+        <element>STATUS.value</element>
+        <element>LINKS.value</element>
+        <element>DESCRIPTION.value</element>
+        <element>LOCATION.value</element>
+        <element>ICON.value</element>
+        <element>CLASSIFICATION.value</element>
+        <element>TRANSPARENCY.value</element>
+        <element>CATEGORIES.value</element>
+        <element>REMINDER.value</element>
+        <element>REMINDER_CHECK.value</element>
+        <element>RRULE.value</element>
+        <element>RECURRENCEID.value</element>
+        <element>SAFESCOPEFIELD.value</element>
+        <element>MASTERBEGIN.value</element>
+        <element>MASTEREND.value</element>
+      </recordFields>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/Appointment_entity/afterUiInit.js b/entity/Appointment_entity/afterUiInit.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e420da40299a338582d21fb1974cb19ca6cc29e
--- /dev/null
+++ b/entity/Appointment_entity/afterUiInit.js
@@ -0,0 +1,22 @@
+import("system.util");
+import("system.neon");
+import("system.logging");
+import("system.vars");
+
+
+
+
+if(vars.exists("$param.Entry_param") && vars.get("$param.Entry_param"))
+{
+    var entry = JSON.parse(vars.getString("$param.Entry_param"));
+   
+    if(entry["AppLinkContext"] && entry["AppLinkId"])
+    {
+        neon.addRecord(null, "AppointmentLinks",
+        {
+            "AB_APPOINTMENTLINKID" : util.getNewUUID(),
+            "OBJECTID" : entry["AppLinkId"],
+            "OBJECTTYPE" : entry["AppLinkContext"]
+        });
+    }
+}
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/classification/valueProcess.js b/entity/Appointment_entity/entityfields/classification/valueProcess.js
index a4056b88346388dc049b7dbcf191192c0ce66b57..a0ff98e63f4682ef482963598bde2d3efc7bf7ac 100644
--- a/entity/Appointment_entity/entityfields/classification/valueProcess.js
+++ b/entity/Appointment_entity/entityfields/classification/valueProcess.js
@@ -1,15 +1,16 @@
-import("system.neon");
-import("system.vars");
-import("system.calendars");
-import("system.result");
-
-/**
- * Following if() is only for passing param-parts from "new Appointment"-Dialog to AppointmentEditViewTemplate
- */
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.Entry_param"))
-{
-    var event = JSON.parse(vars.getString("$param.Entry_param"));
-
-    if(event[calendars.CLASSIFICATION])
-        result.string(event[calendars.CLASSIFICATION]);
+import("system.logging");
+import("system.neon");
+import("system.vars");
+import("system.calendars");
+import("system.result");
+
+/**
+ * Following if() is only for passing param-parts from "new Appointment"-Dialog to AppointmentEditViewTemplate
+ */
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.Entry_param"))
+{
+    var event = JSON.parse(vars.getString("$param.Entry_param"));
+
+    if(event[calendars.CLASSIFICATION])
+        result.string(event[calendars.CLASSIFICATION]);
 }
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/contexts/children/contextid_param/valueProcess.js b/entity/Appointment_entity/entityfields/contexts/children/contextid_param/valueProcess.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/Appointment_entity/entityfields/objects/children/objecttype_param/valueProcess.js b/entity/Appointment_entity/entityfields/objects/children/objecttype_param/valueProcess.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/Appointment_entity/entityfields/summary/onValueChange.js b/entity/Appointment_entity/entityfields/summary/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..5c77a90fc3af3a8375d03d5fe6e2ca4634f0027a
--- /dev/null
+++ b/entity/Appointment_entity/entityfields/summary/onValueChange.js
@@ -0,0 +1,10 @@
+import("system.neon");
+import("system.vars");
+import("system.calendars");
+
+
+//var entry = JSON.parse(vars.get("$param.Entry_param"));
+//
+//entry[calendars.SUMMARY] = vars.get("$field.SUMMARY");
+//
+//neon.setFieldValue("$param.Entry_param", JSON.stringify(entry));
\ No newline at end of file
diff --git a/entity/Appointment_entity/entityfields/summary/valueProcess.js b/entity/Appointment_entity/entityfields/summary/valueProcess.js
index 432475ace31148f4466c021837b49896e0a6fc45..8fd3d347cac2df60651d46bdab6fb9caffbd7ca6 100644
--- a/entity/Appointment_entity/entityfields/summary/valueProcess.js
+++ b/entity/Appointment_entity/entityfields/summary/valueProcess.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.neon");
 import("system.vars");
 import("system.calendars");
@@ -8,8 +9,28 @@ import("system.result");
  */
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.Entry_param"))
 {
+    logging.log()
+    
     var event = JSON.parse(vars.getString("$param.Entry_param"));
 
     if(event[calendars.SUMMARY])
         result.string(event[calendars.SUMMARY]);
-}
\ No newline at end of file
+}
+
+
+
+//if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.Entry_param"))
+//{
+//    var uiVal = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.SUMMARY"));
+//    var paramVal = JSON.parse(vars.getString("$param.Entry_param"))[calendars.SUMMARY];
+//    
+//    logging.log("os: " + vars.get("$sys.operatingstate"));
+//    logging.log("rs: " + vars.get("$sys.recordstate"));
+//    logging.log("paramVal: " + paramVal);
+//    logging.log("uiVal: " + uiVal);
+//    
+//    if(uiVal === paramVal || !uiVal)
+//        result.string(paramVal);
+//    else if(uiVal && !uiVal.equals(paramVal))
+//        result.string(uiVal);
+//}
\ No newline at end of file
diff --git a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js
index 89cded5903cc0c176708c92758c37d19b9f8191a..af31672dba1ba87218dc4487e0e379d5dd731dee 100644
--- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js
@@ -1,73 +1,87 @@
-import("system.result");
-import("system.vars");
-import("system.calendars");
-import("system.datetime");
-import("system.eMath");
-import("system.util");
-
-if(vars.exists("$param.Entry_param") && vars.get("$param.Entry_param"))
-{
-
-    var entry = JSON.parse(vars.getString("$param.Entry_param"));
-
-    var masterEntry = null;
-    if (vars.exists("$param.MasterEntry_param") && vars.get("$param.MasterEntry_param") != "") {
-        masterEntry = JSON.parse(vars.get("$param.MasterEntry_param"));
-    }
-
-    var uid = entry[calendars.ID];    
-    var summary = entry[calendars.SUMMARY];
-    var attendees = entry[calendars.AFFECTEDUSERS];
-    var startdate = entry[calendars.DTSTART];
-    var enddate = entry[calendars.DTEND];
-    var links = entry[calendars.LINKS];
-    var description = entry[calendars.DESCRIPTION];
-    var organizer = entry[calendars.ORGANIZER2]["paramvalue"];
-    var status = entry[calendars.STATUS];
-    var location = entry[calendars.LOCATION];
-    var reminder = entry[calendars.REMINDER_DURATION];
-    var remindercheck = entry[calendars.HASREMINDER]
-    var classification = entry[calendars.CLASSIFICATION];
-    var transparency = entry[calendars.TRANSPARENCY];
-    var categories = entry[calendars.CATEGORIES];
-    
-    var masterBegin = masterEntry != null ? masterEntry[calendars.DTSTART] : null
-    var masterEnd = masterEntry != null ? masterEntry[calendars.DTEND] : null
-    
-    // Recurrence
-    var recurrenceID = entry[calendars.RECURRENCEID];
-    var rrule = null;
-    if (masterEntry != null) { // Entry is a recurrence exception, therefore get rrule from master
-        rrule = masterEntry[calendars.RRULE] != null ? masterEntry[calendars.RRULE][0] : null;
-    } else {
-        rrule = entry[calendars.RRULE] != null ? entry[calendars.RRULE][0] : null;
-    }
-   
-    //@TODO Icon 
-    result.object([
-        [
-            uid, 
-            attendees.length, 
-            startdate, 
-            enddate, 
-            summary, 
-            organizer,
-            attendees, 
-            status, 
-            links, 
-            description, 
-            location, 
-            '', 
-            classification,
-            transparency, 
-            categories, 
-            reminder, 
-            remindercheck, 
-            rrule, 
-            recurrenceID, 
-            null, 
-            masterBegin, 
-            masterEnd
-        ]
-    ]);
-}
+import("system.result");
+import("system.vars");
+import("system.calendars");
+import("system.datetime");
+import("system.eMath");
+import("system.util");
+import("system.neon");
+
+if(vars.exists("$param.Entry_param") && vars.get("$param.Entry_param"))
+{
+
+    var entry = JSON.parse(vars.getString("$param.Entry_param"));
+
+    var masterEntry = null;
+    if (vars.exists("$param.MasterEntry_param") && vars.get("$param.MasterEntry_param") != "") {
+        masterEntry = JSON.parse(vars.get("$param.MasterEntry_param"));
+    }
+
+    var uid = entry[calendars.ID];    
+    var summary = entry[calendars.SUMMARY];
+    var attendees = entry[calendars.AFFECTEDUSERS];
+    var startdate = entry[calendars.DTSTART];
+    var enddate = entry[calendars.DTEND];
+    var links = entry[calendars.LINKS];
+    var description = entry[calendars.DESCRIPTION];
+    if(entry[calendars.ORGANIZER2] != undefined)
+        var organizer = entry[calendars.ORGANIZER2]["paramvalue"];
+    var status = entry[calendars.STATUS];
+    var location = entry[calendars.LOCATION];
+    var reminder = entry[calendars.REMINDER_DURATION];
+    var remindercheck = entry[calendars.HASREMINDER]
+    var classification = entry[calendars.CLASSIFICATION];
+    var transparency = entry[calendars.TRANSPARENCY];
+    var categories = entry[calendars.CATEGORIES];
+    
+    var masterBegin = masterEntry != null ? masterEntry[calendars.DTSTART] : null
+    var masterEnd = masterEntry != null ? masterEntry[calendars.DTEND] : null
+    
+    // Recurrence
+    var recurrenceID = entry[calendars.RECURRENCEID];
+    var rrule = null;
+    if (masterEntry != null) { // Entry is a recurrence exception, therefore get rrule from master
+        rrule = masterEntry[calendars.RRULE] != null ? masterEntry[calendars.RRULE][0] : null;
+    } else {
+        rrule = entry[calendars.RRULE] != null ? entry[calendars.RRULE][0] : null;
+    }
+    
+//    if(entry["AppLinkContext"] && entry["AppLinkId"])
+//    {
+//        logging.log("hier geht lohos... " + uid + " id");
+//        neon.addRecord(null, "AppointmentLinks",
+//        {
+//            "AB_APPOINTMENTLINKID" : util.getNewUUID(),
+//            "APPOINTMENT_ID" : vars.get("$field.UID"),
+//            "OBJECTID" : entry["AppLinkId"],
+//            "OBJECTTYPE" : entry["AppLinkContext"]
+//        });
+//    }
+   
+    //@TODO Icon 
+    result.object([
+        [
+            uid, 
+            attendees.length, 
+            startdate, 
+            enddate, 
+            summary, 
+            organizer,
+            attendees, 
+            status, 
+            links, 
+            description, 
+            location, 
+            '', 
+            classification,
+            transparency, 
+            categories, 
+            reminder, 
+            remindercheck, 
+            rrule, 
+            recurrenceID, 
+            null, 
+            masterBegin, 
+            masterEnd
+        ]
+    ]);
+}
diff --git a/entity/Appointment_entity/recordcontainers/jdito/onInsert.js b/entity/Appointment_entity/recordcontainers/jdito/onInsert.js
index d6ebfc2d5a16e8c2688ca133370cfeef3821a1e7..5c063693c6fe59f12d0b9c64fb27fbbfdb91856f 100644
--- a/entity/Appointment_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/Appointment_entity/recordcontainers/jdito/onInsert.js
@@ -1,291 +1,293 @@
-import("system.neon");
-import("system.calendars");
-import("system.vars");
-import("system.question");
-import("system.translate");
-import("system.text");
-import("system.datetime");
-import("system.db");
-import("system.result");
-import("system.tools");
-
-var event = JSON.parse(vars.getString("$param.Entry_param"));
-
-event[calendars.TYPE] = calendars.VEVENT;
-event[calendars.ID] = ""; //wenn hier neue id erstellt und mitgegeben wird, wird versucht einen termin mit dieser id zu finden, den es nicht gibt. also leer.
-event[calendars.AFFECTEDUSERS] = vars.get("$field.ATTENDEES");
-event[calendars.STATUS] = vars.getString("$field.STATUS");
-event[calendars.SUMMARY] = vars.getString("$field.SUMMARY");
-event[calendars.LOCATION] = vars.get("$field.LOCATION");
-event[calendars.DESCRIPTION] = vars.get("$field.DESCRIPTION");
-event[calendars.DTSTART] = vars.get("$field.BEGIN");
-event[calendars.DTEND] = vars.get("$field.END");
-event[calendars.CLASSIFICATION] = vars.get("$field.CLASSIFICATION");
-event[calendars.TRANSPARENCY] = vars.get("$field.TRANSPARENCY"); 
-event[calendars.CATEGORIES] = vars.get("$field.CATEGORIES");
-if(vars.get("$field.RRULE"))
-    event[calendars.RRULE] = [vars.get("$field.RRULE")];
-if (vars.get("$field.REMINDER") != undefined && vars.get("$field.REMINDER") != "")
-{
-    event[calendars.HASREMINDER] = "true";
-    event[calendars.REMINDER_DURATION] = vars.get("$field.REMINDER");
-}
-var idstringarray = calendars.insert([event]);
-event[calendars.ID] = idstringarray[0];
-vars.set("$context.editmode", calendars.MODE_UPDATE);
-
-
-
-// Liefert die Benutzer zurück, auf die keine Schreibrechte bestehen
-function getReadOnlyUser()
-{
-    var writeable = calendars.getFullCalendarUsers(calendars.RIGHT_WRITE);	
-    var affectedusers = vars.get("$context.affectedusers");
-    var readonly = new Array();
-
-    for ( i = 0; i < affectedusers.length; i++)
-    {
-        var user = affectedusers[i][0];
-        if (!isWriteable(user, writeable))
-            readonly.push(affectedusers[i][3]);
-    }	
-    return readonly;	
-}
-
-// Liefert TRUE, wenn der Benutzer bei denen mit Schreibberechtigungen enthalten ist
-function isWriteable(user, writeable)
-{
-    for (var i = 0; i < writeable.length; i++)
-    {
-        if (writeable[i][0] == calendars.getCalendarUser(user))		
-            return true;
-    }	
-    return false;
-}
-
-// Berechnet das Ende der Recurrence
-function recurrencend(event)
-{
-    var rec_end = vars.getString("$field.rec_end");
-
-    // Automatische Erkennung, was gewollt ist
-    if (rec_end == "")
-    {
-        if (vars.get("$field.rec_end_count") != "")
-            rec_end = "Endet nach Anzahl Terminen";
-        else if (vars.get("$field.rec_end_date") != "")
-            rec_end = "Endet am";
-    }
-
-    if (rec_end == "" || rec_end == "Kein Enddatum")
-    {
-    // Nichts
-    }
-    else if (rec_end == "Endet nach Anzahl Terminen")
-    {
-        event[calendars.RRULE][0] += (";COUNT=" + vars.get("$field.rec_end_count"));
-    }
-    else if (rec_end == "Endet am")
-    {
-        var dat = vars.get("$field.rec_end_date");
-        var start = vars.get("$field.start_date");
-        var localTime = datetime.toDate(dat, translate.text("yyyyMMdd")) + datetime.toDate(start, "HHmmss");
-        var utcTime = datetime.toLong(localTime, "yyyyMMddHHmmss");
-        event[calendars.RRULE][0] += (";UNTIL=" + datetime.toDate(utcTime, "yyyyMMdd\'T\'HHmmss\'Z\'", "UTC"));
-    }
-}
-
-/**
- * Berechnet die Wiederholung
- *
- * @param event Das fertige Event. Hier die Reccurrence speichern
- */
-function calcrecurrence(event)
-{
-    var rec_type = vars.get("$field.rec_type");
-
-    if (rec_type == "")
-    {
-    // Nichts
-    }
-    else if (rec_type == "Keine")
-    {
-    }
-    else if (rec_type == "Täglich")
-    {
-        rec_daily(event);
-    }
-    else if (rec_type == "Wöchentlich")
-    {
-        rec_weekly(event);
-    }
-    else if (rec_type == "Monatlich")
-    {
-        rec_monthly(event);
-    }
-    else if (rec_type == "Jährlich")
-    {
-        rec_yearly(event);
-    }
-    else
-    {
-        question.showMessage("Internal (1) " + rec_type);
-    }
-}
-/***********************/
-function rec_yearly(event)
-{
-    var rec_year = vars.get("$field.rec_yearly");
-    var rec_yearly_month = vars.get("$field.rec_yearly_month");
-    var rec_yearly_day = vars.get("$field.rec_yearly_day");
-    var month;
-    var day;
-
-    if (rec_year == "")
-    {
-        if (rec_yearly_month != "" && rec_yearly_day != "")
-            rec_year = "Jeden # #";
-        else if (rec_yearly_month != "" && vars.get("$field.rec_yearly_day2") != "" && vars.get("$field.rec_yearly_number2") != "")
-            rec_year = "Am #. # im #";
-    }
-
-    if (rec_year == "" || (rec_yearly_month == "" && rec_yearly_day == "" ))
-    {
-        question.showMessage(translate.text("yearly series not specified"));
-    }
-    else if (rec_year == "Jeden # #")
-    {
-        month = rec_yearly_month;
-        day = rec_yearly_day;
-        event[calendars.RRULE] = new Array("FREQ=YEARLY;BYMONTHDAY="+day+";BYMONTH="+month);
-    }
-    else if (rec_year == "Am #. # im #")
-    {
-        month = vars.get("$field.rec_yearly_month2");
-        day = vars.get("$field.rec_yearly_day2");
-        var number = vars.get("$field.rec_yearly_number2");
-        event[calendars.RRULE] = new Array("FREQ=YEARLY;BYMONTH="+month+";BYDAY="+number+day);
-    }
-}
-/***********************/
-function rec_monthly(event)
-{
-    var rec_month = vars.get("$field.rec_month");
-    var rec_monthly_day = vars.get("$field.rec_monthly_day");
-    var rec_monthly_interval = vars.get("$field.rec_monthly_interval");
-    var day;
-    var interval;
-
-    if (rec_month == "")
-
-    {
-        if (rec_monthly_day != "" && rec_monthly_interval != "")
-            rec_month = "Am #. jedes #. Monat";
-        else if (vars.get("$field.rec_monthly_day2") != "" && vars.get("$field.rec_monthly_interval2") != "" && vars.get("$field.rec_monthly_weekday2") != "")
-            rec_month = "Am #. # jeden #. Monat";
-    }
-
-    if (rec_month == "" || (rec_monthly_day == "" && rec_monthly_interval != ""))
-    {
-        question.showMessage(translate.text("Ignore series"));
-    }
-    else if (rec_month == "Am #. jedes #. Monat")
-    {
-        day = rec_monthly_day;
-        interval = rec_monthly_interval;
-        event[calendars.RRULE] = new Array("FREQ=MONTHLY;INTERVAL=" + interval + ";BYMONTHDAY=" + day);
-    }
-    else if(rec_month == "Am #. # jeden #. Monat")
-    {
-        day = vars.get("$field.rec_monthly_day2");
-        interval = vars.get("$field.rec_monthly_interval2");
-        var weekday = vars.get("$field.rec_monthly_weekday2");
-        event[calendars.RRULE] = new Array("FREQ=MONTHLY;INTERVAL=" + interval + ";BYDAY=" + day + weekday);
-    }
-}
-/***********************/
-function rec_weekly(event)
-{
-
-    var rec_weekly_intervall = vars.get("$field.rec_weekly_intervall");
-    if (rec_weekly_intervall == "")
-        rec_weekly_intervall = "1";
-
-    var days = new Array();
-    var count = 0;
-    if (vars.get("$field.rec_weekly_mo") == "true")
-    {
-        days[count] = "MO";
-        count++;
-    }
-    if (vars.get("$field.rec_weekly_di") == "true")
-    {
-        days[count] = "TU";
-        count++;
-    }
-    if (vars.get("$field.rec_weekly_mi") == "true")
-    {
-        days[count] = "WE";
-        count++;
-    }
-    if (vars.get("$field.rec_weekly_do") == "true")
-    {
-        days[count] = "TH";
-        count++;
-    }
-    if (vars.get("$field.rec_weekly_fr") == "true")
-    {
-        days[count] = "FR";
-        count++;
-    }
-    if (vars.get("$field.rec_weekly_sa") == "true")
-    {
-        days[count] = "SA";
-        count++;
-    }
-    if (vars.get("$field.rec_weekly_so") == "true")
-    {
-        days[count] = "SU";
-        count++;
-    }
-    if (count > 0)
-    {
-        event[calendars.RRULE] = new Array("FREQ=WEEKLY;INTERVAL=" + rec_weekly_intervall + ";WKST=MO;BYDAY=");
-        for (var i = 0; i < count; i++)
-        {
-            event[calendars.RRULE][0] += days[i];
-            if (i+1 < count)
-            {
-                event[calendars.RRULE][0] += ",";
-            }
-        }
-    }
-}
-/***********************/
-function rec_daily(event)
-{
-    var rec_dailytype = vars.get("$field.rec_dailytype");
-    var rec_dailydays = vars.get("$field.rec_daily_days");
-    if (rec_dailytype == "")
-    {
-        if (rec_dailydays != "")
-            rec_dailytype = "Alle # Tage";
-    }
-
-    if (rec_dailytype == "" || rec_dailydays == "")
-    {
-        question.showMessage(translate.text("Ignore daily series"));
-    }
-    else if (rec_dailytype == "Alle # Tage")
-    {
-        event[calendars.RRULE] = new Array("FREQ=DAILY;INTERVAL=" + rec_dailydays);
-    }
-    else if (rec_dailytype == "Jeden Arbeitstag")
-    {
-        event[calendars.RRULE][0] = new Array("FREQ=WEEKLY;WKST=MO;BYDAY=MO,TU,WE,TH,FR");
-    }
-    else
-    {
-        question.showMessage(translate.text("Internal (2)") + " " + rec_dailytype);
-    }
+import("system.neon");
+import("system.calendars");
+import("system.vars");
+import("system.question");
+import("system.translate");
+import("system.text");
+import("system.datetime");
+import("system.db");
+import("system.result");
+import("system.tools");
+
+var event = JSON.parse(vars.getString("$param.Entry_param"));
+
+event[calendars.TYPE] = calendars.VEVENT;
+event[calendars.ID] = ""; //wenn hier neue id erstellt und mitgegeben wird, wird versucht einen termin mit dieser id zu finden, den es nicht gibt. also leer.
+event[calendars.AFFECTEDUSERS] = vars.get("$field.ATTENDEES");
+event[calendars.STATUS] = vars.getString("$field.STATUS");
+//event[calendars.SUMMARY] = vars.getString("$field.SUMMARY");
+event[calendars.LOCATION] = vars.get("$field.LOCATION");
+event[calendars.DESCRIPTION] = vars.get("$field.DESCRIPTION");
+event[calendars.DTSTART] = vars.get("$field.BEGIN");
+event[calendars.DTEND] = vars.get("$field.END");
+event[calendars.CLASSIFICATION] = vars.get("$field.CLASSIFICATION");
+event[calendars.TRANSPARENCY] = vars.get("$field.TRANSPARENCY"); 
+event[calendars.CATEGORIES] = vars.get("$field.CATEGORIES");
+if(vars.get("$field.RRULE"))
+    event[calendars.RRULE] = [vars.get("$field.RRULE")];
+if (vars.get("$field.REMINDER") != undefined && vars.get("$field.REMINDER") != "")
+{
+    event[calendars.HASREMINDER] = "true";
+    event[calendars.REMINDER_DURATION] = vars.get("$field.REMINDER");
+}
+var idstringarray = calendars.insert([event]);
+event[calendars.ID] = idstringarray[0];
+neon.setFieldValue("$field.UID", event[calendars.ID]);
+
+vars.set("$context.editmode", calendars.MODE_UPDATE);
+
+
+
+// Liefert die Benutzer zurück, auf die keine Schreibrechte bestehen
+function getReadOnlyUser()
+{
+    var writeable = calendars.getFullCalendarUsers(calendars.RIGHT_WRITE);	
+    var affectedusers = vars.get("$context.affectedusers");
+    var readonly = new Array();
+
+    for ( i = 0; i < affectedusers.length; i++)
+    {
+        var user = affectedusers[i][0];
+        if (!isWriteable(user, writeable))
+            readonly.push(affectedusers[i][3]);
+    }	
+    return readonly;	
+}
+
+// Liefert TRUE, wenn der Benutzer bei denen mit Schreibberechtigungen enthalten ist
+function isWriteable(user, writeable)
+{
+    for (var i = 0; i < writeable.length; i++)
+    {
+        if (writeable[i][0] == calendars.getCalendarUser(user))		
+            return true;
+    }	
+    return false;
+}
+
+// Berechnet das Ende der Recurrence
+function recurrencend(event)
+{
+    var rec_end = vars.getString("$field.rec_end");
+
+    // Automatische Erkennung, was gewollt ist
+    if (rec_end == "")
+    {
+        if (vars.get("$field.rec_end_count") != "")
+            rec_end = "Endet nach Anzahl Terminen";
+        else if (vars.get("$field.rec_end_date") != "")
+            rec_end = "Endet am";
+    }
+
+    if (rec_end == "" || rec_end == "Kein Enddatum")
+    {
+    // Nichts
+    }
+    else if (rec_end == "Endet nach Anzahl Terminen")
+    {
+        event[calendars.RRULE][0] += (";COUNT=" + vars.get("$field.rec_end_count"));
+    }
+    else if (rec_end == "Endet am")
+    {
+        var dat = vars.get("$field.rec_end_date");
+        var start = vars.get("$field.start_date");
+        var localTime = datetime.toDate(dat, translate.text("yyyyMMdd")) + datetime.toDate(start, "HHmmss");
+        var utcTime = datetime.toLong(localTime, "yyyyMMddHHmmss");
+        event[calendars.RRULE][0] += (";UNTIL=" + datetime.toDate(utcTime, "yyyyMMdd\'T\'HHmmss\'Z\'", "UTC"));
+    }
+}
+
+/**
+ * Berechnet die Wiederholung
+ *
+ * @param event Das fertige Event. Hier die Reccurrence speichern
+ */
+function calcrecurrence(event)
+{
+    var rec_type = vars.get("$field.rec_type");
+
+    if (rec_type == "")
+    {
+    // Nichts
+    }
+    else if (rec_type == "Keine")
+    {
+    }
+    else if (rec_type == "Täglich")
+    {
+        rec_daily(event);
+    }
+    else if (rec_type == "Wöchentlich")
+    {
+        rec_weekly(event);
+    }
+    else if (rec_type == "Monatlich")
+    {
+        rec_monthly(event);
+    }
+    else if (rec_type == "Jährlich")
+    {
+        rec_yearly(event);
+    }
+    else
+    {
+        question.showMessage("Internal (1) " + rec_type);
+    }
+}
+/***********************/
+function rec_yearly(event)
+{
+    var rec_year = vars.get("$field.rec_yearly");
+    var rec_yearly_month = vars.get("$field.rec_yearly_month");
+    var rec_yearly_day = vars.get("$field.rec_yearly_day");
+    var month;
+    var day;
+
+    if (rec_year == "")
+    {
+        if (rec_yearly_month != "" && rec_yearly_day != "")
+            rec_year = "Jeden # #";
+        else if (rec_yearly_month != "" && vars.get("$field.rec_yearly_day2") != "" && vars.get("$field.rec_yearly_number2") != "")
+            rec_year = "Am #. # im #";
+    }
+
+    if (rec_year == "" || (rec_yearly_month == "" && rec_yearly_day == "" ))
+    {
+        question.showMessage(translate.text("yearly series not specified"));
+    }
+    else if (rec_year == "Jeden # #")
+    {
+        month = rec_yearly_month;
+        day = rec_yearly_day;
+        event[calendars.RRULE] = new Array("FREQ=YEARLY;BYMONTHDAY="+day+";BYMONTH="+month);
+    }
+    else if (rec_year == "Am #. # im #")
+    {
+        month = vars.get("$field.rec_yearly_month2");
+        day = vars.get("$field.rec_yearly_day2");
+        var number = vars.get("$field.rec_yearly_number2");
+        event[calendars.RRULE] = new Array("FREQ=YEARLY;BYMONTH="+month+";BYDAY="+number+day);
+    }
+}
+/***********************/
+function rec_monthly(event)
+{
+    var rec_month = vars.get("$field.rec_month");
+    var rec_monthly_day = vars.get("$field.rec_monthly_day");
+    var rec_monthly_interval = vars.get("$field.rec_monthly_interval");
+    var day;
+    var interval;
+
+    if (rec_month == "")
+
+    {
+        if (rec_monthly_day != "" && rec_monthly_interval != "")
+            rec_month = "Am #. jedes #. Monat";
+        else if (vars.get("$field.rec_monthly_day2") != "" && vars.get("$field.rec_monthly_interval2") != "" && vars.get("$field.rec_monthly_weekday2") != "")
+            rec_month = "Am #. # jeden #. Monat";
+    }
+
+    if (rec_month == "" || (rec_monthly_day == "" && rec_monthly_interval != ""))
+    {
+        question.showMessage(translate.text("Ignore series"));
+    }
+    else if (rec_month == "Am #. jedes #. Monat")
+    {
+        day = rec_monthly_day;
+        interval = rec_monthly_interval;
+        event[calendars.RRULE] = new Array("FREQ=MONTHLY;INTERVAL=" + interval + ";BYMONTHDAY=" + day);
+    }
+    else if(rec_month == "Am #. # jeden #. Monat")
+    {
+        day = vars.get("$field.rec_monthly_day2");
+        interval = vars.get("$field.rec_monthly_interval2");
+        var weekday = vars.get("$field.rec_monthly_weekday2");
+        event[calendars.RRULE] = new Array("FREQ=MONTHLY;INTERVAL=" + interval + ";BYDAY=" + day + weekday);
+    }
+}
+/***********************/
+function rec_weekly(event)
+{
+
+    var rec_weekly_intervall = vars.get("$field.rec_weekly_intervall");
+    if (rec_weekly_intervall == "")
+        rec_weekly_intervall = "1";
+
+    var days = new Array();
+    var count = 0;
+    if (vars.get("$field.rec_weekly_mo") == "true")
+    {
+        days[count] = "MO";
+        count++;
+    }
+    if (vars.get("$field.rec_weekly_di") == "true")
+    {
+        days[count] = "TU";
+        count++;
+    }
+    if (vars.get("$field.rec_weekly_mi") == "true")
+    {
+        days[count] = "WE";
+        count++;
+    }
+    if (vars.get("$field.rec_weekly_do") == "true")
+    {
+        days[count] = "TH";
+        count++;
+    }
+    if (vars.get("$field.rec_weekly_fr") == "true")
+    {
+        days[count] = "FR";
+        count++;
+    }
+    if (vars.get("$field.rec_weekly_sa") == "true")
+    {
+        days[count] = "SA";
+        count++;
+    }
+    if (vars.get("$field.rec_weekly_so") == "true")
+    {
+        days[count] = "SU";
+        count++;
+    }
+    if (count > 0)
+    {
+        event[calendars.RRULE] = new Array("FREQ=WEEKLY;INTERVAL=" + rec_weekly_intervall + ";WKST=MO;BYDAY=");
+        for (var i = 0; i < count; i++)
+        {
+            event[calendars.RRULE][0] += days[i];
+            if (i+1 < count)
+            {
+                event[calendars.RRULE][0] += ",";
+            }
+        }
+    }
+}
+/***********************/
+function rec_daily(event)
+{
+    var rec_dailytype = vars.get("$field.rec_dailytype");
+    var rec_dailydays = vars.get("$field.rec_daily_days");
+    if (rec_dailytype == "")
+    {
+        if (rec_dailydays != "")
+            rec_dailytype = "Alle # Tage";
+    }
+
+    if (rec_dailytype == "" || rec_dailydays == "")
+    {
+        question.showMessage(translate.text("Ignore daily series"));
+    }
+    else if (rec_dailytype == "Alle # Tage")
+    {
+        event[calendars.RRULE] = new Array("FREQ=DAILY;INTERVAL=" + rec_dailydays);
+    }
+    else if (rec_dailytype == "Jeden Arbeitstag")
+    {
+        event[calendars.RRULE][0] = new Array("FREQ=WEEKLY;WKST=MO;BYDAY=MO,TU,WE,TH,FR");
+    }
+    else
+    {
+        question.showMessage(translate.text("Internal (2)") + " " + rec_dailytype);
+    }
 }
\ No newline at end of file
diff --git a/entity/AttributeRelationTree_entity/AttributeRelationTree_entity.aod b/entity/AttributeRelationTree_entity/AttributeRelationTree_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..bb483a46acd306a1096488ef3a58288d6e768fd0
--- /dev/null
+++ b/entity/AttributeRelationTree_entity/AttributeRelationTree_entity.aod
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
+  <name>AttributeRelationTree_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>PARENT_ID</name>
+    </entityField>
+    <entityField>
+      <name>TITLE</name>
+    </entityField>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>ObjectRowId_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>TreeProvider</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>e0a7a4bc-ec7f-4f09-9b94-cbeb328cd7b8</name>
+          <entityName>Organisation_entity</entityName>
+          <fieldName>AttributeTree</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>f29d91fe-2537-486f-b9de-44065a7790d4</name>
+          <entityName>Person_entity</entityName>
+          <fieldName>AttributeTree</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>445c1bd7-4e72-4ab7-a5b1-cc77924eb562</name>
+          <entityName>Product_entity</entityName>
+          <fieldName>AttributeTree</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>4498139f-067c-4cca-b122-d9bc9100c53d</name>
+          <entityName>Activity_entity</entityName>
+          <fieldName>AttributeTree</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>d6d5f9aa-4582-4ec5-9381-394a38a726e8</name>
+          <entityName>Offer_entity</entityName>
+          <fieldName>AttributeTree</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>b728166d-a74f-4ca1-8ce7-7e57032f2a7d</name>
+          <entityName>Contract_entity</entityName>
+          <fieldName>AttributeTree</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>3921c712-d15c-4941-b04d-44f4536dc404</name>
+          <entityName>Employee_entity</entityName>
+          <fieldName>AttributeTree</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+    </entityProvider>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/AttributeRelationTree_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <recordFields>
+        <element>UID.value</element>
+        <element>PARENT_ID.value</element>
+        <element>TITLE.value</element>
+      </recordFields>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/AttributeRelationTree_entity/recordcontainers/jdito/contentProcess.js b/entity/AttributeRelationTree_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e6b4f8a5171e30c73818b120f6f4de53eabef89f
--- /dev/null
+++ b/entity/AttributeRelationTree_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,44 @@
+import("system.vars");
+import("system.result");
+import("system.db");
+import("Attribute_lib");
+import("Sql_lib");
+
+var objectType = vars.get("$param.ObjectType_param");
+var rowId = vars.get("$param.ObjectRowId_param");
+var attributeObj = {};
+var allAttributes = [];
+var sqlSelect = "select AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_NAME, ATTRIBUTE_LEVEL from AB_ATTRIBUTE";
+
+var attributeValues = AttributeRelationUtils.getAllAttributes(rowId, objectType, false, true);
+
+_fetchAttributes(attributeValues.map(function (row) {return row[1]}));
+
+allAttributes = allAttributes
+    .sort(function (a, b) {return a[3] - b[3];}) //sort by level to make sure parents are added first
+    .map(function (row) {return [row[0], row[1], row[2]];}) //remove level from array
+    .concat(attributeValues);
+result.object(allAttributes);
+
+function _fetchAttributes (pAttributeIds)
+{
+    var condition = SqlCondition.begin();
+    var nextIds = [];
+    pAttributeIds.forEach(function (id)
+    {
+        if (!(id in this))
+            condition.orPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", id);
+    }, attributeObj);
+    db.table(condition.buildSql(sqlSelect, "1=2"))
+        .forEach(function (row)
+            {
+                this[row[0]] = true;
+                if (row[1])
+                    nextIds.push(row[1]);
+                else
+                    row[1] = null;
+                allAttributes.push(row);
+            }, attributeObj);
+    if (nextIds.length)
+        _fetchAttributes(nextIds);
+}
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
index cabd4f0e481e979f64fc0a81d86a0e0ec125941a..d06a6101b3c5dd8a0a0c2582f4333610b8a91cb5 100644
--- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod
+++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod
@@ -1,9 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>AttributeRelation_entity</name>
   <title>Attribute Relation</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/AttributeRelation_entity/documentation.adoc</documentation>
+  <afterOperatingState>%aditoprj%/entity/AttributeRelation_entity/afterOperatingState.js</afterOperatingState>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
@@ -11,6 +12,7 @@
     </entityProvider>
     <entityField>
       <name>AB_ATTRIBUTERELATIONID</name>
+      <searchable v="false" />
       <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -25,11 +27,13 @@
     <entityField>
       <name>OBJECT_ROWID</name>
       <mandatory v="true" />
+      <searchable v="false" />
       <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/object_rowid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>OBJECT_TYPE</name>
       <mandatory v="true" />
+      <searchable v="false" />
       <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/object_type/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -46,6 +50,7 @@
     <entityField>
       <name>CHAR_VALUE</name>
       <mandatory v="false" />
+      <searchable v="false" />
     </entityField>
     <entityProvider>
       <name>RelationsForSpecificObject</name>
@@ -94,21 +99,30 @@
           <fieldName>Attributes</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>cb20be7b-35aa-43c7-bf98-3a31010b33d6</name>
+          <entityName>Employee_entity</entityName>
+          <fieldName>Attributes</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
     </entityProvider>
     <entityParameter>
       <name>ObjectRowId_param</name>
       <expose v="true" />
+      <triggerRecalculation v="true" />
       <description>PARAMETER</description>
     </entityParameter>
     <entityField>
       <name>DATE_VALUE</name>
       <contentType>DATE</contentType>
+      <searchable v="false" />
       <state>EDITABLE</state>
     </entityField>
     <entityField>
       <name>NUMBER_VALUE</name>
       <contentType>NUMBER</contentType>
+      <searchable v="false" />
       <state>EDITABLE</state>
     </entityField>
     <entityParameter>
@@ -117,21 +131,25 @@
       <description>PARAMETER</description>
     </entityParameter>
     <entityField>
-      <name>BOOL_VALUE</name>
+      <name>INT_VALUE</name>
       <contentType>BOOLEAN</contentType>
-      <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/bool_value/valueProcess.js</valueProcess>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/int_value/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>ID_VALUE</name>
+      <searchable v="false" />
     </entityField>
     <entityField>
       <name>ATTRIBUTE_PARENT_ID</name>
       <title>Superordinate Attribute</title>
       <possibleItemsProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/attribute_parent_id/possibleItemsProcess.js</possibleItemsProcess>
-      <groupable v="true" />
+      <searchable v="false" />
+      <displayValueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/attribute_parent_id/displayValueProcess.js</displayValueProcess>
       <onValueChangeTypes>
         <element>MASK</element>
         <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
       </onValueChangeTypes>
     </entityField>
     <entityConsumer>
@@ -151,9 +169,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityField>
-      <name>MEMO_VALUE</name>
-    </entityField>
     <entityParameter>
       <name>FilteredAttributeIds_param</name>
       <expose v="true" />
@@ -190,6 +205,22 @@
       <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -197,6 +228,7 @@
       <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/AttributeRelation_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/AttributeRelation_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <linkInformation>
         <linkInformation>
           <name>14697123-47ee-4ff0-8ab2-2b8d1217f637</name>
@@ -242,10 +274,6 @@
           <name>NUMBER_VALUE.value</name>
           <recordfield>AB_ATTRIBUTERELATION.NUMBER_VALUE</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>BOOL_VALUE.value</name>
-          <recordfield>AB_ATTRIBUTERELATION.BOOL_VALUE</recordfield>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>ID_VALUE.value</name>
           <recordfield>AB_ATTRIBUTERELATION.ID_VALUE</recordfield>
@@ -255,8 +283,24 @@
           <recordfield>AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
-          <name>MEMO_VALUE.value</name>
-          <recordfield>AB_ATTRIBUTERELATION.MEMO_VALUE</recordfield>
+          <name>USER_NEW.value</name>
+          <recordfield>AB_ATTRIBUTERELATION.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>AB_ATTRIBUTERELATION.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>AB_ATTRIBUTERELATION.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>AB_ATTRIBUTERELATION.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>INT_VALUE.value</name>
+          <recordfield>AB_ATTRIBUTERELATION.INT_VALUE</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
diff --git a/entity/AttributeRelation_entity/afterOperatingState.js b/entity/AttributeRelation_entity/afterOperatingState.js
new file mode 100644
index 0000000000000000000000000000000000000000..d3061e715463d1b8fb004c30a3750ff6b0a2d4a6
--- /dev/null
+++ b/entity/AttributeRelation_entity/afterOperatingState.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.neon");
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW) 
+    neon.refresh();
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js
index 7375ee03d22b48d48e19926a0ad891be06cc2aec..acda6626ab40309e259438b0dca6da54219b99ec 100644
--- a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js
+++ b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/displayValueProcess.js
@@ -2,4 +2,6 @@ import("system.vars");
 import("system.result");
 import("Attribute_lib");
 
-result.string(AttributeUtil.getFullAttributeName(vars.get("$field.AB_ATTRIBUTE_ID")));
\ No newline at end of file
+result.string(AttributeUtil.getFullAttributeName(
+        vars.get("$field.AB_ATTRIBUTE_ID"),
+        vars.exists("$param.DisplaySimpleName_param") ? vars.get("$param.DisplaySimpleName_param") : false ));
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/onValueChange.js b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/onValueChange.js
index 9347efa6c0caed251cd27fdabf8e94710302e365..132c9bbe345620f8d9fc4550c13dcdb87a493487 100644
--- a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/onValueChange.js
+++ b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/onValueChange.js
@@ -3,10 +3,9 @@ import("system.neon");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || 
     vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) {
-    neon.setFieldValue("$field.BOOL_VALUE", null);
+    neon.setFieldValue("$field.INT_VALUE", null);
     neon.setFieldValue("$field.CHAR_VALUE", null);
     neon.setFieldValue("$field.DATE_VALUE", null);
     neon.setFieldValue("$field.ID_VALUE", null);
     neon.setFieldValue("$field.NUMBER_VALUE", null);
-    neon.setFieldValue("$field.MEMO_VALUE", null);
 }
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/entityfields/attribute_parent_id/displayValueProcess.js b/entity/AttributeRelation_entity/entityfields/attribute_parent_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b85310336652c14dc00b557287404299142e85c5
--- /dev/null
+++ b/entity/AttributeRelation_entity/entityfields/attribute_parent_id/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Attribute_lib");
+
+result.string(AttributeUtil.getFullAttributeName(vars.get("$field.ATTRIBUTE_PARENT_ID")));
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/entityfields/date_edit/valueProcess.js b/entity/AttributeRelation_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8d41a64d6993f71d00e0879f5eb4aed0aa0b866d
--- /dev/null
+++ b/entity/AttributeRelation_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/entityfields/date_new/valueProcess.js b/entity/AttributeRelation_entity/entityfields/date_new/valueProcess.js
index 7acb3c80848f54a4c6dfee5efa7a5b8514dd4a71..9477aae8647e69beb635ccbbe3a5aed9e7dc693e 100644
--- a/entity/AttributeRelation_entity/entityfields/date_new/valueProcess.js
+++ b/entity/AttributeRelation_entity/entityfields/date_new/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/entityfields/bool_value/valueProcess.js b/entity/AttributeRelation_entity/entityfields/int_value/valueProcess.js
similarity index 65%
rename from entity/AttributeRelation_entity/entityfields/bool_value/valueProcess.js
rename to entity/AttributeRelation_entity/entityfields/int_value/valueProcess.js
index c5937313ed5351c005fd2f860e5df0cbd2f6cf5d..91ca68074f8ae51f3149c59954293133708905ea 100644
--- a/entity/AttributeRelation_entity/entityfields/bool_value/valueProcess.js
+++ b/entity/AttributeRelation_entity/entityfields/int_value/valueProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
-if(!vars.get("$field.BOOL_VALUE"))
+if(!vars.get("$field.INT_VALUE"))
     result.string("0");
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/entityfields/user_edit/valueProcess.js b/entity/AttributeRelation_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..90383c071316dc55fe51d43a93dd7db75551842e
--- /dev/null
+++ b/entity/AttributeRelation_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/entityfields/user_new/valueProcess.js b/entity/AttributeRelation_entity/entityfields/user_new/valueProcess.js
index a8a5e28793c742f8f3e10907976e746faf43c67c..ad6636be180fbc3dd74567a8751bc69af1f287ff 100644
--- a/entity/AttributeRelation_entity/entityfields/user_new/valueProcess.js
+++ b/entity/AttributeRelation_entity/entityfields/user_new/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/AttributeRelation_entity/entityfields/valueproxy/possibleItemsProcess.js b/entity/AttributeRelation_entity/entityfields/valueproxy/possibleItemsProcess.js
index 779fd24fa971d879920b3238f61f82c348071415..4a7f1e46eda7a88afbfe7523691dd836a6f774bf 100644
--- a/entity/AttributeRelation_entity/entityfields/valueproxy/possibleItemsProcess.js
+++ b/entity/AttributeRelation_entity/entityfields/valueproxy/possibleItemsProcess.js
@@ -11,9 +11,10 @@ var attrType = AttributeHandler.begin(attributeId).getAttributeType();
 if (attrType == $AttributeTypes.COMBO)
 {
     var valueSql = SqlCondition.begin()
+        .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_ACTIVE", "1")
         .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", attributeId)
         .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE)
-        .buildSql("select AB_ATTRIBUTEID, ATTRIBUTE_NAME from AB_ATTRIBUTE");
+        .buildSql("select AB_ATTRIBUTEID, ATTRIBUTE_NAME from AB_ATTRIBUTE", "1=2", "order by ATTRIBUTE_NAME");
     var valueList = db.table(valueSql);
     result.object(valueList);
 }
diff --git a/entity/AttributeRelation_entity/entityfields/valueproxy/valueProcess.js b/entity/AttributeRelation_entity/entityfields/valueproxy/valueProcess.js
index f1d1025828f4a7c554dd525a6f8ed38fc3551b2f..bea46eecb189b5b83f3704ecf8ea3f019d0581c4 100644
--- a/entity/AttributeRelation_entity/entityfields/valueproxy/valueProcess.js
+++ b/entity/AttributeRelation_entity/entityfields/valueproxy/valueProcess.js
@@ -6,9 +6,8 @@ import("Attribute_lib");
 "$field.CHAR_VALUE";
 "$field.DATE_VALUE";
 "$field.NUMBER_VALUE";
-"$field.BOOL_VALUE";
+"$field.INT_VALUE";
 "$field.ID_VALUE";
-"$field.MEMO_VALUE";
 
 if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW)
 {
diff --git a/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js b/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js
index aee41089141ec40518d13418f789ecc3a54b5e2e..d2b666631967c44d632fcdd249414629786e0219 100644
--- a/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/AttributeRelation_entity/recordcontainers/db/conditionProcess.js
@@ -3,12 +3,11 @@ import("system.db");
 import("system.result");
 import("Sql_lib");
 
-
-
 var cond = SqlCondition.begin()
                    .andPrepareVars("AB_ATTRIBUTERELATION.OBJECT_ROWID", "$param.ObjectRowId_param");
 
-if (vars.exists("$param.FilteredAttributeIds_param") && vars.get("$param.FilteredAttributeIds_param"))
+if (vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param")
+    && vars.exists("$param.FilteredAttributeIds_param") && vars.get("$param.FilteredAttributeIds_param"))
 {
     var filteredIds = JSON.parse(vars.get("$param.FilteredAttributeIds_param"));
     var filteredIdsCondition = new SqlCondition();
diff --git a/entity/AttributeRelation_entity/recordcontainers/db/orderClauseProcess.js b/entity/AttributeRelation_entity/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b70300ec1e67e5492b07d3d47dfc5d47a061581f
--- /dev/null
+++ b/entity/AttributeRelation_entity/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,5 @@
+import("system.db");
+import("system.result");
+result.object({
+    "AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID" : db.ASCENDING
+});
\ No newline at end of file
diff --git a/entity/AttributeUsage_entity/AttributeUsage_entity.aod b/entity/AttributeUsage_entity/AttributeUsage_entity.aod
index 18af22e8347ed37d6c604134d7aab2e9c3e12216..1d04eaa1faddc57d89dd575a5bd69803b7ae14fa 100644
--- a/entity/AttributeUsage_entity/AttributeUsage_entity.aod
+++ b/entity/AttributeUsage_entity/AttributeUsage_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>AttributeUsage_entity</name>
   <title>Attribute Usage</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -13,7 +13,13 @@
       <name>OBJECT_TYPE</name>
       <title>Module</title>
       <consumer>Context</consumer>
+      <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/object_type/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
     </entityField>
     <entityField>
       <name>AB_ATTRIBUTEUSAGEID</name>
@@ -64,6 +70,12 @@
         <entityName>Context_entity</entityName>
         <fieldName>#PROVIDER</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>GetAllContexts_param</name>
+          <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
   </entityFields>
   <recordContainers>
@@ -71,6 +83,9 @@
       <name>db</name>
       <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <onDBInsert>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
+      <onDBUpdate>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
+      <onDBDelete>%aditoprj%/entity/AttributeUsage_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
       <linkInformation>
         <linkInformation>
           <name>c30f5670-580e-4621-95dd-0fec4a99190f</name>
diff --git a/entity/AttributeUsage_entity/entityfields/ab_attribute_id/valueProcess.js b/entity/AttributeUsage_entity/entityfields/ab_attribute_id/valueProcess.js
index c3a2248b66e14317873bfcff446f25abac69686a..9efed36fc2699e14e3c6f4baa4cd4c62ceef938e 100644
--- a/entity/AttributeUsage_entity/entityfields/ab_attribute_id/valueProcess.js
+++ b/entity/AttributeUsage_entity/entityfields/ab_attribute_id/valueProcess.js
@@ -3,4 +3,6 @@ import("system.result");
 import("system.neon");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.AttributeId_param") && vars.get("$param.AttributeId_param") != null)
-    result.string(vars.get("$param.AttributeId_param"));
\ No newline at end of file
+    result.string(vars.get("$param.AttributeId_param"));
+else if (vars.get("$field.AB_ATTRIBUTE_ID"))
+    result.string(vars.get("$field.AB_ATTRIBUTE_ID"));
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/description/valueProcess.js b/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js
similarity index 54%
rename from entity/ObjectTree_entity/entityfields/description/valueProcess.js
rename to entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js
index 552c76f9742ef18911436c6a7cee0f9e98d4eea0..ed5935fc124e63ff268a7e65d5efceab70ac456e 100644
--- a/entity/ObjectTree_entity/entityfields/description/valueProcess.js
+++ b/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js
@@ -1 +1,2 @@
-import("system.result");
+import("system.result");
+result.string(true);
\ No newline at end of file
diff --git a/entity/AttributeUsage_entity/entityfields/object_type/valueProcess.js b/entity/AttributeUsage_entity/entityfields/object_type/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..40b7c76fc5515aeb4d2e88c54f0bbe9daf403618
--- /dev/null
+++ b/entity/AttributeUsage_entity/entityfields/object_type/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+
+//this is a workaround to get the old value in the onDBUpdate process
+//@TODO replace this when it's possible to get the old value in onDBUpdate
+vars.set("$context.originalObjectType", vars.get("$field.OBJECT_TYPE"));
\ No newline at end of file
diff --git a/entity/AttributeUsage_entity/recordcontainers/db/onDBDelete.js b/entity/AttributeUsage_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..b41e99cd82af7be8fd94faddd41fda7feb3e733e
--- /dev/null
+++ b/entity/AttributeUsage_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("Attribute_lib");
+
+var attributeId = vars.get("$field.AB_ATTRIBUTE_ID");
+var objectType = vars.get("$field.OBJECT_TYPE");
+
+AttributeUsageUtil.deleteChildrenUsages(attributeId, objectType);
\ No newline at end of file
diff --git a/entity/AttributeUsage_entity/recordcontainers/db/onDBInsert.js b/entity/AttributeUsage_entity/recordcontainers/db/onDBInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..73c28f291697502a3d36b35e3b5878ecefdf14a1
--- /dev/null
+++ b/entity/AttributeUsage_entity/recordcontainers/db/onDBInsert.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("Attribute_lib");
+
+var attributeId = vars.get("$field.AB_ATTRIBUTE_ID");
+var objectType = vars.get("$field.OBJECT_TYPE");
+
+AttributeUsageUtil.insertChildrenUsages(attributeId, objectType);
+AttributeUsageUtil.removeDuplicates(attributeId);
\ No newline at end of file
diff --git a/entity/AttributeUsage_entity/recordcontainers/db/onDBUpdate.js b/entity/AttributeUsage_entity/recordcontainers/db/onDBUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..02890f1b92c8da2fd1f5849ad7855337ba6148ed
--- /dev/null
+++ b/entity/AttributeUsage_entity/recordcontainers/db/onDBUpdate.js
@@ -0,0 +1,9 @@
+import("system.vars");
+import("Attribute_lib");
+
+var attributeId = vars.get("$field.AB_ATTRIBUTE_ID");
+var oldObjectType = vars.get("$context.originalObjectType");
+var newObjectType = vars.get("$field.OBJECT_TYPE");
+
+AttributeUsageUtil.updateChildrenUsages(attributeId, oldObjectType, newObjectType);
+AttributeUsageUtil.removeDuplicates(attributeId);
\ No newline at end of file
diff --git a/entity/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod
index 230a5381098c600a857e96d519b31834c67a5536..7a53655d326d89c0f289e70d22176c8ed389a346 100644
--- a/entity/Attribute_entity/Attribute_entity.aod
+++ b/entity/Attribute_entity/Attribute_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Attribute_entity</name>
   <title>Attribute</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -36,11 +36,17 @@
     <entityField>
       <name>ATTRIBUTE_PARENT_ID</name>
       <title>Superordinate Attribute</title>
-      <consumer>AttributeChildren</consumer>
+      <consumer>AttributeGroup</consumer>
       <linkedContext>Attribute</linkedContext>
+      <searchable v="false" />
       <stateProcess>%aditoprj%/entity/Attribute_entity/entityfields/attribute_parent_id/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attribute_parent_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attribute_parent_id/displayValueProcess.js</displayValueProcess>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
     </entityField>
     <entityConsumer>
       <name>AttributeChildren</name>
@@ -89,8 +95,6 @@
         </entityParameter>
         <entityParameter>
           <name>GetGroups_param</name>
-          <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributeparent/children/getgroups_param/valueProcess.js</valueProcess>
-          <expose v="true" />
         </entityParameter>
       </children>
     </entityProvider>
@@ -122,6 +126,7 @@
       <title>Active</title>
       <contentType>BOOLEAN</contentType>
       <possibleItemsProcess>%aditoprj%/entity/Attribute_entity/entityfields/attribute_active/possibleItemsProcess.js</possibleItemsProcess>
+      <groupable v="true" />
       <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attribute_active/valueProcess.js</valueProcess>
     </entityField>
     <entityConsumer>
@@ -144,6 +149,7 @@
     <entityField>
       <name>ATTRIBUTE_LEVEL</name>
       <title>Level</title>
+      <description>The level is required in the order-by to make sure that superordinate attributes come before their subordinates for the tree</description>
       <contentType>NUMBER</contentType>
       <state>INVISIBLE</state>
       <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attribute_level/valueProcess.js</valueProcess>
@@ -152,6 +158,7 @@
       <name>KEYWORD_CONTAINER</name>
       <title>Keyword</title>
       <possibleItemsProcess>%aditoprj%/entity/Attribute_entity/entityfields/keyword_container/possibleItemsProcess.js</possibleItemsProcess>
+      <searchable v="false" />
       <state>AUTO</state>
       <stateProcess>%aditoprj%/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js</stateProcess>
     </entityField>
@@ -194,6 +201,7 @@
     </entityProvider>
     <entityField>
       <name>FULL_ATTRIBUTE_NAME</name>
+      <title>Name</title>
       <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/full_attribute_name/valueProcess.js</valueProcess>
     </entityField>
@@ -239,6 +247,37 @@
       <title>Name</title>
       <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/name_with_type/valueProcess.js</valueProcess>
     </entityField>
+    <entityProvider>
+      <name>AttributeGroups</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <recordContainer>db</recordContainer>
+      <children>
+        <entityParameter>
+          <name>GetGroups_param</name>
+          <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributegroups/children/getgroups_param/valueProcess.js</valueProcess>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>AttrParentId_param</name>
+          <expose v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityConsumer>
+      <name>AttributeGroup</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Attribute_entity</entityName>
+        <fieldName>AttributeGroups</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>AttrParentId_param</name>
+          <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributegroup/children/attrparentid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -246,6 +285,7 @@
       <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/Attribute_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Attribute_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBUpdate>%aditoprj%/entity/Attribute_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <onDBDelete>%aditoprj%/entity/Attribute_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
       <linkInformation>
         <linkInformation>
diff --git a/entity/Attribute_entity/afterUiInit.js b/entity/Attribute_entity/afterUiInit.js
index f36f9fbc0eb68caa31ed5b1e78c6508976364ffb..87febc93d555370828def178d66937ba02b37a7e 100644
--- a/entity/Attribute_entity/afterUiInit.js
+++ b/entity/Attribute_entity/afterUiInit.js
@@ -3,13 +3,15 @@ import("system.db");
 import("system.neon");
 import("system.vars");
 import("Context_lib");
+import("Attribute_lib");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW 
+    && vars.get("$field.ATTRIBUTE_TYPE").trim() != $AttributeTypes.COMBOVALUE
     && vars.exists("$param.AttrParentId_param") && vars.get("$param.AttrParentId_param"))
 {
     var parentId = vars.get("$param.AttrParentId_param");
     var attributeId = vars.get("$field.AB_ATTRIBUTEID");
-    
+
     var usageSql = SqlCondition.begin()
         .andPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", parentId)
         .buildSql("select OBJECT_TYPE from AB_ATTRIBUTEUSAGE", "1=0");
diff --git a/entity/Attribute_entity/entityfields/attribute_level/valueProcess.js b/entity/Attribute_entity/entityfields/attribute_level/valueProcess.js
index 1977334cca875a56fdbf51b64cd088a46a788ba4..e91a822698ae74d9b594ed31998920eb6f639c74 100644
--- a/entity/Attribute_entity/entityfields/attribute_level/valueProcess.js
+++ b/entity/Attribute_entity/entityfields/attribute_level/valueProcess.js
@@ -4,7 +4,7 @@ import("system.result");
 import("system.vars");
 import("Sql_lib");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
     if (vars.get("$field.ATTRIBUTE_PARENT_ID") != "")
     {
         var level = db.cell(SqlCondition.begin()
diff --git a/entity/Attribute_entity/entityfields/attribute_parent_id/stateProcess.js b/entity/Attribute_entity/entityfields/attribute_parent_id/stateProcess.js
index 11f1cb994026398ca6df3cfcffd3157ed05f78f7..cac55643fb4daad7e6ccb3511aab9c1410182b77 100644
--- a/entity/Attribute_entity/entityfields/attribute_parent_id/stateProcess.js
+++ b/entity/Attribute_entity/entityfields/attribute_parent_id/stateProcess.js
@@ -1,11 +1,12 @@
 import("system.result");
 import("system.neon");
 import("system.vars");
+import("Attribute_lib");
 
 var fieldState;
-if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    fieldState = neon.COMPONENTSTATE_AUTO;
-else
+if(vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.COMBOVALUE)
     fieldState = neon.COMPONENTSTATE_READONLY;
+else
+    fieldState = neon.COMPONENTSTATE_AUTO;
 
 result.string(fieldState);
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/attribute_type/stateProcess.js b/entity/Attribute_entity/entityfields/attribute_type/stateProcess.js
index b768fb2fba7336e45a6e5c99d6224d9e623d4e5b..f663dddf570f4246c8ae5babd6035026d2bc2ffc 100644
--- a/entity/Attribute_entity/entityfields/attribute_type/stateProcess.js
+++ b/entity/Attribute_entity/entityfields/attribute_type/stateProcess.js
@@ -3,10 +3,29 @@ import("system.neon");
 import("system.result");
 import("system.vars");
 import("Attribute_lib");
+import("Sql_lib");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$field.ATTRIBUTE_PARENT_ID") != "")
+var type = vars.get("$field.ATTRIBUTE_TYPE").trim();
+var state = neon.COMPONENTSTATE_AUTO
+if (type == $AttributeTypes.COMBOVALUE)
 {
-    var type = AttributeHandler.begin(vars.get("$field.ATTRIBUTE_PARENT_ID")).getAttributeType();
-    if (type == $AttributeTypes.COMBO)
-        result.string(neon.COMPONENTSTATE_INVISIBLE);
-}
\ No newline at end of file
+    state = neon.COMPONENTSTATE_READONLY;
+}
+else if (type == $AttributeTypes.GROUP || type == $AttributeTypes.COMBO)
+{
+    var hasSubordinate = db.cell(SqlCondition.begin()
+        .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$field.AB_ATTRIBUTEID")
+        .buildSql(
+            "select exists ("
+            +    "select SUB.AB_ATTRIBUTEID from AB_ATTRIBUTE SUB "
+            +    "where SUB.ATTRIBUTE_PARENT_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"
+            + ") from AB_ATTRIBUTE", "1=2"
+        )
+    ) == "true";
+    if (hasSubordinate)
+        state = neon.COMPONENTSTATE_READONLY;
+}
+else if (AttributeUtil.hasRelations(vars.get("$field.AB_ATTRIBUTEID")))
+        state = neon.COMPONENTSTATE_READONLY;
+
+result.string(state)
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/attributechildren/children/attrparentid_param/valueProcess.js b/entity/Attribute_entity/entityfields/attributechildren/children/attrparentid_param/valueProcess.js
index f2318723e88440808277d20753657fb7674a0d0f..b68489b6e02b29d34ae67b14c7371f985305f014 100644
--- a/entity/Attribute_entity/entityfields/attributechildren/children/attrparentid_param/valueProcess.js
+++ b/entity/Attribute_entity/entityfields/attributechildren/children/attrparentid_param/valueProcess.js
@@ -1,4 +1,7 @@
 import("system.vars");
 import("system.result");
+import("Attribute_lib");
 
-result.string(vars.getString("$field.AB_ATTRIBUTEID"));
+var type = vars.get("$field.ATTRIBUTE_TYPE").trim();
+if (type == $AttributeTypes.GROUP || type == $AttributeTypes.COMBO)
+    result.string(vars.getString("$field.AB_ATTRIBUTEID"));
diff --git a/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js b/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js
index 372decd8620b90d3e722f96f362c01b947eb6a32..fe18eca06c7f87d798bd3e58c7726058b5bf049f 100644
--- a/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js
+++ b/entity/Attribute_entity/entityfields/attributechildren/children/attrparenttype_param/valueProcess.js
@@ -1,10 +1,4 @@
-import("system.neon");
 import("system.vars");
 import("system.result");
 
-var type;
-if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
-    type = "GETGROUPS";
-else
-    type = vars.getString("$field.ATTRIBUTE_TYPE").trim()
-result.string(type);
+result.string(vars.getString("$field.ATTRIBUTE_TYPE").trim());
diff --git a/entity/Attribute_entity/entityfields/attributegroup/children/attrparentid_param/valueProcess.js b/entity/Attribute_entity/entityfields/attributegroup/children/attrparentid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..033bf9a666c5254c8945077776b2834560164e56
--- /dev/null
+++ b/entity/Attribute_entity/entityfields/attributegroup/children/attrparentid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.AB_ATTRIBUTEID"));
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/attributegroups/children/getgroups_param/valueProcess.js b/entity/Attribute_entity/entityfields/attributegroups/children/getgroups_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..28d4124c73ca29db763c77486a84b9362ec6d7aa
--- /dev/null
+++ b/entity/Attribute_entity/entityfields/attributegroups/children/getgroups_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string(true);
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/attributeparent/children/getgroups_param/valueProcess.js b/entity/Attribute_entity/entityfields/attributeparent/children/getgroups_param/valueProcess.js
deleted file mode 100644
index 289c6a9357f3e98c026acb10dab34501ad5daea5..0000000000000000000000000000000000000000
--- a/entity/Attribute_entity/entityfields/attributeparent/children/getgroups_param/valueProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.neon");
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW || "");
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js b/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js
index 9ce13917b56c5c8e51f01876f47c5cb1f625ec85..67de95ea15b0707ce1a44627ba5a60b92cb5e917 100644
--- a/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js
+++ b/entity/Attribute_entity/entityfields/keyword_container/stateProcess.js
@@ -4,9 +4,9 @@ import("system.result");
 import("Attribute_lib");
 
 var fieldState;
-if (vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.KEYWORD)
+if (vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.KEYWORD && !AttributeUtil.hasRelations(vars.get("$field.AB_ATTRIBUTEID")))
     fieldState = neon.COMPONENTSTATE_EDITABLE;
 else
-    fieldState = neon.COMPONENTSTATE_DISABLED;
+    fieldState = neon.COMPONENTSTATE_READONLY;
 
 result.string(fieldState);
\ No newline at end of file
diff --git a/entity/Attribute_entity/entityfields/usagelist/valueProcess.js b/entity/Attribute_entity/entityfields/usagelist/valueProcess.js
index 0192da48ac5fb006f40737067207ddf9043604a0..675da9521dc245e23992c051dc34239c6f262963 100644
--- a/entity/Attribute_entity/entityfields/usagelist/valueProcess.js
+++ b/entity/Attribute_entity/entityfields/usagelist/valueProcess.js
@@ -3,10 +3,16 @@ import("system.result");
 import("system.db");
 import("system.vars");
 import("Sql_lib");
+import("Attribute_lib");
 
-var usages = db.array(db.COLUMN, SqlCondition.begin()
-    .andPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", vars.get("$field.AB_ATTRIBUTEID"))
-    .buildSql("select OBJECT_TYPE from AB_ATTRIBUTEUSAGE"));
-var usageStr = translate.text("Usage");
+var retStr = "\u00A0"; // \u00A0 -> space character that doesn't get trimmed 
+if (vars.get("$field.ATTRIBUTE_TYPE").trim() != $AttributeTypes.COMBOVALUE)
+{
+    var usages = db.array(db.COLUMN, SqlCondition.begin()
+        .andPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", vars.get("$field.AB_ATTRIBUTEID"))
+        .buildSql("select OBJECT_TYPE from AB_ATTRIBUTEUSAGE"));
+    if (usages.length)
+        retStr = translate.text("Usage") +  ": " + usages.join(", ");
+}
 
-result.string(usages.length ? usageStr + ": " + usages.join(", ") : "\u00A0"); // \u00A0 -> space character that doesn't get trimmed 
\ No newline at end of file
+result.string(retStr);
\ No newline at end of file
diff --git a/entity/Attribute_entity/recordcontainers/db/conditionProcess.js b/entity/Attribute_entity/recordcontainers/db/conditionProcess.js
index 1a3010539738aaddde2f405ac7369f7c4bfffe08..ed323a5c82da868f9b3ae4deafd54ad035520109 100644
--- a/entity/Attribute_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Attribute_entity/recordcontainers/db/conditionProcess.js
@@ -10,8 +10,12 @@ var getGroups = vars.exists("$param.GetGroups_param") && vars.get("$param.GetGro
 var objectType = vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param");
 if (getGroups)
 {
+    //this is for the selection of the superordinate attribute, this condition
+    //filters out the own id and the children to prevent loops
     condition = db.translateCondition(SqlCondition.begin()
         .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.GROUP)
+        .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$param.AttrParentId_param", "# != ?")
+        .and("AB_ATTRIBUTE.AB_ATTRIBUTEID not in ('" + AttributeUtil.getAllChildren(vars.getString("$param.AttrParentId_param")).join("','") + "')")
         .build());
 }
 else if (objectType)  //if there's an objectType, it comes from the AttributeRelation entity
diff --git a/entity/Attribute_entity/recordcontainers/db/onDBUpdate.js b/entity/Attribute_entity/recordcontainers/db/onDBUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..38704929f969ef673a7fafd41ac71a1fa2c05282
--- /dev/null
+++ b/entity/Attribute_entity/recordcontainers/db/onDBUpdate.js
@@ -0,0 +1,27 @@
+import("system.db");
+import("system.neon");
+import("system.vars");
+import("Attribute_lib");
+
+var level = parseInt(vars.get("$field.ATTRIBUTE_LEVEL"));
+
+var table = "AB_ATTRIBUTE";
+var columns = ["ATTRIBUTE_LEVEL"];
+var types = db.getColumnTypes(table, columns);
+var toUpdate = [];
+
+var attributes = [vars.get("$field.AB_ATTRIBUTEID")];
+while (attributes.length > 0)
+{
+    var condition = SqlCondition.begin()
+        .and("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID in ('" + attributes.join("','") + "')");
+
+    toUpdate.push([table, columns, types, [String(++level)], condition.build()]);
+
+    attributes = db.array(db.COLUMN, SqlCondition.begin()
+        .and("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID in ('" + attributes.join("','") + "')")
+        .buildSql("select AB_ATTRIBUTEID from AB_ATTRIBUTE")
+    );
+}
+
+db.updates(toUpdate);
diff --git a/entity/Attribute_entity/recordcontainers/db/orderClauseProcess.js b/entity/Attribute_entity/recordcontainers/db/orderClauseProcess.js
index 4b14378884f0ed11d22218c0e63a66614d3d1d90..003688a8bb9231d8f68eada88a41012db8d2ac2c 100644
--- a/entity/Attribute_entity/recordcontainers/db/orderClauseProcess.js
+++ b/entity/Attribute_entity/recordcontainers/db/orderClauseProcess.js
@@ -1,3 +1,6 @@
 import("system.db");
 import("system.result");
-result.object({"AB_ATTRIBUTE.ATTRIBUTE_LEVEL" : db.ASCENDING});
\ No newline at end of file
+result.object({
+    "AB_ATTRIBUTE.ATTRIBUTE_LEVEL" : db.ASCENDING,
+    "AB_ATTRIBUTE.ATTRIBUTE_NAME" : db.ASCENDING
+});
\ No newline at end of file
diff --git a/entity/Attribute_entity/recordcontainers/jdito/contentProcess.js b/entity/Attribute_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c56f881e002f57622f6c794a36084061d48df894
--- /dev/null
+++ b/entity/Attribute_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,97 @@
+import("JditoFilter_lib");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("system.db");
+import("system.vars");
+import("system.result");
+import("Sql_lib");
+import("Attribute_lib");
+
+var condition = new SqlCondition();
+
+var getGroups = vars.exists("$param.GetGroups_param") && vars.get("$param.GetGroups_param");
+var objectType = vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param");
+if (getGroups)
+{
+    //this is for the selection of the superordinate attribute, this condition
+    //filters out the own id and the children to prevent loops
+    condition.andSqlCondition(SqlCondition.begin()
+        .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.GROUP)
+        .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$param.AttrParentId_param", "# != ?")
+        .and("AB_ATTRIBUTE.AB_ATTRIBUTEID not in ('" + AttributeUtil.getAllChildren(vars.getString("$param.AttrParentId_param")).join("','") + "')")
+        .build());
+}
+else if (objectType)  //if there's an objectType, it comes from the AttributeRelation entity
+{
+    var filteredAttributes = [];
+    if (vars.exists("$param.FilteredAttributeIds_param") && vars.get("$param.FilteredAttributeIds_param"))
+        filteredAttributes = JSON.parse(vars.get("$param.FilteredAttributeIds_param"));
+    
+    var ids = AttributeUtil.getPossibleAttributes(objectType, false, filteredAttributes);
+    condition.and("AB_ATTRIBUTE.AB_ATTRIBUTEID in ('" + ids.join("','") + "')");
+} 
+else 
+{
+    var type = vars.exists("$param.AttrParentType_param") && vars.get("$param.AttrParentType_param");
+    if (type == $AttributeTypes.COMBO)
+        condition = SqlCondition.begin()
+            .andPrepareVars("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", "$param.AttrParentId_param")
+            .build();
+    else if (type)
+    {
+    var parentId = vars.exists("$param.AttrParentId_param") && vars.get("$param.AttrParentId_param");
+    if (parentId)
+        condition.and("AB_ATTRIBUTE.AB_ATTRIBUTEID in ('" + AttributeUtil.getAllChildren(vars.getString("$param.AttrParentId_param")).join("','") + "')");
+    }
+}
+
+var sql = "select AB_ATTRIBUTEID, AB_ATTRIBUTEID, ATTRIBUTE_ACTIVE, " 
+    + "ATTRIBUTE_NAME, ATTRIBUTE_PARENT_ID, ATTRIBUTE_TYPE, " 
+    + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.attributeType(), "ATTRIBUTE_TYPE")
+    + ", KEYWORD_CONTAINER from AB_ATTRIBUTE";
+
+if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
+    condition.and(" AB_ATTRIBUTEID in ('" + vars.get("$local.idvalues").join("','") + "')");
+else if (vars.exists("$local.filter") && vars.get("$local.filter"))
+{
+    var filter = vars.get("$local.filter");
+    condition.andSqlCondition((JditoFilterUtils.getSqlCondition(filter, "AB_ATTRIBUTE")));
+}
+
+var attributes = db.table(condition.buildSql(sql, "1=1"));
+
+if (!(vars.exists("$local.idvalues") && vars.get("$local.idvalues")))
+    attributes = _sortArrayForTree(attributes);
+
+result.object(attributes);
+
+//sorts the records in a way that a tree can be built
+function _sortArrayForTree (pArray) 
+{
+    var rows = {};
+    var allIds = {};
+    var idIndex = 1;
+    var parentIdIndex = 4;
+    
+    pArray.forEach(function (row) {allIds[row[idIndex]] = true;});
+    
+    var index = 0;
+    
+    for (let itemsAdded = true; itemsAdded; itemsAdded = oldIndex != index)
+    {
+        var oldIndex = index;
+        pArray.forEach(function (row)
+        {
+            if (!(row[idIndex] in this) && (row[parentIdIndex] in this || !allIds[row[parentIdIndex]]))
+                this[row[idIndex]] = {
+                    data : row,
+                    index : index++
+                };
+        }, rows);
+    }
+    var sortedArray = new Array(Object.keys(rows).length);
+    for (let i in rows)
+        sortedArray[rows[i].index] = rows[i].data;
+    
+    return sortedArray;
+}
\ No newline at end of file
diff --git a/entity/Attribute_entity/recordcontainers/jdito/onDelete.js b/entity/Attribute_entity/recordcontainers/jdito/onDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..046b1dca18f622ac02623b1f82cb419c9d0d5d81
--- /dev/null
+++ b/entity/Attribute_entity/recordcontainers/jdito/onDelete.js
@@ -0,0 +1,35 @@
+import("Sql_lib");
+import("system.db");
+import("system.vars");
+import("Attribute_lib");
+
+var condition = SqlCondition.begin()
+    .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$field.UID")
+    .build("1=2");
+
+db.deleteData("AB_ATTRIBUTE", condition);
+
+var attributeId = vars.get("$field.UID");
+
+var childIds = AttributeUtil.getAllChildren(attributeId).concat(attributeId);
+
+condition = SqlCondition.begin()
+    .and("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID in ('" + childIds.join("','") + "')")
+    .build();
+
+//delete all entries in AB_ATTRIBUTEUSAGE belonging to the attribute to avoid unrelated entries
+db.deleteData("AB_ATTRIBUTEUSAGE", condition);
+
+condition = SqlCondition.begin()
+    .and("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID in ('" + childIds.join("','") + "')")
+    .build();
+
+//delete all entries in AB_ATTRIBUTERELATION for the attributes
+db.deleteData("AB_ATTRIBUTERELATION", condition);
+
+condition = SqlCondition.begin()
+    .and("AB_ATTRIBUTE.AB_ATTRIBUTEID in ('" + childIds.join("','") + "')")
+    .build();
+
+//delete all attribute children
+db.deleteData("AB_ATTRIBUTE", condition);
diff --git a/entity/Attribute_entity/recordcontainers/jdito/onInsert.js b/entity/Attribute_entity/recordcontainers/jdito/onInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..87565632d7cf592ac1bfe137d87ca62be849a32c
--- /dev/null
+++ b/entity/Attribute_entity/recordcontainers/jdito/onInsert.js
@@ -0,0 +1,23 @@
+import("system.db");
+import("system.vars");
+
+var columns = [
+    "AB_ATTRIBUTEID",
+    "ATTRIBUTE_ACTIVE",
+    "ATTRIBUTE_LEVEL",
+    "ATTRIBUTE_NAME",
+    "ATTRIBUTE_PARENT_ID",
+    "ATTRIBUTE_TYPE",
+    "KEYWORD_CONTAINER"
+];
+var values = [
+    vars.get("$field.UID"),
+    vars.get("$field.ATTRIBUTE_ACTIVE"),
+    vars.get("$field.ATTRIBUTE_LEVEL"),
+    vars.get("$field.ATTRIBUTE_NAME"),
+    vars.get("$field.ATTRIBUTE_PARENT_ID"),
+    vars.get("$field.ATTRIBUTE_TYPE"),
+    vars.get("$field.KEYWORD_CONTAINER")
+];
+
+db.insertData("AB_ATTRIBUTE", columns, null, values);
\ No newline at end of file
diff --git a/entity/Attribute_entity/recordcontainers/jdito/onUpdate.js b/entity/Attribute_entity/recordcontainers/jdito/onUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..6740df0d149b19858958fbc5b0c9839a721bd4e1
--- /dev/null
+++ b/entity/Attribute_entity/recordcontainers/jdito/onUpdate.js
@@ -0,0 +1,26 @@
+import("Sql_lib");
+import("system.db");
+import("system.vars");
+
+var columns = [
+    "ATTRIBUTE_ACTIVE",
+    "ATTRIBUTE_LEVEL",
+    "ATTRIBUTE_NAME",
+    "ATTRIBUTE_PARENT_ID",
+    "ATTRIBUTE_TYPE",
+    "KEYWORD_CONTAINER"
+];
+var values = [
+    vars.get("$field.ATTRIBUTE_ACTIVE"),
+    vars.get("$field.ATTRIBUTE_LEVEL"),
+    vars.get("$field.ATTRIBUTE_NAME"),
+    vars.get("$field.ATTRIBUTE_PARENT_ID"),
+    vars.get("$field.ATTRIBUTE_TYPE"),
+    vars.get("$field.KEYWORD_CONTAINER")
+];
+
+var condition = SqlCondition.begin()
+    .andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$field.UID")
+    .build("1=2");
+
+db.updateData("AB_ATTRIBUTE", columns, null, values, conditon);
\ No newline at end of file
diff --git a/entity/Communication_entity/Communication_entity.aod b/entity/Communication_entity/Communication_entity.aod
index 3a60711e698543ddbccc2e8b2e622dc6248f67b3..8c7e0e773a9a474fae34ce2b9438a725009f5c7f 100644
--- a/entity/Communication_entity/Communication_entity.aod
+++ b/entity/Communication_entity/Communication_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Communication_entity</name>
   <title>Communication</title>
   <description>former Comm</description>
@@ -111,12 +111,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <fieldName>PhoneCommunications</fieldName>
           <isConsumer v="false" />
         </entityDependency>
-        <entityDependency>
-          <name>ddcd3c3d-f305-4ced-a8ac-ffb510474aa4</name>
-          <entityName>AnyContact_entity</entityName>
-          <fieldName>PhoneCommunications</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
@@ -150,12 +144,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <fieldName>EmailCommunications</fieldName>
           <isConsumer v="false" />
         </entityDependency>
-        <entityDependency>
-          <name>c6e2631a-896f-4689-b254-0091ed25f705</name>
-          <entityName>AnyContact_entity</entityName>
-          <fieldName>EmailCommunications</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
@@ -199,6 +187,22 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -206,6 +210,8 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/Communication_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Communication_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBInsert>%aditoprj%/entity/Communication_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
+      <onDBUpdate>%aditoprj%/entity/Communication_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <linkInformation>
         <linkInformation>
           <name>e3567770-187a-4366-bb87-fb22ff7ff257</name>
@@ -240,6 +246,22 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <name>MEDIUM_ID.displayValue</name>
           <expression>%aditoprj%/entity/Communication_entity/recordcontainers/db/recordfieldmappings/medium_id.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>COMMUNICATION.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>COMMUNICATION.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>COMMUNICATION.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>COMMUNICATION.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Communication_entity/entityfields/date_edit/valueProcess.js b/entity/Communication_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8d41a64d6993f71d00e0879f5eb4aed0aa0b866d
--- /dev/null
+++ b/entity/Communication_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Communication_entity/entityfields/date_new/valueProcess.js b/entity/Communication_entity/entityfields/date_new/valueProcess.js
index 408c498a4c90f59cd95eafbf74a8ea2683bab068..8ee28e84edb9930de54975f81e8cb5a13c9aa02f 100644
--- a/entity/Communication_entity/entityfields/date_new/valueProcess.js
+++ b/entity/Communication_entity/entityfields/date_new/valueProcess.js
@@ -1,7 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.date"));
-
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Communication_entity/entityfields/user_edit/valueProcess.js b/entity/Communication_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..90383c071316dc55fe51d43a93dd7db75551842e
--- /dev/null
+++ b/entity/Communication_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Communication_entity/entityfields/user_new/valueProcess.js b/entity/Communication_entity/entityfields/user_new/valueProcess.js
index 7c566863b493d778b72dea7d8822f6a59333e77d..e518bc75a9494e53a83613dedd943106e74fc00a 100644
--- a/entity/Communication_entity/entityfields/user_new/valueProcess.js
+++ b/entity/Communication_entity/entityfields/user_new/valueProcess.js
@@ -1,6 +1,7 @@
-import("system.vars");
+import("system.util");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Communication_entity/recordcontainers/db/onDBInsert.js b/entity/Communication_entity/recordcontainers/db/onDBInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..4c78aed8ffbf30f4f93e579f4d0a6a0f624e416e
--- /dev/null
+++ b/entity/Communication_entity/recordcontainers/db/onDBInsert.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("StandardObject_lib");
+
+new StandardObject("Communication", vars.get("$field.COMMUNICATIONID"), "Person", vars.get("$field.CONTACT_ID"))
+    .onCommunicationInsert(vars.get("$field.MEDIUM_ID"));
\ No newline at end of file
diff --git a/entity/Communication_entity/recordcontainers/db/onDBUpdate.js b/entity/Communication_entity/recordcontainers/db/onDBUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..7e2690d20ab6fcf371c1b12e9e4fa2f4e8a7ef39
--- /dev/null
+++ b/entity/Communication_entity/recordcontainers/db/onDBUpdate.js
@@ -0,0 +1,6 @@
+import("system.logging");
+import("system.vars");
+import("StandardObject_lib");
+
+new StandardObject("Communication", vars.get("$field.COMMUNICATIONID"), "Person", vars.get("$field.CONTACT_ID"))
+    .onCommunicationUpdate(vars.get("$field.MEDIUM_ID"));
\ No newline at end of file
diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod
index 87c8f9e0ba807eb30acdce769ee8f965d2df5918..ca27c053422a714556ac0c4f589d32852c88ff21 100644
--- a/entity/Contact_entity/Contact_entity.aod
+++ b/entity/Contact_entity/Contact_entity.aod
@@ -1,24 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Contact_entity</name>
   <title>Contact</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Contact_entity/documentation.adoc</documentation>
+  <onValidation>%aditoprj%/entity/Contact_entity/onValidation.js</onValidation>
   <iconId>VAADIN:USERS</iconId>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
+      <dependencies>
+        <entityDependency>
+          <name>ccbf2270-c30c-458e-8a99-bf0cdcc89689</name>
+          <entityName>Object_entity</entityName>
+          <fieldName>Persons</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
     </entityProvider>
     <entityField>
       <name>CONTACTID</name>
     </entityField>
     <entityField>
       <name>ORGANISATION_ID</name>
-      <title>Organisation</title>
+      <title>Company</title>
       <consumer>Organisations</consumer>
-      <mandatory v="true" />
-      <onValueChange>%aditoprj%/entity/Contact_entity/entityfields/organisation_id/onValueChange.js</onValueChange>
+      <mandatory v="false" />
+      <displayValueProcess>%aditoprj%/entity/Contact_entity/entityfields/organisation_id/displayValueProcess.js</displayValueProcess>
+      <onValidation>%aditoprj%/entity/Contact_entity/entityfields/organisation_id/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>PERSON_ID</name>
@@ -30,14 +40,20 @@
     <entityField>
       <name>DEPARTMENT</name>
       <title>Department</title>
+      <possibleItemsProcess>%aditoprj%/entity/Contact_entity/entityfields/department/possibleItemsProcess.js</possibleItemsProcess>
+      <newItemsAllowed v="true" />
     </entityField>
     <entityField>
       <name>POSITION</name>
       <title>Position</title>
+      <possibleItemsProcess>%aditoprj%/entity/Contact_entity/entityfields/position/possibleItemsProcess.js</possibleItemsProcess>
+      <newItemsAllowed v="true" />
     </entityField>
     <entityField>
       <name>CONTACTROLE</name>
       <title>Contactrole</title>
+      <possibleItemsProcess>%aditoprj%/entity/Contact_entity/entityfields/contactrole/possibleItemsProcess.js</possibleItemsProcess>
+      <newItemsAllowed v="true" />
     </entityField>
     <entityConsumer>
       <name>Organisations</name>
@@ -45,8 +61,17 @@
       <dependency>
         <name>dependency</name>
         <entityName>Organisation_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
+        <fieldName>WithPersonIdFilter</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>WithPrivate_param</name>
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludeOrganisationsByPersonId</name>
+          <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityParameter>
       <name>PersonId_param</name>
@@ -56,10 +81,17 @@
     <entityProvider>
       <name>PersonRelated</name>
       <fieldType>DEPENDENCY_IN</fieldType>
+      <children>
+        <entityParameter>
+          <name>OwnContactId_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
     </entityProvider>
     <entityField>
       <name>ADDRESS_ID</name>
       <title>standard address</title>
+      <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/address_id/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>PERSON_TITLE</name>
@@ -103,6 +135,9 @@
       <name>LANGUAGE</name>
       <title>Language</title>
       <consumer>Languages</consumer>
+      <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/language/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Contact_entity/entityfields/language/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
       <name>Languages</name>
@@ -113,19 +148,103 @@
         <fieldName>ISO3Name</fieldName>
       </dependency>
     </entityConsumer>
+    <entityProvider>
+      <name>PersonsContactsExceptOwn</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <targetContextField>targetContext</targetContextField>
+      <targetIdField>CONTACTID</targetIdField>
+      <dependencies>
+        <entityDependency>
+          <name>34cc85f4-5555-4631-94fc-f3ad35b7ce7e</name>
+          <entityName>Person_entity</entityName>
+          <fieldName>OtherContacts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>PersonId_param</name>
+          <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js</valueProcess>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>OwnContactId_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityField>
+      <name>targetContext</name>
+      <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/targetcontext/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>STATUS</name>
+      <title>Status</title>
+      <consumer>KeywordContactStates</consumer>
+      <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/status/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Contact_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>KeywordContactStates</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordEntry_entity</entityName>
+        <fieldName>SpecificContainerKeywords</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContainerName_param</name>
+          <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>LanguageKey_param</name>
+      <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/languagekey_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
       <alias>Data_alias</alias>
+      <fromClauseProcess>%aditoprj%/entity/Contact_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
+      <conditionProcess>%aditoprj%/entity/Contact_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/Contact_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <linkInformation>
         <linkInformation>
-          <name>d2a29013-e270-4ce1-8f2d-b372206f0aa3</name>
+          <name>31dbd8d8-b10c-4621-ab45-b735216f078f</name>
           <tableName>CONTACT</tableName>
           <primaryKey>CONTACTID</primaryKey>
           <isUIDTable v="true" />
           <readonly v="false" />
         </linkInformation>
+        <linkInformation>
+          <name>31948bfb-2fe9-4345-a65c-14ad49ffbc0e</name>
+          <tableName>ORGANISATION</tableName>
+          <primaryKey>ORGANISATIONID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
       </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
@@ -146,7 +265,7 @@
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>POSITION.value</name>
-          <recordfield>CONTACT.POSTITION</recordfield>
+          <recordfield>CONTACT.POSITION</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>CONTACTROLE.value</name>
@@ -160,6 +279,30 @@
           <name>LANGUAGE.value</name>
           <recordfield>CONTACT.LANGUAGE</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>STATUS.value</name>
+          <recordfield>CONTACT.STATUS</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>CONTACT.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>CONTACT.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>CONTACT.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>CONTACT.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ORGANISATION_ID.displayValue</name>
+          <recordfield>ORGANISATION.NAME</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Contact_entity/entityfields/address_id/valueProcess.js b/entity/Contact_entity/entityfields/address_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d1d6810b0429c11c9c2a96791677caa7d557f9e8
--- /dev/null
+++ b/entity/Contact_entity/entityfields/address_id/valueProcess.js
@@ -0,0 +1,14 @@
+import("system.logging");
+import("system.result");
+import("system.vars");
+import("StandardObject_lib");
+
+//  Check if the standard address is already set.
+if (vars.get("$field.ADDRESS_ID") === null || vars.get("$field.ADDRESS_ID") === "" || vars.get("$field.ADDRESS_ID") == 0) {
+    var possibleStandardAddressID = new StandardObject("Address", null, "Person", vars.get("$field.CONTACTID"))
+        .onPersonValueChange(vars.get("$field.ORGANISATION_ID"));
+
+    // If a possible standard addrss was found it should get applied to the field.
+    if (possibleStandardAddressID !== null)
+        result.string(possibleStandardAddressID);
+}
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/contactrole/possibleItemsProcess.js b/entity/Contact_entity/entityfields/contactrole/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..96627ddf00215d0598ae85d2452acfd248cbe52a
--- /dev/null
+++ b/entity/Contact_entity/entityfields/contactrole/possibleItemsProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactContactrole()).map(function (e){
+    return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers
+});
+
+result.object(res);
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/date_edit/valueProcess.js b/entity/Contact_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8d41a64d6993f71d00e0879f5eb4aed0aa0b866d
--- /dev/null
+++ b/entity/Contact_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/date_new/valueProcess.js b/entity/Contact_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ee28e84edb9930de54975f81e8cb5a13c9aa02f
--- /dev/null
+++ b/entity/Contact_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/department/possibleItemsProcess.js b/entity/Contact_entity/entityfields/department/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..77d99fa219eb36618f38dbb344e4a345bb71d331
--- /dev/null
+++ b/entity/Contact_entity/entityfields/department/possibleItemsProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactDepartment()).map(function (e){
+    return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers
+});
+
+result.object(res);
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js b/entity/Contact_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..63035752b8a38bb37d120fcf28544a53a175d572
--- /dev/null
+++ b/entity/Contact_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("KeywordRegistry_basic");
+
+result.string($KeywordRegistry.contactStatus());
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/language/displayValueProcess.js b/entity/Contact_entity/entityfields/language/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dae44e029af40ecdf3c360a4e80a24d6a5f74540
--- /dev/null
+++ b/entity/Contact_entity/entityfields/language/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+
+var key = vars.get("$field.LANGUAGE");
+if (key)
+{
+    var res = LanguageKeywordUtils.getViewValue(key);
+    result.string(res);
+}
diff --git a/entity/Contact_entity/entityfields/language/valueProcess.js b/entity/Contact_entity/entityfields/language/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f29e2ae5d150b96c68ef1c595fe723ef498e3080
--- /dev/null
+++ b/entity/Contact_entity/entityfields/language/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+var key = vars.get("$param.LanguageKey_param");
+result.string(key);
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/languagekey_param/valueProcess.js b/entity/Contact_entity/entityfields/languagekey_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b36e49dbbe3eefe8d4d3a1f0853ac92c9424b142
--- /dev/null
+++ b/entity/Contact_entity/entityfields/languagekey_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string("deu");
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/organisation_id/displayValueProcess.js b/entity/Contact_entity/entityfields/organisation_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..460b39849d5d34bac95e4b987d28a665b732e860
--- /dev/null
+++ b/entity/Contact_entity/entityfields/organisation_id/displayValueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.db");
+import("system.vars");
+import("Contact_lib");
+
+var organisationId = vars.get("$field.ORGANISATION_ID");
+var res = OrganisationUtils.getNameByOrganisationId(organisationId);
+
+result.string(res);
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/organisation_id/onValidation.js b/entity/Contact_entity/entityfields/organisation_id/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..414972ba58306e857d7bf27cd11c1175bf96cae3
--- /dev/null
+++ b/entity/Contact_entity/entityfields/organisation_id/onValidation.js
@@ -0,0 +1,22 @@
+import("Contact_lib");
+import("system.translate");
+import("system.result");
+import("system.db");
+import("system.vars");
+import("Entity_lib");
+import("Sql_lib");
+
+var personId = vars.getString("$field.PERSON_ID");
+var organisationId = ProcessHandlingUtils.getOnValidationValue("$field.ORGANISATION_ID");
+
+//workaround for organisationId: $local.value will return the name of the organisation which is not what we want
+//but the field already contains the changed value; so let's load the field instead of the $local.value-variable
+//this is a bug within the ADITO-kernel
+//TODO: change the workaround behaviour when $local.value is retrieved correct
+organisationId = vars.getString("$field.ORGANISATION_ID");
+
+//a entry within the Contact_enity can never be edited only created (it's edited within the Person_entity)
+//so no need to provide our own CONTACTID since it does not exist in the database right now => provide null instead
+var validationMsg = ContactUtils.validateIfAlreadyExists(personId, organisationId, null);
+if (validationMsg)
+    result.string(validationMsg);
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/organisation_id/onValueChange.js b/entity/Contact_entity/entityfields/organisation_id/onValueChange.js
deleted file mode 100644
index 0347a3d2d5b43d2b6be7a3464f03c5e61330828d..0000000000000000000000000000000000000000
--- a/entity/Contact_entity/entityfields/organisation_id/onValueChange.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-
-//since the standard address can be only values of org the standard address has to be reset on org change
-vars.set("$field.ADDRESS_ID", "");
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js b/entity/Contact_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b273dc66b2666ffe2198c68cf38f00e4b7817cc2
--- /dev/null
+++ b/entity/Contact_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+
+var personId = vars.get("$field.PERSON_ID");
+result.string(personId);
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js b/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b9088fd5cb96bb08a214dcc3e4b380d35795824f
--- /dev/null
+++ b/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js
@@ -0,0 +1,14 @@
+import("system.result");
+import("system.vars");
+import("system.db");
+import("Sql_lib");
+
+var contactId = vars.get("$param.OwnContactId_param");
+if (contactId)
+{
+    var sql = SqlCondition.begin()
+                          .andPrepare("CONTACT.CONTACTID", contactId)
+                          .buildSql("select CONTACT.PERSON_ID from CONTACT");
+    var personId = db.cell(sql);
+    result.string(personId);
+}
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/position/possibleItemsProcess.js b/entity/Contact_entity/entityfields/position/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a86d6820913b759ac976779f9c045378095b6d24
--- /dev/null
+++ b/entity/Contact_entity/entityfields/position/possibleItemsProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactPosition()).map(function (e){
+    return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers
+});
+
+result.object(res);
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/status/displayValueProcess.js b/entity/Contact_entity/entityfields/status/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7d0dbe15c01eb79d6bbb72e22ccdf982f5a3e208
--- /dev/null
+++ b/entity/Contact_entity/entityfields/status/displayValueProcess.js
@@ -0,0 +1,11 @@
+import("system.result");
+import("system.vars");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+
+var key = vars.get("$field.STATUS");
+if (key)
+{
+    var res = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), key);
+    result.string(res);
+}
diff --git a/entity/Contact_entity/entityfields/status/valueProcess.js b/entity/Contact_entity/entityfields/status/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab590b059440372f55b8c6d73d0c47eae06ca396
--- /dev/null
+++ b/entity/Contact_entity/entityfields/status/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+import("KeywordRegistry_basic");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value"))
+    result.string($KeywordRegistry.contactStatus$active());
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/targetcontext/valueProcess.js b/entity/Contact_entity/entityfields/targetcontext/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a15d38343e1dfbb1e1e80999aa6f9440cef261ea
--- /dev/null
+++ b/entity/Contact_entity/entityfields/targetcontext/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getContextName("Person"));
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/user_edit/valueProcess.js b/entity/Contact_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..90383c071316dc55fe51d43a93dd7db75551842e
--- /dev/null
+++ b/entity/Contact_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Contact_entity/entityfields/user_new/valueProcess.js b/entity/Contact_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dda83cfd00e13df5c6da64151f5d1e6d932a681e
--- /dev/null
+++ b/entity/Contact_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Contact_entity/onValidation.js b/entity/Contact_entity/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..ef3e299e677759fc8fe8b0237ee9fe27d6c4723f
--- /dev/null
+++ b/entity/Contact_entity/onValidation.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.neon");
+
+//TODO: workaround till there exists somtehing that can be done "beforeSave"; a validation of the whole entity is done before saving so let's use this process at the moment
+if(!vars.get("$field.ORGANISATION_ID"))
+{
+    neon.setFieldValue("$field.ORGANISATION_ID", "0");
+}
\ No newline at end of file
diff --git a/entity/Contact_entity/recordcontainers/db/conditionProcess.js b/entity/Contact_entity/recordcontainers/db/conditionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2433febc9615e28b2ca3a7d32b136122038e2aed
--- /dev/null
+++ b/entity/Contact_entity/recordcontainers/db/conditionProcess.js
@@ -0,0 +1,11 @@
+import("system.vars");
+import("system.db");
+import("system.result");
+import("Sql_lib");
+
+var cond = new SqlCondition();
+cond.andPrepareVars("CONTACT.CONTACTID", "$param.OwnContactId_param", "# != ?");
+cond.andPrepareVars("CONTACT.PERSON_ID", "$param.PersonId_param");
+
+//TODO: use a preparedCondition when available #1030812 #1034026
+result.string(db.translateCondition(cond.build("1 = 2")));
\ No newline at end of file
diff --git a/entity/Contact_entity/recordcontainers/db/fromClauseProcess.js b/entity/Contact_entity/recordcontainers/db/fromClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f1b7f857628de43f0e06daf553421d7758a099ff
--- /dev/null
+++ b/entity/Contact_entity/recordcontainers/db/fromClauseProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+
+result.string("CONTACT\n\
+        join ORGANISATION on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID");
\ No newline at end of file
diff --git a/entity/Contact_entity/recordcontainers/db/orderClauseProcess.js b/entity/Contact_entity/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..be00ad88d1395634e3a06d856da1652cb7b5ecdb
--- /dev/null
+++ b/entity/Contact_entity/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.db");
+
+result.object({
+    "ORGANISATION.NAME": db.ASCENDING
+});
\ No newline at end of file
diff --git a/entity/Context_entity/Context_entity.aod b/entity/Context_entity/Context_entity.aod
index 922b46b44dffc6aa9b1d11366909e547cd1132ff..df505cf73583fb1a97566a887270b53c34be8595 100644
--- a/entity/Context_entity/Context_entity.aod
+++ b/entity/Context_entity/Context_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Context_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Context_entity/documentation.adoc</documentation>
@@ -16,18 +16,6 @@
           <fieldName>Context</fieldName>
           <isConsumer v="false" />
         </entityDependency>
-        <entityDependency>
-          <name>d713987f-1cf0-4c6c-8373-24d135d22dc8</name>
-          <entityName>ActivityLink_entity</entityName>
-          <fieldName>Context</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>2dcb4637-6096-43fc-b07e-d44fb51fbc1b</name>
-          <entityName>TaskLink_entity</entityName>
-          <fieldName>Contexts</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
         <entityDependency>
           <name>37559258-24f1-4c8c-b462-23ddf8de4e1e</name>
           <entityName>AppointmentLink_entity</entityName>
@@ -53,7 +41,67 @@
     <entityProvider>
       <name>Context</name>
       <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>dab09827-2eeb-403d-a070-ba805d2640ee</name>
+          <entityName>ObjectRelationType_entity</entityName>
+          <fieldName>Contexts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>excludeContexts_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>excludeContexts_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>ActivityLinkable</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>de50f67e-5ed0-46aa-b007-8c086cf5fea5</name>
+          <entityName>ActivityLink_entity</entityName>
+          <fieldName>Context</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>excludeContexts_param</name>
+          <valueProcess>%aditoprj%/entity/Context_entity/entityfields/activitylinkable/children/excludecontexts_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityProvider>
+      <name>TaskLinkable</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>ff8925da-b69a-46dd-8fe2-d6707da8808e</name>
+          <entityName>TaskLink_entity</entityName>
+          <fieldName>Contexts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>excludeContexts_param</name>
+          <valueProcess>%aditoprj%/entity/Context_entity/entityfields/tasklinkable/children/excludecontexts_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityProvider>
+    <entityParameter>
+      <name>GetAllContexts_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
diff --git a/entity/Context_entity/entityfields/activitylinkable/children/excludecontexts_param/valueProcess.js b/entity/Context_entity/entityfields/activitylinkable/children/excludecontexts_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e48be1dbc1467adf67d6a78c7c0674fae7364eea
--- /dev/null
+++ b/entity/Context_entity/entityfields/activitylinkable/children/excludecontexts_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.object(["Task", "Activity"]);
\ No newline at end of file
diff --git a/entity/Context_entity/entityfields/tasklinkable/children/excludecontexts_param/valueProcess.js b/entity/Context_entity/entityfields/tasklinkable/children/excludecontexts_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e48be1dbc1467adf67d6a78c7c0674fae7364eea
--- /dev/null
+++ b/entity/Context_entity/entityfields/tasklinkable/children/excludecontexts_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.object(["Task", "Activity"]);
\ No newline at end of file
diff --git a/entity/Context_entity/recordcontainers/jdito/contentProcess.js b/entity/Context_entity/recordcontainers/jdito/contentProcess.js
index 9ecbf1f7087d37e50db57e7b8617659149fd0a6f..6ae2f8ad3cb2027b7ca6d81d5c7a803cf78b2663 100644
--- a/entity/Context_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Context_entity/recordcontainers/jdito/contentProcess.js
@@ -2,4 +2,9 @@ import("system.vars");
 import("system.result");
 import("Context_lib");
 
-result.object(ContextUtils.getContexts(true));
+var excludeContexts = vars.getString("$param.excludeContexts_param");
+if (excludeContexts)
+    excludeContexts = JSON.parse(excludeContexts);
+var filterContexts = !(vars.exists("$param.GetAllContexts_param") && vars.get("$param.GetAllContexts_param") == "true");
+
+result.object(ContextUtils.getContexts(filterContexts, excludeContexts));
\ No newline at end of file
diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod
index 8a8e01783102bce1277e53018ccb2257eb7c93b3..8136cd6d2dc78eafd8bc2d5132e4906de381078d 100644
--- a/entity/Contract_entity/Contract_entity.aod
+++ b/entity/Contract_entity/Contract_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Contract_entity</name>
   <title>Contract</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -55,17 +55,20 @@
       <name>CONTRACTSTATUS</name>
       <title>${CONTRACT_STATUS}</title>
       <consumer>ContractStates</consumer>
+      <displayValueProcess>%aditoprj%/entity/Contract_entity/entityfields/contractstatus/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>CONTRACTTYPE</name>
       <title>Type of contract</title>
       <consumer>ContractTypes</consumer>
+      <displayValueProcess>%aditoprj%/entity/Contract_entity/entityfields/contracttype/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>PAYMENT</name>
       <title>Payment method</title>
       <consumer>ContractPayments</consumer>
       <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/Contract_entity/entityfields/payment/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>CONTACT_ID</name>
@@ -160,6 +163,14 @@
     <entityProvider>
       <name>#PROVIDER</name>
       <recordContainer>db</recordContainer>
+      <dependencies>
+        <entityDependency>
+          <name>7d8f586a-3ee0-47e8-b328-3b624cf4abfa</name>
+          <entityName>Object_entity</entityName>
+          <fieldName>Contracts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
     </entityProvider>
     <entityField>
       <name>CONTACT_ORG_ID</name>
@@ -297,6 +308,28 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>AttributeTree</name>
+      <title>Attribute Tree</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelationTree_entity</entityName>
+        <fieldName>TreeProvider</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Contract_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js b/entity/Contract_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1dc63e18dbeacd2fbb1e7d09775000f40e26d483
--- /dev/null
+++ b/entity/Contract_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.CONTRACTID"));
diff --git a/entity/Contract_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js b/entity/Contract_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..431bcc952145cb451362fc69754f84ff1514bac5
--- /dev/null
+++ b/entity/Contract_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
diff --git a/entity/Contract_entity/entityfields/contact_id/linkedContextProcess.js b/entity/Contract_entity/entityfields/contact_id/linkedContextProcess.js
index e678b842c5b6cf510473693a355fa7833dcf28e8..2e504d63e3b5a3f71b54b072798b3ad09c50984b 100644
--- a/entity/Contract_entity/entityfields/contact_id/linkedContextProcess.js
+++ b/entity/Contract_entity/entityfields/contact_id/linkedContextProcess.js
@@ -2,4 +2,4 @@ import("system.vars");
 import("system.result");
 import("Contact_lib");
 
-result.string(ContactUtils.getContextByRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
+result.string(ContactUtils.getContextByContactId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/Contract_entity/entityfields/contractstatus/displayValueProcess.js b/entity/Contract_entity/entityfields/contractstatus/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..66bf177f6614e8c694f6505dd843281ad5355f90
--- /dev/null
+++ b/entity/Contract_entity/entityfields/contractstatus/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.contractStatus(), vars.get("$field.CONTRACTSTATUS")));
diff --git a/entity/Contract_entity/entityfields/contracttype/displayValueProcess.js b/entity/Contract_entity/entityfields/contracttype/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..71f2a895f0efd4b709d5de6b60fad8f75d8a7561
--- /dev/null
+++ b/entity/Contract_entity/entityfields/contracttype/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.contractType(), vars.get("$field.CONTRACTTYPE")));
diff --git a/entity/Contract_entity/entityfields/payment/displayValueProcess.js b/entity/Contract_entity/entityfields/payment/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..31293462189d8cbd0d1bc51a7b485631adc6dd49
--- /dev/null
+++ b/entity/Contract_entity/entityfields/payment/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.contractPayment(), vars.get("$field.PAYMENT")));
diff --git a/entity/Countries_Entity/Countries_Entity.aod b/entity/Countries_Entity/Countries_Entity.aod
index d565b06e7c153c37fcd5a6cfea48d25d07820ad7..52aefa689d402bf75dbf66540e2a966920a4d3b7 100644
--- a/entity/Countries_Entity/Countries_Entity.aod
+++ b/entity/Countries_Entity/Countries_Entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Countries_Entity</name>
   <title>Countries</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod
index 85846c167bc07435eb70e36e70c7a00556f339c6..cc14877d0f62f3d79739e5988419cfe5dee5fbe3 100644
--- a/entity/Document_entity/Document_entity.aod
+++ b/entity/Document_entity/Document_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Document_entity</name>
   <title>Document</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -53,11 +53,11 @@
       <name>BINDATA_UPLOAD</name>
       <title>Datei</title>
       <contentType>FILE</contentType>
-      <mandatory v="true" />
       <onValueChange>%aditoprj%/entity/Document_entity/entityfields/bindata_upload/onValueChange.js</onValueChange>
       <onValueChangeTypes>
         <element>MASK</element>
         <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
       </onValueChangeTypes>
     </entityField>
     <entityActionGroup>
@@ -90,6 +90,7 @@
     </entityParameter>
     <entityField>
       <name>UID</name>
+      <searchable v="false" />
     </entityField>
     <entityField>
       <name>DESCRIPTION</name>
@@ -180,6 +181,12 @@
           <fieldName>Documents</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>abd400df-a5a4-4750-b3a4-0476b2721161</name>
+          <entityName>Employee_entity</entityName>
+          <fieldName>Documents</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/Document_entity/recordcontainers/jdito/contentProcess.js b/entity/Document_entity/recordcontainers/jdito/contentProcess.js
index 6682c389f91318540cc0e444e7f5106bc2db2c66..ccee9b0372c42613f4f3fb78de22b7bfff755ef9 100644
--- a/entity/Document_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Document_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.vars");
 import("system.result");
 import("system.db");
@@ -16,7 +17,7 @@ if(vars.exists("$param.AssignmentTable_param") &&
     if(vars.exists("$param.Keyword_param")) {
         keyword = vars.get("$param.Keyword_param");
     }
-
+    
     // Check if multiple Documents are selected
     if(vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
         metadata = db.getBinaryMetadataForIds(vars.get("$local.idvalues"), true, alias)
diff --git a/entity/EmployeeRole_entity/EmployeeRole_entity.aod b/entity/EmployeeRole_entity/EmployeeRole_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..634f8e557f4ad28238fa8a0c69abf38cea1e34f2
--- /dev/null
+++ b/entity/EmployeeRole_entity/EmployeeRole_entity.aod
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
+  <name>EmployeeRole_entity</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityParameter>
+      <name>UserTitle_param</name>
+      <expose v="true" />
+      <mandatory v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>EmployeeRoles</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>3bcec57a-7165-4773-9253-5ecab26ee3f4</name>
+          <entityName>Employee_entity</entityName>
+          <fieldName>EmployeeRoles</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>UserTitle_param</name>
+          <expose v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityField>
+      <name>ROLE</name>
+      <title>Role</title>
+      <possibleItemsProcess>%aditoprj%/entity/EmployeeRole_entity/entityfields/role/possibleItemsProcess.js</possibleItemsProcess>
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <onInsert>%aditoprj%/entity/EmployeeRole_entity/recordcontainers/jdito/onInsert.js</onInsert>
+      <onUpdate>%aditoprj%/entity/EmployeeRole_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
+      <onDelete>%aditoprj%/entity/EmployeeRole_entity/recordcontainers/jdito/onDelete.js</onDelete>
+      <recordFields>
+        <element>UID.value</element>
+        <element>ROLE.value</element>
+      </recordFields>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/EmployeeRole_entity/entityfields/role/possibleItemsProcess.js b/entity/EmployeeRole_entity/entityfields/role/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e52145c8011337d56bd0cd3a5e9eea62f3562493
--- /dev/null
+++ b/entity/EmployeeRole_entity/entityfields/role/possibleItemsProcess.js
@@ -0,0 +1,27 @@
+import("system.translate");
+import("system.vars");
+import("system.result");
+import("system.tools");
+
+var selectedRole = vars.get("$field.ROLE");
+var roles = [];
+var allRoles = tools.getAllRoles([tools.ROLE_INTERNAL, tools.ROLE_PROJECT, tools.ROLE_XMPP]);
+var excludeRoles = {
+    "INTERNAL_GROUPWARE" : true, 
+    "INTERNAL_SNMP" : true, 
+    "INTERNAL_DESIGNER" : true, 
+    "INTERNAL_TECHNICAL" : true
+};
+
+if (tools.existUsers(vars.get("$param.UserTitle_param")))
+{
+    var userRoles = tools.getRoles(vars.get("$param.UserTitle_param"));
+    for (let i in userRoles)
+        excludeRoles[userRoles[i]] = true;
+}
+
+for (let roleId in allRoles)
+    if (!excludeRoles[roleId] || roleId == selectedRole)
+        roles.push([roleId, translate.text(allRoles[roleId][0])]);
+
+result.object(roles);
\ No newline at end of file
diff --git a/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js b/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d39a3cf15fb32ae74c737f572788ed07720a257c
--- /dev/null
+++ b/entity/EmployeeRole_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,11 @@
+import("system.result");
+import("system.vars");
+import("system.tools");
+
+var roles = [];
+var userTitle = vars.exists("$param.UserTitle_param") && vars.get("$param.UserTitle_param");
+
+if (userTitle && tools.existUsers(userTitle))
+    roles = tools.getRoles(userTitle).map(function (role) {return [role, role]});
+
+result.object(roles);
\ No newline at end of file
diff --git a/entity/EmployeeRole_entity/recordcontainers/jdito/onDelete.js b/entity/EmployeeRole_entity/recordcontainers/jdito/onDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..1ac230e6252328d3f455e833dc5db787c34d9fe4
--- /dev/null
+++ b/entity/EmployeeRole_entity/recordcontainers/jdito/onDelete.js
@@ -0,0 +1,19 @@
+import("system.result");
+import("system.vars");
+import("system.tools");
+
+var userTitle = vars.exists("$param.UserTitle_param") && vars.get("$param.UserTitle_param");
+var role = vars.get("$field.UID");
+
+if (userTitle)
+{    
+    var user = tools.getUser(userTitle);
+    var roles = tools.getRoles(userTitle);
+    roles = roles.filter(function (row)
+    {
+        return row != role;
+    });
+    user[tools.ROLES] = roles;
+    
+    tools.updateUser(user);
+}
\ No newline at end of file
diff --git a/entity/EmployeeRole_entity/recordcontainers/jdito/onInsert.js b/entity/EmployeeRole_entity/recordcontainers/jdito/onInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..258b1455824907ef5831d1b350b843da2330aa37
--- /dev/null
+++ b/entity/EmployeeRole_entity/recordcontainers/jdito/onInsert.js
@@ -0,0 +1,23 @@
+import("system.result");
+import("system.vars");
+import("system.tools");
+
+var userTitle = vars.exists("$param.UserTitle_param") && vars.get("$param.UserTitle_param");
+var role = vars.get("$field.ROLE");
+
+if (userTitle)
+{    
+    var user = tools.getUser(userTitle);
+    var roles = tools.getRoles(userTitle);
+    var roleObj = {};
+    roles = [role].concat(roles)
+        .filter(function (role) 
+        {
+            var exists = role in roleObj;
+            roleObj[role] = true;
+            return !exists;
+        });
+    user[tools.ROLES] = roles;
+    
+    tools.updateUser(user);
+}
\ No newline at end of file
diff --git a/entity/EmployeeRole_entity/recordcontainers/jdito/onUpdate.js b/entity/EmployeeRole_entity/recordcontainers/jdito/onUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..338f14eb0341a000ce6e5a21425d633a9d37478a
--- /dev/null
+++ b/entity/EmployeeRole_entity/recordcontainers/jdito/onUpdate.js
@@ -0,0 +1,25 @@
+import("system.result");
+import("system.vars");
+import("system.tools");
+
+var userTitle = vars.exists("$param.UserTitle_param") && vars.get("$param.UserTitle_param");
+var oldRole = vars.get("$field.UID");
+var newRole = vars.get("$field.ROLE");
+
+if (userTitle && oldRole != newRole)
+{    
+    var user = tools.getUser(userTitle);
+    var roles = tools.getRoles(userTitle);
+    var roleObj = {};
+    roleObj[oldRole] = true;
+    roles = [newRole].concat(roles)
+        .filter(function (role) 
+        {
+            var exists = role in roleObj;
+            roleObj[role] = true;
+            return !exists;
+        });
+    user[tools.ROLES] = roles;
+    
+    tools.updateUser(user);
+}
\ No newline at end of file
diff --git a/entity/Employee_entity/Employee_entity.aod b/entity/Employee_entity/Employee_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..748fd22d321b296b99cfb1c9072045c3068be6c6
--- /dev/null
+++ b/entity/Employee_entity/Employee_entity.aod
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
+  <name>Employee_entity</name>
+  <title>Employee</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <onValidation>%aditoprj%/entity/Employee_entity/onValidation.js</onValidation>
+  <afterOperatingState>%aditoprj%/entity/Employee_entity/afterOperatingState.js</afterOperatingState>
+  <iconId>VAADIN:GROUP</iconId>
+  <titleProcess>%aditoprj%/entity/Employee_entity/titleProcess.js</titleProcess>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+      <lookupIdfield>CONTACT_ID</lookupIdfield>
+    </entityProvider>
+    <entityField>
+      <name>UID</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/uid/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>TITLE</name>
+      <title>Username</title>
+      <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/title/valueProcess.js</valueProcess>
+      <onValidation>%aditoprj%/entity/Employee_entity/entityfields/title/onValidation.js</onValidation>
+    </entityField>
+    <entityField>
+      <name>CONTACT_ID</name>
+      <title>Person</title>
+      <consumer>Contacts</consumer>
+      <linkedContext>Person</linkedContext>
+      <mandatory v="true" />
+      <stateProcess>%aditoprj%/entity/Employee_entity/entityfields/contact_id/stateProcess.js</stateProcess>
+      <onValidation>%aditoprj%/entity/Employee_entity/entityfields/contact_id/onValidation.js</onValidation>
+      <onValueChange>%aditoprj%/entity/Employee_entity/entityfields/contact_id/onValueChange.js</onValueChange>
+    </entityField>
+    <entityField>
+      <name>FIRSTNAME</name>
+      <title>Firstname</title>
+    </entityField>
+    <entityField>
+      <name>LASTNAME</name>
+      <title>Lastname</title>
+      <mandatory v="false" />
+    </entityField>
+    <entityField>
+      <name>ISACTIVE</name>
+      <title>Active</title>
+      <contentType>BOOLEAN</contentType>
+      <possibleItemsProcess>%aditoprj%/entity/Employee_entity/entityfields/isactive/possibleItemsProcess.js</possibleItemsProcess>
+      <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/isactive/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>EMAIL_ADDRESS</name>
+      <title>Email</title>
+      <mandatory v="true" />
+      <possibleItemsProcess>%aditoprj%/entity/Employee_entity/entityfields/email_address/possibleItemsProcess.js</possibleItemsProcess>
+      <newItemsAllowed v="true" />
+      <onValidation>%aditoprj%/entity/Employee_entity/entityfields/email_address/onValidation.js</onValidation>
+    </entityField>
+    <entityField>
+      <name>PASSWORD</name>
+      <title>Password</title>
+      <contentType>PASSWORD</contentType>
+      <mandatoryProcess>%aditoprj%/entity/Employee_entity/entityfields/password/mandatoryProcess.js</mandatoryProcess>
+      <searchable v="false" />
+      <stateProcess>%aditoprj%/entity/Employee_entity/entityfields/password/stateProcess.js</stateProcess>
+    </entityField>
+    <entityField>
+      <name>CONFIRM_PASSWORD</name>
+      <title>Confirm password</title>
+      <contentType>PASSWORD</contentType>
+      <mandatoryProcess>%aditoprj%/entity/Employee_entity/entityfields/confirm_password/mandatoryProcess.js</mandatoryProcess>
+      <searchable v="false" />
+      <stateProcess>%aditoprj%/entity/Employee_entity/entityfields/confirm_password/stateProcess.js</stateProcess>
+    </entityField>
+    <entityActionField>
+      <name>setPassword</name>
+      <fieldType>ACTION</fieldType>
+      <title>Set password</title>
+      <onActionProcess>%aditoprj%/entity/Employee_entity/entityfields/setpassword/onActionProcess.js</onActionProcess>
+      <iconId>VAADIN:PASSWORD</iconId>
+    </entityActionField>
+    <entityParameter>
+      <name>PasswordChange_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>OnlyActives_param</name>
+      <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/onlyactives_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityConsumer>
+      <name>Contacts</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Person_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Attributes</name>
+      <title>Attributes</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelation_entity</entityName>
+        <fieldName>RelationsForSpecificObject</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityFieldGroup>
+      <name>NAME_fieldGroup</name>
+      <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/name_fieldgroup/valueProcess.js</valueProcess>
+      <title>Name</title>
+      <description>FIELDGROUP</description>
+      <fields>
+        <element>FIRSTNAME</element>
+        <element>LASTNAME</element>
+      </fields>
+    </entityFieldGroup>
+    <entityField>
+      <name>IMAGE</name>
+      <contentType>IMAGE</contentType>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/image/valueProcess.js</valueProcess>
+      <onValueChange>%aditoprj%/entity/Employee_entity/entityfields/image/onValueChange.js</onValueChange>
+      <onValueChangeTypes>
+        <element>MASK</element>
+      </onValueChangeTypes>
+    </entityField>
+    <entityField>
+      <name>DEPARTMENT</name>
+      <title>Department</title>
+      <state>INVISIBLE</state>
+    </entityField>
+    <entityField>
+      <name>DESCRIPTION</name>
+      <title>Description</title>
+      <contentType>LONG_TEXT</contentType>
+    </entityField>
+    <entityField>
+      <name>ROLES</name>
+    </entityField>
+    <entityConsumer>
+      <name>EmployeeRoles</name>
+      <title>Roles</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>EmployeeRole_entity</entityName>
+        <fieldName>EmployeeRoles</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>UserTitle_param</name>
+          <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employeeroles/children/usertitle_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>AttributeTree</name>
+      <title>Attribute Tree</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelationTree_entity</entityName>
+        <fieldName>TreeProvider</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Documents</name>
+      <title>Documents</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Document_entity</entityName>
+        <fieldName>Documents</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>AssignmentName_param</name>
+          <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/documents/children/assignmentname_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>AssignmentTable_param</name>
+          <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>AssignmentRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityProvider>
+      <name>Employees</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <lookupIdfield>CONTACT_ID</lookupIdfield>
+      <dependencies>
+        <entityDependency>
+          <name>0ca415b9-a940-424e-bee8-05c007b20659</name>
+          <entityName>Activity_entity</entityName>
+          <fieldName>Employees</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>73f93f34-bfe9-48fd-b9ce-7f8ba46014c9</name>
+          <entityName>Timetracking_entity</entityName>
+          <fieldName>Employees</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>OnlyActives_param</name>
+          <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employees/children/onlyactives_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityField>
+      <name>TITLE_ORIGINAL</name>
+      <searchable v="false" />
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/Employee_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <onInsert>%aditoprj%/entity/Employee_entity/recordcontainers/jdito/onInsert.js</onInsert>
+      <onUpdate>%aditoprj%/entity/Employee_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
+      <onDelete>%aditoprj%/entity/Employee_entity/recordcontainers/jdito/onDelete.js</onDelete>
+      <recordFields>
+        <element>UID.value</element>
+        <element>TITLE.value</element>
+        <element>TITLE_ORIGINAL.value</element>
+        <element>ISACTIVE.value</element>
+        <element>FIRSTNAME.value</element>
+        <element>LASTNAME.value</element>
+        <element>EMAIL_ADDRESS.value</element>
+        <element>EMAIL_ADDRESS.displayValue</element>
+        <element>DESCRIPTION.value</element>
+        <element>CONTACT_ID.value</element>
+        <element>CONTACT_ID.displayValue</element>
+        <element>STORED_SELECTIONS.value</element>
+      </recordFields>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/Employee_entity/afterOperatingState.js b/entity/Employee_entity/afterOperatingState.js
new file mode 100644
index 0000000000000000000000000000000000000000..bfb14f69c3df5a7c4b78ac91f3781e56736762f3
--- /dev/null
+++ b/entity/Employee_entity/afterOperatingState.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
+    neon.setFieldValue("$field.UID", ""); //UID = user-title, should be initially empty
\ No newline at end of file
diff --git a/entity/AnyContact_entity/entityfields/organisation/children/contactid_param/valueProcess.js b/entity/Employee_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js
similarity index 52%
rename from entity/AnyContact_entity/entityfields/organisation/children/contactid_param/valueProcess.js
rename to entity/Employee_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js
index 7b6137b4d105e9ba592cf8ef6e796fb838a32b09..16c85500b5355a72548030867e3d300661e9d4aa 100644
--- a/entity/AnyContact_entity/entityfields/organisation/children/contactid_param/valueProcess.js
+++ b/entity/Employee_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.CONTACTID"));
\ No newline at end of file
+result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/attributes/children/objecttype_param/valueProcess.js b/entity/Employee_entity/entityfields/attributes/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..008915f61deac19ccdd40fff81701de63eb3b6a2
--- /dev/null
+++ b/entity/Employee_entity/entityfields/attributes/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
diff --git a/entity/AnyContact_entity/entityfields/organisations/children/contactid_param/valueProcess.js b/entity/Employee_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
similarity index 52%
rename from entity/AnyContact_entity/entityfields/organisations/children/contactid_param/valueProcess.js
rename to entity/Employee_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
index 7b6137b4d105e9ba592cf8ef6e796fb838a32b09..16c85500b5355a72548030867e3d300661e9d4aa 100644
--- a/entity/AnyContact_entity/entityfields/organisations/children/contactid_param/valueProcess.js
+++ b/entity/Employee_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.CONTACTID"));
\ No newline at end of file
+result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js b/entity/Employee_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..008915f61deac19ccdd40fff81701de63eb3b6a2
--- /dev/null
+++ b/entity/Employee_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/confirm_password/mandatoryProcess.js b/entity/Employee_entity/entityfields/confirm_password/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fec2cc6ff48f1b706465426d53c69f773af1ed8d
--- /dev/null
+++ b/entity/Employee_entity/entityfields/confirm_password/mandatoryProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+var changePassword = vars.exists("$param.PasswordChange_param") && vars.get("$param.PasswordChange_param");
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || changePassword)
+    result.string(true);
+
diff --git a/entity/Employee_entity/entityfields/confirm_password/stateProcess.js b/entity/Employee_entity/entityfields/confirm_password/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a2440a36b0d0a6befdeff33db5800db1d9d02664
--- /dev/null
+++ b/entity/Employee_entity/entityfields/confirm_password/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+var state = neon.COMPONENTSTATE_INVISIBLE;
+var changePassword = vars.exists("$param.PasswordChange_param") && vars.get("$param.PasswordChange_param");
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || changePassword)
+    state = neon.COMPONENTSTATE_AUTO;
+
+result.string(state);
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/contact_id/onValidation.js b/entity/Employee_entity/entityfields/contact_id/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..35de5d935eb3755ddc0c4e9a345da60098433df2
--- /dev/null
+++ b/entity/Employee_entity/entityfields/contact_id/onValidation.js
@@ -0,0 +1,12 @@
+import("system.result");
+import("system.vars");
+import("system.tools");
+import("system.translate");
+
+var contactId = vars.get("$field.CONTACT_ID");
+var isTaken = tools.getUserByAttribute(tools.CONTACTID, [contactId]);
+isTaken = isTaken 
+    ? isTaken[tools.TITLE] != vars.get("$field.TITLE_ORIGINAL")
+    : false;
+if (contactId && isTaken)
+    result.string(translate.text("The person is already associated with another employee!"));
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/contact_id/onValueChange.js b/entity/Employee_entity/entityfields/contact_id/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..8b8af980eacaa7cf7553115592be5a360dd3406b
--- /dev/null
+++ b/entity/Employee_entity/entityfields/contact_id/onValueChange.js
@@ -0,0 +1,25 @@
+import("Communication_lib");
+import("Entity_lib");
+import("system.result");
+import("system.db");
+import("system.neon");
+import("system.vars");
+import("Sql_lib");
+
+var contactId = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID"));
+if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    && contactId)
+{
+    var name = db.array(
+        db.ROW, 
+        SqlCondition.begin()
+            .andPrepare("CONTACT.CONTACTID", contactId)
+            .buildSql("select FIRSTNAME, LASTNAME, (" + CommUtil.getStandardSubSqlMail() + ") from PERSON join CONTACT on CONTACT.PERSON_ID = PERSON.PERSONID")
+    );
+    
+    neon.setFieldValues({
+        "$field.FIRSTNAME" : name[0] || "",
+        "$field.LASTNAME" : name[1] || "",
+        "$field.EMAIL_ADDRESS" : name[2] || ""
+    });
+}
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/contact_id/stateProcess.js b/entity/Employee_entity/entityfields/contact_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..465a0be94edd9d1e3bbd126cb3f0546a546917a2
--- /dev/null
+++ b/entity/Employee_entity/entityfields/contact_id/stateProcess.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+import("Employee_lib")
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && EmployeeUtils.hasRelations(vars.get("$field.CONTACT_ID")))
+    result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/documents/children/assignmentname_param/valueProcess.js b/entity/Employee_entity/entityfields/documents/children/assignmentname_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3e4bf7585b2ca4628118e46818683fc51bfcf1c5
--- /dev/null
+++ b/entity/Employee_entity/entityfields/documents/children/assignmentname_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("DOCUMENT");
\ No newline at end of file
diff --git a/entity/AnyContact_entity/entityfields/phonecommunications/children/contactid_param/valueProcess.js b/entity/Employee_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js
similarity index 52%
rename from entity/AnyContact_entity/entityfields/phonecommunications/children/contactid_param/valueProcess.js
rename to entity/Employee_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js
index 7b6137b4d105e9ba592cf8ef6e796fb838a32b09..16c85500b5355a72548030867e3d300661e9d4aa 100644
--- a/entity/AnyContact_entity/entityfields/phonecommunications/children/contactid_param/valueProcess.js
+++ b/entity/Employee_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.CONTACTID"));
\ No newline at end of file
+result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js b/entity/Employee_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..183fb187965d2c5c6796149d00f00a617f88aab9
--- /dev/null
+++ b/entity/Employee_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string("EMPLOYEE");
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/email_address/onValidation.js b/entity/Employee_entity/entityfields/email_address/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..35d65102d1e956f09fd9c6298ae86f754c985a83
--- /dev/null
+++ b/entity/Employee_entity/entityfields/email_address/onValidation.js
@@ -0,0 +1,13 @@
+import("Entity_lib");
+import("system.result");
+import("system.vars");
+import("system.tools");
+import("system.translate");
+
+var email = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.EMAIL_ADDRESS"));
+var isTaken = tools.getUserByAttribute(tools.EMAIL, [email]);
+isTaken = isTaken 
+    ? isTaken[tools.TITLE] != vars.get("$field.TITLE_ORIGINAL")
+    : false;
+if (email && isTaken)
+    result.string(translate.text("Email must be unique!"));
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/email_address/possibleItemsProcess.js b/entity/Employee_entity/entityfields/email_address/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..21bbfcda32c97039f276ebb89db9eecaf6e21db1
--- /dev/null
+++ b/entity/Employee_entity/entityfields/email_address/possibleItemsProcess.js
@@ -0,0 +1,30 @@
+import("Communication_lib");
+import("system.neon");
+import("system.vars");
+import("system.db");
+import("system.result");
+import("Sql_lib");
+
+var contactId = vars.get("$field.CONTACT_ID");
+if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    && contactId)
+{
+    var sql = SqlCondition.begin()
+        .andPrepare("COMMUNICATION.CONTACT_ID", contactId)
+        .and("COMMUNICATION.MEDIUM_ID in ('" + CommUtil.getMediumIdsByCategory("EMAIL").join("', '") + "')")
+        .buildSql("select ADDR, ADDR from COMMUNICATION");
+    
+    var addresses = db.table(sql);
+    
+    //include the currently set email address
+    var currentAddress = vars.get("$field.EMAIL_ADDRESS");
+    if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && currentAddress
+        && !addresses.some(function (row) {return row[0] == currentAddress;}))
+    {
+        addresses.push([currentAddress, currentAddress]);
+    }   
+            
+    result.object(addresses);
+}
+else
+    result.object([]);
diff --git a/entity/Employee_entity/entityfields/employeeroles/children/usertitle_param/valueProcess.js b/entity/Employee_entity/entityfields/employeeroles/children/usertitle_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..16c85500b5355a72548030867e3d300661e9d4aa
--- /dev/null
+++ b/entity/Employee_entity/entityfields/employeeroles/children/usertitle_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.UID"));
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/employees/children/onlyactives_param/valueProcess.js b/entity/Employee_entity/entityfields/employees/children/onlyactives_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ed5935fc124e63ff268a7e65d5efceab70ac456e
--- /dev/null
+++ b/entity/Employee_entity/entityfields/employees/children/onlyactives_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string(true);
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/image/onValueChange.js b/entity/Employee_entity/entityfields/image/onValueChange.js
similarity index 98%
rename from entity/Organisation_entity/entityfields/image/onValueChange.js
rename to entity/Employee_entity/entityfields/image/onValueChange.js
index 86a4f85653ae6eb9a622f17318dd0e4782e75ee3..8698d90353b719f652eec1427f0d8b881a8a8660 100644
--- a/entity/Organisation_entity/entityfields/image/onValueChange.js
+++ b/entity/Employee_entity/entityfields/image/onValueChange.js
@@ -1,4 +1,4 @@
-import("Entity_lib");
-
-// TODO: also there is currently no good way to do updates with fields not connected to the record container. Workaround: imagevariable and update in onDBUpdate Process #1030023
+import("Entity_lib");
+
+// TODO: also there is currently no good way to do updates with fields not connected to the record container. Workaround: imagevariable and update in onDBUpdate Process #1030023
 FieldChanges.setChange("$field.IMAGE");
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/image/valueProcess.js b/entity/Employee_entity/entityfields/image/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d36f4b5cb45ad14fb9cb51f57ec4ba149c526468
--- /dev/null
+++ b/entity/Employee_entity/entityfields/image/valueProcess.js
@@ -0,0 +1,15 @@
+import("system.db");
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("Person_lib");
+import("Sql_lib");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW)
+{   
+    var personId = db.cell(SqlCondition.begin()
+        .andPrepareVars("CONTACT.CONTACTID", "$field.CONTACT_ID")
+        .buildSql("select PERSON_ID from CONTACT")
+    );
+    result.string(PersUtils.getImage(personId, (vars.getString("$field.FIRSTNAME") + " " + vars.getString("$field.LASTNAME")).trim()));
+}
diff --git a/entity/Employee_entity/entityfields/isactive/possibleItemsProcess.js b/entity/Employee_entity/entityfields/isactive/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2ce6bd157cf099c253f6dcac83d83af8a1f08720
--- /dev/null
+++ b/entity/Employee_entity/entityfields/isactive/possibleItemsProcess.js
@@ -0,0 +1,7 @@
+import("system.translate");
+import("system.result");
+
+result.object({
+    "true" : translate.text("Yes"),
+    "false" : translate.text("No")
+});
\ No newline at end of file
diff --git a/entity/Offeritem_entity/entityfields/assignedto/valueProcess.js b/entity/Employee_entity/entityfields/isactive/valueProcess.js
similarity index 83%
rename from entity/Offeritem_entity/entityfields/assignedto/valueProcess.js
rename to entity/Employee_entity/entityfields/isactive/valueProcess.js
index 8f2c38c402edee8d73ca7aec51fcfb614a68786e..86ff56f08f7147b273771b10752464d691c1deb0 100644
--- a/entity/Offeritem_entity/entityfields/assignedto/valueProcess.js
+++ b/entity/Employee_entity/entityfields/isactive/valueProcess.js
@@ -1,6 +1,6 @@
+import("system.neon");
 import("system.vars");
 import("system.result");
-import("system.neon");
 
 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string("")
\ No newline at end of file
+    result.string("true");
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/name_fieldgroup/valueProcess.js b/entity/Employee_entity/entityfields/name_fieldgroup/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cfe8dbda0147ed4ce85bc5394e118459edb315d1
--- /dev/null
+++ b/entity/Employee_entity/entityfields/name_fieldgroup/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string((vars.get("$field.FIRSTNAME") + " " + vars.get("$field.LASTNAME")).trim());
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/onlyactives_param/valueProcess.js b/entity/Employee_entity/entityfields/onlyactives_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3b4a1820eb5e129f83a9fb1424a833f1e7209a3b
--- /dev/null
+++ b/entity/Employee_entity/entityfields/onlyactives_param/valueProcess.js
@@ -0,0 +1,2 @@
+import("system.result");
+result.string(false);
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/password/mandatoryProcess.js b/entity/Employee_entity/entityfields/password/mandatoryProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fec2cc6ff48f1b706465426d53c69f773af1ed8d
--- /dev/null
+++ b/entity/Employee_entity/entityfields/password/mandatoryProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+var changePassword = vars.exists("$param.PasswordChange_param") && vars.get("$param.PasswordChange_param");
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || changePassword)
+    result.string(true);
+
diff --git a/entity/Employee_entity/entityfields/password/stateProcess.js b/entity/Employee_entity/entityfields/password/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a2440a36b0d0a6befdeff33db5800db1d9d02664
--- /dev/null
+++ b/entity/Employee_entity/entityfields/password/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+var state = neon.COMPONENTSTATE_INVISIBLE;
+var changePassword = vars.exists("$param.PasswordChange_param") && vars.get("$param.PasswordChange_param");
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || changePassword)
+    state = neon.COMPONENTSTATE_AUTO;
+
+result.string(state);
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/setpassword/onActionProcess.js b/entity/Employee_entity/entityfields/setpassword/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..47df2ead20cc125d332d120712a5f30184b81b70
--- /dev/null
+++ b/entity/Employee_entity/entityfields/setpassword/onActionProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.neon");
+
+var params = {
+    "PasswordChange_param" : true
+};
+neon.openContext("Employee", "EmployeePassword_view", [vars.get("$field.UID")], neon.OPERATINGSTATE_EDIT, params);
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/title/onValidation.js b/entity/Employee_entity/entityfields/title/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..b7a2177b025698809ddcc9f2d4adb5ea62cdd6e6
--- /dev/null
+++ b/entity/Employee_entity/entityfields/title/onValidation.js
@@ -0,0 +1,11 @@
+import("system.translate");
+import("system.neon");
+import("system.result");
+import("system.vars");
+import("system.tools");
+import("Entity_lib");
+
+var title = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.TITLE"));
+if (!(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && title == vars.get("$field.TITLE_ORIGINAL")) 
+    && title != "" && tools.existUsers(title))
+        result.string(translate.text("Username already exists!"));
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/title/valueProcess.js b/entity/Employee_entity/entityfields/title/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..058b37c3c1c367ab44f6212d3e684707bb3a398b
--- /dev/null
+++ b/entity/Employee_entity/entityfields/title/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+import("Employee_lib");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && !vars.get("$field.TITLE"))
+    result.string(EmployeeUtils.generateUserName(vars.get("$field.FIRSTNAME"), vars.get("$field.LASTNAME"), "f.l+"));
\ No newline at end of file
diff --git a/entity/Employee_entity/entityfields/uid/valueProcess.js b/entity/Employee_entity/entityfields/uid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e2c2abf86f0bd1c75ffb84ca5ef712288a78c3f
--- /dev/null
+++ b/entity/Employee_entity/entityfields/uid/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    && vars.get("$field.TITLE"))
+        result.string(vars.get("$field.TITLE"));
\ No newline at end of file
diff --git a/entity/Employee_entity/onValidation.js b/entity/Employee_entity/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..d10cbbc9b092349c5dccd050e9b687c838570a01
--- /dev/null
+++ b/entity/Employee_entity/onValidation.js
@@ -0,0 +1,6 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+
+if (vars.get("$field.PASSWORD") != vars.get("$field.CONFIRM_PASSWORD"))
+    result.string(translate.text("Password and confirmation must be the same!"));
\ No newline at end of file
diff --git a/entity/Employee_entity/recordcontainers/jdito/contentProcess.js b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f40cbd25c020ec69598596d91c051cac0ab0c538
--- /dev/null
+++ b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,46 @@
+import("system.vars");
+import("system.result");
+import("system.tools");
+import("Util_lib");
+import("Contact_lib");
+import("JditoFilter_lib");
+import("Employee_lib");
+
+var users;
+if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
+    users = [tools.getUser(vars.get("$local.idvalues"), tools.PROFILE_FULL)];
+else
+{
+    var values = ["true", "false"];
+    if (vars.exists("$param.OnlyActives_param") && vars.get("$param.OnlyActives_param") == "true")
+        values = ["true"];
+    users = tools.getUsersByAttribute(tools.ISACTIVE, values, tools.PROFILE_FULL);
+}
+
+users = users.map(function (user)
+{
+    return [
+        user[tools.TITLE],
+        user[tools.TITLE],
+        user[tools.TITLE],
+        user[tools.PARAMS][tools.ISACTIVE],
+        user[tools.PARAMS][tools.FIRSTNAME],
+        user[tools.PARAMS][tools.LASTNAME],
+        user[tools.PARAMS][tools.EMAIL],
+        user[tools.PARAMS][tools.EMAIL],
+        user[tools.DESCRIPTION],
+        user[tools.PARAMS][tools.CONTACTID],
+        ContactUtils.getTitleByContactId(user[tools.PARAMS][tools.CONTACTID]), //TODO: get the names more efficiently
+        user[tools.PARAMS][tools.FRAME_STOREDSEARCHES]
+    ];
+});
+
+var filter = vars.exists("$local.filter") && vars.get("$local.filter"); 
+
+//TODO: this is a workaround that filters the records manually, it should be possible to filter the users with a tools.* method
+users = JditoFilterUtils.filterRecords(["UID", "TITLE", "TITLE_ORIGINAL", "ISACTIVE", "FIRSTNAME", "LASTNAME", "EMAIL_ADDRESS", "DESCRIPTION", "CONTACT_ID", ""], users, filter);
+
+
+ArrayUtils.sort2d(users, 0, true, false); //sort by username
+
+result.object(users);
\ No newline at end of file
diff --git a/entity/Employee_entity/recordcontainers/jdito/onDelete.js b/entity/Employee_entity/recordcontainers/jdito/onDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..212b6d23132d934d2e7169624a2607b58d99a2e0
--- /dev/null
+++ b/entity/Employee_entity/recordcontainers/jdito/onDelete.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.vars");
+import("system.tools");
+import("Employee_lib");
+
+//TODO: the current user should not delete himself, put this condition in grantDelete when available
+if (EmployeeUtils.getCurrentUserName() != vars.get("$field.TITLE") && !EmployeeUtils.hasRelations(vars.get("$field.CONTACT_ID")))
+    tools.deleteUser(vars.get("$field.TITLE"));
\ No newline at end of file
diff --git a/entity/Employee_entity/recordcontainers/jdito/onInsert.js b/entity/Employee_entity/recordcontainers/jdito/onInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..9d7e0fddbe405e9a445b8373a512eec792dc929c
--- /dev/null
+++ b/entity/Employee_entity/recordcontainers/jdito/onInsert.js
@@ -0,0 +1,23 @@
+import("system.neon");
+import("system.vars");
+import("system.tools");
+import("Employee_lib");
+
+var user = {};
+var params = []; //this has to be an array
+params[tools.FIRSTNAME] = vars.get("$field.FIRSTNAME");
+params[tools.LASTNAME] = vars.get("$field.LASTNAME");
+params[tools.EMAIL] = vars.get("$field.EMAIL_ADDRESS");
+params[tools.CALENDARID] = vars.get("$field.EMAIL_ADDRESS");
+params[tools.CONTACTID] = vars.get("$field.CONTACT_ID");
+params[tools.DESCRIPTION] = vars.get("$field.DESCRIPTION");
+params[tools.ISACTIVE] = vars.get("$field.ISACTIVE");
+
+user[tools.TITLE] = vars.get("$field.TITLE");
+user[tools.PARAMS] = params;
+
+if (vars.get("$field.PASSWORD") && vars.get("$field.PASSWORD") == vars.get("$field.CONFIRM_PASSWORD"))
+{
+    user[tools.PASSWORD] = vars.getString("$field.PASSWORD");
+}
+tools.insertUser(user);
\ No newline at end of file
diff --git a/entity/Employee_entity/recordcontainers/jdito/onUpdate.js b/entity/Employee_entity/recordcontainers/jdito/onUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..6402be1fa563698440eecb3c0421427a58406644
--- /dev/null
+++ b/entity/Employee_entity/recordcontainers/jdito/onUpdate.js
@@ -0,0 +1,37 @@
+import("system.db");
+import("system.vars");
+import("system.tools");
+import("Person_lib");
+import("Entity_lib");
+
+// TODO: this is a workaround for missing possibility to react on changes of fields not connected to record Contqainer #1030023
+FieldChanges.assimilateChangeAndDispose("$field.IMAGE", function (state, value)
+{
+    var personId = db.cell(SqlCondition.begin()
+        .andPrepareVars("CONTACT.CONTACTID", "$field.CONTACT_ID")
+        .buildSql("select PERSON_ID from CONTACT")
+    );
+    if (state == FieldChanges.STATE_CHANGED())
+        PersUtils.setImage(personId, value);
+    else
+        PersUtils.removeImage(personId);
+});
+
+var user = tools.getUser(vars.get("$field.TITLE_ORIGINAL"));
+
+user[tools.TITLE] = vars.get("$field.TITLE");
+user[tools.PARAMS][tools.ISACTIVE] = vars.get("$field.ISACTIVE");
+user[tools.PARAMS][tools.FIRSTNAME] = vars.get("$field.FIRSTNAME");
+user[tools.PARAMS][tools.LASTNAME] = vars.get("$field.LASTNAME");
+user[tools.PARAMS][tools.EMAIL] = vars.get("$field.EMAIL_ADDRESS");
+user[tools.PARAMS][tools.CALENDARID] = vars.get("$field.EMAIL_ADDRESS");
+user[tools.PARAMS][tools.CONTACTID] = vars.get("$field.CONTACT_ID");
+user[tools.PARAMS][tools.DESCRIPTION] = vars.get("$field.DESCRIPTION");
+
+if (vars.exists("$param.PasswordChange_param") && vars.get("$param.PasswordChange_param") 
+    && vars.get("$field.PASSWORD") == vars.get("$field.CONFIRM_PASSWORD"))
+{
+    user[tools.PASSWORD] = vars.getString("$field.PASSWORD");
+}
+
+tools.updateUser(user);
\ No newline at end of file
diff --git a/entity/Employee_entity/titleProcess.js b/entity/Employee_entity/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cfe8dbda0147ed4ce85bc5394e118459edb315d1
--- /dev/null
+++ b/entity/Employee_entity/titleProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string((vars.get("$field.FIRSTNAME") + " " + vars.get("$field.LASTNAME")).trim());
\ No newline at end of file
diff --git a/entity/Gender_keyword/Gender_keyword.aod b/entity/Gender_keyword/Gender_keyword.aod
index d6920a0084f96c6b6ff0686a113059fa7f0d402b..8c9e2c0a1cdd1f8f012084178f99e3819f4812a8 100644
--- a/entity/Gender_keyword/Gender_keyword.aod
+++ b/entity/Gender_keyword/Gender_keyword.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Gender_keyword</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <titleProcess>%aditoprj%/entity/Gender_keyword/titleProcess.js</titleProcess>
diff --git a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod
index 5a7e7aea1782f525b304a6ef94cee2e92ecf98db..73aa5c1d0b2eb357dcdbb42d1aa65fcc4e72e506 100644
--- a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod
+++ b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>KeywordAttributeRelation_entity</name>
   <title>Keyword Attribute Values</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -51,6 +51,12 @@
           <fieldName>KeywordAttributeRelations</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>53b35858-7c81-429c-9e06-0362f567ad42</name>
+          <entityName>KeywordEntry_entity</entityName>
+          <fieldName>KeywordAttributeRelationsReadOnly</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
diff --git a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod
index e0b2005872950693b9de8be785a13f02a85b264f..43f05de6962bd8f5d86893be0ee04a5048b06bbf 100644
--- a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod
+++ b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>KeywordAttribute_entity</name>
   <title>Keyword Attribute</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -34,6 +34,7 @@
       <title>Type</title>
       <consumer>KeywordAttributeTypes</consumer>
       <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/KeywordAttribute_entity/entityfields/type/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityProvider>
       <name>SpecificContainerKeyword</name>
@@ -50,12 +51,10 @@
       <children>
         <entityParameter>
           <name>ContainerName_param</name>
-          <expose v="true" />
           <triggerRecalculation v="false" />
         </entityParameter>
         <entityParameter>
           <name>FilterAlreadyUsedByEntryId_param</name>
-          <expose v="true" />
         </entityParameter>
       </children>
     </entityProvider>
diff --git a/entity/KeywordAttribute_entity/entityfields/type/displayValueProcess.js b/entity/KeywordAttribute_entity/entityfields/type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9c4c0c7870b9050d378e9f2da97a81f226b8c59b
--- /dev/null
+++ b/entity/KeywordAttribute_entity/entityfields/type/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.keywordAttributeType(), vars.get("$field.TYPE")));
diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index 5ad4909c238d9048eeba907bc96c3d068057d412..3c8458d4e012e9b23427b7f7c9214c647d75e491 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>KeywordEntry_entity</name>
   <title>Keyword</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -21,6 +21,7 @@
       <title>Container</title>
       <mandatory v="true" />
       <possibleItemsProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/container/possibleItemsProcess.js</possibleItemsProcess>
+      <newItemsAllowed v="true" />
       <groupable v="true" />
       <state>READONLY</state>
       <stateProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/container/stateProcess.js</stateProcess>
@@ -360,6 +361,12 @@
           <fieldName>KeywordContactStates</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>7945545b-f1e6-446d-84c3-ef68486652f4</name>
+          <entityName>Contact_entity</entityName>
+          <fieldName>KeywordContactStates</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
       <children>
         <entityParameter>
@@ -402,11 +409,30 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>KeywordAttributeRelationsReadOnly</name>
+      <title>Keyword Attribute Values</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc</documentation>
+      <state>READONLY</state>
+      <dependency>
+        <name>dependency</name>
+        <entityName>KeywordAttributeRelation_entity</entityName>
+        <fieldName>AttributesForKeywordEntry</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>KeywordEntryId_param</name>
+          <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
       <name>db</name>
       <alias>Data_alias</alias>
+      <isPageable v="false" />
       <conditionProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBDelete>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
diff --git a/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..53afbdfbbfe9044ca0a5af0984365d6b2ee5bdba
--- /dev/null
+++ b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.AB_KEYWORD_ENTRYID"));
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..99874edc30d1b8340662c802a9b2b4ef1da0fcdd
--- /dev/null
+++ b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc
@@ -0,0 +1,2 @@
+Since it's not possible to limit the keywordAttributeRelation to a distinctive list (use a KeywordAttributeRelation "category" only once per keyowrd-entry) within the generic-multiple-template / titledList-template use this readonly consumer there.
+For editing use the not-read-only consumer in a list-template. In a list-template only one row can be changed (and stored) which means we can exlucde already stored entries.
\ No newline at end of file
diff --git a/entity/Language_entity/Language_entity.aod b/entity/Language_entity/Language_entity.aod
index b63b9b4eee23d3f04884875dfc1270ee7b1ba8b4..42d80eae1666fa2e9ad84b8bba9f18c1a523f980 100644
--- a/entity/Language_entity/Language_entity.aod
+++ b/entity/Language_entity/Language_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Language_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <titleProcess>%aditoprj%/entity/Language_entity/titleProcess.js</titleProcess>
diff --git a/entity/ModuleTree_entity/ModuleTree_entity.aod b/entity/ModuleTree_entity/ModuleTree_entity.aod
index 775888a81b8737bc98f21036ee0033dcfad19290..742063a7fd1316ac091fce3c560fbe1fbc694f1c 100644
--- a/entity/ModuleTree_entity/ModuleTree_entity.aod
+++ b/entity/ModuleTree_entity/ModuleTree_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>ModuleTree_entity</name>
   <title>Tree Entity</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/entity/ModuleTree_entity/recordcontainers/jdito/contentProcess.js b/entity/ModuleTree_entity/recordcontainers/jdito/contentProcess.js
index 4880654df03ad3c456f15872c6e3a06c5e1bbc59..061d2085b3a286c7af1ab0a50546f54f7d18e15a 100644
--- a/entity/ModuleTree_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/ModuleTree_entity/recordcontainers/jdito/contentProcess.js
@@ -9,7 +9,7 @@ var fixedID = vars.get("$param.ID_param");
 let resArray = [];
 
 // Query root element
-var root = queryRootElement(fixedContextName, fixedID);
+var root = queryRootElement(fixedContextName, fixedID, true);
 if (root !== null) {
     // Push root element
     resArray.push(root);
@@ -73,23 +73,36 @@ function queryChildrenElements (pContextName, pID) {
  * 
  * @param pContextName Context name of the root element.
  * @param pID ID of the root element.
+ * @param pGetFirst start from the first element
  */
-function queryRootElement (pContextName, pID) {
+function queryRootElement (pContextName, pID, pGetFirst) {
     var resultArray;
     if (pContextName === "Task") {
-        resultArray = db.table("select TASKID, PARENT_ID, PARENT_CONTEXT, SUBJECT, DESCRIPTION from TASK where TASKID = '" + pID + "'");
+        resultArray = db.array(db.ROW, "select TASKID, PARENT_ID, PARENT_CONTEXT, SUBJECT, DESCRIPTION from TASK where TASKID = '" + pID + "'");
         if (resultArray.length === 0) {
             return null;
         }
-        
-        return augmentData(resultArray[0], "Task");
+        if (pGetFirst && resultArray[1] && resultArray[2])
+            return queryRootElement(resultArray[2], resultArray[1], pGetFirst);
+        if (pGetFirst)
+        {
+            fixedContextName = "Task";
+            fixedID = resultArray[0];
+        }
+        return augmentData(resultArray, "Task");
     } else if (pContextName === "Activity") {
-        resultArray = db.table("select ACTIVITYID, PARENT_ID, PARENT_CONTEXT, SUBJECT, INFO from ACTIVITY where ACTIVITYID = '" + pID +"'");
+        resultArray = db.array(db.ROW, "select ACTIVITYID, PARENT_ID, PARENT_CONTEXT, SUBJECT, INFO from ACTIVITY where ACTIVITYID = '" + pID +"'");
         if (resultArray.length === 0) {
             return null;
         }
-        
-        return augmentData(resultArray[0], "Activity");
+        if (pGetFirst && resultArray[1] && resultArray[2])
+            return queryRootElement(resultArray[2], resultArray[1], pGetFirst);
+        if (pGetFirst)
+        {
+            fixedContextName = "Activity";
+            fixedID = resultArray[0];
+        }
+        return augmentData(resultArray, "Activity");
     } else {
         return null;
     }
diff --git a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod
index 003dba3b10364f8d369492e4eca97e2a14ba649e..ad564c0c7354b4692adc0ef11ff6983f5ebd06d2 100644
--- a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod
+++ b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>ObjectRelationType_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:SPLIT</icon>
   <titleProcess>%aditoprj%/entity/ObjectRelationType_entity/titleProcess.js</titleProcess>
   <recordContainer>jdito</recordContainer>
   <entityFields>
@@ -21,7 +22,10 @@
       <valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/uid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
-      <name>RELATION_TITLE</name>
+      <name>SOURCE_RELATION_TITLE</name>
+      <title>Relation type 1</title>
+      <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/source_relation_title/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityParameter>
       <name>SourceObjectType_param</name>
@@ -32,22 +36,114 @@
     <entityProvider>
       <name>ObjectRelationTypes</name>
       <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>81f4567a-fc89-49fc-be86-77600cb66305</name>
+          <entityName>ObjectTree_entity</entityName>
+          <fieldName>ObjectRelationTypes</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
       <children>
         <entityParameter>
           <name>SourceObjectType_param</name>
+          <expose v="true" />
           <triggerRecalculation v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>OnlyFirstSide_param</name>
+          <valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/objectrelationtypes/children/onlyfirstside_param/valueProcess.js</valueProcess>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
+    <entityParameter>
+      <name>OnlyFirstSide_param</name>
+      <valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/onlyfirstside_param/valueProcess.js</valueProcess>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityField>
+      <name>RELATION_TYPE</name>
+    </entityField>
+    <entityField>
+      <name>DIRECTION</name>
+    </entityField>
+    <entityField>
+      <name>HIERARCHY</name>
+      <title>Hierarchy</title>
+      <contentType>BOOLEAN</contentType>
+      <possibleItemsProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/hierarchy/possibleItemsProcess.js</possibleItemsProcess>
+      <valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/hierarchy/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DEST_OBJECT_TYPE</name>
+      <title>Context 2</title>
+      <consumer>Contexts</consumer>
+      <displayValueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/dest_object_type/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>SOURCE_OBJECT_TYPE</name>
+      <title>Context 1</title>
+      <consumer>Contexts</consumer>
+      <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/source_object_type/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>AB_OBJECTRELATIONTYPE1</name>
+    </entityField>
+    <entityField>
+      <name>AB_OBJECTRELATIONTYPE2</name>
+    </entityField>
+    <entityField>
+      <name>SIDE</name>
+    </entityField>
+    <entityField>
+      <name>DEST_OBJECTRELATIONTYPEID</name>
+    </entityField>
+    <entityField>
+      <name>DEST_RELATION_TITLE</name>
+      <title>Relation type 2</title>
+      <displayValueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/dest_relation_title/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>Contexts</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Context_entity</entityName>
+        <fieldName>Context</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityActionField>
+      <name>removeUsage</name>
+      <fieldType>ACTION</fieldType>
+      <title>Delete all usage</title>
+      <onActionProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/removeusage/onActionProcess.js</onActionProcess>
+      <iconId>NEON:TRASH</iconId>
+    </entityActionField>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
       <name>jdito</name>
       <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
       <contentProcess>%aditoprj%/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <onInsert>%aditoprj%/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js</onInsert>
+      <onUpdate>%aditoprj%/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
+      <onDelete>%aditoprj%/entity/ObjectRelationType_entity/recordcontainers/jdito/onDelete.js</onDelete>
       <recordFields>
         <element>UID.value</element>
-        <element>RELATION_TITLE.value</element>
+        <element>SOURCE_RELATION_TITLE.value</element>
+        <element>RELATION_TYPE.value</element>
+        <element>DIRECTION.value</element>
+        <element>HIERARCHY.value</element>
+        <element>DEST_OBJECT_TYPE.value</element>
+        <element>SOURCE_OBJECT_TYPE.value</element>
+        <element>AB_OBJECTRELATIONTYPE1.value</element>
+        <element>AB_OBJECTRELATIONTYPE2.value</element>
+        <element>SIDE.value</element>
+        <element>DEST_OBJECTRELATIONTYPEID.value</element>
+        <element>DEST_RELATION_TITLE.value</element>
       </recordFields>
     </jDitoRecordContainer>
   </recordContainers>
diff --git a/entity/ObjectRelationType_entity/entityfields/dest_object_type/displayValueProcess.js b/entity/ObjectRelationType_entity/entityfields/dest_object_type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4cee3b90ca1fb124959d0d75bdbbed6a728fac65
--- /dev/null
+++ b/entity/ObjectRelationType_entity/entityfields/dest_object_type/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("Context_lib");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.DEST_OBJECT_TYPE")) {
+    result.string("");
+} else if (vars.exists("$field.DEST_OBJECT_TYPE") && vars.get("$field.DEST_OBJECT_TYPE")) {
+    result.string(ContextUtils.getContext(vars.get("$field.DEST_OBJECT_TYPE"))[2]);
+}
\ No newline at end of file
diff --git a/entity/ObjectRelationType_entity/entityfields/dest_relation_title/displayValueProcess.js b/entity/ObjectRelationType_entity/entityfields/dest_relation_title/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6aecb834c55c3c2d2bd7ec41df700ab39b7ae933
--- /dev/null
+++ b/entity/ObjectRelationType_entity/entityfields/dest_relation_title/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("system.translate");
+
+result.string(translate.text(vars.get("$field.DEST_RELATION_TITLE")));
\ No newline at end of file
diff --git a/entity/ObjectRelationType_entity/entityfields/hierarchy/possibleItemsProcess.js b/entity/ObjectRelationType_entity/entityfields/hierarchy/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b88d5392d1a40aa827f90e9dfcdd26303c4b1baa
--- /dev/null
+++ b/entity/ObjectRelationType_entity/entityfields/hierarchy/possibleItemsProcess.js
@@ -0,0 +1,7 @@
+import("system.translate");
+import("system.result");
+
+result.object([
+     ["1", translate.text("Yes")]
+    ,["0", translate.text("No")]
+]);
\ No newline at end of file
diff --git a/entity/ObjectRelationType_entity/entityfields/hierarchy/valueProcess.js b/entity/ObjectRelationType_entity/entityfields/hierarchy/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b3028ee4f3a3271d9a6603e8d52faf656a4fa484
--- /dev/null
+++ b/entity/ObjectRelationType_entity/entityfields/hierarchy/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string("0")
+}
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/withprivat_param/valueProcess.js b/entity/ObjectRelationType_entity/entityfields/objectrelationtypes/children/onlyfirstside_param/valueProcess.js
similarity index 100%
rename from entity/Organisation_entity/entityfields/withprivat_param/valueProcess.js
rename to entity/ObjectRelationType_entity/entityfields/objectrelationtypes/children/onlyfirstside_param/valueProcess.js
diff --git a/entity/Person_entity/entityfields/organisations/children/withprivat_param/valueProcess.js b/entity/ObjectRelationType_entity/entityfields/onlyfirstside_param/valueProcess.js
similarity index 97%
rename from entity/Person_entity/entityfields/organisations/children/withprivat_param/valueProcess.js
rename to entity/ObjectRelationType_entity/entityfields/onlyfirstside_param/valueProcess.js
index 975bf6435dc851b37792e7ee9a8666ff109192dc..985b9f8612b5b61cb0d132b3fa7aec6412d4439a 100644
--- a/entity/Person_entity/entityfields/organisations/children/withprivat_param/valueProcess.js
+++ b/entity/ObjectRelationType_entity/entityfields/onlyfirstside_param/valueProcess.js
@@ -1,3 +1,2 @@
 import("system.result");
-
 result.string("1");
\ No newline at end of file
diff --git a/entity/ObjectRelationType_entity/entityfields/removeusage/onActionProcess.js b/entity/ObjectRelationType_entity/entityfields/removeusage/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7de1f5f6cb2dc53d15d82fdf758c2dd93880f2a6
--- /dev/null
+++ b/entity/ObjectRelationType_entity/entityfields/removeusage/onActionProcess.js
@@ -0,0 +1,14 @@
+import("system.translate");
+import("system.question");
+import("system.vars");
+import("system.db");
+import("Sql_lib");
+
+if (vars.get("$field.UID") && vars.get("$field.DEST_OBJECTRELATIONTYPEID"))
+{
+    db.deleteData("AB_OBJECTRELATION", SqlCondition.begin()
+                                   .andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1", "$field.UID")
+                                   .andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE2", "$field.DEST_OBJECTRELATIONTYPEID").build("1=2"));
+    question.showMessage(translate.withArguments("Deleted all usages of \"%0\".", [translate.text(vars.get("$field.SOURCE_RELATION_TITLE")) + " -> " + translate.text(vars.get("$field.DEST_RELATION_TITLE"))]), question.INFORMATION, translate.text("Successful"))
+}
+
diff --git a/entity/ObjectRelationType_entity/entityfields/source_object_type/displayValueProcess.js b/entity/ObjectRelationType_entity/entityfields/source_object_type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..762ebccbcb1e905fa528f7557056c0be29e32682
--- /dev/null
+++ b/entity/ObjectRelationType_entity/entityfields/source_object_type/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("Context_lib");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.SOURCE_OBJECT_TYPE")) {
+    result.string("");
+} else if (vars.exists("$field.SOURCE_OBJECT_TYPE") && vars.get("$field.SOURCE_OBJECT_TYPE")) {
+    result.string(ContextUtils.getContext(vars.get("$field.SOURCE_OBJECT_TYPE"))[2]);
+}
\ No newline at end of file
diff --git a/entity/ObjectRelationType_entity/entityfields/source_relation_title/displayValueProcess.js b/entity/ObjectRelationType_entity/entityfields/source_relation_title/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abba412e0e44eccb7125811e68858e85db985847
--- /dev/null
+++ b/entity/ObjectRelationType_entity/entityfields/source_relation_title/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+import("system.translate");
+
+result.string(translate.text(vars.get("$field.SOURCE_RELATION_TITLE")));
\ No newline at end of file
diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js
index 853e49e1a53cc5de0f317ea827cf4a56bc5c6adc..698419fadb815a40dc6bea058c6e873183f6881f 100644
--- a/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/contentProcess.js
@@ -1,14 +1,12 @@
-import("system.translate");
-import("system.db");
 import("system.result");
 import("system.vars");
+import("ObjectRelation_lib");
 
-result.object(db.table(
-["select main.AB_OBJECTRELATIONTYPEID, main.RELATION_TITLE \n\
-    from AB_OBJECTRELATIONTYPE main \n\
-    left join AB_OBJECTRELATIONTYPE type2 on (type2.AB_OBJECTRELATIONTYPEID <> main.AB_OBJECTRELATIONTYPEID and type2.RELATION_TYPE = main.RELATION_TYPE) \n\
-    where case when type2.OBJECT_TYPE is null then ( ? = main.OBJECT_TYPE) else ( ? = type2.OBJECT_TYPE) end"
-, [
-  [vars.get("$param.SourceObjectType_param"), db.getColumnTypes("AB_OBJECTRELATIONTYPE", ["OBJECT_TYPE"])[0]],
-  [vars.get("$param.SourceObjectType_param"), db.getColumnTypes("AB_OBJECTRELATIONTYPE", ["OBJECT_TYPE"])[0]],
-]]));
\ No newline at end of file
+if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
+{
+    result.object([ObjectRelationUtils.getRelationType(vars.get("$local.idvalues")[0])]);
+}
+else
+{
+    result.object(ObjectRelationUtils.getPossibleRelationTypes(vars.get("$param.SourceObjectType_param"), true, vars.get("$param.OnlyFirstSide_param") == "1"));
+}
\ No newline at end of file
diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/onDelete.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/onDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..0c99d246e9ad41792904cece09329cdc6157d746
--- /dev/null
+++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/onDelete.js
@@ -0,0 +1,23 @@
+import("system.logging");
+import("system.vars");
+import("system.db");
+import("system.translate");
+import("system.question");
+import("Sql_lib");
+
+var usageCount = db.cell(SqlCondition.begin()
+                                   .andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1", "$field.UID")
+                                   .andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE2", "$field.DEST_OBJECTRELATIONTYPEID")
+                                   .buildSql("select count(*) from AB_OBJECTRELATION", "1=2"))
+
+if (usageCount <= 0)
+{
+    db.deleteData("AB_OBJECTRELATIONTYPE", SqlCondition.begin()
+                                   .andPrepareVars("AB_OBJECTRELATIONTYPE.RELATION_TYPE", "$field.RELATION_TYPE")
+                                   .build("1=2"));
+}
+else
+{
+    // TODO: Show message hier nicht möglich: mit Grant-Prozess ausführung komplett verhindern, wenn es diese gibt.
+    //question.showMessage(translate.withArguments("There are still %0 relations using the type %1.", [usageCount, translate.text(vars.get("$field.SOURCE_RELATION_TITLE")) + " -> " + translate.text(vars.get("$field.DEST_RELATION_TITLE"))]), question.WARNING, translate.text("Cannot remove relation type"))
+}
\ No newline at end of file
diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..b9f87162f4bbcf88c0a2b17e83a581a51d7c9572
--- /dev/null
+++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/onInsert.js
@@ -0,0 +1,43 @@
+import("system.util");
+import("ObjectRelation_lib");
+import("system.vars");
+import("system.db");
+import("system.util");
+
+var newRelationType = util.getNewUUID();
+
+db.insertData("AB_OBJECTRELATIONTYPE", [
+    "AB_OBJECTRELATIONTYPEID",
+    "OBJECT_TYPE",
+    "RELATION_TITLE",
+    "RELATION_TYPE",
+    "SIDE",
+    "HIERARCHY"
+], null, [
+    util.getNewUUID(),
+    vars.get("$field.SOURCE_OBJECT_TYPE"),
+    vars.get("$field.SOURCE_RELATION_TITLE"),
+    newRelationType,
+    1,
+    vars.get("$field.HIERARCHY")
+]);
+
+if ((vars.get("$field.SOURCE_RELATION_TITLE") != vars.get("$field.DEST_RELATION_TITLE") || vars.get("$field.SOURCE_OBJECT_TYPE") != vars.get("$field.DEST_OBJECT_TYPE"))
+    && vars.get("$field.DEST_OBJECT_TYPE") && vars.get("$field.DEST_RELATION_TITLE"))
+{
+    db.insertData("AB_OBJECTRELATIONTYPE", [
+        "AB_OBJECTRELATIONTYPEID",
+        "OBJECT_TYPE",
+        "RELATION_TITLE",
+        "RELATION_TYPE",
+        "SIDE",
+        "HIERARCHY"
+    ], null, [
+        util.getNewUUID(),
+        vars.get("$field.DEST_OBJECT_TYPE"),
+        vars.get("$field.DEST_RELATION_TITLE"),
+        newRelationType,
+        2,
+        vars.get("$field.HIERARCHY")
+    ]);
+}
\ No newline at end of file
diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..bca1f7d3477c66f2d713e61a358243f41349aafb
--- /dev/null
+++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js
@@ -0,0 +1,88 @@
+import("system.util");
+import("Sql_lib");
+import("system.db");
+import("system.vars");
+
+var usageCount = db.cell(SqlCondition.begin()
+                                   .andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1", "$field.UID")
+                                   .andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE2", "$field.DEST_OBJECTRELATIONTYPEID")
+                                   .buildSql("select count(*) from AB_OBJECTRELATION", "1=2"))
+
+if (usageCount <= 0)
+{
+    var type1Fields = {};
+    var type2Fields = {};
+
+    vars.get("local.changed").forEach(function(pChange)
+    {
+        var fieldName = pChange.split(".")[0];
+
+        switch (pChange.split("_")[0])
+        {
+            case "SOURCE":
+                type1Fields[fieldName.replace("SOURCE_", "")] = vars.get("$field." + fieldName);
+                break;
+            case "DEST":
+                type2Fields[fieldName.replace("DEST_", "")] = vars.get("$field." + fieldName);
+                break;
+            default:
+                type1Fields[fieldName] = vars.get("$field." + fieldName);
+                type2Fields[fieldName] = vars.get("$field." + fieldName);
+        }
+    });
+
+    var updates = [];
+    var type1Cond = SqlCondition.begin().andPrepareVars("AB_OBJECTRELATIONTYPE.AB_OBJECTRELATIONTYPEID", "$field.UID").build("1=2");
+    var type2Cond = SqlCondition.begin().andPrepareVars("AB_OBJECTRELATIONTYPE.AB_OBJECTRELATIONTYPEID", "$field.DEST_OBJECTRELATIONTYPEID").build("1=2");
+
+    for (let field in type1Fields) {
+        updates.push(["AB_OBJECTRELATIONTYPE", [field], null, [type1Fields[field]], type1Cond]);
+    }
+
+    // delete, if type2  is empty -> convert it to a "same"-type
+    if ((vars.get("$field.SOURCE_RELATION_TITLE") == vars.get("$field.DEST_RELATION_TITLE") && vars.get("$field.SOURCE_OBJECT_TYPE") == vars.get("$field.DEST_OBJECT_TYPE"))
+        || !vars.get("$field.DEST_OBJECT_TYPE") && !vars.get("$field.DEST_RELATION_TITLE"))
+    {
+        db.deleteData("AB_OBJECTRELATIONTYPE", type2Cond);
+    }
+    else
+    {   // update if already existing
+        if (vars.get("$field.DIRECTION") != "same")
+        {    
+            for (let field in type2Fields) {
+                updates.push(["AB_OBJECTRELATIONTYPE", [field], null, [type2Fields[field]], type2Cond]);
+            }
+        }
+        else
+        {   // insert if it was "same" before
+            if ((vars.get("$field.SOURCE_RELATION_TITLE") != vars.get("$field.DEST_RELATION_TITLE") || vars.get("$field.SOURCE_OBJECT_TYPE") != vars.get("$field.DEST_OBJECT_TYPE"))
+            && vars.get("$field.DEST_OBJECT_TYPE") && vars.get("$field.DEST_RELATION_TITLE"))
+            {
+                db.insertData("AB_OBJECTRELATIONTYPE", [
+                    "AB_OBJECTRELATIONTYPEID",
+                    "OBJECT_TYPE",
+                    "RELATION_TITLE",
+                    "RELATION_TYPE",
+                    "SIDE",
+                    "HIERARCHY"
+                ], null, [
+                    util.getNewUUID(),
+                    vars.get("$field.DEST_OBJECT_TYPE"),
+                    vars.get("$field.DEST_RELATION_TITLE"),
+                    vars.get("$field.RELATION_TYPE"),
+                    2,
+                    vars.get("$field.HIERARCHY")
+                ]);
+
+            }
+        }
+    }
+
+    db.updates(updates);
+}
+else
+{
+    // TODO: Show message hier nicht möglich: mit Grant-Prozess ausführung komplett verhindern, wenn es diese gibt.
+    //question.showMessage(translate.withArguments("There are still %0 relations using the type %1.", [usageCount, translate.text(vars.get("$field.SOURCE_RELATION_TITLE")) + " -> " + translate.text(vars.get("$field.DEST_RELATION_TITLE"))]), question.WARNING, translate.text("Cannot remove relation type"))
+}
+
diff --git a/entity/ObjectRelationType_entity/titleProcess.js b/entity/ObjectRelationType_entity/titleProcess.js
index 6a95b85f7554fe3572386e6aa5b7a2ba5ec4deae..dbc0c500302fcbb7dfe706e35445f9f01952daa5 100644
--- a/entity/ObjectRelationType_entity/titleProcess.js
+++ b/entity/ObjectRelationType_entity/titleProcess.js
@@ -1,4 +1,12 @@
+import("system.translate");
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.RELATION_TITLE"))
\ No newline at end of file
+if (vars.exists("$param.OnlyFirstSide_param") && vars.get("$param.OnlyFirstSide_param") == "1" && vars.get("$field.DIRECTION") != "same")
+{
+    result.string(translate.text(vars.get("$field.SOURCE_RELATION_TITLE")) + " -> " + translate.text(vars.get("$field.DEST_RELATION_TITLE")));
+}
+else
+{
+    result.string(translate.text(vars.get("$field.SOURCE_RELATION_TITLE")));
+}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/ObjectRelation_entity.aod b/entity/ObjectRelation_entity/ObjectRelation_entity.aod
index a6547233752fbaa946bf6e472c061abe9d221003..1a3854b6597d50888dbbfb4f9735a17f94265763 100644
--- a/entity/ObjectRelation_entity/ObjectRelation_entity.aod
+++ b/entity/ObjectRelation_entity/ObjectRelation_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>ObjectRelation_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/ObjectRelation_entity/documentation.adoc</documentation>
@@ -160,6 +160,10 @@
     <entityField>
       <name>OBJECT2_TYPE</name>
     </entityField>
+    <entityField>
+      <name>INFO</name>
+      <title>Description</title>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -213,6 +217,10 @@
           <name>OBJECT1_TYPE.value</name>
           <expression>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_type.value/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>INFO.value</name>
+          <recordfield>AB_OBJECTRELATION.INFO</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/code.js b/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/code.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/possibleItemsProcess.js b/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/possibleItemsProcess.js
index 6a50b40e6edb73828ddc114540c1f58f8b85627c..41ddaad8d5dc1f6a137232492c62683cab4da7e0 100644
--- a/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/possibleItemsProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/selectedobjectrelationtypeidproxy/possibleItemsProcess.js
@@ -7,10 +7,9 @@ result.object(db.table(
 ["select main.AB_OBJECTRELATIONTYPEID, main.RELATION_TITLE \n\
     from AB_OBJECTRELATIONTYPE main \n\
     left join AB_OBJECTRELATIONTYPE type2 on (type2.AB_OBJECTRELATIONTYPEID <> main.AB_OBJECTRELATIONTYPEID and type2.RELATION_TYPE = main.RELATION_TYPE) \n\
-    where case when type2.OBJECT_TYPE is null then ( ? = main.OBJECT_TYPE) else ( ? = type2.OBJECT_TYPE) end"
+    where case when type2.OBJECT_TYPE is null then main.OBJECT_TYPE else type2.OBJECT_TYPE end = ? "
 , [
-  [vars.get("$param.ObjectType_param"), db.getColumnTypes("AB_OBJECTRELATIONTYPE", ["OBJECT_TYPE"])[0]],
-  [vars.get("$param.ObjectType_param"), db.getColumnTypes("AB_OBJECTRELATIONTYPE", ["OBJECT_TYPE"])[0]],
+  [vars.get("$param.ObjectType_param"), db.getColumnTypes("AB_OBJECTRELATIONTYPE", ["OBJECT_TYPE"])[0]]
 ]]).map(function(pItem) 
 {
     return [pItem[0], translate.text(pItem[1])];
diff --git a/entity/ObjectRelation_entity/entityfields/targetobjectrowid/valueProcess.js b/entity/ObjectRelation_entity/entityfields/targetobjectrowid/valueProcess.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/ObjectRelation_entity/entityfields/targetobjecttype/valueProcess.js b/entity/ObjectRelation_entity/entityfields/targetobjecttype/valueProcess.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/ObjectTree_entity/ObjectTree_entity.aod b/entity/ObjectTree_entity/ObjectTree_entity.aod
index 4f1f27a339b8e94c85a62cfedb7620b63b662ab6..78ee2dcbcd62f54fb31db4eb1250d354f369a99f 100644
--- a/entity/ObjectTree_entity/ObjectTree_entity.aod
+++ b/entity/ObjectTree_entity/ObjectTree_entity.aod
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>ObjectTree_entity</name>
-  <title>Object tree</title>
+  <title>Object relation</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <recordContainer>jdito</recordContainer>
   <entityFields>
@@ -11,6 +11,8 @@
     <entityProvider>
       <name>TreeProvider</name>
       <fieldType>DEPENDENCY_IN</fieldType>
+      <targetContextField>TARGET_CONTEXT</targetContextField>
+      <targetIdField>TARGET_ID</targetIdField>
       <dependencies>
         <entityDependency>
           <name>f4c0605f-3ccb-4ff1-b460-7268e8553857</name>
@@ -25,6 +27,26 @@
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
+      <children>
+        <entityParameter>
+          <name>ObjectId_param</name>
+          <expose v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <expose v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>RelationType_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>Uid_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
     </entityProvider>
     <entityParameter>
       <name>ObjectId_param</name>
@@ -34,31 +56,152 @@
     </entityParameter>
     <entityField>
       <name>UID</name>
+      <searchable v="false" />
     </entityField>
     <entityField>
       <name>PARENT_ID</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/parent_id/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>TITLE</name>
+      <title>Object</title>
+      <searchable v="false" />
     </entityField>
     <entityField>
       <name>ICON</name>
+      <contentType>IMAGE</contentType>
+      <searchable v="false" />
       <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/icon/valueProcess.js</valueProcess>
     </entityField>
+    <entityConsumer>
+      <name>ObjectRelationTypes</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>ObjectRelationType_entity</entityName>
+        <fieldName>ObjectRelationTypes</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>SourceObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objectrelationtypes/children/sourceobjecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>ObjectType_param</name>
+      <expose v="true" />
+      <mandatory v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityField>
+      <name>EXPANDED</name>
+      <searchable v="false" />
+    </entityField>
+    <entityField>
+      <name>NODEID</name>
+      <searchable v="false" />
+    </entityField>
+    <entityField>
+      <name>TARGET_ID</name>
+      <title>Relation</title>
+      <consumer>Objects</consumer>
+      <linkedContextProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/target_id/linkedContextProcess.js</linkedContextProcess>
+      <mandatory v="true" />
+      <searchable v="false" />
+      <stateProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/target_id/stateProcess.js</stateProcess>
+      <displayValueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityField>
+      <name>TARGET_CONTEXT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>INFO</name>
+      <title>Description</title>
+      <contentType>LONG_TEXT</contentType>
+      <searchable v="false" />
+    </entityField>
     <entityField>
-      <name>DESCRIPTION</name>
-      <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/description/valueProcess.js</valueProcess>
+      <name>OBJECTRELATIONTYPEID</name>
+      <title>Relationtype</title>
+      <consumer>ObjectRelationTypes</consumer>
+      <mandatory v="true" />
+      <stateProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objectrelationtypeid/stateProcess.js</stateProcess>
+      <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objectrelationtypeid/displayValueProcess.js</displayValueProcess>
+      <onValueChange>%aditoprj%/entity/ObjectTree_entity/entityfields/objectrelationtypeid/onValueChange.js</onValueChange>
     </entityField>
+    <entityConsumer>
+      <name>Objects</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Object_entity</entityName>
+        <fieldName>FilteredObjects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <title></title>
+          <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludedObjectIds_param</name>
+          <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objects/children/excludedobjectids_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityActionGroup>
+      <name>alter</name>
+      <children>
+        <entityActionField>
+          <name>insert</name>
+          <fieldType>ACTION</fieldType>
+          <onActionProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js</onActionProcess>
+          <isSelectionAction v="true" />
+          <iconId>VAADIN:FILE_TREE_SMALL</iconId>
+        </entityActionField>
+        <entityActionField>
+          <name>edit</name>
+          <fieldType>ACTION</fieldType>
+          <onActionProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/alter/children/edit/onActionProcess.js</onActionProcess>
+          <isSelectionAction v="true" />
+          <iconId>NEON:PENCIL</iconId>
+        </entityActionField>
+      </children>
+    </entityActionGroup>
+    <entityParameter>
+      <name>RelationType_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>Uid_param</name>
+      <expose v="true" />
+      <description>Needed to load ONE Objectrelation together with ObjectId_param and ObjectType_param to determine the side</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <jDitoRecordContainer>
       <name>jdito</name>
       <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
       <contentProcess>%aditoprj%/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <onInsert>%aditoprj%/entity/ObjectTree_entity/recordcontainers/jdito/onInsert.js</onInsert>
+      <onUpdate>%aditoprj%/entity/ObjectTree_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
+      <onDelete>%aditoprj%/entity/ObjectTree_entity/recordcontainers/jdito/onDelete.js</onDelete>
       <recordFields>
         <element>UID.value</element>
-        <element>PARENT_ID.value</element>
         <element>TITLE.value</element>
+        <element>PARENT_ID.value</element>
+        <element>EXPANDED.value</element>
+        <element>TARGET_ID.value</element>
+        <element>TARGET_CONTEXT.value</element>
+        <element>INFO.value</element>
+        <element>OBJECTRELATIONTYPEID.value</element>
       </recordFields>
     </jDitoRecordContainer>
   </recordContainers>
diff --git a/entity/ObjectTree_entity/entityfields/alter/children/edit/onActionProcess.js b/entity/ObjectTree_entity/entityfields/alter/children/edit/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c18d22015d610e510b71019881de089a06d1632c
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/alter/children/edit/onActionProcess.js
@@ -0,0 +1,18 @@
+import("ObjectRelation_lib");
+import("system.neon");
+import("system.vars");
+
+if (vars.exists("$sys.selection") && vars.get("$sys.selection"))
+{    
+    var selectedRows = JSON.parse(vars.get("$sys.selection"));
+    var uid = JSON.parse(selectedRows[0]);
+    var isObjectRelationNode = typeof uid[2] == "string";
+        
+    if (isObjectRelationNode)
+    {
+        var params = {
+            "Uid_param" : selectedRows[0]
+        }
+        neon.openContext("ObjectTree", "ObjectTreeEdit_view", null, neon.OPERATINGSTATE_EDIT, params);
+    }
+}
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js b/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..16288da8047743cf9d006aa8eab8a7264fc3ec65
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/alter/children/insert/onActionProcess.js
@@ -0,0 +1,33 @@
+import("ObjectRelation_lib");
+import("system.neon");
+import("system.vars");
+
+if (vars.exists("$local.rows") && vars.get("$local.rows"))
+{
+    var selectedRows = JSON.parse(vars.get("$local.rows"));
+    var uid = JSON.parse(selectedRows[0]["#LOOKUPID"]);
+    var isObjectRelationNode = typeof uid[2] == "string";
+        
+    var parentId;
+    var parentObjectType;
+    var relationType;
+        
+    if (isObjectRelationNode)
+    {
+        parentId = uid[0];
+        parentObjectType = uid[3];
+    }
+    else
+    {
+        parentId = vars.getString("$param.ObjectId_param");
+        parentObjectType = vars.getString("$param.ObjectType_param");
+    }
+    
+    var params = {
+        "ObjectId_param" : parentId,
+        "ObjectType_param" : parentObjectType,
+        "RelationType_param" : vars.get("$field.OBJECTRELATIONTYPEID")
+    };
+
+    neon.openContext("ObjectTree", "ObjectTreeEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+}
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/objectrelationtypeid/displayValueProcess.js b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e4ddc9dc5979726f1d5d93fc8e5973fcfaaedbc2
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("system.neon");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("ObjectRelation_lib");
+
+if (vars.get("$field.OBJECTRELATIONTYPEID"))
+{
+    result.string(translate.text(ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"))[1]));
+}
diff --git a/entity/ObjectTree_entity/entityfields/objectrelationtypeid/onValueChange.js b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/onValueChange.js
new file mode 100644
index 0000000000000000000000000000000000000000..9264282cd7b4f9b9dca1cdd33aff00bb63064dd5
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/onValueChange.js
@@ -0,0 +1,38 @@
+import("system.vars");
+import("system.db");
+import("system.result");
+import("system.neon");
+import("Sql_lib");
+import("Entity_lib");
+
+var selectedObjectRelationTypeId = vars.exists("$field.selectedObjectRelationTypeIdProxy") ? vars.get("$field.selectedObjectRelationTypeIdProxy") : "";
+selectedObjectRelationTypeId = ProcessHandlingUtils.getOnValidationValue(selectedObjectRelationTypeId);
+
+var relationTypeData = db.array(db.ROW, SqlCondition.begin()
+                        .andPrepare("AB_OBJECTRELATIONTYPE.AB_OBJECTRELATIONTYPEID", selectedObjectRelationTypeId)
+                        .buildSql("select AB_OBJECTRELATIONTYPEID, OBJECT_TYPE, RELATION_TITLE, RELATION_TYPE, SIDE from AB_OBJECTRELATIONTYPE", "1=2"));
+
+if (relationTypeData[0])
+{
+    var otherRelationTypeData = db.array(db.ROW, SqlCondition.begin()
+                                    .andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", relationTypeData[3])
+                                    .andPrepare("AB_OBJECTRELATIONTYPE.SIDE", (relationTypeData[4] == "1" ? "2" : "1"))
+                                    .buildSql("select AB_OBJECTRELATIONTYPEID, OBJECT_TYPE, RELATION_TITLE, RELATION_TYPE, SIDE from AB_OBJECTRELATIONTYPE", "1=2"))
+    if (!otherRelationTypeData[0])
+    {
+        otherRelationTypeData = relationTypeData;
+    }
+    
+    if (relationTypeData[4] == "2")
+    {
+        //neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE2", relationTypeData[0]);
+        //neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE1", otherRelationTypeData[0]);
+    }
+    else if (relationTypeData[4] == "1")
+    {
+        //neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE1", relationTypeData[0]);
+        //neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE2", otherRelationTypeData[0]);
+    }
+    
+   // neon.setFieldValue("$field.MySide", otherRelationTypeData[4]);
+}
diff --git a/entity/ObjectTree_entity/entityfields/objectrelationtypeid/stateProcess.js b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7d9ab38c5c715f801518573a4c0d3814b0486a6e
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/stateProcess.js
@@ -0,0 +1,12 @@
+import("system.result");
+import("system.vars");
+import("system.neon");
+
+if (vars.exists("$param.RelationType_param") && vars.get("$param.RelationType_param") || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(neon.COMPONENTSTATE_DISABLED);
+}
+else 
+{
+    result.string(neon.COMPONENTSTATE_AUTO);
+}
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6dad72dac58144e1246329a26405c1de0f7e8845
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.RelationType_param") && vars.get("$param.RelationType_param"))
+{
+    result.string(vars.get("$param.RelationType_param"))
+}
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/objectrelationtypes/children/sourceobjecttype_param/valueProcess.js b/entity/ObjectTree_entity/entityfields/objectrelationtypes/children/sourceobjecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..95c8514f3bbc2804547c47b50ec222c09aec3f59
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/objectrelationtypes/children/sourceobjecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.ObjectType_param"));
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/objects/children/excludedobjectids_param/valueProcess.js b/entity/ObjectTree_entity/entityfields/objects/children/excludedobjectids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..59596bc5946502edbb523a4d0a6f9d5f43cbe67b
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/objects/children/excludedobjectids_param/valueProcess.js
@@ -0,0 +1,21 @@
+import("Sql_lib");
+import("system.vars");
+import("system.result");
+import("system.db");
+import("ObjectRelation_lib");
+
+var relationTypeData = ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"));
+
+var sql1 = db.translateStatement(SqlCondition.begin()
+                       .andPrepareVars("AB_OBJECTRELATION.OBJECT1_ROWID", "$field.PARENT_ID")
+                       .andPrepare("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1", relationTypeData[7])
+                       .andPrepare("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE2", relationTypeData[8])
+                       .buildSql("select OBJECT2_ROWID from AB_OBJECTRELATION", "1=2"));
+
+var sql2 = db.translateStatement(SqlCondition.begin()
+                       .andPrepareVars("AB_OBJECTRELATION.OBJECT2_ROWID", "$field.PARENT_ID")
+                       .andPrepare("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1", relationTypeData[7])
+                       .andPrepare("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE2", relationTypeData[8])
+                       .buildSql("select OBJECT1_ROWID from AB_OBJECTRELATION", "1=2"));
+
+result.object([vars.get("$field.PARENT_ID")].concat(db.array(db.COLUMN, sql1 + " union " + sql2)));
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/objects/children/objecttype_param/valueProcess.js b/entity/ObjectTree_entity/entityfields/objects/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b73f117c996323ede362e09f72d077c486603806
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/objects/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.TARGET_CONTEXT"));
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/parent_id/valueProcess.js b/entity/ObjectTree_entity/entityfields/parent_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..7eed476d46447384559b14a62f4cfb3fd04f5475
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/parent_id/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("ObjectRelation_lib");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param"))
+{
+    result.string(vars.get("$param.ObjectId_param"));
+}
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js b/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..700dc7461b5f61b17ead3d2735ef8fd2eb7ac6f6
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("ObjectRelation_lib");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"))[6]);
+}
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js b/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d074689525fa0fc64cc41002e883c2c8cd5579f3
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("system.db");
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("Context_lib");
+
+if (vars.get("$field.TARGET_ID") && vars.get("$field.TARGET_CONTEXT"))
+{
+    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.TARGET_CONTEXT"), vars.get("$field.TARGET_ID"))));
+}
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/entityfields/target_id/linkedContextProcess.js b/entity/ObjectTree_entity/entityfields/target_id/linkedContextProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1309ba4e92dedd6284a0482f87b00c1c46a0f7c8
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/target_id/linkedContextProcess.js
@@ -0,0 +1,8 @@
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+if (vars.get("$field.TARGET_CONTEXT"))
+{
+    result.string(ContextUtils.getContextName(vars.get("$field.TARGET_CONTEXT")));
+}
diff --git a/entity/ObjectTree_entity/entityfields/target_id/stateProcess.js b/entity/ObjectTree_entity/entityfields/target_id/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..432b555ce843a3f52178d01c2cdef62b633ea8cd
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/target_id/stateProcess.js
@@ -0,0 +1,12 @@
+import("system.result");
+import("system.vars");
+import("system.neon");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+{
+    result.string(neon.COMPONENTSTATE_DISABLED);
+}
+else 
+{
+    result.string(neon.COMPONENTSTATE_AUTO);
+}
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
index 19b4227d9653b2fea12ec49da0a70b90b50aa3a5..fe657ea0e68d9b03bfeceddc9ac26fc81051f69f 100644
--- a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
@@ -1,107 +1,299 @@
+import("system.logging");
 import("system.db");
-import("system.vars");
-import("system.result");
 import("system.translate");
+import("system.result");
+import("system.vars");
+import("ObjectRelation_lib");
 import("Context_lib");
-import("Sql_lib")
+import("Sql_lib");
 
-var thisObjectId = vars.get("$param.ObjectId_param");
+var tree = []
 
-var objectRelations = fetchObjectRelations(thisObjectId);
-var mappedObjectRelations = mapObjectRelations(objectRelations);
+// uidParam: if only one row should be loaded
+var uidParam;
+if (vars.exists("$param.Uid_param") && vars.get("$param.Uid_param"))
+{
+    uidParam = vars.get("$param.Uid_param");
+} 
+else if(vars.exists("$local.idvalues") && vars.get("$local.idvalues") && vars.get("$local.idvalues").length > 0)
+{
+    uidParam = vars.get("$local.idvalues")[0];
+}
 
-var treeData = buildTreeData(mappedObjectRelations);
+if (uidParam)
+{
+    let uid = JSON.parse(uidParam);
+    let isObjectRelationNode = uid != null && typeof uid[2] == "string";
 
+    if (isObjectRelationNode)
+    {
+        let relationTypeData = ObjectRelationUtils.getRelationType(uid[2]);
+        _insertEntry(tree, _getEntryData(uid[0], relationTypeData[3], relationTypeData[7], relationTypeData[8], undefined, false, uid[6]), "", 0, uid[3], relationTypeData[10]);
 
-result.object(treeData);
+    }
+}
+else
+{
+    var filter = JSON.parse(vars.get("$local.filter"))
+    var selectedRelationType = null;
 
-/**
- * Will fetch all objects relations which are in relation with the given
- * object ID. It will compare the given object ID with `OBJECT1_ROWID` and
- * `OBJECT2_ROWID`.
- * 
- * It will always return the following array signature:
- * (0) OBJECT1_ROWID | (1) OBJECT2_ROWID | (2) AB_OBJECTRELATIONTYPE1 |(3) type1.OBJECT_TYPE | (4) type1.RELATION_TITLE
- * (5) AB_OBJECTRELATIONTYPE2  | (6) type2.OBJECT_TYPE | (7) type2.RELATION_TITLE | (8) Name of object 1 | (9) Name of object 2
- *
- * @return Will return the given schema above. You can assume, that there will always
- * be an array. 
- */
-function fetchObjectRelations (pObjectID) {
-    var databaseResult = db.table(
-          "SELECT OBJECT1_ROWID, OBJECT2_ROWID, AB_OBJECTRELATIONTYPE1, type1.OBJECT_TYPE, type1.RELATION_TITLE, AB_OBJECTRELATIONTYPE2, type2.OBJECT_TYPE, type2.RELATION_TITLE, "
-        + ContextUtils.getNameSubselectSql("type1.OBJECT_TYPE", "OBJECT1_ROWID") + ", " + ContextUtils.getNameSubselectSql("type2.OBJECT_TYPE", "OBJECT2_ROWID") + " "
-        + "FROM ADITO.AB_OBJECTRELATION as relation "
-        + "left join AB_OBJECTRELATIONTYPE as type1 on AB_OBJECTRELATIONTYPE1 = type1.AB_OBJECTRELATIONTYPEID "
-        + "left join AB_OBJECTRELATIONTYPE as type2 on AB_OBJECTRELATIONTYPE2 = type2.AB_OBJECTRELATIONTYPEID "
-        + "where OBJECT1_ROWID = '" + thisObjectId + "' or OBJECT2_ROWID = '" + thisObjectId + "'");
+    if (filter)
+    {
+        if (filter.childs.length > 0)
+        {
+            selectedRelationType = filter.childs[0].value;
+        }
+    }
+    var originalObjectId = vars.get("$param.ObjectId_param");
+
+    _loadObjectRelationTree(originalObjectId, vars.get("$param.ObjectType_param"), selectedRelationType);
+}
+
+result.object(tree);
+
+function _loadObjectRelationTree(pObjectId, pObjectType, pObjectRelationTypeId, pNodeId, pLayer, pRelationTypeData)
+{
+    // prevent stack overflows
+    if (pLayer > 30)
+        return;
     
-    return databaseResult;
+    if (pLayer == undefined)
+        pLayer = 0;
+    
+    if (pNodeId == undefined)
+        pNodeId = null;
+        
+    var currentObjectId = pObjectId
+        
+    if (currentObjectId && pObjectType)
+    {
+        if (pLayer == 0)
+        {
+            if (pObjectRelationTypeId)
+            {
+                let relationTypeData = ObjectRelationUtils.getRelationType(pObjectRelationTypeId);
+                
+                // if hirachy: get most top id else use the current currentObjectId
+                if (relationTypeData[4] == "1")
+                {
+                    // use always reverse-type
+                    relationTypeData = ObjectRelationUtils.getRelationType(relationTypeData[8]);
+                    currentObjectId = _getRootID(currentObjectId, relationTypeData);
+                }
+                
+                let uids = _insertEntry(tree, [[currentObjectId, "", "", "", "", relationTypeData[7]]], pNodeId, pLayer, pObjectType, selectedRelationType)
+                for (let i = 0; i < uids.length; i++) 
+                {                    
+                    _loadObjectRelationTree(uids[i][0], uids[i][3], relationTypeData[0], uids[i], pLayer+1, relationTypeData);
+                }
+            }
+            else // no ObjectType chosen
+            {
+                // load all ObjectRelationTypes
+                var relationTypes = _getRelationTypes(pObjectType);
+                
+                for (let i=0; i<relationTypes.length; i++)
+                {   
+                    var data = _getEntryData(currentObjectId, relationTypes[i][3], relationTypes[i][7], relationTypes[i][8]);
+                    
+                    // if any subentry: show objectType
+                    if (data.length > 0)
+                    {
+                        // TODO: Icons, BINDATA
+                        // var icon = getIcon...
+                        let uid = [currentObjectId, i, relationTypes[i]];
+                        tree.push([JSON.stringify(uid), translate.text(relationTypes[i][1]), JSON.stringify(pNodeId), true, null, null, "", relationTypes[i][0]]);
+                        
+                        _loadObjectRelationTree(pObjectId, pObjectType, pObjectRelationTypeId, uid, pLayer+1, relationTypes[i]);
+                    }
+                }
+            }
+        }
+        else if (pLayer >= 1)
+        {
+            // if no relationType given, load from nodeId
+            if (!pRelationTypeData)
+                pRelationTypeData = pNodeId[2];
+            var thisRelationTypeId = pRelationTypeData[0];
+            var otherRelationTypeId = pRelationTypeData[10];            
+            var hierarchy = pRelationTypeData[4];
+            var destObjectType = pRelationTypeData[6];
+            var relationType1 = pRelationTypeData[7];
+            var relationType2 = pRelationTypeData[8];
+            var direction = pRelationTypeData[3];
+            
+            var relationTypeIdForNew = otherRelationTypeId;
+            
+            if (hierarchy == "1")
+            {
+                var myData = _getEntryData(pNodeId[0], direction, relationType1, relationType2)
+                
+                
+                
+                // if hierarchy and selected RelationType -> use the selected one
+                if (selectedRelationType)
+                    relationTypeIdForNew = selectedRelationType
+                else
+                    relationTypeIdForNew = thisRelationTypeId;
+                
+                
+                let uids = _insertEntry(tree, myData, pNodeId, pLayer, destObjectType, relationTypeIdForNew)
+                for (let i = 0; i < uids.length; i++) 
+                {                    
+                    _loadObjectRelationTree(uids[i][0], uids[i][3], pObjectRelationTypeId, uids[i], pLayer+1, pRelationTypeData);
+                }
+            }
+            else
+            {
+                // pNodeId[4] is the previous NodeId and pNodeId[4][0] the previous ObjectId
+                var prevObjectId;
+                if (pNodeId[4] != undefined)
+                {
+                    prevObjectId = pNodeId[4][0];
+                }
+                
+                var entryData = _getEntryData(pNodeId[0], direction, relationType1, relationType2, prevObjectId, true);
+
+                if (direction == "same")
+                    relationTypeIdForNew = thisRelationTypeId
+
+                // add both sides. Only one will succeed, because the prevObjectId will be filtered
+                _insertEntry(tree, entryData, pNodeId, pLayer, destObjectType, thisRelationTypeId, 0);
+                if (direction == "same")
+                {
+                    var otherEntryData = _getEntryData(pNodeId[0], "normal", relationType1, relationType2, prevObjectId, true);
+                    _insertEntry(tree, otherEntryData, pNodeId, pLayer, destObjectType, thisRelationTypeId, 1);
+                }
+            }
+        }
+    }
 }
 
 /**
- * Will map the given object relations into a valid schema for the tree.
- * The requried schema for the param can be found in function
- * {@link fetchObjectRelations}.
- * This function is required for additional filtering an mapping of the data.
- *
- * It will always return the following array signature:
- * (0) Object type ID | (1) Object type name | (2) Relation 
+ * load data for a relation.
+ * OBJECT_ROWID, AB_OBJECTRELATIONID, OBJECT_TYPE, RELATION_TITLE, AB_OBJECTRELATIONTYPEID
  * 
- *
- * @param pObjectRelations Array with object relations in specific schema.
- * @return Will return the given schema above. You can assume, that there will
- * always be an array.
-* 
-* @return The mapped Array with object relations in the following format:
-* ObjectTypeID | ObjectType | RelationTitle | ObjectID 
+ * @param {String} pObjectId
+ * @param {String} pDirection
+ * @param {String} pRelationType1
+ * @param {String} pRelationType2
+ * @param {String} [pPrevId=undefined] Id of the previous node to exclude it
+ * @param {Boolean} [pNoRecursion=false] if false: select for direction "same" the other direction, if result is empty.
+ * @param {Boolean} [pObjectRelationId=false] provide if only one special node is needed
+ * 
+ * @return {[][]}
  */
-function mapObjectRelations (pObjectRelations) {
-    var resultSet = [];
-    
-    for (var i = 0; i < pObjectRelations.length; i++) {
-        var currentRecord = pObjectRelations[i];
+function _getEntryData(pObjectId, pDirection, pRelationType1, pRelationType2, pPrevId, pNoRecursion, pObjectRelationId)
+{
+    if (pRelationType1 == undefined || pRelationType2 == undefined) 
+        return [];
+ 
+    var myNum;
+    var otherNum;
         
-        var objectRowId1 = currentRecord[0];
-        var objectRowId2 = currentRecord[1];
+    if (pDirection == "normal") 
+    {
+        otherNum = 1;
+        myNum = 2;
+    }
+    else
+    {
+        otherNum = 2;
+        myNum = 1;
+    }
         
-        if (objectRowId1 === thisObjectId) {
-            resultSet.push([currentRecord[5], currentRecord[6], currentRecord[7], currentRecord[1], currentRecord[9]]);
-        } else if (objectRowId2 === thisObjectId) {
-            resultSet.push([currentRecord[2], currentRecord[3], currentRecord[4], currentRecord[0], currentRecord[8]]);
-        }
+    var cond = SqlCondition.begin()
+                           .andPrepare("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1", pRelationType1)
+                           .andPrepare("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE2", pRelationType2)
+                           .andPrepare("AB_OBJECTRELATION.OBJECT" + myNum + "_ROWID", pObjectId)
+                           .andPrepareIfSet("AB_OBJECTRELATION.AB_OBJECTRELATIONID", pObjectRelationId);
+    
+    // exclude previous node
+    if (!pPrevId)
+        cond.and("AB_OBJECTRELATION.OBJECT" + otherNum + "_ROWID is not null");
+    else
+    {
+        cond.andPrepare("AB_OBJECTRELATION.OBJECT" + otherNum + "_ROWID", pPrevId, "# <> ?");
     }
+        
+    // TODO: BINDATA?
+    // var image = getImageObject("Beziehung");
+    var data = db.table(cond.buildSql(
+                "select OBJECT" + (pObjectRelationId ? myNum : otherNum) + "_ROWID, AB_OBJECTRELATIONID, OBJECT_TYPE, RELATION_TITLE, INFO, AB_OBJECTRELATIONTYPEID \n\
+                 from AB_OBJECTRELATION \n\
+                 join AB_OBJECTRELATIONTYPE on AB_OBJECTRELATIONTYPEID = AB_OBJECTRELATIONTYPE" + myNum + " and ","1=2", "", false));
     
-    return resultSet
+    // try again with other side for "same"
+    if (data.length == 0 && pDirection == "same" && !pNoRecursion || pObjectRelationId && data.length > 0 && !data[0][0])
+    {
+         return _getEntryData(pObjectId, "normal", pRelationType1, pRelationType2, pPrevId, true, pObjectRelationId)
+    }
+    // TODO: BINDATA?
+    //for ( var i = 0; i < data.length; i++)  data[i][2] = image[data[i][2]] == undefined ? "" : image[data[i][2]];
+    return data;
 }
 
-function buildTreeData (pObjectRelations) {
-   // Group each relation type
-   var relationTypeMapping = {}
-   
-   var i = 0;
-   for (i = 0; i < pObjectRelations.length; i++) {
-       var currentRelation = pObjectRelations[i];
-       
-       if (relationTypeMapping[currentRelation[0]] === undefined)
-           relationTypeMapping[currentRelation[0]] = currentRelation[2];
-   }
-   
-   var treeRows = []
-   for (i = 0; i < pObjectRelations.length; i++) {
-       var currentRelation = pObjectRelations[i];
-              
-       treeRows.push([currentRelation[3], currentRelation[0], currentRelation[4]]);
-   }
-   
-   // Root elements
-   for (i = 0 ; i < Object.keys(relationTypeMapping).length; i++) {
-       var currentKey = Object.keys(relationTypeMapping)[i];
-       
-       var translatedTitle = translate.text(relationTypeMapping[currentKey])
-       
-       treeRows.push([currentKey, null, translatedTitle]);
-   }
-   
-   return treeRows;
+function _getRelationTypes(pObjectType)
+{
+    // TODO: load from entity when possible
+    return ObjectRelationUtils.getPossibleRelationTypes(pObjectType, true);
+}
+
+/**
+ * insert a new Entry
+ * 
+ * @param {Array} pTree
+ * @param {Array[][]} pEntryData
+ * @param {Array[][]} pNodeId id of the parent
+ * @param {Integer} pLayer layernumber
+ * @param {String} pObjectType
+ * @param {String} pNewRelationTypeId the RelationType, a new relation should have, if this node is selected.
+ * @param {Integer} [pNum=undefined] optional number added to the key. Needed, if the key would not be unique.
+ * 
+ * @return {Array[][]} the uids of the inserted data. Consists of [ObjectId, pEntryData-Index, AB_OBJECTRELATIONTYPEID, pObjectType (from param), pNodeId, objecttype (from entryId), objectrelationid]
+ */
+function _insertEntry(pTree, pEntryData, pNodeId, pLayer, pObjectType, pNewRelationTypeId, pNum)
+{
+    var expanded = true;
+    if (pLayer > 10) expanded = false;
+    // TODO: display address (tooltip wird denke ich nicht benötigt, da preview vorhanden)
+    var uids = [];
+    for(let i = 0; i < pEntryData.length; i++)
+    {
+        var display = db.cell(ContextUtils.getNameSql(pObjectType, pEntryData[i][0]));
+        // TODO: Icon                       
+        var uid = [pEntryData[i][0], i, pEntryData[i][5], pObjectType, pNodeId, pEntryData[i][2], pEntryData[i][1]]
+        if (pNum)
+            uid.push(pNum);
+        uids.push(uid);
+        pTree.push([JSON.stringify(uid), display, JSON.stringify(pNodeId), expanded, pEntryData[i][0], pObjectType, pEntryData[i][4], pNewRelationTypeId]);
+    }
+    return uids;
+}
+
+/*
+* get most top root of a node
+*
+* @param {String} pObjectId
+* @param {String[]} pObjectRelationTypeData
+*
+* @return {String} RootObjectId        
+*/
+function _getRootID(pObjectId, pObjectRelationTypeData) 
+{
+    var sourceid = pObjectId;
+    var max = 100;
+    do
+    {
+        var rootid = sourceid;
+        max--;
+        sourceid = db.cell(SqlCondition.begin()
+                                       .andPrepare("AB_OBJECTRELATION.OBJECT2_ROWID", sourceid)
+                                       .andPrepare("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1", pObjectRelationTypeData[7])
+                                       .andPrepare("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE2", pObjectRelationTypeData[8])
+                                       .buildSql("select OBJECT1_ROWID from AB_OBJECTRELATION", "1=2"))
+    }
+    while( sourceid != "" && max > 0 );
+    return rootid; 
+    return currentObjectId;
 }
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/onDelete.js b/entity/ObjectTree_entity/recordcontainers/jdito/onDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..27ac27f8fe01dcffa3e2123c1e9f90978aa358a6
--- /dev/null
+++ b/entity/ObjectTree_entity/recordcontainers/jdito/onDelete.js
@@ -0,0 +1,19 @@
+import("system.vars");
+import("system.neon");
+import("system.db");
+import("Sql_lib");
+
+
+var uid = JSON.parse(vars.get("$field.UID"));
+var isObjectRelationNode = typeof uid[2] == "string";
+
+if (isObjectRelationNode)
+{
+    var objectRelationId = uid[6];
+    db.deleteData("AB_OBJECTRELATION", SqlCondition.begin()
+                                       .andPrepareIfSet("AB_OBJECTRELATION.AB_OBJECTRELATIONID", objectRelationId)
+                                       .build("1=2"));
+
+    // Refresh otherwise the children of the deleted node would be moved to the root.
+    neon.refresh();
+}
diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/onInsert.js b/entity/ObjectTree_entity/recordcontainers/jdito/onInsert.js
new file mode 100644
index 0000000000000000000000000000000000000000..9be46d3b15a8cba7ef2c661771a116404d4b0f16
--- /dev/null
+++ b/entity/ObjectTree_entity/recordcontainers/jdito/onInsert.js
@@ -0,0 +1,47 @@
+import("system.util");
+import("ObjectRelation_lib");
+import("system.vars");
+import("system.db");
+
+selectedObjectRelationTypeId = vars.get("$field.OBJECTRELATIONTYPEID");
+if (selectedObjectRelationTypeId)
+{
+    relationTypeData = ObjectRelationUtils.getRelationType(selectedObjectRelationTypeId)
+    if (relationTypeData[0]) 
+    {
+        var relationType1 = relationTypeData[7];
+        var relationType2 = relationTypeData[8];
+        var side = relationTypeData[9];
+        var objectId1;
+        var objectId2;
+        var info = vars.get("$field.INFO");
+        
+        
+        if (side == "1")
+        {
+            objectId1 = vars.get("$field.TARGET_ID");
+            objectId2 = vars.get("$field.PARENT_ID");
+        } 
+        else 
+        {
+            objectId1 = vars.get("$field.PARENT_ID");
+            objectId2 = vars.get("$field.TARGET_ID");
+        }
+        
+        db.insertData("AB_OBJECTRELATION", [
+            "AB_OBJECTRELATIONID",
+            "OBJECT1_ROWID",
+            "OBJECT2_ROWID",
+            "AB_OBJECTRELATIONTYPE1",
+            "AB_OBJECTRELATIONTYPE2",
+            "INFO"
+        ], null, [
+            util.getNewUUID(),
+            objectId1,
+            objectId2,
+            relationType1,
+            relationType2,
+            info
+        ]);
+    }
+}
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/onUpdate.js b/entity/ObjectTree_entity/recordcontainers/jdito/onUpdate.js
new file mode 100644
index 0000000000000000000000000000000000000000..23a87592d8929a79aa3e55c6ffd11f4616999f6d
--- /dev/null
+++ b/entity/ObjectTree_entity/recordcontainers/jdito/onUpdate.js
@@ -0,0 +1,18 @@
+import("system.vars");
+import("system.neon");
+import("system.db");
+import("Sql_lib");
+
+
+var uid = JSON.parse(vars.get("$field.UID"));
+var isObjectRelationNode = typeof uid[2] == "string";
+
+if (isObjectRelationNode)
+{
+    var objectRelationId = uid[6];
+   
+    db.updateData("AB_OBJECTRELATION", ["INFO"], null, [vars.get("$field.INFO")], 
+                    SqlCondition.begin()
+                                .andPrepareIfSet("AB_OBJECTRELATION.AB_OBJECTRELATIONID", objectRelationId)
+                                .build("1=2"));
+}
diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod
index 58bf718a577f0170a5596ede7eecc202478668a7..a35318329e9dad635efdbadc4064e3cf77ec41e4 100644
--- a/entity/Object_entity/Object_entity.aod
+++ b/entity/Object_entity/Object_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Object_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Object_entity/documentation.adoc</documentation>
@@ -9,12 +9,6 @@
     <entityProvider>
       <name>#PROVIDER</name>
       <recordContainer>jdito</recordContainer>
-      <children>
-        <entityParameter>
-          <name>ObjectRowId_param</name>
-          <expose v="false" />
-        </entityParameter>
-      </children>
     </entityProvider>
     <entityField>
       <name>UID</name>
@@ -29,35 +23,10 @@
       <mandatory v="true" />
       <description>PARAMETER</description>
     </entityParameter>
-    <entityParameter>
-      <name>ObjectRowId_param</name>
-      <expose v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityProvider>
-      <name>OneObject</name>
-      <fieldType>DEPENDENCY_IN</fieldType>
-      <documentation>%aditoprj%/entity/Object_entity/entityfields/oneobject/documentation.adoc</documentation>
-      <recordContainer>jdito</recordContainer>
-      <children>
-        <entityParameter>
-          <name>ObjectRowId_param</name>
-          <expose v="true" />
-          <triggerRecalculation v="true" />
-          <mandatory v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>ObjectType_param</name>
-          <expose v="true" />
-          <triggerRecalculation v="true" />
-          <mandatory v="true" />
-        </entityParameter>
-      </children>
-    </entityProvider>
     <entityProvider>
       <name>AllObjects</name>
       <fieldType>DEPENDENCY_IN</fieldType>
+      <targetConsumerProcess>%aditoprj%/entity/Object_entity/entityfields/allobjects/targetConsumerProcess.js</targetConsumerProcess>
       <documentation>%aditoprj%/entity/Object_entity/entityfields/allobjects/documentation.adoc</documentation>
       <recordContainer>jdito</recordContainer>
       <dependencies>
@@ -88,9 +57,100 @@
       </dependencies>
       <children>
         <entityParameter>
-          <name>ObjectRowId_param</name>
+          <name>ObjectType_param</name>
+          <expose v="true" />
+          <triggerRecalculation v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludedObjectIds_param</name>
           <expose v="false" />
-          <mandatory v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityConsumer>
+      <name>Organisations</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Organisation_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Persons</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Person_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Offers</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Offer_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Orders</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Order_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Products</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Product_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Contracts</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Contract_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityConsumer>
+      <name>Salesprojects</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Salesproject_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+    </entityConsumer>
+    <entityParameter>
+      <name>ExcludedObjectIds_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>FilteredObjects</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>e644a709-cc8f-425e-bef2-9c51eea9bbe9</name>
+          <entityName>ObjectTree_entity</entityName>
+          <fieldName>Objects</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>ExcludedObjectIds_param</name>
+          <expose v="true" />
         </entityParameter>
         <entityParameter>
           <name>ObjectType_param</name>
diff --git a/entity/Object_entity/entityfields/allobjects/targetConsumerProcess.js b/entity/Object_entity/entityfields/allobjects/targetConsumerProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1a9d1e2e9d5ce31c14e07d1f1eee3f01b05eba78
--- /dev/null
+++ b/entity/Object_entity/entityfields/allobjects/targetConsumerProcess.js
@@ -0,0 +1,31 @@
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"))
+{
+    switch(vars.get("$param.ObjectType_param"))
+    {
+        case ContextUtils.getContextName("Organisation"):
+            result.string("Organisations");
+            break;
+        case ContextUtils.getContextName("Person"):
+            result.string("Persons");
+            break;
+        case ContextUtils.getContextName("Offer"):
+            result.string("Offers");
+            break;
+        case ContextUtils.getContextName("Order"):
+            result.string("Orders");
+            break;
+        case ContextUtils.getContextName("Product"):
+            result.string("Products");
+            break;
+        case ContextUtils.getContextName("Contract"):
+            result.string("Contracts");
+            break;      
+        case ContextUtils.getContextName("Salesproject"):
+            result.string("Salesprojects");
+            break;             
+    }
+}
\ No newline at end of file
diff --git a/entity/Object_entity/entityfields/oneobject/documentation.adoc b/entity/Object_entity/entityfields/oneobject/documentation.adoc
deleted file mode 100644
index 628c21478017d70552888637466be8b427010c37..0000000000000000000000000000000000000000
--- a/entity/Object_entity/entityfields/oneobject/documentation.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-== OneObjects provider ==
-
-This provider returns one specific object.
\ No newline at end of file
diff --git a/entity/Object_entity/recordcontainers/jdito/contentProcess.js b/entity/Object_entity/recordcontainers/jdito/contentProcess.js
index fa1404cf0aa5adb9dd28c57581124986ae7deaf5..cc897167253658a76227405133616de5a988b233 100644
--- a/entity/Object_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Object_entity/recordcontainers/jdito/contentProcess.js
@@ -1,18 +1,20 @@
+import("system.logging");
 import("system.db");
 import("system.vars");
 import("system.result");
 import("Context_lib");
 
+
 if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"))
 {
-    if (vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"))
-    {
-        result.object(db.table(vars.get("$param.ObjectRowId_param"), ContextUtils.getContextDataSql(vars.get("$param.ObjectType_param"), vars.get("$param.ObjectRowId_param"))));
-    }
-    else
-    {
-        result.object(db.table(ContextUtils.getContextDataSql(vars.get("$param.ObjectType_param"))))
-    }
+    var excludedIds = [];
+    if (vars.exists("$param.ExcludedObjectIds_param") && vars.get("$param.ExcludedObjectIds_param"))
+        excludedIds = JSON.parse(vars.get("$param.ExcludedObjectIds_param"));
+    
+    logging.log("aa22aa" + vars.get("$param.ExcludedObjectIds_param").toSource())
+    logging.log("aa22aa" + vars.get("$param.ObjectType_param").toSource())
+
+    result.object(db.table(ContextUtils.getContextDataSql(vars.get("$param.ObjectType_param"), undefined, false, undefined, false, excludedIds)))
 } 
 else
 {
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index d716537eff921b28d9b204b74f427a7633b3eef1..36e8bee336ba4f8af8ccd2b908feffe9ff9e4333 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Offer_entity</name>
   <title>Offer</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -10,11 +10,20 @@
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
+      <dependencies>
+        <entityDependency>
+          <name>f909c251-16c1-49e2-9b43-6d5f834137c6</name>
+          <entityName>Object_entity</entityName>
+          <fieldName>Offers</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
     </entityProvider>
     <entityField>
       <name>CURRENCY</name>
       <title>Currency</title>
       <consumer>KeywordCurrencies</consumer>
+      <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/currency/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/currency/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -28,7 +37,7 @@
     </entityField>
     <entityField>
       <name>OFFERDATE</name>
-      <title>Creation date</title>
+      <title>Date</title>
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
@@ -44,6 +53,7 @@
       <name>PROBABILITY</name>
       <title>Probability</title>
       <consumer>KeywordProbabilities</consumer>
+      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/probability/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>CONTACT_ID</name>
@@ -58,6 +68,8 @@
       <onValueChange>%aditoprj%/entity/Offer_entity/entityfields/contact_id/onValueChange.js</onValueChange>
       <onValueChangeTypes>
         <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
       </onValueChangeTypes>
     </entityField>
     <entityField>
@@ -75,7 +87,10 @@
       <name>STATUS</name>
       <title>Status</title>
       <consumer>KeywordOfferStates</consumer>
+      <mandatory v="true" />
       <state>EDITABLE</state>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/status/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>VAT</name>
@@ -321,8 +336,14 @@
       <dependency>
         <name>dependency</name>
         <entityName>Salesproject_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
+        <fieldName>openSalesprojects</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityField>
       <name>ADDRESS</name>
@@ -336,7 +357,7 @@
     <entityField>
       <name>ChosenAddress</name>
       <title>Choose address</title>
-      <possibleItemsProcess>%aditoprj%/entity/Offer_entity/entityfields/chosenaddress/possibleItemsProcess.js</possibleItemsProcess>
+      <consumer>PossibleAddresses</consumer>
       <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/chosenaddress/stateProcess.js</stateProcess>
       <onValueChange>%aditoprj%/entity/Offer_entity/entityfields/chosenaddress/onValueChange.js</onValueChange>
       <onValueChangeTypes>
@@ -425,6 +446,10 @@
           <name>RowId_param</name>
           <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>PresetLinks_param</name>
+          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityActionField>
@@ -528,11 +553,15 @@
       <name>PAYMENTTERMS</name>
       <title>Payment term</title>
       <consumer>KeywordPaymentTerm</consumer>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/paymentterms/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/paymentterms/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>DELIVERYTERMS</name>
       <title>Deliveryspecification</title>
       <consumer>KeywordDeliveryTerm</consumer>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Offer_entity/entityfields/deliveryterms/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
       <name>KeywordPaymentTerm</name>
@@ -568,6 +597,7 @@
       <name>Tasks</name>
       <title>Tasks</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
+      <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/tasks/stateProcess.js</stateProcess>
       <dependency>
         <name>dependency</name>
         <entityName>Task_entity</entityName>
@@ -582,6 +612,10 @@
           <name>ObjectId_param</name>
           <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>PresetLinks_param</name>
+          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityField>
@@ -609,6 +643,79 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityParameter>
+      <name>OfferPaymentTerm_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>OfferDeliveryTerm_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityConsumer>
+      <name>AttributeTree</name>
+      <title>Attribute Tree</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelationTree_entity</entityName>
+        <fieldName>TreeProvider</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>USER_NEW</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>FullOfferCode</name>
+      <title>Offer number</title>
+      <state>READONLY</state>
+      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/fulloffercode/valueProcess.js</valueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>PossibleAddresses</name>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Address_entity</entityName>
+        <fieldName>OrganisationAndContactAddresses</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -750,6 +857,22 @@
           <name>INFO.value</name>
           <recordfield>OFFER.INFO</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>OFFER.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>OFFER.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>OFFER.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>OFFER.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Offer_entity/entityfields/activities/children/presetlinks_param/valueProcess.js b/entity/Offer_entity/entityfields/activities/children/presetlinks_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e4c6c134df6be187331e47d8c2c4d5a9871b7c2b
--- /dev/null
+++ b/entity/Offer_entity/entityfields/activities/children/presetlinks_param/valueProcess.js
@@ -0,0 +1,18 @@
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+if (vars.get("$field.SALESPROJECT_ID"))
+{
+    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+}
+
+result.object(links);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js b/entity/Offer_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4adebe4edff067c1964160dfa9f90a08cc5fdfe0
--- /dev/null
+++ b/entity/Offer_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.OFFERID"));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js b/entity/Offer_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..431bcc952145cb451362fc69754f84ff1514bac5
--- /dev/null
+++ b/entity/Offer_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
diff --git a/entity/Offer_entity/entityfields/chosenaddress/possibleItemsProcess.js b/entity/Offer_entity/entityfields/chosenaddress/possibleItemsProcess.js
deleted file mode 100644
index c45999248fc3f0f12bfe2dcf4987b648fdf4a25a..0000000000000000000000000000000000000000
--- a/entity/Offer_entity/entityfields/chosenaddress/possibleItemsProcess.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.vars");
-import("system.result");
-import("PostalAddress_lib");
-
-result.object(AddressUtils.getAllPossibleAddresses(vars.get("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/contact_id/linkedContextProcess.js b/entity/Offer_entity/entityfields/contact_id/linkedContextProcess.js
index e678b842c5b6cf510473693a355fa7833dcf28e8..2e504d63e3b5a3f71b54b072798b3ad09c50984b 100644
--- a/entity/Offer_entity/entityfields/contact_id/linkedContextProcess.js
+++ b/entity/Offer_entity/entityfields/contact_id/linkedContextProcess.js
@@ -2,4 +2,4 @@ import("system.vars");
 import("system.result");
 import("Contact_lib");
 
-result.string(ContactUtils.getContextByRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
+result.string(ContactUtils.getContextByContactId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/contact_id/onValueChange.js b/entity/Offer_entity/entityfields/contact_id/onValueChange.js
index 96af6855c0f276ec0fd3ccea251c7063f8904681..98ae338e181debb430e224d724a4e4fc430d7f2d 100644
--- a/entity/Offer_entity/entityfields/contact_id/onValueChange.js
+++ b/entity/Offer_entity/entityfields/contact_id/onValueChange.js
@@ -1,14 +1,20 @@
-import("system.neon");
-import("system.vars");
-import("system.db");
-import("Util_lib");
-import("Entity_lib");
-
-var contactid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID"));
-if(contactid != "")
-{
-    var relData = db.array(db.ROW, "select LANGUAGE from CONTACT where CONTACTID = '" + contactid + "'");
-    
-    if(relData[0] != "") 
-        neon.setFieldValue("field.LANGUAGE", relData[0]);
+import("system.logging");
+import("system.neon");
+import("system.vars");
+import("system.db");
+import("Util_lib");
+import("Entity_lib");
+import("Contact_lib");
+
+var contactid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID"));
+if(contactid != "")
+{
+    //Language Preset
+    var relData = db.array(db.ROW, "select LANGUAGE from CONTACT where CONTACTID = '" + contactid + "'");
+    if(relData[0] != "") 
+        neon.setFieldValue("field.LANGUAGE", relData[0]);
+    
+    // set $field.CONTATCT_ORG_ID per contactid
+    var orgid = ContactUtils.getPersOrgIds(contactid);
+    neon.setFieldValue("$field.CONTACT_ORG_ID", orgid[2]);
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js b/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js
index 4957b1ff844fb074b3ffd05533d1e75377f5b96d..3165252cb4ab4b2eae1dda0fdd17c10bd9b4a83b 100644
--- a/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js
@@ -7,6 +7,10 @@ var currency = vars.getString("$field.CURRENCY");
 var language = vars.getString("$field.LANGUAGE");
 var header = vars.getString("$field.HEADER");
 var offerId = vars.getString("$field.OFFERID");
+var deliveryTerm = vars.getString("$field.DELIVERYTERMS");
+var paymentTerm = vars.getString("$field.PAYMENTTERMS");
+var salesprojectId = vars.getString("$field.SALESPROJECT_ID");
 
-OfferUtils.copyOffer(offerId, contactId, language, currency, header);
+
+OfferUtils.copyOffer(offerId, contactId, language, currency, header, deliveryTerm, paymentTerm, salesprojectId);
     
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/currency/displayValueProcess.js b/entity/Offer_entity/entityfields/currency/displayValueProcess.js
index c82efe19555b1d56e35a8e103aecffa015136880..c82b4d748061c5e19bf3bb21588121f5178257c2 100644
--- a/entity/Offer_entity/entityfields/currency/displayValueProcess.js
+++ b/entity/Offer_entity/entityfields/currency/displayValueProcess.js
@@ -3,8 +3,4 @@ import("system.vars");
 import("Keyword_lib");
 import("KeywordRegistry_basic");
 
-if (vars.exists("$param.OfferCurrency_param") && vars.get("$param.OfferCurrency_param")) 
-{
-    var currency = KeywordUtils.getViewValue($KeywordRegistry.currency(), vars.get("$param.OfferCurrency_param"));
-    result.string(currency);
-}
\ No newline at end of file
+result.string(KeywordUtils.getViewValue($KeywordRegistry.currency(), vars.get("$field.CURRENCY")));
diff --git a/entity/Offer_entity/entityfields/currency/valueProcess.js b/entity/Offer_entity/entityfields/currency/valueProcess.js
index 636be1adc9a7505eea4d957860d46a81856f5a93..787ece941a73bd5747239c362d3f0bb9fcc0e439 100644
--- a/entity/Offer_entity/entityfields/currency/valueProcess.js
+++ b/entity/Offer_entity/entityfields/currency/valueProcess.js
@@ -1,7 +1,12 @@
-import("system.result");
-import("system.vars");
-
-if (vars.exists("$param.OfferCurrency_param") && vars.get("$param.OfferCurrency_param")) 
-{
-    result.string(vars.get("$param.OfferCurrency_param"));
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if (vars.exists("$param.OfferCurrency_param") && vars.get("$param.OfferCurrency_param")) 
+{
+    result.string(vars.get("$param.OfferCurrency_param"));
+}
+else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value"))
+{
+    result.string("EUR");
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/date_edit/valueProcess.js b/entity/Offer_entity/entityfields/date_edit/valueProcess.js
index 710ac8a06a9911f82ff222c7d9d231846ca93fb2..8d41a64d6993f71d00e0879f5eb4aed0aa0b866d 100644
--- a/entity/Offer_entity/entityfields/date_edit/valueProcess.js
+++ b/entity/Offer_entity/entityfields/date_edit/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/date_new/valueProcess.js b/entity/Offer_entity/entityfields/date_new/valueProcess.js
index 3a0d59096cd2de39b6098f1ed95af580dcebfce0..8ee28e84edb9930de54975f81e8cb5a13c9aa02f 100644
--- a/entity/Offer_entity/entityfields/date_new/valueProcess.js
+++ b/entity/Offer_entity/entityfields/date_new/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/deliveryterms/displayValueProcess.js b/entity/Offer_entity/entityfields/deliveryterms/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..61db9c5b101c1353f6ddfb19b836b1ab1173c3cc
--- /dev/null
+++ b/entity/Offer_entity/entityfields/deliveryterms/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.deliveryTerm(), vars.get("$field.DELIVERYTERMS")));
diff --git a/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js b/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c3d8c920eeae0f1fc9c1089633fa9b076a011264
--- /dev/null
+++ b/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js
@@ -0,0 +1,17 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+import("Attribute_lib");
+
+if (vars.exists("$param.OfferDeliveryTerm_param") && vars.get("$param.OfferDeliveryTerm_param")) 
+{
+    result.string(vars.get("$param.OfferDeliveryTerm_param"));
+} 
+else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    var contactId = vars.getString("$field.CONTACT_ID");
+    if (contactId)
+    {                                         // Lieferkondition
+        result.string(AttributeRelationUtils.getAttribute("3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb", contactId));
+    }
+}
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/fulloffercode/valueProcess.js b/entity/Offer_entity/entityfields/fulloffercode/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d39bcd7a3c4880d06e2db9776a472e92ad9a34ac
--- /dev/null
+++ b/entity/Offer_entity/entityfields/fulloffercode/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+//a filedGroup cannot be placed in a table (filter-view) at the moment and therefore a separate field is needed:
+result.string(vars.get("$field.OFFERCODE") + "-" + vars.get("$field.VERSNR"));
diff --git a/entity/Offer_entity/entityfields/language/displayValueProcess.js b/entity/Offer_entity/entityfields/language/displayValueProcess.js
index ac73db4489233522317e7c652d62dd92214388d6..bcbf2118161a42f079dfa6ece4df7fb4d6b6774e 100644
--- a/entity/Offer_entity/entityfields/language/displayValueProcess.js
+++ b/entity/Offer_entity/entityfields/language/displayValueProcess.js
@@ -1,15 +1,12 @@
-import("system.db");
-import("system.translate");
-import("system.result");
-import("system.vars");
-import("Sql_lib");
-
-//if (vars.exists("$param.OfferLanguage_param") && vars.get("$param.OfferLanguage_param")) 
-{
-    var iso3 = vars.get("$field.LANGUAGE");
-    var latinName = db.cell(SqlCondition.begin()
-        .andPrepare("AB_LANGUAGE.ISO3", iso3)
-        .buildSql("select NAME_LATIN from AB_LANGUAGE", "1=0"));
-    latinName = translate.text(latinName);
-    result.string(latinName);
-}
\ No newline at end of file
+import("system.db");
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+var iso3 = vars.get("$field.LANGUAGE");
+var latinName = db.cell(SqlCondition.begin()
+    .andPrepare("AB_LANGUAGE.ISO3", iso3)
+    .buildSql("select NAME_LATIN from AB_LANGUAGE", "1=0"));
+latinName = translate.text(latinName);
+result.string(latinName);
diff --git a/entity/Offer_entity/entityfields/language/valueProcess.js b/entity/Offer_entity/entityfields/language/valueProcess.js
index 4fc924e18219f6a6b30f4b3ebb8ffb22d8ed3cb0..826184267b67f23cecfd90a51ce0ee526800072a 100644
--- a/entity/Offer_entity/entityfields/language/valueProcess.js
+++ b/entity/Offer_entity/entityfields/language/valueProcess.js
@@ -1,7 +1,12 @@
-import("system.result");
-import("system.vars");
-
-if (vars.exists("$param.OfferLanguage_param") && vars.get("$param.OfferLanguage_param")) 
-{
-    result.string(vars.get("$param.OfferLanguage_param"));
+import("system.neon");
+import("system.result");
+import("system.vars");
+
+if (vars.exists("$param.OfferLanguage_param") && vars.get("$param.OfferLanguage_param")) 
+{
+    result.string(vars.get("$param.OfferLanguage_param"));
+}
+else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value"))
+{
+    result.string("deu");
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/newactivity/onActionProcess.js b/entity/Offer_entity/entityfields/newactivity/onActionProcess.js
index 95b96c5f1fa85664c326cd49b92560cd4b3c929f..4be677edd52ad21e51db57a867790397f1fe35bc 100644
--- a/entity/Offer_entity/entityfields/newactivity/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/newactivity/onActionProcess.js
@@ -1,4 +1,18 @@
 import("system.vars");
 import("ActivityTask_lib");
+import("Contact_lib");
 
-ActivityUtils.createNewActivity(vars.getString("$field.OFFERID"));
\ No newline at end of file
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+if (vars.get("$field.SALESPROJECT_ID"))
+{
+    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+}
+
+ActivityUtils.createNewActivity(vars.getString("$field.OFFERID"), links);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js b/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
index add48fbf11814bdf125f71afc331b9957afa4172..be8fa6eecb4fd7dc771641a6a8585f183894dc83 100644
--- a/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/newofferversion/onActionProcess.js
@@ -11,6 +11,8 @@ var params = {
     "OfferVersnr_param" : OfferUtils.getNextOfferVersionNumber(vars.get("$field.OFFERCODE")),
     "OfferCurrency_param" : vars.get("$field.CURRENCY"),
     "OfferAddress_param" : vars.get("$field.ADDRESS"),
-    "OfferHeader_param" : vars.get("$field.HEADER")
+    "OfferHeader_param" : vars.get("$field.HEADER"),
+    "OfferDeliveryTerm_param" : vars.get("$field.DELIVERYTERMS"),
+    "OfferPaymentTerm_param" : vars.get("$field.PAYMENTTERMS")
 }
 neon.openContext("Offer", null, null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/newtask/onActionProcess.js b/entity/Offer_entity/entityfields/newtask/onActionProcess.js
index 4ac1d14db6843aace01f0a9ef04433dc21a54696..f0165851eda69a6c3a0187d29f05c133b4118ed3 100644
--- a/entity/Offer_entity/entityfields/newtask/onActionProcess.js
+++ b/entity/Offer_entity/entityfields/newtask/onActionProcess.js
@@ -1,4 +1,18 @@
 import("system.vars");
 import("ActivityTask_lib");
+import("Contact_lib");
 
-TaskUtils.createNewTask(vars.get("$field.OFFERID"));
\ No newline at end of file
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+if (vars.get("$field.SALESPROJECT_ID"))
+{
+    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+}
+
+TaskUtils.createNewTask(vars.get("$field.OFFERID"), links);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/offercode_versnr_fieldgroup/valueProcess.js b/entity/Offer_entity/entityfields/offercode_versnr_fieldgroup/valueProcess.js
index c7fab6e323296f8188d68d9deb288de327a82c32..28c9f0b0877d194e0c193b8ef7e3107e7863f714 100644
--- a/entity/Offer_entity/entityfields/offercode_versnr_fieldgroup/valueProcess.js
+++ b/entity/Offer_entity/entityfields/offercode_versnr_fieldgroup/valueProcess.js
@@ -1,4 +1,4 @@
 import("system.result");
 import("system.vars");
 
-result.string(vars.get("$field.OFFERCODE") + "-" + vars.get("$field.VERSNR"));
+result.string(vars.get("$field.FullOfferCode"));
diff --git a/entity/Offer_entity/entityfields/paymentterms/displayValueProcess.js b/entity/Offer_entity/entityfields/paymentterms/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..28d34ae5dec5170cd36f478e99d213357d343a30
--- /dev/null
+++ b/entity/Offer_entity/entityfields/paymentterms/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.paymentTerm(), vars.get("$field.PAYMENTTERMS")));
diff --git a/entity/Offer_entity/entityfields/paymentterms/valueProcess.js b/entity/Offer_entity/entityfields/paymentterms/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..35d02f62cada7767c96df6d5b45bbce9658d3b0c
--- /dev/null
+++ b/entity/Offer_entity/entityfields/paymentterms/valueProcess.js
@@ -0,0 +1,17 @@
+import("system.neon");
+import("system.result");
+import("system.vars");
+import("Attribute_lib");
+
+if (vars.exists("$param.OfferPaymentTerm_param") && vars.get("$param.OfferPaymentTerm_param")) 
+{
+    result.string(vars.get("$param.OfferPaymentTerm_param"));
+}
+else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    var contactId = vars.getString("$field.CONTACT_ID");
+    if (contactId)
+    {                                         // Zahlungskondition
+        result.string(AttributeRelationUtils.getAttribute("292fae38-6557-466d-8843-3b1b4a1f6599", contactId));
+    }
+}
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/entityfields/organisation/children/contactid_param/valueProcess.js b/entity/Offer_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js
similarity index 100%
rename from entity/SalesprojectCompetition_entity/entityfields/organisation/children/contactid_param/valueProcess.js
rename to entity/Offer_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js
diff --git a/entity/Offer_entity/entityfields/printoffer/stateProcess.js b/entity/Offer_entity/entityfields/printoffer/stateProcess.js
index 9e9e92febb3ab441aed9eeaaadc70bfa7b26684b..bb8a76fc6373e23f7ea9e562c2bcedad4c6b5bdb 100644
--- a/entity/Offer_entity/entityfields/printoffer/stateProcess.js
+++ b/entity/Offer_entity/entityfields/printoffer/stateProcess.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.result");
 import("system.db");
 import("Sql_lib");
@@ -11,4 +10,4 @@ var itemcount = db.cell(SqlCondition.begin()
 if(itemcount == "0")
     result.string(neon.COMPONENTSTATE_DISABLED);
 else
-    result.string(neon.COMPONENTSTATE_AUTO);
\ No newline at end of file
+    result.string(neon.COMPONENTSTATE_EDITABLE);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/probability/displayValueProcess.js b/entity/Offer_entity/entityfields/probability/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..888f3e80c6b6961d0e3b7caf8820bc54a7f17cba
--- /dev/null
+++ b/entity/Offer_entity/entityfields/probability/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.offerProbability(), vars.get("$field.PROBABILITY")));
diff --git a/entity/Offer_entity/entityfields/salesproject_id/mandatoryProcess.js b/entity/Offer_entity/entityfields/salesproject_id/mandatoryProcess.js
index 05b1f9bd5c0c54e2c707e0ac6f2fce2ea12850e0..3bd7da35b29fe62a814c8f4562736441d1b99708 100644
--- a/entity/Offer_entity/entityfields/salesproject_id/mandatoryProcess.js
+++ b/entity/Offer_entity/entityfields/salesproject_id/mandatoryProcess.js
@@ -2,7 +2,7 @@ import("system.vars");
 import("system.result");
 import("Contact_lib");
 
-var type = ContactUtils.getRelationType(vars.get("$field.CONTACT_ID"), vars.get("$field.CONTACT_PERSON_ID"), vars.get("$field.CONTACT_ORG_ID"));
+var type = ContactUtils.getContactType(vars.get("$field.CONTACT_ID"), vars.get("$field.CONTACT_PERSON_ID"), vars.get("$field.CONTACT_ORG_ID"));
 
 result.string(type != 2);
 
diff --git a/entity/Offer_entity/entityfields/salesproject_id/stateProcess.js b/entity/Offer_entity/entityfields/salesproject_id/stateProcess.js
index a88395a1cc7e5206b5396eba14e7dcf6c927214a..1a1eb537b9b727aa99c48fe7236750b5c19c8e5a 100644
--- a/entity/Offer_entity/entityfields/salesproject_id/stateProcess.js
+++ b/entity/Offer_entity/entityfields/salesproject_id/stateProcess.js
@@ -1,13 +1,19 @@
-import("system.neon");
-import("system.result");
-import("system.vars");
-
-
-switch (vars.get("$sys.recordstate")) 
-{
-    case neon.OPERATINGSTATE_NEW:
-        result.object(neon.COMPONENTSTATE_EDITABLE);
-    break;
-    default:
-        result.object(neon.COMPONENTSTATE_READONLY);
+import("system.logging");
+import("system.neon");
+import("system.result");
+import("system.vars");
+import("Entity_lib");
+
+
+switch (vars.get("$sys.recordstate")) 
+{
+    case neon.OPERATINGSTATE_NEW:
+        //only EDITABLE if $field.CONTACT_ID is set
+        if(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID")))
+            result.object(neon.COMPONENTSTATE_EDITABLE);
+        else
+            result.object(neon.COMPONENTSTATE_READONLY);
+    break;
+    default:
+        result.object(neon.COMPONENTSTATE_READONLY);
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js b/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2b24f74fc8720337e690ffb5b66610529cdbb859
--- /dev/null
+++ b/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.logging");
+import("system.vars");
+import("system.result");
+import("Entity_lib");
+
+var contact = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ORG_ID"));
+result.string(contact);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/status/displayValueProcess.js b/entity/Offer_entity/entityfields/status/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5e51722dd9be17175a50869ce13b298d7cb870f2
--- /dev/null
+++ b/entity/Offer_entity/entityfields/status/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.offerStatus(), vars.get("$field.STATUS")));
diff --git a/entity/Offer_entity/entityfields/status/valueProcess.js b/entity/Offer_entity/entityfields/status/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ef4ec27fb0c16db8e3b6a59b3723da26f78f54e8
--- /dev/null
+++ b/entity/Offer_entity/entityfields/status/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value"))
+    result.string("70d27a1b-7233-481d-826f-01a13a4bb0b2"); //Open
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js b/entity/Offer_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e4c6c134df6be187331e47d8c2c4d5a9871b7c2b
--- /dev/null
+++ b/entity/Offer_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js
@@ -0,0 +1,18 @@
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+if (vars.get("$field.SALESPROJECT_ID"))
+{
+    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+}
+
+result.object(links);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/tasks/stateProcess.js b/entity/Offer_entity/entityfields/tasks/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..fca9129ea68cf45ad847604b3e6f12b25052ce36
--- /dev/null
+++ b/entity/Offer_entity/entityfields/tasks/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
+
+if(TaskUtils.hasTasks(vars.get("$field.OFFERID"), ContextUtils.getCurrentContextId()))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/user_edit/valueProcess.js b/entity/Offer_entity/entityfields/user_edit/valueProcess.js
index 1581e18d9763043ae602b98658f87cb0a3b0c967..90383c071316dc55fe51d43a93dd7db75551842e 100644
--- a/entity/Offer_entity/entityfields/user_edit/valueProcess.js
+++ b/entity/Offer_entity/entityfields/user_edit/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/user_new/valueProcess.js b/entity/Offer_entity/entityfields/user_new/valueProcess.js
index 7c566863b493d778b72dea7d8822f6a59333e77d..dda83cfd00e13df5c6da64151f5d1e6d932a681e 100644
--- a/entity/Offer_entity/entityfields/user_new/valueProcess.js
+++ b/entity/Offer_entity/entityfields/user_new/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Offer_entity/recordcontainers/db/onDBInsert.js b/entity/Offer_entity/recordcontainers/db/onDBInsert.js
index 6b3c4033a05890bdd874ce4fa610333b06fdc538..c9c487029913a28d6eda69030fccfc6f6f3a3f5f 100644
--- a/entity/Offer_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Offer_entity/recordcontainers/db/onDBInsert.js
@@ -1,6 +1,6 @@
-import("system.neon");
-import("system.vars");
-import("Offer_lib");
-
-if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.OfferOriginal_Id_param"))
-    OfferUtils.copyOfferItems(vars.getString("$param.OfferOriginal_Id_param"), vars.get("$field.OFFERID"));
+import("system.neon");
+import("system.vars");
+import("Offer_lib");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.OfferOriginal_Id_param"))
+    OfferUtils.copyOfferItems(vars.getString("$param.OfferOriginal_Id_param"), vars.get("$field.OFFERID"));
diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod
index ad258bf3ad759c9f51a4cd311f264bdc6a53fd38..e172cf4ff4befa725d7ba376d5e54804a567288d 100644
--- a/entity/Offeritem_entity/Offeritem_entity.aod
+++ b/entity/Offeritem_entity/Offeritem_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Offeritem_entity</name>
   <title>Offeritem</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -12,19 +12,20 @@
     </entityProvider>
     <entityField>
       <name>ASSIGNEDTO</name>
-      <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/assignedto/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>DISCOUNT</name>
       <title>Discount %</title>
       <contentType>NUMBER</contentType>
-      <outputFormat>#,##0</outputFormat>
+      <outputFormat>#,##0.00</outputFormat>
+      <onValidation>%aditoprj%/entity/Offeritem_entity/entityfields/discount/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>GROUPCODEID</name>
       <title>Commodity group</title>
       <consumer>KeywordProductGroupcodes</consumer>
       <state>READONLY</state>
+      <displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/groupcodeid/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>ITEMNAME</name>
@@ -68,6 +69,7 @@
       <title>Article</title>
       <consumer>Products</consumer>
       <linkedContext>Product</linkedContext>
+      <mandatory v="true" />
       <displayValueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/displayValueProcess.js</displayValueProcess>
       <onValueChange>%aditoprj%/entity/Offeritem_entity/entityfields/product_id/onValueChange.js</onValueChange>
       <onValueChangeTypes>
@@ -80,7 +82,9 @@
       <title>Quantity</title>
       <contentType>NUMBER</contentType>
       <outputFormat>#</outputFormat>
+      <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/valueProcess.js</valueProcess>
+      <onValidation>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/onValidation.js</onValidation>
       <onValueChange>%aditoprj%/entity/Offeritem_entity/entityfields/quantity/onValueChange.js</onValueChange>
       <onValueChangeTypes>
         <element>MASK</element>
@@ -100,7 +104,7 @@
     </entityField>
     <entityField>
       <name>VAT</name>
-      <title>VAT</title>
+      <title>VAT in %</title>
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00</outputFormat>
       <state>READONLY</state>
@@ -163,7 +167,6 @@
         </entityParameter>
         <entityParameter>
           <name>Currency_param</name>
-          <valueProcess>%aditoprj%/entity/Offeritem_entity/entityfields/offeritems/children/currency_param/valueProcess.js</valueProcess>
           <expose v="true" />
         </entityParameter>
         <entityParameter>
@@ -179,7 +182,7 @@
     <entityField>
       <name>INFO</name>
       <documentation>%aditoprj%/entity/Offeritem_entity/entityfields/info/documentation.adoc</documentation>
-      <title>Note</title>
+      <title>Description</title>
       <contentType>LONG_TEXT</contentType>
       <state>READONLY</state>
     </entityField>
diff --git a/entity/Offeritem_entity/afterOperatingState.js b/entity/Offeritem_entity/afterOperatingState.js
index 8a21849b42137377333709a16ea2eed6f50c9780..7366887b469255e7b30f07d7e8cd87781ab5b51d 100644
--- a/entity/Offeritem_entity/afterOperatingState.js
+++ b/entity/Offeritem_entity/afterOperatingState.js
@@ -9,4 +9,9 @@ if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
     
     vars.set("$field.ITEMSORT", oiUtils.getNextItemSort());
     vars.set("$field.ITEMPOSITION", oiUtils.getNextItemPosition(vars.get("$field.ASSIGNEDTO")));
+}
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW) 
+{
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/conditionProcess.js b/entity/Offeritem_entity/conditionProcess.js
deleted file mode 100644
index 810d73b91164b9eee3e9ec78ae7734dfd422b001..0000000000000000000000000000000000000000
--- a/entity/Offeritem_entity/conditionProcess.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("system.vars");
-
-if(vars.exists("$param.OfferId_param") && vars.get("$param.OfferId_param") != "")
-    result.string("OFFERITEM.OFFER_ID = ('" + vars.get("$param.OfferId_param") + "')");  
-else
-    result.string("");
\ No newline at end of file
diff --git a/entity/Offeritem_entity/entityfields/discount/onValidation.js b/entity/Offeritem_entity/entityfields/discount/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..a929b1d08a849904282a2e7c8d3a05bb77a7e4eb
--- /dev/null
+++ b/entity/Offeritem_entity/entityfields/discount/onValidation.js
@@ -0,0 +1,11 @@
+import("system.logging");
+import("system.result");
+import("system.vars");
+import("Util_lib");
+import("Entity_lib");
+
+var value = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.DISCOUNT"));
+var validationResult = NumberUtils.validateIsBetweenFloat("Discount", value, 0, 100);
+
+if (validationResult)
+    result.string(validationResult);
\ No newline at end of file
diff --git a/entity/Offeritem_entity/entityfields/groupcodeid/displayValueProcess.js b/entity/Offeritem_entity/entityfields/groupcodeid/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ce477b670409fc7ac6a8bd6af59d232b7f980241
--- /dev/null
+++ b/entity/Offeritem_entity/entityfields/groupcodeid/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.productGroupcode(), vars.get("$field.GROUPCODEID")));
diff --git a/entity/Offeritem_entity/entityfields/offeritems/children/currency_param/valueProcess.js b/entity/Offeritem_entity/entityfields/offeritems/children/currency_param/valueProcess.js
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
index 524f19c066638642f01e5b0ef2c0516c25e7de03..fc9994c4e51ec83d9ffe238797b472270ea51ca1 100644
--- a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
+++ b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
@@ -3,14 +3,16 @@ import("system.neon");
 import("Product_lib");
 import("Util_lib");
 import("Entity_lib");
+import("Attribute_lib");
 
 var pid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRODUCT_ID"));
 if(pid != "")
 {
     var currency = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : "";
     var contactid = vars.exists("$param.ContactId_param") ? vars.get("$param.ContactId_param") : "";
+    var pricelist = AttributeRelationUtils.getAttribute("97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec", contactid) || "";
     
-    var PriceListFilter = { currency: currency, quantity: vars.get("$field.QUANTITY"), relationId: contactid };
+    var PriceListFilter = { currency: currency, quantity: vars.get("$field.QUANTITY"), relationId: contactid, priceList: pricelist };
     
     //TODO: loading from db until loading from Consumer is possible.
     var ProductDetails = ProductUtils.getProductDetails(pid, PriceListFilter, ["INFO"]);
diff --git a/entity/Offeritem_entity/entityfields/quantity/onValidation.js b/entity/Offeritem_entity/entityfields/quantity/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..a7fe04aaf506c2edfba1e2d74b644c3da785a6d1
--- /dev/null
+++ b/entity/Offeritem_entity/entityfields/quantity/onValidation.js
@@ -0,0 +1,12 @@
+import("system.translate");
+import("system.result");
+import("system.vars");
+import("Entity_lib");
+
+var quatity = vars.exists("$field.QUANTITY") ? vars.get("$field.QUANTITY") : "";
+quatity = ProcessHandlingUtils.getOnValidationValue(quatity);
+
+if (parseInt(quatity) <= 0)
+{
+    result.string(translate.text("${QUANTITY_LOWER_THAN_1}"));
+}
diff --git a/entity/Offeritem_entity/entityfields/quantity/onValueChange.js b/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
index f6cb10a4585c3152a0d78ab4bed989186d609b63..5076a258429919fff7eefdabaacaeb6536416898 100644
--- a/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
+++ b/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
@@ -3,6 +3,7 @@ import("system.neon");
 import("Product_lib");
 import("Util_lib");
 import("Entity_lib");
+import("Attribute_lib");
 
 var pid = vars.get("$field.PRODUCT_ID");
 var newQuantity = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.QUANTITY"));
@@ -10,8 +11,9 @@ if(pid != "" && newQuantity != "")
 {
     var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : "";
     var contactid = vars.exists("$param.ContactId_param") ? vars.get("$param.ContactId_param") : "";
+    var pricelist = AttributeRelationUtils.getAttribute("97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec", contactid) || "";
     
-    var PriceListFilter = { currency: curr, quantity: newQuantity, relationId: contactid };
+    var PriceListFilter = { currency: curr, quantity: newQuantity, relationId: contactid, priceList: pricelist };
     
     var ProductDetails = ProductUtils.getProductDetails(pid, PriceListFilter);
     
@@ -20,4 +22,15 @@ if(pid != "" && newQuantity != "")
         vars.set("$field.PRICE", ProductDetails.PriceListToUse.price);
         vars.set("$field.VAT", ProductDetails.PriceListToUse.vat);
     }
-}
\ No newline at end of file
+}
+
+
+//checks if the value is <= 0, if so fallback to 1
+var quatity = vars.exists("$field.QUANTITY") ? vars.get("$field.QUANTITY") : "";
+quatity = ProcessHandlingUtils.getOnValidationValue(quatity);
+
+if (parseInt(quatity) <= 0)
+{
+    neon.setFieldValue("$field.QUANTITY", "1");
+}
+    
\ No newline at end of file
diff --git a/entity/Offeritem_entity/onDBDelete.js b/entity/Offeritem_entity/onDBDelete.js
deleted file mode 100644
index 2acb846c67015c02499f80bb8487248c0e58368a..0000000000000000000000000000000000000000
--- a/entity/Offeritem_entity/onDBDelete.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import("system.neon");
-import("system.vars");
-import("system.db");
-import("Offer_lib");
-
-var oid = vars.get("$field.OFFER_ID");
-if(oid != "")
-{
-    var oiid = vars.get("$field.OFFERITEMID");
-    var oiUtils = new OfferItemUtils(oid);
-    var deletedIds = oiUtils.deletePartsList(oiid);
-    oiUtils.reOrgItems();
-    
-    deletedIds.push(oiid);
-    var cols = ["NET", "VAT"];
-    var vals = oiUtils.getNetAndVat(deletedIds);
-    
-    db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
-    
-    neon.refresh();
-}
\ No newline at end of file
diff --git a/entity/Offeritem_entity/onDBInsert.js b/entity/Offeritem_entity/onDBInsert.js
deleted file mode 100644
index 38707c33d413479d3756ad468a8406eca17e27af..0000000000000000000000000000000000000000
--- a/entity/Offeritem_entity/onDBInsert.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import("system.datetime");
-import("system.neon");
-import("system.vars");
-import("system.db");
-import("system.util");
-import("Offer_lib");
-import("Product_lib");
-
-var oid = vars.get("$field.OFFER_ID");
-if(oid != "")
-{
-    var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : "";
-    var contactid = vars.exists("$param.ContactId_param") ? vars.get("$param.ContactId_param") : "";
-    
-    var oiUtils = new OfferItemUtils(vars.get("$field.OFFER_ID"));
-    oiUtils.insertPartsList(vars.get("$field.PRODUCT_ID"), vars.get("$field.OFFERITEMID"), curr, contactid);
-    oiUtils.reOrgItems();
-    
-    //update offer price
-    var cols = ["NET", "VAT"];
-    var vals = oiUtils.getNetAndVat();
-    
-    db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
-    
-    neon.refresh();
-}
\ No newline at end of file
diff --git a/entity/Offeritem_entity/onDBUpdate.js b/entity/Offeritem_entity/onDBUpdate.js
deleted file mode 100644
index 7441937d9ef37bb099ba1e70bd80b95786f46fb1..0000000000000000000000000000000000000000
--- a/entity/Offeritem_entity/onDBUpdate.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import("system.vars");
-import("system.db");
-import("system.neon");
-import("Offer_lib");
-
-var oid = vars.get("$field.OFFER_ID");
-if(oid != "")
-{
-    var cols = ["NET", "VAT"];
-    var oiUtils = new OfferItemUtils(oid);
-    var vals = oiUtils.getNetAndVat();
-    
-    db.updateData("OFFER", cols, null, vals, SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
-    
-    neon.refresh();
-}
\ No newline at end of file
diff --git a/entity/Offeritem_entity/orderClauseProcess.js b/entity/Offeritem_entity/orderClauseProcess.js
deleted file mode 100644
index 8eebb296c78c7eda5d7830306cb75551f522943a..0000000000000000000000000000000000000000
--- a/entity/Offeritem_entity/orderClauseProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.object( {"OFFERITEM.ITEMSORT": "up"} );
\ No newline at end of file
diff --git a/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js b/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
index 8c333d3d4bb50852a39cb07e25afd19126008406..01bec1734b9df50f7bf027cb4fcad0251e19e8cb 100644
--- a/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Offeritem_entity/recordcontainers/db/onDBUpdate.js
@@ -11,6 +11,4 @@ if(oid != "")
     var oiUtils = new OfferItemUtils(oid);
     
     db.updateData("OFFER", cols, null, oiUtils.getNetAndVat(), SqlCondition.equals("OFFER.OFFERID", oid, "1 = 2"));
-
-    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Options_Entity/Options_Entity.aod b/entity/Options_Entity/Options_Entity.aod
index 3c3dbc6ec5e20c42aa11145d374c637890b4cf4c..ab90e343e303b8dca52f1f81c7f466b76f180e66 100644
--- a/entity/Options_Entity/Options_Entity.aod
+++ b/entity/Options_Entity/Options_Entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Options_Entity</name>
   <title>Options</title>
   <description></description>
diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod
index e7c5d422447dedd803b6d0692772eb9f6c26feac..30b9585984658b4e37c7a6c25280bf4221c1cbc6 100644
--- a/entity/Order_entity/Order_entity.aod
+++ b/entity/Order_entity/Order_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Order_entity</name>
   <title>Receipt</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -10,6 +10,14 @@
   <entityFields>
     <entityProvider>
       <name>#PROVIDER</name>
+      <dependencies>
+        <entityDependency>
+          <name>95e7ab85-0af9-46ea-a50a-7719833acd2a</name>
+          <entityName>Object_entity</entityName>
+          <fieldName>Orders</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
     </entityProvider>
     <entityField>
       <name>CURRENCY</name>
@@ -70,6 +78,7 @@
       <title>Status</title>
       <consumer>KeywordStates</consumer>
       <state>EDITABLE</state>
+      <displayValueProcess>%aditoprj%/entity/Order_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>VAT</name>
@@ -381,6 +390,10 @@
           <name>ObjectId_param</name>
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>PresetLinks_param</name>
+          <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityActionField>
@@ -425,6 +438,10 @@
           <name>ObjectId_param</name>
           <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>PresetLinks_param</name>
+          <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
   </entityFields>
diff --git a/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js b/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e4c6c134df6be187331e47d8c2c4d5a9871b7c2b
--- /dev/null
+++ b/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js
@@ -0,0 +1,18 @@
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+if (vars.get("$field.SALESPROJECT_ID"))
+{
+    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+}
+
+result.object(links);
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/contact_id/linkedContextProcess.js b/entity/Order_entity/entityfields/contact_id/linkedContextProcess.js
index e678b842c5b6cf510473693a355fa7833dcf28e8..2e504d63e3b5a3f71b54b072798b3ad09c50984b 100644
--- a/entity/Order_entity/entityfields/contact_id/linkedContextProcess.js
+++ b/entity/Order_entity/entityfields/contact_id/linkedContextProcess.js
@@ -2,4 +2,4 @@ import("system.vars");
 import("system.result");
 import("Contact_lib");
 
-result.string(ContactUtils.getContextByRelationId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
+result.string(ContactUtils.getContextByContactId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/newactivity/onActionProcess.js b/entity/Order_entity/entityfields/newactivity/onActionProcess.js
index 45bc3331e033afc29ae5005c6d7d0295a4cac08a..1a27d3d454d20447d05ec6064c1852a7d9e49d01 100644
--- a/entity/Order_entity/entityfields/newactivity/onActionProcess.js
+++ b/entity/Order_entity/entityfields/newactivity/onActionProcess.js
@@ -1,4 +1,18 @@
 import("system.vars");
 import("ActivityTask_lib");
+import("Contact_lib");
 
-ActivityUtils.createNewActivity(vars.getString("$field.SALESORDERID"));
\ No newline at end of file
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+if (vars.get("$field.SALESPROJECT_ID"))
+{
+    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+}
+
+ActivityUtils.createNewActivity(vars.get("$field.SALESORDERID"), links);
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/newtask/onActionProcess.js b/entity/Order_entity/entityfields/newtask/onActionProcess.js
index 994ccb2800ba1bafd53a44148faaa334f15685cb..3d0aeaf0beab976054701f3a58a709df8e67de92 100644
--- a/entity/Order_entity/entityfields/newtask/onActionProcess.js
+++ b/entity/Order_entity/entityfields/newtask/onActionProcess.js
@@ -1,4 +1,18 @@
 import("system.vars");
 import("ActivityTask_lib");
+import("Contact_lib");
 
-TaskUtils.createNewTask(vars.get("$field.SALESORDERID"));
\ No newline at end of file
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+if (vars.get("$field.SALESPROJECT_ID"))
+{
+    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+}
+
+TaskUtils.createNewTask(vars.get("$field.SALESORDERID"), links);
\ No newline at end of file
diff --git a/entity/Order_entity/entityfields/status/displayValueProcess.js b/entity/Order_entity/entityfields/status/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..70976b2e028f23867e8f6addad7cdd3517f3c5e0
--- /dev/null
+++ b/entity/Order_entity/entityfields/status/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.salesorderState(), vars.get("$field.STATUS")));
diff --git a/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js b/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e4c6c134df6be187331e47d8c2c4d5a9871b7c2b
--- /dev/null
+++ b/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js
@@ -0,0 +1,18 @@
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+var contactId = vars.get("$field.CONTACT_ID");
+var links = [];
+
+if (contactId)
+{
+    links.push([ContactUtils.getContextByContactId(contactId), contactId]);
+}
+
+if (vars.get("$field.SALESPROJECT_ID"))
+{
+    links.push(["Salesproject", vars.get("$field.SALESPROJECT_ID")]);
+}
+
+result.object(links);
\ No newline at end of file
diff --git a/entity/Order_entity/recordcontainers/db/onDBInsert.js b/entity/Order_entity/recordcontainers/db/onDBInsert.js
index f3f8fd6de5a6a1febfa39604a10cd0249ed35e89..940a4ff0f9a833f00b45814bab915e9ed2014fb6 100644
--- a/entity/Order_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Order_entity/recordcontainers/db/onDBInsert.js
@@ -1,12 +1,12 @@
-import("system.neon");
-import("system.vars");
-import("Sql_lib");
-import("Order_lib");
-
-if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.OfferId_param"))
-{
-    var orderId = vars.getString("$field.SALESORDERID");
-    var offerId = vars.getString("$param.OfferId_param");
-    
-    OrderUtils.copyOfferItemsToOrder(offerId, orderId); //copy all offerItems
-}
+import("system.neon");
+import("system.vars");
+import("Sql_lib");
+import("Order_lib");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.OfferId_param"))
+{
+    var orderId = vars.getString("$field.SALESORDERID");
+    var offerId = vars.getString("$param.OfferId_param");
+    
+    OrderUtils.copyOfferItemsToOrder(offerId, orderId); //copy all offerItems
+}
diff --git a/entity/Orderitem_entity/Orderitem_entity.aod b/entity/Orderitem_entity/Orderitem_entity.aod
index 560c0b7facbcd74bd5cf0189f7e08ec7bd881710..ae50324c8331b25d2ffdbb2b6ff095ec63f51996 100644
--- a/entity/Orderitem_entity/Orderitem_entity.aod
+++ b/entity/Orderitem_entity/Orderitem_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Orderitem_entity</name>
   <title>Orderitem</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -22,6 +22,7 @@
       <title>Commodity group</title>
       <consumer>KeywordProductGroupcodes</consumer>
       <state>READONLY</state>
+      <displayValueProcess>%aditoprj%/entity/Orderitem_entity/entityfields/groupcodeid/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>ITEMNAME</name>
@@ -82,10 +83,11 @@
       <name>UNIT</name>
       <title>Unit</title>
       <consumer>KeywordQuantityUnits</consumer>
+      <displayValueProcess>%aditoprj%/entity/Orderitem_entity/entityfields/unit/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>VAT</name>
-      <title>VAT</title>
+      <title>VAT in %</title>
       <state>AUTO</state>
     </entityField>
     <entityParameter>
@@ -167,7 +169,7 @@
     </entityProvider>
     <entityField>
       <name>INFO</name>
-      <title>Note</title>
+      <title>Description</title>
     </entityField>
     <entityConsumer>
       <name>KeywordProductGroupcodes</name>
diff --git a/entity/Orderitem_entity/afterOperatingState.js b/entity/Orderitem_entity/afterOperatingState.js
index 772a17c62fb5e3c8f3156536b0d16c1e6783b01b..2fae7948cdde0ce1358c7791d3d77ce767058aca 100644
--- a/entity/Orderitem_entity/afterOperatingState.js
+++ b/entity/Orderitem_entity/afterOperatingState.js
@@ -11,4 +11,9 @@ if(opState == neon.OPERATINGSTATE_NEW)
     
     vars.set("$field.ITEMSORT", oiUtils.getNextItemSort());
     vars.set("$field.ITEMPOSITION", oiUtils.getNextItemPosition(vars.get("$field.ASSIGNEDTO")));
+}
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW) 
+{
+    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Orderitem_entity/entityfields/groupcodeid/displayValueProcess.js b/entity/Orderitem_entity/entityfields/groupcodeid/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ce477b670409fc7ac6a8bd6af59d232b7f980241
--- /dev/null
+++ b/entity/Orderitem_entity/entityfields/groupcodeid/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.productGroupcode(), vars.get("$field.GROUPCODEID")));
diff --git a/entity/Orderitem_entity/entityfields/unit/displayValueProcess.js b/entity/Orderitem_entity/entityfields/unit/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0149bf2040b93bd6370d0c40bb03abecf0b01a45
--- /dev/null
+++ b/entity/Orderitem_entity/entityfields/unit/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.quantityUnit(), vars.get("$field.UNIT")));
diff --git a/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js b/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js
index cd1ddcfae6c72996f2d193a85255f15b11fecc0f..355f0cc560abeb3929160f3c10733bd2b3540dd6 100644
--- a/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Orderitem_entity/recordcontainers/db/onDBUpdate.js
@@ -12,6 +12,4 @@ if(oid != "")
     var vals = oiUtils.getNetAndVat();
     
     db.updateData("SALESORDER", cols, null, vals, SqlCondition.equals("SALESORDER.SALESORDERID", oid, "1 = 2"));
-    
-    neon.refresh();
 }
\ No newline at end of file
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index e53558d7fd26c880553838d26afa4a5b952ce3a4..f9ace0913133af8421cbd1462193143eec6e1b36 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Organisation_entity</name>
   <title>Company</title>
   <description>former Org</description>
@@ -23,6 +23,7 @@
     <entityField>
       <name>NAME</name>
       <title>Name</title>
+      <contentType>LONG_TEXT</contentType>
       <mandatory v="true" />
     </entityField>
     <entityField>
@@ -51,11 +52,13 @@
       <title>Status</title>
       <consumer>KeywordContactStates</consumer>
       <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/status/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>TYPE</name>
       <title>Type</title>
       <consumer>KeywordOrganisationTypes</consumer>
+      <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/type/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
       <name>Activities</name>
@@ -98,15 +101,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityField>
-      <name>IMAGE</name>
-      <contentType>IMAGE</contentType>
-      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/image/valueProcess.js</valueProcess>
-      <onValueChange>%aditoprj%/entity/Organisation_entity/entityfields/image/onValueChange.js</onValueChange>
-      <onValueChangeTypes>
-        <element>MASK</element>
-      </onValueChangeTypes>
-    </entityField>
     <entityFieldGroup>
       <name>CUSTOMERCODE_DISPLAY_fieldGroup</name>
       <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/customercode_display_fieldgroup/valueProcess.js</valueProcess>
@@ -119,36 +113,27 @@
       <name>Organisations</name>
       <fieldType>DEPENDENCY_IN</fieldType>
       <recordContainer>db</recordContainer>
-      <dependencies>
-        <entityDependency>
-          <name>e56d51be-aaf7-4ddc-8bed-7a4a3c42b4dd</name>
-          <entityName>AnyContact_entity</entityName>
-          <fieldName>Organisations</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>120c8bfb-1b03-408d-97e7-88e3b7249c53</name>
-          <entityName>SalesprojectCompetition_entity</entityName>
-          <fieldName>Organisation</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>19a28531-bec6-49e2-b00d-aae3816e6690</name>
-          <entityName>Person_entity</entityName>
-          <fieldName>Organisations</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-      </dependencies>
       <children>
         <entityParameter>
-          <name>ContactId_param</name>
+          <name>WithPrivate_param</name>
           <expose v="true" />
-          <mandatory v="true" />
         </entityParameter>
         <entityParameter>
-          <name>WithPrivat_param</name>
+          <name>ExcludeOrganisationsByPersonId</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludedContactIds_param</name>
           <expose v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>AttributeKeyId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>AttributeId_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityConsumer>
@@ -176,10 +161,11 @@
     </entityConsumer>
     <entityField>
       <name>ADDRESS_ID</name>
-      <title>standard address</title>
+      <title>Address</title>
       <consumer>Addresses</consumer>
       <searchable v="false" />
       <state>AUTO</state>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/address_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/address_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
@@ -241,18 +227,6 @@
     <entityProvider>
       <name>#PROVIDER</name>
       <dependencies>
-        <entityDependency>
-          <name>f78c0ca6-7939-4a0e-903e-0fbbbf512e76</name>
-          <entityName>Product_entity</entityName>
-          <fieldName>Organisations</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>1fa399a8-8c0c-470f-94a8-6c748293d93d</name>
-          <entityName>SalesprojectCompetition_entity</entityName>
-          <fieldName>Organisations</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
         <entityDependency>
           <name>c84fdb27-45a1-4dec-b013-af43751f6a7b</name>
           <entityName>Salesproject_entity</entityName>
@@ -260,8 +234,8 @@
           <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
-          <name>08439676-9146-427b-9bc6-8d6c6c7548d7</name>
-          <entityName>Contact_entity</entityName>
+          <name>1a472ca0-4d27-453c-8de5-a046b86f22fb</name>
+          <entityName>Object_entity</entityName>
           <fieldName>Organisations</fieldName>
           <isConsumer v="false" />
         </entityDependency>
@@ -291,13 +265,6 @@
         </entityParameter>
       </children>
     </entityConsumer>
-    <entityParameter>
-      <name>ContactId_param</name>
-      <expose v="true" />
-      <triggerRecalculation v="true" />
-      <mandatory v="false" />
-      <description>PARAMETER</description>
-    </entityParameter>
     <entityActionField>
       <name>openEditDefaultsView</name>
       <fieldType>ACTION</fieldType>
@@ -318,18 +285,19 @@
     </entityActionField>
     <entityField>
       <name>STANDARD_EMAIL_COMMUNICATION</name>
-      <title>standard email</title>
+      <title>Email</title>
       <consumer>EmailCommunications</consumer>
       <onValueChange>%aditoprj%/entity/Organisation_entity/entityfields/standard_email_communication/onValueChange.js</onValueChange>
       <onValueChangeTypes>
         <element>MASK</element>
         <element>PROCESS</element>
         <element>RECORD</element>
+        <element>PROCESS_SETVALUE</element>
       </onValueChangeTypes>
     </entityField>
     <entityField>
       <name>STANDARD_PHONE_COMMUNICATION</name>
-      <title>standard phone</title>
+      <title>Phone</title>
       <consumer>PhoneCommunications</consumer>
       <onValueChange>%aditoprj%/entity/Organisation_entity/entityfields/standard_phone_communication/onValueChange.js</onValueChange>
     </entityField>
@@ -404,6 +372,7 @@
       <children>
         <entityParameter>
           <name>ObjectRowId_param</name>
+          <title></title>
           <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess>
           <triggerRecalculation v="true" />
         </entityParameter>
@@ -568,6 +537,7 @@
       <name>Tasks</name>
       <title>Tasks</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
+      <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/tasks/stateProcess.js</stateProcess>
       <dependency>
         <name>dependency</name>
         <entityName>Task_entity</entityName>
@@ -585,14 +555,16 @@
       </children>
     </entityConsumer>
     <entityParameter>
-      <name>WithPrivat_param</name>
-      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/withprivat_param/valueProcess.js</valueProcess>
+      <name>WithPrivate_param</name>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/withprivate_param/valueProcess.js</valueProcess>
       <expose v="true" />
+      <triggerRecalculation v="true" />
+      <documentation>%aditoprj%/entity/Organisation_entity/entityfields/withprivate_param/documentation.adoc</documentation>
       <description>PARAMETER</description>
     </entityParameter>
     <entityConsumer>
       <name>ObjectTrees</name>
-      <title>Relation tree</title>
+      <title>Object relation</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
@@ -604,6 +576,10 @@
           <name>ObjectId_param</name>
           <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/objecttrees/children/objectid_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/objecttrees/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityActionField>
@@ -648,6 +624,191 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>360DegreeObjects</name>
+      <title>360 Degree</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>360Degree_entity</entityName>
+        <fieldName>OrganisationObjects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityParameter>
+      <name>ExcludeOrganisationsByPersonId</name>
+      <expose v="true" />
+      <documentation>%aditoprj%/entity/Organisation_entity/entityfields/excludeorganisationsbypersonid/documentation.adoc</documentation>
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>WithPersonIdFilter</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <documentation>%aditoprj%/entity/Organisation_entity/entityfields/withpersonidfilter/documentation.adoc</documentation>
+      <dependencies>
+        <entityDependency>
+          <name>5a456b04-f0ca-4a45-9c1f-bdfdf074434a</name>
+          <entityName>Contact_entity</entityName>
+          <fieldName>Organisations</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>a80c3db0-29db-433c-8f7c-4ebf6639ad6d</name>
+          <entityName>Person_entity</entityName>
+          <fieldName>Organisations</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>ExcludeOrganisationsByPersonId</name>
+          <title></title>
+          <expose v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>WithPrivate_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>AttributeId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>AttributeKeyId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludedContactIds_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>AttributeId_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityParameter>
+      <name>AttributeKeyId_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>WithAttribute</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>10480df2-f0b6-4cb6-8bfb-4a468b994996</name>
+          <entityName>SalesprojectCompetition_entity</entityName>
+          <fieldName>Organisations</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+        <entityDependency>
+          <name>f368be61-1a15-449f-b37c-b1343069412c</name>
+          <entityName>Product_entity</entityName>
+          <fieldName>Organisations</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>AttributeId_param</name>
+          <expose v="true" />
+          <mandatory v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>AttributeKeyId_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludeOrganisationsByPersonId</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>WithPrivate_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludedContactIds_param</name>
+          <expose v="true" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>ExcludedContactIds_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityConsumer>
+      <name>AttributeTree</name>
+      <title>Attribute Tree</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelationTree_entity</entityName>
+        <fieldName>TreeProvider</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>DATE_NEW</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW_CONTACT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/user_new_contact/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW_CONTACT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/date_new_contact/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>PICTURE</name>
+      <title>Picture</title>
+      <contentType>IMAGE</contentType>
+      <searchable v="false" />
+      <displayValueProcess>%aditoprj%/entity/Organisation_entity/entityfields/picture/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityParameter>
+      <name>AvatarText_param</name>
+      <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/avatartext_param/valueProcess.js</valueProcess>
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -655,22 +816,30 @@
       <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBUpdate>%aditoprj%/entity/Organisation_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <linkInformation>
         <linkInformation>
-          <name>47c6c065-ae0e-4cee-b913-335570e3221c</name>
+          <name>f745a13c-6fbe-4cab-99d8-3cb7d599005a</name>
           <tableName>ORGANISATION</tableName>
           <primaryKey>ORGANISATIONID</primaryKey>
           <isUIDTable v="true" />
           <readonly v="false" />
         </linkInformation>
         <linkInformation>
-          <name>e6120ee7-e6c3-4f60-9327-417627ba1fac</name>
+          <name>31f03bd6-83c1-4185-a9a7-4e6d94469fd2</name>
           <tableName>CONTACT</tableName>
           <primaryKey>CONTACTID</primaryKey>
           <isUIDTable v="false" />
           <readonly v="false" />
         </linkInformation>
+        <linkInformation>
+          <name>695731e1-879d-4fb1-a1bb-56ecfd6f7c03</name>
+          <tableName>ADDRESS</tableName>
+          <primaryKey>ADDRESSID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
       </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
@@ -735,6 +904,38 @@
           <name>LANGUAGE.displayValue</name>
           <expression>%aditoprj%/entity/Organisation_entity/recordcontainers/db/recordfieldmappings/language.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>ORGANISATION.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>ORGANISATION.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>ORGANISATION.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>ORGANISATION.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW_CONTACT.value</name>
+          <recordfield>CONTACT.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW_CONTACT.value</name>
+          <recordfield>CONTACT.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ADDRESS_ID.displayValue</name>
+          <expression>%aditoprj%/entity/Organisation_entity/recordcontainers/db/recordfieldmappings/address_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <recordfield>ORGANISATION.PICTURE</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Organisation_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js b/entity/Organisation_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c52b656d2fdd6ac1d409ce40987c4e9149f0b883
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.getString("$field.ORGANISATIONID"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js b/entity/Organisation_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..957f645b377f903d61ab5ecab7a1a48ee34d0eab
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+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/attributetree/children/objecttype_param/valueProcess.js b/entity/Organisation_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..431bcc952145cb451362fc69754f84ff1514bac5
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
diff --git a/entity/Organisation_entity/entityfields/avatartext_param/valueProcess.js b/entity/Organisation_entity/entityfields/avatartext_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c88b7ab04f19f1ebdbb7cfbd189709d3fcd9cbfe
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/avatartext_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string("TEXT:" + vars.getString("$field.NAME"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/date_edit/valueProcess.js b/entity/Organisation_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5e6ef059738e0c724a468685333a5e257ac228ce
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/date_new/valueProcess.js b/entity/Organisation_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a72892783bf2bd04fe353c47f1be0cb570bbb323
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/date_new_contact/valueProcess.js b/entity/Organisation_entity/entityfields/date_new_contact/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a273b1ea4c3da4d2f55bf412c7b891d3161e0f11
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/date_new_contact/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/excludeorganisationsbypersonid/documentation.adoc b/entity/Organisation_entity/entityfields/excludeorganisationsbypersonid/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..df350126c674f699847049d6e70d2147c0e61432
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/excludeorganisationsbypersonid/documentation.adoc
@@ -0,0 +1,2 @@
+A param used to filter Organisations where a specific PersonId does already exist as contact-entry.
+In other words: The list of orgs is reduced by those where a Contact-entry does exist for the given Personid
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/image/valueProcess.js b/entity/Organisation_entity/entityfields/image/valueProcess.js
deleted file mode 100644
index ff2e70283d1cbaf1fb96d168a926ea7aec635d2a..0000000000000000000000000000000000000000
--- a/entity/Organisation_entity/entityfields/image/valueProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-import("Organisation_lib");
-
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW)
-{   
-    result.string(OrgUtils.getImage(vars.get("$field.ORGANISATIONID"), vars.getString("$field.NAME")));
-}
diff --git a/entity/Organisation_entity/entityfields/newappointment/onActionProcess.js b/entity/Organisation_entity/entityfields/newappointment/onActionProcess.js
index d5e0f5adb9322430a6bceaab1acc90c5634fdd54..475936e13803b10cfb274cf925f189ffbc54049c 100644
--- a/entity/Organisation_entity/entityfields/newappointment/onActionProcess.js
+++ b/entity/Organisation_entity/entityfields/newappointment/onActionProcess.js
@@ -1,10 +1,14 @@
-import("system.neon");
-import("system.calendars");
-import("Calendar_lib");
-import("system.date");
-
-
-var params = {};
-params["Entry_param"] = CalendarUtil.createEntry(calendars.VEVENT, "neue Termin weissu", "", false);
-
-neon.openContext("Appointment", "AppointmentEdit_view", null, neon.OPERATINGSTATE_NEW, params);
\ No newline at end of file
+import("system.vars");
+import("system.logging");
+import("system.neon");
+import("system.calendars");
+import("Calendar_lib");
+import("system.date");
+import("Context_lib");
+
+
+var params = {};
+params["Entry_param"] = JSON.stringify(CalendarUtil.createEntry(calendars.VEVENT, "neue Termin weissu", "", false, ContextUtils.getCurrentContextId(), vars.get("$field.ORGANISATIONID")));
+
+neon.openContext("Appointment", "AppointmentEdit_view", null, neon.OPERATINGSTATE_NEW, params);
+
diff --git a/entity/Organisation_entity/entityfields/objecttrees/children/objecttype_param/valueProcess.js b/entity/Organisation_entity/entityfields/objecttrees/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..008915f61deac19ccdd40fff81701de63eb3b6a2
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/objecttrees/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/picture/displayValueProcess.js b/entity/Organisation_entity/entityfields/picture/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a8bad702a846e9273db756ed1bb6c1c4781591dd
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/picture/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW && !vars.get("$this.value"))
+    result.string(vars.get("$param.AvatarText_param"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/status/displayValueProcess.js b/entity/Organisation_entity/entityfields/status/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..cc03068b7cc2ee7e27814c0ee7969882d15c3a3b
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/status/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), vars.get("$field.STATUS")));
diff --git a/entity/Organisation_entity/entityfields/tasks/stateProcess.js b/entity/Organisation_entity/entityfields/tasks/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..2d6a0eb24444a21440ea2433c6acd0e252c6e68d
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/tasks/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
+
+if(TaskUtils.hasTasks(vars.get("$field.ORGANISATIONID"), ContextUtils.getCurrentContextId()))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/type/displayValueProcess.js b/entity/Organisation_entity/entityfields/type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..06795c5d7051cadf68aac11ed47a65873f7fb2e0
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/type/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.organisationType(), vars.get("$field.TYPE")));
diff --git a/entity/Organisation_entity/entityfields/user_edit/valueProcess.js b/entity/Organisation_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6af880ae3e0e2b89b4eee8327ed49f1eefe458af
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/user_new/valueProcess.js b/entity/Organisation_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e518bc75a9494e53a83613dedd943106e74fc00a
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/user_new_contact/valueProcess.js b/entity/Organisation_entity/entityfields/user_new_contact/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b619fead9d96f7bdbe4489e5e7e0e35256df5b01
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/user_new_contact/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/withpersonidfilter/documentation.adoc b/entity/Organisation_entity/entityfields/withpersonidfilter/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..417ca5b40f81dfc38a15d5f7c48274d962d942c1
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/withpersonidfilter/documentation.adoc
@@ -0,0 +1,2 @@
+Provides Organisations where a filter is applied:
+The list of Organisations is reduced by those where a Contact-entry does exist for a given PersonId.
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/withprivate_param/documentation.adoc b/entity/Organisation_entity/entityfields/withprivate_param/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..6465a654b7694320706cbe5bd8aa25e300133642
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/withprivate_param/documentation.adoc
@@ -0,0 +1,9 @@
+Param that describes if the "private"-dummy-Organisation shall be returned or not.
+Possible values are:
+
+- `true`
+- `false`
+
+The Default value is `false`.
+
+If the value `true` is passed the "private"-dummy-Organisation will be returned. Otherwise the "private"-dummy-Organisation is filtered.
\ No newline at end of file
diff --git a/entity/Organisation_entity/entityfields/withprivate_param/valueProcess.js b/entity/Organisation_entity/entityfields/withprivate_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e0f3ec47e2b963a577204e41d9847dd6ad0725a8
--- /dev/null
+++ b/entity/Organisation_entity/entityfields/withprivate_param/valueProcess.js
@@ -0,0 +1,3 @@
+import("system.result");
+
+result.string(false);
\ No newline at end of file
diff --git a/entity/Organisation_entity/imageProcess.js b/entity/Organisation_entity/imageProcess.js
index c88b7ab04f19f1ebdbb7cfbd189709d3fcd9cbfe..ab4d712d459a7ea65b253daa74163d11a1b20099 100644
--- a/entity/Organisation_entity/imageProcess.js
+++ b/entity/Organisation_entity/imageProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string("TEXT:" + vars.getString("$field.NAME"));
\ No newline at end of file
+result.string(vars.get("$param.AvatarText_param"));
\ No newline at end of file
diff --git a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js
index 25ab666e572a474990f9bd87fdbe92ab8aabac6a..8743459e608d7cb1e9195871a64eb5d0868d4ea2 100644
--- a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js
@@ -2,13 +2,42 @@ import("system.vars");
 import("system.db");
 import("system.result");
 import("Sql_lib");
+import("Context_lib");
 
-var cond = SqlCondition.begin()
-                            .andPrepareVars("ORGANISATION.ORGANISATIONID", "$param.ContactId_param");
+var cond = SqlCondition.begin();
                             
 // filter privat company if it is not needed
-if (!vars.exists("$param.WithPrivat_param") || vars.get("$param.WithPrivat_param") != "1")
+if (vars.getString("$param.WithPrivate_param") != "true")
     cond.andPrepare("ORGANISATION.ORGANISATIONID", "0", "# <> ?");
 
+var excludeOrgsWithPersonId = vars.get("$param.ExcludeOrganisationsByPersonId")
+if (excludeOrgsWithPersonId)
+    cond.andAttachPrepared(SqlCondition.begin()
+                                       .andPrepare("CONTACT.PERSON_ID", excludeOrgsWithPersonId)
+                                       .buildSql("ORGANISATION.ORGANISATIONID not in (select CONTACT.ORGANISATION_ID from CONTACT", null, ")"));
+
+if (vars.exists("$param.AttributeId_param") && vars.get("$param.AttributeId_param"))
+{
+    var hasAttributeCondition = SqlCondition.begin()
+                                            .andPrepare("AB_ATTRIBUTERELATION.OBJECT_TYPE", ContextUtils.getCurrentContextId())
+                                            .andPrepare("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", vars.get("$param.AttributeId_param"))
+                                            .andPrepareVars("AB_ATTRIBUTERELATION.ID_VALUE", "$param.AttributeKeyId_param");
+                                            
+    cond.andAttachPrepared(hasAttributeCondition.buildSql("ORGANISATION.ORGANISATIONID in (select OBJECT_ROWID from AB_ATTRIBUTERELATION", "1=2", ")"));
+}
+
+if (vars.exists("$param.ExcludedContactIds_param") && vars.get("$param.ExcludedContactIds_param"))
+{
+    var excludedContacts = JSON.parse(vars.get("$param.ExcludedContactIds_param"));
+    var excludedCond = SqlCondition.begin();
+    
+    excludedContacts.forEach(function(pContactId)
+    {
+        excludedCond.andPrepare("CONTACT.CONTACTID", pContactId, "#<>?");
+    });
+    
+    cond.andSqlCondition(excludedCond, "1=1");
+}
+
 //TODO: use a preparedCondition when available #1030812 #1034026
 result.string(db.translateCondition(cond.build("1 = 1")));
\ No newline at end of file
diff --git a/entity/Organisation_entity/recordcontainers/db/fromClauseProcess.js b/entity/Organisation_entity/recordcontainers/db/fromClauseProcess.js
index fd4f9ce328d42a3ef11efbd7b6454d99d6b3f30c..81779a42ee9e845df049275fd8bdf352063e1d4a 100644
--- a/entity/Organisation_entity/recordcontainers/db/fromClauseProcess.js
+++ b/entity/Organisation_entity/recordcontainers/db/fromClauseProcess.js
@@ -1,3 +1,6 @@
 import("system.result");
 
-result.string("ORGANISATION join CONTACT on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null)");
\ No newline at end of file
+//ADDRESS is necessary to display standard address fast within organisation lists
+result.string("ORGANISATION \n\
+    join CONTACT on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null)\n\
+    left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)");
\ No newline at end of file
diff --git a/entity/Organisation_entity/recordcontainers/db/onDBUpdate.js b/entity/Organisation_entity/recordcontainers/db/onDBUpdate.js
index d9103a1d8933ef575c9acbed85610134045afbf8..b2c37a2cc9c1428bba4d856394a6bc48df8ddcd3 100644
--- a/entity/Organisation_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Organisation_entity/recordcontainers/db/onDBUpdate.js
@@ -3,15 +3,7 @@ import("Organisation_lib");
 import("Communication_lib");
 import("Entity_lib");
 
-// TODO: this is a workaround for missing possibility to react on changes of fields not connected to record Container #1030023
-FieldChanges.assimilateChangeAndDispose("$field.IMAGE", function(state, value){
-    if (state == FieldChanges.STATE_CHANGED())
-        OrgUtils.setImage(vars.get("$field.ORGANISATIONID"), value);
-    else
-        OrgUtils.removeImage(vars.get("$field.ORGANISATIONID"));
-});
-
-
+// TODO: this is a workaround for missing possibility to react on changes of fields not connected to record Contqainer #1030023
 var uid = vars.get("$sys.uid");
 FieldChanges.assimilateChangeAndDispose("$field.STANDARD_EMAIL_COMMUNICATION", function(state, value){
     CommUtil.setStandardMail(uid, value);
diff --git a/entity/Organisation_entity/recordcontainers/db/orderClauseProcess.js b/entity/Organisation_entity/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e5e1db97f786170e23f3951f9bf75bcd0f5cadd
--- /dev/null
+++ b/entity/Organisation_entity/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.db");
+
+result.object({
+    "ORGANISATION.CUSTOMERCODE": db.ASCENDING,
+    "ORGANISATION.NAME": db.ASCENDING
+    });
\ No newline at end of file
diff --git a/entity/Organisation_entity/recordcontainers/db/recordfieldmappings/address_id.displayvalue/expression.js b/entity/Organisation_entity/recordcontainers/db/recordfieldmappings/address_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..beac43f3d912a8f81208580f156bb766178124f7
--- /dev/null
+++ b/entity/Organisation_entity/recordcontainers/db/recordfieldmappings/address_id.displayvalue/expression.js
@@ -0,0 +1,5 @@
+import("PostalAddress_lib");
+import("system.result");
+
+var res = AddressUtils.formatOnelineSql();
+result.string(res);
\ No newline at end of file
diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod
index 8f574ea4f33b2e47193ccaf160b042518b7c9d00..6c04af722c7a2cd93a5cf75eac2afe3b735742b8 100644
--- a/entity/Person_entity/Person_entity.aod
+++ b/entity/Person_entity/Person_entity.aod
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Person_entity</name>
   <title>Contact</title>
   <description>former Pers</description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Person_entity/documentation.adoc</documentation>
+  <onValidation>%aditoprj%/entity/Person_entity/onValidation.js</onValidation>
   <iconId>VAADIN:USERS</iconId>
   <imageProcess>%aditoprj%/entity/Person_entity/imageProcess.js</imageProcess>
   <titleProcess>%aditoprj%/entity/Person_entity/titleProcess.js</titleProcess>
@@ -16,6 +17,7 @@
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
+      <onValidation>%aditoprj%/entity/Person_entity/entityfields/dateofbirth/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>FIRSTNAME</name>
@@ -30,6 +32,7 @@
       <onValueChangeTypes>
         <element>MASK</element>
         <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
       </onValueChangeTypes>
     </entityField>
     <entityField>
@@ -70,15 +73,6 @@
       <mandatory v="false" />
       <description>PARAMETER</description>
     </entityParameter>
-    <entityField>
-      <name>IMAGE</name>
-      <contentType>IMAGE</contentType>
-      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/image/valueProcess.js</valueProcess>
-      <onValueChange>%aditoprj%/entity/Person_entity/entityfields/image/onValueChange.js</onValueChange>
-      <onValueChangeTypes>
-        <element>MASK</element>
-      </onValueChangeTypes>
-    </entityField>
     <entityFieldGroup>
       <name>NAME_fieldGroup</name>
       <valueProcess>%aditoprj%/entity/Person_entity/entityfields/name_fieldgroup/valueProcess.js</valueProcess>
@@ -106,6 +100,10 @@
           <name>ObjectId_param</name>
           <valueProcess>%aditoprj%/entity/Person_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>PresetLinks_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityField>
@@ -150,7 +148,7 @@
       <searchable v="true" />
       <valueProcess>%aditoprj%/entity/Person_entity/entityfields/organisation_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/organisation_id/displayValueProcess.js</displayValueProcess>
-      <onValueChange>%aditoprj%/entity/Person_entity/entityfields/organisation_id/onValueChange.js</onValueChange>
+      <onValidation>%aditoprj%/entity/Person_entity/entityfields/organisation_id/onValidation.js</onValidation>
     </entityField>
     <entityConsumer>
       <name>PersAddresses</name>
@@ -202,12 +200,15 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <dependency>
         <name>dependency</name>
         <entityName>Organisation_entity</entityName>
-        <fieldName>Organisations</fieldName>
+        <fieldName>WithPersonIdFilter</fieldName>
       </dependency>
       <children>
         <entityParameter>
-          <name>WithPrivat_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/organisations/children/withprivat_param/valueProcess.js</valueProcess>
+          <name>WithPrivate_param</name>
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludeOrganisationsByPersonId</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js</valueProcess>
         </entityParameter>
       </children>
     </entityConsumer>
@@ -276,21 +277,9 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
-          <name>b72f99e9-0c8d-4b54-863b-b47eafbb0189</name>
-          <entityName>SalesprojectMember_entity</entityName>
-          <fieldName>Contacts</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>f5b4d286-9f5e-4b13-8dca-d9b04186f6ca</name>
-          <entityName>Timetracking_entity</entityName>
-          <fieldName>Contacts</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
-        <entityDependency>
-          <name>ffdbb464-fa37-4bb7-a66d-d9e0d3a9bc56</name>
-          <entityName>Activity_entity</entityName>
-          <fieldName>Contacts</fieldName>
+          <name>ec66d6b0-a1fa-40a1-9612-34775d3e89a9</name>
+          <entityName>Object_entity</entityName>
+          <fieldName>Persons</fieldName>
           <isConsumer v="false" />
         </entityDependency>
       </dependencies>
@@ -301,6 +290,7 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <consumer>Languages</consumer>
       <mandatory v="true" />
       <valueProcess>%aditoprj%/entity/Person_entity/entityfields/language/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/language/displayValueProcess.js</displayValueProcess>
       <onValueChange>%aditoprj%/entity/Person_entity/entityfields/language/onValueChange.js</onValueChange>
       <onValueChangeTypes>
         <element>MASK</element>
@@ -355,12 +345,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <fieldType>DEPENDENCY_IN</fieldType>
       <recordContainer>db</recordContainer>
       <dependencies>
-        <entityDependency>
-          <name>0b209ee1-3c13-4660-91c4-4d2a2c6cea77</name>
-          <entityName>AnyContact_entity</entityName>
-          <fieldName>Contact</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
         <entityDependency>
           <name>12c5350a-3159-449b-a94e-d57658b4c124</name>
           <entityName>SalesprojectMember_entity</entityName>
@@ -378,6 +362,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <expose v="true" />
           <mandatory v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>ExcludedContactIds_param</name>
+          <expose v="false" />
+        </entityParameter>
       </children>
     </entityProvider>
     <entityConsumer>
@@ -398,6 +386,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <expose v="false" />
           <triggerRecalculation v="true" />
         </entityParameter>
+        <entityParameter>
+          <name>DefaultAddressId_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/orgaddresses/children/defaultaddressid_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityField>
@@ -477,9 +469,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
     </entityConsumer>
     <entityField>
       <name>ADDRESS_ID</name>
-      <title>standard address</title>
+      <title>Address</title>
       <consumer>ContactAndOrganisationAddresses</consumer>
       <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/address_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/address_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityActionField>
@@ -621,6 +614,7 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <name>Tasks</name>
       <title>Tasks</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
+      <stateProcess>%aditoprj%/entity/Person_entity/entityfields/tasks/stateProcess.js</stateProcess>
       <dependency>
         <name>dependency</name>
         <entityName>Task_entity</entityName>
@@ -635,11 +629,15 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <name>ObjectId_param</name>
           <valueProcess>%aditoprj%/entity/Person_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>PresetLinks_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityConsumer>
       <name>ObjectTrees</name>
-      <title>Relation tree</title>
+      <title>Object relation</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
@@ -651,6 +649,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <name>ObjectId_param</name>
           <valueProcess>%aditoprj%/entity/Person_entity/entityfields/objecttrees/children/objectid_param/valueProcess.js</valueProcess>
         </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/objecttrees/children/objecttype_param/valueProcess.js</valueProcess>
+        </entityParameter>
       </children>
     </entityConsumer>
     <entityField>
@@ -688,30 +690,25 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <name>ContactId_param</name>
           <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contactandorganisationaddresses/children/contactid_param/valueProcess.js</valueProcess>
         </entityParameter>
-        <entityParameter>
-          <name>OrganisationId_param</name>
-          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contactandorganisationaddresses/children/organisationid_param/valueProcess.js</valueProcess>
-        </entityParameter>
       </children>
     </entityConsumer>
-    <entityActionField>
-      <name>newContact</name>
-      <fieldType>ACTION</fieldType>
-      <title>New contact</title>
-      <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/newcontact/onActionProcess.js</onActionProcess>
-      <iconId>VAADIN:USERS</iconId>
-    </entityActionField>
     <entityField>
       <name>DEPARTMENT</name>
       <title>Department</title>
+      <possibleItemsProcess>%aditoprj%/entity/Person_entity/entityfields/department/possibleItemsProcess.js</possibleItemsProcess>
+      <newItemsAllowed v="true" />
     </entityField>
     <entityField>
       <name>POSITION</name>
       <title>Position</title>
+      <possibleItemsProcess>%aditoprj%/entity/Person_entity/entityfields/position/possibleItemsProcess.js</possibleItemsProcess>
+      <newItemsAllowed v="true" />
     </entityField>
     <entityField>
       <name>CONTACTROLE</name>
       <title>Contactrole</title>
+      <possibleItemsProcess>%aditoprj%/entity/Person_entity/entityfields/contactrole/possibleItemsProcess.js</possibleItemsProcess>
+      <newItemsAllowed v="true" />
     </entityField>
     <entityConsumer>
       <name>LogHistoryConsumer</name>
@@ -747,6 +744,147 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>OtherContacts</name>
+      <title>Other Contactroles</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Contact_entity</entityName>
+        <fieldName>PersonsContactsExceptOwn</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>OwnContactId_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/othercontacts/children/owncontactid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>LanguageKey_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>ORGANISATION_NAME</name>
+      <searchable v="false" />
+    </entityField>
+    <entityParameter>
+      <name>ExcludedContactIds_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityProvider>
+      <name>Contacts</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>75f0e309-8b3f-4224-b599-a203405f1bff</name>
+          <entityName>SalesprojectMember_entity</entityName>
+          <fieldName>Contacts</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>ContactId_param</name>
+          <expose v="false" />
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludedContactIds_param</name>
+          <expose v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>OrgId_param</name>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityConsumer>
+      <name>360DegreeObjects</name>
+      <title>360 Degree</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>360Degree_entity</entityName>
+        <fieldName>PersonObjects</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityConsumer>
+      <name>AttributeTree</name>
+      <title>Attribute Tree</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelationTree_entity</entityName>
+        <fieldName>TreeProvider</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>DATE_NEW</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW_CONTACT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/date_new_contact/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_NEW_CONTACT</name>
+      <searchable v="false" />
+      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/user_new_contact/valueProcess.js</valueProcess>
+    </entityField>
+    <entityParameter>
+      <name>AdditionalActivityTaskLinks_param</name>
+      <title></title>
+      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/additionalactivitytasklinks_param/valueProcess.js</valueProcess>
+      <description>PARAMETER</description>
+    </entityParameter>
+    <entityField>
+      <name>PICTURE</name>
+      <title>Picture</title>
+      <contentType>IMAGE</contentType>
+      <searchable v="false" />
+      <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/picture/displayValueProcess.js</displayValueProcess>
+    </entityField>
+    <entityParameter>
+      <name>AvatarText_param</name>
+      <valueProcess>%aditoprj%/entity/Person_entity/entityfields/avatartext_param/valueProcess.js</valueProcess>
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -754,29 +892,37 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
       <alias>Data_alias</alias>
       <fromClauseProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
       <conditionProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
+      <orderClauseProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
       <onDBUpdate>%aditoprj%/entity/Person_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <linkInformation>
         <linkInformation>
-          <name>cb2de42b-de48-4543-91d6-8d00af5c5736</name>
+          <name>3afdecb0-515e-43d2-872f-04c82ecca9ae</name>
           <tableName>PERSON</tableName>
           <primaryKey>PERSONID</primaryKey>
           <isUIDTable v="false" />
           <readonly v="false" />
         </linkInformation>
         <linkInformation>
-          <name>23fde8db-a3fe-421d-9e39-f6a0294e6883</name>
+          <name>217d431f-018c-4573-b786-d1b6b88f4b64</name>
           <tableName>CONTACT</tableName>
           <primaryKey>CONTACTID</primaryKey>
           <isUIDTable v="true" />
           <readonly v="false" />
         </linkInformation>
         <linkInformation>
-          <name>6766787e-d39b-4030-bd26-cacfcd80d386</name>
+          <name>19877118-eb80-4672-bd73-cf10dbbb052a</name>
           <tableName>ORGANISATION</tableName>
           <primaryKey>ORGANISATIONID</primaryKey>
           <isUIDTable v="false" />
           <readonly v="true" />
         </linkInformation>
+        <linkInformation>
+          <name>64f188c2-e53d-44b5-9980-c867282eff7e</name>
+          <tableName>ADDRESS</tableName>
+          <primaryKey>ADDRESSID</primaryKey>
+          <isUIDTable v="false" />
+          <readonly v="true" />
+        </linkInformation>
       </linkInformation>
       <recordFieldMappings>
         <dbRecordFieldMapping>
@@ -837,12 +983,10 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>STANDARD_EMAIL_COMMUNICATION.displayValue</name>
-          <recordfield></recordfield>
           <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/standard_email_communication.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>STANDARD_PHONE_COMMUNICATION.displayValue</name>
-          <recordfield></recordfield>
           <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/standard_phone_communication.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
@@ -875,7 +1019,7 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>POSITION.value</name>
-          <recordfield>CONTACT.POSTITION</recordfield>
+          <recordfield>CONTACT.POSITION</recordfield>
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>DEPARTMENT.value</name>
@@ -885,6 +1029,42 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
           <name>CONTACTROLE.value</name>
           <recordfield>CONTACT.CONTACTROLE</recordfield>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ORGANISATION_NAME.value</name>
+          <recordfield>ORGANISATION.NAME</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>PERSON.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>PERSON.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>PERSON.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>PERSON.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW_CONTACT.value</name>
+          <recordfield>CONTACT.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW_CONTACT.value</name>
+          <recordfield>CONTACT.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>ADDRESS_ID.displayValue</name>
+          <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/address_id.displayvalue/expression.js</expression>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>PICTURE.value</name>
+          <recordfield>PERSON.PICTURE</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Person_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js b/entity/Person_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0d3ba06fe9f697de38300dbff362f6e56d14b0ad
--- /dev/null
+++ b/entity/Person_entity/entityfields/360degreeobjects/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.getString("$field.CONTACTID"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/activities/children/presetlinks_param/valueProcess.js b/entity/Person_entity/entityfields/activities/children/presetlinks_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f790fd2b65dea6cff3d35ba885903d8f20bcf06b
--- /dev/null
+++ b/entity/Person_entity/entityfields/activities/children/presetlinks_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+var links = vars.get("$param.AdditionalActivityTaskLinks_param");
+result.string(links);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/additionalactivitytasklinks_param/valueProcess.js b/entity/Person_entity/entityfields/additionalactivitytasklinks_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6837f0bb734737098946439ce2a25413d5550e31
--- /dev/null
+++ b/entity/Person_entity/entityfields/additionalactivitytasklinks_param/valueProcess.js
@@ -0,0 +1,12 @@
+import("system.result");
+import("system.vars");
+import("system.vars");
+
+var links = [];
+
+var orgId = vars.get("$field.ORGANISATION_ID")
+if (orgId && orgId.trim() != "0")
+    links.push(["Organisation", vars.get("$field.ORGANISATION_ID")]);
+
+links = JSON.stringify(links);
+result.string(links);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/address_id/valueProcess.js b/entity/Person_entity/entityfields/address_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..72dfe18cc06b3c7b652af1305f4498c40fc101ae
--- /dev/null
+++ b/entity/Person_entity/entityfields/address_id/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.logging");
+import("system.result");
+import("system.vars");
+import("StandardObject_lib");
+//  Check if the standard address is already set.
+if (vars.get("$field.ADDRESS_ID") === null || vars.get("$field.ADDRESS_ID") === "" || vars.get("$field.ADDRESS_ID") == 0) {
+    var possibleStandardAddressID = new StandardObject("Address", null, "Person", vars.get("$field.PERSONID"))
+        .onPersonValueChange(vars.get("$field.ORGANISATION_ID"));
+
+    // If a possible standard addrss was found it should get applied to the field.
+    if (possibleStandardAddressID !== null)
+        result.string(possibleStandardAddressID);
+}
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js b/entity/Person_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..07081dc34f62162ad93f6b7b28f0caeb67dc283e
--- /dev/null
+++ b/entity/Person_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.PERSONID"));
diff --git a/entity/Person_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js b/entity/Person_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..431bcc952145cb451362fc69754f84ff1514bac5
--- /dev/null
+++ b/entity/Person_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
diff --git a/entity/Person_entity/entityfields/avatartext_param/valueProcess.js b/entity/Person_entity/entityfields/avatartext_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..07ab8d8c0fdef46bed683cebdd399fa91084d0bb
--- /dev/null
+++ b/entity/Person_entity/entityfields/avatartext_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string("TEXT:" + (vars.getString("$field.FIRSTNAME") + " " + vars.getString("$field.LASTNAME") + " " + vars.getString("$field.ORGANISATION_ID.displayValue")).trim());
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/contactandorganisationaddresses/children/organisationid_param/valueProcess.js b/entity/Person_entity/entityfields/contactandorganisationaddresses/children/organisationid_param/valueProcess.js
deleted file mode 100644
index a3b647281edc9773de45eec7b7d8afe949f3eba2..0000000000000000000000000000000000000000
--- a/entity/Person_entity/entityfields/contactandorganisationaddresses/children/organisationid_param/valueProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.result");
-
-result.string(vars.get("$field.ORGANISATION_ID"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/contactrole/possibleItemsProcess.js b/entity/Person_entity/entityfields/contactrole/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..96627ddf00215d0598ae85d2452acfd248cbe52a
--- /dev/null
+++ b/entity/Person_entity/entityfields/contactrole/possibleItemsProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactContactrole()).map(function (e){
+    return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers
+});
+
+result.object(res);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/date_edit/valueProcess.js b/entity/Person_entity/entityfields/date_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..5e6ef059738e0c724a468685333a5e257ac228ce
--- /dev/null
+++ b/entity/Person_entity/entityfields/date_edit/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/date_new/valueProcess.js b/entity/Person_entity/entityfields/date_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a72892783bf2bd04fe353c47f1be0cb570bbb323
--- /dev/null
+++ b/entity/Person_entity/entityfields/date_new/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/date_new_contact/valueProcess.js b/entity/Person_entity/entityfields/date_new_contact/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8ee28e84edb9930de54975f81e8cb5a13c9aa02f
--- /dev/null
+++ b/entity/Person_entity/entityfields/date_new_contact/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/dateofbirth/onValidation.js b/entity/Person_entity/entityfields/dateofbirth/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..9da0a7497bd26a10627d66a89a67f3b863cde608
--- /dev/null
+++ b/entity/Person_entity/entityfields/dateofbirth/onValidation.js
@@ -0,0 +1,9 @@
+import("system.datetime");
+import("system.translate");
+import("system.vars");
+import("system.result");
+import("Entity_lib");
+
+var dob = ProcessHandlingUtils.getOnValidationValue();
+if (Number(datetime.clearTime(dob)) > Number(vars.get("$sys.today")))
+    result.string(translate.text("date of birth must not be in the future"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/department/possibleItemsProcess.js b/entity/Person_entity/entityfields/department/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..77d99fa219eb36618f38dbb344e4a345bb71d331
--- /dev/null
+++ b/entity/Person_entity/entityfields/department/possibleItemsProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactDepartment()).map(function (e){
+    return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers
+});
+
+result.object(res);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/full_name_fieldgroup/valueProcess.js b/entity/Person_entity/entityfields/full_name_fieldgroup/valueProcess.js
index b3a098ff143cffbd6bd95e276a5b5c0ba689d3d7..778c203ff13f6bc2955db27cc8c7ec6544de380d 100644
--- a/entity/Person_entity/entityfields/full_name_fieldgroup/valueProcess.js
+++ b/entity/Person_entity/entityfields/full_name_fieldgroup/valueProcess.js
@@ -3,6 +3,7 @@ import("system.result");
 import("Util_lib");
 import("Contact_lib");
 
+//no orgname here since the org-field is in the card-template as separate field
 var contact = new Contact();
 contact.salutation = vars.get("$field.SALUTATION");
 contact.title = vars.get("$field.TITLE");
diff --git a/entity/Person_entity/entityfields/image/onValueChange.js b/entity/Person_entity/entityfields/image/onValueChange.js
deleted file mode 100644
index 86a4f85653ae6eb9a622f17318dd0e4782e75ee3..0000000000000000000000000000000000000000
--- a/entity/Person_entity/entityfields/image/onValueChange.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("Entity_lib");
-
-// TODO: also there is currently no good way to do updates with fields not connected to the record container. Workaround: imagevariable and update in onDBUpdate Process #1030023
-FieldChanges.setChange("$field.IMAGE");
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/image/valueProcess.js b/entity/Person_entity/entityfields/image/valueProcess.js
deleted file mode 100644
index 2a70e90ebf7a93f7f0e9f2a1dcca3de0f9695080..0000000000000000000000000000000000000000
--- a/entity/Person_entity/entityfields/image/valueProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.result");
-import("system.neon");
-import("system.vars");
-import("Person_lib");
-
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW)
-{   
-    result.string(PersUtils.getImage(vars.get("$field.PERSONID"), (vars.getString("$field.FIRSTNAME") + " " + vars.getString("$field.LASTNAME")).trim()));
-}
diff --git a/entity/Person_entity/entityfields/language/displayValueProcess.js b/entity/Person_entity/entityfields/language/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dae44e029af40ecdf3c360a4e80a24d6a5f74540
--- /dev/null
+++ b/entity/Person_entity/entityfields/language/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+
+var key = vars.get("$field.LANGUAGE");
+if (key)
+{
+    var res = LanguageKeywordUtils.getViewValue(key);
+    result.string(res);
+}
diff --git a/entity/Person_entity/entityfields/language/valueProcess.js b/entity/Person_entity/entityfields/language/valueProcess.js
index 6793351846181a86f6fbd2b1d5afd1a35e3eea79..1af70be4c971c334dbd2b777f26c3f051bd02aa4 100644
--- a/entity/Person_entity/entityfields/language/valueProcess.js
+++ b/entity/Person_entity/entityfields/language/valueProcess.js
@@ -3,5 +3,5 @@ import("system.vars");
 import("system.db");
 import("system.result");
 
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$field.LANGUAGE") == "")
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$field.LANGUAGE") == "")
     result.string("deu");
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/newactivity/onActionProcess.js b/entity/Person_entity/entityfields/newactivity/onActionProcess.js
index 34520c7f111b140873dcd9eae1fea8518e4d7a15..e7d148841fe65c68800d7f56e342e4007490269c 100644
--- a/entity/Person_entity/entityfields/newactivity/onActionProcess.js
+++ b/entity/Person_entity/entityfields/newactivity/onActionProcess.js
@@ -1,4 +1,6 @@
 import("system.vars");
 import("ActivityTask_lib");
 
-ActivityUtils.createNewActivity(vars.getString("$field.CONTACTID"));
\ No newline at end of file
+var links = vars.get("$param.AdditionalActivityTaskLinks_param");
+links = JSON.parse(links);
+ActivityUtils.createNewActivity(vars.getString("$field.CONTACTID"), links);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/newcontact/onActionProcess.js b/entity/Person_entity/entityfields/newcontact/onActionProcess.js
deleted file mode 100644
index 98a6f340f6161c31afe248044b504abb8fd2b78f..0000000000000000000000000000000000000000
--- a/entity/Person_entity/entityfields/newcontact/onActionProcess.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import("system.vars");
-import("system.neon");
-
-neon.openContext("Contact", null, null, neon.OPERATINGSTATE_NEW, {PersonId_param: vars.get("$field.PERSON_ID")});
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/newtask/onActionProcess.js b/entity/Person_entity/entityfields/newtask/onActionProcess.js
index 71580d10a1d08a8fd30d67bbdf574762683be17c..6293b7faa23bbe45811120d70f296937727febd6 100644
--- a/entity/Person_entity/entityfields/newtask/onActionProcess.js
+++ b/entity/Person_entity/entityfields/newtask/onActionProcess.js
@@ -1,4 +1,7 @@
 import("system.vars");
 import("ActivityTask_lib");
 
-TaskUtils.createNewTask(vars.get("$field.CONTACTID"));
\ No newline at end of file
+var links = vars.get("$param.AdditionalActivityTaskLinks_param");
+links = JSON.parse(links);
+
+TaskUtils.createNewTask(vars.get("$field.CONTACTID"), links);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/objecttrees/children/objecttype_param/valueProcess.js b/entity/Person_entity/entityfields/objecttrees/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..008915f61deac19ccdd40fff81701de63eb3b6a2
--- /dev/null
+++ b/entity/Person_entity/entityfields/objecttrees/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/orgaddresses/children/defaultaddressid_param/valueProcess.js b/entity/Person_entity/entityfields/orgaddresses/children/defaultaddressid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ebdb44bcc7438f8414cc91b25af0fd6ef667b8ed
--- /dev/null
+++ b/entity/Person_entity/entityfields/orgaddresses/children/defaultaddressid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("system.vars");
+
+result.string(vars.getString("$field.ADDRESS_ID"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/organisation_id/displayValueProcess.js b/entity/Person_entity/entityfields/organisation_id/displayValueProcess.js
index efe14ce09df366b0c5b96e6dadb3c309e9d98469..460b39849d5d34bac95e4b987d28a665b732e860 100644
--- a/entity/Person_entity/entityfields/organisation_id/displayValueProcess.js
+++ b/entity/Person_entity/entityfields/organisation_id/displayValueProcess.js
@@ -1,16 +1,9 @@
 import("system.result");
 import("system.db");
 import("system.vars");
-import("Sql_lib");
+import("Contact_lib");
 
 var organisationId = vars.get("$field.ORGANISATION_ID");
-var orgname = "";
-
-if (organisationId)
-{
-    res = db.cell(SqlCondition.begin()
-                              .andPrepare("ORGANISATION.ORGANISATIONID", organisationId)
-                              .buildSql("select ORGANISATION.NAME from ORGANISATION"));
-}
+var res = OrganisationUtils.getNameByOrganisationId(organisationId);
 
 result.string(res);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/organisation_id/onValidation.js b/entity/Person_entity/entityfields/organisation_id/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..daba90e666e30baec493136b062e2f20f1f13cf4
--- /dev/null
+++ b/entity/Person_entity/entityfields/organisation_id/onValidation.js
@@ -0,0 +1,22 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("Entity_lib");
+import("Contact_lib");
+
+if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW)
+{
+    var personId = vars.getString("$field.PERSONID");
+    var organisationId = ProcessHandlingUtils.getOnValidationValue("$field.ORGANISATION_ID");
+    var contactId = vars.get("$field.CONTACTID");//in EDIT we have to exclude our own CONTACTID since we do not want a message for our own contactentry
+    
+    //workaround for organisationId: $local.value will return the name of the organisation which is not what we want
+    //but the field already contains the changed value; so let's load the field instead of the $local.value-variable
+    //this is a bug within the ADITO-kernel
+    //TODO: change the workaround behaviour when $local.value is retrieved correct
+    organisationId = vars.getString("$field.ORGANISATION_ID");
+
+    var validationMsg = ContactUtils.validateIfAlreadyExists(personId, organisationId, contactId);
+    if (validationMsg)
+        result.string(validationMsg);
+}
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/organisation_id/onValueChange.js b/entity/Person_entity/entityfields/organisation_id/onValueChange.js
deleted file mode 100644
index d24b292520e51b6b67f1595dd215bbf88e2a3bed..0000000000000000000000000000000000000000
--- a/entity/Person_entity/entityfields/organisation_id/onValueChange.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.neon");
-import("system.vars");
-
-if(vars.exists("$local.value") && !vars.get("$local.value"))
-{
-    neon.setFieldValue("$field.ORGANISATION_ID", "0");
-}
diff --git a/entity/Person_entity/entityfields/organisation_id/valueProcess.js b/entity/Person_entity/entityfields/organisation_id/valueProcess.js
index b570e1812595b86a3ff3891033814fda2f66fdaa..6f44e6e6c6e93c530f1ba2446ad7cb026e04c6ce 100644
--- a/entity/Person_entity/entityfields/organisation_id/valueProcess.js
+++ b/entity/Person_entity/entityfields/organisation_id/valueProcess.js
@@ -8,8 +8,4 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.
     {
         result.string(vars.get("$param.OrgId_param"));
     }
-    else if(!vars.get("$field.ORGANISATION_ID"))
-    { 
-        result.string("0")
-    }
 }
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js b/entity/Person_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..03e286d947fe6f5a9aa506ee361e230c43eacd95
--- /dev/null
+++ b/entity/Person_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+//in mode NEW no record with that PERSONID exists that could be excluded by a database query, so let's ignore that (which means do not pass a value)
+if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW)
+    result.object(vars.get("$field.PERSONID"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js b/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e517058dc2daaa603f548ad0e09ec1c9434bb6e5
--- /dev/null
+++ b/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+var res = vars.get("$field.LANGUAGE");
+result.string(res);
\ No newline at end of file
diff --git a/entity/AnyContact_entity/entityfields/contact/children/contactid_param/valueProcess.js b/entity/Person_entity/entityfields/othercontacts/children/owncontactid_param/valueProcess.js
similarity index 100%
rename from entity/AnyContact_entity/entityfields/contact/children/contactid_param/valueProcess.js
rename to entity/Person_entity/entityfields/othercontacts/children/owncontactid_param/valueProcess.js
diff --git a/entity/Person_entity/entityfields/picture/displayValueProcess.js b/entity/Person_entity/entityfields/picture/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a8bad702a846e9273db756ed1bb6c1c4781591dd
--- /dev/null
+++ b/entity/Person_entity/entityfields/picture/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW && !vars.get("$this.value"))
+    result.string(vars.get("$param.AvatarText_param"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/position/possibleItemsProcess.js b/entity/Person_entity/entityfields/position/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a86d6820913b759ac976779f9c045378095b6d24
--- /dev/null
+++ b/entity/Person_entity/entityfields/position/possibleItemsProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+var res = KeywordUtils.getEntryNamesByContainer($KeywordRegistry.contactPosition()).map(function (e){
+    return [e, e]; //currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers
+});
+
+result.object(res);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js b/entity/Person_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f790fd2b65dea6cff3d35ba885903d8f20bcf06b
--- /dev/null
+++ b/entity/Person_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.vars");
+
+var links = vars.get("$param.AdditionalActivityTaskLinks_param");
+result.string(links);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/tasks/stateProcess.js b/entity/Person_entity/entityfields/tasks/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a33c7f3e00a9b4fdddcb9834e90446814be4cf5a
--- /dev/null
+++ b/entity/Person_entity/entityfields/tasks/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
+
+if(TaskUtils.hasTasks(vars.get("$field.CONTACTID"), ContextUtils.getCurrentContextId()))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/user_edit/valueProcess.js b/entity/Person_entity/entityfields/user_edit/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..6af880ae3e0e2b89b4eee8327ed49f1eefe458af
--- /dev/null
+++ b/entity/Person_entity/entityfields/user_edit/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/user_new/valueProcess.js b/entity/Person_entity/entityfields/user_new/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e518bc75a9494e53a83613dedd943106e74fc00a
--- /dev/null
+++ b/entity/Person_entity/entityfields/user_new/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Person_entity/entityfields/user_new_contact/valueProcess.js b/entity/Person_entity/entityfields/user_new_contact/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e518bc75a9494e53a83613dedd943106e74fc00a
--- /dev/null
+++ b/entity/Person_entity/entityfields/user_new_contact/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Person_entity/imageProcess.js b/entity/Person_entity/imageProcess.js
index 9d30ec1ce2a58d9eb87207bef231889d3878863f..ab4d712d459a7ea65b253daa74163d11a1b20099 100644
--- a/entity/Person_entity/imageProcess.js
+++ b/entity/Person_entity/imageProcess.js
@@ -1,4 +1,4 @@
 import("system.vars");
 import("system.result");
 
-result.string("TEXT:" + vars.getString("$field.FIRSTNAME") + " " + vars.getString("$field.LASTNAME"));
\ No newline at end of file
+result.string(vars.get("$param.AvatarText_param"));
\ No newline at end of file
diff --git a/entity/Person_entity/onValidation.js b/entity/Person_entity/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..41a2e1e25158de5c2d475b3cb0bcc952b8f70434
--- /dev/null
+++ b/entity/Person_entity/onValidation.js
@@ -0,0 +1,3 @@
+import("system.vars");
+if (!vars.get("$field.ORGANISATION_ID"))
+    vars.set("$field.ORGANISATION_ID", "0");
\ No newline at end of file
diff --git a/entity/Person_entity/recordcontainers/db/conditionProcess.js b/entity/Person_entity/recordcontainers/db/conditionProcess.js
index 3d91dc356d820aa415077bbdec47668cc6cd2164..d31e4c68e741d38374e087d121f55def93d54d3c 100644
--- a/entity/Person_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Person_entity/recordcontainers/db/conditionProcess.js
@@ -4,8 +4,21 @@ import("system.result");
 import("Sql_lib");
 
 var cond = new SqlCondition();
-cond.andPrepareVars("CONTACT.ORGANISATION_ID", "$param.OrgId_param");
-cond.andPrepareVars("PERSON.CONTACT_ID", "$param.ContactId_param");
+cond.andPrepareVars("CONTACT.ORGANISATION_ID", "$param.OrgId_param")
+    .andPrepareVars("PERSON.CONTACT_ID", "$param.ContactId_param");
+
+if (vars.exists("$param.ExcludedContactIds_param") && vars.get("$param.ExcludedContactIds_param"))
+{
+    var excludedContacts = JSON.parse(vars.get("$param.ExcludedContactIds_param"));
+    var excludedCond = SqlCondition.begin();
+    
+    excludedContacts.forEach(function(pContactId)
+    {
+        excludedCond.andPrepare("CONTACT.CONTACTID", pContactId, "#<>?");
+    });
+    
+    cond.andSqlCondition(excludedCond, "1=1");
+}
 
 //TODO: use a preparedCondition when available #1030812 #1034026
-result.string(db.translateCondition(cond.build("1 = 1")));
\ No newline at end of file
+result.string(db.translateCondition(cond.build("1 = 1")));
diff --git a/entity/Person_entity/recordcontainers/db/fromClauseProcess.js b/entity/Person_entity/recordcontainers/db/fromClauseProcess.js
index ce2f7eb850a73316a2aecd84f0ef7c968124d5d9..96d05d16af027f62abf95a8cb65c6d30b71530cd 100644
--- a/entity/Person_entity/recordcontainers/db/fromClauseProcess.js
+++ b/entity/Person_entity/recordcontainers/db/fromClauseProcess.js
@@ -1,4 +1,7 @@
 import("system.vars");
 import("system.result");
 
-result.string("PERSON join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID) join ORGANISATION on ORGANISATIONID = ORGANISATION_ID ");
\ No newline at end of file
+//ADDRESS is necessary to display standard address fast within contact lists
+result.string("PERSON \n\
+    join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID) join ORGANISATION on ORGANISATIONID = ORGANISATION_ID\n\
+    left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)");
\ No newline at end of file
diff --git a/entity/Person_entity/recordcontainers/db/onDBUpdate.js b/entity/Person_entity/recordcontainers/db/onDBUpdate.js
index c1aaada5945950cf44c87edc3e7688fba2a518ad..558fad5fb32a15ce823e8c00899b7b5cdf9eb622 100644
--- a/entity/Person_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Person_entity/recordcontainers/db/onDBUpdate.js
@@ -2,16 +2,9 @@ import("system.vars");
 import("Person_lib");
 import("Communication_lib");
 import("Entity_lib");
+import("StandardObject_lib");
 
 // TODO: this is a workaround for missing possibility to react on changes of fields not connected to record Contqainer #1030023
-FieldChanges.assimilateChangeAndDispose("$field.IMAGE", function(state, value){
-    if (state == FieldChanges.STATE_CHANGED())
-        PersUtils.setImage(vars.get("$field.PERSONID"), value);
-    else
-        PersUtils.removeImage(vars.get("$field.PERSONID"));
-});
-
-
 var uid = vars.get("$sys.uid");
 FieldChanges.assimilateChangeAndDispose("$field.STANDARD_EMAIL_COMMUNICATION", function(state, value){
     CommUtil.setStandardMail(uid, value);
@@ -20,3 +13,6 @@ FieldChanges.assimilateChangeAndDispose("$field.STANDARD_EMAIL_COMMUNICATION", f
 FieldChanges.assimilateChangeAndDispose("$field.STANDARD_PHONE_COMMUNICATION", function(state, value){
     CommUtil.setStandardPhone(uid, value);
 });
+
+new StandardObject("Address", vars.get("$field.ADDRESS_ID"), "Person", vars.get("$field.CONTACTID"))
+    .onPersonUpdate(vars.get("$field.ORGANISATION_ID"));
\ No newline at end of file
diff --git a/entity/Person_entity/recordcontainers/db/orderClauseProcess.js b/entity/Person_entity/recordcontainers/db/orderClauseProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..3d8ca41957b958679997fdc3f378c3920c1cb9ac
--- /dev/null
+++ b/entity/Person_entity/recordcontainers/db/orderClauseProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+import("system.db");
+
+result.object({"PERSON.LASTNAME": db.ASCENDING,
+               "PERSON.FIRSTNAME": db.ASCENDING});
\ No newline at end of file
diff --git a/entity/Person_entity/recordcontainers/db/recordfieldmappings/address_id.displayvalue/expression.js b/entity/Person_entity/recordcontainers/db/recordfieldmappings/address_id.displayvalue/expression.js
new file mode 100644
index 0000000000000000000000000000000000000000..beac43f3d912a8f81208580f156bb766178124f7
--- /dev/null
+++ b/entity/Person_entity/recordcontainers/db/recordfieldmappings/address_id.displayvalue/expression.js
@@ -0,0 +1,5 @@
+import("PostalAddress_lib");
+import("system.result");
+
+var res = AddressUtils.formatOnelineSql();
+result.string(res);
\ No newline at end of file
diff --git a/entity/Person_entity/titleProcess.js b/entity/Person_entity/titleProcess.js
index 29d40a6e1fdb032e2b43305953caa46655c58638..abaa3df1566528e8dc3e5aad91ac26ab26fe5418 100644
--- a/entity/Person_entity/titleProcess.js
+++ b/entity/Person_entity/titleProcess.js
@@ -1,4 +1,16 @@
 import("system.vars");
 import("system.result");
+import("Util_lib");
+import("Contact_lib");
 
-result.string(vars.get("$field.NAME_fieldGroup"));
\ No newline at end of file
+//do not use "FULL_NAME_fieldGroup" here since the field group must not include the orgname
+var contact = new Contact();
+contact.salutation = vars.get("$field.SALUTATION");
+contact.title = vars.get("$field.TITLE");
+contact.firstname = vars.get("$field.FIRSTNAME");
+contact.middlename = vars.get("$field.MIDDLENAME");
+contact.lastname = vars.get("$field.LASTNAME");
+contact.organisationName = vars.get("$field.ORGANISATION_NAME");
+
+var renderer = new ContactTitleRenderer(contact, null);
+result.string(renderer.asString());
\ No newline at end of file
diff --git a/entity/Prod2prod_entity/Prod2prod_entity.aod b/entity/Prod2prod_entity/Prod2prod_entity.aod
index 8826f3b29a8e6e93e601211370b3f5eac45da06c..63123b47f02df1509ec9f9ab26b38cd48f4c8006 100644
--- a/entity/Prod2prod_entity/Prod2prod_entity.aod
+++ b/entity/Prod2prod_entity/Prod2prod_entity.aod
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Prod2prod_entity</name>
+  <title>Parts list</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Prod2prod_entity/documentation.adoc</documentation>
   <recordContainer>jdito</recordContainer>
@@ -27,6 +28,8 @@
     <entityField>
       <name>QUANTITY</name>
       <title>Quantity</title>
+      <contentType>NUMBER</contentType>
+      <outputFormat>#</outputFormat>
       <valueProcess>%aditoprj%/entity/Prod2prod_entity/entityfields/quantity/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
@@ -49,11 +52,6 @@
       <triggerRecalculation v="true" />
       <description>PARAMETER</description>
     </entityParameter>
-    <entityField>
-      <name>PARENTID</name>
-      <title>Parent</title>
-      <groupable v="true" />
-    </entityField>
     <entityField>
       <name>PROD2PRODID</name>
       <valueProcess>%aditoprj%/entity/Prod2prod_entity/entityfields/prod2prodid/valueProcess.js</valueProcess>
@@ -137,15 +135,14 @@
       <onDelete>%aditoprj%/entity/Prod2prod_entity/recordcontainers/jdito/onDelete.js</onDelete>
       <recordFields>
         <element>UID.value</element>
-        <element>PARENTID.value</element>
-        <element>PROD2PRODID.value</element>
+        <element>SOURCE_ID.value</element>
+        <element>DEST_ID.value</element>
         <element>QUANTITY.value</element>
-        <element>OPTIONAL.value</element>
-        <element>TAKEPRICE.value</element>
         <element>PRODUCTCODE.value</element>
         <element>PRODUCTID.value</element>
-        <element>SOURCE_ID.value</element>
-        <element>DEST_ID.displayValue</element>
+        <element>PROD2PRODID.value</element>
+        <element>OPTIONAL.value</element>
+        <element>TAKEPRICE.value</element>
       </recordFields>
     </jDitoRecordContainer>
   </recordContainers>
diff --git a/entity/Prod2prod_entity/entityfields/quantity/valueProcess.js b/entity/Prod2prod_entity/entityfields/quantity/valueProcess.js
index 66e7d5877cff30feb8edc57c25a252f286892c3d..1adf62b3fab0c83c0f9ff455506257b815098393 100644
--- a/entity/Prod2prod_entity/entityfields/quantity/valueProcess.js
+++ b/entity/Prod2prod_entity/entityfields/quantity/valueProcess.js
@@ -1,10 +1,8 @@
-//import("system.vars");
-//import("system.result");
-//import("system.neon");
-//
-//if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "")
-//{
-//    result.string("1");
-//}
-//else
-//    result.string(vars.get("$this.value"));
\ No newline at end of file
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.QUANTITY"))
+{
+    result.string("1");
+}
\ No newline at end of file
diff --git a/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js b/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js
index 1eca5fb315ce03cf0f9cd20ce70f3b869cddd834..eeef1e962f6196a9eb632698f6860c216068cb51 100644
--- a/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Prod2prod_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.neon");
 import("system.result");
 import("system.vars");
@@ -5,17 +6,138 @@ import("system.db");
 import("system.util");
 import("Product_lib");
 
+/**
+ * Calculate the root elements for this tree.
+ * 
+ * @param productRootID string
+ * @param rows TreeData[]
+ * @return string[]
+ */
+function calculateRootElements (productRootID, rows) {
+   return rows.filter(function (row) {
+       // Filter predicate if the DIST_ID matches.
+      return row[2] === productRootID;
+   }).map(function (row) {
+       // Map to PROD2PROD_ID.
+       return row[0];
+   });
+}
+
+/**
+* Calculates a mapping object which has the PROD2PROD_ID as
+* key and the full TreeData array as value.
+* 
+* @param rows TreeData[]
+* @return {[key: TreeData]}
+*/
+function buildProd2ProdIDMapping (rows) {
+    var mapping = {}
+    
+    rows.forEach(function(row) {
+        // Create new property which PROD2PROD_ID as key and data
+        // as value.
+       mapping[row[0]] = row;
+    });
+    
+    return mapping;
+}
+
+/**
+ * Calcualtes the children mapping structure which has the DIST_ID
+ * as key and an array of PROD2PROD_IDs as value.
+ *
+ * @param rows TreeData[]
+ * @return {[key: string[]]}
+ */
+function buildChildrenMapping(rows) {
+    var parrentMapping = {}
+    
+    rows.forEach(function (row) {
+        // Create empty array if not created previously.
+        if (parrentMapping[row[2]] === undefined)
+          parrentMapping[row[2]] = []
+      
+      // Push with DIST_ID as key and PROD2PROD_ID as value.
+      parrentMapping[row[2]].push(row[0]);
+    })
+    
+    return parrentMapping
+}
+
+/**
+ * Calculates the graph starting from the given elementID.
+ */
+function buildGraph (elementID, parentElementID, mappingStructure, prod2prodIdMapping) {
+    var elements = []
+ 
+    // Get the PROD2PROD data array and copy it.
+    // Copying is requried due to mutability of arrays.
+    var elementData = prod2prodIdMapping[elementID].slice(0);
+    
+    // Just as an error prevention.
+    if (elementData === undefined)
+        return elements;
+    
+    // Generate new PROD2PROD_ID to create a uniqueness between the PROD2PROD objects.
+    var virtualProd2ProdId = util.getNewUUID();
+    
+    // Override actual PROD2PROD_ID with new ID.
+    elementData[0] = virtualProd2ProdId;
+ 
+    // Override parent id to match overriden prod2prodId of parent
+    if (parentElementID === null || parentElementID === undefined)
+        // Describes an root element
+        elementData[2] = null;
+    else
+        elementData[2] = parentElementID;
+ 
+    // Push element data to elements array of this graph.
+    elements.push(elementData);
+
+    // Search for children
+    var childrens = mappingStructure[elementData[1]];
+
+    if (childrens !== undefined && childrens.length > 0) {
+        // Build graph for each children
+
+        childrens.forEach(function(children) {
+            // Recursive function call (!)
+            
+            var graphResult = buildGraph(children, elementData[0], mappingStructure, prod2prodIdMapping);
+            
+            graphResult.forEach(function(res) {elements.push(res)})
+        });
+    }
+
+    return elements;
+}
+
 if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW)
 {
     var prodid = vars.exists("$param.ProductId_param") 
                  && vars.get("$param.ProductId_param") != null ? vars.get("$param.ProductId_param") : "";
     if(prodid != "")
     {
-        var p2pUtils = new Prod2ProdUtils(prodid);
-        result.object(p2pUtils.getPartsListForRecordContainer());
+        // First 3 columns are crucial, the rest is optional.
+        var data = db.table("select PROD2PRODID, SOURCE_ID, DEST_ID, QUANTITY, PRODUCTCODE, PRODUCTID, PROD2PRODID, OPTIONAL, TAKEPRICE "
+                    + "from PROD2PROD join PRODUCT on PROD2PROD.SOURCE_ID = PRODUCTID "
+                    + "order by PRODUCTCODE");
+                
+        var prod2prodIdMapping = buildProd2ProdIDMapping(data);
+        var childrenMapping = buildChildrenMapping(data);
+        var rootElements = calculateRootElements(prodid, data);
+        
+        var allData = []
+        
+        rootElements.forEach(function(rg) {
+            var graphData = buildGraph(rg, null, childrenMapping, prod2prodIdMapping)
+            graphData.forEach(function (gd) { allData.push(gd); })
+        })
+                
+        result.object(allData);
     }
 }
 else
 {
     result.object([]);
-}
\ No newline at end of file
+}
diff --git a/entity/Prod2prod_entity/recordcontainers/jdito/onDelete.js b/entity/Prod2prod_entity/recordcontainers/jdito/onDelete.js
index 75472b57594f5b0bfac9304d844e36c49cd92f69..3f5b37d8a09c58c04eb400f106a90a33be140cdd 100644
--- a/entity/Prod2prod_entity/recordcontainers/jdito/onDelete.js
+++ b/entity/Prod2prod_entity/recordcontainers/jdito/onDelete.js
@@ -1,3 +1,4 @@
+import("system.vars");
 import("system.neon");
 import("system.db");
 import("Sql_lib");
@@ -7,4 +8,4 @@ db.deleteData("PROD2PROD", SqlCondition.begin()
                                        .build("1=2"));
 
 // Refresh otherwise the children of the deleted node would be moved to the root.
-neon.refresh()
\ No newline at end of file
+neon.refresh();
\ No newline at end of file
diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod
index 52746fccf08b554e471026a4c8222172a13f410a..f8474184d24ac58559ce37fe1aa4455afc5f16f4 100644
--- a/entity/Product_entity/Product_entity.aod
+++ b/entity/Product_entity/Product_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Product_entity</name>
   <title>Product</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -20,6 +20,7 @@
       <title>Product group</title>
       <consumer>KeywordProductGroupcodes</consumer>
       <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/Product_entity/entityfields/groupcodeid/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>MINSTOCK</name>
@@ -60,6 +61,7 @@
       <title>Unit</title>
       <consumer>KeywordQuantityUnits</consumer>
       <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/Product_entity/entityfields/unit/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>currentPurchasePrice</name>
@@ -81,8 +83,18 @@
       <dependency>
         <name>dependency</name>
         <entityName>Organisation_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
+        <fieldName>WithAttribute</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>AttributeId_param</name>
+          <valueProcess>%aditoprj%/entity/Product_entity/entityfields/organisations/children/attributeid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>AttributeKeyId_param</name>
+          <valueProcess>%aditoprj%/entity/Product_entity/entityfields/organisations/children/attributekeyid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityConsumer>
       <name>Productprices</name>
@@ -159,6 +171,12 @@
           <fieldName>Products</fieldName>
           <isConsumer v="false" />
         </entityDependency>
+        <entityDependency>
+          <name>760f179a-f37e-4bdf-af8f-d8935e86db0f</name>
+          <entityName>Object_entity</entityName>
+          <fieldName>Products</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
       </dependencies>
     </entityProvider>
     <entityConsumer>
@@ -189,6 +207,7 @@
       <onValueChangeTypes>
         <element>MASK</element>
         <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
       </onValueChangeTypes>
     </entityField>
     <entityField>
@@ -277,8 +296,10 @@
     </entityConsumer>
     <entityField>
       <name>LANGUAGE</name>
-      <title>Language</title>
       <consumer>Languages</consumer>
+      <searchable v="false" />
+      <titleProcess>%aditoprj%/entity/Product_entity/entityfields/language/titleProcess.js</titleProcess>
+      <displayValueProcess>%aditoprj%/entity/Product_entity/entityfields/language/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
       <name>Languages</name>
@@ -374,6 +395,7 @@
       <name>Tasks</name>
       <title>Tasks</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
+      <stateProcess>%aditoprj%/entity/Product_entity/entityfields/tasks/stateProcess.js</stateProcess>
       <dependency>
         <name>dependency</name>
         <entityName>Task_entity</entityName>
@@ -390,6 +412,44 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityConsumer>
+      <name>AttributeTree</name>
+      <title>Attribute Tree</title>
+      <fieldType>DEPENDENCY_OUT</fieldType>
+      <dependency>
+        <name>dependency</name>
+        <entityName>AttributeRelationTree_entity</entityName>
+        <fieldName>TreeProvider</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>ObjectRowId_param</name>
+          <valueProcess>%aditoprj%/entity/Product_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+        <entityParameter>
+          <name>ObjectType_param</name>
+          <valueProcess>%aditoprj%/entity/Product_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess>
+          <triggerRecalculation v="true" />
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>USER_NEW</name>
+      <valueProcess>%aditoprj%/entity/Product_entity/entityfields/user_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>USER_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Product_entity/entityfields/user_edit/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_NEW</name>
+      <valueProcess>%aditoprj%/entity/Product_entity/entityfields/date_new/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>DATE_EDIT</name>
+      <valueProcess>%aditoprj%/entity/Product_entity/entityfields/date_edit/valueProcess.js</valueProcess>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -470,6 +530,22 @@
           <name>LANGUAGE.displayValue</name>
           <expression>%aditoprj%/entity/Product_entity/recordcontainers/db/recordfieldmappings/language.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_NEW.value</name>
+          <recordfield>PRODUCT.USER_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>USER_EDIT.value</name>
+          <recordfield>PRODUCT.USER_EDIT</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_NEW.value</name>
+          <recordfield>PRODUCT.DATE_NEW</recordfield>
+        </dbRecordFieldMapping>
+        <dbRecordFieldMapping>
+          <name>DATE_EDIT.value</name>
+          <recordfield>PRODUCT.DATE_EDIT</recordfield>
+        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Product_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js b/entity/Product_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..60b7269a1beff4e4c23e81cf7254f2ef95633365
--- /dev/null
+++ b/entity/Product_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Context_lib");
+
+result.string(vars.get("$field.PRODUCTID"));
diff --git a/entity/Product_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js b/entity/Product_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..431bcc952145cb451362fc69754f84ff1514bac5
--- /dev/null
+++ b/entity/Product_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+import("Context_lib");
+
+result.string(ContextUtils.getCurrentContextId());
diff --git a/entity/Product_entity/entityfields/currentpurchaseprice/valueProcess.js b/entity/Product_entity/entityfields/currentpurchaseprice/valueProcess.js
index e9ef972e437973279fcf9144c2504ab288b20df6..48d5a48dba985e36efff385275848c0daf4cd188 100644
--- a/entity/Product_entity/entityfields/currentpurchaseprice/valueProcess.js
+++ b/entity/Product_entity/entityfields/currentpurchaseprice/valueProcess.js
@@ -4,6 +4,6 @@ import("system.result");
 import("system.vars");
 import("Product_lib");
 
-var price = ProductUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "PP");
+var price = ProductUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "PP", true);
 if (price.length > 0)
     result.string(text.formatDouble(price[0], "#,##0.00", true) + " " + price[1]);
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/currentsalesprice/valueProcess.js b/entity/Product_entity/entityfields/currentsalesprice/valueProcess.js
index 50bd3113611e859c5288cb2fe8a4851384a3a001..6981610dc3c3738e745b030d2c37468a7e48d186 100644
--- a/entity/Product_entity/entityfields/currentsalesprice/valueProcess.js
+++ b/entity/Product_entity/entityfields/currentsalesprice/valueProcess.js
@@ -4,6 +4,6 @@ import("system.result");
 import("system.vars");
 import("Product_lib");
 
-var price = ProductUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "SP");
+var price = ProductUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "SP", true);
 if (price.length > 0)
     result.string(text.formatDouble(price[0], "#,##0.00", true) + " " + price[1]);
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/date_edit/valueProcess.js b/entity/Product_entity/entityfields/date_edit/valueProcess.js
index 710ac8a06a9911f82ff222c7d9d231846ca93fb2..8d41a64d6993f71d00e0879f5eb4aed0aa0b866d 100644
--- a/entity/Product_entity/entityfields/date_edit/valueProcess.js
+++ b/entity/Product_entity/entityfields/date_edit/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-    result.string(vars.getString("$sys.date"));
\ No newline at end of file
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/date_new/valueProcess.js b/entity/Product_entity/entityfields/date_new/valueProcess.js
index 408c498a4c90f59cd95eafbf74a8ea2683bab068..8ee28e84edb9930de54975f81e8cb5a13c9aa02f 100644
--- a/entity/Product_entity/entityfields/date_new/valueProcess.js
+++ b/entity/Product_entity/entityfields/date_new/valueProcess.js
@@ -1,7 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.date"));
-
+    result.string(vars.get("$sys.date"));
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/groupcodeid/displayValueProcess.js b/entity/Product_entity/entityfields/groupcodeid/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ce477b670409fc7ac6a8bd6af59d232b7f980241
--- /dev/null
+++ b/entity/Product_entity/entityfields/groupcodeid/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.productGroupcode(), vars.get("$field.GROUPCODEID")));
diff --git a/entity/Product_entity/entityfields/language/displayValueProcess.js b/entity/Product_entity/entityfields/language/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..de5246774faf8a3f68bea969823cf3fe462d1504
--- /dev/null
+++ b/entity/Product_entity/entityfields/language/displayValueProcess.js
@@ -0,0 +1,10 @@
+import("system.db");
+import("system.translate");
+import("system.vars");
+import("system.result");
+import("KeywordRegistry_basic");
+import("Keyword_lib");
+import("Sql_lib");
+
+result.string(translate.text(db.cell(SqlCondition.begin().andPrepareVars("AB_LANGUAGE.ISO3", "$field.LANGUAGE")
+                                   .buildSql("select NAME_LATIN from AB_LANGUAGE", "1=2"))));
diff --git a/entity/Product_entity/entityfields/language/titleProcess.js b/entity/Product_entity/entityfields/language/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..04be2c545b0879ee1106eeb333161b65e5520edf
--- /dev/null
+++ b/entity/Product_entity/entityfields/language/titleProcess.js
@@ -0,0 +1,4 @@
+import("system.translate");
+import("system.result");
+
+result.string(translate.text("Language") + " (" + translate.text("Description") + ")");
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/organisations/children/attributeid_param/valueProcess.js b/entity/Product_entity/entityfields/organisations/children/attributeid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..645b2d936511e365614a516e8292c1f34bb3a51f
--- /dev/null
+++ b/entity/Product_entity/entityfields/organisations/children/attributeid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+
+// Target Group (Zielgruppe)
+result.string("5d1a2b05-f04e-4ad7-9fd0-8efa09a33a53");
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/organisations/children/attributekeyid_param/valueProcess.js b/entity/Product_entity/entityfields/organisations/children/attributekeyid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a5bc0b05c93591807469e2ec88adda2db5cb056
--- /dev/null
+++ b/entity/Product_entity/entityfields/organisations/children/attributekeyid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+
+// Manufacturer
+result.string("41b0832f-8de2-4ab5-a6e0-9a793c5f80c3");
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/tasks/stateProcess.js b/entity/Product_entity/entityfields/tasks/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..062f477b61b1ef7467fc25a4b5c84395116c3d29
--- /dev/null
+++ b/entity/Product_entity/entityfields/tasks/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
+
+if(TaskUtils.hasTasks(vars.get("$field.PRODUCTID"), ContextUtils.getCurrentContextId()))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/unit/displayValueProcess.js b/entity/Product_entity/entityfields/unit/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..0149bf2040b93bd6370d0c40bb03abecf0b01a45
--- /dev/null
+++ b/entity/Product_entity/entityfields/unit/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.quantityUnit(), vars.get("$field.UNIT")));
diff --git a/entity/Product_entity/entityfields/user_edit/valueProcess.js b/entity/Product_entity/entityfields/user_edit/valueProcess.js
index 1581e18d9763043ae602b98658f87cb0a3b0c967..90383c071316dc55fe51d43a93dd7db75551842e 100644
--- a/entity/Product_entity/entityfields/user_edit/valueProcess.js
+++ b/entity/Product_entity/entityfields/user_edit/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Product_entity/entityfields/user_new/valueProcess.js b/entity/Product_entity/entityfields/user_new/valueProcess.js
index 7c566863b493d778b72dea7d8822f6a59333e77d..dda83cfd00e13df5c6da64151f5d1e6d932a681e 100644
--- a/entity/Product_entity/entityfields/user_new/valueProcess.js
+++ b/entity/Product_entity/entityfields/user_new/valueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
 import("system.result");
 import("system.neon");
+import("system.vars");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string(vars.getString("$sys.user"));
\ No newline at end of file
+    result.string(vars.get("$sys.user"));
\ No newline at end of file
diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod
index d9059a4c13bd3e88450633aea1e2d14a87676958..6d4fd26abd696730231d506e3b47cf0ec5dda513 100644
--- a/entity/Productprice_entity/Productprice_entity.aod
+++ b/entity/Productprice_entity/Productprice_entity.aod
@@ -1,9 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Productprice_entity</name>
   <title>Prices</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Productprice_entity/documentation.adoc</documentation>
+  <afterOperatingState>%aditoprj%/entity/Productprice_entity/afterOperatingState.js</afterOperatingState>
   <recordContainer>db</recordContainer>
   <entityFields>
     <entityField>
@@ -18,6 +19,8 @@
       <title>Currency</title>
       <consumer>KeywordCurrencies</consumer>
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/currency/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Productprice_entity/entityfields/currency/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>FROMQUANTITY</name>
@@ -35,6 +38,7 @@
       <outputFormat>#,##0.00</outputFormat>
       <mandatory v="true" />
       <state>AUTO</state>
+      <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/price/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>PRODUCTPRICEID</name>
@@ -46,7 +50,7 @@
       <consumer>Products</consumer>
       <linkedContext>Product</linkedContext>
       <mandatory v="true" />
-      <state>AUTO</state>
+      <state>READONLY</state>
       <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/product_id/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Productprice_entity/entityfields/product_id/displayValueProcess.js</displayValueProcess>
     </entityField>
@@ -75,10 +79,11 @@
     </entityField>
     <entityField>
       <name>VAT</name>
-      <title>VAT</title>
+      <title>VAT in %</title>
       <contentType>NUMBER</contentType>
       <outputFormat>#,##0.00</outputFormat>
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/vat/valueProcess.js</valueProcess>
       <onValidation>%aditoprj%/entity/Productprice_entity/entityfields/vat/onValidation.js</onValidation>
     </entityField>
     <entityField>
@@ -90,6 +95,7 @@
       <state>AUTO</state>
       <stateProcess>%aditoprj%/entity/Productprice_entity/entityfields/pricelist/stateProcess.js</stateProcess>
       <titleProcess>%aditoprj%/entity/Productprice_entity/entityfields/pricelist/titleProcess.js</titleProcess>
+      <valueProcess>%aditoprj%/entity/Productprice_entity/entityfields/pricelist/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/Productprice_entity/entityfields/pricelist/displayValueProcess.js</displayValueProcess>
       <onValidation>%aditoprj%/entity/Productprice_entity/entityfields/pricelist/onValidation.js</onValidation>
     </entityField>
@@ -199,6 +205,7 @@
       <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/Productprice_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/Productprice_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBDelete>%aditoprj%/entity/Productprice_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
       <linkInformation>
         <linkInformation>
           <name>85fd1bcf-499f-4708-ad8e-18f5a0f5337d</name>
diff --git a/entity/Productprice_entity/afterOperatingState.js b/entity/Productprice_entity/afterOperatingState.js
new file mode 100644
index 0000000000000000000000000000000000000000..5541dfea336535d08d4b6e9f3cd236dd3634fb12
--- /dev/null
+++ b/entity/Productprice_entity/afterOperatingState.js
@@ -0,0 +1,7 @@
+import("system.neon");
+import("system.vars");
+
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW) 
+{
+    neon.refresh();
+}
diff --git a/entity/Productprice_entity/entityfields/currency/displayValueProcess.js b/entity/Productprice_entity/entityfields/currency/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c268b6c47a2f8a524285a57ed57f8be564fab1b2
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/currency/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.currency(), vars.get("$field.CURRENCY")));
diff --git a/entity/Productprice_entity/entityfields/currency/valueProcess.js b/entity/Productprice_entity/entityfields/currency/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..081cebb3e478a2c2c0b001db3ac3baab9dba0caa
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/currency/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string("EUR");
+}
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/fromquantity/valueProcess.js b/entity/Productprice_entity/entityfields/fromquantity/valueProcess.js
index 66e7d5877cff30feb8edc57c25a252f286892c3d..b2204ba4adb39c57f8f5dd011cf2560d92034c07 100644
--- a/entity/Productprice_entity/entityfields/fromquantity/valueProcess.js
+++ b/entity/Productprice_entity/entityfields/fromquantity/valueProcess.js
@@ -1,10 +1,8 @@
-//import("system.vars");
-//import("system.result");
-//import("system.neon");
-//
-//if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "")
-//{
-//    result.string("1");
-//}
-//else
-//    result.string(vars.get("$this.value"));
\ No newline at end of file
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "")
+    result.string("1");
+else
+    result.string(vars.get("$this.value"));
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/price/valueProcess.js b/entity/Productprice_entity/entityfields/price/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..723d0252aa9b87eb839318b7e5e63d7d7dfc567f
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/price/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "")
+    result.string("0");
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/pricelist/onValidation.js b/entity/Productprice_entity/entityfields/pricelist/onValidation.js
index 281a078881481d1014a34b3e1107aa65e1f95e62..4aacd1ac134be1b8fd4f486e3b195092776ee618 100644
--- a/entity/Productprice_entity/entityfields/pricelist/onValidation.js
+++ b/entity/Productprice_entity/entityfields/pricelist/onValidation.js
@@ -7,6 +7,7 @@ import("Entity_lib");
 
 var priceList = {
                 priceList: ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRICELIST"))
+                , priceListId: vars.get("$field.PRODUCTPRICEID")
                 , fromQuantity: vars.get("$field.FROMQUANTITY")
                 , buySell: vars.get("$field.BUYSELL")
                 , currency: vars.get("$field.CURRENCY")
diff --git a/entity/Productprice_entity/entityfields/pricelist/valueProcess.js b/entity/Productprice_entity/entityfields/pricelist/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..f9c9524cedcd93dab192369848c72be7cfdd2329
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/pricelist/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string("02553fc7-4611-4914-8ff5-0b7c4e7531c9");
+}
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/vat/onValidation.js b/entity/Productprice_entity/entityfields/vat/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..463ab50e2073e791ddbacc028d50b9c1abc06589
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/vat/onValidation.js
@@ -0,0 +1,13 @@
+import("system.result");
+import("system.vars");
+import("Util_lib");
+import("Entity_lib");
+
+var value = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.VAT"));
+
+var validationResult = NumberUtils.validateIsBetweenFloat("VAT", value, 0, 100);
+
+if (validationResult)
+{
+    result.string(validationResult);
+}
\ No newline at end of file
diff --git a/entity/Productprice_entity/entityfields/vat/valueProcess.js b/entity/Productprice_entity/entityfields/vat/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..723d0252aa9b87eb839318b7e5e63d7d7dfc567f
--- /dev/null
+++ b/entity/Productprice_entity/entityfields/vat/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == "")
+    result.string("0");
\ No newline at end of file
diff --git a/entity/Productprice_entity/recordcontainers/db/onDBDelete.js b/entity/Productprice_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..3e8d3f97bb59f2b1b8839261d1a274e9202d668b
--- /dev/null
+++ b/entity/Productprice_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,3 @@
+import("system.neon");
+
+neon.refresh();
\ No newline at end of file
diff --git a/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod b/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod
new file mode 100644
index 0000000000000000000000000000000000000000..70ffd19c8251db0ea1c0d4d9e296f2f3a0758826
--- /dev/null
+++ b/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
+  <name>SalesprojectAnalyses_entity</name>
+  <title>Salesproject Analyses</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/entity/SalesprojectAnalyses_entity/documentation.adoc</documentation>
+  <iconId>VAADIN:PIE_CHART</iconId>
+  <recordContainer>jdito</recordContainer>
+  <entityFields>
+    <entityProvider>
+      <name>#PROVIDER</name>
+    </entityProvider>
+    <entityField>
+      <name>UID</name>
+    </entityField>
+    <entityField>
+      <name>SORTING</name>
+      <title>Parent</title>
+    </entityField>
+    <entityField>
+      <name>X_PHASE</name>
+      <title>Phase</title>
+    </entityField>
+    <entityField>
+      <name>Y_COUNT</name>
+      <title>Count</title>
+    </entityField>
+    <entityField>
+      <name>OVERALL_TURNOVER</name>
+      <contentType>NUMBER</contentType>
+      <state>READONLY</state>
+      <titleProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/titleProcess.js</titleProcess>
+      <valueProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>OVERALL_FORECAST</name>
+      <contentType>NUMBER</contentType>
+      <state>READONLY</state>
+      <titleProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/titleProcess.js</titleProcess>
+      <valueProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>SENT_OFFERS</name>
+      <title>Sent offers</title>
+      <contentType>NUMBER</contentType>
+      <state>READONLY</state>
+      <valueProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/sent_offers/valueProcess.js</valueProcess>
+    </entityField>
+    <entityField>
+      <name>OPEN_SALESPROJECTS</name>
+      <title>Open salesprojects</title>
+      <contentType>NUMBER</contentType>
+      <state>READONLY</state>
+      <valueProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/open_salesprojects/valueProcess.js</valueProcess>
+    </entityField>
+  </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>Data_alias</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <recordFields>
+        <element>UID.value</element>
+        <element>X_PHASE.value</element>
+        <element>Y_COUNT.value</element>
+        <element>SORTING.value</element>
+      </recordFields>
+    </jDitoRecordContainer>
+  </recordContainers>
+</entity>
diff --git a/entity/SalesprojectAnalyses_entity/documentation.adoc b/entity/SalesprojectAnalyses_entity/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..75936e03b24fa56440b0e4979515af8edd40c694
--- /dev/null
+++ b/entity/SalesprojectAnalyses_entity/documentation.adoc
@@ -0,0 +1,3 @@
+== Salesproject Analyses ==
+
+This entity provides analyses to display different things of all salesproject.
\ No newline at end of file
diff --git a/entity/SalesprojectAnalyses_entity/entityfields/open_salesprojects/valueProcess.js b/entity/SalesprojectAnalyses_entity/entityfields/open_salesprojects/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..d58be99a6a23f3797888dbc9fe370413dad3b9a1
--- /dev/null
+++ b/entity/SalesprojectAnalyses_entity/entityfields/open_salesprojects/valueProcess.js
@@ -0,0 +1,14 @@
+import("system.datetime");
+import("system.db");
+import("system.result");
+import("system.vars");
+import("Date_lib");
+import("system.logging");
+import("Sql_lib");
+import("system.SQLTYPES")
+
+var opensp = db.cell("select count(STATE) from SALESPROJECT \n\
+join AB_KEYWORD_ENTRY on KEYID = STATE and  CONTAINER  = 'SalesprojectState' and TITLE = 'Open' \n\
+group by KEYID, AB_KEYWORD_ENTRY.TITLE");
+                                  
+result.string(opensp);
\ No newline at end of file
diff --git a/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/titleProcess.js b/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..451502e0d4d9f20a69b6847d49ff95695c04006a
--- /dev/null
+++ b/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/titleProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.translate");
+import("system.datetime");
+
+result.string(translate.text("Forecast") +  " " + datetime.toDate(vars.get("$sys.date"), "yyyy"));
\ No newline at end of file
diff --git a/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/valueProcess.js b/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b1f1ae8c0052bfa40c6ffb555ff4197450caf553
--- /dev/null
+++ b/entity/SalesprojectAnalyses_entity/entityfields/overall_forecast/valueProcess.js
@@ -0,0 +1,14 @@
+import("system.datetime");
+import("system.db");
+import("system.result");
+import("system.vars");
+import("Date_lib");
+import("system.logging");
+import("Sql_lib");
+import("system.SQLTYPES")
+
+var forecast = db.cell(SqlCondition.begin()
+                                   .andPrepare("SALESPROJECT_FORECAST.DATE_START", datetime.toDate(vars.get("$sys.date"), "yyyy"), "year(#) = ?", SQLTYPES.INTEGER)
+                                   .buildSql("select sum(VOLUME * 1000) from SALESPROJECT_FORECAST", "1=2"));
+                                  
+result.string(forecast);
\ No newline at end of file
diff --git a/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/titleProcess.js b/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..03c0d039b7225ce79f92f89e9b98c8cce3ab5743
--- /dev/null
+++ b/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/titleProcess.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.result");
+import("system.translate");
+import("system.datetime");
+
+result.string(translate.text("Turnover") +  " " + datetime.toDate(vars.get("$sys.date"), "yyyy"));
\ No newline at end of file
diff --git a/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/valueProcess.js b/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a08d40a129380b9383c59d1a175f75b5e31f5767
--- /dev/null
+++ b/entity/SalesprojectAnalyses_entity/entityfields/overall_turnover/valueProcess.js
@@ -0,0 +1,14 @@
+import("system.datetime");
+import("system.db");
+import("system.result");
+import("system.vars");
+import("Date_lib");
+import("system.logging");
+import("Sql_lib");
+import("system.SQLTYPES")
+
+var turnover = db.cell(SqlCondition.begin()
+                                   .andPrepare("SALESORDER.SALESORDERDATE", datetime.toDate(vars.get("$sys.date"), "yyyy"), "year(#) = ?", SQLTYPES.INTEGER)
+                                   .buildSql("select sum(NET + VAT) from SALESORDER", "1=2"));
+                                  
+result.string(turnover);
\ No newline at end of file
diff --git a/entity/SalesprojectAnalyses_entity/entityfields/sent_offers/valueProcess.js b/entity/SalesprojectAnalyses_entity/entityfields/sent_offers/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c415d73135ceb0683dd670668442589b62e5660a
--- /dev/null
+++ b/entity/SalesprojectAnalyses_entity/entityfields/sent_offers/valueProcess.js
@@ -0,0 +1,13 @@
+import("system.datetime");
+import("system.db");
+import("system.result");
+import("system.vars");
+import("Date_lib");
+import("system.logging");
+import("Sql_lib");
+import("system.SQLTYPES")
+
+var sentoffer = db.cell("select count(STATUS) from OFFER join AB_KEYWORD_ENTRY \n\
+on KEYID = STATUS and  CONTAINER  = 'OfferStatus' and TITLE = 'Sent' group by KEYID, AB_KEYWORD_ENTRY.TITLE");
+                                  
+result.string(sentoffer);
\ No newline at end of file
diff --git a/entity/SalesprojectAnalyses_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectAnalyses_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e65797a6adb0da41ded6a02f5b1ba74a45d3c7d3
--- /dev/null
+++ b/entity/SalesprojectAnalyses_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,34 @@
+import("system.vars");
+import("system.datetime");
+import("system.db");
+import("system.result");
+import("system.translate");
+import("Data_lib");
+import("Keyword_lib");
+import("Money_lib");
+import("KeywordRegistry_basic");
+    
+// load data
+
+var phases = db.table("select KEYID, AB_KEYWORD_ENTRY.TITLE, count(PHASE), AB_KEYWORD_ENTRY.SORTING \n\
+from SALESPROJECT join AB_KEYWORD_ENTRY on KEYID = PHASE and  CONTAINER  = 'SalesprojectPhase' and SORTING <> 7 \n\
+group by KEYID, AB_KEYWORD_ENTRY.TITLE, AB_KEYWORD_ENTRY.SORTING order by SORTING");
+
+for(i = 0; i < phases.length; i++){
+    if(phases[i][1] == "${SALESPROJECT_OFFER}"){
+        phases[i][1] = "Offer";
+    }   
+}
+
+   
+result.object(phases);
+
+
+
+
+
+
+
+
+
+
diff --git a/entity/SalesprojectClassificationEntry_entity/SalesprojectClassificationEntry_entity.aod b/entity/SalesprojectClassificationEntry_entity/SalesprojectClassificationEntry_entity.aod
index f86cbbad6c6baa3d0015e28561432b7419593a29..acb01ba63fbd8da3e050aa6e099dc02e421ecc6c 100644
--- a/entity/SalesprojectClassificationEntry_entity/SalesprojectClassificationEntry_entity.aod
+++ b/entity/SalesprojectClassificationEntry_entity/SalesprojectClassificationEntry_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>SalesprojectClassificationEntry_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <recordContainer>jdito</recordContainer>
diff --git a/entity/SalesprojectClassification_entity/SalesprojectClassification_entity.aod b/entity/SalesprojectClassification_entity/SalesprojectClassification_entity.aod
index 51c8c393cf8c50076189cfa0af47438fd93cf1bb..f591683256cc3830babb9bec55c3926212f1a8ed 100644
--- a/entity/SalesprojectClassification_entity/SalesprojectClassification_entity.aod
+++ b/entity/SalesprojectClassification_entity/SalesprojectClassification_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>SalesprojectClassification_entity</name>
   <title>Classification</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
index 79a4e24f545b750aba911fe3eb43c97cace94d45..f479afb820b077913c99b9e6e8d8b705ea07aad8 100644
--- a/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
+++ b/entity/SalesprojectCompetition_entity/SalesprojectCompetition_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>SalesprojectCompetition_entity</name>
   <title>Competition</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -24,6 +24,7 @@
       <title>Reason</title>
       <consumer>KeywordWonLost</consumer>
       <selectionMode>SINGLE</selectionMode>
+      <displayValueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/reason/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>SALESPROJECT_COMPETITIONID</name>
@@ -38,6 +39,7 @@
       <title>State</title>
       <consumer>KeywordStates</consumer>
       <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/status/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityParameter>
       <name>SalesprojectId_param</name>
@@ -70,6 +72,7 @@
       <title>Organisation</title>
       <consumer>Organisations</consumer>
       <linkedContext>Organisation</linkedContext>
+      <mandatory v="true" />
     </entityField>
     <entityField>
       <name>ORGANISATION_NAME</name>
@@ -77,6 +80,7 @@
       <onValueChangeTypes>
         <element>MASK</element>
         <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
       </onValueChangeTypes>
     </entityField>
     <entityField>
@@ -88,8 +92,6 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Organisation_entity</entityName>
-        <fieldName>Organisations</fieldName>
       </dependency>
       <children>
         <entityParameter>
@@ -106,8 +108,22 @@
       <dependency>
         <name>dependency</name>
         <entityName>Organisation_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
+        <fieldName>WithAttribute</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>AttributeId_param</name>
+          <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/organisations/children/attributeid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>AttributeKeyId_param</name>
+          <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/organisations/children/attributekeyid_param/valueProcess.js</valueProcess>
+        </entityParameter>
+        <entityParameter>
+          <name>ExcludedContactIds_param</name>
+          <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/organisations/children/excludedcontactids_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityConsumer>
       <name>KeywordWonLost</name>
@@ -130,6 +146,7 @@
       <name>PHASE</name>
       <title>Phase</title>
       <consumer>KeywordPhases</consumer>
+      <displayValueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/phase/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
       <name>KeywordPricePolitics</name>
@@ -215,6 +232,7 @@
       <name>Attributes</name>
       <title>Attributes</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
+      <state>DISABLED</state>
       <dependency>
         <name>dependency</name>
         <entityName>AttributeRelation_entity</entityName>
@@ -224,17 +242,15 @@
         <entityParameter>
           <name>FilteredAttributeIds_param</name>
           <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/attributes/children/filteredattributeids_param/valueProcess.js</valueProcess>
-          <expose v="false" />
         </entityParameter>
         <entityParameter>
           <name>ObjectRowId_param</name>
           <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess>
-          <expose v="false" />
+          <triggerRecalculation v="true" />
         </entityParameter>
         <entityParameter>
           <name>ObjectType_param</name>
           <valueProcess>%aditoprj%/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess>
-          <expose v="false" />
         </entityParameter>
         <entityParameter>
           <name>DisplaySimpleName_param</name>
diff --git a/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js
index 41202c0153c75fda1c5eb90ea3a2f09178ba6df9..9acfa14adab3e82729a6f5f57b0aa1b4b1bbadad 100644
--- a/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js
+++ b/entity/SalesprojectCompetition_entity/entityfields/attributes/children/objecttype_param/valueProcess.js
@@ -1,3 +1,7 @@
+import("system.vars");
 import("system.result");
 
-result.string("Organisation");
+if (vars.get("$field.CONTACT_ID"))
+    result.string("Organisation");
+else
+    result.string("true");
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/entityfields/organisations/children/attributeid_param/valueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/organisations/children/attributeid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..645b2d936511e365614a516e8292c1f34bb3a51f
--- /dev/null
+++ b/entity/SalesprojectCompetition_entity/entityfields/organisations/children/attributeid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+
+// Target Group (Zielgruppe)
+result.string("5d1a2b05-f04e-4ad7-9fd0-8efa09a33a53");
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/entityfields/organisations/children/attributekeyid_param/valueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/organisations/children/attributekeyid_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..ca41e6e2608d46ef8e47125ee72c25b51d271bd8
--- /dev/null
+++ b/entity/SalesprojectCompetition_entity/entityfields/organisations/children/attributekeyid_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+
+// Competitor
+result.string("fc09afd5-5f74-4e48-af26-3600bb4c9610");
\ No newline at end of file
diff --git a/entity/SalesprojectCompetition_entity/entityfields/organisations/children/excludedcontactids_param/valueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/organisations/children/excludedcontactids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..09c14009f31a5ba857d921e0e9e2aec4c14bc91c
--- /dev/null
+++ b/entity/SalesprojectCompetition_entity/entityfields/organisations/children/excludedcontactids_param/valueProcess.js
@@ -0,0 +1,8 @@
+import("system.result");
+import("system.vars");
+import("system.db");
+import("Sql_lib");
+
+result.object(db.array(db.COLUMN, SqlCondition.begin()
+                                .andPrepare("SALESPROJECT_COMPETITION.SALESPROJECT_ID", vars.get("$field.SALESPROJECT_ID"))
+                                .buildSql("select CONTACT_ID from SALESPROJECT_COMPETITION", "1=2")));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/reasons/displayValueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/phase/displayValueProcess.js
similarity index 77%
rename from entity/Salesproject_entity/entityfields/reasons/displayValueProcess.js
rename to entity/SalesprojectCompetition_entity/entityfields/phase/displayValueProcess.js
index deb08ee45373586274083118dfdd81ee1b5c1c21..dda454b255debb87bb53efee72c90198cc1bb97e 100644
--- a/entity/Salesproject_entity/entityfields/reasons/displayValueProcess.js
+++ b/entity/SalesprojectCompetition_entity/entityfields/phase/displayValueProcess.js
@@ -1,6 +1,6 @@
-import("system.vars");
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectWonLost(), vars.get("$field.REASONS")));
\ No newline at end of file
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(), vars.get("$field.PHASE")));
diff --git a/entity/SalesprojectCompetition_entity/entityfields/reason/displayValueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/reason/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4058d229ee949c4c9b93c9f8bc05dda8ea3d60bc
--- /dev/null
+++ b/entity/SalesprojectCompetition_entity/entityfields/reason/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectWonLost(), vars.get("$field.REASON")));
diff --git a/entity/SalesprojectCompetition_entity/entityfields/status/displayValueProcess.js b/entity/SalesprojectCompetition_entity/entityfields/status/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9dd81c4237d60af093509d8e53ab69cd12dc7fc2
--- /dev/null
+++ b/entity/SalesprojectCompetition_entity/entityfields/status/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectState(), vars.get("$field.STATUS")));
diff --git a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod b/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod
index 42e0185aec74a5345ca1ec8f2f8dc62fc08db315..fbf0ff3b285905a417c48780fe7940f73534a02d 100644
--- a/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod
+++ b/entity/SalesprojectCycle_entity/SalesprojectCycle_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>SalesprojectCycle_entity</name>
   <title>Milestones</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
index 2ad3d06743f77e6625d908af0438484629551b21..945e940b05d1be8647b5655996ccf1b92b6d45ea 100644
--- a/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
+++ b/entity/SalesprojectForecast_entity/SalesprojectForecast_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>SalesprojectForecast_entity</name>
   <title>${FORECAST_ENGLISH}</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -19,6 +19,7 @@
       <name>GROUPCODE</name>
       <title>Product</title>
       <consumer>KeywordProductGroupcodes</consumer>
+      <displayValueProcess>%aditoprj%/entity/SalesprojectForecast_entity/entityfields/groupcode/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>INFO</name>
@@ -87,7 +88,6 @@
       <name>db</name>
       <alias>Data_alias</alias>
       <conditionProcess>%aditoprj%/entity/SalesprojectForecast_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
-      <onDBUpdate>%aditoprj%/entity/SalesprojectForecast_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
       <linkInformation>
         <linkInformation>
           <name>29b759fb-1d0a-4262-b6af-0da5f3985eb3</name>
diff --git a/entity/SalesprojectForecast_entity/entityfields/groupcode/displayValueProcess.js b/entity/SalesprojectForecast_entity/entityfields/groupcode/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..aa76ca3c491c56e830b9ad158bf584d23c8e680a
--- /dev/null
+++ b/entity/SalesprojectForecast_entity/entityfields/groupcode/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.productGroupcode(), vars.get("$field.GROUPCODE")));
diff --git a/entity/SalesprojectForecast_entity/recordcontainers/db/onDBUpdate.js b/entity/SalesprojectForecast_entity/recordcontainers/db/onDBUpdate.js
deleted file mode 100644
index ee62dca4c5b6641758a1ce2856db770d63641278..0000000000000000000000000000000000000000
--- a/entity/SalesprojectForecast_entity/recordcontainers/db/onDBUpdate.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("Salesproject_lib");
-
-Salesproject.notifyToUpdateForecast()
\ No newline at end of file
diff --git a/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod b/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
index 2dc7e8f2347fcc8bfa674d27195bfeaddb8a81b5..2208a38eba18c263299dd1e0a91247ba2ec4bd81 100644
--- a/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
+++ b/entity/SalesprojectMember_entity/SalesprojectMember_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>SalesprojectMember_entity</name>
   <title>${SALESPROJECT_MEMBER}</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -13,6 +13,7 @@
       <title>Person</title>
       <consumer>Contacts</consumer>
       <linkedContext>Person</linkedContext>
+      <mandatory v="true" />
     </entityField>
     <entityField>
       <name>SALESPROJECT_ID</name>
@@ -26,6 +27,7 @@
       <name>SALESPROJECT_ROLE</name>
       <title>Role</title>
       <consumer>KeywordMemberRoles</consumer>
+      <displayValueProcess>%aditoprj%/entity/SalesprojectMember_entity/entityfields/salesproject_role/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityProvider>
       <name>SalesprojectMembers</name>
@@ -121,6 +123,7 @@ TODO: intuitive möglichkeit, auf dend Stand aus Relation zurückzusetzen... akt
       <onValueChangeTypes>
         <element>MASK</element>
         <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
       </onValueChangeTypes>
     </entityField>
     <entityField>
@@ -135,8 +138,14 @@ TODO: intuitive möglichkeit, auf dend Stand aus Relation zurückzusetzen... akt
       <dependency>
         <name>dependency</name>
         <entityName>Person_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
+        <fieldName>Contacts</fieldName>
       </dependency>
+      <children>
+        <entityParameter>
+          <name>ExcludedContactIds_param</name>
+          <valueProcess>%aditoprj%/entity/SalesprojectMember_entity/entityfields/contacts/children/excludedcontactids_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
     </entityConsumer>
     <entityConsumer>
       <name>KeywordMemberRoles</name>
@@ -281,7 +290,7 @@ TODO: intuitive möglichkeit, auf dend Stand aus Relation zurückzusetzen... akt
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>POSITION.value</name>
-          <recordfield>CONTACT.POSTITION</recordfield>
+          <recordfield>CONTACT.POSITION</recordfield>
         </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
diff --git a/entity/SalesprojectMember_entity/entityfields/contacts/children/excludedcontactids_param/valueProcess.js b/entity/SalesprojectMember_entity/entityfields/contacts/children/excludedcontactids_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4f34874adf02c713ef4bf91664e10b946644c639
--- /dev/null
+++ b/entity/SalesprojectMember_entity/entityfields/contacts/children/excludedcontactids_param/valueProcess.js
@@ -0,0 +1,9 @@
+import("system.result");
+import("system.vars");
+import("system.db");
+import("Sql_lib");
+
+result.object(db.array(db.COLUMN, SqlCondition.begin()
+                                .andPrepare("SALESPROJECT_MEMBER.SALESPROJECT_ID", vars.get("$field.SALESPROJECT_ID"))
+                                .buildSql("select CONTACT_ID from SALESPROJECT_MEMBER", "1=2")));
+                     
\ No newline at end of file
diff --git a/entity/SalesprojectMember_entity/entityfields/salesproject_role/displayValueProcess.js b/entity/SalesprojectMember_entity/entityfields/salesproject_role/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c44ff2976cfe055a8f1ab36b33130afbd9e711b1
--- /dev/null
+++ b/entity/SalesprojectMember_entity/entityfields/salesproject_role/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectMemberRole(), vars.get("$field.SALESPROJECT_ROLE")));
diff --git a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
index 012013e756f3216e03a987f0a4a78296c84ce92b..5e469e8eb8dcda06e1306e574cf90c8d27098048 100644
--- a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
+++ b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>SalesprojectSource_entity</name>
   <title>Touchpoint</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -40,10 +40,13 @@
       <contentType>DATE</contentType>
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
+      <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/SalesprojectSource_entity/entityfields/entrydate/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>INFO</name>
       <title>Info</title>
+      <contentType>LONG_TEXT</contentType>
     </entityField>
     <entityField>
       <name>SALESPROJECT_ID</name>
@@ -57,6 +60,8 @@
       <name>SOURCE</name>
       <title>Touchpoint</title>
       <consumer>KeywordSources</consumer>
+      <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/SalesprojectSource_entity/entityfields/source/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
       <name>KeywordSources</name>
diff --git a/entity/SalesprojectSource_entity/entityfields/entrydate/valueProcess.js b/entity/SalesprojectSource_entity/entityfields/entrydate/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..994a752c908897b8d3c9fb51090d16c28a555867
--- /dev/null
+++ b/entity/SalesprojectSource_entity/entityfields/entrydate/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(vars.get("$sys.date"))
\ No newline at end of file
diff --git a/entity/SalesprojectSource_entity/entityfields/source/displayValueProcess.js b/entity/SalesprojectSource_entity/entityfields/source/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b3db4887929c1f0298807bff7610a08cdfa79e17
--- /dev/null
+++ b/entity/SalesprojectSource_entity/entityfields/source/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectSource(), vars.get("$field.SOURCE")));
diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod
index 216089b1c4d303b9afbd0371569c2035e721048f..fc82706d6730f269f6bb3b6e4c086aa88e2ae458 100644
--- a/entity/Salesproject_entity/Salesproject_entity.aod
+++ b/entity/Salesproject_entity/Salesproject_entity.aod
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Salesproject_entity</name>
   <title>Salesproject</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <afterOperatingState>%aditoprj%/entity/Salesproject_entity/afterOperatingState.js</afterOperatingState>
   <iconId>VAADIN:BOOK_DOLLAR</iconId>
   <titleProcess>%aditoprj%/entity/Salesproject_entity/titleProcess.js</titleProcess>
   <recordContainer>db</recordContainer>
@@ -11,14 +12,14 @@
       <name>#PROVIDER</name>
       <dependencies>
         <entityDependency>
-          <name>525fd920-ea50-45d6-97a8-20e0aaaa830c</name>
-          <entityName>Offer_entity</entityName>
+          <name>497657f7-ebd7-4c9c-b8ab-da447a1556e5</name>
+          <entityName>Order_entity</entityName>
           <fieldName>Salesprojects</fieldName>
           <isConsumer v="false" />
         </entityDependency>
         <entityDependency>
-          <name>497657f7-ebd7-4c9c-b8ab-da447a1556e5</name>
-          <entityName>Order_entity</entityName>
+          <name>f010781d-453d-4df3-b330-75c1336e4d4c</name>
+          <entityName>Object_entity</entityName>
           <fieldName>Salesprojects</fieldName>
           <isConsumer v="false" />
         </entityDependency>
@@ -41,6 +42,8 @@
       <title>Phase</title>
       <consumer>KeywordPhases</consumer>
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/phase/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/phase/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>PROJECTCODE</name>
@@ -61,10 +64,13 @@
       <consumer>Organisations</consumer>
       <linkedContext>Organisation</linkedContext>
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/contact_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>SALESPROJECTID</name>
       <searchable v="false" />
+      <state>AUTO</state>
     </entityField>
     <entityField>
       <name>STARTDATE</name>
@@ -80,6 +86,8 @@
       <title>Status</title>
       <consumer>KeywordStates</consumer>
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/state/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/state/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>VOLUME</name>
@@ -102,6 +110,7 @@
       <name>PROBABILITY</name>
       <title>Probability</title>
       <consumer>KeywordProbabilties</consumer>
+      <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/probability/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityConsumer>
       <name>SalesprojectSources</name>
@@ -446,13 +455,16 @@
     <entityField>
       <name>REASONS</name>
       <title>Reason</title>
-      <consumer>KeywordWonLost</consumer>
       <mandatoryProcess>%aditoprj%/entity/Salesproject_entity/entityfields/reasons/mandatoryProcess.js</mandatoryProcess>
+      <possibleItemsProcess>%aditoprj%/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js</possibleItemsProcess>
       <searchable v="true" />
       <selectionMode>MULTI</selectionMode>
       <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/reasons/stateProcess.js</stateProcess>
-      <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/reasons/valueProcess.js</valueProcess>
-      <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/reasons/displayValueProcess.js</displayValueProcess>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
     </entityField>
     <entityProvider>
       <name>Salesprojects</name>
@@ -484,6 +496,7 @@
       <name>Tasks</name>
       <title>Tasks</title>
       <fieldType>DEPENDENCY_OUT</fieldType>
+      <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/tasks/stateProcess.js</stateProcess>
       <dependency>
         <name>dependency</name>
         <entityName>Task_entity</entityName>
@@ -504,6 +517,30 @@
         </entityParameter>
       </children>
     </entityConsumer>
+    <entityProvider>
+      <name>openSalesprojects</name>
+      <fieldType>DEPENDENCY_IN</fieldType>
+      <dependencies>
+        <entityDependency>
+          <name>631f55f9-fb0f-4205-bdb8-6e3476268ab4</name>
+          <entityName>Offer_entity</entityName>
+          <fieldName>Salesprojects</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
+      <children>
+        <entityParameter>
+          <name>State_param</name>
+          <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/opensalesprojects/children/state_param/valueProcess.js</valueProcess>
+          <expose v="false" />
+        </entityParameter>
+      </children>
+    </entityProvider>
+    <entityParameter>
+      <name>State_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
@@ -513,6 +550,7 @@
       <conditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <onDBInsert>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
       <onDBUpdate>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
+      <onDBDelete>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
       <linkInformation>
         <linkInformation>
           <name>02eb2f4c-3b85-409f-ac13-c8b26804da44</name>
@@ -590,10 +628,6 @@
           <name>PHASE.displayValue</name>
           <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/phase.displayvalue/expression.js</expression>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>REASONS.displayValue</name>
-          <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/reasons.displayvalue/expression.js</expression>
-        </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>REASONS.value</name>
           <recordfield>SALESPROJECT.REASONS</recordfield>
diff --git a/entity/Salesproject_entity/afterOperatingState.js b/entity/Salesproject_entity/afterOperatingState.js
new file mode 100644
index 0000000000000000000000000000000000000000..fb90fb67eb08a580d37ed8302a987d8e56df034c
--- /dev/null
+++ b/entity/Salesproject_entity/afterOperatingState.js
@@ -0,0 +1,6 @@
+import("system.vars");
+import("system.neon");
+if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW) 
+{
+    neon.refresh();
+}
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/contact_id/displayValueProcess.js b/entity/Salesproject_entity/entityfields/contact_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..85822946ab4fe0ba7730ca93fd6fca69250a5b33
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/contact_id/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Contact_lib");
+import("system.neon");
+
+result.string(ContactUtils.getFullTitleByContactId(vars.getString("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/contact_id/valueProcess.js b/entity/Salesproject_entity/entityfields/contact_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1127220726ee436e1f878c4467fa29d976d6af80
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/contact_id/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.vars");
+
+if (vars.exists("$param.ContactId_param")) 
+{
+    result.string(vars.get("$param.ContactId_param"));
+}
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/opensalesprojects/children/state_param/valueProcess.js b/entity/Salesproject_entity/entityfields/opensalesprojects/children/state_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..9074d4eece1ed8c26040d657c5c989aa1950ac12
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/opensalesprojects/children/state_param/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.result");
+
+//The Id for the salesproject state keyword OPEN
+result.string("483bcaeb-1e5b-4772-b54e-7d7d8aa65712");
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/phase/displayValueProcess.js b/entity/Salesproject_entity/entityfields/phase/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..dda454b255debb87bb53efee72c90198cc1bb97e
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/phase/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(), vars.get("$field.PHASE")));
diff --git a/entity/Salesproject_entity/entityfields/phase/valueProcess.js b/entity/Salesproject_entity/entityfields/phase/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..90b1c491d4c722c0d5712e697b0371aea23add3c
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/phase/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value"))
+    result.string("9f7d1fa9-7c09-4037-8f7c-8458def14d89"); //NQC
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/probability/displayValueProcess.js b/entity/Salesproject_entity/entityfields/probability/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..883b399d257f7806caa70c5004c07847d77163e9
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/probability/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectProbability(), vars.get("$field.PROBABILITY")));
diff --git a/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js b/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..82ceaf9374045d62c97d1b960f3d336663b4517c
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/reasons/possibleItemsProcess.js
@@ -0,0 +1,6 @@
+import("system.logging");
+import("system.result");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.object(KeywordUtils.getEntryNamesAndIdsByContainer("SalesprojectWonLost"));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/reasons/stateProcess.js b/entity/Salesproject_entity/entityfields/reasons/stateProcess.js
index 871eb8d93a8a009c0653f8863444cd2e6a3e2eba..5e5536334c4ff87b845fff9f55a37d1e1dc06281 100644
--- a/entity/Salesproject_entity/entityfields/reasons/stateProcess.js
+++ b/entity/Salesproject_entity/entityfields/reasons/stateProcess.js
@@ -5,4 +5,4 @@ import("system.vars");
 if(vars.get("$field.STATE") && (vars.get("$field.STATE") == 'd8a60f60-a4e6-46ee-88ec-bac53e1afedd' || vars.get("$field.STATE") == '130bb53a-a97e-455e-8f34-8d445e985474'))
         result.string("EDITABLE");
 else
-        result.string("READONLY");
+        result.string("INVISIBLE");
diff --git a/entity/Salesproject_entity/entityfields/reasons/valueProcess.js b/entity/Salesproject_entity/entityfields/reasons/valueProcess.js
deleted file mode 100644
index 44b96c75cbac0c3ec6e9e23759e716de0ffab3ae..0000000000000000000000000000000000000000
--- a/entity/Salesproject_entity/entityfields/reasons/valueProcess.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import("system.neon");
-import("system.result");
-import("system.vars");
-
-if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-{
-    // IDs: SalesprojectState Order and Lost
-    var state = vars.get("$field.STATE");
-    if(state && (state != 'd8a60f60-a4e6-46ee-88ec-bac53e1afedd' && state != '130bb53a-a97e-455e-8f34-8d445e985474'))
-        result.string("");
-}
diff --git a/entity/Salesproject_entity/entityfields/salesprojectsopen/children/state_param/valueProcess.js b/entity/Salesproject_entity/entityfields/salesprojectsopen/children/state_param/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..e593be26ec8829f70c64b9efa45061cb427cb08b
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/salesprojectsopen/children/state_param/valueProcess.js
@@ -0,0 +1,5 @@
+import("system.result");
+
+
+//KeywordId for SalesprojectCompetitionState OPEN
+result.string("25b0ac77-ef92-4809-802e-bb9d8782f865")
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/state/displayValueProcess.js b/entity/Salesproject_entity/entityfields/state/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..4b194ebac26d8bb7718c2adae0a10d9d48ded35d
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/state/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectState(), vars.get("$field.STATE")));
diff --git a/entity/Salesproject_entity/entityfields/state/valueProcess.js b/entity/Salesproject_entity/entityfields/state/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..abb032b5aee7f5975d2638190fb6f782adc4e219
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/state/valueProcess.js
@@ -0,0 +1,6 @@
+import("system.neon");
+import("system.vars");
+import("system.result");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value"))
+    result.string("483bcaeb-1e5b-4772-b54e-7d7d8aa65712"); //Open
\ No newline at end of file
diff --git a/entity/Salesproject_entity/entityfields/tasks/stateProcess.js b/entity/Salesproject_entity/entityfields/tasks/stateProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..8a5375f38fda775fd00271e774f45d992d491a98
--- /dev/null
+++ b/entity/Salesproject_entity/entityfields/tasks/stateProcess.js
@@ -0,0 +1,10 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
+
+if(TaskUtils.hasTasks(vars.get("$field.SALESPROJECTID"), ContextUtils.getCurrentContextId()))
+    result.string(neon.COMPONENTSTATE_EDITABLE);
+else
+    result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js b/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js
index 6500b695cd9fdcd907e1faa86cbcbee9fcadc2ac..49d846ad22819fbcb59e5dd83febe4a886c64412 100644
--- a/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js
@@ -1,9 +1,21 @@
-import("system.db");
-import("system.result");
-import("system.vars");
-import("Sql_lib");
-
-result.string(db.translateCondition(
-                SqlCondition.begin()
-                            .andPrepareVars("SALESPROJECT.CONTACT_ID", "$param.ContactId_param")
-                            .build("1 = 1")));
\ No newline at end of file
+import("system.logging");
+import("system.db");
+import("system.result");
+import("system.vars");
+import("Sql_lib");
+
+if(vars.exists("$param.State_param") && vars.get("$param.State_param") && vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param"))
+{
+    result.string(db.translateCondition(
+                SqlCondition.begin()
+                            .andPrepareVars("SALESPROJECT.CONTACT_ID", "$param.ContactId_param")
+                            .andPrepareVars("SALESPROJECT.STATE", "$param.State_param")
+                            .build("1 = 2")));
+}
+else
+{
+    result.string(db.translateCondition(
+                SqlCondition.begin()
+                            .andPrepareVars("SALESPROJECT.CONTACT_ID", "$param.ContactId_param")
+                            .build("1 = 1")));
+}
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js b/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 0000000000000000000000000000000000000000..6d045ce9112fca4328a5253e983ff41f722cb449
--- /dev/null
+++ b/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,27 @@
+import("system.db");
+import("system.logging");
+import("system.vars");
+import("Sql_lib");
+
+var currentId = vars.getString("$field.SALESPROJECTID");
+
+if (currentId)
+{
+    var toDelete = [
+        "SALESPROJECT_COMPETITION",
+        "SALESPROJECT_CLASSIFICATION",
+        "SALESPROJECT_CYCLE",
+        "SALESPROJECT_FORECAST",
+        "SALESPROJECT_MEMBER",
+        "SALESPROJECT_SOURCE"
+    ];
+    
+    toDelete = toDelete.map(function(pTable)
+    {
+        return [pTable, SqlCondition.equals(pTable + ".SALESPROJECT_ID", currentId, "1=2")]
+    });
+    
+    db.deletes(toDelete);
+    
+    // TODO: auch Dokumente, Aktivitäten, Aufgaben, Zeiterfassungen löschen?
+}
\ No newline at end of file
diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
index b27fe6403848928e59c7fb951c689dab3fe55db0..2d558ee7cdb5dd210634cf5484ad18187e706d0b 100644
--- a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js
@@ -68,8 +68,6 @@ vars.get("$local.changed").forEach(function(fieldName) {
 if (needToUpdateForecast)
     Salesproject.notifyToUpdateForecast();
 
-neon.refresh()
-
 function _updateReasons()
 {
     var reasons = vars.getString("field.REASONS");
diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/reasons.displayvalue/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/reasons.displayvalue/expression.js
deleted file mode 100644
index c62430bd64ea66ed105355c5d58f78cfdf9a785c..0000000000000000000000000000000000000000
--- a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/reasons.displayvalue/expression.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-import("Sql_lib");
-
-var value = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectWonLost(), "SALESPROJECT.REASONS");
-result.string(value);
diff --git a/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod
index c24272e3d0d79eb282acadc538370961459116f0..c302c499c3ba684bc7ea257dcfdc5b79b7f436fd 100644
--- a/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod
+++ b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>SalutationDistinct_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <titleProcess>%aditoprj%/entity/SalutationDistinct_entity/titleProcess.js</titleProcess>
diff --git a/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod
index 3a36b6eeb4430d5a5ab04853663d41e06dbbe1c7..206419121660460994020e0001556070c15653a0 100644
--- a/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod
+++ b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>SalutationTitleDistinct_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <titleProcess>%aditoprj%/entity/SalutationTitleDistinct_entity/titleProcess.js</titleProcess>
diff --git a/entity/Social_entity/Social_entity.aod b/entity/Social_entity/Social_entity.aod
index c31125142366fa9f404761455d2ce6d90a2d36e5..6d01283d64e13588cfb6b9dc0b9736902c1d9430 100644
--- a/entity/Social_entity/Social_entity.aod
+++ b/entity/Social_entity/Social_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Social_entity</name>
   <title>Social Media</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/entity/Stock_entity/Stock_entity.aod b/entity/Stock_entity/Stock_entity.aod
index 60783345454369687e4943611c14fc4cc14cfccc..462aaaa970be9e98770573a5c1b0f2285dd82099 100644
--- a/entity/Stock_entity/Stock_entity.aod
+++ b/entity/Stock_entity/Stock_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Stock_entity</name>
   <title>Stock</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -46,6 +46,7 @@
       <title>Warehouse</title>
       <consumer>KeywordWarehouses</consumer>
       <mandatory v="true" />
+      <displayValueProcess>%aditoprj%/entity/Stock_entity/entityfields/warehouse/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityProvider>
       <name>Stocks</name>
diff --git a/entity/Stock_entity/entityfields/warehouse/displayValueProcess.js b/entity/Stock_entity/entityfields/warehouse/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..11e584c4e1c807cf94d20341bdc8308c1bb8cb1e
--- /dev/null
+++ b/entity/Stock_entity/entityfields/warehouse/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.stockWarehouse(), vars.get("$field.WAREHOUSE")));
diff --git a/entity/TaskLink_entity/TaskLink_entity.aod b/entity/TaskLink_entity/TaskLink_entity.aod
index b344727738c868237ab4e2d86201d6271f317278..36d64e1be346cbb54f2283cb654aaed28fd08822 100644
--- a/entity/TaskLink_entity/TaskLink_entity.aod
+++ b/entity/TaskLink_entity/TaskLink_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>TaskLink_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <recordContainer>db</recordContainer>
@@ -17,14 +17,13 @@
     </entityField>
     <entityField>
       <name>OBJECT_TYPE</name>
-      <title>Object type</title>
+      <title>{$OBJECTLINK_TYPE}</title>
       <consumer>Contexts</consumer>
-      <linkedContext>Context</linkedContext>
       <displayValueProcess>%aditoprj%/entity/TaskLink_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>OBJECT_ROWID</name>
-      <title>Relation</title>
+      <title>{$OBJECTLINK_OBJECT}</title>
       <consumer>Objects</consumer>
       <linkedContextProcess>%aditoprj%/entity/TaskLink_entity/entityfields/object_rowid/linkedContextProcess.js</linkedContextProcess>
       <displayValueProcess>%aditoprj%/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess>
@@ -61,7 +60,7 @@
       <dependency>
         <name>dependency</name>
         <entityName>Context_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
+        <fieldName>TaskLinkable</fieldName>
       </dependency>
     </entityConsumer>
     <entityConsumer>
diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod
index 7093a205680ce5fe771fd27b6b848b3be54a6ae0..5a6394af6a270b012f70e4325dd0bf2410126902 100644
--- a/entity/Task_entity/Task_entity.aod
+++ b/entity/Task_entity/Task_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Task_entity</name>
   <title>Task</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -62,7 +62,7 @@
     </entityField>
     <entityField>
       <name>START_DATE</name>
-      <title>start date</title>
+      <title>Begin</title>
       <contentType>DATE</contentType>
       <resolution>MINUTE</resolution>
       <groupable v="true" />
@@ -71,7 +71,7 @@
     </entityField>
     <entityField>
       <name>MATURITY_DATE</name>
-      <title>maturity date</title>
+      <title>Maturity</title>
       <contentType>DATE</contentType>
       <resolution>MINUTE</resolution>
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/maturity_date/valueProcess.js</valueProcess>
@@ -84,6 +84,7 @@
       <searchable v="false" />
       <groupable v="false" />
       <valueProcess>%aditoprj%/entity/Task_entity/entityfields/type/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Task_entity/entityfields/type/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>DESCRIPTION</name>
@@ -92,7 +93,7 @@
     </entityField>
     <entityField>
       <name>PROTECTIONLEVEL</name>
-      <title>private</title>
+      <title>Protected</title>
       <contentType>BOOLEAN</contentType>
       <contentTypeProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/contentTypeProcess.js</contentTypeProcess>
       <possibleItemsProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/possibleItemsProcess.js</possibleItemsProcess>
diff --git a/entity/Task_entity/afterUiInit.js b/entity/Task_entity/afterUiInit.js
index 6a57309c46b2c1f7d22d0ffde53a65d41e133746..bf767e8d66bdf98162be04e45d523c10384d49e9 100644
--- a/entity/Task_entity/afterUiInit.js
+++ b/entity/Task_entity/afterUiInit.js
@@ -4,5 +4,5 @@ import("ActivityTask_lib");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
 {
-    TaskUtils.addLinkRecords("$param.ObjectId_param", "$param.RowId_param", "$param.PresetLinks_param");
+    TaskUtils.addLinkRecords("$param.ObjectId_param", "$param.RowId_param", "$param.PresetLinks_param", "$field.PARENT_CONTEXT", "$field.PARENT_ID");
 }
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js b/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js
index ee76682f8edea5a240eab30e4a8dffdfe66ac907..0dde82e7728286629b1c210326725aac2ebb92c5 100644
--- a/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js
+++ b/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js
@@ -3,5 +3,6 @@ import("system.vars");
 import("Contact_lib");
 
 var id = vars.get("$this.value");
-var title = ContactUtils.getFullTitleByContactId(id);
+//show the simpel title since this will be later an employee-entry and therefore no organisation is needed
+var title = ContactUtils.getTitleByContactId(id);
 result.string(title);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/newactivity/onActionProcess.js b/entity/Task_entity/entityfields/newactivity/onActionProcess.js
index f3c7bcbb72428414e2f789b2d17b1ba40a916b18..08d17b66f940ec307e37c594b11aa9b82cf44450 100644
--- a/entity/Task_entity/entityfields/newactivity/onActionProcess.js
+++ b/entity/Task_entity/entityfields/newactivity/onActionProcess.js
@@ -1,9 +1,5 @@
-import("system.neon");
 import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
 
-var params = {
-  "ParentId_param": vars.get("$field.TASKID"),
-  "ParentContext_param": "Task"
-};
-
-neon.openContext("Activity", "ActivityEdit_view", null, neon.OPERATINGSTATE_NEW, params)
\ No newline at end of file
+ActivityUtils.createNewActivity(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.TASKID"));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/newtask/onActionProcess.js b/entity/Task_entity/entityfields/newtask/onActionProcess.js
index b4e2fd874a328729465b5f1d47f86a2352af528c..d826841f605c3229290f68124d85d3726508934d 100644
--- a/entity/Task_entity/entityfields/newtask/onActionProcess.js
+++ b/entity/Task_entity/entityfields/newtask/onActionProcess.js
@@ -1,9 +1,5 @@
-import("system.neon");
 import("system.vars");
+import("ActivityTask_lib");
+import("Context_lib");
 
-var params = {
-  "ParentId_param": vars.get("$field.TASKID"),
-  "ParentContext_param": "Task"
-};
-
-neon.openContext("Task", "TaskEdit_view", null, neon.OPERATINGSTATE_NEW, params)
\ No newline at end of file
+TaskUtils.createNewTask(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.TASKID"));
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/priority/valueProcess.js b/entity/Task_entity/entityfields/priority/valueProcess.js
index 97f66840686af1eee7e86efa71572140e845aa17..0639e8287e8797db0bd0a19c31781facd3409367 100644
--- a/entity/Task_entity/entityfields/priority/valueProcess.js
+++ b/entity/Task_entity/entityfields/priority/valueProcess.js
@@ -2,6 +2,7 @@ import("system.util");
 import("system.result");
 import("system.neon");
 import("system.vars");
+import("KeywordRegistry_basic");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string("09072b59-d12f-469b-acbd-18a28232ff70");
\ No newline at end of file
+    result.string($KeywordRegistry.taskPriority$low());
diff --git a/entity/Task_entity/entityfields/progress/valueProcess.js b/entity/Task_entity/entityfields/progress/valueProcess.js
index 50f7254139de095c53a876a40b2a86fbc83aad8f..854d3c94292f47f7eee1f245ceada6ec2704fee7 100644
--- a/entity/Task_entity/entityfields/progress/valueProcess.js
+++ b/entity/Task_entity/entityfields/progress/valueProcess.js
@@ -2,6 +2,7 @@ import("system.util");
 import("system.result");
 import("system.neon");
 import("system.vars");
+import("KeywordRegistry_basic");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string("ec92271b-eac2-4ec2-be24-ab4abde7e939");
\ No newline at end of file
+    result.string($KeywordRegistry.taskProgress$0());
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js b/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js
index ee76682f8edea5a240eab30e4a8dffdfe66ac907..0dde82e7728286629b1c210326725aac2ebb92c5 100644
--- a/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js
+++ b/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js
@@ -3,5 +3,6 @@ import("system.vars");
 import("Contact_lib");
 
 var id = vars.get("$this.value");
-var title = ContactUtils.getFullTitleByContactId(id);
+//show the simpel title since this will be later an employee-entry and therefore no organisation is needed
+var title = ContactUtils.getTitleByContactId(id);
 result.string(title);
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/start_date/valueProcess.js b/entity/Task_entity/entityfields/start_date/valueProcess.js
index 2e53ba813c3d8aa3facad3c028b720b7088bfdb0..0b43b2859aece42dabb0f256e8058c6e811677a4 100644
--- a/entity/Task_entity/entityfields/start_date/valueProcess.js
+++ b/entity/Task_entity/entityfields/start_date/valueProcess.js
@@ -8,6 +8,6 @@ if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
 {
     var presetVal = datetime.date();
     //TODO: depending on what happens in #1032274 we need to manually set the resolution to MINUTES or not (which means we've to set everything smaller than MINUTES (Seconds, etc.) to zero) 
-    presetVal = datetime.toLong(datetime.toDate(presetVal, "yyyy-MM-dd hh:mm"), "yyyy-MM-dd hh:mm");
+    presetVal = Math.floor(presetVal / datetime.ONE_MINUTE) * datetime.ONE_MINUTE;
     result.string(presetVal);
 }
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/status/valueProcess.js b/entity/Task_entity/entityfields/status/valueProcess.js
index b3253f839febecf5f8d9d92bf7e79abe8e5f5c88..fe5d8581fd1d4c730aa95a9d23345b118513674c 100644
--- a/entity/Task_entity/entityfields/status/valueProcess.js
+++ b/entity/Task_entity/entityfields/status/valueProcess.js
@@ -2,6 +2,7 @@ import("system.util");
 import("system.result");
 import("system.neon");
 import("system.vars");
+import("KeywordRegistry_basic");
 
 if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
-    result.string("21bc4d20-1a87-4247-8f7c-8d3a09631850");
\ No newline at end of file
+    result.string($KeywordRegistry.taskStatus$new());
\ No newline at end of file
diff --git a/entity/Task_entity/entityfields/type/displayValueProcess.js b/entity/Task_entity/entityfields/type/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..b8b8e7a4a31d73bf7c97f1cac68caaaa6da9093f
--- /dev/null
+++ b/entity/Task_entity/entityfields/type/displayValueProcess.js
@@ -0,0 +1,6 @@
+import("system.result");
+import("system.vars");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+
+result.string(KeywordUtils.getViewValue($KeywordRegistry.taskType(), vars.get("$field.TYPE")));
diff --git a/entity/Task_entity/entityfields/type/valueProcess.js b/entity/Task_entity/entityfields/type/valueProcess.js
index 68427766d13467b6bb55261aa6249df15cf8eacb..e1331380ae6b66c5317e8bb769149a68f057d83a 100644
--- a/entity/Task_entity/entityfields/type/valueProcess.js
+++ b/entity/Task_entity/entityfields/type/valueProcess.js
@@ -1,4 +1,5 @@
 import("system.result");
+import("KeywordRegistry_basic");
 
 // Sets the type to "Task" as default value.
-result.string("4dee8727-8299-422e-ae41-6cdf9de2dfd7");
\ No newline at end of file
+result.string($KeywordRegistry.taskType$Task());
\ No newline at end of file
diff --git a/entity/Task_entity/recordcontainers/db/onDBDelete.js b/entity/Task_entity/recordcontainers/db/onDBDelete.js
index 7857f671302c87c59f3123e3329ff7057a6b0e20..d19d38f6e972d7759782100f4a94d41fd3dd7944 100644
--- a/entity/Task_entity/recordcontainers/db/onDBDelete.js
+++ b/entity/Task_entity/recordcontainers/db/onDBDelete.js
@@ -5,5 +5,4 @@ import("Sql_lib");
 var condition = SqlCondition.begin()
     .andPrepareVars("TASKLINK.TASK_ID", "$field.TASKID");
 
-db.deleteData("TASKLINK", condition.build("1=2"));
-
+db.deleteData("TASKLINK", condition.build("1=2"));
\ No newline at end of file
diff --git a/entity/Timetracking_entity/Timetracking_entity.aod b/entity/Timetracking_entity/Timetracking_entity.aod
index 2030ef770a552d169b3996289c96c71cc605ace7..621e193b43e4142e3a8588ba17876d95cb549f77 100644
--- a/entity/Timetracking_entity/Timetracking_entity.aod
+++ b/entity/Timetracking_entity/Timetracking_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Timetracking_entity</name>
   <title>Timetracking</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -18,6 +18,7 @@
       <title>Time</title>
       <contentType>TEXT</contentType>
       <mandatory v="true" />
+      <titleProcess>%aditoprj%/entity/Timetracking_entity/entityfields/minutes/titleProcess.js</titleProcess>
       <displayValueProcess>%aditoprj%/entity/Timetracking_entity/entityfields/minutes/displayValueProcess.js</displayValueProcess>
       <onValidation>%aditoprj%/entity/Timetracking_entity/entityfields/minutes/onValidation.js</onValidation>
     </entityField>
@@ -36,9 +37,11 @@
     <entityField>
       <name>CONTACT_ID</name>
       <title>Creator</title>
-      <consumer>Contacts</consumer>
+      <consumer>Employees</consumer>
       <linkedContext>Person</linkedContext>
       <mandatory v="true" />
+      <valueProcess>%aditoprj%/entity/Timetracking_entity/entityfields/contact_id/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/Timetracking_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>TIMETRACKINGID</name>
@@ -86,12 +89,12 @@
       </children>
     </entityProvider>
     <entityConsumer>
-      <name>Contacts</name>
+      <name>Employees</name>
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>Person_entity</entityName>
-        <fieldName>#PROVIDER</fieldName>
+        <entityName>Employee_entity</entityName>
+        <fieldName>Employees</fieldName>
       </dependency>
     </entityConsumer>
   </entityFields>
diff --git a/entity/Timetracking_entity/entityfields/contact_id/displayValueProcess.js b/entity/Timetracking_entity/entityfields/contact_id/displayValueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..a9e1c2fa99ddfab936a76d35c028e39c48344b45
--- /dev/null
+++ b/entity/Timetracking_entity/entityfields/contact_id/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+result.string(ContactUtils.getTitleByContactId(vars.get("$field.CONTACT_ID")));
\ No newline at end of file
diff --git a/entity/Timetracking_entity/entityfields/contact_id/valueProcess.js b/entity/Timetracking_entity/entityfields/contact_id/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..1e62e7551ccb20b0b0d7aca34f64b6e448b5dda7
--- /dev/null
+++ b/entity/Timetracking_entity/entityfields/contact_id/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.result");
+import("system.neon");
+import("system.vars");
+import("Employee_lib");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(EmployeeUtils.getCurrentContactId());
\ No newline at end of file
diff --git a/entity/Timetracking_entity/entityfields/minutes/titleProcess.js b/entity/Timetracking_entity/entityfields/minutes/titleProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..c089b7246e8008c3b2c13874ed0f7b0cc8079cf1
--- /dev/null
+++ b/entity/Timetracking_entity/entityfields/minutes/titleProcess.js
@@ -0,0 +1,9 @@
+import("system.translate");
+import("system.result");
+import("system.neon");
+import("system.vars");
+
+if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    result.string(translate.text("Time in minutes"));
+}
\ No newline at end of file
diff --git a/entity/Turnover_entity/Turnover_entity.aod b/entity/Turnover_entity/Turnover_entity.aod
index 0197b2a6a5b4682c3b9d3aedce78be18cf07ef8c..8f155f79dea63a4c61b97c4bafcab6e3f0a6c337 100644
--- a/entity/Turnover_entity/Turnover_entity.aod
+++ b/entity/Turnover_entity/Turnover_entity.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.0">
+<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.1">
   <name>Turnover_entity</name>
   <title>Turnover</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 1be3f6f961b8baac44e196d6392bdedc05a5767d..d879997ad260f2afece34d77e0eab26400fcba93 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -705,9 +705,6 @@
     <entry>
       <key>standard email</key>
     </entry>
-    <entry>
-      <key>standard phone</key>
-    </entry>
     <entry>
       <key>Creator</key>
     </entry>
@@ -1005,9 +1002,6 @@
     <entry>
       <key>{$TASK_REQUESTOR}</key>
     </entry>
-    <entry>
-      <key>start date</key>
-    </entry>
     <entry>
       <key>task number</key>
     </entry>
@@ -1026,9 +1020,6 @@
     <entry>
       <key>Seite</key>
     </entry>
-    <entry>
-      <key>Note</key>
-    </entry>
     <entry>
       <key>Senden per E-Mail</key>
     </entry>
@@ -1038,9 +1029,6 @@
     <entry>
       <key>Betreff</key>
     </entry>
-    <entry>
-      <key>private</key>
-    </entry>
     <entry>
       <key>title</key>
     </entry>
@@ -1089,9 +1077,6 @@
     <entry>
       <key>details</key>
     </entry>
-    <entry>
-      <key>maturity date</key>
-    </entry>
     <entry>
       <key>Contact type</key>
     </entry>
@@ -1164,9 +1149,6 @@
     <entry>
       <key>Attribute Usage</key>
     </entry>
-    <entry>
-      <key>Beziehung</key>
-    </entry>
     <entry>
       <key>Key</key>
     </entry>
@@ -2420,9 +2402,6 @@
     <entry>
       <key>ex works</key>
     </entry>
-    <entry>
-      <key>Relation</key>
-    </entry>
     <entry>
       <key>30 days net</key>
       <value></value>
@@ -2440,19 +2419,415 @@
       <key>Contactrole</key>
     </entry>
     <entry>
-      <key>new contact</key>
+      <key>Object tree</key>
     </entry>
     <entry>
-      <key>Posistion</key>
+      <key>New appointment</key>
     </entry>
     <entry>
-      <key>Object tree</key>
+      <key>&amp;Aufg / Term (%0/%1)</key>
+    </entry>
+    <entry>
+      <key>Verschieben auf Datum?</key>
+    </entry>
+    <entry>
+      <key>niedrig</key>
+    </entry>
+    <entry>
+      <key>Gebucht</key>
+    </entry>
+    <entry>
+      <key>Other Contactroles</key>
+    </entry>
+    <entry>
+      <key>Bitte Datumseingabe prüfen!</key>
+    </entry>
+    <entry>
+      <key>In Bearbeitung</key>
+    </entry>
+    <entry>
+      <key>OK</key>
+    </entry>
+    <entry>
+      <key>Nicht begonnen</key>
+    </entry>
+    <entry>
+      <key>Bitte Filterbedingungen setzen</key>
+    </entry>
+    <entry>
+      <key>Bestätigt</key>
+    </entry>
+    <entry>
+      <key>Vorläufig</key>
+    </entry>
+    <entry>
+      <key>keine</key>
+    </entry>
+    <entry>
+      <key>Eine private Aufgabe kann nicht jemand anderem zugewiesen werden.</key>
+    </entry>
+    <entry>
+      <key>Aufgaben von</key>
+    </entry>
+    <entry>
+      <key>&amp;Aufgaben (%0)</key>
+    </entry>
+    <entry>
+      <key>erledigt / zurückgestellt</key>
+    </entry>
+    <entry>
+      <key>hoch</key>
+    </entry>
+    <entry>
+      <key>Keine Berechtigung zum Verschieben der Aufgabe</key>
+    </entry>
+    <entry>
+      <key>Zurückgestellt</key>
+    </entry>
+    <entry>
+      <key>Erledigt</key>
+    </entry>
+    <entry>
+      <key>Usages</key>
+    </entry>
+    <entry>
+      <key>Abgesagt</key>
+    </entry>
+    <entry>
+      <key>Außer Haus</key>
+    </entry>
+    <entry>
+      <key>Abbrechen</key>
+    </entry>
+    <entry>
+      <key>Benutzer auswählen</key>
+    </entry>
+    <entry>
+      <key>delegiert</key>
+    </entry>
+    <entry>
+      <key>frei</key>
+    </entry>
+    <entry>
+      <key>Kein Weitergeben von privaten Aufgaben möglich!</key>
+    </entry>
+    <entry>
+      <key>%0 Aufgabe(n) erfolgreich weitergegeben an: %1</key>
+    </entry>
+    <entry>
+      <key>normal</key>
+    </entry>
+    <entry>
+      <key>Termine von</key>
+    </entry>
+    <entry>
+      <key>nur Verschiebung in die Zukunft erlaubt!</key>
+    </entry>
+    <entry>
+      <key>Kategorie</key>
+    </entry>
+    <entry>
+      <key>Product content</key>
+    </entry>
+    <entry>
+      <key>Know How</key>
+    </entry>
+    <entry>
+      <key>Personal appearance</key>
+    </entry>
+    <entry>
+      <key>Market situation</key>
+    </entry>
+    <entry>
+      <key>Liquidity</key>
+    </entry>
+    <entry>
+      <key>Price policy</key>
+    </entry>
+    <entry>
+      <key>360 Degree</key>
+    </entry>
+    <entry>
+      <key>VAT in %</key>
+    </entry>
+    <entry>
+      <key>${QUANTITY_LOWER_THAN_1}</key>
+    </entry>
+    <entry>
+      <key>This combination of person and organisation does already exist and can not be created once more.</key>
+    </entry>
+    <entry>
+      <key>New module</key>
+    </entry>
+    <entry>
+      <key>Time in minutes</key>
+    </entry>
+    <entry>
+      <key>Sales manager</key>
+    </entry>
+    <entry>
+      <key>IT</key>
+    </entry>
+    <entry>
+      <key>Administrator</key>
+    </entry>
+    <entry>
+      <key>Managing director</key>
+    </entry>
+    <entry>
+      <key>Production manager</key>
+    </entry>
+    <entry>
+      <key>Production</key>
+    </entry>
+    <entry>
+      <key>CEO</key>
+    </entry>
+    <entry>
+      <key>Purchasing manager</key>
+    </entry>
+    <entry>
+      <key>Marketing manager</key>
+    </entry>
+    <entry>
+      <key>IT manager</key>
+    </entry>
+    <entry>
+      <key>Marketing</key>
+    </entry>
+    <entry>
+      <key>CSO</key>
+    </entry>
+    <entry>
+      <key>Executive board</key>
+    </entry>
+    <entry>
+      <key>Supervisory board</key>
+    </entry>
+    <entry>
+      <key>Management</key>
+    </entry>
+    <entry>
+      <key>date of birth must not be in the future</key>
+    </entry>
+    <entry>
+      <key>Manufacturer</key>
+    </entry>
+    <entry>
+      <key>Prospective customer</key>
+    </entry>
+    <entry>
+      <key>Competitor</key>
+    </entry>
+    <entry>
+      <key>Partner</key>
+    </entry>
+    <entry>
+      <key>Attribute Tree</key>
+    </entry>
+    <entry>
+      <key>True</key>
+    </entry>
+    <entry>
+      <key>False</key>
+    </entry>
+    <entry>
+      <key>false</key>
+    </entry>
+    <entry>
+      <key>true</key>
+    </entry>
+    <entry>
+      <key>Protected</key>
+    </entry>
+    <entry>
+      <key>${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3</key>
+    </entry>
+    <entry>
+      <key>Password</key>
+    </entry>
+    <entry>
+      <key>Confirm password</key>
+    </entry>
+    <entry>
+      <key>Set password</key>
+    </entry>
+    <entry>
+      <key>Email</key>
+    </entry>
+    <entry>
+      <key>{$OBJECTLINK_TYPE}</key>
+    </entry>
+    <entry>
+      <key>{$OBJECTLINK_OBJECT}</key>
+    </entry>
+    <entry>
+      <key>Roles</key>
+    </entry>
+    <entry>
+      <key>Password and confirmation must be the same!</key>
+    </entry>
+    <entry>
+      <key>Begin</key>
+    </entry>
+    <entry>
+      <key>Maturity</key>
+    </entry>
+    <entry>
+      <key>Stored selections</key>
+    </entry>
+    <entry>
+      <key>Username</key>
+    </entry>
+    <entry>
+      <key>The person is already associated with another employee!</key>
+    </entry>
+    <entry>
+      <key>Username already exists!</key>
+    </entry>
+    <entry>
+      <key>Salesproject Phases</key>
+    </entry>
+    <entry>
+      <key>Turnover actual year</key>
+    </entry>
+    <entry>
+      <key>Forecast actual year</key>
+    </entry>
+    <entry>
+      <key>This private person doeas already exist and can not be created once more.</key>
+    </entry>
+    <entry>
+      <key>Everyone</key>
+    </entry>
+    <entry>
+      <key>Project</key>
+    </entry>
+    <entry>
+      <key>Human resources</key>
+    </entry>
+    <entry>
+      <key>Project management</key>
+    </entry>
+    <entry>
+      <key>Office staff</key>
+    </entry>
+    <entry>
+      <key>Field staff</key>
+    </entry>
+    <entry>
+      <key>Resource</key>
+    </entry>
+    <entry>
+      <key>Human Resources</key>
+    </entry>
+    <entry>
+      <key>The title already exists!</key>
+    </entry>
+    <entry>
+      <key>Note</key>
+    </entry>
+    <entry>
+      <key>Email must be unique!</key>
+    </entry>
+    <entry>
+      <key>Project Management</key>
+    </entry>
+    <entry>
+      <key>Support</key>
+    </entry>
+    <entry>
+      <key>{$ADDRESS_IDENTIFIER}</key>
+    </entry>
+    <entry>
+      <key>Salesproject phases</key>
+    </entry>
+    <entry>
+      <key>Object type 1</key>
+    </entry>
+    <entry>
+      <key>Object type 2</key>
+    </entry>
+    <entry>
+      <key>Objectrelation type</key>
+    </entry>
+    <entry>
+      <key>Key figures</key>
+    </entry>
+    <entry>
+      <key>Delete all usage</key>
+    </entry>
+    <entry>
+      <key>Deleted all usages of \"%0\".</key>
+    </entry>
+    <entry>
+      <key>promotion target ofc</key>
+    </entry>
+    <entry>
+      <key>Successful</key>
+    </entry>
+    <entry>
+      <key>Relation type 1</key>
+    </entry>
+    <entry>
+      <key>Relation type 2</key>
+    </entry>
+    <entry>
+      <key>Relation type</key>
+    </entry>
+    <entry>
+      <key>Context 1</key>
+    </entry>
+    <entry>
+      <key>Context 2</key>
+    </entry>
+    <entry>
+      <key>Title 1</key>
+    </entry>
+    <entry>
+      <key>Title 2</key>
+    </entry>
+    <entry>
+      <key>Hierarchy</key>
+    </entry>
+    <entry>
+      <key>Object relation</key>
+    </entry>
+    <entry>
+      <key>Type 2 enabled</key>
+    </entry>
+    <entry>
+      <key>test1eee</key>
+    </entry>
+    <entry>
+      <key>Kennzahlen</key>
+    </entry>
+    <entry>
+      <key>Count</key>
+    </entry>
+    <entry>
+      <key>Forecast actual year </key>
+    </entry>
+    <entry>
+      <key>test2</key>
+    </entry>
+    <entry>
+      <key>Picture</key>
+    </entry>
+    <entry>
+      <key>Chart</key>
+    </entry>
+    <entry>
+      <key>Salesproject Charts</key>
+    </entry>
+    <entry>
+      <key>Relation</key>
     </entry>
     <entry>
-      <key>New Appointment</key>
+      <key>Tochter</key>
     </entry>
     <entry>
-      <key>New contact</key>
+      <key>Zeigt wie viele Vertriebsprojekte in den einzelnen Vertriebsphasen sind. </key>
     </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 58d292f3c4b2c4a7494d74821f1aed077c13b87e..418ed9962b822f3d766434ef0b1ad623d6d61bf4 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -6,14 +6,38 @@
   <country></country>
   <variant></variant>
   <keyValueMap>
+    <entry>
+      <key>Project management</key>
+      <value>Projektmanagement</value>
+    </entry>
     <entry>
       <key>Company</key>
       <value>Firma</value>
     </entry>
+    <entry>
+      <key>Picture</key>
+      <value>Bild</value>
+    </entry>
+    <entry>
+      <key>Office staff</key>
+      <value>Innendienst</value>
+    </entry>
+    <entry>
+      <key>Confirm password</key>
+      <value>Passwort prüfen</value>
+    </entry>
+    <entry>
+      <key>Human Resources</key>
+      <value>Personal</value>
+    </entry>
     <entry>
       <key>Entrydate (Day)</key>
       <value>Eingangsdatum (Tag)</value>
     </entry>
+    <entry>
+      <key>Salesproject phases</key>
+      <value>Vertriebsprojektphasen</value>
+    </entry>
     <entry>
       <key>Turnover</key>
       <value>Umsatz</value>
@@ -22,6 +46,10 @@
       <key>Discount %</key>
       <value>Rabatt %</value>
     </entry>
+    <entry>
+      <key>Email must be unique!</key>
+      <value>Die E-Mail-Adresse muss eindeutig sein!</value>
+    </entry>
     <entry>
       <key>E-Mail</key>
       <value>E-Mail</value>
@@ -46,10 +74,18 @@
       <key>${ADDRESS_STATE}</key>
       <value>Staat</value>
     </entry>
+    <entry>
+      <key>New module</key>
+      <value>Neuanlage</value>
+    </entry>
     <entry>
       <key>Show all contracts</key>
       <value>Alle Verträge anzeigen</value>
     </entry>
+    <entry>
+      <key>This combination of person and organisation does already exist and can not be created once more.</key>
+      <value>Diese Kombination aus Person und Organisation existiert bereits und kann daher nicht noch ein mal angelegt werden.</value>
+    </entry>
     <entry>
       <key>Communication data</key>
       <value>Kommunikationsdaten</value>
@@ -62,6 +98,10 @@
       <key>Filename</key>
       <value>Dateiname</value>
     </entry>
+    <entry>
+      <key>Stored selections</key>
+      <value>Gespeicherte Suchen</value>
+    </entry>
     <entry>
       <key>Male</key>
       <value>Männlich</value>
@@ -86,6 +126,10 @@
       <key>Customercode</key>
       <value>Kundennummer</value>
     </entry>
+    <entry>
+      <key>The person is already associated with another employee!</key>
+      <value>Die Person ist bereits mit einem anderen Mitarbeiter verknüpft!</value>
+    </entry>
     <entry>
       <key>Time expenses</key>
       <value>Aufwand</value>
@@ -102,6 +146,14 @@
       <key>${SALESPROJECT_MEMBER}</key>
       <value>Projektteam</value>
     </entry>
+    <entry>
+      <key>${QUANTITY_LOWER_THAN_1}</key>
+      <value>Die Menge muss mindestens 1 sein.</value>
+    </entry>
+    <entry>
+      <key>date of birth must not be in the future</key>
+      <value>Geburtsdatum darf nicht in der Zukunft liegen</value>
+    </entry>
     <entry>
       <key>Days inactive</key>
       <value>Tage inaktiv</value>
@@ -126,6 +178,10 @@
       <key>Online-Meeting</key>
       <value>Online-Meeting</value>
     </entry>
+    <entry>
+      <key>Set password</key>
+      <value>Passwort setzen</value>
+    </entry>
     <entry>
       <key>Choose address</key>
       <value>Adresse auswählen</value>
@@ -152,6 +208,11 @@
     </entry>
     <entry>
       <key>[%0]the given keyword \"%1\" has no match with the possible keywordlist</key>
+      <value></value>
+    </entry>
+    <entry>
+      <key>360 Degree</key>
+      <value>360 Grad</value>
     </entry>
     <entry>
       <key>Activities</key>
@@ -204,10 +265,6 @@
       <key>Addresses</key>
       <value>Adressen</value>
     </entry>
-    <entry>
-      <key>New Appointment</key>
-      <value>Neuer Termin</value>
-    </entry>
     <entry>
       <key>Contact type</key>
       <value>Kontaktart</value>
@@ -343,6 +400,10 @@
       <key>Touchpoints</key>
       <value>Kontaktpunkte</value>
     </entry>
+    <entry>
+      <key>Attribute Tree</key>
+      <value>Eigenschaftsbaum</value>
+    </entry>
     <entry>
       <key>Company Addresses</key>
       <value>Firmenadressen</value>
@@ -1018,6 +1079,10 @@
       <key>responsible</key>
       <value>verantwortlich</value>
     </entry>
+    <entry>
+      <key>False</key>
+      <value>Nein</value>
+    </entry>
     <entry>
       <key>Show all Facebook posts of a user</key>
       <value>Alle Facebook Beiträge eines Benutzers anzeigen</value>
@@ -1026,6 +1091,10 @@
       <key>My Activities</key>
       <value>Meine Aktivitäten</value>
     </entry>
+    <entry>
+      <key>Everyone</key>
+      <value>Jeder</value>
+    </entry>
     <entry>
       <key>Combobox Value</key>
       <value>Combobox-Wert</value>
@@ -1160,6 +1229,10 @@
     <entry>
       <key>ISO 3166-1 alpha-2</key>
     </entry>
+    <entry>
+      <key>Field staff</key>
+      <value>Außendienst</value>
+    </entry>
     <entry>
       <key>0.00</key>
     </entry>
@@ -1252,10 +1325,6 @@
       <key>standard email</key>
       <value>Standard-Email</value>
     </entry>
-    <entry>
-      <key>standard phone</key>
-      <value>Standard-Telefon</value>
-    </entry>
     <entry>
       <key>Creator</key>
       <value>Ersteller</value>
@@ -1304,7 +1373,7 @@
     </entry>
     <entry>
       <key>Attributes</key>
-      <value>Attribute</value>
+      <value>Eigenschaften</value>
     </entry>
     <entry>
       <key>Facebook</key>
@@ -1417,10 +1486,6 @@
     <entry>
       <key>asdf</key>
     </entry>
-    <entry>
-      <key>maturity date</key>
-      <value>Fälligkeitsdatum</value>
-    </entry>
     <entry>
       <key>{$TASK_STATUS}</key>
       <value>Status</value>
@@ -1437,10 +1502,6 @@
       <key>{$TASK_REQUESTOR}</key>
       <value>Anforderer</value>
     </entry>
-    <entry>
-      <key>start date</key>
-      <value>Beginndatum</value>
-    </entry>
     <entry>
       <key>task number</key>
       <value>Aufgabennummer</value>
@@ -1464,10 +1525,6 @@
     <entry>
       <key>Seite</key>
     </entry>
-    <entry>
-      <key>Note</key>
-      <value>Notiz</value>
-    </entry>
     <entry>
       <key>Senden per E-Mail</key>
     </entry>
@@ -1477,10 +1534,6 @@
     <entry>
       <key>Betreff</key>
     </entry>
-    <entry>
-      <key>private</key>
-      <value>privat</value>
-    </entry>
     <entry>
       <key>title</key>
       <value>Titel</value>
@@ -1547,6 +1600,9 @@
     <entry>
       <key>Kundenstammblatt</key>
     </entry>
+    <entry>
+      <key>Key figures</key>
+    </entry>
     <entry>
       <key>Person</key>
     </entry>
@@ -1584,7 +1640,7 @@
     </entry>
     <entry>
       <key>Attribute Relation</key>
-      <value>Attributbeziehung</value>
+      <value>Eigenschaftsbeziehung</value>
     </entry>
     <entry>
       <key>My Dashboard</key>
@@ -1592,17 +1648,14 @@
     </entry>
     <entry>
       <key>Attribute Usage</key>
-      <value>Attributverwendung</value>
-    </entry>
-    <entry>
-      <key>Beziehung</key>
+      <value>Eigenschaftsverwendung</value>
     </entry>
     <entry>
       <key>Key</key>
     </entry>
     <entry>
       <key>Attribute</key>
-      <value>Attribut</value>
+      <value>Eigenschaft</value>
     </entry>
     <entry>
       <key>Container</key>
@@ -1910,7 +1963,7 @@
     </entry>
     <entry>
       <key>Superordinate Attribute</key>
-      <value>Ãœbergeordnetes Attribut</value>
+      <value>Ãœbergeordnete Eigenschaft</value>
     </entry>
     <entry>
       <key>Kyrgyzstan</key>
@@ -2488,6 +2541,10 @@
       <key>Christmas Island</key>
       <value>Weihnachtsinsel</value>
     </entry>
+    <entry>
+      <key>Project</key>
+      <value>Projekt</value>
+    </entry>
     <entry>
       <key>Netherlands</key>
       <value>Niederlande</value>
@@ -2564,6 +2621,10 @@
       <key>Internal</key>
       <value>intern</value>
     </entry>
+    <entry>
+      <key>Roles</key>
+      <value>Rollen</value>
+    </entry>
     <entry>
       <key>Brunei Darussalam</key>
       <value>Brunei Darussalam</value>
@@ -2580,6 +2641,10 @@
       <key>Congo (Democratic Republic of the)</key>
       <value>Kongo (Demokratische Republik)</value>
     </entry>
+    <entry>
+      <key>Resource</key>
+      <value>Ressource</value>
+    </entry>
     <entry>
       <key>Greece</key>
       <value>Griechenland</value>
@@ -2692,6 +2757,10 @@
       <key>Hong Kong</key>
       <value>Hongkong</value>
     </entry>
+    <entry>
+      <key>Password</key>
+      <value>Passwort</value>
+    </entry>
     <entry>
       <key>Chad</key>
       <value>Tschad</value>
@@ -2949,14 +3018,14 @@
     </entry>
     <entry>
       <key>Keyword Attribute</key>
-      <value>Schlüsselwort-Attribut</value>
+      <value>Schlüsselwort-Eigenschaft</value>
     </entry>
     <entry>
       <key>in</key>
     </entry>
     <entry>
       <key>Keyword Attribute Values</key>
-      <value>Schlüsselwort-Attribut-Werte</value>
+      <value>Schlüsselwort-Eigenschaft-Werte</value>
     </entry>
     <entry>
       <key>Boolean value</key>
@@ -3049,7 +3118,7 @@
     </entry>
     <entry>
       <key>competitor</key>
-      <value>Konkurrent</value>
+      <value>Mitbewerber</value>
     </entry>
     <entry>
       <key>0%</key>
@@ -3122,6 +3191,10 @@
       <key>Function</key>
       <value>Funktion</value>
     </entry>
+    <entry>
+      <key>Username already exists!</key>
+      <value>Der Benutzername existiert bereits!</value>
+    </entry>
     <entry>
       <key>Relational</key>
     </entry>
@@ -3162,9 +3235,6 @@
       <key>ex works</key>
       <value>ab Werk</value>
     </entry>
-    <entry>
-      <key>Relation</key>
-    </entry>
     <entry>
       <key>Payment term</key>
       <value>Zahlungsbedingung</value>
@@ -3178,18 +3248,389 @@
       <value>Funktion</value>
     </entry>
     <entry>
-      <key>New contact</key>
-      <value>Neuer Kontakt</value>
+      <key>Object tree</key>
+      <value>Beziehungen</value>
     </entry>
     <entry>
-      <key>Posistion</key>
+      <key>&amp;Aufg / Term (%0/%1)</key>
     </entry>
     <entry>
-      <key>Object tree</key>
+      <key>Verschieben auf Datum?</key>
+    </entry>
+    <entry>
+      <key>niedrig</key>
+    </entry>
+    <entry>
+      <key>Gebucht</key>
+    </entry>
+    <entry>
+      <key>Other Contactroles</key>
+      <value>Weitere Funktionen</value>
+    </entry>
+    <entry>
+      <key>Bitte Datumseingabe prüfen!</key>
+    </entry>
+    <entry>
+      <key>In Bearbeitung</key>
+    </entry>
+    <entry>
+      <key>OK</key>
+    </entry>
+    <entry>
+      <key>Nicht begonnen</key>
+    </entry>
+    <entry>
+      <key>Bitte Filterbedingungen setzen</key>
+    </entry>
+    <entry>
+      <key>Bestätigt</key>
+    </entry>
+    <entry>
+      <key>True</key>
+      <value>Ja</value>
+    </entry>
+    <entry>
+      <key>Vorläufig</key>
+    </entry>
+    <entry>
+      <key>keine</key>
+    </entry>
+    <entry>
+      <key>Eine private Aufgabe kann nicht jemand anderem zugewiesen werden.</key>
+    </entry>
+    <entry>
+      <key>Aufgaben von</key>
+    </entry>
+    <entry>
+      <key>&amp;Aufgaben (%0)</key>
+    </entry>
+    <entry>
+      <key>erledigt / zurückgestellt</key>
+    </entry>
+    <entry>
+      <key>hoch</key>
+    </entry>
+    <entry>
+      <key>Keine Berechtigung zum Verschieben der Aufgabe</key>
+    </entry>
+    <entry>
+      <key>Zurückgestellt</key>
+    </entry>
+    <entry>
+      <key>Erledigt</key>
+    </entry>
+    <entry>
+      <key>Usages</key>
+    </entry>
+    <entry>
+      <key>Abgesagt</key>
+    </entry>
+    <entry>
+      <key>Außer Haus</key>
+    </entry>
+    <entry>
+      <key>Abbrechen</key>
+    </entry>
+    <entry>
+      <key>Benutzer auswählen</key>
+    </entry>
+    <entry>
+      <key>delegiert</key>
+    </entry>
+    <entry>
+      <key>frei</key>
+    </entry>
+    <entry>
+      <key>Kein Weitergeben von privaten Aufgaben möglich!</key>
+    </entry>
+    <entry>
+      <key>%0 Aufgabe(n) erfolgreich weitergegeben an: %1</key>
+    </entry>
+    <entry>
+      <key>Username</key>
+      <value>Benutzername</value>
+    </entry>
+    <entry>
+      <key>normal</key>
+    </entry>
+    <entry>
+      <key>Termine von</key>
+    </entry>
+    <entry>
+      <key>nur Verschiebung in die Zukunft erlaubt!</key>
+    </entry>
+    <entry>
+      <key>Kategorie</key>
+    </entry>
+    <entry>
+      <key>Product content</key>
+      <value>Produktinhalt</value>
+    </entry>
+    <entry>
+      <key>Know How</key>
+      <value>Know How</value>
+    </entry>
+    <entry>
+      <key>Personal appearance</key>
+      <value>Persönliches Auftreten</value>
+    </entry>
+    <entry>
+      <key>Market situation</key>
+      <value>Marktsituation</value>
+    </entry>
+    <entry>
+      <key>Liquidity</key>
+      <value>Liquidität</value>
+    </entry>
+    <entry>
+      <key>Price policy</key>
+      <value>Preispolitik</value>
+    </entry>
+    <entry>
+      <key>VAT in %</key>
+      <value>UmsSt. in %</value>
+    </entry>
+    <entry>
+      <key>Time in minutes</key>
+      <value>Zeit in Minuten</value>
+    </entry>
+    <entry>
+      <key>Sales manager</key>
+      <value>Vertriebsleiter</value>
+    </entry>
+    <entry>
+      <key>IT</key>
+    </entry>
+    <entry>
+      <key>Administrator</key>
+    </entry>
+    <entry>
+      <key>Managing director</key>
+      <value>Geschäftsführer</value>
+    </entry>
+    <entry>
+      <key>Production manager</key>
+      <value>Produktionsleiter</value>
+    </entry>
+    <entry>
+      <key>Production</key>
+      <value>Produktion</value>
+    </entry>
+    <entry>
+      <key>CEO</key>
+    </entry>
+    <entry>
+      <key>Purchasing manager</key>
+      <value>Einkaufsleiter</value>
+    </entry>
+    <entry>
+      <key>Marketing manager</key>
+      <value>Marketingleiter</value>
+    </entry>
+    <entry>
+      <key>IT manager</key>
+      <value>IT-Leiter</value>
+    </entry>
+    <entry>
+      <key>Marketing</key>
+    </entry>
+    <entry>
+      <key>CSO</key>
+    </entry>
+    <entry>
+      <key>Executive board</key>
+      <value>Vorstand</value>
+    </entry>
+    <entry>
+      <key>Supervisory board</key>
+      <value>Aufsichtsrat</value>
+    </entry>
+    <entry>
+      <key>Management</key>
+    </entry>
+    <entry>
+      <key>Manufacturer</key>
+      <value>Hersteller</value>
+    </entry>
+    <entry>
+      <key>Prospective customer</key>
+      <value>Potenzieller Kunde</value>
+    </entry>
+    <entry>
+      <key>Competitor</key>
+      <value>Mitbewerber</value>
+    </entry>
+    <entry>
+      <key>Partner</key>
+      <value>Partner</value>
+    </entry>
+    <entry>
+      <key>Protected</key>
+      <value>Geschützt</value>
+    </entry>
+    <entry>
+      <key>false</key>
+    </entry>
+    <entry>
+      <key>true</key>
+    </entry>
+    <entry>
+      <key>${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3</key>
+      <value>%0 muss zwischen %2 und %3 sein.</value>
+    </entry>
+    <entry>
+      <key>Email</key>
+      <value>E-Mail</value>
+    </entry>
+    <entry>
+      <key>{$OBJECTLINK_TYPE}</key>
+      <value>Art</value>
+    </entry>
+    <entry>
+      <key>{$OBJECTLINK_OBJECT}</key>
+      <value>Objekt</value>
+    </entry>
+    <entry>
+      <key>Password and confirmation must be the same!</key>
+      <value>Die Passwörter stimmen nicht überein!</value>
+    </entry>
+    <entry>
+      <key>Begin</key>
+      <value>Beginn</value>
+    </entry>
+    <entry>
+      <key>Maturity</key>
+      <value>Fällig</value>
+    </entry>
+    <entry>
+      <key>This private person doeas already exist and can not be created once more.</key>
+      <value>Diese Privatperson existiert bereits und kann daher nicht noch ein mal angelegt werden.</value>
+    </entry>
+    <entry>
+      <key>The title already exists!</key>
+    </entry>
+    <entry>
+      <key>Human resources</key>
+    </entry>
+    <entry>
+      <key>Note</key>
+    </entry>
+    <entry>
+      <key>Project Management</key>
+    </entry>
+    <entry>
+      <key>Support</key>
+    </entry>
+    <entry>
+      <key>{$ADDRESS_IDENTIFIER}</key>
+      <value>Bezeichnung</value>
+    </entry>
+    <entry>
+      <key>Turnover actual year</key>
+      <value>Umsatz aktuelles Jahr</value>
+    </entry>
+    <entry>
+      <key>Forecast actual year</key>
+      <value>Forecast aktuelles Jahr</value>
+    </entry>
+    <entry>
+      <key>Salesproject Phases</key>
+    </entry>
+    <entry>
+      <key>Objectrelation type</key>
+      <value>Beziehungstyp</value>
+    </entry>
+    <entry>
+      <key>Kennzahlen</key>
+    </entry>
+    <entry>
+      <key>Count</key>
+    </entry>
+    <entry>
+      <key>Forecast actual year </key>
+    </entry>
+    <entry>
+      <key>Chart</key>
+    </entry>
+    <entry>
+      <key>Salesproject Charts</key>
+    </entry>
+    <entry>
+      <key>Relation</key>
+    </entry>
+    <entry>
+      <key>Zeigt wie viele Vertriebsprojekte in den einzelnen Vertriebsphasen sind. </key>
+    </entry>
+    <entry>
+      <key>test1eee</key>
+    </entry>
+    <entry>
+      <key>Object type 1</key>
+      <value>Typ 1</value>
+    </entry>
+    <entry>
+      <key>Object type 2</key>
+      <value>Typ 2</value>
+    </entry>
+    <entry>
+      <key>test2</key>
+    </entry>
+    <entry>
+      <key>Title 1</key>
+      <value>Titel 1</value>
+    </entry>
+    <entry>
+      <key>Title 2</key>
+      <value>Titel 2</value>
+    </entry>
+    <entry>
+      <key>Hierarchy</key>
+      <value>Hierarchie</value>
+    </entry>
+    <entry>
+      <key>Object relation</key>
+      <value>Beziehungen</value>
+    </entry>
+    <entry>
+      <key>Type 2 enabled</key>
+      <value>Typ 2 aktiviert</value>
+    </entry>
+    <entry>
+      <key>Relation type 1</key>
+      <value>Beziehungsart 1</value>
+    </entry>
+    <entry>
+      <key>Relation type 2</key>
+      <value>Beziehungsart 2</value>
+    </entry>
+    <entry>
+      <key>Relation type</key>
+      <value>Beziehungstyp</value>
+    </entry>
+    <entry>
+      <key>Context 1</key>
+      <value>Kontext 1</value>
+    </entry>
+    <entry>
+      <key>Context 2</key>
+      <value>Kontext2</value>
+    </entry>
+    <entry>
+      <key>Tochter</key>
+    </entry>
+    <entry>
+      <key>Delete all usage</key>
+      <value>Lösche jede Verwendung</value>
+    </entry>
+    <entry>
+      <key>Deleted all usages of \"%0\".</key>
+      <value>Jede Verwendung von \"%0\" wurde gelöscht.</value>
+    </entry>
+    <entry>
+      <key>promotion target ofc</key>
     </entry>
     <entry>
-      <key>new contact</key>
-      <value>Neuer Kontakt</value>
+      <key>Successful</key>
     </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 7eddc64ec87ed7f7d50ba1e93a313064fe6fe2f3..3dae32cda272e3d0bd6202f1e6343290daa7df84 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -521,7 +521,7 @@
     </entry>
     <entry>
       <key>${EURO_SIGN}</key>
-      <value>�</value>
+      <value>?</value>
     </entry>
     <entry>
       <key>Planned</key>
@@ -713,9 +713,6 @@
     <entry>
       <key>Connection</key>
     </entry>
-    <entry>
-      <key>standard phone</key>
-    </entry>
     <entry>
       <key>standard email</key>
     </entry>
@@ -1021,9 +1018,6 @@
       <key>{$TASK_REQUESTOR}</key>
       <value>requestor</value>
     </entry>
-    <entry>
-      <key>start date</key>
-    </entry>
     <entry>
       <key>task number</key>
     </entry>
@@ -1056,9 +1050,6 @@
     <entry>
       <key>Betreff</key>
     </entry>
-    <entry>
-      <key>private</key>
-    </entry>
     <entry>
       <key>title</key>
     </entry>
@@ -1107,9 +1098,6 @@
     <entry>
       <key>details</key>
     </entry>
-    <entry>
-      <key>maturity date</key>
-    </entry>
     <entry>
       <key>Contact type</key>
     </entry>
@@ -1184,9 +1172,6 @@
     <entry>
       <key>Attribute Usage</key>
     </entry>
-    <entry>
-      <key>Beziehung</key>
-    </entry>
     <entry>
       <key>Key</key>
     </entry>
@@ -1217,9 +1202,6 @@
     <entry>
       <key>Context name</key>
     </entry>
-    <entry>
-      <key>Schlüsselwort</key>
-    </entry>
     <entry>
       <key>Cambodia</key>
     </entry>
@@ -1307,9 +1289,6 @@
     <entry>
       <key>Jordan</key>
     </entry>
-    <entry>
-      <key>Côte d'Ivoire</key>
-    </entry>
     <entry>
       <key>United Arab Emirates</key>
     </entry>
@@ -1402,6 +1381,7 @@
     </entry>
     <entry>
       <key>${ORGTYPE_OTHER}</key>
+      <value>Other</value>
     </entry>
     <entry>
       <key>Haiti</key>
@@ -1677,9 +1657,6 @@
     <entry>
       <key>Kazakhstan</key>
     </entry>
-    <entry>
-      <key>Ã…land Islands</key>
-    </entry>
     <entry>
       <key>Bahamas</key>
     </entry>
@@ -1958,9 +1935,6 @@
     <entry>
       <key>Ukraine</key>
     </entry>
-    <entry>
-      <key>Curaçao</key>
-    </entry>
     <entry>
       <key>Anguilla</key>
     </entry>
@@ -2057,9 +2031,6 @@
     <entry>
       <key>ended</key>
     </entry>
-    <entry>
-      <key>Saint Barthélemy</key>
-    </entry>
     <entry>
       <key>Wallis and Futuna</key>
     </entry>
@@ -2075,9 +2046,6 @@
     <entry>
       <key>Hungary</key>
     </entry>
-    <entry>
-      <key>Réunion</key>
-    </entry>
     <entry>
       <key>Japan</key>
     </entry>
@@ -2209,6 +2177,7 @@
     </entry>
     <entry>
       <key>${NUMBER}</key>
+      <value>Number</value>
     </entry>
     <entry>
       <key>Name \"%0\" already used for container \"%1\"</key>
@@ -2445,9 +2414,6 @@
     <entry>
       <key>ex works</key>
     </entry>
-    <entry>
-      <key>Relation</key>
-    </entry>
     <entry>
       <key>30 days net</key>
     </entry>
@@ -2464,19 +2430,435 @@
       <key>Contactrole</key>
     </entry>
     <entry>
-      <key>new contact</key>
+      <key>Object tree</key>
     </entry>
     <entry>
-      <key>Posistion</key>
+      <key>New appointment</key>
     </entry>
     <entry>
-      <key>Object tree</key>
+      <key>&amp;Aufg / Term (%0/%1)</key>
+    </entry>
+    <entry>
+      <key>Verschieben auf Datum?</key>
+    </entry>
+    <entry>
+      <key>niedrig</key>
+    </entry>
+    <entry>
+      <key>Gebucht</key>
+    </entry>
+    <entry>
+      <key>Other Contactroles</key>
+    </entry>
+    <entry>
+      <key>In Bearbeitung</key>
+    </entry>
+    <entry>
+      <key>OK</key>
+    </entry>
+    <entry>
+      <key>Nicht begonnen</key>
+    </entry>
+    <entry>
+      <key>Bitte Filterbedingungen setzen</key>
+    </entry>
+    <entry>
+      <key>keine</key>
+    </entry>
+    <entry>
+      <key>Eine private Aufgabe kann nicht jemand anderem zugewiesen werden.</key>
+    </entry>
+    <entry>
+      <key>Aufgaben von</key>
+    </entry>
+    <entry>
+      <key>&amp;Aufgaben (%0)</key>
+    </entry>
+    <entry>
+      <key>hoch</key>
+    </entry>
+    <entry>
+      <key>Keine Berechtigung zum Verschieben der Aufgabe</key>
+    </entry>
+    <entry>
+      <key>Erledigt</key>
+    </entry>
+    <entry>
+      <key>Usages</key>
+    </entry>
+    <entry>
+      <key>Abgesagt</key>
+    </entry>
+    <entry>
+      <key>Abbrechen</key>
+    </entry>
+    <entry>
+      <key>delegiert</key>
+    </entry>
+    <entry>
+      <key>frei</key>
+    </entry>
+    <entry>
+      <key>%0 Aufgabe(n) erfolgreich weitergegeben an: %1</key>
+    </entry>
+    <entry>
+      <key>normal</key>
+    </entry>
+    <entry>
+      <key>Termine von</key>
+    </entry>
+    <entry>
+      <key>nur Verschiebung in die Zukunft erlaubt!</key>
+    </entry>
+    <entry>
+      <key>Kategorie</key>
+    </entry>
+    <entry>
+      <key>Product content</key>
+    </entry>
+    <entry>
+      <key>Know How</key>
+    </entry>
+    <entry>
+      <key>Personal appearance</key>
+    </entry>
+    <entry>
+      <key>Market situation</key>
+    </entry>
+    <entry>
+      <key>Liquidity</key>
+    </entry>
+    <entry>
+      <key>Price policy</key>
+    </entry>
+    <entry>
+      <key>360 Degree</key>
+    </entry>
+    <entry>
+      <key>VAT in %</key>
+    </entry>
+    <entry>
+      <key>${QUANTITY_LOWER_THAN_1}</key>
+      <value>Quantity should be greater than 0.</value>
+    </entry>
+    <entry>
+      <key>This combination of person and organisation does already exist and can not be created once more.</key>
+    </entry>
+    <entry>
+      <key>Time in minutes</key>
+    </entry>
+    <entry>
+      <key>Sales manager</key>
+    </entry>
+    <entry>
+      <key>IT</key>
+    </entry>
+    <entry>
+      <key>Administrator</key>
+    </entry>
+    <entry>
+      <key>Managing director</key>
+    </entry>
+    <entry>
+      <key>Production manager</key>
+    </entry>
+    <entry>
+      <key>Production</key>
+    </entry>
+    <entry>
+      <key>CEO</key>
+    </entry>
+    <entry>
+      <key>Purchasing manager</key>
+    </entry>
+    <entry>
+      <key>Marketing manager</key>
+    </entry>
+    <entry>
+      <key>IT manager</key>
+    </entry>
+    <entry>
+      <key>Marketing</key>
+    </entry>
+    <entry>
+      <key>CSO</key>
+    </entry>
+    <entry>
+      <key>Executive board</key>
+    </entry>
+    <entry>
+      <key>Supervisory board</key>
+    </entry>
+    <entry>
+      <key>Management</key>
+    </entry>
+    <entry>
+      <key>New module</key>
+    </entry>
+    <entry>
+      <key>Côte d'Ivoire</key>
+    </entry>
+    <entry>
+      <key>Bitte Datumseingabe prüfen!</key>
+    </entry>
+    <entry>
+      <key>Bestätigt</key>
+    </entry>
+    <entry>
+      <key>Vorläufig</key>
+    </entry>
+    <entry>
+      <key>Saint Barthélemy</key>
+    </entry>
+    <entry>
+      <key>erledigt / zurückgestellt</key>
+    </entry>
+    <entry>
+      <key>Zurückgestellt</key>
+    </entry>
+    <entry>
+      <key>Außer Haus</key>
+    </entry>
+    <entry>
+      <key>Benutzer auswählen</key>
+    </entry>
+    <entry>
+      <key>Ã…land Islands</key>
+    </entry>
+    <entry>
+      <key>Kein Weitergeben von privaten Aufgaben möglich!</key>
+    </entry>
+    <entry>
+      <key>Curaçao</key>
+    </entry>
+    <entry>
+      <key>Schlüsselwort</key>
+    </entry>
+    <entry>
+      <key>Réunion</key>
+    </entry>
+    <entry>
+      <key>date of birth must not be in the future</key>
+    </entry>
+    <entry>
+      <key>Manufacturer</key>
+    </entry>
+    <entry>
+      <key>Prospective customer</key>
+    </entry>
+    <entry>
+      <key>Competitor</key>
+    </entry>
+    <entry>
+      <key>Partner</key>
+    </entry>
+    <entry>
+      <key>Attribute Tree</key>
+    </entry>
+    <entry>
+      <key>True</key>
+    </entry>
+    <entry>
+      <key>False</key>
+    </entry>
+    <entry>
+      <key>false</key>
+    </entry>
+    <entry>
+      <key>true</key>
+    </entry>
+    <entry>
+      <key>Protected</key>
+    </entry>
+    <entry>
+      <key>${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3</key>
+      <value>%0 has to be between %2 and %3.</value>
+    </entry>
+    <entry>
+      <key>The title already exists!</key>
+    </entry>
+    <entry>
+      <key>Password</key>
+    </entry>
+    <entry>
+      <key>Confirm password</key>
+    </entry>
+    <entry>
+      <key>Set password</key>
+    </entry>
+    <entry>
+      <key>Email</key>
+    </entry>
+    <entry>
+      <key>{$OBJECTLINK_TYPE}</key>
+      <value>Type</value>
+    </entry>
+    <entry>
+      <key>{$OBJECTLINK_OBJECT}</key>
+      <value>Object</value>
+    </entry>
+    <entry>
+      <key>Roles</key>
+    </entry>
+    <entry>
+      <key>Password and confirmation must be the same!</key>
+    </entry>
+    <entry>
+      <key>Begin</key>
+    </entry>
+    <entry>
+      <key>Maturity</key>
+    </entry>
+    <entry>
+      <key>Stored selections</key>
+    </entry>
+    <entry>
+      <key>Username</key>
+    </entry>
+    <entry>
+      <key>The person is already associated with another employee!</key>
+    </entry>
+    <entry>
+      <key>Username already exists!</key>
+    </entry>
+    <entry>
+      <key>Salesproject Phases</key>
+    </entry>
+    <entry>
+      <key>Turnover actual year</key>
+    </entry>
+    <entry>
+      <key>Forecast actual year</key>
+    </entry>
+    <entry>
+      <key>This private person doeas already exist and can not be created once more.</key>
+    </entry>
+    <entry>
+      <key>Everyone</key>
+    </entry>
+    <entry>
+      <key>Project</key>
+    </entry>
+    <entry>
+      <key>Human resources</key>
+    </entry>
+    <entry>
+      <key>Project management</key>
+    </entry>
+    <entry>
+      <key>Office staff</key>
+    </entry>
+    <entry>
+      <key>Field staff</key>
+    </entry>
+    <entry>
+      <key>Resource</key>
+    </entry>
+    <entry>
+      <key>Human Resources</key>
+    </entry>
+    <entry>
+      <key>Email must be unique!</key>
+    </entry>
+    <entry>
+      <key>Project Management</key>
+    </entry>
+    <entry>
+      <key>Support</key>
+    </entry>
+    <entry>
+      <key>{$ADDRESS_IDENTIFIER}</key>
+      <value>Identifier</value>
+    </entry>
+    <entry>
+      <key>Salesproject phases</key>
+    </entry>
+    <entry>
+      <key>Key figures</key>
+    </entry>
+    <entry>
+      <key>Relation</key>
+    </entry>
+    <entry>
+      <key>Object type 1</key>
+    </entry>
+    <entry>
+      <key>Object type 2</key>
+    </entry>
+    <entry>
+      <key>Title 1</key>
+    </entry>
+    <entry>
+      <key>Title 2</key>
+    </entry>
+    <entry>
+      <key>Hierarchy</key>
+    </entry>
+    <entry>
+      <key>Object relation</key>
+    </entry>
+    <entry>
+      <key>Relation type 1</key>
+    </entry>
+    <entry>
+      <key>Relation type 2</key>
+    </entry>
+    <entry>
+      <key>Relation type</key>
+    </entry>
+    <entry>
+      <key>Context 1</key>
+    </entry>
+    <entry>
+      <key>Context 2</key>
+    </entry>
+    <entry>
+      <key>Delete all usage</key>
+    </entry>
+    <entry>
+      <key>Deleted all usages of \"%0\".</key>
+    </entry>
+    <entry>
+      <key>promotion target ofc</key>
+    </entry>
+    <entry>
+      <key>Successful</key>
+    </entry>
+    <entry>
+      <key>Objectrelation type</key>
+    </entry>
+    <entry>
+      <key>test1eee</key>
+    </entry>
+    <entry>
+      <key>Kennzahlen</key>
+    </entry>
+    <entry>
+      <key>Count</key>
+    </entry>
+    <entry>
+      <key>Forecast actual year </key>
+    </entry>
+    <entry>
+      <key>Type 2 enabled</key>
+    </entry>
+    <entry>
+      <key>test2</key>
+    </entry>
+    <entry>
+      <key>Picture</key>
+    </entry>
+    <entry>
+      <key>Chart</key>
+    </entry>
+    <entry>
+      <key>Salesproject Charts</key>
     </entry>
     <entry>
-      <key>New Appointment</key>
+      <key>Tochter</key>
     </entry>
     <entry>
-      <key>New contact</key>
+      <key>Zeigt wie viele Vertriebsprojekte in den einzelnen Vertriebsphasen sind. </key>
     </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
diff --git a/neonContext/360Degree/360Degree.aod b/neonContext/360Degree/360Degree.aod
new file mode 100644
index 0000000000000000000000000000000000000000..25790be7555bde4d78c208588ba8ad0320b8d5ed
--- /dev/null
+++ b/neonContext/360Degree/360Degree.aod
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
+  <name>360Degree</name>
+  <title>360 Degree</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterview>360DegreeFilter_view</filterview>
+  <entity>360Degree_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>9e68c23b-1b55-4ff7-971d-815af0f9dd8a</name>
+      <view>360DegreeFilter_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/ActivityLink/ActivityLink.aod b/neonContext/ActivityLink/ActivityLink.aod
index bbb417a30f5b1f49440db45754f0771793adb440..dfc2613a966bd617ce4d43c74b82624fadb3222d 100644
--- a/neonContext/ActivityLink/ActivityLink.aod
+++ b/neonContext/ActivityLink/ActivityLink.aod
@@ -18,5 +18,9 @@
       <name>0960878d-9077-4707-8239-b48f1b55a5e8</name>
       <view>ActivityLinkMultiEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>e814dfa7-68da-485f-aea1-462197b33f67</name>
+      <view>ActivityLinkPreviewList_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/Address/Address.aod b/neonContext/Address/Address.aod
index 62cf97f24928e402431a2ac83f30645c2f3ee9aa..87c5beb15bea545ae2a141faac7d78717b994320 100644
--- a/neonContext/Address/Address.aod
+++ b/neonContext/Address/Address.aod
@@ -3,19 +3,9 @@
   <name>Address</name>
   <title>Addresses</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterview>AddressFilter_view</filterview>
-  <editview>AddressEdit_view</editview>
-  <preview>AddressEdit_view</preview>
+  <lookupview>AddressLookup_view</lookupview>
   <entity>Address_entity</entity>
   <references>
-    <neonViewReference>
-      <name>f36427d6-75b7-4f67-9cd9-e391bca3166e</name>
-      <view>AddressFilter_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>306f9a88-42be-4838-9698-c6ac5c6a7f57</name>
-      <view>AddressEdit_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>0b476864-5342-4cb2-aa0c-f1ab29bb99b4</name>
       <view>AddressList_view</view>
@@ -24,5 +14,9 @@
       <name>f4c516c0-b9de-47df-91e4-43bdb3297fe7</name>
       <view>AdressMultiEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>77b182a7-2361-41a7-ae78-dc5285b41b97</name>
+      <view>AddressLookup_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/AppointmentLink/AppointmentLink.aod b/neonContext/AppointmentLink/AppointmentLink.aod
index b94adc147f351d19022f3bf95be805d1a4296c4f..bfe84c66b362cdc82cee99227b0332604b78af00 100644
--- a/neonContext/AppointmentLink/AppointmentLink.aod
+++ b/neonContext/AppointmentLink/AppointmentLink.aod
@@ -1,13 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
-  <name>AppointmentLink</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterview>AppointmentLinkFilter_view</filterview>
-  <entity>AppointmentLink_entity</entity>
-  <references>
-    <neonViewReference>
-      <name>015bf8e9-621a-423d-8fd3-17ef264cc919</name>
-      <view>AppointmentLinkFilter_view</view>
-    </neonViewReference>
-  </references>
-</neonContext>
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
+  <name>AppointmentLink</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <mainview>AppointmentLinkFilter_view</mainview>
+  <filterview>AppointmentLinkFilter_view</filterview>
+  <editview>AppointmentLinkEdit_view</editview>
+  <entity>AppointmentLink_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>015bf8e9-621a-423d-8fd3-17ef264cc919</name>
+      <view>AppointmentLinkEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>f0f803a8-74a4-4a96-a989-d3923b994280</name>
+      <view>AppointmentLinkFilter_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/AttributeRelationTree/AttributeRelationTree.aod b/neonContext/AttributeRelationTree/AttributeRelationTree.aod
new file mode 100644
index 0000000000000000000000000000000000000000..bcd7bec8f8c74b3791ebdd93a728c950493b2781
--- /dev/null
+++ b/neonContext/AttributeRelationTree/AttributeRelationTree.aod
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
+  <name>AttributeRelationTree</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>AttributeRelationTree_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>55f89863-72b0-4179-8494-b1e320d79de9</name>
+      <view>AttributeRelationTree_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/Contact/Contact.aod b/neonContext/Contact/Contact.aod
index 9a0e9a6ac170597a402dab51cdbca7b7217e17d0..3ad4a70c1f640792a4944db95a21992e29b69a45 100644
--- a/neonContext/Contact/Contact.aod
+++ b/neonContext/Contact/Contact.aod
@@ -9,5 +9,9 @@
       <name>c96479fe-4f9c-433d-9de3-c2e1bbb5aac7</name>
       <view>ContactEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>dde4fdab-4a5e-4183-8d4d-4e96d34054c7</name>
+      <view>ContactList_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/Contract/Contract.aod b/neonContext/Contract/Contract.aod
index ffaf63ede73dda34d10221fe647efb93b0b857f9..39e367fa3ed00ca8656fc424b465caa93c955b06 100644
--- a/neonContext/Contract/Contract.aod
+++ b/neonContext/Contract/Contract.aod
@@ -7,6 +7,7 @@
   <filterview>ContractFilter_view</filterview>
   <editview>ContractEdit_view</editview>
   <preview>ContractPreview_view</preview>
+  <lookupview>ContractFilter_view</lookupview>
   <entity>Contract_entity</entity>
   <references>
     <neonViewReference>
diff --git a/neonContext/Employee/Employee.aod b/neonContext/Employee/Employee.aod
new file mode 100644
index 0000000000000000000000000000000000000000..9dd4dd642bc410be26be22a52ccd6fc95ebab569
--- /dev/null
+++ b/neonContext/Employee/Employee.aod
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
+  <name>Employee</name>
+  <title>Employee</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <mainview>EmployeeMain_view</mainview>
+  <filterview>EmployeeFilter_view</filterview>
+  <editview>EmployeeEdit_view</editview>
+  <preview>EmployeePreview_view</preview>
+  <lookupview>EmployeeLookup_view</lookupview>
+  <entity>Employee_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>51816f14-17da-4c96-80d8-f3b5280863b8</name>
+      <view>EmployeeFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>91c2bbc7-89fb-4688-881e-6fa21e96b211</name>
+      <view>EmployeeEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>6a36e3cf-5918-4c60-94d9-a3a7ed50ffce</name>
+      <view>EmployeePreview_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>215e8e26-662f-45f6-9c61-c0b0b1129e66</name>
+      <view>EmployeeMain_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>a01b0910-cd32-4fa7-a739-0b9eb19debc2</name>
+      <view>EmployeePassword_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>3427f53f-9201-495c-a37c-b2c9b33eb123</name>
+      <view>EmployeeLookup_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/EmployeeRole/EmployeeRole.aod b/neonContext/EmployeeRole/EmployeeRole.aod
new file mode 100644
index 0000000000000000000000000000000000000000..436cf33ca9e7a829e908e1d8f4a26638703a7c93
--- /dev/null
+++ b/neonContext/EmployeeRole/EmployeeRole.aod
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
+  <name>EmployeeRole</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>EmployeeRole_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>fd4de342-238b-494e-a85b-ff08e3f065b9</name>
+      <view>EmployeeRoleFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>6ec0af90-47aa-4f94-8e05-7c535bd4c965</name>
+      <view>EmployeeRoleEdit_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/KeywordAttributeRelation/KeywordAttributeRelation.aod b/neonContext/KeywordAttributeRelation/KeywordAttributeRelation.aod
index d0d5276671232e3ce2bfbc5957f96537249cc2ef..0270a99f81eb13075f82ebf11104a6011a233653 100644
--- a/neonContext/KeywordAttributeRelation/KeywordAttributeRelation.aod
+++ b/neonContext/KeywordAttributeRelation/KeywordAttributeRelation.aod
@@ -9,5 +9,9 @@
       <name>4340ec15-39bd-4c0c-a7b9-c03829f9ff78</name>
       <view>KeywordAttributeRelationRows_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>c27dbf5c-1a3d-4256-9103-bbf5256b005b</name>
+      <view>KeywordAttriubteRelationTitled_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/KeywordEntry/KeywordEntry.aod b/neonContext/KeywordEntry/KeywordEntry.aod
index 6b52464295a41c536826f2f4ad8a7f2f51d0b482..7a7310575cba29ec500f2fe0739553bdc95d9235 100644
--- a/neonContext/KeywordEntry/KeywordEntry.aod
+++ b/neonContext/KeywordEntry/KeywordEntry.aod
@@ -26,5 +26,9 @@
       <name>bba3520e-3e12-44e9-89dc-b42183e332ec</name>
       <view>KeywordEntryMain_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>fb697cca-5e7d-4814-a6ed-09f32f9f60fd</name>
+      <view>KeywordEntryMainSide_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/ObjectRelationType/ObjectRelationType.aod b/neonContext/ObjectRelationType/ObjectRelationType.aod
index f3285ed72a72b2f7e2d2c18ddc921ce671c1717c..2cfbf3567d625732b3fa18caa800ada1ccc514b7 100644
--- a/neonContext/ObjectRelationType/ObjectRelationType.aod
+++ b/neonContext/ObjectRelationType/ObjectRelationType.aod
@@ -1,6 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
   <name>ObjectRelationType</name>
+  <title>Relation type</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <icon>VAADIN:SPLIT</icon>
+  <filterview>ObjectRelationTypeFilter_view</filterview>
+  <editview>ObjectRelationTypeEdit_view</editview>
+  <preview>ObjectRelationTypePreview_view</preview>
   <entity>ObjectRelationType_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>3bee0408-8a9b-4188-8ebf-0b9671bbf436</name>
+      <view>ObjectRelationTypeFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>afb5b3c7-fb34-4511-8b72-34808d64e226</name>
+      <view>ObjectRelationTypeEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>b4cb3fc0-03ed-48d5-bd0c-725623865bc3</name>
+      <view>ObjectRelationTypePreview_view</view>
+    </neonViewReference>
+  </references>
 </neonContext>
diff --git a/neonContext/ObjectTree/ObjectTree.aod b/neonContext/ObjectTree/ObjectTree.aod
index b7ae46a2ca92572cedfa4c0abac241d2b1ed2b73..3a0bc38b2c9464edf2e3c6d8e510f00b7d7b2182 100644
--- a/neonContext/ObjectTree/ObjectTree.aod
+++ b/neonContext/ObjectTree/ObjectTree.aod
@@ -2,11 +2,22 @@
 <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
   <name>ObjectTree</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterview>ObjectTreeFilter_view</filterview>
+  <editview>ObjectTreeEdit_view</editview>
+  <preview>ObjectTreePreview</preview>
   <entity>ObjectTree_entity</entity>
   <references>
     <neonViewReference>
       <name>0c9fc36e-e3f7-4198-b675-5d9ddb177611</name>
-      <view>ObjectTree_view</view>
+      <view>ObjectTreeFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>1122516a-5f1c-4f08-9995-02acaee2a0cd</name>
+      <view>ObjectTreeEdit_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>1caa61e2-0e59-47bd-a996-db49867e3908</name>
+      <view>ObjectTreePreview</view>
     </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/Offer/Offer.aod b/neonContext/Offer/Offer.aod
index baae56ff7c886e853ab2450d10a20624966fb915..e1d68da5ca5cac83a93742e7ee2cdd8e82dbede4 100644
--- a/neonContext/Offer/Offer.aod
+++ b/neonContext/Offer/Offer.aod
@@ -7,6 +7,7 @@
   <filterview>OfferFilter_view</filterview>
   <editview>OfferEdit_view</editview>
   <preview>OfferPreview_view</preview>
+  <lookupview>OfferFilter_view</lookupview>
   <entity>Offer_entity</entity>
   <references>
     <neonViewReference>
diff --git a/neonContext/Offeritem/Offeritem.aod b/neonContext/Offeritem/Offeritem.aod
index b028ec42f1c3dc017fbc783e10c82355f90f5748..6a8a4c7a18a8791fc6eeceae8c87e7705bf5fb35 100644
--- a/neonContext/Offeritem/Offeritem.aod
+++ b/neonContext/Offeritem/Offeritem.aod
@@ -4,6 +4,7 @@
   <title>Offeritem</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterview>OfferitemFilter_view</filterview>
+  <editview>OfferitemEdit_view</editview>
   <preview>OfferitemPreview_view</preview>
   <entity>Offeritem_entity</entity>
   <references>
@@ -19,5 +20,9 @@
       <name>440a19f2-4893-47b9-b10c-864540b6287f</name>
       <view>OfferitemMultiEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>9571eef4-1b84-4f4f-9109-7c5f63571a93</name>
+      <view>OfferitemEdit_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonContext/Order/Order.aod b/neonContext/Order/Order.aod
index d4766497ac5e8f60a056f7de05346100bd441a80..09c0811ee91145d2da35a68b888fdbb39853e24a 100644
--- a/neonContext/Order/Order.aod
+++ b/neonContext/Order/Order.aod
@@ -8,6 +8,7 @@
   <filterview>OrderFilter_view</filterview>
   <editview>OrderEdit_view</editview>
   <preview>OrderPreview_view</preview>
+  <lookupview>OrderFilter_view</lookupview>
   <entity>Order_entity</entity>
   <references>
     <neonViewReference>
diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod
index 49cf110412560ed7d2844899f10b325cfa3e9c07..feef4560535219df0acd527d75fd4d3a46569d5c 100644
--- a/neonContext/Salesproject/Salesproject.aod
+++ b/neonContext/Salesproject/Salesproject.aod
@@ -7,6 +7,7 @@
   <filterview>SalesprojectFilter_view</filterview>
   <editview>SalesprojectEdit_view</editview>
   <preview>SalesprojectPreview_view</preview>
+  <lookupview>SalesprojectFilter_view</lookupview>
   <entity>Salesproject_entity</entity>
   <references>
     <neonViewReference>
diff --git a/neonContext/SalesprojectAnalyses/SalesprojectAnalyses.aod b/neonContext/SalesprojectAnalyses/SalesprojectAnalyses.aod
new file mode 100644
index 0000000000000000000000000000000000000000..712d9ac63b328dc3ce8ad4d8392833abb7997703
--- /dev/null
+++ b/neonContext/SalesprojectAnalyses/SalesprojectAnalyses.aod
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
+  <name>SalesprojectAnalyses</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>SalesprojectAnalyses_entity</entity>
+  <references>
+    <neonViewReference>
+      <name>c50b2e10-86ca-4a5b-83d4-946a78c18786</name>
+      <view>SalesprojectPhases_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>ccb97c28-966a-4206-b981-140e87e680bf</name>
+      <view>SalesprojectScoreCard_view</view>
+    </neonViewReference>
+  </references>
+</neonContext>
diff --git a/neonContext/TaskLink/TaskLink.aod b/neonContext/TaskLink/TaskLink.aod
index 5e6273ddc3888e299586124b1da02845f2a1a83d..4ac1b80b124d0f35484bae8ee83160581f5ca6dd 100644
--- a/neonContext/TaskLink/TaskLink.aod
+++ b/neonContext/TaskLink/TaskLink.aod
@@ -16,5 +16,9 @@
       <name>cd180425-6562-49d9-99be-f3a47a88f427</name>
       <view>TaskLinkMultiEdit_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>8799454a-92af-4604-8e6c-9323f745a258</name>
+      <view>TaskLinkPreviewList_view</view>
+    </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
index a72954dbb87ada62bfc9d77bcc94cc3eb9ae224f..d78d8f15560ea90feedb14ff60cd19f30c526c75 100644
--- a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
+++ b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod
@@ -12,61 +12,61 @@
   <defaultDashlets>
     <neonDashlet>
       <name>Dashlet</name>
-      <viewName>SalesprojectFilter_view</viewName>
-      <configName>OpenSalesprojectsDashlet</configName>
+      <viewName>SalesprojectScoreCard_view</viewName>
+      <configName>KeyFigures</configName>
       <uiConfiguration>
         <name>uiConfiguration</name>
-        <xPos v="0" />
+        <xPos v="1" />
         <yPos v="0" />
         <colspan v="1" />
         <rowspan v="5" />
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet2</name>
-      <viewName>OfferFilter_view</viewName>
-      <configName>SendOffersDashlet</configName>
+      <name>Dashlet4</name>
+      <viewName>OrganisationFilter_view</viewName>
+      <configName>AllOrgsDashlet</configName>
       <uiConfiguration>
         <name>uiConfiguration</name>
-        <xPos v="1" />
+        <xPos v="2" />
         <yPos v="0" />
         <colspan v="1" />
         <rowspan v="5" />
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet3</name>
-      <viewName>ContractFilter_view</viewName>
-      <configName>AllContractsDashlet</configName>
+      <name>Dashlet5</name>
+      <viewName>TurnoverChart_view</viewName>
+      <configName>TurnoverDashlet</configName>
       <uiConfiguration>
         <name>uiConfiguration</name>
         <xPos v="0" />
-        <yPos v="5" />
+        <yPos v="0" />
         <colspan v="1" />
         <rowspan v="5" />
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet4</name>
-      <viewName>OrganisationFilter_view</viewName>
-      <configName>AllOrgsDashlet</configName>
+      <name>Dashlet2</name>
+      <viewName>SalesprojectFilter_view</viewName>
+      <configName>OpenSalesprojectsDashlet</configName>
       <uiConfiguration>
         <name>uiConfiguration</name>
-        <xPos v="2" />
-        <yPos v="0" />
-        <colspan v="1" />
+        <xPos v="1" />
+        <yPos v="5" />
+        <colspan v="2" />
         <rowspan v="5" />
       </uiConfiguration>
     </neonDashlet>
     <neonDashlet>
-      <name>Dashlet5</name>
-      <viewName>TurnoverChart_view</viewName>
-      <configName>TurnoverDashlet</configName>
+      <name>Dashlet3</name>
+      <viewName>SalesprojectPhases_view</viewName>
+      <configName>Salesproject phases</configName>
       <uiConfiguration>
         <name>uiConfiguration</name>
-        <xPos v="1" />
+        <xPos v="0" />
         <yPos v="5" />
-        <colspan v="2" />
+        <colspan v="1" />
         <rowspan v="5" />
       </uiConfiguration>
     </neonDashlet>
diff --git a/neonView/360DegreeFilter_view/360DegreeFilter_view.aod b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..ed1ab18e2ef1501fdebc7e68273456f98022afc8
--- /dev/null
+++ b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>360DegreeFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
+  <layout>
+    <groupLayout>
+      <name>layout</name>
+    </groupLayout>
+  </layout>
+  <children>
+    <treeViewTemplate>
+      <name>Treetable</name>
+      <favoriteActionGroup2>newModule</favoriteActionGroup2>
+      <titleField>TITLE</titleField>
+      <descriptionField>DATE</descriptionField>
+      <iconField>ICON</iconField>
+      <defaultGroupFields>
+        <element>CONTEXT_NAME</element>
+      </defaultGroupFields>
+      <entityField>#ENTITY</entityField>
+    </treeViewTemplate>
+    <timelineViewTemplate>
+      <name>Timeline</name>
+      <dateField>DATE</dateField>
+      <titleField>TITLE</titleField>
+      <descriptionField>CONTEXT_NAME</descriptionField>
+      <entityField>#ENTITY</entityField>
+    </timelineViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ActivityDetail_view/ActivityDetail_view.aod b/neonView/ActivityDetail_view/ActivityDetail_view.aod
index 365b115a49ca03cd67b586ce3aaac34280241a1b..7bb44f0e160cc3ab64d04b20a51bb0c93b34f698 100644
--- a/neonView/ActivityDetail_view/ActivityDetail_view.aod
+++ b/neonView/ActivityDetail_view/ActivityDetail_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ActivityDetail_view</name>
   <title>Description</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -12,7 +12,9 @@
     <genericViewTemplate>
       <name>OfferInfo</name>
       <editMode v="false" />
-      <showDrawer v="false" />
+      <showDrawer v="true" />
+      <drawerCaption>Detail</drawerCaption>
+      <hideLabels v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
diff --git a/neonView/ActivityEdit_view/ActivityEdit_view.aod b/neonView/ActivityEdit_view/ActivityEdit_view.aod
index f72778d3de683211790f9708c0407d6c0cbb7294..5c306e04cb11a4044f1a5aaec99b17a5dd734f44 100644
--- a/neonView/ActivityEdit_view/ActivityEdit_view.aod
+++ b/neonView/ActivityEdit_view/ActivityEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ActivityEdit_view</name>
   <title>Activity</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/ActivityFilter_view/ActivityFilter_view.aod b/neonView/ActivityFilter_view/ActivityFilter_view.aod
index cc9515e573e7dc6dcda61ccf4dc029110c30962a..23705e8e116a6b2eb35774168fab902f939b03a2 100644
--- a/neonView/ActivityFilter_view/ActivityFilter_view.aod
+++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ActivityFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -55,14 +55,11 @@
     </groupLayout>
   </layout>
   <children>
-    <timelineViewTemplate>
-      <name>ActivitiesTimeline</name>
-      <dateField>ENTRYDATE</dateField>
-      <titleField>SUBJECT_DETAILS</titleField>
-      <descriptionField>INFO</descriptionField>
-      <iconIdField>DIRECTION_ICON</iconIdField>
+    <neonViewReference>
+      <name>0e5e5791-af45-4f3f-a8fb-44656e1556c3</name>
       <entityField>#ENTITY</entityField>
-    </timelineViewTemplate>
+      <view>ActivityTimeline_view</view>
+    </neonViewReference>
     <tableViewTemplate>
       <name>ActivitiesTable</name>
       <entityField>#ENTITY</entityField>
@@ -89,12 +86,12 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
-    <treetableViewTemplate>
+    <treeViewTemplate>
       <name>ActivitiesTreetable</name>
       <titleField>SUBJECT</titleField>
       <descriptionField>INFO</descriptionField>
       <iconField>#IMAGE</iconField>
       <entityField>#ENTITY</entityField>
-    </treetableViewTemplate>
+    </treeViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
index b5af8f8f460f7ed3d76a9f98cf6e5653f314a53f..a4f49f54de50cd9dd29394ad32d154a737d44a16 100644
--- a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
+++ b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ActivityLinkFilter_view</name>
   <title>Connections</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod b/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod
index dbb50a2c7e82b3a4502739261b0063347836bdd6..8ccfba24c2ca0ff9ae72ed5b2d486f5b8215944c 100644
--- a/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod
+++ b/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ActivityLinkMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <noneLayout>
       <name>layout</name>
-    </boxLayout>
+    </noneLayout>
   </layout>
   <children>
     <genericMultipleViewTemplate>
-      <name>GenericMultiple</name>
+      <name>MultipleEdit</name>
       <entityField>#ENTITY</entityField>
       <title></title>
       <columns>
diff --git a/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod b/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b16aae95030498a3a53ea5cc9376eebdbfaedb93
--- /dev/null
+++ b/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>ActivityLinkPreviewList_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <titledListViewTemplate>
+      <name>ActivityLinks</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>7db98c3e-2203-4af1-a155-5f4d62bd0ef8</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>063acc6e-1a7f-48a2-8204-a2adaf6ffdb4</name>
+          <entityField>OBJECT_ROWID</entityField>
+        </neonTableColumn>
+      </columns>
+    </titledListViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod b/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod
index cc3071f1e70ee16c842b4fa97c7d6cfa2f96db54..891ec75b0ff78ee3771627dc31753896ca281caa 100644
--- a/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod
+++ b/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ActivityLinkPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ActivityMain_view/ActivityMain_view.aod b/neonView/ActivityMain_view/ActivityMain_view.aod
index 12164cdbc4f23a21a79adbfc21e31b52295fe686..5b4191c6e9cf1a0ea8a561619e53f979f6d95c0c 100644
--- a/neonView/ActivityMain_view/ActivityMain_view.aod
+++ b/neonView/ActivityMain_view/ActivityMain_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ActivityMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -14,16 +14,16 @@
       <entityField>#ENTITY</entityField>
       <view>ActivityPreview_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>f6c6888a-f3d6-410a-b97b-30c34a9dd6a2</name>
-      <entityField>ModuleTrees</entityField>
-      <view>ModuleTree_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>a3a45cd7-587f-4bc0-9980-e6d1c89a8212</name>
       <entityField>#ENTITY</entityField>
       <view>ActivityDetail_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>f6c6888a-f3d6-410a-b97b-30c34a9dd6a2</name>
+      <entityField>ModuleTrees</entityField>
+      <view>ModuleTree_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>7bab8dbf-b69e-412d-a604-3a6999658e10</name>
       <entityField>Documents</entityField>
@@ -39,5 +39,10 @@
       <entityField>Attributes</entityField>
       <view>AttributeRelationFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>f57fb116-d356-47c7-8da6-ee64b4a01b46</name>
+      <entityField>AttributeTree</entityField>
+      <view>AttributeRelationTree_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ActivityPreview_view/ActivityPreview_view.aod b/neonView/ActivityPreview_view/ActivityPreview_view.aod
index 9d177fb190408712e29818f436561a90a0ac2f14..e142cb9bf33ee4d6acce56e5463e8ca7e6f05c67 100644
--- a/neonView/ActivityPreview_view/ActivityPreview_view.aod
+++ b/neonView/ActivityPreview_view/ActivityPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ActivityPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -39,6 +39,11 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>4c365613-81c5-4518-8953-751b5ae35cc2</name>
+      <entityField>Links</entityField>
+      <view>ActivityLinkPreviewList_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>43167618-e4dc-429b-a264-3ea95bd647f9</name>
       <entityField>MainDocuments</entityField>
diff --git a/neonView/ActivityTimeline_view/ActivityTimeline_view.aod b/neonView/ActivityTimeline_view/ActivityTimeline_view.aod
index 7f767fe7d2b3b50871c1f7618de96b942c55c4eb..843f80320fbc70ff39617c013a4984c3d6dfe880 100644
--- a/neonView/ActivityTimeline_view/ActivityTimeline_view.aod
+++ b/neonView/ActivityTimeline_view/ActivityTimeline_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ActivityTimeline_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -14,7 +14,9 @@
       <titleField>SUBJECT_DETAILS</titleField>
       <descriptionField>INFO</descriptionField>
       <iconIdField>DIRECTION_ICON</iconIdField>
+      <hideTime v="true" />
       <entityField>#ENTITY</entityField>
+      <maxDBRow v="500" />
     </timelineViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/AddressEdit_view/AddressEdit_view.aod b/neonView/AddressEdit_view/AddressEdit_view.aod
deleted file mode 100644
index 10f2872a4938b4ae7855b6bc1c5e74b30775985e..0000000000000000000000000000000000000000
--- a/neonView/AddressEdit_view/AddressEdit_view.aod
+++ /dev/null
@@ -1,47 +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.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
-  <name>AddressEdit_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-    </boxLayout>
-  </layout>
-  <children>
-    <genericViewTemplate>
-      <name>Edit</name>
-      <showDrawer v="true" />
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>b510378e-dfd3-4cec-bc2e-84b72aebb2b6</name>
-          <entityField>ADDR_TYPE</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>d8a7a16b-9d7f-44d7-bbb1-b0404d5b8b8f</name>
-          <entityField>COUNTRY</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>c70668f3-6722-4a90-86d6-0d89be06dbe1</name>
-          <entityField>ADDRESS</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>0eac157d-de3d-4ff0-9ac2-1927b33c854a</name>
-          <entityField>BUILDINGNO</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>c70677f3-6722-4a90-86d6-0d89be06dbe1</name>
-          <entityField>ZIP</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>fafca9d6-c6dd-4b66-b1ff-1d6ba451827b</name>
-          <entityField>CITY</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>e7804363-405d-429d-91c9-23de9685cc9a</name>
-          <entityField>STATE</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
-  </children>
-</neonView>
diff --git a/neonView/AddressList_view/AddressList_view.aod b/neonView/AddressList_view/AddressList_view.aod
index 4ea6e925cff6fc725c11238a2c57b5c92adf1dfb..0baa8a57551446a1b41fc43aff6da1974c8a0425 100644
--- a/neonView/AddressList_view/AddressList_view.aod
+++ b/neonView/AddressList_view/AddressList_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AddressList_view</name>
   <description>Org addresses</description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -39,8 +39,8 @@
           <entityField>CITY</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>17039f2e-4253-4242-bcc4-b75483adfbd0</name>
-          <entityField>STATE</entityField>
+          <name>6af52273-25bf-4286-83cc-217aea94ad09</name>
+          <entityField>ADDRIDENTIFIER</entityField>
         </neonTableColumn>
       </columns>
     </titledListViewTemplate>
diff --git a/neonView/AddressFilter_view/AddressFilter_view.aod b/neonView/AddressLookup_view/AddressLookup_view.aod
similarity index 51%
rename from neonView/AddressFilter_view/AddressFilter_view.aod
rename to neonView/AddressLookup_view/AddressLookup_view.aod
index 8dca53e1da805358c4592f9d3e267aa52a3637d4..84a197811b5c31e788561505537c4b9c354cfeae 100644
--- a/neonView/AddressFilter_view/AddressFilter_view.aod
+++ b/neonView/AddressLookup_view/AddressLookup_view.aod
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
-  <name>AddressFilter_view</name>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>AddressLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterable v="true" />
   <layout>
     <boxLayout>
       <name>layout</name>
@@ -10,37 +9,49 @@
   </layout>
   <children>
     <tableViewTemplate>
-      <name>Addresses</name>
+      <name>DataTable</name>
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
-          <name>852583d4-1883-4b36-963f-6f3a4df63a89</name>
+          <name>297a27f0-51a0-40d7-a2eb-28fc2b9e5730</name>
+          <entityField>IS_STANDARD_ICON</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>07e3bcf0-30aa-4745-8dd6-ed79dd2d0fa0</name>
           <entityField>ADDR_TYPE</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>10e9e08f-db9b-4789-a4b4-b2a0a750b069</name>
+          <name>e6d9ced9-eea3-4cdf-9751-74c8f206282f</name>
           <entityField>COUNTRY</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>32b8b6f0-bdbc-4a4b-b98c-0a22861b0e6c</name>
+          <name>570039fc-c27a-4b06-a93e-16cc712a3d0c</name>
           <entityField>ADDRESS</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>9d93662b-f024-4b0b-a37e-6cc88afb9dd2</name>
+          <name>26ca52ce-91e7-4e76-a37e-6db28b967beb</name>
           <entityField>BUILDINGNO</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>10e9e08f-db9b-4789-a4b4-b1a0a750b169</name>
+          <name>a54d6306-e9be-41db-9d1c-abeebe5ce77b</name>
           <entityField>ZIP</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>57247c5c-6498-420b-b288-68ca316cf7f2</name>
+          <name>6a07479c-b4d3-4946-993e-e6ce7dd825ba</name>
           <entityField>CITY</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>9a965a25-a8aa-4777-865e-138624f2d848</name>
+          <name>820b6ffc-7e56-4982-8f39-4443b0ada876</name>
           <entityField>STATE</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>24f73ac8-ac90-4beb-83fe-bdaa2d0806b6</name>
+          <entityField>ADDRIDENTIFIER</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>9651a718-ab01-4c97-8da0-6e7133f26466</name>
+          <entityField>#PROVIDER</entityField>
+        </neonTableColumn>
       </columns>
     </tableViewTemplate>
   </children>
diff --git a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
index 65f2c96188ae4e3313bcbc82c5268b5fc39b8590..dbec2da120f3c7ad0d96b8e42326b6c48cd6c6e3 100644
--- a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
+++ b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AdressMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -37,8 +37,8 @@
           <entityField>CITY</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>945bd8e7-9d0d-4e32-8908-24d8dfb74463</name>
-          <entityField>STATE</entityField>
+          <name>481496b8-d611-4b4a-9c5e-1d28a7136a2d</name>
+          <entityField>ADDRIDENTIFIER</entityField>
         </neonTableColumn>
       </columns>
     </genericMultipleViewTemplate>
diff --git a/neonView/AnyContactLookup_view/AnyContactLookup_view.aod b/neonView/AnyContactLookup_view/AnyContactLookup_view.aod
index 93cd56ffd1a11446ee855804d43d38f6ccf76d94..2854715d2de3512b0f292649ef7c8d0a4211c2e5 100644
--- a/neonView/AnyContactLookup_view/AnyContactLookup_view.aod
+++ b/neonView/AnyContactLookup_view/AnyContactLookup_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AnyContactLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod b/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod
index b4dfc33c7a03eeb50696d6afab723853966efd7a..7b76743657467674c1aae4734ab8633ad26ffd6c 100644
--- a/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod
+++ b/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AnyObjectRelationTree_view0</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -8,12 +8,12 @@
     </boxLayout>
   </layout>
   <children>
-    <treetableViewTemplate>
+    <treeViewTemplate>
       <name>AnyObjectRelations</name>
       <parentField>AnyObjectType</parentField>
       <titleField>AnyObjectRowid</titleField>
       <entityField>#ENTITY</entityField>
       <title></title>
-    </treetableViewTemplate>
+    </treeViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod
index be63a39d838da91006a0f8693183a6262a809130..d5b9b97ef42e613d841410306e5277a1bd55a3e8 100644
--- a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod
+++ b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod
@@ -1,41 +1,41 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
-  <name>AppointmentEdit_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <documentation>%aditoprj%/neonView/AppointmentEdit_view/documentation.adoc</documentation>
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-    </boxLayout>
-  </layout>
-  <children>
-    <appointmentEditViewTemplate>
-      <name>Edit</name>
-      <summaryField>SUMMARY</summaryField>
-      <descriptionField>DESCRIPTION</descriptionField>
-      <beginField>BEGIN</beginField>
-      <endField>END</endField>
-      <attendeesField>ATTENDEES</attendeesField>
-      <privateField>CLASSIFICATION</privateField>
-      <statusField>STATUS</statusField>
-      <locationField>LOCATION</locationField>
-      <categoriesField>CATEGORIES</categoriesField>
-      <alldayField>ALLDAY</alldayField>
-      <transparencyField>TRANSPARENCY</transparencyField>
-      <organizerField>ORGANIZER</organizerField>
-      <favoriteActionGroup1>PartStatActionGroup</favoriteActionGroup1>
-      <rruleField>RRULE</rruleField>
-      <recurrenceIdField>RECURRENCEID</recurrenceIdField>
-      <saveScopeField>SAFESCOPEFIELD</saveScopeField>
-      <masterBeginField>MASTERBEGIN</masterBeginField>
-      <masterEndField>MASTEREND</masterEndField>
-      <reminderField>REMINDER</reminderField>
-      <entityField>#ENTITY</entityField>
-    </appointmentEditViewTemplate>
-    <neonViewReference>
-      <name>39802b49-f67c-4796-ba05-105aa073d60c</name>
-      <entityField>AppointmentLinks</entityField>
-      <view>AppointmentLinkFilter_view</view>
-    </neonViewReference>
-  </children>
-</neonView>
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>AppointmentEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/neonView/AppointmentEdit_view/documentation.adoc</documentation>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <appointmentEditViewTemplate>
+      <name>Edit</name>
+      <summaryField>SUMMARY</summaryField>
+      <descriptionField>DESCRIPTION</descriptionField>
+      <beginField>BEGIN</beginField>
+      <endField>END</endField>
+      <attendeesField>ATTENDEES</attendeesField>
+      <privateField>CLASSIFICATION</privateField>
+      <statusField>STATUS</statusField>
+      <locationField>LOCATION</locationField>
+      <categoriesField>CATEGORIES</categoriesField>
+      <alldayField>ALLDAY</alldayField>
+      <transparencyField>TRANSPARENCY</transparencyField>
+      <organizerField>ORGANIZER</organizerField>
+      <favoriteActionGroup1>PartStatActionGroup</favoriteActionGroup1>
+      <rruleField>RRULE</rruleField>
+      <recurrenceIdField>RECURRENCEID</recurrenceIdField>
+      <saveScopeField>SAFESCOPEFIELD</saveScopeField>
+      <masterBeginField>MASTERBEGIN</masterBeginField>
+      <masterEndField>MASTEREND</masterEndField>
+      <reminderField>REMINDER</reminderField>
+      <entityField>#ENTITY</entityField>
+    </appointmentEditViewTemplate>
+    <neonViewReference>
+      <name>39802b49-f67c-4796-ba05-105aa073d60c</name>
+      <entityField>AppointmentLinks</entityField>
+      <view>AppointmentLinkEdit_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod b/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..026d72f2c8da0f365ea3b06957801230d6a81241
--- /dev/null
+++ b/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>AppointmentLinkEdit_view</name>
+  <title>relations</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>GenericMultiple</name>
+      <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>539c9844-8f4b-49e8-8974-30bdf127f47c</name>
+          <entityField>OBJECTTYPE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>eba00f45-cd7e-43c0-9dea-559293ca7d49</name>
+          <entityField>OBJECTID</entityField>
+        </neonTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod b/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod
index b08bd63a17172ab61584ea63a6547f286f1e91ca..9e8660757e4051effc152de0161cce4d41d56d0f 100644
--- a/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod
+++ b/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AppointmentLinkFilter_view</name>
   <title>relations</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -10,7 +10,7 @@
   </layout>
   <children>
     <genericMultipleViewTemplate>
-      <name>GenericMultiple</name>
+      <name>MultipleEdit</name>
       <autoNewRow v="true" />
       <entityField>#ENTITY</entityField>
       <columns>
diff --git a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
index 18b38cef92009cd7959d260a5d5eb1a3fd54a75d..53f8e32a4dbd252c66310003096c528b5aac0b44 100644
--- a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
+++ b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod
@@ -1,31 +1,36 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
-  <name>AppointmentPreview_view</name>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <documentation>%aditoprj%/neonView/AppointmentPreview_view/documentation.adoc</documentation>
-  <layout>
-    <boxLayout>
-      <name>layout</name>
-    </boxLayout>
-  </layout>
-  <children>
-    <appointmentPreviewViewTemplate>
-      <name>Appointments</name>
-      <summaryField>SUMMARY</summaryField>
-      <descriptionField>DESCRIPTION</descriptionField>
-      <beginField>BEGIN</beginField>
-      <endField>END</endField>
-      <periodField>STARTEND</periodField>
-      <attendeesField>ATTENDEES</attendeesField>
-      <privateField>CLASSIFICATION</privateField>
-      <transparencyField>TRANSPARENCY</transparencyField>
-      <statusField>STATUS</statusField>
-      <locationField>LOCATION</locationField>
-      <linkField>LINKS</linkField>
-      <organizerField>ORGANIZER</organizerField>
-      <categoriesField>CATEGORIES</categoriesField>
-      <favoriteActionGroup1>PartStatActionGroup</favoriteActionGroup1>
-      <entityField>#ENTITY</entityField>
-    </appointmentPreviewViewTemplate>
-  </children>
-</neonView>
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>AppointmentPreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/neonView/AppointmentPreview_view/documentation.adoc</documentation>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <appointmentPreviewViewTemplate>
+      <name>Appointments</name>
+      <summaryField>SUMMARY</summaryField>
+      <descriptionField>DESCRIPTION</descriptionField>
+      <beginField>BEGIN</beginField>
+      <endField>END</endField>
+      <periodField>STARTEND</periodField>
+      <attendeesField>ATTENDEES</attendeesField>
+      <privateField>CLASSIFICATION</privateField>
+      <transparencyField>TRANSPARENCY</transparencyField>
+      <statusField>STATUS</statusField>
+      <locationField>LOCATION</locationField>
+      <linkField>LINKS</linkField>
+      <organizerField>ORGANIZER</organizerField>
+      <categoriesField>CATEGORIES</categoriesField>
+      <favoriteActionGroup1>PartStatActionGroup</favoriteActionGroup1>
+      <entityField>#ENTITY</entityField>
+    </appointmentPreviewViewTemplate>
+    <neonViewReference>
+      <name>be0befe0-4b29-4c23-924a-0167240d2b54</name>
+      <entityField>AppointmentLinks</entityField>
+      <view>AppointmentLinkFilter_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/AttributeEdit_view/AttributeEdit_view.aod b/neonView/AttributeEdit_view/AttributeEdit_view.aod
index 064c276ce17d1e22e044aa68da5a18bbfa3fdef5..b26276f75c5b97d4b48ed3588effbb48440872da 100644
--- a/neonView/AttributeEdit_view/AttributeEdit_view.aod
+++ b/neonView/AttributeEdit_view/AttributeEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AttributeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributeFilter_view/AttributeFilter_view.aod b/neonView/AttributeFilter_view/AttributeFilter_view.aod
index 823ebd3b351eb052a322ae8ae86c7d1960fd127b..0b65a9ac7b1714029130c254f1f20168b244bbd6 100644
--- a/neonView/AttributeFilter_view/AttributeFilter_view.aod
+++ b/neonView/AttributeFilter_view/AttributeFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AttributeFilter_view</name>
   <title>Attributes</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -10,14 +10,14 @@
     </groupLayout>
   </layout>
   <children>
-    <treetableViewTemplate>
+    <treeViewTemplate>
       <name>AttributesTreetable</name>
       <parentField>ATTRIBUTE_PARENT_ID</parentField>
       <favoriteActionGroup1>AttributeActions</favoriteActionGroup1>
       <titleField>NAME_WITH_TYPE</titleField>
       <descriptionField>USAGELIST</descriptionField>
       <entityField>#ENTITY</entityField>
-    </treetableViewTemplate>
+    </treeViewTemplate>
     <tableViewTemplate>
       <name>AttributesTable</name>
       <entityField>#ENTITY</entityField>
diff --git a/neonView/AttributeMain_view/AttributeMain_view.aod b/neonView/AttributeMain_view/AttributeMain_view.aod
index 8b879b2df3b1b2e9b3515be8944ffc789837c7f3..eb7ee8159d2847212ac97b04124f182bc24eb5d4 100644
--- a/neonView/AttributeMain_view/AttributeMain_view.aod
+++ b/neonView/AttributeMain_view/AttributeMain_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AttributeMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributePreview_view/AttributePreview_view.aod b/neonView/AttributePreview_view/AttributePreview_view.aod
index c96aad0cda7eca0e8701a260bb23d72a4b19c587..1a5041da04ba58d9a141c8bdbe8d37acf2e30124 100644
--- a/neonView/AttributePreview_view/AttributePreview_view.aod
+++ b/neonView/AttributePreview_view/AttributePreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AttributePreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributeRelationEdit_view/AttributeRelationEdit_view.aod b/neonView/AttributeRelationEdit_view/AttributeRelationEdit_view.aod
index a77940f8ad7a51ab0bf6cd5c884f1a3fd1892275..a4b17b338e2a385c4383110d588d4df944b965d0 100644
--- a/neonView/AttributeRelationEdit_view/AttributeRelationEdit_view.aod
+++ b/neonView/AttributeRelationEdit_view/AttributeRelationEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AttributeRelationEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributeRelationFilter_view/AttributeRelationFilter_view.aod b/neonView/AttributeRelationFilter_view/AttributeRelationFilter_view.aod
index 73c5a2e0f2496feb2bcafad38ff80260be4f8949..c1ce0f20552076fc025129d8f4038c77fae5c629 100644
--- a/neonView/AttributeRelationFilter_view/AttributeRelationFilter_view.aod
+++ b/neonView/AttributeRelationFilter_view/AttributeRelationFilter_view.aod
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AttributeRelationFilter_view</name>
   <title>Attributes</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
   <layout>
-    <groupLayout>
+    <boxLayout>
       <name>layout</name>
-    </groupLayout>
+    </boxLayout>
   </layout>
   <children>
     <tableViewTemplate>
@@ -25,12 +25,5 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
-    <treetableViewTemplate>
-      <name>RelationsTreetable</name>
-      <parentField>ATTRIBUTE_PARENT_ID</parentField>
-      <titleField>AB_ATTRIBUTE_ID</titleField>
-      <descriptionField>ATTRIBUTERELATION_VALUE</descriptionField>
-      <entityField>#ENTITY</entityField>
-    </treetableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod
index be811dd2e4867f050ab984a4a275878fd488c30c..70932bf3595460a7e375d16a4c2fae51f15798b7 100644
--- a/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod
+++ b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AttributeRelationPreviewList</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod b/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod
index b1cd03b35f0c1b8f137ba724fe03ceba32679326..47d34ce205514a2df8cb6cb601ec8925ba2ff69d 100644
--- a/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod
+++ b/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod
@@ -1,21 +1,18 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
-  <name>AttributeRelationTree_view</name>
-  <title>Attributes</title>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterable v="true" />
-  <layout>
-    <groupLayout>
-      <name>layout</name>
-    </groupLayout>
-  </layout>
-  <children>
-    <treetableViewTemplate>
-      <name>Treetable</name>
-      <titleField>AB_ATTRIBUTE_ID</titleField>
-      <descriptionField>ATTRIBUTERELATION_VALUE</descriptionField>
-      <entityField>#ENTITY</entityField>
-      <title></title>
-    </treetableViewTemplate>
-  </children>
-</neonView>
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>AttributeRelationTree_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <treeViewTemplate>
+      <name>AttributeRelationTree</name>
+      <parentField>PARENT_ID</parentField>
+      <titleField>TITLE</titleField>
+      <entityField>#ENTITY</entityField>
+    </treeViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/AttributeTree_view/AttributeTree_view.aod b/neonView/AttributeTree_view/AttributeTree_view.aod
index d7b3557694910128f8b0a9139ec46eb24ce9bbb2..ecc1b210da04e548cb805245ed07510f1476da7e 100644
--- a/neonView/AttributeTree_view/AttributeTree_view.aod
+++ b/neonView/AttributeTree_view/AttributeTree_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AttributeTree_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -8,12 +8,12 @@
     </boxLayout>
   </layout>
   <children>
-    <treetableViewTemplate>
+    <treeViewTemplate>
       <name>Attributes</name>
       <parentField>ATTRIBUTE_PARENT_ID</parentField>
       <titleField>ATTRIBUTE_NAME</titleField>
       <descriptionField>ATTRIBUTE_TYPE</descriptionField>
       <entityField>#ENTITY</entityField>
-    </treetableViewTemplate>
+    </treeViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/AttributeUsageFilter_view/AttributeUsageFilter_view.aod b/neonView/AttributeUsageFilter_view/AttributeUsageFilter_view.aod
index 7c14633a238fbab44b941305930441847eeae635..87500bc6ffd7b9f4aa4cd883890dad531c326028 100644
--- a/neonView/AttributeUsageFilter_view/AttributeUsageFilter_view.aod
+++ b/neonView/AttributeUsageFilter_view/AttributeUsageFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AttributeUsageFilter_view</name>
   <description>View for listing all contexts where a attribute can be used in the attribute entity</description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod b/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod
index b30d15e4d4ced7d0be9cc68096568a587ad18052..0ecf44f96e8d1228876b0e755871a296b9a81386 100644
--- a/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod
+++ b/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>AttributeUsageMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CommunicationEdit_view/CommunicationEdit_view.aod b/neonView/CommunicationEdit_view/CommunicationEdit_view.aod
index 11a21d8caf4ae048555f5fd17547326a3f75945f..9ecbfcdcf7a13b2f1f55ab597b44487b4f6f9097 100644
--- a/neonView/CommunicationEdit_view/CommunicationEdit_view.aod
+++ b/neonView/CommunicationEdit_view/CommunicationEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>CommunicationEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod
index 4ce77fc86332b2a80a4d28a006801cf4fbc85406..ffad63e17e60f7fa24ac3b8af2a792553e3f5ae5 100644
--- a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod
+++ b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>CommunicationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/CommunicationList_view/CommunicationList_view.aod b/neonView/CommunicationList_view/CommunicationList_view.aod
index 191cccf8c671ff0941e714e4322a1355819a9a03..cc011575bf237e29f8ef54966ed644faf16ec5ae 100644
--- a/neonView/CommunicationList_view/CommunicationList_view.aod
+++ b/neonView/CommunicationList_view/CommunicationList_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>CommunicationList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod b/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod
index 3eb5eb88e2c9788261f3c136ea8a019a9431fe33..723b26dfe6a35bfa4b9e8bc307a02a8aebc8baa7 100644
--- a/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod
+++ b/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>CommunicationMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ContactEdit_view/ContactEdit_view.aod b/neonView/ContactEdit_view/ContactEdit_view.aod
index 861b5da3b0759316b1599cc08905dcd7cf205ee7..03a2f0de84d3c649892b2703ade040afc6bc8967 100644
--- a/neonView/ContactEdit_view/ContactEdit_view.aod
+++ b/neonView/ContactEdit_view/ContactEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ContactEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -9,7 +9,7 @@
   </layout>
   <children>
     <genericViewTemplate>
-      <name>data</name>
+      <name>Edit</name>
       <editMode v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
diff --git a/neonView/ContactList_view/ContactList_view.aod b/neonView/ContactList_view/ContactList_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b99e10274e606c0fe62fba52080c1854c06301e6
--- /dev/null
+++ b/neonView/ContactList_view/ContactList_view.aod
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>ContactList_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Contacts</name>
+      <hideContentSearch v="true" />
+      <isEditable v="false" />
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>ef71b5ad-8581-4845-ae66-7df17d1459e0</name>
+          <entityField>ORGANISATION_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>a3f3a2b8-1f7a-4783-b080-1853df3d1613</name>
+          <entityField>CONTACTROLE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>a8f4283d-7a40-4ee9-ae34-e4d424a9342a</name>
+          <entityField>DEPARTMENT</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>13b085a4-9ee7-418b-b3a9-acaf053c44f1</name>
+          <entityField>POSITION</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>1daa17e8-0e8d-4760-b229-651ae9a121d3</name>
+          <entityField>STATUS</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ContractEdit_view/ContractEdit_view.aod b/neonView/ContractEdit_view/ContractEdit_view.aod
index 1391bdb4967db897897e9d83341b60b9102ab7b5..ec6443f7b56cc44a107522a5d858d7a836bc2e87 100644
--- a/neonView/ContractEdit_view/ContractEdit_view.aod
+++ b/neonView/ContractEdit_view/ContractEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ContractEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ContractFilter_view/ContractFilter_view.aod b/neonView/ContractFilter_view/ContractFilter_view.aod
index 55dc1f1f2b4c8b65fdbecde5e108f01c6f0360ef..4933b78162863b690531c4dfb8d4d145f8e90a0d 100644
--- a/neonView/ContractFilter_view/ContractFilter_view.aod
+++ b/neonView/ContractFilter_view/ContractFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ContractFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/ContractMain_view/ContractMain_view.aod b/neonView/ContractMain_view/ContractMain_view.aod
index 3ceece90590160970331f5d228422451f617b2a5..83ff714a33918c32ee14942f3b1146e3fa2a9814 100644
--- a/neonView/ContractMain_view/ContractMain_view.aod
+++ b/neonView/ContractMain_view/ContractMain_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ContractMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -29,5 +29,10 @@
       <entityField>Attributes</entityField>
       <view>AttributeRelationFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>940f0dca-aee3-4af6-ae50-9334964ce414</name>
+      <entityField>AttributeTree</entityField>
+      <view>AttributeRelationTree_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ContractPreview_view/ContractPreview_view.aod b/neonView/ContractPreview_view/ContractPreview_view.aod
index 57f1e90dbae020ac8f2904e25b0120c44d234e7e..ff1f59a0aab0710c324372bbf12e94502032f0f3 100644
--- a/neonView/ContractPreview_view/ContractPreview_view.aod
+++ b/neonView/ContractPreview_view/ContractPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ContractPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CountriesPreview_view/CountriesPreview_view.aod b/neonView/CountriesPreview_view/CountriesPreview_view.aod
index 4945f2408915c227b08ea9b862e1b0844d54ef3d..90df6f69c339ecc0fa4d9fb5117a574fa14636d5 100644
--- a/neonView/CountriesPreview_view/CountriesPreview_view.aod
+++ b/neonView/CountriesPreview_view/CountriesPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>CountriesPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/CountriesTable_view/CountriesTable_view.aod b/neonView/CountriesTable_view/CountriesTable_view.aod
index 808613bd27e3b9913d693640e00726e85435eebc..feecd97ed92edf776020689ee66c6073879730d7 100644
--- a/neonView/CountriesTable_view/CountriesTable_view.aod
+++ b/neonView/CountriesTable_view/CountriesTable_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>CountriesTable_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DefaultLookup_view/DefaultLookup_view.aod b/neonView/DefaultLookup_view/DefaultLookup_view.aod
index b3da0c6bf1db6154752edaf32b6b1983808c6abe..ff5f7c4ad683368a3e85ea81e857e3bbc1c7c385 100644
--- a/neonView/DefaultLookup_view/DefaultLookup_view.aod
+++ b/neonView/DefaultLookup_view/DefaultLookup_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>DefaultLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DocumentEdit_view/DocumentEdit_view.aod b/neonView/DocumentEdit_view/DocumentEdit_view.aod
index 283a647750b56a5a3e2fba4311b116e2b2c44c7a..94c8f4329ba5469401611c1d36b95d8e342a8464 100644
--- a/neonView/DocumentEdit_view/DocumentEdit_view.aod
+++ b/neonView/DocumentEdit_view/DocumentEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>DocumentEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DocumentFilter_view/DocumentFilter_view.aod b/neonView/DocumentFilter_view/DocumentFilter_view.aod
index ff3fd20bc7a5528037453ab3c9896bb21d50df34..88007b4a1c2a3ad67ae4732cbaf982f3f0118bf5 100644
--- a/neonView/DocumentFilter_view/DocumentFilter_view.aod
+++ b/neonView/DocumentFilter_view/DocumentFilter_view.aod
@@ -1,8 +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.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>DocumentFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <filterable v="false" />
+  <filterable v="true" />
   <layout>
     <boxLayout>
       <name>layout</name>
diff --git a/neonView/DocumentList_view/DocumentList_view.aod b/neonView/DocumentList_view/DocumentList_view.aod
index 1242651dc1ead17bdf73321425b48148ca136013..d82e31df5478a41698efbbabce79fd9e0c184491 100644
--- a/neonView/DocumentList_view/DocumentList_view.aod
+++ b/neonView/DocumentList_view/DocumentList_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>DocumentList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/DocumentPreview_view/DocumentPreview_view.aod b/neonView/DocumentPreview_view/DocumentPreview_view.aod
index c5b0b8048309625b64a10eb19dd5da33d70995d9..eaf0fc619b087f5480398bd61d86691949368c45 100644
--- a/neonView/DocumentPreview_view/DocumentPreview_view.aod
+++ b/neonView/DocumentPreview_view/DocumentPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>DocumentPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -12,27 +12,23 @@
       <name>Head</name>
       <iconField>PREVIEW_IMAGE</iconField>
       <titleField>NAME</titleField>
-      <descriptionField>DESCRIPTION</descriptionField>
+      <subtitleField>TYPE</subtitleField>
+      <descriptionField>SIZE</descriptionField>
       <favoriteAction1>downloadSingleFileAction</favoriteAction1>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
-      <name>Info</name>
-      <editMode v="false" />
+      <name>Details</name>
       <showDrawer v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
-          <name>440566ed-1e63-437c-84d0-c5c7af5bc77a</name>
-          <entityField>SIZE</entityField>
-        </entityFieldLink>
-        <entityFieldLink>
-          <name>561bb15b-2bb5-441b-af7c-b49cc9e809cd</name>
-          <entityField>TYPE</entityField>
+          <name>85eba544-ca8f-40aa-ba01-9311f8861033</name>
+          <entityField>IS_MAIN_DOCUMENT</entityField>
         </entityFieldLink>
         <entityFieldLink>
-          <name>66fc2feb-a0c3-4ac6-8eae-809a7a8da289</name>
-          <entityField>IS_MAIN_DOCUMENT</entityField>
+          <name>4a89e2f0-1b61-432f-9560-b5f171f7e06d</name>
+          <entityField>DESCRIPTION</entityField>
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
diff --git a/neonView/EmployeeEdit_view/EmployeeEdit_view.aod b/neonView/EmployeeEdit_view/EmployeeEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..71614eff593bccfb770ea91b005d958a6feecad7
--- /dev/null
+++ b/neonView/EmployeeEdit_view/EmployeeEdit_view.aod
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>EmployeeEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Generic</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>1925ef51-54a8-41e2-aa78-6d95d1ee4b99</name>
+          <entityField>CONTACT_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>9170856b-45c2-4d8a-864d-4db36bfe4a8c</name>
+          <entityField>ISACTIVE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>7d36467f-8b79-4647-b8e5-5759bdbf37a7</name>
+          <entityField>FIRSTNAME</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>00a2dedb-67f5-4662-b053-bf841b30e365</name>
+          <entityField>LASTNAME</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>9c030b62-bf17-4be1-bcc6-87b304a618c0</name>
+          <entityField>TITLE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>6155e6b7-ee2c-45b4-87f5-9e506ffc5775</name>
+          <entityField>EMAIL_ADDRESS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>8cffaf75-f2dc-42c5-95d7-1ce1e4927d8a</name>
+          <entityField>DESCRIPTION</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>4ad9c1aa-37a9-46f9-a566-94e5be5c2a7f</name>
+          <entityField>PASSWORD</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>5381db3a-762d-439a-b41b-e4e67edc2099</name>
+          <entityField>CONFIRM_PASSWORD</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <neonViewReference>
+      <name>af8112a3-78d3-436f-b665-ebce595a7c24</name>
+      <entityField>EmployeeRoles</entityField>
+      <view>EmployeeRoleEdit_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/EmployeeFilter_view/EmployeeFilter_view.aod b/neonView/EmployeeFilter_view/EmployeeFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..88171ca8fcb9cc79b14de3c3d8590240268af14a
--- /dev/null
+++ b/neonView/EmployeeFilter_view/EmployeeFilter_view.aod
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>EmployeeFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Employees</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>15185ef0-5402-43c4-b5c9-1e0e836ef1c3</name>
+          <entityField>IMAGE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>3e3552f9-9591-45ae-a0bb-a85210c2b382</name>
+          <entityField>TITLE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>307dfdad-a0b2-436f-b8a1-9825821dba0c</name>
+          <entityField>ISACTIVE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>18b974f1-81ea-4ca0-83bf-a1505f763446</name>
+          <entityField>FIRSTNAME</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>27c4199c-157a-4c3e-a851-01aa1d82dfd2</name>
+          <entityField>LASTNAME</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/EmployeeLookup_view/EmployeeLookup_view.aod b/neonView/EmployeeLookup_view/EmployeeLookup_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..5a7bd7234fa8b505d54cf5800c7bbd121fa95037
--- /dev/null
+++ b/neonView/EmployeeLookup_view/EmployeeLookup_view.aod
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>EmployeeLookup_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>e37a558f-1936-4e23-aac5-11c23028c1d5</name>
+          <entityField>IMAGE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>b7eb1603-f9eb-46ae-8096-cfecaee359d5</name>
+          <entityField>FIRSTNAME</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>7c1a3e27-e7da-4e50-bef0-e987d9e1c4c8</name>
+          <entityField>LASTNAME</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/EmployeeMain_view/EmployeeMain_view.aod b/neonView/EmployeeMain_view/EmployeeMain_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..1cbb84296df85b58403b1279cf5f4a87241b3118
--- /dev/null
+++ b/neonView/EmployeeMain_view/EmployeeMain_view.aod
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>EmployeeMain_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <masterSlaveLayout>
+      <name>layout</name>
+      <master>f9ae631b-48ad-4d7c-a3a1-6cb00230e5c7</master>
+    </masterSlaveLayout>
+  </layout>
+  <children>
+    <neonViewReference>
+      <name>f9ae631b-48ad-4d7c-a3a1-6cb00230e5c7</name>
+      <entityField>#ENTITY</entityField>
+      <view>EmployeePreview_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>79a01c28-1eaa-4974-babd-fb6e4d59471b</name>
+      <entityField>EmployeeRoles</entityField>
+      <view>EmployeeRoleFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>7164f8cd-3892-4694-92ad-fc45afac68f1</name>
+      <entityField>Attributes</entityField>
+      <view>AttributeRelationFilter_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>68e54801-e68f-4797-97d2-368b4b82a7e4</name>
+      <entityField>AttributeTree</entityField>
+      <view>AttributeRelationTree_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>169d3ae7-d688-42fd-9097-77bbd9bfb81f</name>
+      <entityField>Documents</entityField>
+      <view>DocumentFilter_view</view>
+    </neonViewReference>
+  </children>
+</neonView>
diff --git a/neonView/EmployeePassword_view/EmployeePassword_view.aod b/neonView/EmployeePassword_view/EmployeePassword_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..731d112028ca26d6f7c8d66fba730c9a5240f45a
--- /dev/null
+++ b/neonView/EmployeePassword_view/EmployeePassword_view.aod
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>EmployeePassword_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Password</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>632294e8-f9ec-4bd1-afe4-87e3b5fc84c4</name>
+          <entityField>PASSWORD</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>66a7726a-c226-4d74-95a4-ea88950920bf</name>
+          <entityField>CONFIRM_PASSWORD</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/EmployeePreview_view/EmployeePreview_view.aod b/neonView/EmployeePreview_view/EmployeePreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..198c613625f55b8cf69b2094f843b9876ad4fc3e
--- /dev/null
+++ b/neonView/EmployeePreview_view/EmployeePreview_view.aod
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>EmployeePreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>Header</name>
+      <iconField>IMAGE</iconField>
+      <titleField>NAME_fieldGroup</titleField>
+      <subtitleField>TITLE</subtitleField>
+      <entityField>#ENTITY</entityField>
+    </cardViewTemplate>
+    <genericViewTemplate>
+      <name>Info</name>
+      <showDrawer v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>68755289-a351-4915-8626-52f023e237f8</name>
+          <entityField>ISACTIVE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>a5f8b519-26d8-4824-b9cf-9119c03b1bd8</name>
+          <entityField>CONTACT_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>0bda9209-1437-49eb-98b7-6edea9c6836a</name>
+          <entityField>DEPARTMENT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>d9786e3d-5364-4075-a08d-0d4ea91c4728</name>
+          <entityField>EMAIL_ADDRESS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>79cd6a97-6caf-4acb-81af-028b94f33e8f</name>
+          <entityField>DESCRIPTION</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod b/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..8f7c8f87db423237460233b64988a383db6003a7
--- /dev/null
+++ b/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>EmployeeRoleEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericMultipleViewTemplate>
+      <name>GenericMultiple</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>ecaa1457-eb60-4116-a46c-9c91e2d3fd63</name>
+          <entityField>ROLE</entityField>
+        </neonTableColumn>
+      </columns>
+    </genericMultipleViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..80d5076129ade0ac6b9dfa8481a146c81c1e3200
--- /dev/null
+++ b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>EmployeeRoleFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>Table</name>
+      <autoNewRow v="true" />
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>ab1c8d39-fc29-42e8-8b8e-3557d544b272</name>
+          <entityField>ROLE</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/FacebookTimeline_view/FacebookTimeline_view.aod b/neonView/FacebookTimeline_view/FacebookTimeline_view.aod
index ee40a09655845b6194b0be2e4590361e441282f0..1cfd71aba5679bdd29d96d6c58e8d9b099794351 100644
--- a/neonView/FacebookTimeline_view/FacebookTimeline_view.aod
+++ b/neonView/FacebookTimeline_view/FacebookTimeline_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>FacebookTimeline_view</name>
   <title>Facebook</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod
index 9eaf8ae599fb5d0ccac66fb6cab3a4059eecb536..6c8ad7446a55027ca2a01a8502667b82e1c27d15 100644
--- a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod
+++ b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>KeywordAttributeEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod
index f4eb93c10b5ccf7b22c47b2cba8346f4edc6141c..8322746e525e02f4dc2d8fe27ef0eb801c202f14 100644
--- a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod
+++ b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>KeywordAttributeFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod b/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod
index 79ac7a83b64d9550d7856d81f5b1427431a8f5a4..a7c6d12369c479620ccf45080fda8e9586e4a96c 100644
--- a/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod
+++ b/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>KeywordAttributeRelationRows_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="false" />
diff --git a/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod b/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..a4468d9f60da464c9d856469df4a9c573a3fec73
--- /dev/null
+++ b/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>KeywordAttriubteRelationTitled_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <titledListViewTemplate>
+      <name>mainList</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>9426ded9-a818-424e-8dd6-397dc439fffc</name>
+          <entityField>AB_KEYWORD_ATTRIBUTE_ID</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>35d71c73-cd55-4f45-8a22-22ac6ae7049d</name>
+          <entityField>valueProxy</entityField>
+        </neonTableColumn>
+      </columns>
+    </titledListViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod
index c30f17a429498deda182534442cb9f16821f0da4..31283c6fff3ca4221d2f5c881bba0963824645ee 100644
--- a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod
+++ b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>KeywordEntryEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod
index 6f70290d7787093b3f9fd0bb651184b69a4ce89b..80ba451c5ede8eaffae1986389fe751dea73ae1c 100644
--- a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod
+++ b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>KeywordEntryFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -9,6 +9,15 @@
     </groupLayout>
   </layout>
   <children>
+    <treeViewTemplate>
+      <name>EntriesTreetable</name>
+      <titleField>TITLE</titleField>
+      <descriptionField>KEYID</descriptionField>
+      <defaultGroupFields>
+        <element>CONTAINER</element>
+      </defaultGroupFields>
+      <entityField>#ENTITY</entityField>
+    </treeViewTemplate>
     <tableViewTemplate>
       <name>EntriesTable</name>
       <entityField>#ENTITY</entityField>
@@ -40,11 +49,5 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
-    <treetableViewTemplate>
-      <name>EntriesTreetable</name>
-      <titleField>TITLE</titleField>
-      <descriptionField>KEYID</descriptionField>
-      <entityField>#ENTITY</entityField>
-    </treetableViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/KeywordEntryMainSide_view/KeywordEntryMainSide_view.aod b/neonView/KeywordEntryMainSide_view/KeywordEntryMainSide_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..66dfddc51e82026ef05a6d8fe02a5f651f8ccfdd
--- /dev/null
+++ b/neonView/KeywordEntryMainSide_view/KeywordEntryMainSide_view.aod
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>KeywordEntryMainSide_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>Header</name>
+      <titleField>TITLE</titleField>
+      <subtitleField>CONTAINER</subtitleField>
+      <descriptionField>KEYID</descriptionField>
+      <entityField>#ENTITY</entityField>
+    </cardViewTemplate>
+    <genericViewTemplate>
+      <name>Info</name>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>12e16874-32ee-47d7-b9d7-acaa32ca0402</name>
+          <entityField>ISACTIVE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>74f8f491-43e2-4de5-b1c6-c83055b4ffa1</name>
+          <entityField>ISESSENTIAL</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>5608493f-90b5-4baf-9114-63cb6a2e85bf</name>
+          <entityField>SORTING</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/KeywordEntryMain_view/KeywordEntryMain_view.aod b/neonView/KeywordEntryMain_view/KeywordEntryMain_view.aod
index c65f5e238e32b4dc96a9d6db1ec2ed9b3fb160ab..53dc6badf13d9b11632943da598e897cb054fb18 100644
--- a/neonView/KeywordEntryMain_view/KeywordEntryMain_view.aod
+++ b/neonView/KeywordEntryMain_view/KeywordEntryMain_view.aod
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>KeywordEntryMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
     <masterSlaveLayout>
       <name>layout</name>
-      <master>19d059ec-7b77-4662-ad0b-14f43c76272e</master>
+      <master>267eb426-08d6-4699-9b9f-743c9c071463</master>
     </masterSlaveLayout>
   </layout>
   <children>
     <neonViewReference>
-      <name>19d059ec-7b77-4662-ad0b-14f43c76272e</name>
+      <name>267eb426-08d6-4699-9b9f-743c9c071463</name>
       <entityField>#ENTITY</entityField>
-      <view>KeywordEntryPreview_view</view>
+      <view>KeywordEntryMainSide_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>e722eb4b-5737-4801-b6e4-550fca43963a</name>
diff --git a/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod b/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod
index 497dbe38374cfd7084ea9c5e6331251ffb133b5e..f8a6856aa390ed0ace0165a842b3f98b587975c4 100644
--- a/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod
+++ b/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>KeywordEntryPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -35,5 +35,10 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>31f3e341-19b3-452e-a381-942c9860f696</name>
+      <entityField>KeywordAttributeRelationsReadOnly</entityField>
+      <view>KeywordAttriubteRelationTitled_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ModuleTree_view/ModuleTree_view.aod b/neonView/ModuleTree_view/ModuleTree_view.aod
index eddfeddf9faa7a768f73372a22081d83faafba1d..f57a3fe1d5b3c925c775ac8af6e9eca173319e48 100644
--- a/neonView/ModuleTree_view/ModuleTree_view.aod
+++ b/neonView/ModuleTree_view/ModuleTree_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ModuleTree_view</name>
   <title>Tree</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -9,7 +9,7 @@
     </boxLayout>
   </layout>
   <children>
-    <treetableViewTemplate>
+    <treeViewTemplate>
       <name>Modules</name>
       <parentField>PARENT_ID</parentField>
       <favoriteActionGroup3></favoriteActionGroup3>
@@ -18,6 +18,6 @@
       <iconField>ICON</iconField>
       <entityField>#ENTITY</entityField>
       <title></title>
-    </treetableViewTemplate>
+    </treeViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ObjectRelationEdit_view/ObjectRelationEdit_view.aod b/neonView/ObjectRelationEdit_view/ObjectRelationEdit_view.aod
index 889d80e42fcc7f4cb1fae2608ace36bb2d2621ac..7f3ae6c82059100ec5d878d094c2b6a53398658b 100644
--- a/neonView/ObjectRelationEdit_view/ObjectRelationEdit_view.aod
+++ b/neonView/ObjectRelationEdit_view/ObjectRelationEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ObjectRelationEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -21,6 +21,10 @@
           <name>f60a0e0d-c3a9-4ab7-9b52-b33f5bb61d31</name>
           <entityField>rowIdProxy</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>04579da5-0609-4a43-97dd-9e773ec1a29b</name>
+          <entityField>INFO</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
   </children>
diff --git a/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod b/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod
index 52dacd7c7e77f33488553c00a78a1ba711d2e683..0199c5d9ca0cb5b21d21753de06d4d23125798f3 100644
--- a/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod
+++ b/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ObjectRelationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -22,6 +22,10 @@
           <name>ab25081c-cb63-4d28-87d0-e4c022aac878</name>
           <entityField>rowIdProxy</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>a5e8b3d6-ff83-461a-ba28-d67e0df5d93d</name>
+          <entityField>INFO</entityField>
+        </neonTableColumn>
       </columns>
     </tableViewTemplate>
   </children>
diff --git a/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod b/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod
index ecf90e9d8bcc9178dc90fb5676d34693c8f78f85..6e5496348316ec265eda9c40167c3750dc10bcba 100644
--- a/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod
+++ b/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ObjectRelationPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..03950156117d7a1eb4f37b9efb67b833453a8c7b
--- /dev/null
+++ b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>ObjectRelationTypeEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Info</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>adb2c427-89fd-4f8d-abae-39c8273c9916</name>
+          <entityField>SOURCE_RELATION_TITLE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>ffaf9de0-6866-4d0a-80af-42b57169d83e</name>
+          <entityField>SOURCE_OBJECT_TYPE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>0fd227e4-2896-4ce3-b699-8e5ce82a2862</name>
+          <entityField>DEST_RELATION_TITLE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>e7578539-f60d-4136-af56-9fd587ed34ec</name>
+          <entityField>DEST_OBJECT_TYPE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>945f613e-ce96-419d-8a71-f3196e41e444</name>
+          <entityField>HIERARCHY</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..474bfcaaf5f51ab1861982ad275bc228d867326e
--- /dev/null
+++ b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>ObjectRelationTypeFilter_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <tableViewTemplate>
+      <name>RelationTypes</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>e526e3fb-2776-42f9-b75e-67a5dc7bde9d</name>
+          <entityField>SOURCE_RELATION_TITLE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>89ee84eb-b50b-47e4-863c-7537c8a2c1d0</name>
+          <entityField>SOURCE_OBJECT_TYPE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>2230c73a-f5d9-44bb-bcfa-67d42a24881b</name>
+          <entityField>DEST_RELATION_TITLE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>755d8ce7-3995-457c-b5f2-39f5aae361f6</name>
+          <entityField>DEST_OBJECT_TYPE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>3e9e27c1-e971-4431-9f47-1d8fe436be76</name>
+          <entityField>HIERARCHY</entityField>
+        </neonTableColumn>
+      </columns>
+    </tableViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ObjectRelationTypePreview_view/ObjectRelationTypePreview_view.aod b/neonView/ObjectRelationTypePreview_view/ObjectRelationTypePreview_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..0b02d9141e2ecf589fc746a1b7ad2547da75ed6b
--- /dev/null
+++ b/neonView/ObjectRelationTypePreview_view/ObjectRelationTypePreview_view.aod
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>ObjectRelationTypePreview_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <cardViewTemplate>
+      <name>header</name>
+      <titleField>SOURCE_RELATION_TITLE</titleField>
+      <entityField>#ENTITY</entityField>
+    </cardViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..472f2ae6756a22dc87731ca9a58aebddefba22a3
--- /dev/null
+++ b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>ObjectTreeEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Edit</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>fd656c16-ef80-479f-a106-4741fb86c95f</name>
+          <entityField>OBJECTRELATIONTYPEID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>81ec0bf6-132c-4046-b770-f65da3cd4b6e</name>
+          <entityField>TARGET_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>04579da5-0609-4a43-97dd-9e773ec1a29b</name>
+          <entityField>INFO</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/ObjectTree_view/ObjectTree_view.aod b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod
similarity index 57%
rename from neonView/ObjectTree_view/ObjectTree_view.aod
rename to neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod
index 3d68dc239b8a9178ac50de4dbda52af358502d17..36498203200d5587def0786af4a0ec1a15c76ceb 100644
--- a/neonView/ObjectTree_view/ObjectTree_view.aod
+++ b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod
@@ -1,20 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
-  <name>ObjectTree_view</name>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>ObjectTreeFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
   <layout>
     <boxLayout>
       <name>layout</name>
     </boxLayout>
   </layout>
   <children>
-    <treetableViewTemplate>
+    <treeViewTemplate>
       <name>ObjectRelations</name>
       <parentField>PARENT_ID</parentField>
+      <favoriteActionGroup1>alter</favoriteActionGroup1>
+      <nodeExpandedField>EXPANDED</nodeExpandedField>
       <titleField>TITLE</titleField>
-      <descriptionField>DESCRIPTION</descriptionField>
+      <descriptionField>INFO</descriptionField>
       <iconField>ICON</iconField>
+      <hideContentSearch v="true" />
       <entityField>#ENTITY</entityField>
-    </treetableViewTemplate>
+    </treeViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ObjectTreePreview/ObjectTreePreview.aod b/neonView/ObjectTreePreview/ObjectTreePreview.aod
new file mode 100644
index 0000000000000000000000000000000000000000..b6b2c90c68a7ba9c2b8376378700684acb382a10
--- /dev/null
+++ b/neonView/ObjectTreePreview/ObjectTreePreview.aod
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>ObjectTreePreview</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Info</name>
+      <showDrawer v="true" />
+      <drawerCaption>Info</drawerCaption>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>a7ff1a5c-1ea5-4904-a802-b3da55c07341</name>
+          <entityField>OBJECTRELATIONTYPEID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>0b612a60-d882-4def-b569-7146e1b1ccb6</name>
+          <entityField>TARGET_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>6ed4e675-b1f5-4790-97d1-d015f87f37e4</name>
+          <entityField>INFO</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/OfferDetail_view/OfferDetail_view.aod b/neonView/OfferDetail_view/OfferDetail_view.aod
index b8cb3ee2466cb528e098519a7aa3bd8b3eb34c29..a465d174bc221a0fa4ada807e8f2cb3aa9d104d3 100644
--- a/neonView/OfferDetail_view/OfferDetail_view.aod
+++ b/neonView/OfferDetail_view/OfferDetail_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OfferDetail_view</name>
   <title>Details</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OfferEdit_view/OfferEdit_view.aod b/neonView/OfferEdit_view/OfferEdit_view.aod
index 8a8b8f8f2e64e4d70276caa6ca6f4381f3db43ab..60e014f44a74e9ab46a5f84f9352401b2e8bab7b 100644
--- a/neonView/OfferEdit_view/OfferEdit_view.aod
+++ b/neonView/OfferEdit_view/OfferEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OfferEdit_view</name>
   <title>Offer</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod
index 8bd1c5f25d7e107d260c2752f565a3fa913f71ac..541ac072d5e3df256b4b726da078a091dd94bd8f 100644
--- a/neonView/OfferFilter_view/OfferFilter_view.aod
+++ b/neonView/OfferFilter_view/OfferFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OfferFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -27,7 +27,7 @@
       <name>SendOffersDashlet</name>
       <title>Sent offers</title>
       <description>Show all sent offers</description>
-      <fragment>Offer/filter?search=W3sibmFtZSI6IlNUQVRVUyIsIm9wZXJhdG9yIjoiRVFVQUwiLCJ2YWx1ZUtleSI6IjIiLCJ2YWx1ZSI6IlZlcnNlbmRldCIsImNvbnRlbnRUeXBlIjoiVEVYVCJ9XQ%253D%253D</fragment>
+      <fragment>Offer/filter?search=W3sibmFtZSI6IlNUQVRVUyIsIm9wZXJhdG9yIjoiRVFVQUwiLCJ2YWx1ZSI6ImU1ZDZiNWE0LTc1NzYtNDQwZi04MzMyLWJjNDAxNDdjMDMzNSIsImNvbnRlbnRUeXBlIjoiVEVYVCJ9XQ%253D%253D</fragment>
       <singleton v="true" />
       <requiresConfiguration v="false" />
       <icon>vaadin:cart</icon>
@@ -54,12 +54,8 @@
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
-          <name>60b83daa-9349-4bef-94d8-5f1fc350da59</name>
-          <entityField>OFFERCODE</entityField>
-        </neonTableColumn>
-        <neonTableColumn>
-          <name>36b035da-4a57-413e-a5dc-c8974ca3855b</name>
-          <entityField>VERSNR</entityField>
+          <name>4d40cee3-bcb1-4e67-8c1d-d5fc2e49cc11</name>
+          <entityField>FullOfferCode</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>780087e7-ff3c-4592-90be-607357168295</name>
diff --git a/neonView/OfferMain_view/OfferMain_view.aod b/neonView/OfferMain_view/OfferMain_view.aod
index 5acba02e0c0f1c8adb885739dfa7835a4cc84ec8..fd194c1b379bf81e5201f48d3f4bf360ff3fb234 100644
--- a/neonView/OfferMain_view/OfferMain_view.aod
+++ b/neonView/OfferMain_view/OfferMain_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OfferMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -19,6 +19,11 @@
       <entityField>Offeritems</entityField>
       <view>OfferitemFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>e6b12eed-d67e-467c-9302-f6340f901235</name>
+      <entityField>#ENTITY</entityField>
+      <view>OfferDetail_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>a3702740-418d-40d5-9415-788542c14abb</name>
       <entityField>Activities</entityField>
@@ -29,20 +34,10 @@
       <entityField>Tasks</entityField>
       <view>TaskFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>e6b12eed-d67e-467c-9302-f6340f901235</name>
-      <entityField>#ENTITY</entityField>
-      <view>OfferDetail_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>e96f2fec-1a98-4380-895a-82ab78ba408a</name>
       <entityField>Documents</entityField>
       <view>DocumentFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>5f9f6ab2-7bc4-473f-a846-c1536a3c2b1a</name>
-      <entityField>Attributes</entityField>
-      <view>AttributeRelationFilter_view</view>
-    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/OfferPreview_view/OfferPreview_view.aod b/neonView/OfferPreview_view/OfferPreview_view.aod
index b661fd7df08412973bdcb317c2f6a4718970b77d..5a36edbfc7aa6617c5da3e4dffde6d27c92f7ffd 100644
--- a/neonView/OfferPreview_view/OfferPreview_view.aod
+++ b/neonView/OfferPreview_view/OfferPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OfferPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..52a11dc88e9969ec87a44efe8fdd271c388d06d4
--- /dev/null
+++ b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>OfferitemEdit_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Info</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>a1d02350-10ed-4189-ab65-e750121a7efd</name>
+          <entityField>ITEMPOSITION</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>18f778d3-5672-48c5-b0f7-2c062662f9d1</name>
+          <entityField>PRODUCT_ID</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>e280db0c-0ac2-40d4-95c2-b59268c4f663</name>
+          <entityField>QUANTITY</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>f7bb223a-ab77-45b5-b6c0-9c8f4d478999</name>
+          <entityField>UNIT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>2b635ddb-d52c-4063-af11-aea8eeee151b</name>
+          <entityField>PRICE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>4f339738-6358-463e-b941-3b2693ab115a</name>
+          <entityField>DISCOUNT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>c0a22aa4-b09d-4d8b-8d24-1750eb7ba5ca</name>
+          <entityField>VAT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>e40aa70c-2a6a-4ff4-818f-0a56bc4c63f4</name>
+          <entityField>OPTIONAL</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>8df0d334-f0d8-4905-a7b1-e71576f3b24f</name>
+          <entityField>INFO</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <genericViewTemplate>
+      <name>Price</name>
+      <editMode v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>9200df17-11e2-4a1a-babb-ea48c6f88a93</name>
+          <entityField>TotalPrice</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/OfferitemFilter_view/OfferitemFilter_view.aod b/neonView/OfferitemFilter_view/OfferitemFilter_view.aod
index bcd71df78a10040f5491ac0df227e60d2755e0f1..782aa68ca11efa22d05bcf1a3fba67d2720e4ac2 100644
--- a/neonView/OfferitemFilter_view/OfferitemFilter_view.aod
+++ b/neonView/OfferitemFilter_view/OfferitemFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OfferitemFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -47,8 +47,8 @@
           <entityField>OPTIONAL</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>a31fd16c-4237-4cd9-a9de-2267f186d342</name>
-          <entityField>INFO</entityField>
+          <name>60a36c38-103f-4fdb-9e8a-b8fd6d441f14</name>
+          <entityField>TotalPrice</entityField>
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
diff --git a/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod b/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod
index b5df86178602cc025468e3e063ee3d5432ec83e4..9db36fae73c345f5663a68afad952b7e5528c8df 100644
--- a/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod
+++ b/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OfferitemMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OfferitemPreview_view/OfferitemPreview_view.aod b/neonView/OfferitemPreview_view/OfferitemPreview_view.aod
index 88b19d3d09f2f83da1647b1c717ce345cf5d7092..6927e3f06da1aa5dec4d1f4e6c708eaab6a082ab 100644
--- a/neonView/OfferitemPreview_view/OfferitemPreview_view.aod
+++ b/neonView/OfferitemPreview_view/OfferitemPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OfferitemPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/Options1_View/Options1_View.aod b/neonView/Options1_View/Options1_View.aod
index 9e739a0e6bb2c4e65a25463e8f794b058a2255fb..492de6430c08c538cf1217f32b86eae625bf86ac 100644
--- a/neonView/Options1_View/Options1_View.aod
+++ b/neonView/Options1_View/Options1_View.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>Options1_View</name>
   <title>Group1</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/Options2_View/Options2_View.aod b/neonView/Options2_View/Options2_View.aod
index 415a4c6d447490f5e6f93251676924e65eacdf18..369889ca34486a0d06be4dc8ef3b45aac0898785 100644
--- a/neonView/Options2_View/Options2_View.aod
+++ b/neonView/Options2_View/Options2_View.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>Options2_View</name>
   <title>Group2</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/Options_View/Options_View.aod b/neonView/Options_View/Options_View.aod
index 59528150c7ffdb7c0a6c579ab28bfd950aceaeba..6ca564e9c7e0d6344a2b5b7f9be396d5a0950993 100644
--- a/neonView/Options_View/Options_View.aod
+++ b/neonView/Options_View/Options_View.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>Options_View</name>
   <title>Options</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrderDetail_view/OrderDetail_view.aod b/neonView/OrderDetail_view/OrderDetail_view.aod
index f8b617ff780a19f5f5da0ead5ecbcbd326a92b49..b64c1463029003a06205c309aef7eb0a0f25cc57 100644
--- a/neonView/OrderDetail_view/OrderDetail_view.aod
+++ b/neonView/OrderDetail_view/OrderDetail_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrderDetail_view</name>
   <title>Details</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -10,7 +10,9 @@
   </layout>
   <children>
     <genericViewTemplate>
-      <name>OrderDetail_template</name>
+      <name>Details</name>
+      <showDrawer v="true" />
+      <drawerCaption>Detail</drawerCaption>
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
diff --git a/neonView/OrderEdit_view/OrderEdit_view.aod b/neonView/OrderEdit_view/OrderEdit_view.aod
index a7ed9380039aa564237f42f2cfe3c71d94bf6cad..8ab4459538bc6228271a07028817648be240f7a8 100644
--- a/neonView/OrderEdit_view/OrderEdit_view.aod
+++ b/neonView/OrderEdit_view/OrderEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrderEdit_view</name>
   <title>Receipt</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/OrderFilter_view/OrderFilter_view.aod b/neonView/OrderFilter_view/OrderFilter_view.aod
index 19fc9b6497015d680508883869189f9b9d102112..f631fc736b5d10bc66abd6f4ea02ff47273dd088 100644
--- a/neonView/OrderFilter_view/OrderFilter_view.aod
+++ b/neonView/OrderFilter_view/OrderFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrderFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/OrderMain_view/OrderMain_view.aod b/neonView/OrderMain_view/OrderMain_view.aod
index b6ea5b07fefaeef775aca9764ac339b1fddf38ca..77bbd6830b3053237835359ff55114deae8125ee 100644
--- a/neonView/OrderMain_view/OrderMain_view.aod
+++ b/neonView/OrderMain_view/OrderMain_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrderMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrderPreview_view/OrderPreview_view.aod b/neonView/OrderPreview_view/OrderPreview_view.aod
index bfe3309e12f844003df5a03a10f050cb42efa768..62dcd724c0b5d265a297f298926e8d747602af67 100644
--- a/neonView/OrderPreview_view/OrderPreview_view.aod
+++ b/neonView/OrderPreview_view/OrderPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrderPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
index dddaaae965ce503a1ea7289409576377f7a3a1a0..99689b6ae5ab97edaa1932c62fcfd0049954b8bc 100644
--- a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
+++ b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrderitemFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -50,6 +50,10 @@
           <name>03a15cab-67d9-4e9d-b911-0d5599c87671</name>
           <entityField>INFO</entityField>
         </neonTableColumn>
+        <neonTableColumn>
+          <name>eecc066d-e380-4fe7-9e9b-99d80842981d</name>
+          <entityField>TotalPrice</entityField>
+        </neonTableColumn>
       </columns>
     </tableViewTemplate>
   </children>
diff --git a/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod b/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod
index 4f44b37029b22645102debb6e3ba3fe5ee251244..684f0e1de2ac13f6acbd1b6f8a33392c9f06afa9 100644
--- a/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod
+++ b/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrderitemMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod
index 6560d2c27f6dbcf8c3f242af6cf9aef1f593a4dc..71fd61ff8999e63801852f32c973ce6e45f1a065 100644
--- a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod
+++ b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrderitemPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod
index 571abba34ba66caccea7545cf53379a65c1b1d53..67713dbe162982f4748096ecf637d25f0bf421f1 100644
--- a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod
+++ b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrganisationEditDefaults_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod
index 812914dec3dc2f45baedc4f12e8e05917b4f9e73..274866d3cfb2339102985a8bceb40b21596ec16b 100644
--- a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod
+++ b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrganisationEdit_view</name>
   <title>Company</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -44,7 +44,7 @@
     </genericViewTemplate>
     <neonViewReference>
       <name>148e3a6c-d30b-470c-84e5-273293348611</name>
-      <entityField>OrganisationAddresses</entityField>
+      <entityField>Addresses</entityField>
       <view>AdressMultiEdit_view</view>
     </neonViewReference>
     <neonViewReference>
diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
index 392717f6df2c2bafa17af9154d4fb015315d6c1a..0be0dd2053fa814caca8b0954dac6a4380772042 100644
--- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
+++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrganisationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -36,7 +36,7 @@
       <columns>
         <neonTableColumn>
           <name>2008e7ac-9e6a-4104-9d5b-da60a10a1c02</name>
-          <entityField>IMAGE</entityField>
+          <entityField>#IMAGE</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>a290a2ca-3236-4eb0-bf51-99f99d8414d6</name>
diff --git a/neonView/OrganisationLookup_view/OrganisationLookup_view.aod b/neonView/OrganisationLookup_view/OrganisationLookup_view.aod
index bd0f94acdd5f27d0580df859cbac72fcec6f95f2..ba23ce75d87d07174812cbe14ef41cffdd104bb1 100644
--- a/neonView/OrganisationLookup_view/OrganisationLookup_view.aod
+++ b/neonView/OrganisationLookup_view/OrganisationLookup_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrganisationLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -14,7 +14,7 @@
       <columns>
         <neonTableColumn>
           <name>8c14a108-c672-4b48-bd10-b5ca2e777168</name>
-          <entityField>IMAGE</entityField>
+          <entityField>#IMAGE</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>c2b34d5e-cefa-4bea-88bb-b62874956c19</name>
diff --git a/neonView/OrganisationMain_view/OrganisationMain_view.aod b/neonView/OrganisationMain_view/OrganisationMain_view.aod
index 024838f9f6d1d8504b48c3ed1096d717aaf70be7..1b5c843a8d3eedb5d208d47bf86607127573cd02 100644
--- a/neonView/OrganisationMain_view/OrganisationMain_view.aod
+++ b/neonView/OrganisationMain_view/OrganisationMain_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrganisationMain_view</name>
   <title>Attribute</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -20,45 +20,35 @@
       <entityField>Activities</entityField>
       <view>ActivityFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>55e04574-bc55-4c9a-a4c4-9ebd287f8ae6</name>
-      <entityField>Tasks</entityField>
-      <view>TaskFilter_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>c10533a6-d185-4b13-84ee-53a468544c03</name>
       <entityField>Contact</entityField>
       <view>PersonSimpleList_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>ae34787c-dcaf-4fe2-a4e2-35219f138b03</name>
+      <entityField>360DegreeObjects</entityField>
+      <view>360DegreeFilter_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>78aee175-d3ac-4378-8b3b-27f44a529aa5</name>
       <entityField>Productprices</entityField>
       <view>ProductpriceRelation_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>55e04574-bc55-4c9a-a4c4-9ebd287f8ae6</name>
+      <entityField>Tasks</entityField>
+      <view>TaskFilter_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>eba90ed2-5e55-4cdb-9e0b-5a09feeb7536</name>
       <entityField>Documents</entityField>
       <view>DocumentFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>50f61cda-5f85-4212-b3b2-3a55b9fae54d</name>
-      <entityField>Offers</entityField>
-      <view>OfferFilter_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>fd099297-e87d-4ada-b7e7-e04afafbd8b0</name>
-      <entityField>Contracts</entityField>
-      <view>ContractFilter_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>ab7d3db4-af9d-4903-b28a-6347f2512a54</name>
-      <entityField>ObjectRelations</entityField>
-      <view>ObjectRelationFilter_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>c82aff98-ede5-4d9e-a902-89f71ed7dbb0</name>
       <entityField>ObjectTrees</entityField>
-      <view>ObjectTree_view</view>
+      <view>ObjectTreeFilter_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>39c98ccb-7f77-4df0-818f-1f302f69fec4</name>
@@ -66,9 +56,9 @@
       <view>AttributeRelationFilter_view</view>
     </neonViewReference>
     <neonViewReference>
-      <name>dc1aa0ca-d0bd-45fd-84dc-55cfcf3ca430</name>
-      <entityField>Salesprojects</entityField>
-      <view>SalesprojectFilter_view</view>
+      <name>ba50e069-06da-440e-b04a-5a686fcf5303</name>
+      <entityField>AttributeTree</entityField>
+      <view>AttributeRelationTree_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>0686ad7e-8dc7-4b10-9df2-bf066ae3a310</name>
diff --git a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
index 442152285bd9dbf824fbb68c9f3a865f4d3b8795..37be5f599a73966439a01de1bc475ad38996b106 100644
--- a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
+++ b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>OrganisationPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -10,7 +10,7 @@
   <children>
     <cardViewTemplate>
       <name>Header</name>
-      <iconField>IMAGE</iconField>
+      <iconField>PICTURE</iconField>
       <titleField>NAME</titleField>
       <descriptionField>CUSTOMERCODE_DISPLAY_fieldGroup</descriptionField>
       <favoriteAction1>newActivity</favoriteAction1>
diff --git a/neonView/PersonDetail_view/PersonDetail_view.aod b/neonView/PersonDetail_view/PersonDetail_view.aod
index 24224b2cf7c99e179f06bd165e0aefbef82681ce..c09b04ddf5c789b92a83f135fb262a2c1b433d4e 100644
--- a/neonView/PersonDetail_view/PersonDetail_view.aod
+++ b/neonView/PersonDetail_view/PersonDetail_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>PersonDetail_view</name>
   <title>Details</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod
index a9cada77919335190c79c93045e4f195130a2f73..f5a9a421c5d12b9839ec58d39d6716d7691b1695 100644
--- a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod
+++ b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>PersonEditDefaults_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/PersonEdit_view/PersonEdit_view.aod b/neonView/PersonEdit_view/PersonEdit_view.aod
index 55ea2a761ba85c258981ef0ce2ca8c6e21d23f12..78930188971155046864647b3f5ea60c6e1d3186 100644
--- a/neonView/PersonEdit_view/PersonEdit_view.aod
+++ b/neonView/PersonEdit_view/PersonEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>PersonEdit_view</name>
   <title>Contact</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -57,6 +57,18 @@
           <name>f8ec0e41-7ead-4c80-878c-df75ce5fce34</name>
           <entityField>STATUS</entityField>
         </entityFieldLink>
+        <entityFieldLink>
+          <name>16b3b029-eed3-45b7-94b0-446c89d70594</name>
+          <entityField>DEPARTMENT</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>720ba110-faa2-4c64-823b-82a2089f337c</name>
+          <entityField>CONTACTROLE</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>7bad6e30-fda3-4ee4-858c-712a60437397</name>
+          <entityField>POSITION</entityField>
+        </entityFieldLink>
       </fields>
     </genericViewTemplate>
     <neonViewReference>
diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod
index 60c9ea74bcd01a0eedca740b550bce46223aea5f..fe94380f9869ce7deafca8ce11d3541eeec36754 100644
--- a/neonView/PersonFilter_view/PersonFilter_view.aod
+++ b/neonView/PersonFilter_view/PersonFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>PersonFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -37,7 +37,7 @@
       <columns>
         <neonTableColumn>
           <name>210cc6ab-5123-4d8a-8f2e-a6cd91d494ef</name>
-          <entityField>IMAGE</entityField>
+          <entityField>#IMAGE</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>125d04cc-5c7a-4c38-bd0f-b5d02d21067d</name>
diff --git a/neonView/PersonLookup_view/PersonLookup_view.aod b/neonView/PersonLookup_view/PersonLookup_view.aod
index de61ca290fab503f08ba4ef17235468191dd0822..9d5267529859cd20da454c829fb587f75c00f88e 100644
--- a/neonView/PersonLookup_view/PersonLookup_view.aod
+++ b/neonView/PersonLookup_view/PersonLookup_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>PersonLookup_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -14,7 +14,7 @@
       <columns>
         <neonTableColumn>
           <name>9541c336-10e9-4767-b6e5-52b6108d967a</name>
-          <entityField>IMAGE</entityField>
+          <entityField>#IMAGE</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>876baf47-81c8-477a-951c-18df2dd4d972</name>
diff --git a/neonView/PersonMain_view/PersonMain_view.aod b/neonView/PersonMain_view/PersonMain_view.aod
index 9f2610d3bd93a8cb6f3aa15ae70dcba764e78a48..3f1ff1dc33a248bb7dca94a0329a9c052c83d7a7 100644
--- a/neonView/PersonMain_view/PersonMain_view.aod
+++ b/neonView/PersonMain_view/PersonMain_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>PersonMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -19,6 +19,11 @@
       <entityField>Activities</entityField>
       <view>ActivityFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>e7b8c90f-dc8d-40f1-b4db-1493f845026f</name>
+      <entityField>360DegreeObjects</entityField>
+      <view>360DegreeFilter_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>573d2b77-f948-47bc-bac1-621dd824c697</name>
       <entityField>Tasks</entityField>
@@ -29,25 +34,10 @@
       <entityField>Documents</entityField>
       <view>DocumentFilter_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>0cb8f431-0377-45cb-a41b-a5716efb0fd0</name>
-      <entityField>Offers</entityField>
-      <view>OfferFilter_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>ec344a07-7b82-4c54-b06b-30ac5b8599f9</name>
-      <entityField>Contracts</entityField>
-      <view>ContractFilter_view</view>
-    </neonViewReference>
-    <neonViewReference>
-      <name>a713a58e-eae0-4657-9cb0-ffffbd41d4ab</name>
-      <entityField>ObjectRelations</entityField>
-      <view>ObjectRelationFilter_view</view>
-    </neonViewReference>
     <neonViewReference>
       <name>cb8ff3df-772b-4c12-8814-f9101295b1ba</name>
       <entityField>ObjectTrees</entityField>
-      <view>ObjectTree_view</view>
+      <view>ObjectTreeFilter_view</view>
     </neonViewReference>
     <neonViewReference>
       <name>be48c6fe-1837-4c40-aef1-130fc1a5c544</name>
@@ -58,6 +48,15 @@
       <name>5754fc3a-c81c-42ba-90ea-2859b10bb391</name>
       <entityField>LogHistoryConsumer</entityField>
       <view>LogHistoryFilter_view</view>
+    <neonViewReference>
+      <name>cf989bf6-3e49-44fc-ba98-322aae377da3</name>
+      <entityField>AttributeTree</entityField>
+      <view>AttributeRelationTree_view</view>
+    </neonViewReference>
+    <neonViewReference>
+      <name>c2606a8b-eac1-412e-893d-bb788d4a5b5c</name>
+      <entityField>OtherContacts</entityField>
+      <view>ContactList_view</view>
     </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/PersonPreview_view/PersonPreview_view.aod b/neonView/PersonPreview_view/PersonPreview_view.aod
index a47b8e33dfa723a40634b7def558600c51daa380..dea509d10e2d57637e8d05b9b5c0c48dec837aab 100644
--- a/neonView/PersonPreview_view/PersonPreview_view.aod
+++ b/neonView/PersonPreview_view/PersonPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>PersonPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -10,7 +10,7 @@
   <children>
     <cardViewTemplate>
       <name>Header</name>
-      <iconField>IMAGE</iconField>
+      <iconField>PICTURE</iconField>
       <titleField>FULL_NAME_fieldGroup</titleField>
       <descriptionField>ORGANISATION_ID</descriptionField>
       <favoriteAction1>newActivity</favoriteAction1>
diff --git a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod
index 19c45ebe7c97cf14d78189bac85e5f7eef28c6f4..30b81a27aac3ade30157dd6216b1acad3b3da580 100644
--- a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod
+++ b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>PersonSimpleList_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -14,7 +14,7 @@
       <columns>
         <neonTableColumn>
           <name>d6207ade-29e7-4af0-ba5f-e9ddd799de7b</name>
-          <entityField>IMAGE</entityField>
+          <entityField>#IMAGE</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>1053d3a7-c5ee-4260-86f6-54e820f53e9f</name>
diff --git a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod
index e1258b43a52bae03fc2ade6bda6bfda3d03269e0..9b5a532217021a9c0d6de0c7d50c2b20166bc242 100644
--- a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod
+++ b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>Prod2ProdEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -9,7 +9,7 @@
   </layout>
   <children>
     <genericViewTemplate>
-      <name>linkData</name>
+      <name>Edit</name>
       <editMode v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
diff --git a/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod b/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod
index b22717b6dc3e85d0af6f3d8b88d740f7f67ceb3c..9faf4b3a3b90ba6298f7590140950c7f2fd9c4d2 100644
--- a/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod
+++ b/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>Prod2prodFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -9,13 +9,13 @@
     </boxLayout>
   </layout>
   <children>
-    <treetableViewTemplate>
+    <treeViewTemplate>
       <name>Partlist</name>
-      <parentField>PARENTID</parentField>
+      <parentField>DEST_ID</parentField>
       <favoriteActionGroup1>alter</favoriteActionGroup1>
       <titleField>PRODUCTCODE</titleField>
       <descriptionField>QUANTITY</descriptionField>
       <entityField>#ENTITY</entityField>
-    </treetableViewTemplate>
+    </treeViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/ProductDescription_view/ProductDescription_view.aod b/neonView/ProductDescription_view/ProductDescription_view.aod
index 8fb4ca516c6bf41a721ac9d35dddcaf95ee60859..27be19e6d9bcd2408ac68eeb00026126c90112d1 100644
--- a/neonView/ProductDescription_view/ProductDescription_view.aod
+++ b/neonView/ProductDescription_view/ProductDescription_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ProductDescription_view</name>
   <title>Description</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/ProductEdit_view/ProductEdit_view.aod b/neonView/ProductEdit_view/ProductEdit_view.aod
index f068db7c5dbcd125706a3dbc300b023766091a22..687d513b1e6fbfbdf724e4835f2323124f9f0543 100644
--- a/neonView/ProductEdit_view/ProductEdit_view.aod
+++ b/neonView/ProductEdit_view/ProductEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ProductEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ProductFilter_view/ProductFilter_view.aod b/neonView/ProductFilter_view/ProductFilter_view.aod
index e30ca8feabf278c95b9ac8ba484ea9aff7c35749..51e6a88b6443da181609e32946ea9b025cf99e94 100644
--- a/neonView/ProductFilter_view/ProductFilter_view.aod
+++ b/neonView/ProductFilter_view/ProductFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ProductFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/ProductMain_view/ProductMain_view.aod b/neonView/ProductMain_view/ProductMain_view.aod
index 7ac4a87c4db385d9c6be171334d2084be0cbe6e9..9f143d1e45b165deb3f534fe5e73f94bd448bada 100644
--- a/neonView/ProductMain_view/ProductMain_view.aod
+++ b/neonView/ProductMain_view/ProductMain_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ProductMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -49,5 +49,10 @@
       <entityField>Attributes</entityField>
       <view>AttributeRelationFilter_view</view>
     </neonViewReference>
+    <neonViewReference>
+      <name>6ee1258f-b571-45c1-b833-f292361b5a04</name>
+      <entityField>AttributeTree</entityField>
+      <view>AttributeRelationTree_view</view>
+    </neonViewReference>
   </children>
 </neonView>
diff --git a/neonView/ProductPreview_view/ProductPreview_view.aod b/neonView/ProductPreview_view/ProductPreview_view.aod
index 91ff9e7ad9cb16cd7e4301d3757883ffb247c200..b66c4446cddc5458a4088d5c0abe58ac9b662636 100644
--- a/neonView/ProductPreview_view/ProductPreview_view.aod
+++ b/neonView/ProductPreview_view/ProductPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ProductPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod
index 94dabe34fee55dd402b862fa4f51882e3a51d6cb..958b508810443d6db2777fbfe3d5619dcfe0a044 100644
--- a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod
+++ b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ProductpriceEdit_view</name>
   <title>Price list</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
index 5ce915618f4fb2b11ef3ab2e8824a5b43d651f57..b225f31a95b5abf6de65302cf84b5d1e777e836a 100644
--- a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
+++ b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ProductpriceFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod b/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod
index 4d3cd87977c6673cb16853676eb0d09531f5bbba..3f9f33250c400cb0f9b755e87e229f788ff579c8 100644
--- a/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod
+++ b/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>ProductpriceRelation_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectClassificationEntryEdit_view/SalesprojectClassificationEntryEdit_view.aod b/neonView/SalesprojectClassificationEntryEdit_view/SalesprojectClassificationEntryEdit_view.aod
index 02539c4a78045ba3c32471ca9b4dbf77263c4021..e014c2674003f2ddc968ebef0cc612ea7ad879cd 100644
--- a/neonView/SalesprojectClassificationEntryEdit_view/SalesprojectClassificationEntryEdit_view.aod
+++ b/neonView/SalesprojectClassificationEntryEdit_view/SalesprojectClassificationEntryEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectClassificationEntryEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectClassificationEntryPreview_view/SalesprojectClassificationEntryPreview_view.aod b/neonView/SalesprojectClassificationEntryPreview_view/SalesprojectClassificationEntryPreview_view.aod
index 4fbd720d663f623a42cd36c06fd73148310471cf..cf4ddc5040f214b04d211b2f2f53aa42606e95fc 100644
--- a/neonView/SalesprojectClassificationEntryPreview_view/SalesprojectClassificationEntryPreview_view.aod
+++ b/neonView/SalesprojectClassificationEntryPreview_view/SalesprojectClassificationEntryPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectClassificationEntryPreview_view</name>
   <title>asdf</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/SalesprojectClassificationFilter_view/SalesprojectClassificationFilter_view.aod b/neonView/SalesprojectClassificationFilter_view/SalesprojectClassificationFilter_view.aod
index 09564bc6da07d94162597f245c1b41bad0031cca..c12d4d020ed0be624ca97c968eaf8513307c9237 100644
--- a/neonView/SalesprojectClassificationFilter_view/SalesprojectClassificationFilter_view.aod
+++ b/neonView/SalesprojectClassificationFilter_view/SalesprojectClassificationFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectClassificationFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectClassificationPreview_view/SalesprojectClassificationPreview_view.aod b/neonView/SalesprojectClassificationPreview_view/SalesprojectClassificationPreview_view.aod
index dc547b364486d99d1a3f6e9388c6e5eddbf92b1a..b6773490cfbfc248deae7412bbefd5b89a0969cc 100644
--- a/neonView/SalesprojectClassificationPreview_view/SalesprojectClassificationPreview_view.aod
+++ b/neonView/SalesprojectClassificationPreview_view/SalesprojectClassificationPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectClassificationPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod b/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod
index 16ddeeaa248d7712b685e16dc2f590662dfe4796..d315479fd2d8778e4c655d01681a69f172ac7bff 100644
--- a/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod
+++ b/neonView/SalesprojectCompetitionEdit_view/SalesprojectCompetitionEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectCompetitionEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectCompetitionFilter_view/SalesprojectCompetitionFilter_view.aod b/neonView/SalesprojectCompetitionFilter_view/SalesprojectCompetitionFilter_view.aod
index b59f7d997a1ef5d1eb5e5c92de1aeb4f638b1f4b..72233eec4d73ce2a3248faaf5b8e352168a63a57 100644
--- a/neonView/SalesprojectCompetitionFilter_view/SalesprojectCompetitionFilter_view.aod
+++ b/neonView/SalesprojectCompetitionFilter_view/SalesprojectCompetitionFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectCompetitionFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod b/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod
index 89dbc0919c2f16ff9ddd494953b0d44581a1aaac..ae8dfc222cf2f206b7905db3294cd6c06b599d30 100644
--- a/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod
+++ b/neonView/SalesprojectCompetitionPreview_view/SalesprojectCompetitionPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectCompetitionPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -16,6 +16,8 @@
     </cardViewTemplate>
     <genericViewTemplate>
       <name>Info</name>
+      <showDrawer v="true" />
+      <drawerCaption>Details</drawerCaption>
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
diff --git a/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod b/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod
index 3fbde44933501c753235a292dd0d6645c1d86b39..de1a3461bb5e7138fb90ae3348fb4f79c2134ebc 100644
--- a/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod
+++ b/neonView/SalesprojectCycleEdit_view/SalesprojectCycleEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectCycleEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod b/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod
index f9f282b6f5106a2314783c3df1f3992ae0ef8aab..55809e21f25a772051eff44caa23f2fdbc259d4a 100644
--- a/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod
+++ b/neonView/SalesprojectCycleFilter_view/SalesprojectCycleFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectCycleFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod b/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod
index ec7629916bac8b1a42ec9f0f1b02a62a78fd550a..41114194e655c15ee0487f9e0a3d7df2d1043f9c 100644
--- a/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod
+++ b/neonView/SalesprojectCyclePreview_view/SalesprojectCyclePreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectCyclePreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod b/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod
index 1177b22ab4beb666fe97b91781458193439d9b70..edacdea2adf843ed29d30a7eb4850f3bcd4fd932 100644
--- a/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod
+++ b/neonView/SalesprojectCycle_view/SalesprojectCycle_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectCycle_view</name>
   <title>Milestones</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
index d6354dbb09f0ec18cf6fb85464c5821f75dced8d..5c2db6962a97eead75e68fdae5689a31deca62e5 100644
--- a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
+++ b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectEdit_view</name>
   <title>Salesproject</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
index 5baa8af9d1972faee567f460d1e03c380063d9f2..04505e731bafead634f8abb604c4782935fb49b1 100644
--- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
+++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -27,7 +27,7 @@
       <name>OpenSalesprojectsDashlet</name>
       <title>Open salesprojects</title>
       <description>Show open salesprojects</description>
-      <fragment>Salesproject/filter?search=W3sibmFtZSI6IlNUQVRFIiwib3BlcmF0b3IiOiJFUVVBTCIsInZhbHVlS2V5IjoiMSIsInZhbHVlIjoiT2ZmZW4iLCJjb250ZW50VHlwZSI6IlRFWFQifV0%253D</fragment>
+      <fragment>Salesproject/filter?search=W3sibmFtZSI6IlNUQVRFIiwib3BlcmF0b3IiOiJFUVVBTCIsInZhbHVlIjoiMjViMGFjNzctZWY5Mi00ODA5LTgwMmUtYmI5ZDg3ODJmODY1IiwiY29udGVudFR5cGUiOiJURVhUIn1d</fragment>
       <singleton v="true" />
       <requiresConfiguration v="false" />
       <icon>vaadin:filter</icon>
diff --git a/neonView/SalesprojectForecastEdit_view/SalesprojectForecastEdit_view.aod b/neonView/SalesprojectForecastEdit_view/SalesprojectForecastEdit_view.aod
index 3e13766ead8c639bba9e292821c597fe2d1cf80c..366face9408918159d95b834b1d8906c2b2a1df2 100644
--- a/neonView/SalesprojectForecastEdit_view/SalesprojectForecastEdit_view.aod
+++ b/neonView/SalesprojectForecastEdit_view/SalesprojectForecastEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectForecastEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectForecastFilter_view/SalesprojectForecastFilter_view.aod b/neonView/SalesprojectForecastFilter_view/SalesprojectForecastFilter_view.aod
index d2b2443bf4901dfc689bd45f75b4eaa2e0f24f8a..63f7e54df860019a04eace135ed6e27dd8705471 100644
--- a/neonView/SalesprojectForecastFilter_view/SalesprojectForecastFilter_view.aod
+++ b/neonView/SalesprojectForecastFilter_view/SalesprojectForecastFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectForecastFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/SalesprojectForecastPreview_view/SalesprojectForecastPreview_view.aod b/neonView/SalesprojectForecastPreview_view/SalesprojectForecastPreview_view.aod
index 97e8375375b41b5e28485144e46c5f3a8bad33e4..1afb1bf945c05122fc551d8dbec268e4a08dd67e 100644
--- a/neonView/SalesprojectForecastPreview_view/SalesprojectForecastPreview_view.aod
+++ b/neonView/SalesprojectForecastPreview_view/SalesprojectForecastPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectForecastPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -10,12 +10,14 @@
   <children>
     <cardViewTemplate>
       <name>Header</name>
-      <titleField>TYPE</titleField>
+      <titleField>GROUPCODE</titleField>
       <descriptionField>DATE_START</descriptionField>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
       <name>Info</name>
+      <showDrawer v="true" />
+      <drawerCaption>Details</drawerCaption>
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
index 7350642bde517bfc42eca3edbe0b5a49eb5091d7..4f429107957c57843a11aaff1328c91c90cac815 100644
--- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
+++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectMemberEdit_view/SalesprojectMemberEdit_view.aod b/neonView/SalesprojectMemberEdit_view/SalesprojectMemberEdit_view.aod
index c1adcb7f7f789fd78e92fb3e5b361a44f4c513a0..635fc5f1b4fc56b31e2d464d342e44ee91646a1e 100644
--- a/neonView/SalesprojectMemberEdit_view/SalesprojectMemberEdit_view.aod
+++ b/neonView/SalesprojectMemberEdit_view/SalesprojectMemberEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectMemberEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -21,10 +21,6 @@
           <name>b74ab5a3-2d3c-49e6-b7df-219b16ca22fd</name>
           <entityField>SALESPROJECT_ROLE</entityField>
         </entityFieldLink>
-        <entityFieldLink>
-          <name>cde86703-28d1-43f7-a216-7d7ab3d6137b</name>
-          <entityField>RELATIONSHIP</entityField>
-        </entityFieldLink>
       </fields>
     </genericViewTemplate>
   </children>
diff --git a/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod b/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod
index c2fa76a135ab5fe3f7334cde289549569b727527..fe1a90deac900cb39a02966139204731459fd850 100644
--- a/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod
+++ b/neonView/SalesprojectMemberFilter_view/SalesprojectMemberFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectMemberFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
diff --git a/neonView/SalesprojectMemberPreview_view/SalesprojectMemberPreview_view.aod b/neonView/SalesprojectMemberPreview_view/SalesprojectMemberPreview_view.aod
index e97ce873ab2aaf2594e005852d1806517c7674f8..b940c76d5bfff45bebc53f5250ff63de6da233c4 100644
--- a/neonView/SalesprojectMemberPreview_view/SalesprojectMemberPreview_view.aod
+++ b/neonView/SalesprojectMemberPreview_view/SalesprojectMemberPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectMemberPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectPhases_view/SalesprojectPhases_view.aod b/neonView/SalesprojectPhases_view/SalesprojectPhases_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..c4de8f137b681cd664e873800f2cafad6ce4c5ee
--- /dev/null
+++ b/neonView/SalesprojectPhases_view/SalesprojectPhases_view.aod
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>SalesprojectPhases_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <dashletConfigurations>
+    <neonDashletConfiguration>
+      <name>Salesproject phases</name>
+      <title>Salesproject phases</title>
+      <description>Zeigt wie viele Vertriebsprojekte in den einzelnen Vertriebsphasen sind. </description>
+      <fragment>SalesprojectAnalyses/full</fragment>
+      <singleton v="true" />
+      <icon>VAADIN:FUNNEL</icon>
+      <categories>
+        <neonDashletCategory>
+          <name>salesproject</name>
+          <title>Salesproject</title>
+        </neonDashletCategory>
+        <neonDashletCategory>
+          <name>chart</name>
+          <title>Chart</title>
+        </neonDashletCategory>
+      </categories>
+    </neonDashletConfiguration>
+  </dashletConfigurations>
+  <layout>
+    <groupLayout>
+      <name>layout</name>
+    </groupLayout>
+  </layout>
+  <children>
+    <singleDataChartViewTemplate>
+      <name>PhaseFunnelChart</name>
+      <chartType>FUNNEL</chartType>
+      <xAxis>X_PHASE</xAxis>
+      <yAxis>Y_COUNT</yAxis>
+      <parentField></parentField>
+      <entityField>#ENTITY</entityField>
+    </singleDataChartViewTemplate>
+    <singleDataChartViewTemplate>
+      <name>PhasePieChart</name>
+      <chartType>PIE</chartType>
+      <xAxis>X_PHASE</xAxis>
+      <yAxis>Y_COUNT</yAxis>
+      <parentField></parentField>
+      <entityField>#ENTITY</entityField>
+    </singleDataChartViewTemplate>
+    <singleDataChartViewTemplate>
+      <name>PhasePyramidChart</name>
+      <chartType>PYRAMID</chartType>
+      <xAxis>X_PHASE</xAxis>
+      <yAxis>Y_COUNT</yAxis>
+      <entityField>#ENTITY</entityField>
+    </singleDataChartViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
index 44cadc8a7c8ac2689b40553b0b0bc87b8987d246..26ce3663b06bf4b0e809e176f0cfae3d57a98b0d 100644
--- a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
+++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod
@@ -1,17 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <headerFooterLayout>
       <name>layout</name>
-    </boxLayout>
+      <footer>AdditionalInfo</footer>
+    </headerFooterLayout>
   </layout>
   <children>
     <cardViewTemplate>
       <name>Head</name>
       <iconField>IMAGE</iconField>
       <titleField>PROJECTTITLE</titleField>
+      <subtitleField>CONTACT_ID</subtitleField>
       <descriptionField>PROJECTCODE</descriptionField>
       <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
diff --git a/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..70df58282a0c2c6a7395d606ce4cc0600ba4e92c
--- /dev/null
+++ b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>SalesprojectScoreCard_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <dashletConfigurations>
+    <neonDashletConfiguration>
+      <name>KeyFigures</name>
+      <title>Key figures</title>
+      <description>Wichtigste Kennzahlen zu den Vertriebsprojekten.</description>
+      <fragment>SalesprojectAnalyses/full</fragment>
+      <singleton v="true" />
+      <icon>VAADIN:GRID_BIG</icon>
+      <categories>
+        <neonDashletCategory>
+          <name>salesproject</name>
+          <title>Salesproject</title>
+        </neonDashletCategory>
+      </categories>
+    </neonDashletConfiguration>
+  </dashletConfigurations>
+  <layout>
+    <boxLayout>
+      <name>layout</name>
+    </boxLayout>
+  </layout>
+  <children>
+    <scoreCardViewTemplate>
+      <name>KeyFigures</name>
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>44449f24-ed9d-4053-8202-db4b43032067</name>
+          <entityField>OVERALL_TURNOVER</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>3377fe1b-1f29-4c49-88c8-7a1b1ee6d0ce</name>
+          <entityField>OVERALL_FORECAST</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>2ba5a5e7-0ae6-4001-84a6-9444730d6611</name>
+          <entityField>OPEN_SALESPROJECTS</entityField>
+        </entityFieldLink>
+        <entityFieldLink>
+          <name>f98b6e67-7337-45ac-b9e6-9d36241ae828</name>
+          <entityField>SENT_OFFERS</entityField>
+        </entityFieldLink>
+      </fields>
+    </scoreCardViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
index 1fbd5e0dc5085d6ab4a45abfa26db462bba8e640..5eb40994bb6928ec3a516ea10f6fb69856caa649 100644
--- a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
+++ b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectSourceEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
index 09dda8d565b84a6605c828673b6d78c62370fd85..919820dd8d63652abb4bacb9aca9a14cae94de34 100644
--- a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
+++ b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectSourceFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -11,6 +11,7 @@
   <children>
     <tableViewTemplate>
       <name>Entries</name>
+      <autoNewRow v="true" />
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
diff --git a/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod
index e76797bd397ccb7e085a8c51a3c52e4acb33d072..9191fc15cb6c28165625455d7302b8b4475218c3 100644
--- a/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod
+++ b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>SalesprojectSourcePreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -11,16 +11,18 @@
     <cardViewTemplate>
       <name>Header</name>
       <titleField>SOURCE</titleField>
-      <descriptionField>ENTRYDATE</descriptionField>
+      <descriptionField>INFO</descriptionField>
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
       <name>Info</name>
+      <showDrawer v="true" />
+      <drawerCaption>Details</drawerCaption>
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
-          <name>e21bd1a0-368c-4842-bbfb-23db50c20ef7</name>
-          <entityField>INFO</entityField>
+          <name>7c61ec34-3206-4dba-96cf-24fe0112bf7b</name>
+          <entityField>ENTRYDATE</entityField>
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
diff --git a/neonView/StockCount_view/StockCount_view.aod b/neonView/StockCount_view/StockCount_view.aod
index e5107840018f92d1debbb8cccd4e1735e40c891b..f6884c6a6ceeb22d492e8b032062115b43a2c4d4 100644
--- a/neonView/StockCount_view/StockCount_view.aod
+++ b/neonView/StockCount_view/StockCount_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>StockCount_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -9,7 +9,7 @@
   </layout>
   <children>
     <genericViewTemplate>
-      <name>Generic</name>
+      <name>Stocks</name>
       <showDrawer v="true" />
       <drawerCaption>Stock</drawerCaption>
       <entityField>#ENTITY</entityField>
diff --git a/neonView/StockEdit_view/StockEdit_view.aod b/neonView/StockEdit_view/StockEdit_view.aod
index 51a44973a299e354851866f91d7accff4661b432..b50a5b72944f43b4a4ca7fcf826fc96ec85c7821 100644
--- a/neonView/StockEdit_view/StockEdit_view.aod
+++ b/neonView/StockEdit_view/StockEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>StockEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -9,7 +9,7 @@
   </layout>
   <children>
     <genericViewTemplate>
-      <name>Generic_template</name>
+      <name>Edit</name>
       <editMode v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
diff --git a/neonView/StockFilter_view/StockFilter_view.aod b/neonView/StockFilter_view/StockFilter_view.aod
index 50d23d9240555ebaf4ce5bca87f68c127640a377..85433255ea297c1706d5b158a9f2ca557738b823 100644
--- a/neonView/StockFilter_view/StockFilter_view.aod
+++ b/neonView/StockFilter_view/StockFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>StockFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -10,7 +10,7 @@
   </layout>
   <children>
     <tableViewTemplate>
-      <name>Table_template</name>
+      <name>Stocks</name>
       <autoNewRow v="true" />
       <entityField>#ENTITY</entityField>
       <columns>
diff --git a/neonView/TaskEdit_view/TaskEdit_view.aod b/neonView/TaskEdit_view/TaskEdit_view.aod
index 1d122a0c8cc59e662ced8398417c467216d7f0cc..9325040e6458936b9059aa794cbe6951e96614d7 100644
--- a/neonView/TaskEdit_view/TaskEdit_view.aod
+++ b/neonView/TaskEdit_view/TaskEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TaskEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -9,7 +9,7 @@
   </layout>
   <children>
     <genericViewTemplate>
-      <name>main</name>
+      <name>Edit</name>
       <editMode v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod
index 76dbda0d0642303ff9e62416707592d8563f6fe3..0b8c264401f9179e1080095d019415bb750cfad2 100644
--- a/neonView/TaskFilter_view/TaskFilter_view.aod
+++ b/neonView/TaskFilter_view/TaskFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TaskFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <filterable v="true" />
@@ -27,7 +27,7 @@
   </layout>
   <children>
     <timelineViewTemplate>
-      <name>mainTimeline</name>
+      <name>TasksTimeline</name>
       <dateField>START_DATE</dateField>
       <titleField>SUBJECT</titleField>
       <descriptionField>DESCRIPTION</descriptionField>
@@ -35,19 +35,19 @@
       <entityField>#ENTITY</entityField>
     </timelineViewTemplate>
     <tableViewTemplate>
-      <name>mainTable</name>
+      <name>TasksTable</name>
       <entityField>#ENTITY</entityField>
       <title></title>
       <columns>
+        <neonTableColumn>
+          <name>3cd319ea-5a06-409c-a7ce-1c87beff62d2</name>
+          <entityField>#ICON</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>591cd079-a8e9-49aa-8a2d-afb643aef079</name>
           <entityField>SUBJECT</entityField>
           <expandRatio v="100" />
         </neonTableColumn>
-        <neonTableColumn>
-          <name>b92dba41-58a2-4c95-aeb4-235c5eaffad7</name>
-          <entityField>STATUS</entityField>
-        </neonTableColumn>
         <neonTableColumn>
           <name>5d11add4-d939-4c8e-9633-efd0c2991837</name>
           <entityField>PRIORITY</entityField>
@@ -57,17 +57,17 @@
           <entityField>MATURITY_DATE</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>51190c85-fa03-4022-bc72-063d4b895d5b</name>
-          <entityField>EDITOR_CONTACT_ID</entityField>
+          <name>b92dba41-58a2-4c95-aeb4-235c5eaffad7</name>
+          <entityField>STATUS</entityField>
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
-    <treetableViewTemplate>
-      <name>mainTreetable</name>
+    <treeViewTemplate>
+      <name>TasksTreetable</name>
       <titleField>SUBJECT</titleField>
       <descriptionField>DESCRIPTION</descriptionField>
       <iconField>#ICON</iconField>
       <entityField>#ENTITY</entityField>
-    </treetableViewTemplate>
+    </treeViewTemplate>
   </children>
 </neonView>
diff --git a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod
index 17d77bee5033e72939c23224c989baeb3781f52a..6388445f76128a851b93ac91c467ee7149019d96 100644
--- a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod
+++ b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TaskLinkFilter_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -9,7 +9,7 @@
   </layout>
   <children>
     <tableViewTemplate>
-      <name>Table</name>
+      <name>TaskLinks</name>
       <autoNewRow v="true" />
       <entityField>#ENTITY</entityField>
       <columns>
diff --git a/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod b/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod
index 5a43d5672c07c5262158438add274ca92ae9215a..9fdda896ab693871ee041bbe441478b1e62a3e88 100644
--- a/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod
+++ b/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TaskLinkMultiEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
-    <boxLayout>
+    <noneLayout>
       <name>layout</name>
-    </boxLayout>
+    </noneLayout>
   </layout>
   <children>
     <genericMultipleViewTemplate>
-      <name>GenericMultiple</name>
+      <name>MultipleEdit</name>
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
diff --git a/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod b/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7beb90a626f8a4cd0dbef6080e5922c4335c73a5
--- /dev/null
+++ b/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>TaskLinkPreviewList_view</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <titledListViewTemplate>
+      <name>TaskLinks</name>
+      <entityField>#ENTITY</entityField>
+      <columns>
+        <neonTableColumn>
+          <name>280359fa-e38a-49b1-9dc7-84cb670e43c3</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTableColumn>
+        <neonTableColumn>
+          <name>d5d86e34-16a0-4dd9-acfd-f1a2f031d750</name>
+          <entityField>OBJECT_ROWID</entityField>
+        </neonTableColumn>
+      </columns>
+    </titledListViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod b/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod
index 04901356207c43d3494152cf0fd797412d6a9a20..6171351549a23bc55bec3d914087045a1e0c24b6 100644
--- a/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod
+++ b/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TaskLinkPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -9,7 +9,7 @@
   </layout>
   <children>
     <genericViewTemplate>
-      <name>Generic</name>
+      <name>Info</name>
       <entityField>#ENTITY</entityField>
       <fields>
         <entityFieldLink>
diff --git a/neonView/TaskMainPreview_view/TaskMainPreview_view.aod b/neonView/TaskMainPreview_view/TaskMainPreview_view.aod
index b90cedaa55f0de2ea004104758fd8ad3facbf0bf..2bf917aa3e1fa14e6ad7c540b0dbf7e3f50d124f 100644
--- a/neonView/TaskMainPreview_view/TaskMainPreview_view.aod
+++ b/neonView/TaskMainPreview_view/TaskMainPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TaskMainPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -9,7 +9,7 @@
   </layout>
   <children>
     <cardViewTemplate>
-      <name>head</name>
+      <name>Header</name>
       <iconField>#ICON</iconField>
       <titleField>SUBJECT</titleField>
       <descriptionField>STATUS</descriptionField>
@@ -17,7 +17,7 @@
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
-      <name>extendedData</name>
+      <name>Info</name>
       <showDrawer v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
diff --git a/neonView/TaskMain_view/TaskMain_view.aod b/neonView/TaskMain_view/TaskMain_view.aod
index 9721f1788b3d43f2fe0dae78f469bf91b215e48f..1c962435644b495ed5b00f2f0509b297d5cbc1e7 100644
--- a/neonView/TaskMain_view/TaskMain_view.aod
+++ b/neonView/TaskMain_view/TaskMain_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TaskMain_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -14,14 +14,10 @@
       <entityField>#ENTITY</entityField>
       <view>TaskMainPreview_view</view>
     </neonViewReference>
-    <neonViewReference>
-      <name>4211b2cf-3a1f-4447-ad1c-f521d2d3f258</name>
-      <entityField>ModuleTrees</entityField>
-      <view>ModuleTree_view</view>
-    </neonViewReference>
     <genericViewTemplate>
       <name>details</name>
       <showDrawer v="true" />
+      <drawerCaption>Detail</drawerCaption>
       <entityField>#ENTITY</entityField>
       <title>details</title>
       <fields>
@@ -35,6 +31,11 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>4211b2cf-3a1f-4447-ad1c-f521d2d3f258</name>
+      <entityField>ModuleTrees</entityField>
+      <view>ModuleTree_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>6846f680-84ef-46da-a0ea-6797044cf693</name>
       <entityField>MainDocuments</entityField>
diff --git a/neonView/TaskPreview_view/TaskPreview_view.aod b/neonView/TaskPreview_view/TaskPreview_view.aod
index 02f4fbcea5b422a6209fd224f8d1bb19f3fcbd52..16fa80da79ee06dc6f93093c0a7054600755459d 100644
--- a/neonView/TaskPreview_view/TaskPreview_view.aod
+++ b/neonView/TaskPreview_view/TaskPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TaskPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -9,7 +9,7 @@
   </layout>
   <children>
     <cardViewTemplate>
-      <name>head</name>
+      <name>Header</name>
       <iconField>#ICON</iconField>
       <titleField>SUBJECT</titleField>
       <descriptionField>STATUS</descriptionField>
@@ -17,7 +17,7 @@
       <entityField>#ENTITY</entityField>
     </cardViewTemplate>
     <genericViewTemplate>
-      <name>extendedData</name>
+      <name>Info</name>
       <showDrawer v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
@@ -51,6 +51,11 @@
         </entityFieldLink>
       </fields>
     </genericViewTemplate>
+    <neonViewReference>
+      <name>8cf85386-d25f-459a-a2a1-991c9e3287b6</name>
+      <entityField>Links</entityField>
+      <view>TaskLinkPreviewList_view</view>
+    </neonViewReference>
     <neonViewReference>
       <name>2941084f-b72c-4cb2-9d73-5e6827795be2</name>
       <entityField>MainDocuments</entityField>
diff --git a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod
index ae77a626db4aeb207c78d4f8c80e2877610b4223..aeaa8657f0a4ac08321c4bbfadc9f0ab9076e170 100644
--- a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod
+++ b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TimetrackingEdit_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
@@ -9,7 +9,7 @@
   </layout>
   <children>
     <genericViewTemplate>
-      <name>TimetrackingEdit_template</name>
+      <name>Edit</name>
       <editMode v="true" />
       <entityField>#ENTITY</entityField>
       <fields>
diff --git a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
index 141e746d2c5260f0bb3f9e00201104fa9bb36325..2e727ddd7fa99013db59b9d8d51ea7a94aa5d32a 100644
--- a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
+++ b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TimetrackingFilter_view</name>
   <title>Timetracking</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="true" />
   <layout>
     <boxLayout>
       <name>layout</name>
@@ -10,7 +11,7 @@
   </layout>
   <children>
     <tableViewTemplate>
-      <name>TimetrackingFilter_template</name>
+      <name>Timetrackings</name>
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
diff --git a/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod b/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod
index 5977d7ad08f9e00d8b604c42b2d8cead20ceca13..140d82d9c7479f5fdc47189dc34660d51fecb982 100644
--- a/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod
+++ b/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TimetrackingPreview_view</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <layout>
diff --git a/neonView/TurnoverChart_view/TurnoverChart_view.aod b/neonView/TurnoverChart_view/TurnoverChart_view.aod
index 4b2453ee6e9e2620677bbef05086b45133178cd9..0b728d0c7185dd55d10c508769456a841e12ae67 100644
--- a/neonView/TurnoverChart_view/TurnoverChart_view.aod
+++ b/neonView/TurnoverChart_view/TurnoverChart_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TurnoverChart_view</name>
   <title></title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
@@ -39,6 +39,33 @@
     </multiDataChartViewTemplate>
     <multiDataChartViewTemplate>
       <name>LineChart</name>
+      <chartType>LINE</chartType>
+      <xAxis>X</xAxis>
+      <yAxis>Y</yAxis>
+      <parentField>PARENT</parentField>
+      <categoryField>CATEGORY</categoryField>
+      <entityField>#ENTITY</entityField>
+    </multiDataChartViewTemplate>
+    <multiDataChartViewTemplate>
+      <name>AreaChart</name>
+      <chartType>AREA</chartType>
+      <xAxis>X</xAxis>
+      <yAxis>Y</yAxis>
+      <parentField>PARENT</parentField>
+      <categoryField>CATEGORY</categoryField>
+      <entityField>#ENTITY</entityField>
+    </multiDataChartViewTemplate>
+    <multiDataChartViewTemplate>
+      <name>BarChart</name>
+      <chartType>BAR</chartType>
+      <xAxis>X</xAxis>
+      <yAxis>Y</yAxis>
+      <parentField>PARENT</parentField>
+      <categoryField>CATEGORY</categoryField>
+      <entityField>#ENTITY</entityField>
+    </multiDataChartViewTemplate>
+    <multiDataChartViewTemplate>
+      <name>SplineChart</name>
       <chartType>SPLINE</chartType>
       <xAxis>X</xAxis>
       <yAxis>Y</yAxis>
diff --git a/neonView/TwitterTimeline_view/TwitterTimeline_view.aod b/neonView/TwitterTimeline_view/TwitterTimeline_view.aod
index b7fa1d026f4ec7e3c6946e72e8784a3a9516969d..10d401110bd7b8a57f30bbb16a85d2ca85429bf0 100644
--- a/neonView/TwitterTimeline_view/TwitterTimeline_view.aod
+++ b/neonView/TwitterTimeline_view/TwitterTimeline_view.aod
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.0">
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
   <name>TwitterTimeline_view</name>
   <title>Twitter</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
diff --git a/others/db_changes/data_alias/basic/init/init.xml b/others/db_changes/data_alias/basic/init/init.xml
index e4d68563bc2b3c83baedce49f696f79fc662f11b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/others/db_changes/data_alias/basic/init/init.xml
+++ b/others/db_changes/data_alias/basic/init/init.xml
@@ -1,48 +0,0 @@
-<?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">
-    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_objectrelation.xml"/>
-    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_attribute.xml"/>
-    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_attributerelation.xml"/>
-    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_attributeusage.xml"/>
-    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_keyword_entry.xml"/>
-    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_keyword_attribute.xml"/>
-    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_keyword_attributerelation.xml"/>
-    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_countryinfo.xml"/>
-    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_language.xml"/>
-    <include relativeToChangelogFile="true" file="struct/AditoBasic/create_ab_loghistory.xml"/>
-
-    <include relativeToChangelogFile="true" file="struct/create_person.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_organisation.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_contact.xml"/>    
-    <include relativeToChangelogFile="true" file="struct/create_activity.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_activitylink.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_appointmentlink.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_address.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_communication.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_contract.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_product.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_prod2prod.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_productprice.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_stock.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_salesproject.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_salesproject_classification.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_salesproject_competition.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_salesproject_cycle.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_salesproject_forecast.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_salesproject_member.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_salesproject_source.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_offer.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_offeritem.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_salesorder.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_salesorderitem.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_timetracking.xml"/>
-    <include relativeToChangelogFile="true" file="struct/create_task.xml"/>
-    
-    <!--reference files for keywords:--> 
-    <include relativeToChangelogFile="true" file="data/AditoBasic/ab_keyword_entry.xml"/>
-    <include relativeToChangelogFile="true" file="data/AditoBasic/ab_keyword_attribute.xml"/>
-    <!--special case countryinfo data-->
-    <include relativeToChangelogFile="true" file="data/AditoBasic/ab_countryinfo/init_ab_countryinfo.xml"/>
-
-    <include relativeToChangelogFile="true" file="data/AditoBasic/init_ab_language.xml"/>
-</databaseChangeLog>
diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
index 7332493c3bfac72cba1d3819729a94abe19529b7..e075af9a3c2c7d9afdd3877862baa94416e300cc 100644
--- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
+++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod
@@ -2,7 +2,7 @@
 <preferences xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="3.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/preferences/3.1.0">
   <name>_____PREFERENCES_PROJECT</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
-  <projectName>xRM-Basic 2019</projectName>
+  <projectName>xRM-Basic2019</projectName>
   <jditoMaxContentSize v="57671680" />
   <calendarCategoriesEvent>
     <entry>
@@ -14,7 +14,7 @@
       <value></value>
     </entry>
     <entry>
-      <key>auswärts</key>
+      <key>auswärts</key>
       <value></value>
     </entry>
     <entry>
diff --git a/process/ActivityTask_lib/ActivityTask_lib.aod b/process/ActivityTask_lib/ActivityTask_lib.aod
index 679ece6671ecd25e2a3026d6320beb2b5e21c633..141c9c3f9344db9b60ff2be3992885545ebcb96a 100644
--- a/process/ActivityTask_lib/ActivityTask_lib.aod
+++ b/process/ActivityTask_lib/ActivityTask_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>ActivityTask_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/ActivityTask_lib/process.js</process>
diff --git a/process/ActivityTask_lib/process.js b/process/ActivityTask_lib/process.js
index a013d81fcbd1d93bc226daeac17a335a22fa566e..8f7de2b78e5f70871594f05d7cf2f9c83b04c845 100644
--- a/process/ActivityTask_lib/process.js
+++ b/process/ActivityTask_lib/process.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.vars");
 import("system.util");
 import("system.datetime");
@@ -24,9 +25,9 @@ function ActivityUtils() {}
 /**
  * Create a new activity
  */
-ActivityUtils.createNewActivity = function(pRowId, pAdditionalLinks)
+ActivityUtils.createNewActivity = function(pRowId, pAdditionalLinks, pParentContext, pParentId)
 {
-    _ActivityTaskUtils.createNew("Activity", pRowId, pAdditionalLinks)
+    _ActivityTaskUtils._createNew("Activity", pRowId, pAdditionalLinks, pParentContext, pParentId)
 }
 
 /*
@@ -60,9 +61,9 @@ ActivityUtils.getLastActivityDate = function(pRowId)
  * @return {String} pRowIdField jdito Field for the rowId
  * @return {String} pAdditionalLinksField jdito Field for additional links
  */
-ActivityUtils.addLinkRecords= function(pObjectIdField, pRowIdField, pAdditionalLinksField)
+ActivityUtils.addLinkRecords= function(pObjectIdField, pRowIdField, pAdditionalLinksField, pParentContextField, pParentIdField)
 {
-    _ActivityTaskUtils.addLinkRecords(pObjectIdField, pRowIdField, pAdditionalLinksField, "Links");
+    _ActivityTaskUtils._addLinkRecords(pObjectIdField, pRowIdField, pAdditionalLinksField, pParentContextField, pParentIdField, "Links");
 }
 
 /**
@@ -77,9 +78,28 @@ function TaskUtils () {}
 /**
  * Create a new task
  */
-TaskUtils.createNewTask = function(pRowId, pAdditionalLinks)
+TaskUtils.createNewTask = function(pRowId, pAdditionalLinks, pParentContext, pParentId)
 {
-    _ActivityTaskUtils.createNew("Task", pRowId, pAdditionalLinks)
+    _ActivityTaskUtils._createNew("Task", pRowId, pAdditionalLinks, pParentContext, pParentId)
+}
+
+/**
+ * Create a new task
+ */
+TaskUtils.hasTasks = function(pRowId, pObjectType)
+{
+    if (pRowId != "" && pObjectType != "")
+    {
+        var cond = SqlCondition.begin().andPrepare("TASKLINK.OBJECT_TYPE", pObjectType)
+                                       .andPrepare("TASKLINK.OBJECT_ROWID", pRowId);
+        var taskCount = db.cell(cond.buildSql("select count(*) from TASKLINK"));
+        if (taskCount != "0")
+            return true;
+        else 
+            return false;
+    }
+    else
+        return true;
 }
 
 /**
@@ -89,9 +109,9 @@ TaskUtils.createNewTask = function(pRowId, pAdditionalLinks)
  * @return {String} pRowIdField jdito Field for the rowId
  * @return {String} pAdditionalLinksField jdito Field for additional links
  */
-TaskUtils.addLinkRecords= function(pObjectIdField, pRowIdField, pAdditionalLinksField)
+TaskUtils.addLinkRecords= function(pObjectIdField, pRowIdField, pAdditionalLinksField, pParentContextField, pParentIdField)
 {
-    _ActivityTaskUtils.addLinkRecords(pObjectIdField, pRowIdField, pAdditionalLinksField, "Links");
+    _ActivityTaskUtils._addLinkRecords(pObjectIdField, pRowIdField, pAdditionalLinksField, pParentContextField, pParentIdField, "Links");
 }
 
 /**
@@ -108,15 +128,27 @@ function _ActivityTaskUtils() {}
  * Create a new task
  * @ignore
  */
-_ActivityTaskUtils.createNew = function(pContext, pRowId, pAdditionalLinks)
+_ActivityTaskUtils._createNew = function(pContext, pRowId, pAdditionalLinks, pParentContext, pParentId)
 {
     if (pAdditionalLinks == undefined)
         pAdditionalLinks = [];
     
     var params = {};
-    params["ObjectId_param"] = ContextUtils.getCurrentContextId();
-    params["RowId_param"] = pRowId;
+    if (pRowId)
+    {
+        params["ObjectId_param"] = ContextUtils.getCurrentContextId();
+        params["RowId_param"] = pRowId;
+    }
+        
     params["PresetLinks_param"] = JSON.stringify(pAdditionalLinks);
+    
+    if (pParentContext && pParentId)
+    {
+        
+        
+        params["ParentContext_param"] = pParentContext;
+        params["ParentId_param"] = pParentId;
+    }
 
     neon.openContext(pContext, null, null, neon.OPERATINGSTATE_NEW, params);
 }
@@ -130,7 +162,7 @@ _ActivityTaskUtils.createNew = function(pContext, pRowId, pAdditionalLinks)
  * 
  * @ignore
  */
-_ActivityTaskUtils.addLinkRecords= function(pObjectIdField, pRowIdField, pAdditionalLinksField, pConsumerName)
+_ActivityTaskUtils._addLinkRecords = function(pObjectIdField, pRowIdField, pAdditionalLinksField, pParentContextField, pParentIdField, pConsumerName)
 {
     if (vars.exists(pAdditionalLinksField))
         presetLinks = JSON.parse(vars.get(pAdditionalLinksField));
@@ -142,6 +174,24 @@ _ActivityTaskUtils.addLinkRecords= function(pObjectIdField, pRowIdField, pAdditi
         && vars.exists(pObjectIdField) && vars.get(pObjectIdField))
         presetLinks.push([vars.get(pObjectIdField), vars.get(pRowIdField)]);
 
+    if (vars.exists(pParentContextField) && vars.exists(pParentIdField))
+    {
+        switch (vars.get(pParentContextField))
+        {
+            case "Activity":
+                presetLinks = presetLinks.concat(db.table(SqlCondition.begin()
+                             .andPrepare("ACTIVITYLINK.ACTIVITY_ID", vars.get(pParentIdField))
+                             .buildSql("select OBJECT_TYPE, OBJECT_ROWID from ACTIVITYLINK", "1=2")));
+                break;
+            case "Task":
+                presetLinks = presetLinks.concat(db.table(SqlCondition.begin()
+                             .andPrepare("TASKLINK.TASK_ID", vars.get(pParentIdField))
+                             .buildSql("select OBJECT_TYPE, OBJECT_ROWID from TASKLINK", "1=2")));
+                break;
+        }
+        
+    }
+
     presetLinks.forEach(function(link) {
         neon.addRecord(null, pConsumerName, {
             "OBJECT_TYPE" : link[0], 
diff --git a/process/AddressEntity_lib/AddressEntity_lib.aod b/process/AddressEntity_lib/AddressEntity_lib.aod
index adae9b0940c9fb3fc0ebd9325ea4373f2b3c5b64..4ecf49e2e70d3882be5ed8a66b3ec91a4d509593 100644
--- a/process/AddressEntity_lib/AddressEntity_lib.aod
+++ b/process/AddressEntity_lib/AddressEntity_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>AddressEntity_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/AddressEntity_lib/process.js</process>
diff --git a/process/Appointment_lib/Appointment_lib.aod b/process/Appointment_lib/Appointment_lib.aod
index 8116d1ce92de31cf88a62114153aa1df86061e80..5b832c601af4bab0a69bff58acf1c2427be6911c 100644
--- a/process/Appointment_lib/Appointment_lib.aod
+++ b/process/Appointment_lib/Appointment_lib.aod
@@ -1,5 +1,6 @@
-<?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
-   <name>Appointment_lib</name>
+<?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.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
+  <name>Appointment_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Appointment_lib/process.js</process>
   <variants>
diff --git a/process/Attribute_lib/Attribute_lib.aod b/process/Attribute_lib/Attribute_lib.aod
index 5cc0e19791f3c84678baf8bdaf4acaeeada59846..7d9936e818274c5e11dd7fec0c27953f2d32d4e9 100644
--- a/process/Attribute_lib/Attribute_lib.aod
+++ b/process/Attribute_lib/Attribute_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Attribute_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Attribute_lib/process.js</process>
diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js
index fcd1ba99fa423c020c228d00f0d988c7f4ae650d..af3d24d9585b86cd16d243fb69b02a0087e47aaf 100644
--- a/process/Attribute_lib/process.js
+++ b/process/Attribute_lib/process.js
@@ -1,3 +1,4 @@
+import("system.util");
 import("system.datetime");
 import("system.translate");
 import("system.neon");
@@ -49,8 +50,8 @@ AttributeUtil.getPossibleAttributes = function (pObjectType, pIncludeGroups, pFi
         attrCond.andSqlCondition(filteredIdsCondition);
     }
 
-    if (!pIncludeGroups)
-        attrCond.and("ATTRIBUTE_TYPE != '" + $AttributeTypes.GROUP + "'");
+//    if (!pIncludeGroups)
+//        attrCond.and("ATTRIBUTE_TYPE != '" + $AttributeTypes.GROUP + "'");
     
     var attributes = db.array(db.COLUMN, attrCond.buildSql(attrSql));
     
@@ -61,11 +62,15 @@ AttributeUtil.getPossibleAttributes = function (pObjectType, pIncludeGroups, pFi
  * returns the name of an attribute with all parent attribute names
  * 
  * @param {String} pAttributeId the id of the attribute
+ * @param {Boolean} [pSimpleName=false] Use only the name of the attribute and not the names of the parents.
  * 
  * @return {String} the name of the attribute
  */
-AttributeUtil.getFullAttributeName = function (pAttributeId) 
+AttributeUtil.getFullAttributeName = function (pAttributeId, pSimpleName) 
 {
+    if (pSimpleName == undefined)
+        pSimpleName = false;
+    
     if (!pAttributeId)
         return "";
     var attributeNames = [];
@@ -83,8 +88,8 @@ AttributeUtil.getFullAttributeName = function (pAttributeId)
         }
         else
             pAttributeId = "";
-    } while (pAttributeId);
-
+    } while (pAttributeId && !pSimpleName);
+    
     return attributeNames.reverse().join(" / ");
 }
 
@@ -128,6 +133,28 @@ AttributeUtil.getAllChildren = function (pAttributeId)
     return childIds;
 }
 
+/**
+ * checks if an attribute has attribute relations
+ * 
+ * @param {String} pAttributeId the id of the attribute
+ * 
+ * @result {boolean} true if it has relations
+ */
+AttributeUtil.hasRelations = function (pAttributeId)
+{
+    if (!pAttributeId)
+        return false;
+    return db.cell(SqlCondition.begin()
+        .andPrepare("AB_ATTRIBUTE.AB_ATTRIBUTEID", pAttributeId)
+        .buildSql(
+            "select exists ("
+            +    "select AB_ATTRIBUTERELATIONID from AB_ATTRIBUTERELATION "
+            +    "where AB_ATTRIBUTE_ID = AB_ATTRIBUTEID"
+            + ") from AB_ATTRIBUTE", "1=2"
+        )
+    ) == "true";
+}
+
 /*********************************************************************************************************************/
 
 /**
@@ -171,17 +198,18 @@ AttributeRelationUtils.getAttribute = function (pAttributeId, pObjectRowId, pObj
  * @param {String} pObjectRowId object rowid
  * @param {String} [pObjectType=null] object-type
  * @param {String} [pResolveNames=false] if true the full attribute names are used instead of the ids
+ * @param {String} [pGetUID=false] include the attributeRelation id
  * 
- * @return {String[][]} two-dimensional array a row is [attributeId|attributeName, value]
+ * @return {String[][]} two-dimensional array a row is [attributeId|attributeName, value] or if pGetUID is true, [attriuteRelationId, attributeId|attributeName, value]
  */
-AttributeRelationUtils.getAllAttributes = function (pObjectRowId, pObjectType, pResolveNames)
+AttributeRelationUtils.getAllAttributes = function (pObjectRowId, pObjectType, pResolveNames, pGetUID)
 {
     var attrCond = SqlCondition.begin()
         .andPrepare("AB_ATTRIBUTERELATION.OBJECT_ROWID", pObjectRowId);
     if (pObjectType != null)
-        attrCond.andPrepare("AB_ATTRIBUTERELATION.OBJECT_TYPE", pAttributeId);
+        attrCond.andPrepare("AB_ATTRIBUTERELATION.OBJECT_TYPE", pObjectType);
     
-    var attributeSql = attrCond.buildSql("select AB_ATTRIBUTE_ID, AB_ATTRIBUTE.ATTRIBUTE_TYPE, AB_ATTRIBUTE.KEYWORD_CONTAINER, COMBOVAL.ATTRIBUTE_NAME, " 
+    var attributeSql = attrCond.buildSql("select AB_ATTRIBUTERELATIONID, AB_ATTRIBUTE_ID, AB_ATTRIBUTE.ATTRIBUTE_TYPE, AB_ATTRIBUTE.KEYWORD_CONTAINER, COMBOVAL.ATTRIBUTE_NAME, " 
         + AttributeTypeUtil.getAllDatabaseFields().join(", ")
         + " from AB_ATTRIBUTERELATION join AB_ATTRIBUTE on AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"
         + " left join AB_ATTRIBUTE COMBOVAL on " + $AttributeTypes.COMBO.databaseField + " = COMBOVAL.AB_ATTRIBUTEID");
@@ -189,7 +217,7 @@ AttributeRelationUtils.getAllAttributes = function (pObjectRowId, pObjectType, p
     var attributeNameMap = {};
     var attributeValues = db.table(attributeSql).map(function (row) 
     {
-        let attribute = row[0];
+        let attribute = row[1];
         if (pResolveNames)
         {
             if (!(attribute in attributeNameMap))
@@ -197,13 +225,15 @@ AttributeRelationUtils.getAllAttributes = function (pObjectRowId, pObjectType, p
             attribute = attributeNameMap[attribute];
         }
         let value;
-        if (row[1].trim() == $AttributeTypes.COMBO)
-            value = row[3];
+        if (row[2].trim() == $AttributeTypes.COMBO)
+            value = row[4];
         else
         {
-            value = row[AttributeTypeUtil.getTypeColumnIndex(row[1]) + 4];
-            value = AttributeTypeUtil.getAttributeViewValue(row[1].trim(), value, row[2]);
+            value = row[AttributeTypeUtil.getTypeColumnIndex(row[2]) + 5];
+            value = AttributeTypeUtil.getAttributeViewValue(row[2].trim(), value, row[3]);
         }
+        if (pGetUID)
+            return [row[0], attribute, value];
         return [attribute, value];
     });
     
@@ -346,8 +376,8 @@ $AttributeTypes.BOOLEAN = {
     toString : function () {return this.keyword},
     keyword : "BOOLEAN",
     contentType : "BOOLEAN", 
-    databaseField : "BOOL_VALUE", 
-    entityField : "BOOL_VALUE",
+    databaseField : "INT_VALUE", 
+    entityField : "INT_VALUE",
     getViewValue : function (pValue)
         {
             return pValue == "1" ? translate.text("Yes") : translate.text("No");
@@ -385,14 +415,6 @@ $AttributeTypes.KEYWORD = {
             return KeywordUtils.getViewValue(pKeyword, pValue);
         }
 };
-$AttributeTypes.MEMO = { 
-    toString : function () {return this.keyword},
-    keyword : "MEMO",
-    contentType : "TEXT", 
-    databaseField : "MEMO_VALUE", 
-    entityField : "MEMO_VALUE"
-};
-
 
 
 function AttributeTypeUtil () {}
@@ -482,3 +504,168 @@ AttributeTypeUtil.getTypeColumnIndex = function (pAttributeType)
         AttributeTypeUtil._initTypeColumnData();
     return this._typeColumnMap[pAttributeType.trim()];
 }
+
+/*********************************************************************************************************************/
+
+/**
+ * Functions for AttributeUsages.
+ * Do not instanciate this!
+ * 
+ * @class
+ */
+function AttributeUsageUtil () {}
+
+/**
+ * Creates AttributeUsages for all subordinate attributes of an attribute.
+ * This is required when an usage is added to a superordinate attribute.
+ * 
+ * @param {String} pAttributeId the id of the superordinate attribute
+ * @param {String} pObjectType the context
+ */
+AttributeUsageUtil.insertChildrenUsages = function (pAttributeId, pObjectType)
+{
+    var table = "AB_ATTRIBUTEUSAGE";
+    var columns = ["AB_ATTRIBUTEUSAGEID", "AB_ATTRIBUTE_ID", "OBJECT_TYPE"];
+    var types = db.getColumnTypes(table, columns);
+    
+    var sqlSelect = "select AB_ATTRIBUTEID, "
+            + " exists (select AB_ATTRIBUTEUSAGEID from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID and OBJECT_TYPE = '" 
+            + pObjectType + "') from AB_ATTRIBUTE";
+    
+    var inserts = [];
+    _addInserts(pAttributeId, pObjectType);
+    db.inserts(inserts);
+    
+    function _addInserts (pAttributeId, pObjectType)
+    {
+        var condition = SqlCondition.begin()
+            .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?")
+            .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeId);
+        var attributes = db.table(condition.buildSql(sqlSelect));
+        
+        attributes.forEach(function (row)
+        {
+            if (row[1] != "true")
+            {
+                let values = [util.getNewUUID(), row[0], pObjectType];
+                inserts.push([table, columns, types, values]);
+            }
+            _addInserts(row[0], pObjectType);
+        });
+    }
+}
+
+/**
+ * Updates AttributeUsages for all subordinate attributes of an attribute.
+ * This is required when an usage of a superordinate attribute is changed.
+ * 
+ * @param {String} pAttributeId the id of the superordinate attribute
+ * @param {String} pOldObjectType ye olde context
+ * @param {String} pNewObjectType the new context
+ */
+AttributeUsageUtil.updateChildrenUsages = function (pAttributeId, pOldObjectType, pNewObjectType)
+{
+    if (!pNewObjectType)
+        return;
+    
+    var table = "AB_ATTRIBUTEUSAGE";
+    
+    var sqlSelect = "select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID, "
+        + " exists (select AB_ATTRIBUTEUSAGEID from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID and OBJECT_TYPE = '" 
+        + pNewObjectType + "')"
+        + " from AB_ATTRIBUTE left join AB_ATTRIBUTEUSAGE on AB_ATTRIBUTEID = AB_ATTRIBUTE_ID and OBJECT_TYPE = '" + pOldObjectType + "'";
+    
+    var updateCond = SqlCondition.begin();
+    
+    //it is possible that the new objectType is already in a subordinate attribute 
+    //and an update could cause a duplicate entry so one has to be deleted
+    var deleteCond = SqlCondition.begin();
+    
+    _addUpdateIds(pAttributeId, pOldObjectType);
+        
+    if (updateCond.isSet())
+        db.updateData(table, ["OBJECT_TYPE"], null, [pNewObjectType], updateCond.build("1=2"));
+    if (deleteCond.isSet())
+        db.deleteData(table, deleteCond.build("1=2"));
+    
+    function _addUpdateIds (pAttributeId)
+    {
+        var condition = SqlCondition.begin()
+            .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?")
+            .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeId);
+        var attributes = db.table(condition.buildSql(sqlSelect));
+        
+        attributes.forEach(function (row)
+        {
+            if (row[1] && row[2] == "true")
+                deleteCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1]);
+            else if (row[1])
+                updateCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1]);
+            _addUpdateIds(row[0]);
+        });
+    }
+}
+
+/**
+ * Deletes AttributeUsages for all subordinate attributes of an attribute.
+ * This is required when an usage is removed from a superordinate attribute.
+ * 
+ * @param {String} pAttributeId the id of the superordinate attribute
+ * @param {String} pObjectType the context
+ */
+AttributeUsageUtil.deleteChildrenUsages = function (pAttributeId, pObjectType)
+{
+    var table = "AB_ATTRIBUTEUSAGE";
+    
+    var sqlSelect = "select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID "
+        + " from AB_ATTRIBUTE left join AB_ATTRIBUTEUSAGE on AB_ATTRIBUTEID = AB_ATTRIBUTE_ID and OBJECT_TYPE = '" + pObjectType + "'";
+    
+    var deleteCond = SqlCondition.begin();
+    _addDeleteIds(pAttributeId, pObjectType);
+    if (deleteCond.isSet())
+        db.deleteData(table, deleteCond.build("1=2"));
+    
+    function _addDeleteIds (pAttributeId)
+    {
+        var condition = SqlCondition.begin()
+            .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_TYPE", $AttributeTypes.COMBOVALUE, "# != ?")
+            .andPrepare("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeId);
+        var attributes = db.table(condition.buildSql(sqlSelect));
+        
+        attributes.forEach(function (row)
+        {
+            if (row[1])
+                deleteCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[1])
+            _addDeleteIds(row[0]);
+        });
+    }
+}
+
+/**
+ * Deletes duplicate attribute usages.
+ * 
+ * @param {String} [pAttributeId=null] attribute id, if omitted, all duplicates will be deleted 
+ */
+AttributeUsageUtil.removeDuplicates = function (pAttributeId)
+{
+    var condition = SqlCondition.begin()
+        .and("exists (select AB_ATTRIBUTEUSAGEID from AB_ATTRIBUTEUSAGE AU where AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AU.AB_ATTRIBUTE_ID "
+            + "and AB_ATTRIBUTEUSAGE.OBJECT_TYPE = AU.OBJECT_TYPE and AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID != AU.AB_ATTRIBUTEUSAGEID)");
+    if (pAttributeId)
+        condition.andPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", pAttributeId);
+    
+    var duplicates = db.table(condition.buildSql("select AB_ATTRIBUTEUSAGEID, AB_ATTRIBUTE_ID, OBJECT_TYPE from AB_ATTRIBUTEUSAGE"));
+    var usageObj = {};
+    var deleteCond = SqlCondition.begin();
+    
+    duplicates.forEach(function (row)
+    {
+        if (!(row[1] in this))
+            this[row[1]] = {};
+        if (row[2] in this[row[1]])
+            deleteCond.orPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTEUSAGEID", row[0]);
+        this[row[1]][row[2]] = true;
+    }, usageObj);
+    if (deleteCond.isSet())
+        db.deleteData("AB_ATTRIBUTEUSAGE", deleteCond.build("1=2"));
+}
\ No newline at end of file
diff --git a/process/Binary_lib/Binary_lib.aod b/process/Binary_lib/Binary_lib.aod
index 69dcbbe1397df315522d477dc1495e4baf431f6c..39de483b5c216084257d95a007b355a11c1d53c0 100644
--- a/process/Binary_lib/Binary_lib.aod
+++ b/process/Binary_lib/Binary_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Binary_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Binary_lib/process.js</process>
diff --git a/process/Calendar_lib/Calendar_lib.aod b/process/Calendar_lib/Calendar_lib.aod
index e3951f99b38019314fc51ee10cc7cd42b416b480..ba466c5bf5fc50d099a4c5de79e3808744b53b56 100644
--- a/process/Calendar_lib/Calendar_lib.aod
+++ b/process/Calendar_lib/Calendar_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Calendar_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Calendar_lib/process.js</process>
diff --git a/process/Calendar_lib/process.js b/process/Calendar_lib/process.js
index 81b9333190f472a6fd60abc1fb1815c617a27e55..232cf4c3be3db1c4c5a3f0dc30769600b30cd180 100644
--- a/process/Calendar_lib/process.js
+++ b/process/Calendar_lib/process.js
@@ -1,1891 +1,1903 @@
-import("system.neon");
-import("system.vars");
-import("system.db");
-import("system.translate");
-import("system.datetime");
-import("system.swing");
-import("system.eMath");
-import("system.calendars");
-import("system.logging");
-import("system.tools");
-import("system.text");
-import("system.question");
-import("system.SQLTYPES");
-import("system.result");
-import("Util_lib");
-import("system.util")
-
-
-/**
- *  @class
- **/
-function CalendarUtil(){}
-
-
-/*
- * Erzeugt und öffnet ein neues Aufgabenobjekt (mit einem Link).
- *
- * @param {String} pSummary opt die Zusammenfassung
- * @param {String} pDescription opt die Beschreibung
- * @param {Boolean} pWithLink opt TRUE legt eine Verknüpfung zu $image.frametable
- * @param {String[][]} pWithLink opt pWithLink[0]: Name des Frames
- *                                   pWithLink[1]: ID des angezeigten Datensatzes
- *                                   pWithLink[2]: Verknüpfungstitel
- * @param {String} pUser opt der Benutzer ( Login )
- * @param {[]} pAffectedUsers opt die betroffenen Benutzer ( Login )
- * @param {date} pStart opt Beginn der Aufgabe
- * @param {date} pDuration opt Dauer
- * @param {integer} pCategory opt ( calendars.CATEGORIES , encoded(String) z.B.: text.encodeMS(["Service"]) )
- * @param {String} pStatus opt Status des Termins ( calendars.STATUS_TENTATIVE, calendars.STATUS_CONFIRMED, calendars.STATUS_CANCELLED )
- * @param {Array{[]} pComps4Refresh opt die zu aktualisierenden Komponenten
- *
- * @return {void}
- */
-CalendarUtil.newTodo = function(pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, pComps4Refresh)
-{
-    var todo = createEntry( calendars.VTODO, pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus );
-    var prompts = [];
-    prompts["comp4refresh"] = [];
-
-    if (pComps4Refresh == undefined)
-        pComps4Refresh = ["$comp.Aufgabe", "$comp.tbl_Aufgabe"];
-
-    for (var i = 0; i < pComps4Refresh.length; i++)
-    {
-        if ( vars.exists(pComps4Refresh[i]))    prompts["comp4refresh"].push(pComps4Refresh[i]);
-    }
-    if(vars.getString("$sys.scope") == "vaadin")
-        neon.openCalendarEntry([todo], null, neon.OPERATINGSTATE_NEW, null)
-    else
-    {
-        if (vars.exists("$sys.currentwindow"))
-            prompts["window"] = vars.getString("$sys.currentwindow");
-        if (vars.exists("$sys.currentimage"))
-            prompts["image"] = vars.getString("$sys.currentimage");
-
-        swing.openCalendarEntry([todo], null, false, prompts);
-    }
-}
-
-/*
- * Erzeugt eine neue Aufgabe (mit einem Link).
- *
- * @param {String} pSummary opt die Zusammenfassung
- * @param {String} pDescription opt die Beschreibung
- * @param {Boolean} pWithLink opt TRUE legt eine Verknüpfung zu $image.frametable
- * @param {String[][]} pWithLink opt pWithLink[0]: Name des Frames
- *                		     pWithLink[1]: ID des angezeigten Datensatzes
- *               		     pWithLink[2]: Verknüpfungstitel
- * @param {String} pUser opt der Benutzer ( Login )
- * @param {[]} pAffectedUsers opt die betroffenen Benutzer ( Login )
- * @param {date} pStart opt Beginn der Aufagebe
- * @param {integer} pGroupType opt ( calendars.GROUP_SINGLE , calendars.GROUP_MULTI )
- * @param {date} pDuration opt Dauer
- * @param {integer} pCategory opt ( calendars.CATEGORIES , encoded(String) z.B.: text.encodeMS(["Service"]) )
- * @param {String} pStatus opt Status der Aufgabe ( calendars.STATUS_TENTATIVE, calendars.STATUS_CONFIRMED, calendars.STATUS_CANCELLED )
- * @param {String} pPriority opt Priorität der Aufgabe
- * @param {String} pReminder opt Erinnerung der Aufgabe
- *
- * @return {void}
- */
-
-CalendarUtil.newSilentTodo = function(pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pGroupType, pCategory, pStatus, pPriority, pReminder)
-{
-    if ( pGroupType == undefined ) pGroupType = calendars.GROUP_SINGLE;
-    var todo = createEntry( calendars.VTODO, pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, pPriority, pReminder );
-    
-    return calendars.insert([todo],calendars.GROUP_SINGLE);
-}
-
-/*
- * Erzeugt und öffnet ein neues Terminnobjekt mit einem Link.
- *
- * @param {String} pSummary opt die Zusammenfassung
- * @param {String} pDescription opt die Beschreibung
- * @param {Boolean} pWithLink opt TRUE legt eine Verknüpfung zu $image.frametable
- * @param {String[][]} pWithLink opt pWithLink[0]: Name des Frames
- *                		     pWithLink[1]: ID des angezeigten Datensatzes
- *               		     pWithLink[2]: Verknüpfungstitel
- * @param {String} pUser opt der Benutzer ( Login )
- * @param {[]} pAffectedUsers opt die betroffenen Benutzer ( Login )
- * @param {date} pStart opt Beginn der Aufagebe
- * @param {date} pDuration opt Dauer
- * @param {integer} pCategory opt ( calendars.CATEGORIES , encoded(String) z.B.: text.encodeMS(["Service"]) )
- * @param {String} pStatus opt Status des Termins ( calendars.STATUS_TENTATIVE, calendars.STATUS_CONFIRMED, calendars.STATUS_CANCELLED )
- * @param {Array{[]} pComps4Refresh opt die zu aktualisierenden Komponenten
- * 
- * @return {void}
- */
-CalendarUtil.newEvent = function( pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, pComps4Refresh, pWorklistId)
-{
-    var event = createEntry( calendars.VEVENT, pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus );
-
-    var prompts = [];
-    prompts["comp4refresh"] = [];
-    if (pComps4Refresh == undefined)
-        pComps4Refresh = ["$comp.Aufgabe", "$comp.tbl_Termine"];
-    for (i = 0; i < pComps4Refresh.length; i++)
-    {
-        if ( vars.exists(pComps4Refresh[i]))    prompts["comp4refresh"].push(pComps4Refresh[i]);
-    }
-
-    if(vars.getString("$sys.scope") == "vaadin")
-        neon.openCalendarEntry([event],"", neon.OPERATINGSTATE_NEW, null)
-    else
-    {
-        prompts["window"] = vars.getString("$sys.currentwindow");
-        prompts["image"] = vars.getString("$sys.currentimage");
-        if (pWorklistId != undefined)
-            prompts["worklistId"]   = pWorklistId;
-        swing.openCalendarEntry([event], null, false, prompts);
-    }
-}
-
-
-/*
- * Erzeugt einen neuen Termineintrag (mit einem Link).
- *
- * @param {String} pSummary opt die Zusammenfassung
- * @param {String} pDescription opt die Beschreibung
- * @param {Boolean} pWithLink opt TRUE legt eine Verknüpfung zu $image.frametable
- * @param {String[][]} pWithLink opt pWithLink[0]: Name des Frames
- *                		     pWithLink[1]: ID des angezeigten Datensatzes
- *                		     pWithLink[2]: Verknüpfungstitel
- * @param {String} pUser opt der Benutzer ( Login )
- * @param {[]} pAffectedUsers opt die betroffenen Benutzer ( Login )
- * @param {date} pStart opt Beginn des Termins
- * @param {date} pDuration opt Dauer
- * @param {integer} pGroupType opt ( calendars.GROUP_SINGLE , calendars.GROUP_MULTI )
- * @param {integer} pCategory opt ( calendars.CATEGORIES , encoded(String) z.B.: text.encodeMS(["Service"]) )
- * @param {String} pStatus opt Status des Termins ( calendars.STATUS_TENTATIVE, calendars.STATUS_CONFIRMED, calendars.STATUS_CANCELLED )
- * @param {String} pReminder opt Erinnerung des Termins
- *
- * @return {void}
- */
-CalendarUtil.newSilentEvent = function( pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pGroupType, pCategory, pStatus, pReminder)
-{
-    if ( pGroupType == undefined ) pGroupType = calendars.GROUP_SINGLE;
-    var event = createEntry( calendars.VEVENT, pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, undefined, pReminder );
-    return calendars.insert( [event] , pGroupType );
-}
-
-/*
- * Erzeugt ein neues Aufgaben- / Termin-Objekt (mit einem Link).
- *
- * @param {date} pType req  Augabe oder Termin ( calendars.VTODO, calendars.VEVENT )
- * @param {String} pSummary opt die Zusammenfassung
- * @param {String} pDescription opt die Beschreibung
- * @param {Boolean} pWithLink opt TRUE legt eine Verknüpfung zu $image.frametable
- * @param {String[][]} pWithLink opt pWithLink[0]: Name des Frames
- *                		     pWithLink[1]: ID des angezeigten Datensatzes
- *                		     pWithLink[2]: Verknüpfungstitel
- * @param {String} pUser opt der Benutzer ( Login )
- * @param {[]} pAffectedUsers opt die betroffenen Benutzer ( [ Login ] )
- * @param {date} pStart opt Beginn
- * @param {date} pDuration opt Dauer
- * @param {integer} pCategory opt ( calendars.CATEGORIES , encoded(String) z.B.: text.encodeMS(["Service"]) )
- * @param {String} pStatus opt Status des Termins ( calendars.STATUS_TENTATIVE, calendars.STATUS_CONFIRMED, calendars.STATUS_CANCELLED )
- * @param {String} pPriority opt Priorität
- * @param {String} pReminder opt Erinnerung
- *
-@return {Object} das EntryObjekt
- */
-CalendarUtil.createEntry = function( pType, pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, pPriority, pReminder )
-{
-    var Entry = [];
-    var framename;
-    var framdata;
-    var dbid;
-    var linktitle;
-    if ( pSummary == undefined || pSummary == null  ) pSummary = "";
-    if ( pDescription == undefined || pDescription == null )
-    {
-        if(vars.getString("$sys.scope") == "vaadin")
-            pDescription = neon.getImageContent(vars.getString("$sys.currententityname"));
-        else
-            pDescription = swing.getImageContent();
-    }
-    if ( pUser == undefined || pUser == null ) pUser = vars.getString("$sys.user");
-    //kein translate.key hier, weil es sich um einen rein technischen Wert handelt:
-    if ( pStart == undefined ) pStart = datetime.toLong(datetime.toDate(parseInt(vars.getString("$sys.date")) + datetime.ONE_HOUR, "dd.MM.yyyy HH:00"), "dd.MM.yyyy HH:mm");
-    if ( pCategory == undefined || pCategory == null  ) pCategory = "";
-
-    if (pAffectedUsers == null || pAffectedUsers == undefined )
-    {
-        Entry[calendars.AFFECTEDUSERS] = "";
-    }
-    else
-    {
-        Entry[calendars.AFFECTEDUSERS] = text.encodeMS(calendars.getCalendarUsers(pAffectedUsers));
-    }
-    Entry[calendars.TYPE] = pType;
-    Entry[calendars.DTSTART] = pStart;
-    if ( pType == calendars.VEVENT )
-    {
-        if ( pDuration == undefined )
-            pDuration = datetime.ONE_HOUR;
-
-        Entry[calendars.DTEND] = String ( eMath.addInt( pStart, pDuration) );
-
-        if ( pStatus == undefined )
-            pStatus = calendars.STATUS_CONFIRMED;
-
-        pStatus = mapCalendarStatus(pStatus, calendars.getBackendType() );
-    }
-    else if ( pType == calendars.VTODO )
-    {
-        //kein translate.key hier, weil es sich um einen rein technischen Wert handelt:
-        if ( pDuration != undefined )
-            Entry[calendars.DUE] = String ( eMath.addInt( pStart, pDuration) );
-        else
-            Entry[calendars.DUE] = datetime.toLong(datetime.toDate(pStart, "dd.MM.yyyy 23:59")
-                ,"dd.MM.yyyy HH:mm");
-
-        if ( pStatus == undefined )
-            pStatus = calendars.STATUS_NEEDSACTION;
-
-        pStatus = mapCalendarStatus(pStatus, calendars.getBackendTypeTasks() );
-    }
-
-    Entry[calendars.USER] = calendars.getCalendarUser(pUser);
-    Entry[calendars.DESCRIPTION] = pDescription;
-    Entry[calendars.SUMMARY] = pSummary;
-    Entry[calendars.STATUS] = pStatus;
-    Entry[calendars.CLASSIFICATION] = calendars.CLASSIFICATION_PUBLIC;
-    Entry[calendars.CATEGORIES] = pCategory;
-
-    if( pPriority != undefined )
-    {
-        Entry[calendars.PRIORITY] = pPriority;
-    }
-
-    if( pReminder != undefined)
-    {
-        Entry[calendars.HASREMINDER] = "true";
-        Entry[calendars.REMINDER_DURATION] = pReminder;
-    }
-
-    if (pWithLink == false)
-    {
-        Entry[calendars.LINKS] = "0";
-    }
-    else
-    {
-        var fd = new FrameData();
-        if ( typeof(pWithLink) == "object" )
-        {
-            for ( var li = 0; li < pWithLink.length; li++ )
-            {
-                framename = pWithLink[li][0];
-                framdata = fd.getData("name", framename, ["table","idcolumn","title"])[0];
-                dbid = pWithLink[li][1];
-                linktitle = framdata[2] + " - " + pWithLink[li][2];
-
-                Entry["LINK_ALIAS_" + ( li + 1 )] = vars.getString("$sys.dbalias");
-                Entry["LINK_TABLE_" + ( li + 1 )] = framdata[0];
-                Entry["LINK_IDCOLUMN_" + ( li + 1 )] = framdata[1];
-                Entry["LINK_DBID_" + ( li + 1 )] = dbid;
-                Entry["LINK_FRAME_" + ( li + 1 )] = "comp." + framename;
-                Entry["LINK_TITLE_" + ( li + 1 )] = linktitle;
-            }
-            Entry[calendars.LINKS] = pWithLink.length.toString();
-        }
-        else
-        {
-            if ( pWithLink == true || pWithLink == undefined )
-            {
-                framename = vars.getString("$sys.currentimagename");
-                framdata = fd.getData("name", framename, ["table","idcolumn","title"])[0];
-                dbid = vars.getString("$comp.idcolumn");
-                linktitle = framdata[2] + " - " + swing.getImageContent();
-            }
-            Entry[calendars.LINKS] = "1";
-            Entry["LINK_ALIAS_1"] = vars.getString("$sys.dbalias");
-            Entry["LINK_TABLE_1"] = framdata[0];
-            Entry["LINK_IDCOLUMN_1"] = framdata[1];
-            Entry["LINK_DBID_1"] = dbid;
-            Entry["LINK_FRAME_1"] = "comp." + framename;
-            Entry["LINK_TITLE_1"] = linktitle;
-        }
-    }
-    return Entry;
-}
-
-/*
- * Liefert den CalendarStatus übersetzt zurück.
- * @param {String} pStatus req Status
- * @param {String} pLanguage opt Sprache
- * @param {String} pKind opt ToDo oder Event
- *
- * @return {String} übersetzte Status
- */
-function getCalendarStatus( pStatus, pLanguage, pKind)
-{
-    //kein mappen des Status, da wirklich verschiedene Dinge angezeigt werden sollen
-    switch ( pStatus )
-    {
-        case calendars.STATUS_BUSY: 
-            return translate.text("Gebucht", pLanguage)
-        case calendars.STATUS_CANCELLED:
-            if(pKind == "ToDo" && pKind != undefined) return translate.text("Zurückgestellt", pLanguage)
-            return translate.text("Abgesagt", pLanguage)
-        case calendars.STATUS_COMPLETED:
-            return translate.text("Erledigt", pLanguage)
-        case calendars.STATUS_CONFIRMED:
-            return translate.text("Bestätigt", pLanguage)
-        case calendars.STATUS_FREE:
-            return translate.text("frei", pLanguage)
-        case calendars.STATUS_INPROCESS:
-            return translate.text("In Bearbeitung", pLanguage)
-        case calendars.STATUS_NEEDSACTION:
-            return translate.text("Nicht begonnen", pLanguage)
-        case calendars.STATUS_OOF:
-            return translate.text("Außer Haus", pLanguage)
-        case calendars.STATUS_TENTATIVE:
-            return translate.text("Vorläufig", pLanguage)
-        default:
-            return "";
-    }
-}
-
-/*
- * Zu einer übergebenen Priorität wird ihre Bedeutung übersetzt und zurückgegeben.
- *
- * @param {String} pPriority req Priorität
- * @param {String} pLanguage opt Sprache
- *
- * @return (String) übersetzte Bedeutung einer Priorität
- */
-function getCalendarPriority(pPriority, pLanguage)
-{
-    switch(pPriority)
-    {
-        case "9":
-            return translate.text("niedrig", pLanguage);
-            break;
-        case "5":
-            return translate.text("normal", pLanguage);
-            break;
-        case "1":
-            return translate.text("hoch", pLanguage);
-            break;
-        default:
-            return translate.text("keine", pLanguage);
-            break;
-    }
-}
-
-/*
- * Liefert zum Objekt verknüpfte Aufgaben aus dem Kalender.
- *
- * @param {String} pFrame req Name des Frames
- * @param {String} pDBID req ID des verknüpften Datensatzes
- * @param {String} pAlias opt
- * @param {String} pLanguage opt Sprache
- *
- * @return {[]} mit Aufgaben aus Kalender
- */
-function getLinkedToDos (pFrame, pDBID, pAlias, pLanguage )
-{
-    if (pAlias == undefined ) pAlias = vars.getString("$sys.dbalias");
-    var tab = [];
-    var status = " and STATUS in ('NEEDS-ACTION', 'IN-PROCESS')";
-    var exists = [];
-    var zustaendig = "";
-    var today = getDate(vars.getString("$sys.date"));
-    var filtervalues = ["", "false"];
-    if ( vars.exists("$image.FilterValuesT") )
-    {
-        filtervalues = vars.get("$image.FilterValuesT");
-        zustaendig = filtervalues[0]
-        if (filtervalues[1] == "true") status = " and STATUS in ('COMPLETED', 'CANCELLED')";
-    }
-
-    var entryids = db.table("select ENTRYID, OWNER from ASYS_CALENDARLINK "
-        + "join ASYS_CALENDARBACKEND on ELEMENTUID = ENTRYID where FRAME = 'comp." + pFrame + "' "
-        + "and ENTRYID is not null "
-        + "and ENTRYTYPE = " + calendars.VTODO + " "
-        + "and DBID = '" + pDBID + "' "
-        + status, pAlias);
-
-    for (var i = 0; i < entryids.length; i++)
-    {
-        if ( exists.indexOf(entryids[i][0]) == -1)
-        {
-            try
-                {
-                    var entry = calendars.getEntry(entryids[i][0], null, getTitleCalenderUser( entryids[i][1] ), calendars.VTODO);
-                    var entr = new Array;
-                    status = "";
-                    var user = tools.getUserByAttribute(tools.CALENDARID, entry[calendars.USER2]["paramvalue"].substr("mailto:".length))
-                    if(user == null) user = entry[calendars.USER2]["cn"];
-                     else user = user[tools.TITLE]
-                    if ((user == zustaendig || zustaendig == ""))
-                    {
-                        entr[0] = text.encodeMS([entry[calendars.ID], user]);
-                        var due = getDate(entry[calendars.DUE]);
-                        if (due < today ) entr[1]	= "-1769402";
-                        else  if (due > today) entr[1]	= "-16777216"; else entr[1]	= "-16744020";
-                        entr[2] = "-1";  // Hintergrundfarbe
-                        entr[3] = text.decodeMS(entry[calendars.AFFECTEDUSERS]).length;
-                        entr[4] = entry[calendars.DUE]
-                        entr[5] = getCalendarStatus( entry[calendars.STATUS], pLanguage, "ToDo");
-                        entr[6] = entry[calendars.SUMMARY]
-                        entr[7] = getRealName([entry[calendars.ORGANIZER2]]);
-                        entr[8] = getRealName(entry[calendars.ATTENDEES]);
-                        entr[9] = entry[calendars.DESCRIPTION];
-                        entr[10] = entry[calendars.PRIORITY];
-                        tab.push(entr);
-                        exists.push(entryids[i][0]);
-                    }
-            }
-            catch (ex)
-            {
-                logging.log(ex);
-            }
-        }
-    }
-    array_mDimSort(tab, 4, false); //Sortierung nach Fälligkeitsdatum
-    return tab;
-}
-
-/*
- * Anzeige des Aufgaben-Filter
- *
- * @param {Object} pFilter req
- *
- * @return string Anzeige
- */
-function show_filterLinkedToDos(pFilter)
-{
-    var retstring = "";
-    if (pFilter[0] != "")
-    {
-        var userp = tools.getUser( pFilter[0] )[tools.PARAMS];
-        retstring = translate.text("Aufgaben von") + " " + userp[tools.FIRSTNAME] + " " + userp[tools.LASTNAME];
-    }
-    if (pFilter[1] == "true") retstring += ", " + translate.text("erledigt / zurückgestellt");
-
-    return retstring
-}
-
-/*
- * Liefert zum Objekt verknüpfte Events aus dem Kalender.
- *
- * @param {String} pFrame req Name des Frames
- * @param {String} pDBID req ID des verknüpften Datensatzes
- * @param {Object} pFilter opt
- * @param {String} pAlias opt
- * @param {String} pUser opt Benutzer
- *
- * @return {[]} mit Events aus Kalender
- */
-function getLinkedEvents (pFrame, pDBID, pFilter, pAlias, pUser )
-{
-    if ( pFilter == "" || pFilter == undefined)
-        pFilter = reset_filterEvent();
-
-    var tab = [];
-    var exists = [];
-    var conditions = [];
-    var today = getDate(vars.getString("$sys.date"));
-    var conditioncount = 0;
-    var stati = [];
-
-    if ( pFilter.tentative == "true" )
-        stati.push(mapCalendarStatus(calendars.STATUS_TENTATIVE, calendars.getBackendType() ));
-
-    if ( pFilter.cancelled == "true" )
-        stati.push(mapCalendarStatus(calendars.STATUS_CANCELLED, calendars.getBackendType() ));
-
-    if ( pFilter.confirmed == "true" )
-        stati.push(mapCalendarStatus(calendars.STATUS_CONFIRMED, calendars.getBackendType() ));
-
-    if (calendars.getBackendType() == calendars.BACKEND_EXCHANGEWS)
-        stati.push(calendars.STATUS_FREE);
-
-    if (pAlias == undefined ) pAlias = vars.getString("$sys.dbalias");
-
-    var entryids = db.table(["select ENTRYID, OWNER "
-        + "from ASYS_CALENDARLINK "
-        + "join ASYS_CALENDARBACKEND on ELEMENTUID = ENTRYID where FRAME = 'comp."
-        + pFrame + "' and ENTRYID is not null and ENTRYTYPE = " + calendars.VEVENT
-        + " and DBID = '" + pDBID + "' and DTSTART >= ?",
-        [ [ String(pFilter.datefrom - datetime.ONE_WEEK), SQLTYPES.DATE ]]], pAlias );
-
-    /*
-     * Check for rights before constructing condition otherwise you'll get an error by opening linked Data
-     */
-    var userToRead = []
-    if(pUser != undefined)
-    {
-        userToRead = getCalendarUsers( calendars.RIGHT_READ_APPOINTMENT, pUser );
-    }
-    else
-    {
-        userToRead = calendars.getDisplayCalendarUsers(calendars.RIGHT_READ_APPOINTMENT);
-    }
-    var userMap = {};
-    for (let i = 0; i < userToRead.length; i++)
-    {
-        userMap[userToRead[i][1]] = true;
-    }
-
-    for ( var i = 0;i < entryids.length; i++)
-    {
-        var user = getTitleCalenderUser(entryids[i][1]);
-        if(userMap[user])
-        {
-            for ( var z = 0; z < stati.length; z++ )
-                _addEntryCondition(conditions, String(++conditioncount),
-                {
-                    TYPE: calendars.VEVENT,
-                    START: pFilter.datefrom,
-                    END: pFilter.dateto,
-                    USER: user,
-                    STATUS: stati[z],
-                    UID: entryids[i][0]
-                });
-        } else continue
-    }
-    conditions["COUNT"] = String(conditioncount);
-
-    var entries = calendars.getExpandedEntries(conditions, pFilter.datefrom, pFilter.dateto);
-    for ( let i = 0; i < entries.length; i++)
-    {
-        for (var j = 0; j < entries[i].length; j++)
-        {
-            var entry = entries[i][j];
-            if( exists.indexOf(entry[calendars.ID]) == -1 && ( pFilter.category == "" || text.decodeMS(entry[calendars.CATEGORIES]).indexOf(pFilter.category) > 0))
-            {
-                var entr = new Array;
-                var start = getDate(entry[calendars.DTSTART]);
-                var end = getDate(entry[calendars.DTEND]);
-                user = tools.getUserByAttribute(tools.CALENDARID, entry[calendars.USER2]["paramvalue"].substr("mailto:".length))
-                if(user == null) user = entry[calendars.USER2]["cn"];
-                 else user = user[tools.TITLE]
-                entr[0] = text.encodeMS([entry[calendars.ID], user , entry[calendars.RECURRENCEID]]);
-                if (end < today) entr[1]	= "-6710887" ;
-                else if (start <= today && end >= today )   entr[1] = "-16744020" ;
-                else entr[1] = "-16777216";
-                entr[2] = "-1"
-                entr[3] = text.decodeMS(entry[calendars.AFFECTEDUSERS]).length;
-                entr[4] = entry[calendars.DTSTART]
-                entr[5] = entry[calendars.DTEND]
-                entr[6] = entry[calendars.SUMMARY]
-                entr[7] = getRealName([entry[calendars.ORGANIZER2]]);
-                entr[8] = getRealName(entry[calendars.ATTENDEES]);
-                entr[9] = entry[calendars.DESCRIPTION]
-                tab.push(entr);
-                exists.push(entry[calendars.ID]);
-            }
-        }
-    }
-    array_mDimSort(tab, 4, false);
-    return tab;
-}
-
-/*
- * Liefert Aufgaben aus dem Kalender.
- *
- * @param {Object} pFilter req
- * @param {String} pLanguage opt
- * @param {bool} pShortForm opt wenn true wird nur die kurzversion geladen
- *
- * @return {[]} mit allen aufgaben aus dem Kalender
- */
-function getTodos( pFilter, pLanguage, pShortForm )
-{
-    if ( pFilter == "" )    pFilter =  reset_filterToDo();
-    var tab = [];
-    var today = getDate (vars.getString("$sys.date"));
-    var conditions = [];
-    var conditioncount = 0;
-    var user = pFilter.user;
-    var stati = [];
-    var status = [];
-    var exists = [];
-    var entries = [];
-
-    if ( pFilter.needs_action == "true" )
-    {
-        stati.push(mapCalendarStatus(calendars.STATUS_NEEDSACTION, calendars.getBackendTypeTasks() ));
-        status.push("NEEDS-ACTION");
-    }
-    if ( pFilter.in_process == "true" )
-    {
-        stati.push(mapCalendarStatus(calendars.STATUS_INPROCESS, calendars.getBackendTypeTasks() ));
-        status.push("IN-PROCESS");
-    }
-    if ( pFilter.completed == "true" )
-    {
-        stati.push(mapCalendarStatus(calendars.STATUS_COMPLETED, calendars.getBackendTypeTasks() ));
-        status.push("COMPLETED");
-    }
-    if ( pFilter.cancelled == "true" )
-    {
-        stati.push(mapCalendarStatus(calendars.STATUS_CANCELLED, calendars.getBackendTypeTasks() ));
-        status.push("CANCELLED");
-    }
-    if (pFilter.delegated == "true" )
-    {
-        var from = [pFilter.datefrom, SQLTYPES.TIMESTAMP];
-        var to = [pFilter.dateto, SQLTYPES.TIMESTAMP];
-        setAllCalendarGrant();
-        user = calendars.getCalendarUser(user);
-        user = db.table(["select ELEMENTUID, OWNER from ASYS_CALENDARBACKEND where ENTRYTYPE = 2 and OWNER != '" + user + "' and ORGANIZER = '"
-            + user + "' and STATUS in ('" + status.join("', '") + "') and (( STARTTIME >= ? and STARTTIME <= ?) or "
-            + "( ENDTIME >= ? and ENDTIME <= ? ) or ( STARTTIME >= ? and ENDTIME <= ? ))", [from, to, from, to, from, to]] );
-
-        for (let i = 0; i < user.length; i++ )
-        {
-            try
-            {
-                entries.push([calendars.getEntry(user[i][0], null, getTitleCalenderUser(user[i][1]), calendars.VTODO)]);
-            }
-            catch(err){
-                logging.log(err);
-            }
-        }
-        setCalendarGrant();
-    }
-    else
-    {
-        if ( typeof( pFilter.user ) != "object" )  user = [user.trim()];
-        for (let i = 0; i < user.length; i++ )
-        for ( var z = 0; z < stati.length; z++ )
-            _addEntryCondition(conditions, ++conditioncount,
-            {
-                TYPE: calendars.VTODO,
-                START: pFilter.datefrom,
-                END: pFilter.dateto,
-                USER: user[i],
-                STATUS: stati[z]
-            });
-
-        conditions["COUNT"] = String(conditioncount);
-        entries = calendars.getEntries(conditions);
-    }
-
-    for (i = 0; i < entries.length; i++)
-    {
-        var entry = entries[i][0];
-        user = tools.getUserByAttribute(tools.CALENDARID, entry[calendars.USER2]["paramvalue"].substr("mailto:".length))
-        if (user == null)  user = entry[calendars.USER2]["cn"];
-         else user = user[tools.TITLE]
-        if ( !(user != vars.getString("$sys.user") && entry[calendars.CLASSIFICATION] == calendars.CLASSIFICATION_PRIVATE) // no privat
-            && !( pFilter.delegated == "true" && ( isAffectedUser( entry, pFilter.user) || exists.indexOf(entry[calendars.ID]) > -1  ) ) // no duplicate
-            && ( pFilter.category == "" || text.decodeMS(entry[calendars.CATEGORIES]).indexOf( pFilter.category ) > -1 ) ) // Filter category
-            {
-            var entr = [];
-            var links =  entry[calendars.LINKS];
-            var due = entry[calendars.DUE] != "" ? getDate(entry[calendars.DUE]) : "";
-            entr[0] = text.encodeMS([entry[calendars.ID], user]);
-            if (due == today )      entr[1] = "-16744020" ;
-            else if(due == "")      entr[1] = "-13395712";
-            else if (due > today )  entr[1] = "-16777216";
-            else                    entr[1]	= "-1769402";
-            if (entry[calendars.PRIORITY] == "1") entr[2] = "-100";
-            entr[3] = entry[calendars.ATTENDEES].length;
-            entr[4] = entry[calendars.DUE];
-
-            if (pShortForm)
-            {
-                entr[5] = entry[calendars.SUMMARY];
-                entr[6] = entry[calendars.DESCRIPTION];
-            }
-            else
-            {
-                entr[5] = getCalendarStatus( entry[calendars.STATUS], pLanguage, "ToDo");
-                entr[6] = getCalendarPriority( entry[calendars.PRIORITY], pLanguage);
-                entr[7] = entry[calendars.SUMMARY];
-                entr[8] = getRealName( [ entry[calendars.ORGANIZER2] ] );
-                entr[9] = getRealName( entry[calendars.ATTENDEES] );
-                if (links == undefined) entr[10] = "";	else entr[10] = links;
-                entr[11] = entry[calendars.DESCRIPTION];
-                entr[12] = entry[calendars.CREATED];
-            }
-
-            tab.push(entr);
-            if ( pFilter.delegated == "true" )  exists.push(entry[calendars.ID]);
-        }
-    }
-
-    if (pShortForm)
-        sortArray(tab, -1, 4, 1, 5);
-    else
-        sortArray(tab, -1, 4, 1, 12 );
-
-    return tab;
-}
-
-/*
- * Fügt eine Condition hinzu
- *
- * @param {[]} pConditions req die Conditions
- * @param {Integer} pIndex req Index der Condition
- * @param {Object} pValues req
- *
- * @return {void}
- */
-function _addEntryCondition(pConditions, pIndex, pValues)
-{
-    var params = ["TYPE", "START", "END", "USER", "STATUS", "UID"];
-
-    for (var i = 0; i < params.length; i++)
-        if (pValues[params[i]] != undefined)    pConditions[params[i] + "_" + pIndex] = pValues[params[i]];
-}
-
-/*
- * Liefert Events zu bestimmten Usern/Daten in einem Array.
- *
- * @param {Object} pFilter req
- * @param {String} pLanguage opt
- * @param {bool} pShortForm opt wenn true wird nur die kurzversion geladen
- *
- * @return {[]}
- *				[0] ID
- *				[1] Vordergrundfarbe
- *				[2] Hintergrundfarbe
- *				[3] Start
- *				[4] Ende
- *				[5] Betreff
- *				[6] Inhalt
- *				[7] User
- *				[8] Anzahl Verknüpfungen
- *				[9] Klassifikation (privat/öffentlich)
- */
-function getEvents( pFilter, pLanguage, pShortForm )
-{
-    if ( pFilter == "" )  pFilter = reset_filterEvent();
-    var tab = [];
-    var conditions = [];
-    var today = getDate(vars.getString("$sys.date"));
-    var conditioncount = 0;
-    var stati = [];
-    var user = undefined;
-    if ( pFilter.tentative == "true" )    stati.push(calendars.STATUS_TENTATIVE);
-    if ( pFilter.cancelled == "true" )    stati.push(calendars.STATUS_CANCELLED);
-    if ( pFilter.confirmed == "true" )
-        stati.push(mapCalendarStatus(calendars.STATUS_CONFIRMED, calendars.getBackendType() ));
-
-    if (getCalendarSystemType(calendars.VEVENT) == calendars.BACKEND_EXCHANGEWS && pFilter.free == "true")
-        stati.push(calendars.STATUS_FREE);
-
-    if ( pFilter.user != "" )	user = (pFilter.user).trim();
-
-    for ( var z = 0; z < stati.length; z++ )
-        _addEntryCondition(conditions, String(++conditioncount),
-        {
-            TYPE: calendars.VEVENT,
-            START: pFilter.datefrom,
-            END: pFilter.dateto,
-            USER: user,
-            STATUS: stati[z]
-        });
-
-    conditions["COUNT"] = String(conditioncount);
-
-    var entries = calendars.getExpandedEntries(conditions, pFilter.datefrom, pFilter.dateto);
-    for ( var i = 0;i < entries.length; i++)
-    {
-        for (var j = 0; j < entries[i].length; j++)
-        {
-            var entry = entries[i][j];
-            if( pFilter.category == "" || text.decodeMS(entry[calendars.CATEGORIES]).indexOf(pFilter.category) > -1 )
-            {
-                var entr = new Array;
-                var start = getDate(entry[calendars.DTSTART]);
-                var end = getDate(entry[calendars.DTEND]);
-
-                user = tools.getUserByAttribute(tools.CALENDARID, entry[calendars.USER2]["paramvalue"].substr("mailto:".length))
-                if(user == null) user = entry[calendars.USER2]["cn"];
-                else user = user[tools.TITLE]
-                entr[0] = text.encodeMS([ entry[calendars.ID], user, entry[calendars.RECURRENCEID]]);
-                if (end < today ) entr[1]	="-6710887" ;
-                else if (start > today) entr[1]	= "-16777216";
-                else entr[1]	= "-16744020" ;
-                entr[2] = "-1"
-                entr[3] = entry[calendars.ATTENDEES].length;
-                entr[4] = entry[calendars.DTSTART];
-                entr[5] = entry[calendars.DTEND];
-                entr[6] = entry[calendars.SUMMARY];
-
-                if (!pShortForm)
-                {
-                    entr[7] = getRealName([entry[calendars.ORGANIZER2]]);
-                    entr[8] = getRealName(entry[calendars.ATTENDEES]);
-                    entr[9] = getCalendarStatus( entry[calendars.STATUS], pLanguage );
-                    if (entry[calendars.LINKS] == undefined) entr[10] = "";
-                    else entr[10] = entry[calendars.LINKS];
-                    entr[11] = entry[calendars.DESCRIPTION];
-                }
-                tab.push( entr );
-            }
-        }
-    }
-    sortArray(tab, -1, 4, 1, 6 );
-    return tab;
-}
-
-/*
- * Liefert den echten Namen anhand des Logins zurück
- *
- * @param {Array}[]} pUserMap req pUserMap
- *
- * @return String
- */
-function getRealName(pUserMap)
-{
-    var resultName = [];
-    var RealNames = getRealNameObject(pUserMap);
-
-    for ( var realname in RealNames )   resultName.push(RealNames[realname]);
-    return resultName.join(", \n");
-}
-
-/*
- * Liefert den echten Namen anhand des Logins zurück
- *
- * @param {Array}[]} pUserMap req pUserMap
- *
- * @return Object
- */
-function getRealNameObject(pUserMap)
-{
-    var resultObject = {};
-    var realname = "";
-
-    for ( let i = 0; i < pUserMap.length; i++ )
-    {
-        let user = tools.getUserByAttribute(tools.CALENDARID, [pUserMap[i]["paramvalue"].substr("mailto:".length)])
-        if ( user != null )
-        {
-            if(vars.exists("$global.firstLastName") && vars.get("$global.firstLastName"))
-                realname = user[tools.PARAMS][tools.LASTNAME] + " " + user[tools.PARAMS][tools.FIRSTNAME];
-            else realname = user[tools.PARAMS][tools.FIRSTNAME] + " " + user[tools.PARAMS][tools.LASTNAME];
-        }
-        else //Der User existiert nicht im System
-        {
-            realname = pUserMap[i]["cn"] + " " + pUserMap[i]["paramvalue"];
-        }
-        resultObject[pUserMap[i]["cn"]] = realname;
-    }
-    return resultObject;
-}
-
-
-/*
- * Gibt an ob der User im Calendarobject vorhanden ist
- *
- * @param {Object} pEntry req Calendarobject
- * @param {String} pUser req Title
- *
- * @return Object
- */
-function isAffectedUser( pEntry, pUser)
-{
-    var usermap = pEntry[calendars.ATTENDEES];
-
-    for ( var i = 0; i < usermap.length; i++ )
-        if( usermap[i]["cn"] == pUser )
-            return true;
-    return false;
-}
-
-/*
- * Liefert das Datum ohne Urzeit zurück
- *
- * @param {String} datetimeIn req DatumZeit
- *
- * @return {date}
- */
-function getDate( datetimeIn )
-{
-    if ( datetimeIn != "")
-        return datetime.clearTime(datetimeIn);
-    else return "";
-}
-
-/*
- * Setzt den Aufgaben-Filter
- *
- * @param {Object} pFilter req
- *
- * @return {image}
- */
-function filterToDo( pFilter )
-{
-    var error = true;
-    var von = pFilter.datefrom;
-    var bis = pFilter.dateto;
-    if ( pFilter == "" )	pFilter =  reset_filterToDo();
-    do
-    {
-        vars.set("$local.relation_id", pFilter.user);
-        vars.set("$local.edt_von", pFilter.datefrom);
-        vars.set("$local.edt_bis", pFilter.dateto);
-        vars.set("$local.category", pFilter.category);
-        vars.set("$local.delegated", pFilter.delegated);
-        vars.set("$local.needs_action", pFilter.needs_action);
-        vars.set("$local.in_process", pFilter.in_process);
-        vars.set("$local.completed", pFilter.completed);
-        vars.set("$local.cancelled", pFilter.cancelled);
-        var res = swing.askUserQuestion(translate.text("Bitte Filterbedingungen setzen"), "DLG_TASK_FILTER");
-        if( res != null )
-        {
-            pFilter.user =      res["DLG_TASK_FILTER.relation_id"];
-            pFilter.datefrom =  res["DLG_TASK_FILTER.edt_von"];
-            pFilter.dateto =    res["DLG_TASK_FILTER.edt_bis"];
-            pFilter.category =  res["DLG_TASK_FILTER.category"];
-            pFilter.delegated = res["DLG_TASK_FILTER.delegated"];
-            pFilter.needs_action = res["DLG_TASK_FILTER.needs_action"];
-            pFilter.in_process = res["DLG_TASK_FILTER.in_process"];
-            pFilter.completed = res["DLG_TASK_FILTER.completed"];
-            pFilter.cancelled = res["DLG_TASK_FILTER.cancelled"];
-            if (pFilter.datefrom != "" && pFilter.dateto != "" && pFilter.dateto >= pFilter.datefrom ) error = false;
-            else question.showMessage(translate.text("Bitte Datumseingabe prüfen!"))
-        }
-        else
-        {
-            pFilter.datefrom = von;
-            pFilter.dateto = bis;
-            error = false;
-        }
-    }
-    while ( error )
-    return pFilter;
-}
-
-/*
- * Setzt den Aufgaben-Filter
- *
- * @param {Object} pFilter req
- *
- * @return {image}
- */
-function filterToDo_Neon( pFilter )
-{
-    var error = true;
-    var von = pFilter.datefrom;
-    var bis = pFilter.dateto;
-    if ( pFilter == "" )	pFilter =  reset_filterToDo();
-    do
-    {
-        var prompts = {
-            FILTER_TEXT: translate.text("Bitte Filterbedingungen setzen"),
-            RESPONSIBLE: pFilter.user,
-            DATE_FROM: pFilter.datefrom,
-            DATE_TO: pFilter.dateto,
-            CATEGORY_TODO: pFilter.category,
-            DELEGATED: pFilter.delegated,
-            NEEDS_ACTION: pFilter.needs_action,
-            IN_PROCESS: pFilter.in_process,
-            COMPLETED: pFilter.completed,
-            CANCELLED: pFilter.cancelled
-        }
-
-        var buttons = {
-            "ok" : translate.text("OK"),
-            "": translate.text("Abbrechen")
-            };
-        var defaultButton = "ok";
-
-        var res = question.openDialog("DLG_FILTER_TODO_Neon", prompts, buttons, defaultButton);
-
-        if( res.button != null )
-        {
-            pFilter.user =      res.RESPONSIBLE;
-            pFilter.datefrom =  res.DATE_FROM;
-            pFilter.dateto =    res.DATE_TO;
-            pFilter.category =  res.CATEGORY_TODO;
-            pFilter.delegated = res.DELEGATED;
-            pFilter.needs_action = res.NEEDS_ACTION;
-            pFilter.in_process = res.IN_PROCESS;
-            pFilter.completed = res.COMPLETED;
-            pFilter.cancelled = res.CANCELLED;
-            if (pFilter.datefrom != "" && pFilter.dateto != "" && pFilter.dateto >= pFilter.datefrom ) error = false;
-            else question.showMessage(translate.text("Bitte Datumseingabe prüfen!"))
-        }
-        else
-        {
-            pFilter.datefrom = von;
-            pFilter.dateto = bis;
-            error = false;
-        }
-    }
-    while ( error )
-    return pFilter;
-}
-
-
-/*
- * Anzeige des Aufgaben-Filter
- *
- * @param {Object} pFilter req
- *
- * @return string Anzeige
- */
-function show_filterToDo(pFilter)
-{
-    var retstring = "";
-    var userp = tools.getUser( pFilter.user )[tools.PARAMS];
-    if (pFilter.user != "") retstring = (translate.text("Aufgaben von") + " " + userp[tools.FIRSTNAME] + " " + userp[tools.LASTNAME]);
-    if (pFilter.datefrom != "") retstring += ", " + datetime.toDate(pFilter.datefrom, translate.text("dd.MM.yyyy"));
-    if (pFilter.dateto != "") retstring += " - " + datetime.toDate(pFilter.dateto, translate.text("dd.MM.yyyy"));
-    if (pFilter.category != "") retstring += ", " + translate.text("Kategorie") + " " + pFilter.category;
-    if (pFilter.delegated == "true") retstring += ", " + translate.text("delegiert");
-    if (pFilter.needs_action == "true") retstring += ", " + translate.text("Nicht begonnen");
-    if (pFilter.in_process == "true") retstring += ", " + translate.text("In Bearbeitung");
-    if (pFilter.completed == "true") retstring += ", " + translate.text("Erledigt");
-    if (pFilter.cancelled == "true") retstring += ", " + translate.text("Zurückgestellt");
-
-    return retstring
-}
-
-/*
- * Setzt den Aufgaben-Filter zurück
- *
- * @return {filter}
- */
-function reset_filterToDo()
-{
-    var today = getDate (vars.getString("$sys.date"));
-
-    return pFilter =  {
-        user: vars.getString("$sys.user"),
-        datefrom: String(eMath.subInt(today, 720 * datetime.ONE_DAY)),
-        dateto: String(eMath.addInt(eMath.addInt(today, 3 * datetime.ONE_DAY)
-            ,datetime.ONE_DAY - datetime.ONE_MINUTE)),
-        category: "",
-        delegated: "",
-        needs_action: "true",
-        in_process: "true",
-        completed: "",
-        cancelled: ""
-    };
-}
-
-/*
- * Setzt den Event-Filter
- *
- * @param {Object} pFilter req
- *
- * @return {image}
- */
-function filterEvent( pFilter )
-{
-    var error = true;
-    var von = pFilter.datefrom;
-    var bis = pFilter.dateto;
-    if ( pFilter == "" )	pFilter =  reset_filterEvent();
-    do
-    {
-        vars.set("$local.relation_id", pFilter.user);
-        vars.set("$local.edt_von", pFilter.datefrom);
-        vars.set("$local.edt_bis", pFilter.dateto);
-        vars.set("$local.category", pFilter.category);
-        vars.set("$local.tentative", pFilter.tentative);
-        vars.set("$local.confirmed", pFilter.confirmed);
-        vars.set("$local.cancelled", pFilter.cancelled);
-        vars.set("$local.free", pFilter.free);
-        var res = swing.askUserQuestion(translate.text("Bitte Filterbedingungen setzen"), "DLG_EVENT_FILTER");
-        if( res != null )
-        {
-            pFilter.user =      res["DLG_EVENT_FILTER.relation_id"];
-            pFilter.datefrom =  res["DLG_EVENT_FILTER.edt_von"];
-            pFilter.dateto =    res["DLG_EVENT_FILTER.edt_bis"];
-            pFilter.category =  res["DLG_EVENT_FILTER.category"];
-            pFilter.tentative = res["DLG_EVENT_FILTER.tentative"];
-            pFilter.confirmed = res["DLG_EVENT_FILTER.confirmed"];
-            pFilter.cancelled = res["DLG_EVENT_FILTER.cancelled"];
-            pFilter.free      = res["DLG_EVENT_FILTER.free"];
-            if (pFilter.datefrom != "" && pFilter.dateto != "" && pFilter.dateto >= pFilter.datefrom ) error = false;
-            else question.showMessage(translate.text("Bitte Datumseingabe prüfen!"))
-        }
-        else
-        {
-            pFilter.datefrom = von;
-            pFilter.dateto = bis;
-            error = false;
-        }
-    }
-    while ( error )
-    return pFilter;
-}
-
-/*
- * Setzt den Event-Filter
- *
- * @param {Object} pFilter req
- *
- * @return {image}
- */
-function filterEvent_Neon( pFilter )
-{
-    var error = true;
-    var von = pFilter.datefrom;
-    var bis = pFilter.dateto;
-    if ( pFilter == "" )	pFilter =  reset_filterEvent();
-    do
-    {
-        var buttons = {
-            "ok" : translate.text("OK"),
-            "": translate.text("Abbrechen")
-        };
-        var defaultButton = "ok";
-
-        var prompts = {
-            FILTER_TEXT: translate.text("Bitte Filterbedingungen setzen"),
-            RESPONSIBLE_APPOINTMENT: pFilter.user,
-            DATE_FROM: pFilter.datefrom,
-            DATE_TO: pFilter.dateto,
-            CATEGORY_APPOINTMENT: pFilter.category,
-            TENTATIVE: pFilter.tentative,
-            CONFIRMED: pFilter.confirmed,
-            CANCELLED: pFilter.cancelled
-        }
-        var res = question.openDialog("DLG_FILTER_APPOINTMENT_Neon", prompts, buttons, defaultButton);
-        if( res.button != null )
-        {
-            pFilter.user =      res.RESPONSIBLE_APPOINTMENT;
-            pFilter.datefrom =  res.DATE_FROM;
-            pFilter.dateto =    res.DATE_TO;
-            pFilter.category =  res.CATEGORY_APPOINTMENT;
-            pFilter.tentative = res.TENTATIVE;
-            pFilter.confirmed = res.CONFIRMED;
-            pFilter.cancelled = res.CANCELLED;
-            if (pFilter.datefrom != "" && pFilter.dateto != "" && pFilter.dateto >= pFilter.datefrom ) error = false;
-            else question.showMessage(translate.text("Bitte Datumseingabe prüfen!"))
-        }
-        else
-        {
-            pFilter.datefrom = von;
-            pFilter.dateto = bis;
-            error = false;
-        }
-    }
-    while ( error )
-    return pFilter;
-}
-
-/*
- * Anzeige des Event-Filter
- *
- * @param {Object} pFilter req
- *
- * @return string Anzeige
- */
-function show_filterEvent(pFilter)
-{
-    var retstring = "";
-
-    var userp = tools.getUser( pFilter.user )[tools.PARAMS];
-    if (pFilter.user != "") retstring = translate.text("Termine von") + " " + userp[tools.FIRSTNAME] + " " + userp[tools.LASTNAME];
-    if (pFilter.datefrom != "") retstring += ", " + datetime.toDate(pFilter.datefrom, translate.text("dd.MM.yyyy"));
-    if (pFilter.dateto != "") retstring += " - " + datetime.toDate(pFilter.dateto, translate.text("dd.MM.yyyy"));
-    if (pFilter.category == "true") retstring += ", " + translate.text("Kategorie") + " " + pFilter.category;
-    if (pFilter.tentative == "true") retstring += ", " + translate.text("Vorläufig");
-    if (pFilter.confirmed == "true") retstring += ", " + translate.text("Bestätigt");
-    if (pFilter.cancelled == "true") retstring += ", " + translate.text("Abgesagt");
-
-    return retstring
-}
-
-/*
- * Setzt den Event-Filter zurück
- *
- * @return {filter}
- */
-function reset_filterEvent()
-{
-    var today = getDate (vars.getString("$sys.date"));
-
-    return pFilter =  {
-        user: vars.getString("$sys.user"),
-        datefrom: String(today), //nur die Termine ab heute anzeigen,
-        //die von vor einer Woche sind uninteressant
-        dateto: String(eMath.addInt(eMath.addInt(today, datetime.ONE_WEEK)
-            ,datetime.ONE_DAY - datetime.ONE_MINUTE)),
-        category: "",
-        tentative: "true",
-        confirmed: "true",
-        cancelled: "",
-        free: "true"
-    };
-}
-
-/*
- * Setzt den Aufgaben-Filter in Tab Aufgaben
- *
- * @return {image}
- */
-function filterLinkedToDo()
-{
-    var filtervalues = ["", "false"];
-    vars.set("$local.CalenderUser", getCalenderUser( calendars.RIGHT_READ_TASK ));
-
-    //Vorbelegen der Werte, wenn bereits gewählt wurde:
-    if(vars.exists("$image.FilterValuesT"))
-    {
-        filtervalues = vars.get("$image.FilterValuesT");
-        vars.set("$local.relation_id", filtervalues[0]);
-        vars.set("$local.done", filtervalues[1]);
-    }
-
-    var res = swing.askUserQuestion(translate.text("Bitte Filterbedingungen setzen"), "DLG_TASK_DATE_LINKED_FILTER");
-
-    if( res != null && res != undefined && res != "")
-    {
-        filtervalues[0] = res["DLG_TASK_DATE_LINKED_FILTER.relation_id"];
-        filtervalues[1] = res["DLG_TASK_DATE_LINKED_FILTER.done"]
-    }
-    vars.set("$image.FilterValuesT", filtervalues );
-
-    return(filtervalues);
-}
-
-/*
- * Setzt den Aufgabe-Filter zurück
- *
- * @return {image}
- */
-function resetfilterLinkedToDo()
-{
-    var filtervalues = ["", "false"];
-
-    vars.set("$image.FilterValuesT", filtervalues );
-
-}
-
-/*
- * setzt die Kalenderrechte
- *
- * @return {void}
- */
-function setCalendarGrant()
-{
-    calendars.resetCalendarUser();
-    var user_read_todo = [];
-    var user_write_todo = [];   // ["Admin"]
-    var user_read_event = [];
-    var user_write_event = [];
-    var tree = {};
-    var data = db.table("select THEMEID, THEME.THEME_ID, LOGIN, STATUS from THEME "
-        + " left join EMPLOYEE on EMPLOYEE.THEME_ID = THEMEID left join RELATION on RELATION_ID = RELATIONID and STATUS = 1"
-        +" where KIND = 2");
-    for ( let i = 0; i < data.length; i++)
-    {
-        if ( tree[data[i][0]] == undefined )    tree[data[i][0]] = {
-            pid: data[i][1],
-            isuser: false
-        };
-        if ( data[i][2] != "" && data[i][3] != "" )     tree[data[i][2]] = {
-            pid: data[i][0],
-            isuser: true
-        };
-    }
-
-    var user = vars.getString("$sys.user");
-    // Lese- und Schreibrechte auf Kalender aus Datentabelle holen
-    data = db.table("select HASRIGHTFOR, TODO_RIGHTS, EVENT_RIGHTS from AOSYS_CALENDAR_RIGHTS where LOGIN = '" + user + "'");
-    for ( var i = 0; i < data.length; i++ )
-        if(tree[data[i][0]] != undefined)
-            tree[data[i][0]].grants = data[i].slice(1);
-
-    for ( login in tree )
-    {
-        if( tree[login].isuser )
-        {
-            var grantstodo = __getGrants( login, 0 );
-            var grantsevent = __getGrants( login, 1 );
-            if ( grantstodo.length + grantsevent.length > 0 )
-            {
-                if ( grantstodo == "1" || grantstodo == "3")  user_read_todo.push(login);
-                if ( grantstodo == "2" || grantstodo == "3")  user_write_todo.push(login);
-                if ( grantsevent == "1" || grantsevent == "3")  user_read_event.push(login);
-                if ( grantsevent == "2" || grantsevent == "3")  user_write_event.push(login);
-            }
-        }
-    }
-    calendars.setCalendarUser(user_read_todo, calendars.RIGHT_READ_TASK, true, calendars.SORTSTRATEGY_NATURAL );
-    calendars.setCalendarUser(user_write_todo, calendars.RIGHT_WRITE_TASK, true, calendars.SORTSTRATEGY_NATURAL );
-    calendars.setCalendarUser(user_read_event, calendars.RIGHT_READ_APPOINTMENT, true, calendars.SORTSTRATEGY_NATURAL );
-    calendars.setCalendarUser(user_write_event, calendars.RIGHT_WRITE_APPOINTMENT, true, calendars.SORTSTRATEGY_NATURAL );
-
-    //********** Ressourcen in Kalender einfügen ************
-    var ressource = tools.getUsersWithRole("PROJECT_Ressource");
-    calendars.setCalendarUser(  ressource, calendars.RIGHT_READ_APPOINTMENT | calendars.RIGHT_WRITE_APPOINTMENT  );
-
-    //add all users from support-role since support-action-tasks (sp_supportAktionen) generates tasks for all support-role members
-    //and if you're a member you are allowed to edit these
-    if (tools.hasRole(user, "PROJECT_Support"))
-    {
-        var support = tools.getUsersWithRole("PROJECT_Support");
-        calendars.setCalendarUser(  support, calendars.RIGHT_WRITE_TASK | calendars.RIGHT_READ_TASK  );
-    }
-
-    function __getGrants( pKey, pIndex )
-    {
-        var grants = [];
-        if ( tree[pKey].grants != undefined && tree[pKey].grants[pIndex]) grants = tree[pKey].grants[pIndex];
-        else if ( tree[pKey].pid != "" )   grants = __getGrants( tree[pKey].pid, pIndex );
-        return grants;
-    }
-}
-
-/*
- * setzt Recht für alle Kalender
- *
- * @return {void}
- */
-function setAllCalendarGrant()
-{
-    calendars.resetCalendarUser();
-    var users = tools.getStoredUsers();
-    var calendar_user = [];
-    for ( var i = 0; i < users.length; i++ )    calendar_user.push( users[i][1] );
-    calendars.setCalendarUser(calendar_user, calendars.RIGHT_READ_TASK | calendars.RIGHT_WRITE_TASK, false, calendars.SORTSTRATEGY_NATURAL );
-}
-
-/*
- * gibt die Logins der user, die den übergebenen User als Attribute eingetragen haben, zurück
- *
- * @param {[]} pUsers req Logins
- * @param {String []} pAttrName req AttributeName für Employee
- * @param {String []} pFields opt
- *
- * @return {String []} Logins
- */
-function getUsersbyAttr( pUsers, pAttrName, pFields )
-{
-    if (typeof(pAttrName) == "string") pAttrName = [pAttrName]
-
-    if ( pFields == undefined )
-    {
-        pFields = ["LOGIN"];
-    }
-
-    var sqlstr = "select " + pFields.join(", ") + " from ATTRLINK join ATTR on ATTRLINK.ATTR_ID = ATTRID and OBJECT_ID = 12 "
-    + "and ATTRNAME in ('" + pAttrName.join("','") + "') "
-    + " join EMPLOYEE on EMPLOYEEID = ATTRLINK.ROW_ID join RELATION on RELATION_ID = RELATIONID join PERS on PERS_ID = PERSID"
-    + " where VALUE_ID in (select EMPLOYEEID from EMPLOYEE where LOGIN in ('" + pUsers.join("','") + "'))"
-    + "";
-
-    if(pFields.length == 1)
-        return db.array(db.COLUMN, sqlstr);
-    else
-        return db.table(sqlstr);
-}
-
-/*
- * Gibt die Anzahl der verknüpften Aufgaben und Termine zurück.
- *
- * @param {String} pID req
- * @param {String} pFrame req
- *
- * @return {String} text
- */
-function countLinkedTodoEvent(pID, pFrame)
-{
-    var today = getDate (vars.getString("$sys.date"));
-    var datefrom = String(today);
-    var dateto = String(eMath.addInt(today, datetime.ONE_WEEK));
-
-    var str = "select count(distinct ELEMENTUID) from ASYS_CALENDARLINK join ASYS_CALENDARBACKEND on ELEMENTUID = ASYS_CALENDARLINK.ENTRYID "
-    + " where FRAME = 'comp." + pFrame + "' and ELEMENTUID is not null and DBID = '" + pID + "'";
-    var rettask = db.cell(str + "and ENTRYTYPE = " + calendars.VTODO + " and STATUS in ('"
-        + mapCalendarStatus(calendars.STATUS_NEEDSACTION, calendars.getBackendTypeTasks() ) + "', '"
-        + mapCalendarStatus(calendars.STATUS_INPROCESS, calendars.getBackendTypeTasks() ) + "')");
-
-    var eventStatusList = [
-         mapCalendarStatus(calendars.STATUS_CONFIRMED, calendars.getBackendType() )
-        ,mapCalendarStatus(calendars.STATUS_TENTATIVE, calendars.getBackendType() )
-    ];
-
-    if (calendars.getBackendType() == calendars.BACKEND_EXCHANGEWS)
-        eventStatusList.push(calendars.STATUS_FREE);
-
-    var retevent = db.cell([str + " and ENTRYTYPE = " + calendars.VEVENT + " and STATUS in ('" + eventStatusList.join("', '") + "')"
-            + " and DTSTART >= ? and DTEND <= ?",
-        [ [ String(datefrom), SQLTYPES.DATE ],  [String(dateto), SQLTYPES.DATE ] ]]);
-
-    result.string(translate.withArguments("&Aufg / Term (%0/%1)", [rettask, retevent]));
-}
-
-/*
- * Gibt die Anzahl der verknüpften Aufgaben zurück.
- *
- * @param {String} pID req
- * @param {String} pFrame req
- *
- * @return {String} text
- */
-function countLinkedTodo(pID, pFrame)
-{
-    var str = "select count(distinct ELEMENTUID) "
-    + "from ASYS_CALENDARLINK "
-    + "join ASYS_CALENDARBACKEND on ELEMENTUID = ASYS_CALENDARLINK.ENTRYID "
-    + " where FRAME = 'comp." + pFrame + "' "
-    + "and ELEMENTUID is not null and DBID = '" + pID + "'";
-
-    var rettask = db.cell(str + "and ENTRYTYPE = " + calendars.VTODO
-        + " and  STATUS in ('"
-        + mapCalendarStatus(calendars.STATUS_NEEDSACTION, calendars.getBackendTypeTasks() ) + "', '"
-        + mapCalendarStatus(calendars.STATUS_INPROCESS, calendars.getBackendTypeTasks() ) + "')"
-        + "");
-
-    result.string(translate.withArguments("&Aufgaben (%0)", [rettask]));
-}
-
-/*
- * Gibt die Überschneidungen von Termine zurück.
- *
- * @param {Date} pStart req
- * @param {Date} pEnd req
- * @param {Array} pUsers req
- *
- * @return {String Array} Termine
- */
-function getOverlappingEvents(pStart, pEnd, pUsers  )
-{
-    var resultEvents = new Array();
-    var users = pUsers;
-    if (calendars.getBackendType() == calendars.BACKEND_DB && pStart != "" && pEnd != "" && users.length > 0)
-    {
-        calendars.clearCache();
-        for (var u = 0; u < users.length; u++)
-        {
-            var localuid = vars.get("$image.entry")[calendars.ID]
-            var condition = new Array();
-            condition["COUNT"] = "1";
-            condition["TYPE_1"] = calendars.VFREEBUSY;
-            condition["USER_1"] = users[u][0];
-            condition["START_1"] = pStart;
-            condition["END_1"] = pEnd;
-
-            var fbsall = calendars.getEntries(condition);
-            for (var j = 0; j < fbsall.length; j++)
-            {
-                var fbs = fbsall[j];
-                for (var i = 0; i < fbs.length; i++)
-                {
-                    var next = fbs[i];
-                    var uid = next[calendars.ID];
-                    var sum = next[calendars.SUMMARY];
-                    if (uid != localuid)
-                    {
-                        var freebusy = next[calendars.FREEBUSY];
-                        var freebusyDec = text.decodeMS(freebusy);
-                        var match = false;
-                        for (var k = 0; k < freebusyDec.length; k++)
-                        {
-                            var freebusyInstance = text.decodeMS(freebusyDec[k]);
-                            if (!freebusyInstance[0].equals("FREE"))
-                            {
-                                match = true;
-                            }
-                        }
-                        if (match)  resultEvents.push([users[u][2], sum != null && sum.length > 0 ? sum : "?", uid]);
-                    }
-                }
-            }
-        }
-    }
-    return resultEvents;
-}
-
-/*
- * Überprüft den Eintrag, wenn eine neue Aufgaben angelegt wird darauf, ob private Aufgaben für andere erstellt werden
- *
- * @param {String[]} pUser die Liste der User, denen die Aufgabe zugewiesen werden soll
- * @param {String} pClassification die Klassifizierung der Aufgabe - "PRIVATE"
- *
- * @return {Boolean} ob der Eintrag in der Konstellation möglich ist, wenn nicht wird eine Meldung ausgegeben
- */
-function checkEntry(pUser, pClassification )
-{
-    if( pClassification == "PRIVATE" &&
-        ( pUser.length > 1 || text.decodeMS(pUser[0][0])[1] != "CN:" + vars.getString("$sys.user")))
-        {
-        question.showMessage(translate.text("Eine private Aufgabe kann nicht jemand anderem zugewiesen werden."));
-        return false;
-    }
-    else
-    {
-        return true;
-    }
-}
-
-/*
- * Verschiebt ein Calendareintrag
- *
- * @param {String[]} pIDs req die zu verschiebenden Ids mit den Calenderinformationen (Multistring)
- * @param {String} pTblCompName  opt die Komponente die aktualisiert werden soll
- *
- * @return {void}
- */
-function shiftEntry(pIDs, pTblCompName)
-{
-    var datenew = swing.askUserQuestion(translate.text("Verschieben auf Datum?"), "DLG_DATE");
-    if (datenew != null )
-    {
-        var grantedUsers = calendars.getDisplayCalendarUsers(calendars.RIGHT_WRITE_TASK);
-        var usermap = {};
-        var granted = true;
-        for (let i = 0; i < grantedUsers.length; i++)
-        {
-            usermap[grantedUsers[i][1]] = true;
-        }
-
-        datenew = datetime.clearTime(datenew["DLG_DATE.Edit_date"]);
-        if (datenew <= vars.getString("$sys.today"))
-            question.showMessage(translate.text("nur Verschiebung in die Zukunft erlaubt!"));
-        else
-        {
-            for (var i = 0, j = pIDs.length; i < j; i++)
-            {
-                var id = text.decodeMS(pIDs[i]);
-                var entry = calendars.getEntry(id[0], null, id [1], calendars.VTODO);
-                var affectedUsers = entry[calendars.ATTENDEES];
-
-                granted =  hasGrantForEntryByObject(affectedUsers, usermap);
-                if(granted)
-                {
-                    //Zeitdifferenz von Aufgabenstart und -ende
-                    var dateDiff  = eMath.subInt(entry[calendars.DUE], entry[calendars.DTSTART]);
-
-                    //Startzeit der Aufgabe
-                    var startTime = eMath.subInt(entry[calendars.DTSTART]
-                        , datetime.clearTime(entry[calendars.DTSTART]));
-
-                    entry[calendars.DTSTART] = eMath.addInt(datenew, startTime);
-                    entry[calendars.DUE] = eMath.addInt(entry[calendars.DTSTART], dateDiff);
-                    calendars.update( [ entry ] );
-                }
-                else
-                    question.showMessage(translate.text("Keine Berechtigung zum Verschieben der Aufgabe"));
-            }
-        }
-    }
-}
-
-/*
- * Gibt eine Aufgabe weiter
- *
- * @param {String} pIDs die ID der Aufgabe, welche weitergegeben werden soll
- * @param {String} pTblCompName die Komponente der Aufgaben, die aktualisiert werden soll
- *
- * @return {void}
- */
-function handOverToDo(pIDs, pTblCompName)
-{
-    var calendar_user = "";
-    var users = getCalenderUser( calendars.RIGHT_WRITE_TASK );
-    var publicCount = 0;
-    var privateCount = 0;
-    var notGrantedCount = 0;
-
-    var grantedUsers = calendars.getDisplayCalendarUsers(calendars.RIGHT_WRITE_TASK);
-    var userMap = {};
-    var granted = true;
-    for (let i = 0; i < grantedUsers.length; i++)
-    {
-        userMap[grantedUsers[i][1]] = true;
-    }
-
-    if (pIDs.length == 1)  // only one todo and private
-    {
-        var id = text.decodeMS( pIDs[0] );
-        var entry = calendars.getEntry( id[0], null, id[1] );
-        if(entry[calendars.CLASSIFICATION] == calendars.CLASSIFICATION_PRIVATE)
-        {
-            question.showMessage(translate.text("Kein Weitergeben von privaten Aufgaben möglich!"));
-            return;
-        }
-    }
-
-    for ( let i = 0; i < users.length; i++)  if (pIDs.length > 0 || users[i][0] != id[1])   calendar_user += "|" + users[i][1];
-    var selection = swing.askQuestion(translate.text("Benutzer auswählen"), swing.QUESTION_COMBOBOX, calendar_user);
-    if (selection != null)
-    {
-        for ( let i = 0; i < users.length; i++)
-        {
-            if ( selection == users[i][1] )
-            {
-                selection = users[i];
-                break;
-            }
-        }
-        for( let i = 0; i < pIDs.length; i++)
-        {
-            let id = text.decodeMS( pIDs[i] );
-            let entry = calendars.getEntry( id[0], null, id[1] );
-            if(entry[calendars.CLASSIFICATION] == calendars.CLASSIFICATION_PRIVATE)  privateCount++;
-            else //Nur öffentliche Aufgabe kann weiter gegeben werden.
-            {
-                // User austauschen
-                var usermap = entry[calendars.ATTENDEES];
-                var affectedusers = [];
-
-                granted =  hasGrantForEntryByObject(usermap, userMap);
-
-                for (var ui = 0; ui < usermap.length; ui++)
-                {
-                    var login_cn = usermap[ui]["cn"];
-                    var user = tools.getUserByAttribute(tools.CALENDARID, usermap[ui]["paramvalue"].substr("mailto:".length))
-                    if (user == null)  user = login_cn;
-                    else user = user[tools.TITLE]
-
-                    if ( user == id[1] )   affectedusers.push(selection[0]);
-                    else  if ( user != selection[0] )  affectedusers.push(user);
-                }
-                if(granted)
-                {
-                    entry[calendars.AFFECTEDUSERS] = text.encodeMS(calendars.getCalendarUsers(affectedusers));
-                    calendars.update([entry]);
-                    publicCount++;
-                }
-                else notGrantedCount++
-            }
-        }
-        question.showMessage(translate.withArguments("%0 Aufgabe(n) erfolgreich weitergegeben an: %1"
-            + (privateCount == 0 ? "" : "\n%2 private Aufgabe(n) können nicht weitergegeben werden.")
-            +(notGrantedCount == 0 ? "" : "\n%3 Aufgabe(n) können aufgrund fehlender Berechtigung nicht weitergegeben werden."),
-            [publicCount, selection[1], privateCount, notGrantedCount]));
-
-    }
-}
-
-// ToDo prüfen !!
-/*
- * Verschiebt die Kalendereinträge bei Login-Änderung
- *
- * @param {String} pNewlogin req
- * @param {String} pOldlogin req
- * @param {String} pNewCalendarID req
- * @param {String} pOldCalendarID req
- *
- * @return {void}
- */
-function moveCalendarData ( pNewlogin, pOldlogin, pNewCalendarID, pOldCalendarID )
-{
-    var newcaluser = text.encodeMS(["mailto:" + pNewCalendarID, "CN:" + pNewlogin]);
-    var oldcaluser = text.encodeMS(["mailto:" + pOldCalendarID, "CN:" + pOldlogin]);
-    db.runStatement("update ASYS_CALENDARBACKEND set OWNER = '" + newcaluser + "' where OWNER = '" + oldcaluser + "'");
-    db.runStatement("update ASYS_CALENDARBACKEND set ORGANIZER = '" + newcaluser + "' where ORGANIZER = '" + oldcaluser + "'");
-
-    if(pNewCalendarID != pOldCalendarID) //Nur wenn sich die E-Mailadresse geändert hat
-    {
-        //Messenger-Historien
-        db.runStatement("update ASYS_XMPP_HISTORY set JID_FROM = '" + pNewCalendarID +"' where JID_FROM = '" + pOldCalendarID +"'", "_____SYSTEMALIAS");
-        db.runStatement("update ASYS_XMPP_HISTORY set JID_TO = '" + pNewCalendarID +"' where JID_TO = '" + pOldCalendarID +"'", "_____SYSTEMALIAS");
-    }
-}
-
-/*
- * Löst den CalenderUser in lesbarer From auf
- *
- * @param {String} pValue req
- *
- * @return {String} übersetzten Wert
- */
-function getCalUser( pValue )
-{
-    var realname = pValue;
-    var user = tools.getUser( text.decodeMS(pValue)[1].split(":")[1] );
-    if ( user != null )
-    {
-        realname = user[tools.PARAMS][tools.FIRSTNAME] + " " + user[tools.PARAMS][tools.LASTNAME];
-    }
-    return realname;
-}
-
-/*
- * Gibt den Login eines CalenderUser zurück
- *
- * @param {String} pCalendarUser req
- *
- * @return {String} Title
- */
-function getTitleCalenderUser( pCalendarUser )
-{
-    var data = text.decodeMS(pCalendarUser)
-    for ( var i = 0; i < data.length; i++ )
-    {
-        //if login changes we have to check calendarid
-        if ( data[i].substr(0, "mailto:".length).toUpperCase() == "MAILTO:" )
-        {
-            var user = tools.getUserByAttribute(tools.CALENDARID, [data[i].substr("mailto:".length)]);
-            if (user != null )
-                return user[tools.TITLE];
-        }
-
-        if ( data[i].substr(0, 3).toUpperCase() == "CN:" )
-            return data[i].substr(3);
-    }
-    return "";
-}
-
-
-/*
- * Gibt den richtigen Status zum Prüfen je nach Backend zurück
- *
- *
- * @param {String} pStatus req die konstante für den zu prüfenden status,
- *                             z.B. calendars.STATUS_INPROCESS
- *
- * @param {String} pCalendarType req die konstante für den typen des Termin- oder Aufgabenbackends,
- *                             z.B. calendars.BACKEND_DB
- *
- * @return {String} Konstanten für den Kalender (Backend-Typen), gibt es den status im backend nicht
- *                  wird null geliefert
- */
-function mapCalendarStatus(pStatus, pCalendarType)
-{
-    switch (pCalendarType)
-    {
-        //case calendars.BACKEND_EXCHANGE:
-        case calendars.BACKEND_EXCHANGEWS:
-            if (pStatus == calendars.STATUS_CONFIRMED)
-                return calendars.STATUS_BUSY;
-            else
-                return pStatus;
-        default:
-            if (pStatus == calendars.STATUS_OOF)//nur bei exchange
-                return null;
-            else
-                return pStatus;
-    }
-}
-
-/*
- * Sets the imagevariable with affectedusers
- *
- * @param {Object} pEntry req the Entry of Tasks or Appointments
- *
- * @return {void}
- *
- */
-function setAffectedUsersImage(pEntry)
-{
-    var affectedUsers = [];
-    var usermap = pEntry[calendars.ATTENDEES];
-    var realnames = getRealNameObject(usermap);
-
-    for ( var i = 0; i < usermap.length; i++ )
-    {
-        affectedUsers.push([ text.encodeMS( [usermap[i]["paramvalue"], "CN:" + usermap[i]["cn"]] ), realnames[usermap[i]["cn"]] ]);
-    }
-
-    vars.set("$image.affectedusers", affectedUsers);
-    return affectedUsers;
-}
-
-/*
- * Opens calendar links
- *
- * @param {String} pEntryID req the ID of the link
- *
- * @return {void}
- *
- */
-function openCalendarLinks(pEntryID)
-{
-    var openFramesObj = {};
-    if (typeof(pEntryID) == "object")
-        openFramesObj = pEntryID;
-    else
-    {
-        var links = db.table("SELECT FRAME, DBIDCOLUMN, DBID FROM ASYS_CALENDARLINK WHERE ENTRYID = '" + pEntryID + "'");
-        for (var i = 0; i < links.length; i++)
-        {
-            var frame = links[i][0].substr( 5 );//remove comp. so the frame can be opened with openFrame
-            if ( openFramesObj[frame] == undefined ) openFramesObj[frame] = {
-                IDField: links[i][1],
-                IDs: []
-            };
-            openFramesObj[frame].IDs.push(links[i][2]);
-        }
-    }
-
-    for ( frame in openFramesObj)
-    {
-        var condition = openFramesObj[frame].IDField + " in ('" + openFramesObj[frame].IDs.join("', '") + "')";
-        var framemode = openFramesObj[frame].IDs.length > 1 ? swing.FRAMEMODE_TABLE_SELECTION : swing.FRAMEMODE_SHOW;
-
-        if ( vars.getString("$global.upwardLink") == "link")
-        {
-            swing.openLinkedFrame(frame, condition, swing.WINDOW_CURRENT, framemode, "", null, false, {
-                autoclose: true
-            } );
-        }
-        else
-        {
-            swing.openFrame(frame, condition, swing.WINDOW_CURRENT, framemode, null, false);
-        }
-    }
-}
-
-/**
- * Returns the "real" calendar system/backend type (BackendType & SyncBackendType)
- *
- * @param {Number} pScope - The needed scope (e.g. "calendars.VEVENT", "calendars.VTODO")
- * @return {Number} - The backend type (calendars.BACKEND_*)
- */
-function getCalendarSystemType (pScope)
-{
-    // Check sync backend type
-    if (calendars.getSyncBackendType() != calendars.BACKEND_NONE && calendars.getSyncBackendType() != 3)
-    {
-        var scope = calendars.getSyncBackendTypeScope();
-        if (scope.length == 1 && scope[0] == pScope) // Scope.length = 1 -> VEVENT *OR* VTODO
-            return calendars.getSyncBackendType();
-        else if (scope.length == 2) // Scope.length = 2 -> Both
-            return calendars.getSyncBackendType();
-       // Scope.length = 0 -> Nothing selected -> Skip this block
-    }
-
-    // Fallback to backend type (event)
-    if (calendars.getBackendType() != calendars.BACKEND_NONE && pScope === calendars.VEVENT)
-        return calendars.getBackendType();
-
-    // Second fallback to backend type (todo)
-    if (calendars.getBackendTypeTasks() != calendars.BACKEND_NONE && pScope === calendars.VTODO)
-        return calendars.getBackendTypeTasks();
-
-    // Everything is none
-    return calendars.BACKEND_NONE;
-}
-
-function hasGrantForEntryByMS(pAffectedUsers, pUserMap)
-{
-    for (let i = 0; i < pAffectedUsers.length; i++)
-    {
-        var calUser = getTitleCalenderUser( pAffectedUsers[i][0]);
-        if(pUserMap[calUser] == undefined)
-        {
-            return false;
-            break;
-        }
-        else
-            return true;
-    }
-}
-
-function hasGrantForEntryByObject(pAffectedUsers, pUserMap)
-{
-    for (let i = 0; i < pAffectedUsers.length; i++)
-    {
-        calUser = tools.getUserByAttribute(tools.CALENDARID, pAffectedUsers[i]["paramvalue"].substr("mailto:".length))
-        if (calUser == null)  calUser = pAffectedUsers[i]["cn"];
-        else calUser = calUser[tools.TITLE]
-        if(pUserMap[calUser] == undefined)
-        {
-            return false;
-            break;
-        }
-        else
-            return true;
-    }
-}
+import("system.neon");
+import("system.vars");
+import("system.db");
+import("system.translate");
+import("system.datetime");
+import("system.swing");
+import("system.eMath");
+import("system.calendars");
+import("system.logging");
+import("system.tools");
+import("system.text");
+import("system.question");
+import("system.SQLTYPES");
+import("system.result");
+import("Util_lib");
+import("system.util")
+
+
+/**
+ *  @class
+ **/
+function CalendarUtil(){}
+
+
+/*
+ * Erzeugt und öffnet ein neues Aufgabenobjekt (mit einem Link).
+ *
+ * @param {String} pSummary opt die Zusammenfassung
+ * @param {String} pDescription opt die Beschreibung
+ * @param {Boolean} pWithLink opt TRUE legt eine Verknüpfung zu $image.frametable
+ * @param {String[][]} pWithLink opt pWithLink[0]: Name des Frames
+ *                                   pWithLink[1]: ID des angezeigten Datensatzes
+ *                                   pWithLink[2]: Verknüpfungstitel
+ * @param {String} pUser opt der Benutzer ( Login )
+ * @param {[]} pAffectedUsers opt die betroffenen Benutzer ( Login )
+ * @param {date} pStart opt Beginn der Aufgabe
+ * @param {date} pDuration opt Dauer
+ * @param {integer} pCategory opt ( calendars.CATEGORIES , encoded(String) z.B.: text.encodeMS(["Service"]) )
+ * @param {String} pStatus opt Status des Termins ( calendars.STATUS_TENTATIVE, calendars.STATUS_CONFIRMED, calendars.STATUS_CANCELLED )
+ * @param {Array{[]} pComps4Refresh opt die zu aktualisierenden Komponenten
+ *
+ * @return {void}
+ */
+CalendarUtil.newTodo = function(pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, pComps4Refresh)
+{
+    var todo = createEntry( calendars.VTODO, pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus );
+    var prompts = [];
+    prompts["comp4refresh"] = [];
+
+    if (pComps4Refresh == undefined)
+        pComps4Refresh = ["$comp.Aufgabe", "$comp.tbl_Aufgabe"];
+
+    for (var i = 0; i < pComps4Refresh.length; i++)
+    {
+        if ( vars.exists(pComps4Refresh[i]))    prompts["comp4refresh"].push(pComps4Refresh[i]);
+    }
+    if(vars.getString("$sys.scope") == "vaadin")
+        neon.openCalendarEntry([todo], null, neon.OPERATINGSTATE_NEW, null)
+    else
+    {
+        if (vars.exists("$sys.currentwindow"))
+            prompts["window"] = vars.getString("$sys.currentwindow");
+        if (vars.exists("$sys.currentimage"))
+            prompts["image"] = vars.getString("$sys.currentimage");
+
+        swing.openCalendarEntry([todo], null, false, prompts);
+    }
+}
+
+/*
+ * Erzeugt eine neue Aufgabe (mit einem Link).
+ *
+ * @param {String} pSummary opt die Zusammenfassung
+ * @param {String} pDescription opt die Beschreibung
+ * @param {Boolean} pWithLink opt TRUE legt eine Verknüpfung zu $image.frametable
+ * @param {String[][]} pWithLink opt pWithLink[0]: Name des Frames
+ *                		     pWithLink[1]: ID des angezeigten Datensatzes
+ *               		     pWithLink[2]: Verknüpfungstitel
+ * @param {String} pUser opt der Benutzer ( Login )
+ * @param {[]} pAffectedUsers opt die betroffenen Benutzer ( Login )
+ * @param {date} pStart opt Beginn der Aufagebe
+ * @param {integer} pGroupType opt ( calendars.GROUP_SINGLE , calendars.GROUP_MULTI )
+ * @param {date} pDuration opt Dauer
+ * @param {integer} pCategory opt ( calendars.CATEGORIES , encoded(String) z.B.: text.encodeMS(["Service"]) )
+ * @param {String} pStatus opt Status der Aufgabe ( calendars.STATUS_TENTATIVE, calendars.STATUS_CONFIRMED, calendars.STATUS_CANCELLED )
+ * @param {String} pPriority opt Priorität der Aufgabe
+ * @param {String} pReminder opt Erinnerung der Aufgabe
+ *
+ * @return {void}
+ */
+
+CalendarUtil.newSilentTodo = function(pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pGroupType, pCategory, pStatus, pPriority, pReminder)
+{
+    if ( pGroupType == undefined ) pGroupType = calendars.GROUP_SINGLE;
+    var todo = createEntry( calendars.VTODO, pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, pPriority, pReminder );
+    
+    return calendars.insert([todo],calendars.GROUP_SINGLE);
+}
+
+/*
+ * Erzeugt und öffnet ein neues Terminnobjekt mit einem Link.
+ *
+ * @param {String} pSummary opt die Zusammenfassung
+ * @param {String} pDescription opt die Beschreibung
+ * @param {Boolean} pWithLink opt TRUE legt eine Verknüpfung zu $image.frametable
+ * @param {String[][]} pWithLink opt pWithLink[0]: Name des Frames
+ *                		     pWithLink[1]: ID des angezeigten Datensatzes
+ *               		     pWithLink[2]: Verknüpfungstitel
+ * @param {String} pUser opt der Benutzer ( Login )
+ * @param {[]} pAffectedUsers opt die betroffenen Benutzer ( Login )
+ * @param {date} pStart opt Beginn der Aufagebe
+ * @param {date} pDuration opt Dauer
+ * @param {integer} pCategory opt ( calendars.CATEGORIES , encoded(String) z.B.: text.encodeMS(["Service"]) )
+ * @param {String} pStatus opt Status des Termins ( calendars.STATUS_TENTATIVE, calendars.STATUS_CONFIRMED, calendars.STATUS_CANCELLED )
+ * @param {Array{[]} pComps4Refresh opt die zu aktualisierenden Komponenten
+ * 
+ * @return {void}
+ */
+CalendarUtil.newEvent = function( pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, pComps4Refresh, pWorklistId)
+{
+    var event = createEntry( calendars.VEVENT, pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus );
+
+    var prompts = [];
+    prompts["comp4refresh"] = [];
+    if (pComps4Refresh == undefined)
+        pComps4Refresh = ["$comp.Aufgabe", "$comp.tbl_Termine"];
+    for (i = 0; i < pComps4Refresh.length; i++)
+    {
+        if ( vars.exists(pComps4Refresh[i]))    prompts["comp4refresh"].push(pComps4Refresh[i]);
+    }
+
+    if(vars.getString("$sys.scope") == "vaadin")
+        neon.openCalendarEntry([event],"", neon.OPERATINGSTATE_NEW, null)
+    else
+    {
+        prompts["window"] = vars.getString("$sys.currentwindow");
+        prompts["image"] = vars.getString("$sys.currentimage");
+        if (pWorklistId != undefined)
+            prompts["worklistId"]   = pWorklistId;
+        swing.openCalendarEntry([event], null, false, prompts);
+    }
+}
+
+
+/*
+ * Erzeugt einen neuen Termineintrag (mit einem Link).
+ *
+ * @param {String} pSummary opt die Zusammenfassung
+ * @param {String} pDescription opt die Beschreibung
+ * @param {Boolean} pWithLink opt TRUE legt eine Verknüpfung zu $image.frametable
+ * @param {String[][]} pWithLink opt pWithLink[0]: Name des Frames
+ *                		     pWithLink[1]: ID des angezeigten Datensatzes
+ *                		     pWithLink[2]: Verknüpfungstitel
+ * @param {String} pUser opt der Benutzer ( Login )
+ * @param {[]} pAffectedUsers opt die betroffenen Benutzer ( Login )
+ * @param {date} pStart opt Beginn des Termins
+ * @param {date} pDuration opt Dauer
+ * @param {integer} pGroupType opt ( calendars.GROUP_SINGLE , calendars.GROUP_MULTI )
+ * @param {integer} pCategory opt ( calendars.CATEGORIES , encoded(String) z.B.: text.encodeMS(["Service"]) )
+ * @param {String} pStatus opt Status des Termins ( calendars.STATUS_TENTATIVE, calendars.STATUS_CONFIRMED, calendars.STATUS_CANCELLED )
+ * @param {String} pReminder opt Erinnerung des Termins
+ *
+ * @return {void}
+ */
+CalendarUtil.newSilentEvent = function( pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pGroupType, pCategory, pStatus, pReminder)
+{
+    if ( pGroupType == undefined ) pGroupType = calendars.GROUP_SINGLE;
+    var event = createEntry( calendars.VEVENT, pSummary, pDescription, pWithLink, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, undefined, pReminder );
+    return calendars.insert( [event] , pGroupType );
+}
+
+/*
+ * Erzeugt ein neues Aufgaben- / Termin-Objekt (mit einem Link).
+ *
+ * @param {date} pType req  Augabe oder Termin ( calendars.VTODO, calendars.VEVENT )
+ * @param {String} pSummary opt die Zusammenfassung
+ * @param {String} pDescription opt die Beschreibung
+ * @param {Boolean} pWithLink opt TRUE legt eine Verknüpfung zu $image.frametable
+ * @param {String[][]} pWithLink opt pWithLink[0]: Name des Frames
+ *                		     pWithLink[1]: ID des angezeigten Datensatzes
+ *                		     pWithLink[2]: Verknüpfungstitel
+ * @param {String} pUser opt der Benutzer ( Login )
+ * @param {[]} pAffectedUsers opt die betroffenen Benutzer ( [ Login ] )
+ * @param {date} pStart opt Beginn
+ * @param {date} pDuration opt Dauer
+ * @param {integer} pCategory opt ( calendars.CATEGORIES , encoded(String) z.B.: text.encodeMS(["Service"]) )
+ * @param {String} pStatus opt Status des Termins ( calendars.STATUS_TENTATIVE, calendars.STATUS_CONFIRMED, calendars.STATUS_CANCELLED )
+ * @param {String} pPriority opt Priorität
+ * @param {String} pReminder opt Erinnerung
+ *
+@return {Object} das EntryObjekt
+ */
+CalendarUtil.createEntry = function( pType, pSummary, pDescription, pWithLink, pAppLinkContext, pAppLinkId, pUser, pAffectedUsers, pStart, pDuration, pCategory, pStatus, pPriority, pReminder )
+{
+    var Entry = {};
+    var framename;
+    var framdata;
+    var dbid;
+    var linktitle;
+    if ( pSummary == undefined || pSummary == null  ) pSummary = "";
+    if ( pDescription == undefined || pDescription == null )
+    {
+        if(vars.getString("$sys.scope") == "vaadin")
+            pDescription = neon.getImageContent(vars.getString("$sys.currententityname"));
+        else
+            pDescription = swing.getImageContent();
+    }
+    if ( pUser == undefined || pUser == null ) pUser = vars.getString("$sys.user");
+    //kein translate.key hier, weil es sich um einen rein technischen Wert handelt:
+    if ( pStart == undefined ) pStart = datetime.toLong(datetime.toDate(parseInt(vars.getString("$sys.date")) + datetime.ONE_HOUR, "dd.MM.yyyy HH:00"), "dd.MM.yyyy HH:mm");
+    if ( pCategory == undefined || pCategory == null  ) pCategory = "";
+
+    if (pAffectedUsers == null || pAffectedUsers == undefined )
+    {
+        Entry[calendars.AFFECTEDUSERS] = "";
+    }
+    else
+    {
+        Entry[calendars.AFFECTEDUSERS] = text.encodeMS(calendars.getCalendarUsers(pAffectedUsers));
+    }
+    Entry[calendars.TYPE] = pType;
+    Entry[calendars.DTSTART] = pStart;
+    if ( pType == calendars.VEVENT )
+    {
+        if ( pDuration == undefined )
+            pDuration = datetime.ONE_HOUR;
+
+        Entry[calendars.DTEND] = String ( eMath.addInt( pStart, pDuration) );
+
+        if ( pStatus == undefined )
+            pStatus = calendars.STATUS_CONFIRMED;
+
+        pStatus = mapCalendarStatus(pStatus, calendars.getBackendType() );
+    }
+    else if ( pType == calendars.VTODO )
+    {
+        //kein translate.key hier, weil es sich um einen rein technischen Wert handelt:
+        if ( pDuration != undefined )
+            Entry[calendars.DUE] = String ( eMath.addInt( pStart, pDuration) );
+        else
+            Entry[calendars.DUE] = datetime.toLong(datetime.toDate(pStart, "dd.MM.yyyy 23:59")
+                ,"dd.MM.yyyy HH:mm");
+
+        if ( pStatus == undefined )
+            pStatus = calendars.STATUS_NEEDSACTION;
+
+        pStatus = mapCalendarStatus(pStatus, calendars.getBackendTypeTasks() );
+        
+    }
+
+    Entry[calendars.USER] = calendars.getCalendarUser(pUser);
+    Entry[calendars.DESCRIPTION] = pDescription;
+    Entry[calendars.SUMMARY] = pSummary;
+    Entry[calendars.STATUS] = pStatus;
+    Entry[calendars.CLASSIFICATION] = calendars.CLASSIFICATION_PUBLIC;
+    Entry[calendars.CATEGORIES] = pCategory;
+   
+
+    if( pPriority != undefined )
+    {
+        Entry[calendars.PRIORITY] = pPriority;
+    }
+
+    if( pReminder != undefined)
+    {
+        Entry[calendars.HASREMINDER] = "true";
+        Entry[calendars.REMINDER_DURATION] = pReminder;
+    }
+    else
+        Entry[calendars.HASREMINDER] = "false";
+   
+
+    if (pWithLink == false)
+    {
+        Entry[calendars.LINKS] = "0";
+    }
+    else
+    {
+        var fd = new FrameData();
+        if ( typeof(pWithLink) == "object" )
+        {
+            for ( var li = 0; li < pWithLink.length; li++ )
+            {
+                framename = pWithLink[li][0];
+                framdata = fd.getData("name", framename, ["table","idcolumn","title"])[0];
+                dbid = pWithLink[li][1];
+                linktitle = framdata[2] + " - " + pWithLink[li][2];
+
+                Entry["LINK_ALIAS_" + ( li + 1 )] = vars.getString("$sys.dbalias");
+                Entry["LINK_TABLE_" + ( li + 1 )] = framdata[0];
+                Entry["LINK_IDCOLUMN_" + ( li + 1 )] = framdata[1];
+                Entry["LINK_DBID_" + ( li + 1 )] = dbid;
+                Entry["LINK_FRAME_" + ( li + 1 )] = "comp." + framename;
+                Entry["LINK_TITLE_" + ( li + 1 )] = linktitle;
+            }
+            Entry[calendars.LINKS] = pWithLink.length.toString();
+        }
+        else
+        {
+            if ( pWithLink == true || pWithLink == undefined )
+            {
+                framename = vars.getString("$sys.currentimagename");
+                framdata = fd.getData("name", framename, ["table","idcolumn","title"])[0];
+                dbid = vars.getString("$comp.idcolumn");
+                linktitle = framdata[2] + " - " + swing.getImageContent();
+            }
+            Entry[calendars.LINKS] = "1";
+            Entry["LINK_ALIAS_1"] = vars.getString("$sys.dbalias");
+            Entry["LINK_TABLE_1"] = framdata[0];
+            Entry["LINK_IDCOLUMN_1"] = framdata[1];
+            Entry["LINK_DBID_1"] = dbid;
+            Entry["LINK_FRAME_1"] = "comp." + framename;
+            Entry["LINK_TITLE_1"] = linktitle;
+        }
+    }
+    
+
+if(pAppLinkContext && pAppLinkId)
+{
+    Entry["AppLinkContext"] = pAppLinkContext;
+    Entry["AppLinkId"] = pAppLinkId;
+}
+    return Entry;
+}
+
+/*
+ * Liefert den CalendarStatus übersetzt zurück.
+ * @param {String} pStatus req Status
+ * @param {String} pLanguage opt Sprache
+ * @param {String} pKind opt ToDo oder Event
+ *
+ * @return {String} übersetzte Status
+ */
+function getCalendarStatus( pStatus, pLanguage, pKind)
+{
+    //kein mappen des Status, da wirklich verschiedene Dinge angezeigt werden sollen
+    switch ( pStatus )
+    {
+        case calendars.STATUS_BUSY: 
+            return translate.text("Gebucht", pLanguage)
+        case calendars.STATUS_CANCELLED:
+            if(pKind == "ToDo" && pKind != undefined) return translate.text("Zurückgestellt", pLanguage)
+            return translate.text("Abgesagt", pLanguage)
+        case calendars.STATUS_COMPLETED:
+            return translate.text("Erledigt", pLanguage)
+        case calendars.STATUS_CONFIRMED:
+            return translate.text("Bestätigt", pLanguage)
+        case calendars.STATUS_FREE:
+            return translate.text("frei", pLanguage)
+        case calendars.STATUS_INPROCESS:
+            return translate.text("In Bearbeitung", pLanguage)
+        case calendars.STATUS_NEEDSACTION:
+            return translate.text("Nicht begonnen", pLanguage)
+        case calendars.STATUS_OOF:
+            return translate.text("Außer Haus", pLanguage)
+        case calendars.STATUS_TENTATIVE:
+            return translate.text("Vorläufig", pLanguage)
+        default:
+            return "";
+    }
+}
+
+/*
+ * Zu einer übergebenen Priorität wird ihre Bedeutung übersetzt und zurückgegeben.
+ *
+ * @param {String} pPriority req Priorität
+ * @param {String} pLanguage opt Sprache
+ *
+ * @return (String) übersetzte Bedeutung einer Priorität
+ */
+function getCalendarPriority(pPriority, pLanguage)
+{
+    switch(pPriority)
+    {
+        case "9":
+            return translate.text("niedrig", pLanguage);
+            break;
+        case "5":
+            return translate.text("normal", pLanguage);
+            break;
+        case "1":
+            return translate.text("hoch", pLanguage);
+            break;
+        default:
+            return translate.text("keine", pLanguage);
+            break;
+    }
+}
+
+/*
+ * Liefert zum Objekt verknüpfte Aufgaben aus dem Kalender.
+ *
+ * @param {String} pFrame req Name des Frames
+ * @param {String} pDBID req ID des verknüpften Datensatzes
+ * @param {String} pAlias opt
+ * @param {String} pLanguage opt Sprache
+ *
+ * @return {[]} mit Aufgaben aus Kalender
+ */
+function getLinkedToDos (pFrame, pDBID, pAlias, pLanguage )
+{
+    if (pAlias == undefined ) pAlias = vars.getString("$sys.dbalias");
+    var tab = [];
+    var status = " and STATUS in ('NEEDS-ACTION', 'IN-PROCESS')";
+    var exists = [];
+    var zustaendig = "";
+    var today = getDate(vars.getString("$sys.date"));
+    var filtervalues = ["", "false"];
+    if ( vars.exists("$image.FilterValuesT") )
+    {
+        filtervalues = vars.get("$image.FilterValuesT");
+        zustaendig = filtervalues[0]
+        if (filtervalues[1] == "true") status = " and STATUS in ('COMPLETED', 'CANCELLED')";
+    }
+
+    var entryids = db.table("select ENTRYID, OWNER from ASYS_CALENDARLINK "
+        + "join ASYS_CALENDARBACKEND on ELEMENTUID = ENTRYID where FRAME = 'comp." + pFrame + "' "
+        + "and ENTRYID is not null "
+        + "and ENTRYTYPE = " + calendars.VTODO + " "
+        + "and DBID = '" + pDBID + "' "
+        + status, pAlias);
+
+    for (var i = 0; i < entryids.length; i++)
+    {
+        if ( exists.indexOf(entryids[i][0]) == -1)
+        {
+            try
+                {
+                    var entry = calendars.getEntry(entryids[i][0], null, getTitleCalenderUser( entryids[i][1] ), calendars.VTODO);
+                    var entr = new Array;
+                    status = "";
+                    var user = tools.getUserByAttribute(tools.CALENDARID, entry[calendars.USER2]["paramvalue"].substr("mailto:".length))
+                    if(user == null) user = entry[calendars.USER2]["cn"];
+                     else user = user[tools.TITLE]
+                    if ((user == zustaendig || zustaendig == ""))
+                    {
+                        entr[0] = text.encodeMS([entry[calendars.ID], user]);
+                        var due = getDate(entry[calendars.DUE]);
+                        if (due < today ) entr[1]	= "-1769402";
+                        else  if (due > today) entr[1]	= "-16777216"; else entr[1]	= "-16744020";
+                        entr[2] = "-1";  // Hintergrundfarbe
+                        entr[3] = text.decodeMS(entry[calendars.AFFECTEDUSERS]).length;
+                        entr[4] = entry[calendars.DUE]
+                        entr[5] = getCalendarStatus( entry[calendars.STATUS], pLanguage, "ToDo");
+                        entr[6] = entry[calendars.SUMMARY]
+                        entr[7] = getRealName([entry[calendars.ORGANIZER2]]);
+                        entr[8] = getRealName(entry[calendars.ATTENDEES]);
+                        entr[9] = entry[calendars.DESCRIPTION];
+                        entr[10] = entry[calendars.PRIORITY];
+                        tab.push(entr);
+                        exists.push(entryids[i][0]);
+                    }
+            }
+            catch (ex)
+            {
+                logging.log(ex);
+            }
+        }
+    }
+    array_mDimSort(tab, 4, false); //Sortierung nach Fälligkeitsdatum
+    return tab;
+}
+
+/*
+ * Anzeige des Aufgaben-Filter
+ *
+ * @param {Object} pFilter req
+ *
+ * @return string Anzeige
+ */
+function show_filterLinkedToDos(pFilter)
+{
+    var retstring = "";
+    if (pFilter[0] != "")
+    {
+        var userp = tools.getUser( pFilter[0] )[tools.PARAMS];
+        retstring = translate.text("Aufgaben von") + " " + userp[tools.FIRSTNAME] + " " + userp[tools.LASTNAME];
+    }
+    if (pFilter[1] == "true") retstring += ", " + translate.text("erledigt / zurückgestellt");
+
+    return retstring
+}
+
+/*
+ * Liefert zum Objekt verknüpfte Events aus dem Kalender.
+ *
+ * @param {String} pFrame req Name des Frames
+ * @param {String} pDBID req ID des verknüpften Datensatzes
+ * @param {Object} pFilter opt
+ * @param {String} pAlias opt
+ * @param {String} pUser opt Benutzer
+ *
+ * @return {[]} mit Events aus Kalender
+ */
+function getLinkedEvents (pFrame, pDBID, pFilter, pAlias, pUser )
+{
+    if ( pFilter == "" || pFilter == undefined)
+        pFilter = reset_filterEvent();
+
+    var tab = [];
+    var exists = [];
+    var conditions = [];
+    var today = getDate(vars.getString("$sys.date"));
+    var conditioncount = 0;
+    var stati = [];
+
+    if ( pFilter.tentative == "true" )
+        stati.push(mapCalendarStatus(calendars.STATUS_TENTATIVE, calendars.getBackendType() ));
+
+    if ( pFilter.cancelled == "true" )
+        stati.push(mapCalendarStatus(calendars.STATUS_CANCELLED, calendars.getBackendType() ));
+
+    if ( pFilter.confirmed == "true" )
+        stati.push(mapCalendarStatus(calendars.STATUS_CONFIRMED, calendars.getBackendType() ));
+
+    if (calendars.getBackendType() == calendars.BACKEND_EXCHANGEWS)
+        stati.push(calendars.STATUS_FREE);
+
+    if (pAlias == undefined ) pAlias = vars.getString("$sys.dbalias");
+
+    var entryids = db.table(["select ENTRYID, OWNER "
+        + "from ASYS_CALENDARLINK "
+        + "join ASYS_CALENDARBACKEND on ELEMENTUID = ENTRYID where FRAME = 'comp."
+        + pFrame + "' and ENTRYID is not null and ENTRYTYPE = " + calendars.VEVENT
+        + " and DBID = '" + pDBID + "' and DTSTART >= ?",
+        [ [ String(pFilter.datefrom - datetime.ONE_WEEK), SQLTYPES.DATE ]]], pAlias );
+
+    /*
+     * Check for rights before constructing condition otherwise you'll get an error by opening linked Data
+     */
+    var userToRead = []
+    if(pUser != undefined)
+    {
+        userToRead = getCalendarUsers( calendars.RIGHT_READ_APPOINTMENT, pUser );
+    }
+    else
+    {
+        userToRead = calendars.getDisplayCalendarUsers(calendars.RIGHT_READ_APPOINTMENT);
+    }
+    var userMap = {};
+    for (let i = 0; i < userToRead.length; i++)
+    {
+        userMap[userToRead[i][1]] = true;
+    }
+
+    for ( var i = 0;i < entryids.length; i++)
+    {
+        var user = getTitleCalenderUser(entryids[i][1]);
+        if(userMap[user])
+        {
+            for ( var z = 0; z < stati.length; z++ )
+                _addEntryCondition(conditions, String(++conditioncount),
+                {
+                    TYPE: calendars.VEVENT,
+                    START: pFilter.datefrom,
+                    END: pFilter.dateto,
+                    USER: user,
+                    STATUS: stati[z],
+                    UID: entryids[i][0]
+                });
+        } else continue
+    }
+    conditions["COUNT"] = String(conditioncount);
+
+    var entries = calendars.getExpandedEntries(conditions, pFilter.datefrom, pFilter.dateto);
+    for ( let i = 0; i < entries.length; i++)
+    {
+        for (var j = 0; j < entries[i].length; j++)
+        {
+            var entry = entries[i][j];
+            if( exists.indexOf(entry[calendars.ID]) == -1 && ( pFilter.category == "" || text.decodeMS(entry[calendars.CATEGORIES]).indexOf(pFilter.category) > 0))
+            {
+                var entr = new Array;
+                var start = getDate(entry[calendars.DTSTART]);
+                var end = getDate(entry[calendars.DTEND]);
+                user = tools.getUserByAttribute(tools.CALENDARID, entry[calendars.USER2]["paramvalue"].substr("mailto:".length))
+                if(user == null) user = entry[calendars.USER2]["cn"];
+                 else user = user[tools.TITLE]
+                entr[0] = text.encodeMS([entry[calendars.ID], user , entry[calendars.RECURRENCEID]]);
+                if (end < today) entr[1]	= "-6710887" ;
+                else if (start <= today && end >= today )   entr[1] = "-16744020" ;
+                else entr[1] = "-16777216";
+                entr[2] = "-1"
+                entr[3] = text.decodeMS(entry[calendars.AFFECTEDUSERS]).length;
+                entr[4] = entry[calendars.DTSTART]
+                entr[5] = entry[calendars.DTEND]
+                entr[6] = entry[calendars.SUMMARY]
+                entr[7] = getRealName([entry[calendars.ORGANIZER2]]);
+                entr[8] = getRealName(entry[calendars.ATTENDEES]);
+                entr[9] = entry[calendars.DESCRIPTION]
+                tab.push(entr);
+                exists.push(entry[calendars.ID]);
+            }
+        }
+    }
+    array_mDimSort(tab, 4, false);
+    return tab;
+}
+
+/*
+ * Liefert Aufgaben aus dem Kalender.
+ *
+ * @param {Object} pFilter req
+ * @param {String} pLanguage opt
+ * @param {bool} pShortForm opt wenn true wird nur die kurzversion geladen
+ *
+ * @return {[]} mit allen aufgaben aus dem Kalender
+ */
+function getTodos( pFilter, pLanguage, pShortForm )
+{
+    if ( pFilter == "" )    pFilter =  reset_filterToDo();
+    var tab = [];
+    var today = getDate (vars.getString("$sys.date"));
+    var conditions = [];
+    var conditioncount = 0;
+    var user = pFilter.user;
+    var stati = [];
+    var status = [];
+    var exists = [];
+    var entries = [];
+
+    if ( pFilter.needs_action == "true" )
+    {
+        stati.push(mapCalendarStatus(calendars.STATUS_NEEDSACTION, calendars.getBackendTypeTasks() ));
+        status.push("NEEDS-ACTION");
+    }
+    if ( pFilter.in_process == "true" )
+    {
+        stati.push(mapCalendarStatus(calendars.STATUS_INPROCESS, calendars.getBackendTypeTasks() ));
+        status.push("IN-PROCESS");
+    }
+    if ( pFilter.completed == "true" )
+    {
+        stati.push(mapCalendarStatus(calendars.STATUS_COMPLETED, calendars.getBackendTypeTasks() ));
+        status.push("COMPLETED");
+    }
+    if ( pFilter.cancelled == "true" )
+    {
+        stati.push(mapCalendarStatus(calendars.STATUS_CANCELLED, calendars.getBackendTypeTasks() ));
+        status.push("CANCELLED");
+    }
+    if (pFilter.delegated == "true" )
+    {
+        var from = [pFilter.datefrom, SQLTYPES.TIMESTAMP];
+        var to = [pFilter.dateto, SQLTYPES.TIMESTAMP];
+        setAllCalendarGrant();
+        user = calendars.getCalendarUser(user);
+        user = db.table(["select ELEMENTUID, OWNER from ASYS_CALENDARBACKEND where ENTRYTYPE = 2 and OWNER != '" + user + "' and ORGANIZER = '"
+            + user + "' and STATUS in ('" + status.join("', '") + "') and (( STARTTIME >= ? and STARTTIME <= ?) or "
+            + "( ENDTIME >= ? and ENDTIME <= ? ) or ( STARTTIME >= ? and ENDTIME <= ? ))", [from, to, from, to, from, to]] );
+
+        for (let i = 0; i < user.length; i++ )
+        {
+            try
+            {
+                entries.push([calendars.getEntry(user[i][0], null, getTitleCalenderUser(user[i][1]), calendars.VTODO)]);
+            }
+            catch(err){
+                logging.log(err);
+            }
+        }
+        setCalendarGrant();
+    }
+    else
+    {
+        if ( typeof( pFilter.user ) != "object" )  user = [user.trim()];
+        for (let i = 0; i < user.length; i++ )
+        for ( var z = 0; z < stati.length; z++ )
+            _addEntryCondition(conditions, ++conditioncount,
+            {
+                TYPE: calendars.VTODO,
+                START: pFilter.datefrom,
+                END: pFilter.dateto,
+                USER: user[i],
+                STATUS: stati[z]
+            });
+
+        conditions["COUNT"] = String(conditioncount);
+        entries = calendars.getEntries(conditions);
+    }
+
+    for (i = 0; i < entries.length; i++)
+    {
+        var entry = entries[i][0];
+        user = tools.getUserByAttribute(tools.CALENDARID, entry[calendars.USER2]["paramvalue"].substr("mailto:".length))
+        if (user == null)  user = entry[calendars.USER2]["cn"];
+         else user = user[tools.TITLE]
+        if ( !(user != vars.getString("$sys.user") && entry[calendars.CLASSIFICATION] == calendars.CLASSIFICATION_PRIVATE) // no privat
+            && !( pFilter.delegated == "true" && ( isAffectedUser( entry, pFilter.user) || exists.indexOf(entry[calendars.ID]) > -1  ) ) // no duplicate
+            && ( pFilter.category == "" || text.decodeMS(entry[calendars.CATEGORIES]).indexOf( pFilter.category ) > -1 ) ) // Filter category
+            {
+            var entr = [];
+            var links =  entry[calendars.LINKS];
+            var due = entry[calendars.DUE] != "" ? getDate(entry[calendars.DUE]) : "";
+            entr[0] = text.encodeMS([entry[calendars.ID], user]);
+            if (due == today )      entr[1] = "-16744020" ;
+            else if(due == "")      entr[1] = "-13395712";
+            else if (due > today )  entr[1] = "-16777216";
+            else                    entr[1]	= "-1769402";
+            if (entry[calendars.PRIORITY] == "1") entr[2] = "-100";
+            entr[3] = entry[calendars.ATTENDEES].length;
+            entr[4] = entry[calendars.DUE];
+
+            if (pShortForm)
+            {
+                entr[5] = entry[calendars.SUMMARY];
+                entr[6] = entry[calendars.DESCRIPTION];
+            }
+            else
+            {
+                entr[5] = getCalendarStatus( entry[calendars.STATUS], pLanguage, "ToDo");
+                entr[6] = getCalendarPriority( entry[calendars.PRIORITY], pLanguage);
+                entr[7] = entry[calendars.SUMMARY];
+                entr[8] = getRealName( [ entry[calendars.ORGANIZER2] ] );
+                entr[9] = getRealName( entry[calendars.ATTENDEES] );
+                if (links == undefined) entr[10] = "";	else entr[10] = links;
+                entr[11] = entry[calendars.DESCRIPTION];
+                entr[12] = entry[calendars.CREATED];
+            }
+
+            tab.push(entr);
+            if ( pFilter.delegated == "true" )  exists.push(entry[calendars.ID]);
+        }
+    }
+
+    if (pShortForm)
+        sortArray(tab, -1, 4, 1, 5);
+    else
+        sortArray(tab, -1, 4, 1, 12 );
+
+    return tab;
+}
+
+/*
+ * Fügt eine Condition hinzu
+ *
+ * @param {[]} pConditions req die Conditions
+ * @param {Integer} pIndex req Index der Condition
+ * @param {Object} pValues req
+ *
+ * @return {void}
+ */
+function _addEntryCondition(pConditions, pIndex, pValues)
+{
+    var params = ["TYPE", "START", "END", "USER", "STATUS", "UID"];
+
+    for (var i = 0; i < params.length; i++)
+        if (pValues[params[i]] != undefined)    pConditions[params[i] + "_" + pIndex] = pValues[params[i]];
+}
+
+/*
+ * Liefert Events zu bestimmten Usern/Daten in einem Array.
+ *
+ * @param {Object} pFilter req
+ * @param {String} pLanguage opt
+ * @param {bool} pShortForm opt wenn true wird nur die kurzversion geladen
+ *
+ * @return {[]}
+ *				[0] ID
+ *				[1] Vordergrundfarbe
+ *				[2] Hintergrundfarbe
+ *				[3] Start
+ *				[4] Ende
+ *				[5] Betreff
+ *				[6] Inhalt
+ *				[7] User
+ *				[8] Anzahl Verknüpfungen
+ *				[9] Klassifikation (privat/öffentlich)
+ */
+function getEvents( pFilter, pLanguage, pShortForm )
+{
+    if ( pFilter == "" )  pFilter = reset_filterEvent();
+    var tab = [];
+    var conditions = [];
+    var today = getDate(vars.getString("$sys.date"));
+    var conditioncount = 0;
+    var stati = [];
+    var user = undefined;
+    if ( pFilter.tentative == "true" )    stati.push(calendars.STATUS_TENTATIVE);
+    if ( pFilter.cancelled == "true" )    stati.push(calendars.STATUS_CANCELLED);
+    if ( pFilter.confirmed == "true" )
+        stati.push(mapCalendarStatus(calendars.STATUS_CONFIRMED, calendars.getBackendType() ));
+
+    if (getCalendarSystemType(calendars.VEVENT) == calendars.BACKEND_EXCHANGEWS && pFilter.free == "true")
+        stati.push(calendars.STATUS_FREE);
+
+    if ( pFilter.user != "" )	user = (pFilter.user).trim();
+
+    for ( var z = 0; z < stati.length; z++ )
+        _addEntryCondition(conditions, String(++conditioncount),
+        {
+            TYPE: calendars.VEVENT,
+            START: pFilter.datefrom,
+            END: pFilter.dateto,
+            USER: user,
+            STATUS: stati[z]
+        });
+
+    conditions["COUNT"] = String(conditioncount);
+
+    var entries = calendars.getExpandedEntries(conditions, pFilter.datefrom, pFilter.dateto);
+    for ( var i = 0;i < entries.length; i++)
+    {
+        for (var j = 0; j < entries[i].length; j++)
+        {
+            var entry = entries[i][j];
+            if( pFilter.category == "" || text.decodeMS(entry[calendars.CATEGORIES]).indexOf(pFilter.category) > -1 )
+            {
+                var entr = new Array;
+                var start = getDate(entry[calendars.DTSTART]);
+                var end = getDate(entry[calendars.DTEND]);
+
+                user = tools.getUserByAttribute(tools.CALENDARID, entry[calendars.USER2]["paramvalue"].substr("mailto:".length))
+                if(user == null) user = entry[calendars.USER2]["cn"];
+                else user = user[tools.TITLE]
+                entr[0] = text.encodeMS([ entry[calendars.ID], user, entry[calendars.RECURRENCEID]]);
+                if (end < today ) entr[1]	="-6710887" ;
+                else if (start > today) entr[1]	= "-16777216";
+                else entr[1]	= "-16744020" ;
+                entr[2] = "-1"
+                entr[3] = entry[calendars.ATTENDEES].length;
+                entr[4] = entry[calendars.DTSTART];
+                entr[5] = entry[calendars.DTEND];
+                entr[6] = entry[calendars.SUMMARY];
+
+                if (!pShortForm)
+                {
+                    entr[7] = getRealName([entry[calendars.ORGANIZER2]]);
+                    entr[8] = getRealName(entry[calendars.ATTENDEES]);
+                    entr[9] = getCalendarStatus( entry[calendars.STATUS], pLanguage );
+                    if (entry[calendars.LINKS] == undefined) entr[10] = "";
+                    else entr[10] = entry[calendars.LINKS];
+                    entr[11] = entry[calendars.DESCRIPTION];
+                }
+                tab.push( entr );
+            }
+        }
+    }
+    sortArray(tab, -1, 4, 1, 6 );
+    return tab;
+}
+
+/*
+ * Liefert den echten Namen anhand des Logins zurück
+ *
+ * @param {Array}[]} pUserMap req pUserMap
+ *
+ * @return String
+ */
+function getRealName(pUserMap)
+{
+    var resultName = [];
+    var RealNames = getRealNameObject(pUserMap);
+
+    for ( var realname in RealNames )   resultName.push(RealNames[realname]);
+    return resultName.join(", \n");
+}
+
+/*
+ * Liefert den echten Namen anhand des Logins zurück
+ *
+ * @param {Array}[]} pUserMap req pUserMap
+ *
+ * @return Object
+ */
+function getRealNameObject(pUserMap)
+{
+    var resultObject = {};
+    var realname = "";
+
+    for ( let i = 0; i < pUserMap.length; i++ )
+    {
+        let user = tools.getUserByAttribute(tools.CALENDARID, [pUserMap[i]["paramvalue"].substr("mailto:".length)])
+        if ( user != null )
+        {
+            if(vars.exists("$global.firstLastName") && vars.get("$global.firstLastName"))
+                realname = user[tools.PARAMS][tools.LASTNAME] + " " + user[tools.PARAMS][tools.FIRSTNAME];
+            else realname = user[tools.PARAMS][tools.FIRSTNAME] + " " + user[tools.PARAMS][tools.LASTNAME];
+        }
+        else //Der User existiert nicht im System
+        {
+            realname = pUserMap[i]["cn"] + " " + pUserMap[i]["paramvalue"];
+        }
+        resultObject[pUserMap[i]["cn"]] = realname;
+    }
+    return resultObject;
+}
+
+
+/*
+ * Gibt an ob der User im Calendarobject vorhanden ist
+ *
+ * @param {Object} pEntry req Calendarobject
+ * @param {String} pUser req Title
+ *
+ * @return Object
+ */
+function isAffectedUser( pEntry, pUser)
+{
+    var usermap = pEntry[calendars.ATTENDEES];
+
+    for ( var i = 0; i < usermap.length; i++ )
+        if( usermap[i]["cn"] == pUser )
+            return true;
+    return false;
+}
+
+/*
+ * Liefert das Datum ohne Urzeit zurück
+ *
+ * @param {String} datetimeIn req DatumZeit
+ *
+ * @return {date}
+ */
+function getDate( datetimeIn )
+{
+    if ( datetimeIn != "")
+        return datetime.clearTime(datetimeIn);
+    else return "";
+}
+
+/*
+ * Setzt den Aufgaben-Filter
+ *
+ * @param {Object} pFilter req
+ *
+ * @return {image}
+ */
+function filterToDo( pFilter )
+{
+    var error = true;
+    var von = pFilter.datefrom;
+    var bis = pFilter.dateto;
+    if ( pFilter == "" )	pFilter =  reset_filterToDo();
+    do
+    {
+        vars.set("$local.relation_id", pFilter.user);
+        vars.set("$local.edt_von", pFilter.datefrom);
+        vars.set("$local.edt_bis", pFilter.dateto);
+        vars.set("$local.category", pFilter.category);
+        vars.set("$local.delegated", pFilter.delegated);
+        vars.set("$local.needs_action", pFilter.needs_action);
+        vars.set("$local.in_process", pFilter.in_process);
+        vars.set("$local.completed", pFilter.completed);
+        vars.set("$local.cancelled", pFilter.cancelled);
+        var res = swing.askUserQuestion(translate.text("Bitte Filterbedingungen setzen"), "DLG_TASK_FILTER");
+        if( res != null )
+        {
+            pFilter.user =      res["DLG_TASK_FILTER.relation_id"];
+            pFilter.datefrom =  res["DLG_TASK_FILTER.edt_von"];
+            pFilter.dateto =    res["DLG_TASK_FILTER.edt_bis"];
+            pFilter.category =  res["DLG_TASK_FILTER.category"];
+            pFilter.delegated = res["DLG_TASK_FILTER.delegated"];
+            pFilter.needs_action = res["DLG_TASK_FILTER.needs_action"];
+            pFilter.in_process = res["DLG_TASK_FILTER.in_process"];
+            pFilter.completed = res["DLG_TASK_FILTER.completed"];
+            pFilter.cancelled = res["DLG_TASK_FILTER.cancelled"];
+            if (pFilter.datefrom != "" && pFilter.dateto != "" && pFilter.dateto >= pFilter.datefrom ) error = false;
+            else question.showMessage(translate.text("Bitte Datumseingabe prüfen!"))
+        }
+        else
+        {
+            pFilter.datefrom = von;
+            pFilter.dateto = bis;
+            error = false;
+        }
+    }
+    while ( error )
+    return pFilter;
+}
+
+/*
+ * Setzt den Aufgaben-Filter
+ *
+ * @param {Object} pFilter req
+ *
+ * @return {image}
+ */
+function filterToDo_Neon( pFilter )
+{
+    var error = true;
+    var von = pFilter.datefrom;
+    var bis = pFilter.dateto;
+    if ( pFilter == "" )	pFilter =  reset_filterToDo();
+    do
+    {
+        var prompts = {
+            FILTER_TEXT: translate.text("Bitte Filterbedingungen setzen"),
+            RESPONSIBLE: pFilter.user,
+            DATE_FROM: pFilter.datefrom,
+            DATE_TO: pFilter.dateto,
+            CATEGORY_TODO: pFilter.category,
+            DELEGATED: pFilter.delegated,
+            NEEDS_ACTION: pFilter.needs_action,
+            IN_PROCESS: pFilter.in_process,
+            COMPLETED: pFilter.completed,
+            CANCELLED: pFilter.cancelled
+        }
+
+        var buttons = {
+            "ok" : translate.text("OK"),
+            "": translate.text("Abbrechen")
+            };
+        var defaultButton = "ok";
+
+        var res = question.openDialog("DLG_FILTER_TODO_Neon", prompts, buttons, defaultButton);
+
+        if( res.button != null )
+        {
+            pFilter.user =      res.RESPONSIBLE;
+            pFilter.datefrom =  res.DATE_FROM;
+            pFilter.dateto =    res.DATE_TO;
+            pFilter.category =  res.CATEGORY_TODO;
+            pFilter.delegated = res.DELEGATED;
+            pFilter.needs_action = res.NEEDS_ACTION;
+            pFilter.in_process = res.IN_PROCESS;
+            pFilter.completed = res.COMPLETED;
+            pFilter.cancelled = res.CANCELLED;
+            if (pFilter.datefrom != "" && pFilter.dateto != "" && pFilter.dateto >= pFilter.datefrom ) error = false;
+            else question.showMessage(translate.text("Bitte Datumseingabe prüfen!"))
+        }
+        else
+        {
+            pFilter.datefrom = von;
+            pFilter.dateto = bis;
+            error = false;
+        }
+    }
+    while ( error )
+    return pFilter;
+}
+
+
+/*
+ * Anzeige des Aufgaben-Filter
+ *
+ * @param {Object} pFilter req
+ *
+ * @return string Anzeige
+ */
+function show_filterToDo(pFilter)
+{
+    var retstring = "";
+    var userp = tools.getUser( pFilter.user )[tools.PARAMS];
+    if (pFilter.user != "") retstring = (translate.text("Aufgaben von") + " " + userp[tools.FIRSTNAME] + " " + userp[tools.LASTNAME]);
+    if (pFilter.datefrom != "") retstring += ", " + datetime.toDate(pFilter.datefrom, translate.text("dd.MM.yyyy"));
+    if (pFilter.dateto != "") retstring += " - " + datetime.toDate(pFilter.dateto, translate.text("dd.MM.yyyy"));
+    if (pFilter.category != "") retstring += ", " + translate.text("Kategorie") + " " + pFilter.category;
+    if (pFilter.delegated == "true") retstring += ", " + translate.text("delegiert");
+    if (pFilter.needs_action == "true") retstring += ", " + translate.text("Nicht begonnen");
+    if (pFilter.in_process == "true") retstring += ", " + translate.text("In Bearbeitung");
+    if (pFilter.completed == "true") retstring += ", " + translate.text("Erledigt");
+    if (pFilter.cancelled == "true") retstring += ", " + translate.text("Zurückgestellt");
+
+    return retstring
+}
+
+/*
+ * Setzt den Aufgaben-Filter zurück
+ *
+ * @return {filter}
+ */
+function reset_filterToDo()
+{
+    var today = getDate (vars.getString("$sys.date"));
+
+    return pFilter =  {
+        user: vars.getString("$sys.user"),
+        datefrom: String(eMath.subInt(today, 720 * datetime.ONE_DAY)),
+        dateto: String(eMath.addInt(eMath.addInt(today, 3 * datetime.ONE_DAY)
+            ,datetime.ONE_DAY - datetime.ONE_MINUTE)),
+        category: "",
+        delegated: "",
+        needs_action: "true",
+        in_process: "true",
+        completed: "",
+        cancelled: ""
+    };
+}
+
+/*
+ * Setzt den Event-Filter
+ *
+ * @param {Object} pFilter req
+ *
+ * @return {image}
+ */
+function filterEvent( pFilter )
+{
+    var error = true;
+    var von = pFilter.datefrom;
+    var bis = pFilter.dateto;
+    if ( pFilter == "" )	pFilter =  reset_filterEvent();
+    do
+    {
+        vars.set("$local.relation_id", pFilter.user);
+        vars.set("$local.edt_von", pFilter.datefrom);
+        vars.set("$local.edt_bis", pFilter.dateto);
+        vars.set("$local.category", pFilter.category);
+        vars.set("$local.tentative", pFilter.tentative);
+        vars.set("$local.confirmed", pFilter.confirmed);
+        vars.set("$local.cancelled", pFilter.cancelled);
+        vars.set("$local.free", pFilter.free);
+        var res = swing.askUserQuestion(translate.text("Bitte Filterbedingungen setzen"), "DLG_EVENT_FILTER");
+        if( res != null )
+        {
+            pFilter.user =      res["DLG_EVENT_FILTER.relation_id"];
+            pFilter.datefrom =  res["DLG_EVENT_FILTER.edt_von"];
+            pFilter.dateto =    res["DLG_EVENT_FILTER.edt_bis"];
+            pFilter.category =  res["DLG_EVENT_FILTER.category"];
+            pFilter.tentative = res["DLG_EVENT_FILTER.tentative"];
+            pFilter.confirmed = res["DLG_EVENT_FILTER.confirmed"];
+            pFilter.cancelled = res["DLG_EVENT_FILTER.cancelled"];
+            pFilter.free      = res["DLG_EVENT_FILTER.free"];
+            if (pFilter.datefrom != "" && pFilter.dateto != "" && pFilter.dateto >= pFilter.datefrom ) error = false;
+            else question.showMessage(translate.text("Bitte Datumseingabe prüfen!"))
+        }
+        else
+        {
+            pFilter.datefrom = von;
+            pFilter.dateto = bis;
+            error = false;
+        }
+    }
+    while ( error )
+    return pFilter;
+}
+
+/*
+ * Setzt den Event-Filter
+ *
+ * @param {Object} pFilter req
+ *
+ * @return {image}
+ */
+function filterEvent_Neon( pFilter )
+{
+    var error = true;
+    var von = pFilter.datefrom;
+    var bis = pFilter.dateto;
+    if ( pFilter == "" )	pFilter =  reset_filterEvent();
+    do
+    {
+        var buttons = {
+            "ok" : translate.text("OK"),
+            "": translate.text("Abbrechen")
+        };
+        var defaultButton = "ok";
+
+        var prompts = {
+            FILTER_TEXT: translate.text("Bitte Filterbedingungen setzen"),
+            RESPONSIBLE_APPOINTMENT: pFilter.user,
+            DATE_FROM: pFilter.datefrom,
+            DATE_TO: pFilter.dateto,
+            CATEGORY_APPOINTMENT: pFilter.category,
+            TENTATIVE: pFilter.tentative,
+            CONFIRMED: pFilter.confirmed,
+            CANCELLED: pFilter.cancelled
+        }
+        var res = question.openDialog("DLG_FILTER_APPOINTMENT_Neon", prompts, buttons, defaultButton);
+        if( res.button != null )
+        {
+            pFilter.user =      res.RESPONSIBLE_APPOINTMENT;
+            pFilter.datefrom =  res.DATE_FROM;
+            pFilter.dateto =    res.DATE_TO;
+            pFilter.category =  res.CATEGORY_APPOINTMENT;
+            pFilter.tentative = res.TENTATIVE;
+            pFilter.confirmed = res.CONFIRMED;
+            pFilter.cancelled = res.CANCELLED;
+            if (pFilter.datefrom != "" && pFilter.dateto != "" && pFilter.dateto >= pFilter.datefrom ) error = false;
+            else question.showMessage(translate.text("Bitte Datumseingabe prüfen!"))
+        }
+        else
+        {
+            pFilter.datefrom = von;
+            pFilter.dateto = bis;
+            error = false;
+        }
+    }
+    while ( error )
+    return pFilter;
+}
+
+/*
+ * Anzeige des Event-Filter
+ *
+ * @param {Object} pFilter req
+ *
+ * @return string Anzeige
+ */
+function show_filterEvent(pFilter)
+{
+    var retstring = "";
+
+    var userp = tools.getUser( pFilter.user )[tools.PARAMS];
+    if (pFilter.user != "") retstring = translate.text("Termine von") + " " + userp[tools.FIRSTNAME] + " " + userp[tools.LASTNAME];
+    if (pFilter.datefrom != "") retstring += ", " + datetime.toDate(pFilter.datefrom, translate.text("dd.MM.yyyy"));
+    if (pFilter.dateto != "") retstring += " - " + datetime.toDate(pFilter.dateto, translate.text("dd.MM.yyyy"));
+    if (pFilter.category == "true") retstring += ", " + translate.text("Kategorie") + " " + pFilter.category;
+    if (pFilter.tentative == "true") retstring += ", " + translate.text("Vorläufig");
+    if (pFilter.confirmed == "true") retstring += ", " + translate.text("Bestätigt");
+    if (pFilter.cancelled == "true") retstring += ", " + translate.text("Abgesagt");
+
+    return retstring
+}
+
+/*
+ * Setzt den Event-Filter zurück
+ *
+ * @return {filter}
+ */
+function reset_filterEvent()
+{
+    var today = getDate (vars.getString("$sys.date"));
+
+    return pFilter =  {
+        user: vars.getString("$sys.user"),
+        datefrom: String(today), //nur die Termine ab heute anzeigen,
+        //die von vor einer Woche sind uninteressant
+        dateto: String(eMath.addInt(eMath.addInt(today, datetime.ONE_WEEK)
+            ,datetime.ONE_DAY - datetime.ONE_MINUTE)),
+        category: "",
+        tentative: "true",
+        confirmed: "true",
+        cancelled: "",
+        free: "true"
+    };
+}
+
+/*
+ * Setzt den Aufgaben-Filter in Tab Aufgaben
+ *
+ * @return {image}
+ */
+function filterLinkedToDo()
+{
+    var filtervalues = ["", "false"];
+    vars.set("$local.CalenderUser", getCalenderUser( calendars.RIGHT_READ_TASK ));
+
+    //Vorbelegen der Werte, wenn bereits gewählt wurde:
+    if(vars.exists("$image.FilterValuesT"))
+    {
+        filtervalues = vars.get("$image.FilterValuesT");
+        vars.set("$local.relation_id", filtervalues[0]);
+        vars.set("$local.done", filtervalues[1]);
+    }
+
+    var res = swing.askUserQuestion(translate.text("Bitte Filterbedingungen setzen"), "DLG_TASK_DATE_LINKED_FILTER");
+
+    if( res != null && res != undefined && res != "")
+    {
+        filtervalues[0] = res["DLG_TASK_DATE_LINKED_FILTER.relation_id"];
+        filtervalues[1] = res["DLG_TASK_DATE_LINKED_FILTER.done"]
+    }
+    vars.set("$image.FilterValuesT", filtervalues );
+
+    return(filtervalues);
+}
+
+/*
+ * Setzt den Aufgabe-Filter zurück
+ *
+ * @return {image}
+ */
+function resetfilterLinkedToDo()
+{
+    var filtervalues = ["", "false"];
+
+    vars.set("$image.FilterValuesT", filtervalues );
+
+}
+
+/*
+ * setzt die Kalenderrechte
+ *
+ * @return {void}
+ */
+function setCalendarGrant()
+{
+    calendars.resetCalendarUser();
+    var user_read_todo = [];
+    var user_write_todo = [];   // ["Admin"]
+    var user_read_event = [];
+    var user_write_event = [];
+    var tree = {};
+    var data = db.table("select THEMEID, THEME.THEME_ID, LOGIN, STATUS from THEME "
+        + " left join EMPLOYEE on EMPLOYEE.THEME_ID = THEMEID left join RELATION on RELATION_ID = RELATIONID and STATUS = 1"
+        +" where KIND = 2");
+    for ( let i = 0; i < data.length; i++)
+    {
+        if ( tree[data[i][0]] == undefined )    tree[data[i][0]] = {
+            pid: data[i][1],
+            isuser: false
+        };
+        if ( data[i][2] != "" && data[i][3] != "" )     tree[data[i][2]] = {
+            pid: data[i][0],
+            isuser: true
+        };
+    }
+
+    var user = vars.getString("$sys.user");
+    // Lese- und Schreibrechte auf Kalender aus Datentabelle holen
+    data = db.table("select HASRIGHTFOR, TODO_RIGHTS, EVENT_RIGHTS from AOSYS_CALENDAR_RIGHTS where LOGIN = '" + user + "'");
+    for ( var i = 0; i < data.length; i++ )
+        if(tree[data[i][0]] != undefined)
+            tree[data[i][0]].grants = data[i].slice(1);
+
+    for ( login in tree )
+    {
+        if( tree[login].isuser )
+        {
+            var grantstodo = __getGrants( login, 0 );
+            var grantsevent = __getGrants( login, 1 );
+            if ( grantstodo.length + grantsevent.length > 0 )
+            {
+                if ( grantstodo == "1" || grantstodo == "3")  user_read_todo.push(login);
+                if ( grantstodo == "2" || grantstodo == "3")  user_write_todo.push(login);
+                if ( grantsevent == "1" || grantsevent == "3")  user_read_event.push(login);
+                if ( grantsevent == "2" || grantsevent == "3")  user_write_event.push(login);
+            }
+        }
+    }
+    calendars.setCalendarUser(user_read_todo, calendars.RIGHT_READ_TASK, true, calendars.SORTSTRATEGY_NATURAL );
+    calendars.setCalendarUser(user_write_todo, calendars.RIGHT_WRITE_TASK, true, calendars.SORTSTRATEGY_NATURAL );
+    calendars.setCalendarUser(user_read_event, calendars.RIGHT_READ_APPOINTMENT, true, calendars.SORTSTRATEGY_NATURAL );
+    calendars.setCalendarUser(user_write_event, calendars.RIGHT_WRITE_APPOINTMENT, true, calendars.SORTSTRATEGY_NATURAL );
+
+    //********** Ressourcen in Kalender einfügen ************
+    var ressource = tools.getUsersWithRole("PROJECT_Ressource");
+    calendars.setCalendarUser(  ressource, calendars.RIGHT_READ_APPOINTMENT | calendars.RIGHT_WRITE_APPOINTMENT  );
+
+    //add all users from support-role since support-action-tasks (sp_supportAktionen) generates tasks for all support-role members
+    //and if you're a member you are allowed to edit these
+    if (tools.hasRole(user, "PROJECT_Support"))
+    {
+        var support = tools.getUsersWithRole("PROJECT_Support");
+        calendars.setCalendarUser(  support, calendars.RIGHT_WRITE_TASK | calendars.RIGHT_READ_TASK  );
+    }
+
+    function __getGrants( pKey, pIndex )
+    {
+        var grants = [];
+        if ( tree[pKey].grants != undefined && tree[pKey].grants[pIndex]) grants = tree[pKey].grants[pIndex];
+        else if ( tree[pKey].pid != "" )   grants = __getGrants( tree[pKey].pid, pIndex );
+        return grants;
+    }
+}
+
+/*
+ * setzt Recht für alle Kalender
+ *
+ * @return {void}
+ */
+function setAllCalendarGrant()
+{
+    calendars.resetCalendarUser();
+    var users = tools.getStoredUsers();
+    var calendar_user = [];
+    for ( var i = 0; i < users.length; i++ )    calendar_user.push( users[i][1] );
+    calendars.setCalendarUser(calendar_user, calendars.RIGHT_READ_TASK | calendars.RIGHT_WRITE_TASK, false, calendars.SORTSTRATEGY_NATURAL );
+}
+
+/*
+ * gibt die Logins der user, die den übergebenen User als Attribute eingetragen haben, zurück
+ *
+ * @param {[]} pUsers req Logins
+ * @param {String []} pAttrName req AttributeName für Employee
+ * @param {String []} pFields opt
+ *
+ * @return {String []} Logins
+ */
+function getUsersbyAttr( pUsers, pAttrName, pFields )
+{
+    if (typeof(pAttrName) == "string") pAttrName = [pAttrName]
+
+    if ( pFields == undefined )
+    {
+        pFields = ["LOGIN"];
+    }
+
+    var sqlstr = "select " + pFields.join(", ") + " from ATTRLINK join ATTR on ATTRLINK.ATTR_ID = ATTRID and OBJECT_ID = 12 "
+    + "and ATTRNAME in ('" + pAttrName.join("','") + "') "
+    + " join EMPLOYEE on EMPLOYEEID = ATTRLINK.ROW_ID join RELATION on RELATION_ID = RELATIONID join PERS on PERS_ID = PERSID"
+    + " where VALUE_ID in (select EMPLOYEEID from EMPLOYEE where LOGIN in ('" + pUsers.join("','") + "'))"
+    + "";
+
+    if(pFields.length == 1)
+        return db.array(db.COLUMN, sqlstr);
+    else
+        return db.table(sqlstr);
+}
+
+/*
+ * Gibt die Anzahl der verknüpften Aufgaben und Termine zurück.
+ *
+ * @param {String} pID req
+ * @param {String} pFrame req
+ *
+ * @return {String} text
+ */
+function countLinkedTodoEvent(pID, pFrame)
+{
+    var today = getDate (vars.getString("$sys.date"));
+    var datefrom = String(today);
+    var dateto = String(eMath.addInt(today, datetime.ONE_WEEK));
+
+    var str = "select count(distinct ELEMENTUID) from ASYS_CALENDARLINK join ASYS_CALENDARBACKEND on ELEMENTUID = ASYS_CALENDARLINK.ENTRYID "
+    + " where FRAME = 'comp." + pFrame + "' and ELEMENTUID is not null and DBID = '" + pID + "'";
+    var rettask = db.cell(str + "and ENTRYTYPE = " + calendars.VTODO + " and STATUS in ('"
+        + mapCalendarStatus(calendars.STATUS_NEEDSACTION, calendars.getBackendTypeTasks() ) + "', '"
+        + mapCalendarStatus(calendars.STATUS_INPROCESS, calendars.getBackendTypeTasks() ) + "')");
+
+    var eventStatusList = [
+         mapCalendarStatus(calendars.STATUS_CONFIRMED, calendars.getBackendType() )
+        ,mapCalendarStatus(calendars.STATUS_TENTATIVE, calendars.getBackendType() )
+    ];
+
+    if (calendars.getBackendType() == calendars.BACKEND_EXCHANGEWS)
+        eventStatusList.push(calendars.STATUS_FREE);
+
+    var retevent = db.cell([str + " and ENTRYTYPE = " + calendars.VEVENT + " and STATUS in ('" + eventStatusList.join("', '") + "')"
+            + " and DTSTART >= ? and DTEND <= ?",
+        [ [ String(datefrom), SQLTYPES.DATE ],  [String(dateto), SQLTYPES.DATE ] ]]);
+
+    result.string(translate.withArguments("&Aufg / Term (%0/%1)", [rettask, retevent]));
+}
+
+/*
+ * Gibt die Anzahl der verknüpften Aufgaben zurück.
+ *
+ * @param {String} pID req
+ * @param {String} pFrame req
+ *
+ * @return {String} text
+ */
+function countLinkedTodo(pID, pFrame)
+{
+    var str = "select count(distinct ELEMENTUID) "
+    + "from ASYS_CALENDARLINK "
+    + "join ASYS_CALENDARBACKEND on ELEMENTUID = ASYS_CALENDARLINK.ENTRYID "
+    + " where FRAME = 'comp." + pFrame + "' "
+    + "and ELEMENTUID is not null and DBID = '" + pID + "'";
+
+    var rettask = db.cell(str + "and ENTRYTYPE = " + calendars.VTODO
+        + " and  STATUS in ('"
+        + mapCalendarStatus(calendars.STATUS_NEEDSACTION, calendars.getBackendTypeTasks() ) + "', '"
+        + mapCalendarStatus(calendars.STATUS_INPROCESS, calendars.getBackendTypeTasks() ) + "')"
+        + "");
+
+    result.string(translate.withArguments("&Aufgaben (%0)", [rettask]));
+}
+
+/*
+ * Gibt die Überschneidungen von Termine zurück.
+ *
+ * @param {Date} pStart req
+ * @param {Date} pEnd req
+ * @param {Array} pUsers req
+ *
+ * @return {String Array} Termine
+ */
+function getOverlappingEvents(pStart, pEnd, pUsers  )
+{
+    var resultEvents = new Array();
+    var users = pUsers;
+    if (calendars.getBackendType() == calendars.BACKEND_DB && pStart != "" && pEnd != "" && users.length > 0)
+    {
+        calendars.clearCache();
+        for (var u = 0; u < users.length; u++)
+        {
+            var localuid = vars.get("$image.entry")[calendars.ID]
+            var condition = new Array();
+            condition["COUNT"] = "1";
+            condition["TYPE_1"] = calendars.VFREEBUSY;
+            condition["USER_1"] = users[u][0];
+            condition["START_1"] = pStart;
+            condition["END_1"] = pEnd;
+
+            var fbsall = calendars.getEntries(condition);
+            for (var j = 0; j < fbsall.length; j++)
+            {
+                var fbs = fbsall[j];
+                for (var i = 0; i < fbs.length; i++)
+                {
+                    var next = fbs[i];
+                    var uid = next[calendars.ID];
+                    var sum = next[calendars.SUMMARY];
+                    if (uid != localuid)
+                    {
+                        var freebusy = next[calendars.FREEBUSY];
+                        var freebusyDec = text.decodeMS(freebusy);
+                        var match = false;
+                        for (var k = 0; k < freebusyDec.length; k++)
+                        {
+                            var freebusyInstance = text.decodeMS(freebusyDec[k]);
+                            if (!freebusyInstance[0].equals("FREE"))
+                            {
+                                match = true;
+                            }
+                        }
+                        if (match)  resultEvents.push([users[u][2], sum != null && sum.length > 0 ? sum : "?", uid]);
+                    }
+                }
+            }
+        }
+    }
+    return resultEvents;
+}
+
+/*
+ * Überprüft den Eintrag, wenn eine neue Aufgaben angelegt wird darauf, ob private Aufgaben für andere erstellt werden
+ *
+ * @param {String[]} pUser die Liste der User, denen die Aufgabe zugewiesen werden soll
+ * @param {String} pClassification die Klassifizierung der Aufgabe - "PRIVATE"
+ *
+ * @return {Boolean} ob der Eintrag in der Konstellation möglich ist, wenn nicht wird eine Meldung ausgegeben
+ */
+function checkEntry(pUser, pClassification )
+{
+    if( pClassification == "PRIVATE" &&
+        ( pUser.length > 1 || text.decodeMS(pUser[0][0])[1] != "CN:" + vars.getString("$sys.user")))
+        {
+        question.showMessage(translate.text("Eine private Aufgabe kann nicht jemand anderem zugewiesen werden."));
+        return false;
+    }
+    else
+    {
+        return true;
+    }
+}
+
+/*
+ * Verschiebt ein Calendareintrag
+ *
+ * @param {String[]} pIDs req die zu verschiebenden Ids mit den Calenderinformationen (Multistring)
+ * @param {String} pTblCompName  opt die Komponente die aktualisiert werden soll
+ *
+ * @return {void}
+ */
+function shiftEntry(pIDs, pTblCompName)
+{
+    var datenew = swing.askUserQuestion(translate.text("Verschieben auf Datum?"), "DLG_DATE");
+    if (datenew != null )
+    {
+        var grantedUsers = calendars.getDisplayCalendarUsers(calendars.RIGHT_WRITE_TASK);
+        var usermap = {};
+        var granted = true;
+        for (let i = 0; i < grantedUsers.length; i++)
+        {
+            usermap[grantedUsers[i][1]] = true;
+        }
+
+        datenew = datetime.clearTime(datenew["DLG_DATE.Edit_date"]);
+        if (datenew <= vars.getString("$sys.today"))
+            question.showMessage(translate.text("nur Verschiebung in die Zukunft erlaubt!"));
+        else
+        {
+            for (var i = 0, j = pIDs.length; i < j; i++)
+            {
+                var id = text.decodeMS(pIDs[i]);
+                var entry = calendars.getEntry(id[0], null, id [1], calendars.VTODO);
+                var affectedUsers = entry[calendars.ATTENDEES];
+
+                granted =  hasGrantForEntryByObject(affectedUsers, usermap);
+                if(granted)
+                {
+                    //Zeitdifferenz von Aufgabenstart und -ende
+                    var dateDiff  = eMath.subInt(entry[calendars.DUE], entry[calendars.DTSTART]);
+
+                    //Startzeit der Aufgabe
+                    var startTime = eMath.subInt(entry[calendars.DTSTART]
+                        , datetime.clearTime(entry[calendars.DTSTART]));
+
+                    entry[calendars.DTSTART] = eMath.addInt(datenew, startTime);
+                    entry[calendars.DUE] = eMath.addInt(entry[calendars.DTSTART], dateDiff);
+                    calendars.update( [ entry ] );
+                }
+                else
+                    question.showMessage(translate.text("Keine Berechtigung zum Verschieben der Aufgabe"));
+            }
+        }
+    }
+}
+
+/*
+ * Gibt eine Aufgabe weiter
+ *
+ * @param {String} pIDs die ID der Aufgabe, welche weitergegeben werden soll
+ * @param {String} pTblCompName die Komponente der Aufgaben, die aktualisiert werden soll
+ *
+ * @return {void}
+ */
+function handOverToDo(pIDs, pTblCompName)
+{
+    var calendar_user = "";
+    var users = getCalenderUser( calendars.RIGHT_WRITE_TASK );
+    var publicCount = 0;
+    var privateCount = 0;
+    var notGrantedCount = 0;
+
+    var grantedUsers = calendars.getDisplayCalendarUsers(calendars.RIGHT_WRITE_TASK);
+    var userMap = {};
+    var granted = true;
+    for (let i = 0; i < grantedUsers.length; i++)
+    {
+        userMap[grantedUsers[i][1]] = true;
+    }
+
+    if (pIDs.length == 1)  // only one todo and private
+    {
+        var id = text.decodeMS( pIDs[0] );
+        var entry = calendars.getEntry( id[0], null, id[1] );
+        if(entry[calendars.CLASSIFICATION] == calendars.CLASSIFICATION_PRIVATE)
+        {
+            question.showMessage(translate.text("Kein Weitergeben von privaten Aufgaben möglich!"));
+            return;
+        }
+    }
+
+    for ( let i = 0; i < users.length; i++)  if (pIDs.length > 0 || users[i][0] != id[1])   calendar_user += "|" + users[i][1];
+    var selection = swing.askQuestion(translate.text("Benutzer auswählen"), swing.QUESTION_COMBOBOX, calendar_user);
+    if (selection != null)
+    {
+        for ( let i = 0; i < users.length; i++)
+        {
+            if ( selection == users[i][1] )
+            {
+                selection = users[i];
+                break;
+            }
+        }
+        for( let i = 0; i < pIDs.length; i++)
+        {
+            let id = text.decodeMS( pIDs[i] );
+            let entry = calendars.getEntry( id[0], null, id[1] );
+            if(entry[calendars.CLASSIFICATION] == calendars.CLASSIFICATION_PRIVATE)  privateCount++;
+            else //Nur öffentliche Aufgabe kann weiter gegeben werden.
+            {
+                // User austauschen
+                var usermap = entry[calendars.ATTENDEES];
+                var affectedusers = [];
+
+                granted =  hasGrantForEntryByObject(usermap, userMap);
+
+                for (var ui = 0; ui < usermap.length; ui++)
+                {
+                    var login_cn = usermap[ui]["cn"];
+                    var user = tools.getUserByAttribute(tools.CALENDARID, usermap[ui]["paramvalue"].substr("mailto:".length))
+                    if (user == null)  user = login_cn;
+                    else user = user[tools.TITLE]
+
+                    if ( user == id[1] )   affectedusers.push(selection[0]);
+                    else  if ( user != selection[0] )  affectedusers.push(user);
+                }
+                if(granted)
+                {
+                    entry[calendars.AFFECTEDUSERS] = text.encodeMS(calendars.getCalendarUsers(affectedusers));
+                    calendars.update([entry]);
+                    publicCount++;
+                }
+                else notGrantedCount++
+            }
+        }
+        question.showMessage(translate.withArguments("%0 Aufgabe(n) erfolgreich weitergegeben an: %1"
+            + (privateCount == 0 ? "" : "\n%2 private Aufgabe(n) können nicht weitergegeben werden.")
+            +(notGrantedCount == 0 ? "" : "\n%3 Aufgabe(n) können aufgrund fehlender Berechtigung nicht weitergegeben werden."),
+            [publicCount, selection[1], privateCount, notGrantedCount]));
+
+    }
+}
+
+// ToDo prüfen !!
+/*
+ * Verschiebt die Kalendereinträge bei Login-Änderung
+ *
+ * @param {String} pNewlogin req
+ * @param {String} pOldlogin req
+ * @param {String} pNewCalendarID req
+ * @param {String} pOldCalendarID req
+ *
+ * @return {void}
+ */
+function moveCalendarData ( pNewlogin, pOldlogin, pNewCalendarID, pOldCalendarID )
+{
+    var newcaluser = text.encodeMS(["mailto:" + pNewCalendarID, "CN:" + pNewlogin]);
+    var oldcaluser = text.encodeMS(["mailto:" + pOldCalendarID, "CN:" + pOldlogin]);
+    db.runStatement("update ASYS_CALENDARBACKEND set OWNER = '" + newcaluser + "' where OWNER = '" + oldcaluser + "'");
+    db.runStatement("update ASYS_CALENDARBACKEND set ORGANIZER = '" + newcaluser + "' where ORGANIZER = '" + oldcaluser + "'");
+
+    if(pNewCalendarID != pOldCalendarID) //Nur wenn sich die E-Mailadresse geändert hat
+    {
+        //Messenger-Historien
+        db.runStatement("update ASYS_XMPP_HISTORY set JID_FROM = '" + pNewCalendarID +"' where JID_FROM = '" + pOldCalendarID +"'", "_____SYSTEMALIAS");
+        db.runStatement("update ASYS_XMPP_HISTORY set JID_TO = '" + pNewCalendarID +"' where JID_TO = '" + pOldCalendarID +"'", "_____SYSTEMALIAS");
+    }
+}
+
+/*
+ * Löst den CalenderUser in lesbarer From auf
+ *
+ * @param {String} pValue req
+ *
+ * @return {String} übersetzten Wert
+ */
+function getCalUser( pValue )
+{
+    var realname = pValue;
+    var user = tools.getUser( text.decodeMS(pValue)[1].split(":")[1] );
+    if ( user != null )
+    {
+        realname = user[tools.PARAMS][tools.FIRSTNAME] + " " + user[tools.PARAMS][tools.LASTNAME];
+    }
+    return realname;
+}
+
+/*
+ * Gibt den Login eines CalenderUser zurück
+ *
+ * @param {String} pCalendarUser req
+ *
+ * @return {String} Title
+ */
+function getTitleCalenderUser( pCalendarUser )
+{
+    var data = text.decodeMS(pCalendarUser)
+    for ( var i = 0; i < data.length; i++ )
+    {
+        //if login changes we have to check calendarid
+        if ( data[i].substr(0, "mailto:".length).toUpperCase() == "MAILTO:" )
+        {
+            var user = tools.getUserByAttribute(tools.CALENDARID, [data[i].substr("mailto:".length)]);
+            if (user != null )
+                return user[tools.TITLE];
+        }
+
+        if ( data[i].substr(0, 3).toUpperCase() == "CN:" )
+            return data[i].substr(3);
+    }
+    return "";
+}
+
+
+/*
+ * Gibt den richtigen Status zum Prüfen je nach Backend zurück
+ *
+ *
+ * @param {String} pStatus req die konstante für den zu prüfenden status,
+ *                             z.B. calendars.STATUS_INPROCESS
+ *
+ * @param {String} pCalendarType req die konstante für den typen des Termin- oder Aufgabenbackends,
+ *                             z.B. calendars.BACKEND_DB
+ *
+ * @return {String} Konstanten für den Kalender (Backend-Typen), gibt es den status im backend nicht
+ *                  wird null geliefert
+ */
+function mapCalendarStatus(pStatus, pCalendarType)
+{
+    switch (pCalendarType)
+    {
+        //case calendars.BACKEND_EXCHANGE:
+        case calendars.BACKEND_EXCHANGEWS:
+            if (pStatus == calendars.STATUS_CONFIRMED)
+                return calendars.STATUS_BUSY;
+            else
+                return pStatus;
+        default:
+            if (pStatus == calendars.STATUS_OOF)//nur bei exchange
+                return null;
+            else
+                return pStatus;
+    }
+}
+
+/*
+ * Sets the imagevariable with affectedusers
+ *
+ * @param {Object} pEntry req the Entry of Tasks or Appointments
+ *
+ * @return {void}
+ *
+ */
+function setAffectedUsersImage(pEntry)
+{
+    var affectedUsers = [];
+    var usermap = pEntry[calendars.ATTENDEES];
+    var realnames = getRealNameObject(usermap);
+
+    for ( var i = 0; i < usermap.length; i++ )
+    {
+        affectedUsers.push([ text.encodeMS( [usermap[i]["paramvalue"], "CN:" + usermap[i]["cn"]] ), realnames[usermap[i]["cn"]] ]);
+    }
+
+    vars.set("$image.affectedusers", affectedUsers);
+    return affectedUsers;
+}
+
+/*
+ * Opens calendar links
+ *
+ * @param {String} pEntryID req the ID of the link
+ *
+ * @return {void}
+ *
+ */
+function openCalendarLinks(pEntryID)
+{
+    var openFramesObj = {};
+    if (typeof(pEntryID) == "object")
+        openFramesObj = pEntryID;
+    else
+    {
+        var links = db.table("SELECT FRAME, DBIDCOLUMN, DBID FROM ASYS_CALENDARLINK WHERE ENTRYID = '" + pEntryID + "'");
+        for (var i = 0; i < links.length; i++)
+        {
+            var frame = links[i][0].substr( 5 );//remove comp. so the frame can be opened with openFrame
+            if ( openFramesObj[frame] == undefined ) openFramesObj[frame] = {
+                IDField: links[i][1],
+                IDs: []
+            };
+            openFramesObj[frame].IDs.push(links[i][2]);
+        }
+    }
+
+    for ( frame in openFramesObj)
+    {
+        var condition = openFramesObj[frame].IDField + " in ('" + openFramesObj[frame].IDs.join("', '") + "')";
+        var framemode = openFramesObj[frame].IDs.length > 1 ? swing.FRAMEMODE_TABLE_SELECTION : swing.FRAMEMODE_SHOW;
+
+        if ( vars.getString("$global.upwardLink") == "link")
+        {
+            swing.openLinkedFrame(frame, condition, swing.WINDOW_CURRENT, framemode, "", null, false, {
+                autoclose: true
+            } );
+        }
+        else
+        {
+            swing.openFrame(frame, condition, swing.WINDOW_CURRENT, framemode, null, false);
+        }
+    }
+}
+
+/**
+ * Returns the "real" calendar system/backend type (BackendType & SyncBackendType)
+ *
+ * @param {Number} pScope - The needed scope (e.g. "calendars.VEVENT", "calendars.VTODO")
+ * @return {Number} - The backend type (calendars.BACKEND_*)
+ */
+function getCalendarSystemType (pScope)
+{
+    // Check sync backend type
+    if (calendars.getSyncBackendType() != calendars.BACKEND_NONE && calendars.getSyncBackendType() != 3)
+    {
+        var scope = calendars.getSyncBackendTypeScope();
+        if (scope.length == 1 && scope[0] == pScope) // Scope.length = 1 -> VEVENT *OR* VTODO
+            return calendars.getSyncBackendType();
+        else if (scope.length == 2) // Scope.length = 2 -> Both
+            return calendars.getSyncBackendType();
+       // Scope.length = 0 -> Nothing selected -> Skip this block
+    }
+
+    // Fallback to backend type (event)
+    if (calendars.getBackendType() != calendars.BACKEND_NONE && pScope === calendars.VEVENT)
+        return calendars.getBackendType();
+
+    // Second fallback to backend type (todo)
+    if (calendars.getBackendTypeTasks() != calendars.BACKEND_NONE && pScope === calendars.VTODO)
+        return calendars.getBackendTypeTasks();
+
+    // Everything is none
+    return calendars.BACKEND_NONE;
+}
+
+function hasGrantForEntryByMS(pAffectedUsers, pUserMap)
+{
+    for (let i = 0; i < pAffectedUsers.length; i++)
+    {
+        var calUser = getTitleCalenderUser( pAffectedUsers[i][0]);
+        if(pUserMap[calUser] == undefined)
+        {
+            return false;
+            break;
+        }
+        else
+            return true;
+    }
+}
+
+function hasGrantForEntryByObject(pAffectedUsers, pUserMap)
+{
+    for (let i = 0; i < pAffectedUsers.length; i++)
+    {
+        calUser = tools.getUserByAttribute(tools.CALENDARID, pAffectedUsers[i]["paramvalue"].substr("mailto:".length))
+        if (calUser == null)  calUser = pAffectedUsers[i]["cn"];
+        else calUser = calUser[tools.TITLE]
+        if(pUserMap[calUser] == undefined)
+        {
+            return false;
+            break;
+        }
+        else
+            return true;
+    }
+}
diff --git a/process/Communication_lib/Communication_lib.aod b/process/Communication_lib/Communication_lib.aod
index b1b3026148856104aac1130557a7a5cb1341b53c..a69299aa2aa56c2a3a2b1a4321e8779ff438187b 100644
--- a/process/Communication_lib/Communication_lib.aod
+++ b/process/Communication_lib/Communication_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Communication_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Communication_lib/process.js</process>
diff --git a/process/Contact_lib/Contact_lib.aod b/process/Contact_lib/Contact_lib.aod
index 3a466ec8e60357645490ddb1a290cd7b6008a6f3..ea8e5020017153333df78eddfd6bfd9c415e7208 100644
--- a/process/Contact_lib/Contact_lib.aod
+++ b/process/Contact_lib/Contact_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Contact_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Contact_lib/process.js</process>
diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js
index 628de9c354be6ef009c430f68d0d91d77f2dbca9..7539546b86e240ee05c0c28df960fec4ef92a420 100644
--- a/process/Contact_lib/process.js
+++ b/process/Contact_lib/process.js
@@ -1,3 +1,4 @@
+import("system.translate");
 import("system.neon");
 import("system.vars");
 import("system.result");
@@ -7,13 +8,71 @@ import("Util_lib");
 import("Context_lib");
 
 /**
- * a static Utility class for relations
+ * a static Utility class for organisations
+ * 
+ * Do not create an instance of this!
+ * @class
+ */
+function OrganisationUtils() {}
+
+OrganisationUtils.getNameByOrganisationId = function(pOrganisationId)
+{
+    var orgname = "";
+    if (pOrganisationId)
+    {
+        orgname = db.cell(SqlCondition.begin()
+                                  .andPrepare("ORGANISATION.ORGANISATIONID", pOrganisationId)
+                                  .buildSql("select ORGANISATION.NAME from ORGANISATION"));
+    }
+    return orgname;
+};
+
+/**
+ * a static Utility class for contacts
  * 
  * Do not create an instance of this!
  * @class
  */
 function ContactUtils() {}
 
+/*
+ * validates if a ORGANISATION_ID in a person-contact is correct [=>does not already exist] or not [=>does already exist]
+ * this is done by checking the database for entires that do already exist with this combination of ORGANISATIONID and PERSONID
+ * gives different messages for private persons and contacts that do already exist
+ * 
+ * @param {String} pPersonId the ID of the person that shall be searched in the database
+ * @param {String} pOrganisationId the ID of the organisation that shall be searched in the database; 
+ *                                 if this is an empty string it will be treated as private-dummy-organisation
+ * @param {String} [pOwnContactId] the CONTACTID of your current record; this is only needed when in EDIT-mode since you don't want to get a message 
+ *                                  for your own CONTACT;
+ *                                  (if you do a lookup if a organisation-person-combination does already exist you'l get your own contact which you want to exclude)
+ * 
+ * @return {String} translated text that describes whats the problem or null if there was no problem and everything is fine
+ * 
+ */
+ContactUtils.validateIfAlreadyExists = function(pPersonId, pOrganisationId, pOwnContactId)
+{
+    if (!pPersonId)
+        return null;
+    if (pOrganisationId == "")
+        pOrganisationId = "0";
+    var cond = SqlCondition.begin()
+    .andPrepare("CONTACT.PERSON_ID", pPersonId)
+    .andPrepare("CONTACT.ORGANISATION_ID", pOrganisationId)
+    //exclude the own since we do not want a "is not valid"-message for our own entry (on EDIT-mode)
+    .andPrepareIfSet("CONTACT.CONTACTID", pOwnContactId, "# != ?");
+
+    var sql = cond.buildSql("select CONTACT.CONTACTID from CONTACT");
+    var alreadyExistantContactId = db.cell(sql);
+    if (alreadyExistantContactId)
+        if (pOrganisationId.trim() == "0")
+            return translate.text("This private person doeas already exist and can not be created once more.");
+        else
+            return translate.text("This combination of person and organisation does already exist and can not be created once more.");
+    
+    return null;
+};
+
 /**
  * Get the type of contact. <br>
  * In recordstate NEW or EDIT it loads the person- / orgid from the db.<br>
@@ -30,7 +89,7 @@ function ContactUtils() {}
  * This saves an extra select from CONTACT. <br>
  *  <br>
  *  <br>
- * @param {String} pRelationId
+ * @param {String} pContactId
  * @param {String} pPersId selected from the CONTACT table
  * @param {String} pOrgId selected from the CONTACT table
  *  <br>
@@ -39,34 +98,34 @@ function ContactUtils() {}
  *                      2 if privat person <br>
  *                      3 if person of an organisation <br>
  */
-ContactUtils.getRelationType = function(pRelationId, pPersId, pOrgId)
+ContactUtils.getContactType = function(pContactId, pPersId, pOrgId)
 {
     if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
     {
-        return ContactUtils.getRelationTypeByRelation(pRelationId);
+        return ContactUtils.getContactTypeByContactId(pContactId);
     }
     else
     {
-        return ContactUtils.getRelationTypeByPersOrg(pPersId, pOrgId);
+        return ContactUtils.getContactTypeByPersOrg(pPersId, pOrgId);
     }
 }
 
 /**
  * get the type of contact for a relationId <br>
- * If you already have persId and orgId from the CONTACT table, use getRelationTypeByPersOrg() <br>
- * @param {String} pRelationId
+ * If you already have persId and orgId from the CONTACT table, use getContactTypeByPersOrg() <br>
+ * @param {String} pContactId
  * <br>
  * @return {Integer} 0 if relationId not found <br>
  *                  1 if organisation <br>
  *                  2 if privat person <br>
  *                  3 if person of an organisation <br>
  */
-ContactUtils.getRelationTypeByRelation = function(pRelationId)
+ContactUtils.getContactTypeByContactId = function(pContactId)
 {
-    var relationData = ContactUtils.getPersOrgIds(pRelationId);
+    var relationData = ContactUtils.getPersOrgIds(pContactId);
     if (relationData[0]) 
     {
-        return this.getRelationTypeByPersOrg(relationData[1], relationData[2]);
+        return this.getContactTypeByPersOrg(relationData[1], relationData[2]);
     }
     else
     {
@@ -82,7 +141,7 @@ ContactUtils.getRelationTypeByRelation = function(pRelationId)
  * !!It does not check if the person / org ids really exist!! <br>
  * !!And it does not check if really any contact with this person / org ids exist!! <br>
  *  <br>
- * This function is more performant than getRelationTypeByRelation, <br>
+ * This function is more performant than getContactTypeByContactId, <br>
  * because it doesn't load something from the db. <br>
  *  <br>
  * It is meant to be used by entitys, where you can load person and org with the DataRecord. <br>
@@ -96,7 +155,7 @@ ContactUtils.getRelationTypeByRelation = function(pRelationId)
  *                      2 if privat person <br>
  *                      3 if person of an organisation <br>
  */
-ContactUtils.getRelationTypeByPersOrg = function(pPersId, pOrgId)
+ContactUtils.getContactTypeByPersOrg = function(pPersId, pOrgId)
 {
     if (!pPersId)
     {
@@ -127,7 +186,7 @@ ContactUtils.getRelationTypeByPersOrg = function(pPersId, pOrgId)
  * !!It does not check if the person / org ids really exist!! <br>
  * !!And it does not check if really any contact with this person / org ids exist!! <br>
  *  <br>
- * This function is more performant than getContextByRelationId, <br>
+ * This function is more performant than getContextByContactId, <br>
  * because it doesn't load something from the db. <br>
  *  <br>
  * It is meant to be used by entitys, where you can load person and org with the DataRecord. <br>
@@ -141,7 +200,7 @@ ContactUtils.getRelationTypeByPersOrg = function(pPersId, pOrgId)
  */
 ContactUtils.getContextByPersOrg = function(pPersId, pOrgId)
 {
-    switch (ContactUtils.getRelationTypeByPersOrg(pPersId, pOrgId))
+    switch (ContactUtils.getContactTypeByPersOrg(pPersId, pOrgId))
     {
         case 1: // Org
             return ContextUtils.getContextName("Organisation");
@@ -157,32 +216,31 @@ ContactUtils.getContextByPersOrg = function(pPersId, pOrgId)
  * return the corresponding context of the contact <br>
  * If you already have persId and orgId from the CONTACT table, use getContextByPersOrg() <br>
  * 
- * @param {String} pRelationId
+ * @param {String} pContactId
  * @return {String} contextname or "" if contact not found
  */
-ContactUtils.getContextByRelationId = function(pRelationId)
+ContactUtils.getContextByContactId = function(pContactId)
 {
-    var relationData = ContactUtils.getPersOrgIds(pRelationId);
+    var relationData = ContactUtils.getPersOrgIds(pContactId);
     return ContactUtils.getContextByPersOrg(relationData[1], relationData[2])
 }
 
 /**
  * get the person- and org-id from a contact as array
  * 
- * @param {String} pRelationId
- * @return {String[]} result as [persid, orgid] if one of them is null in the db, "" will be returned as the id.
+ * @param {String} pContactId
+ * @return {String[]} result as [contactid, persid, orgid] if one of them is null in the db, "" will be returned as the id.
  */
-ContactUtils.getPersOrgIds = function(pRelationId)
+ContactUtils.getPersOrgIds = function(pContactId)
 {
-    if (pRelationId) {
+    if (pContactId) {
         return db.array(db.ROW, 
             SqlCondition.begin()
-                        .andPrepare("CONTACT.CONTACTID", pRelationId)
+                        .andPrepare("CONTACT.CONTACTID", pContactId)
                         .buildSql("select CONTACTID, PERSON_ID, ORGANISATION_ID from CONTACT", "1=0"));
     }
     
-    
-    return ["", ""];
+    return [];
 }
 
 /**
@@ -215,6 +273,7 @@ ContactUtils.getFullTitleByContactId = function(pContactId)
 
 /**
  * get the name of the person
+ * do not use this for a mass of data (e.g. in a loop) since this will be slow due to select-time
  * 
  * @param {String} pPersonId the id of the person where the data shall be loaded
  * 
@@ -239,19 +298,40 @@ ContactUtils.getTitleByPersonId = function(pPersonId)
     return "";
 }
 
+/**
+ * get the name of the person
+ * do not use this for a mass of data (e.g. in a loop) since this will be slow due to select-time
+ * 
+ * @param {String} pContactId the id of the contact entry with the person where the data shall be loaded
+ * 
+ * @return {String} the name or ""
+ */
+ContactUtils.getTitleByContactId = function(pContactId)
+{
+    if (pContactId) 
+    {
+        var personId = db.cell(SqlCondition.begin()
+                                           .andPrepare("CONTACT.CONTACTID", pContactId)
+                                            .buildSql("select CONTACT.PERSON_ID from CONTACT ", "1 = 2"));
+        if (personId)
+            return ContactUtils.getTitleByPersonId(personId);
+    }
+    
+    return "";
+}
+
 /**
  * returns the from string for the contact joined with org, person, address 
  *
  * @return {String}
  */
-ContactUtils.getFullRelationString = function()
+ContactUtils.getFullContactString = function()
 {
     return " CONTACT join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID"
     + " left join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID"
     + " left join ADDRESS on ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID";
 }
 
-
 /**
  * object for handling of a single contact
  * provides static- and instance-functions
@@ -349,7 +429,7 @@ Contact.createWithColumnPreset = function()
 function ContactTitleRenderer(pContact, pOptions)
 {
     this.contact = pContact;
-    if (pOptions !== undefined)//null means null which is "no option"; so check exactly for undefined
+    if (pOptions !== undefined)//null means null which is "no option"; so check exactly for undefined to check if default option has to be set
         this._options = pOptions;
     else 
         this._options = ContactTitleRenderer.OPTIONS.IncludeOrganisation;
@@ -382,6 +462,7 @@ function ContactTitleRenderer(pContact, pOptions)
  * @static
  */
 ContactTitleRenderer.OPTIONS = {
+    NoOption: 0,
     IncludeOrganisation: 1
 };
 
diff --git a/process/Context_lib/Context_lib.aod b/process/Context_lib/Context_lib.aod
index 830f1c42151d18dc0d6303b30214b4e071f2c003..88f0211eacad5423f96a78a8ceaa903a1bf72cdb 100644
--- a/process/Context_lib/Context_lib.aod
+++ b/process/Context_lib/Context_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Context_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Context_lib/process.js</process>
diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js
index b0c76ff639da5056b0064b34780b0df8248d90e8..82ea3eef6b21f0e6a8541a7021808c027235e9ed 100644
--- a/process/Context_lib/process.js
+++ b/process/Context_lib/process.js
@@ -2,23 +2,27 @@ import("system.translate");
 import("system.project");
 import("system.vars");
 import("system.SQLTYPES");
+import("Keyword_lib");
 import("Sql_lib");
+import("Proto_lib");
+import("Contact_lib");
+import("system.logging");
 
 /**
  * Methods to manage contexts.
  * Do not create an instance of this!
- * 
+ *
  * @class
  */
 function ContextUtils() {}
-   
+
 /**
  * Get the id of the current context
  * TODO: use a UUID of the current context which doesn't change
- * 
+ *
  * @return {String} Id of the current context
  */
-ContextUtils.getCurrentContextId = function() 
+ContextUtils.getCurrentContextId = function()
 {
     return vars.getString("$sys.currentcontextname");
 }
@@ -26,40 +30,49 @@ ContextUtils.getCurrentContextId = function()
 /**
  * TODO: use System function. Currently the Name is also the id.
  * Returns the Name of a context by the Id
- * 
+ *
  * @param {String} pContextId the id of a context
  * @return {String} Name of the current context
  */
-ContextUtils.getContextName = function(pContextId) 
+ContextUtils.getContextName = function(pContextId)
 {
     // TODO: currently the Id is the context name. This will be changed maybe
     return pContextId;
 }
 
 /**
- * 
- * @param {Boolean} [pFilter=false] filter only for contexts which have a mapping in ContextUtils._getSelectMap
- * 
+ *
+ * @param {Boolean} [pFilter=false] filter only for contexts which have a mapping in ContextUtils.getSelectMap 
+ * @param {String[]} [pExcludeContexts] contextIds that shall not be included (so this is a additional filter to the pFiler param)
+ *
  * @return {String[][]} the contexts [[contextId, contextName, contextTitle], [... ], ...]
  */
-ContextUtils.getContexts = function(pFilter)
+ContextUtils.getContexts = function(pFilter, pExcludeContexts)
 {
-    if (pFilter == undefined) 
+    if (pFilter == undefined)
         pFilter = false;
-    
+
     var contexts = project.getDataModels(project.DATAMODEL_KIND_CONTEXT);
-    
+
     if (pFilter)
     {
-        contexts = contexts.filter(function(pContext) 
-        {
+        contexts = contexts.filter(function(pContext) {
+            if (pExcludeContexts && pExcludeContexts.indexOf(pContext[0]) > -1)
+                return false;
             // filter only contexts which have defined mappings in Context_lib
-            return ContextUtils._getSelectMap()[pContext[0]] != undefined;
+            return ContextUtils.getSelectMap ()[pContext[0]] != undefined;
         });
     }
-    
-    
-    return contexts.map(ContextUtils._contextDataMapping).sort(function(pContext1, pContext2) 
+    else if (pExcludeContexts)
+    {
+        contexts = contexts.filter(function(pContext) {
+            if (pExcludeContexts && pExcludeContexts.indexOf(pContext[0]) > -1)
+                return false;
+            return true;
+        });
+    }
+
+    return contexts.map(ContextUtils._contextDataMapping).sort(function(pContext1, pContext2)
         {
             // sort after ContextTitle
             if (pContext1[2] > pContext2[2])
@@ -74,9 +87,9 @@ ContextUtils.getContexts = function(pFilter)
 
 /**
  * get the data of a context
- * 
+ *
  * @param {String} pContextId the id of the context
- * 
+ *
  * @return {String[]} the contextdata [contextId, contextName, contextTitle]
  */
 ContextUtils.getContext = function(pContextId)
@@ -86,9 +99,9 @@ ContextUtils.getContext = function(pContextId)
 
 /**
  * map the contextData from the system.project-lib to [contextId, contextName, contextTitle]
- * 
+ *
  * @param {String[]} pContext the data of a context (e.g. from project.getDataModel())
- * 
+ *
  * @return {String[]} the contextdata [contextId, contextName, contextTitle]
  * @ignore
  */
@@ -99,54 +112,247 @@ ContextUtils._contextDataMapping = function(pContext)
     return [pContext[0], contextName, (pContext[1] ? pContext[1] : contextName)];
 }
 
+/**
+ * represents a single context selection for one context
+ * this is usefull for objectlinks and 360° definition
+ * most properties are read only and can only be written with a setter
+ * 
+ * @param {String} [pTableName] presets the matching property of the object
+ * @param {String} [pIdField] presets the matching property of the object
+ * @param {String} [pTitleExpression] presets the matching property of the object
+ * 
+ * TODO: mostly temporary function until you can get fields from another Entity
+ *
+ * @class
+ */
+function ContextSelector(pTableName, pIdField, pTitleExpression)
+{
+    //the >>this.propertyX = null;<< is for autocomplete in the designer
+    
+    /**
+     * title-definition; db-column or another sql-expression (like concating fields) as long as it returns one field
+     * read-only property; set it with a matching setter
+     * @property
+     */
+    this.titleExpression = null; ProtoPropertyUtils.makeSemiReadOnly(this, "titleExpression");
+    this.setTitleExpression(pTitleExpression);
+
+    /**
+     * name of the database-table
+     * read-only property; set it with a matching setter
+     * @property
+     */
+    this.tableName = null; ProtoPropertyUtils.makeSemiReadOnly(this, "tableName");
+    this.setTableName(pTableName);
+    
+    /**
+     * db-field for the ID of one record (UID of matching context)
+     * read-only property; set it with a matching setter
+     * @property
+     */
+    this.idField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "idField");
+    this.setIdField(pIdField);
+    
+    /**
+     * expression for additional joins to be made (addotopmaö pt table-name)
+     * read-only property; set it with a matching setter
+     * @property
+     */
+    this.joinExpression = null; ProtoPropertyUtils.makeSemiReadOnly(this, "joinExpression");
+    /**
+     * db-field for the ID of the relation to a CONTACT-record
+     * read-only property; set it with a matching setter
+     * @property
+     */
+    this.contactIdField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "contactIdField");
+    /**
+     * db-field that represents the date of creation
+     * read-only property; set it with a matching setter
+     * @property
+     */
+    this.creationDateField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "creationDateField");
+    /**
+     * db-field where the STATE-information (active/inactive) is stored (see the activeStates-property)
+     * read-only property; set it with a matching setter
+     * @property
+     */
+    this.stateField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "stateField");
+    /**
+     * array that contains IDs of states that represent an "active"-state
+     * read-only property; set it with a matching setter
+     * @property
+     */
+    this.activeStates = null; ProtoPropertyUtils.makeSemiReadOnly(this, "activeStates");
+    this.condition = null; ProtoPropertyUtils.makeSemiReadOnly(this, "condition");
+}
+/**
+ * creates a new instance of a ContextSelector and returns it 
+ * if given it also sets some properties (property names with matching function-parameters)
+ * @static
+ */
+ContextSelector.create = function(pTableName, pIdField, pTitleExpression)
+{
+    return new ContextSelector(pTableName, pIdField, pTitleExpression);
+};
+/**
+ * @return {String} full id field containing tablename and column
+ */
+ContextSelector.prototype.getFullIdField = function()
+{
+    return this.tableName + "." + this.idField;
+};
+/**
+ * @return {String} full from-expression with tablename and join-part
+ */
+ContextSelector.prototype.getFullFromClause = function()
+{
+    if (this.joinExpression)
+        return " " + this.tableName + " " + this.joinExpression + " ";
+    else
+        return this.tableName;
+        
+};
+//setters which to nothing special; no need to document them
+ContextSelector.prototype.setTitleExpression = function(pValue)
+{
+    this._titleExpression = pValue;
+    return this;
+};
+ContextSelector.prototype.setTableName = function(pValue)
+{
+    this._tableName = pValue;
+    return this;
+};
+ContextSelector.prototype.setIdField = function(pValue)
+{
+    this._idField = pValue;
+    return this;
+};
+ContextSelector.prototype.setJoinExpression = function(pValue)
+{
+    this._joinExpression = pValue;
+    return this;
+};
+ContextSelector.prototype.setContactIdField = function(pValue)
+{
+    this._contactIdField = pValue;
+    return this;
+};
+ContextSelector.prototype.setCreationDateField = function(pValue)
+{
+    this._creationDateField = pValue;
+    return this;
+};
+ContextSelector.prototype.setStateField = function(pValue)
+{
+    this._stateField = pValue;
+    return this;
+};
+ContextSelector.prototype.setActiveStates = function(pValue)
+{
+    this._activeStates = pValue;
+    return this;
+};
+/**
+ * sets the condition property of a ContextSelector-object
+ * @param {Object} pSqlCondition condition as SqlCondition-object
+ */
+ContextSelector.prototype.setCondition = function(pSqlCondition)
+{
+    this._condition = pSqlCondition;
+    return this;
+};
+
 /**
  * TODO: !!!temporary function until you can get fields from another Entity!!!
  */
-ContextUtils._getSelectMap = function()
+ContextUtils.getSelectMap  = function()
 {
     var maskingUtils = new SqlMaskingUtils();
     return {
-          // contextId             nameField  Tablename, IDField
-        "Organisation": ["\"NAME\"", "ORGANISATION", "ORGANISATIONID"],
-        "Person": [maskingUtils.concat(["FIRSTNAME", "LASTNAME"]), "PERSON", "PERSONID"],
-        "Activity": ["SUBJECT", "ACTIVITY", "ACTIVITYID"],
-        "Salesproject": [maskingUtils.concat([maskingUtils.cast("PROJECTCODE", SQLTYPES.VARCHAR, 10), "':'", "PROJECTTITLE"]), "SALESPROJECT", "SALESPROJECTID"],
-        // TODO: keywords sind noch nicht in der DB somit gibt es nichts ähnliches zu getKeySQL.
-        // maskingUtils.concat([SqlMaskingUtils.cast("CONTRACTCODE", "varchar", 10), getKeySQL("CONTRACTTYPE", "CONTRACTTYPE" )])
-        "Contract": [maskingUtils.cast("CONTRACTCODE", SQLTYPES.VARCHAR, 10), "CONTRACT", "CONTRACTID"],
-//        "Appointment": ["SUMMARY", "ASYS_CALENDARBACKEND", "UID"]
-        "Offer": [maskingUtils.cast("OFFERCODE", SQLTYPES.VARCHAR, 10), "OFFER", "OFFERID"],
-        "Order": [maskingUtils.cast("SALESORDERCODE", SQLTYPES.VARCHAR, 10), "SALESORDER", "SALESORDERID"],
-        "Product": ["PRODUCTNAME", "PRODUCT", "PRODUCTID"],
-        "Task": ["SUBJECT", "TASK", "TASKID", translate.text("Task")]
+        "Organisation": ContextSelector.create("ORGANISATION", "ORGANISATIONID", "NAME")
+                                       .setCondition(SqlCondition.begin().and("ORGANISATION.ORGANISATIONID != '0'"))
+            ,"Person": ContextSelector.create("CONTACT", "CONTACTID")
+                                      .setTitleExpression(maskingUtils.concat([
+                                                new ContactTitleRenderer(Contact.createWithColumnPreset()).asSql()
+                                                ,"' - '"//looks pretty bad; TODO: workaround till Lookups can be loaded over a link-entity; then use displayProc
+                                                ,"defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO"
+                                                ,"' - '"
+                                                ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"
+                                               ]," "))
+                                      .setJoinExpression("join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID \n\
+                                                          join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID\n\
+                                                          left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID")
+            ,"Activity": ContextSelector.create("ACTIVITY", "ACTIVITYID", "SUBJECT")
+            ,"Salesproject": ContextSelector.create("SALESPROJECT", "SALESPROJECTID")
+                                            .setTitleExpression(maskingUtils.concat([
+                                                                "'" + translate.text("Salesproject") + "'",
+                                                                "' '",
+                                                                maskingUtils.cast("PROJECTCODE", SQLTYPES.VARCHAR, 10),
+                                                                "' | '",
+                                                                "PROJECTTITLE"
+                                                                ], "", false))
+                                            .setContactIdField("CONTACT_ID")
+                                            .setCreationDateField("STARTDATE")
+                                            .setStateField("STATE")
+                                            .setActiveStates(["25b0ac77-ef92-4809-802e-bb9d8782f865", "23d38486-4cce-41ce-a8df-164ad44df706"])
+            ,"Contract": ContextSelector.create("CONTRACT", "CONTRACTID")
+                                        .setTitleExpression(maskingUtils.concat([
+                                                                KeywordUtils.getResolvedTitleSqlPart("ContractType", "CONTRACTTYPE"),
+                                                                maskingUtils.cast("CONTRACTCODE", SQLTYPES.VARCHAR, 10)
+                                                                ], " "))
+                                        .setContactIdField("CONTACT_ID")
+                                        .setCreationDateField("CONTRACTSTART")
+                                        .setStateField("CONTRACTSTATUS")
+                                        .setActiveStates(["e12d37e9-3429-40b5-973b-c1569843ca46", "3579eb0c-d8ca-4b6b-85ee-f1800a9301eb", "4c63c82d-0276-4c12-9937-13fd361ad786"])
+            ,"Offer": ContextSelector.create("OFFER", "OFFERID")
+                                     .setTitleExpression(maskingUtils.concat([
+                                                "'" + translate.text("Offer") + "'",
+                                                "' '",
+                                                maskingUtils.cast("OFFERCODE", SQLTYPES.VARCHAR, 10),
+                                                "'-'",
+                                                maskingUtils.cast("VERSNR", SQLTYPES.VARCHAR, 10)
+                                                ], "", false))
+                                     .setContactIdField("CONTACT_ID")
+                                     .setCreationDateField("OFFERDATE")
+                                     .setStateField("STATUS")
+                                     .setActiveStates(["5134153d-2e18-452f-ab35-7a52f1aee7d1", "e5d6b5a4-7576-440f-8332-bc40147c0335"])
+            ,"Order": ContextSelector.create("SALESORDER", "SALESORDERID")
+                                     .setTitleExpression(maskingUtils.concat([
+                                                        "'" + translate.text("Order") + "'",
+                                                        "' '",
+                                                        maskingUtils.cast("SALESORDERCODE", SQLTYPES.VARCHAR, 10),
+                                                        "'-'",
+                                                        maskingUtils.cast("VERSNR", SQLTYPES.VARCHAR, 10)
+                                                        ], "", false))
+                                     .setContactIdField("CONTACT_ID")
+                                     .setCreationDateField("ORDERDATE")
+            ,"Product": ContextSelector.create("PRODUCT", "PRODUCTID")
+                                       .setTitleExpression(maskingUtils.concat([
+                                            "PRODUCTCODE",
+                                            "' | '",
+                                            "PRODUCTNAME"
+                                            ], "", false))
+            ,"Task": ContextSelector.create("TASK", "TASKID", "SUBJECT")
     }
 }
 
-ContextUtils.getFieldTitle = function(pContextId, pDefault)
-{
-    if (ContextUtils._getSelectMap()[pContextId] != undefined && ContextUtils._getSelectMap()[pContextId].length >= 3)
-        return ContextUtils._getSelectMap()[pContextId][3];
-    
-    return pDefault;
-}
-
-
 /**
  * TODO: !!!temporary function until you can get fields from another Entity!!!
  */
 ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField)
 {
     var select = "(case " + pContextIdDbField + " ";
-    
-    var selectMap = ContextUtils._getSelectMap()
-    for (let contextId in selectMap) 
+
+    var selectMap = ContextUtils.getSelectMap ()
+    for (let contextId in selectMap)
     {
-        select += "when '" + contextId + "' then (select " + selectMap[contextId][0] + " from " + selectMap[contextId][1] + (pRowIdDbField ? " where " + selectMap[contextId][2] + " = " + pRowIdDbField : " ") + ") ";
+        select += "when '" + contextId + "' then (select " + selectMap[contextId].titleExpression + " from " + selectMap[contextId].getFullFromClause() + (pRowIdDbField ? " where " + selectMap[contextId].idField + " = " + pRowIdDbField : " ") + ") ";
     }
-    
+
     select += "else 'Not defined in ContextUtils.getNameSql()!'";
     select += "end)";
-    
+
     return select;
 }
 
@@ -155,9 +361,13 @@ ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField)
  */
 ContextUtils.getNameSql = function(pContextId, pRowId)
 {
-    var selectMap = ContextUtils._getSelectMap()
+    var selectMap = ContextUtils.getSelectMap ()
     if (selectMap[pContextId] != undefined)
-        return SqlCondition.begin().andPrepare(selectMap[pContextId][1] + "." + selectMap[pContextId][2], pRowId).buildSql("select " + selectMap[pContextId][0] + " from " + selectMap[pContextId][1], "1=2");
+    {
+        return SqlCondition.begin().andPrepare(selectMap[pContextId].getFullIdField(), pRowId)
+                                   .buildSql("select " + selectMap[pContextId].titleExpression 
+                                            + " from " + selectMap[pContextId].getFullFromClause(), "1 = 2");
+    }
     else
         return "select 1 from person where 1=2";
 }
@@ -165,14 +375,54 @@ ContextUtils.getNameSql = function(pContextId, pRowId)
 /**
  * TODO: !!!temporary function until you can get fields from another Entity!!!
  */
-ContextUtils.getContextDataSql = function(pContextId, pRowId)
+ContextUtils.getContextDataSql = function(pContextId, pContactId, pWithDate, pActive, pWithState, pExcludedObjectIds)
 {
-    var selectMap = ContextUtils._getSelectMap()
+    var selectMap = ContextUtils.getSelectMap();
+    var ownContextSelector = selectMap[pContextId];
     var cond = SqlCondition.begin();
-    if (pRowId)
+    if (pContactId)
     {
-        cond.andPrepare(selectMap[pContextId][1] + "." + selectMap[pContextId][2], pRowId)
+        cond.andPrepare(ownContextSelector.tableName + "." + ownContextSelector.contactIdField, pContactId)
+    }
+    
+    if (pActive != undefined)
+    {
+        var activeStates = ownContextSelector.activeStates;
+        if(activeStates != null && activeStates.length > 0)
+        {
+            var condSub = SqlCondition.begin();
+            activeStates.forEach(function (state) 
+            {   
+                if(pActive)
+                    condSub.orPrepare(ownContextSelector.tableName + "." + ownContextSelector.stateField, state)
+                else
+                    condSub.andPrepare(ownContextSelector.tableName + "." + ownContextSelector.stateField, state, "# != ?")
+            });
+            cond.andSqlCondition(condSub);   
+        }
+    }
+    
+    if (pExcludedObjectIds)
+    {
+        var exludedIdsCond = new SqlCondition()
+        
+        pExcludedObjectIds.forEach(function(id)
+        {
+            this.andPrepare(ownContextSelector.tableName + "." + ownContextSelector.idField, id, "# <> ?");
+        }, exludedIdsCond)
+        
+        cond.andSqlCondition(exludedIdsCond);
     }
     
-    return cond.buildSql("select " + selectMap[pContextId][2] + ", " + selectMap[pContextId][0] + " from " + selectMap[pContextId][1], "1=1");
+    var dateColumn = "";
+    if (pWithDate === true)
+        dateColumn = ", " + (ownContextSelector.creationDateField || "''");
+    var stateColumn = "";
+    if (pWithState === true)
+        stateColumn = ", " + (ownContextSelector.stateField || "''");
+    if (ownContextSelector.condition)
+        cond.andSqlCondition(ownContextSelector.condition);
+    var res = cond.buildSql("select " + ownContextSelector.getFullIdField() + ", " + ownContextSelector.titleExpression + dateColumn + stateColumn 
+            +  " from " + ownContextSelector.getFullFromClause(), "1=1");
+    return res;
 }
diff --git a/process/Contract_lib/Contract_lib.aod b/process/Contract_lib/Contract_lib.aod
index 380228efe32ff334cc0fa27fc02aa8612a984bd2..f7e066be340112fbe6298f410624cc9ba6284dad 100644
--- a/process/Contract_lib/Contract_lib.aod
+++ b/process/Contract_lib/Contract_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Contract_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Contract_lib/process.js</process>
diff --git a/process/Contract_lib/process.js b/process/Contract_lib/process.js
index 292b26d66dff5ea3839086e8448b03b8644dd5b0..ad766aa91e67481ec5c1c76d56146a74943b22ca 100644
--- a/process/Contract_lib/process.js
+++ b/process/Contract_lib/process.js
@@ -43,4 +43,18 @@ ContractUtils.validateContractNumber = function(pContractNumber) {
     
 ContractUtils.getContractNumberValidationFailString = function() {
     return translate.text("The contract number already exists!");
+}
+
+/**
+ * Create a new contract and open the contract context in NEW-mode
+ */
+ContractUtils.createNewContract = function(pRelationId)
+{
+    var params = {};
+    
+    if (pRelationId)
+        params["ContactId_param"] = pRelationId;
+    
+ 
+    neon.openContext("Contract", null, null, neon.OPERATINGSTATE_NEW, params);
 }
\ No newline at end of file
diff --git a/process/Data_lib/Data_lib.aod b/process/Data_lib/Data_lib.aod
index 31c110aa44acdbe4f27e96eac428e3a6bbff4a4d..7e6dc0e007d710b42680bd618e2e6e4889e0296d 100644
--- a/process/Data_lib/Data_lib.aod
+++ b/process/Data_lib/Data_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Data_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Data_lib/process.js</process>
diff --git a/process/Date_lib/Date_lib.aod b/process/Date_lib/Date_lib.aod
index 14146541257a3980465dbbb65c66c07bd7f028d6..9833cb86c53bc720131800ef98c93138e6b61db2 100644
--- a/process/Date_lib/Date_lib.aod
+++ b/process/Date_lib/Date_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Date_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Date_lib/process.js</process>
diff --git a/process/Document_lib/Document_lib.aod b/process/Document_lib/Document_lib.aod
index f4e3b53c416aaab5a30f3ee690b54a9372a074d6..9f2ede3e40f379602f2d598e9027e4605ab4044c 100644
--- a/process/Document_lib/Document_lib.aod
+++ b/process/Document_lib/Document_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Document_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Document_lib/process.js</process>
diff --git a/process/Employee_lib/Employee_lib.aod b/process/Employee_lib/Employee_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..1a08f91b6ef81042668340de79dfea0687a520e6
--- /dev/null
+++ b/process/Employee_lib/Employee_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.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
+  <name>Employee_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/Employee_lib/process.js</process>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/Employee_lib/process.js b/process/Employee_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..dac86b25c4f2515a8db0a6b58585a9026a6f1c46
--- /dev/null
+++ b/process/Employee_lib/process.js
@@ -0,0 +1,113 @@
+import("system.db");
+import("Sql_lib");
+import("system.tools");
+
+/**
+ * Provides functions for employees and users.j
+ * 
+ * Do not create an instance of this!
+ * 
+ * @class
+ */
+function EmployeeUtils () {}
+
+/**
+ * Returns the contact id of the current user
+ * 
+ * @return the contact id
+ */
+EmployeeUtils.getCurrentContactId = function ()
+{
+    var user = tools.getCurrentUser();
+    return user ? user[tools.PARAMS][tools.CONTACTID] : null;
+}
+
+/**
+ * Returns the username id of the current user
+ * 
+ * @return the username
+ */
+EmployeeUtils.getCurrentUserName = function ()
+{
+    var user = tools.getCurrentUser();
+    return user ? user[tools.TITLE] : null;
+}
+
+EmployeeUtils.sliceUserId = function (pUserId)
+{
+    return pUserId.substr(10, 36);
+}
+
+/**
+ * generates a username from the firstname and lastname with the given structure
+ * 
+ * @param {String} pFirstName
+ * @param {String} pLastName
+ * @param {String} pStructure the structure of the username, special characters:
+ *      f - one letter of the firstname in lowercase
+ *      F - one letter of the firstname in uppsercase
+ *      l - one letter of the lastname in lowercase
+ *      L - one letter of the lastname in uppsercase
+ *      f+ - the complete firstname in lowercase
+ *      F+ - the complete firstname
+ *      l+ - the complete lastname in lowercae
+ *      L+ - the complete lastname 
+ * 
+ * @return {String} the generated username
+ */
+EmployeeUtils.generateUserName = function (pFirstName, pLastName, pStructure)
+{
+    if (!pStructure || (!pFirstName && !pLastName))
+        return null;
+    
+    var firstNameIndex = 0;
+    var lastNameIndex = 0;
+    var userName = pStructure.replace(/(f\+|l\+|f|l)/ig, function (type)
+    {
+        switch (type)
+        {
+            case "f+":
+            return pFirstName.toLowerCase() || "";
+            case "F+":
+                return pFirstName || "";
+            case "l+":
+                return pLastName.toLowerCase()  || "";
+            case "L+":
+                return pLastName || "";
+            case "f":
+                return pFirstName.charAt(firstNameIndex++).toLowerCase() || "";
+            case "F":
+                return pFirstName.charAt(firstNameIndex++).toUpperCase() || "";
+            case "l":
+                return pLastName.charAt(lastNameIndex++).toLowerCase() || "";
+            case "L":
+                return pLastName.charAt(lastNameIndex++).toUpperCase() || "";
+        }
+    });
+    
+    return userName;
+}
+
+/**
+ * checks if an employee is used somewhere
+ * 
+ * @param {String} pContactId the contact id of the user
+ * 
+ * @return {boolean} if the employee has relations
+ */
+EmployeeUtils.hasRelations = function (pContactId)
+{
+    //sql queries with selects on tables where an employee can be used
+    var queries = [
+        SqlCondition.begin()
+            .andPrepare("ACTIVITY.CREATOR", pContactId)
+            .buildSql("select 1 from ACTIVITY"),
+        SqlCondition.begin()
+            .andPrepare("TIMETRACKING.CONTACT_ID", pContactId)
+            .buildSql("select 1 from TIMETRACKING")
+    ];
+    return queries.some(function (sql)
+        {
+            return db.cell(sql) != "";
+        });
+}
\ No newline at end of file
diff --git a/process/Entity_lib/Entity_lib.aod b/process/Entity_lib/Entity_lib.aod
index 39459cd9cca28b1773673ea0ec2dd2b463340b8a..d106b77a163c3a6f9266ffd622878cd794b9699a 100644
--- a/process/Entity_lib/Entity_lib.aod
+++ b/process/Entity_lib/Entity_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Entity_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Entity_lib/process.js</process>
diff --git a/process/IndexSearch_lib/IndexSearch_lib.aod b/process/IndexSearch_lib/IndexSearch_lib.aod
index a584c2b2b813278ee81a543ba277362c825026a9..bfc314526ea673c93e94af2e8fae2d019e835386 100644
--- a/process/IndexSearch_lib/IndexSearch_lib.aod
+++ b/process/IndexSearch_lib/IndexSearch_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>IndexSearch_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/IndexSearch_lib/process.js</process>
diff --git a/process/JditoFilter_lib/JditoFilter_lib.aod b/process/JditoFilter_lib/JditoFilter_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..39f93d7408ba9b780ffa2103135c3164dee04d68
--- /dev/null
+++ b/process/JditoFilter_lib/JditoFilter_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.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
+  <name>JditoFilter_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/JditoFilter_lib/process.js</process>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..64d5ea5a3107407acc64475b059ccb2a721858a7
--- /dev/null
+++ b/process/JditoFilter_lib/process.js
@@ -0,0 +1,112 @@
+
+/**
+ * object for filtering records
+ * 
+ * @param {Array} pColumns the column names
+ * @param {String|Object} pFilter the filter object
+ */
+function JditoFilter (pColumns, pFilter) 
+{
+    var columnMap = {};
+    pColumns.forEach(function (row, i)
+    {
+        columnMap[row] = i;
+    });
+    this._columnMap = columnMap;
+    
+    if (pFilter.length) //check if pFilter is a string
+        pFilter = JSON.parse(pFilter);
+    
+    this._operator = pFilter.operator;
+    this._filters = pFilter.childs;
+}
+
+/**
+ * tests the given row if it matches the filter
+ * 
+ * @param {Array} pRow one record
+ * 
+ * @return {boolean} true, if it matches the condition
+ */
+JditoFilter.prototype.checkRecord = function (pRow)
+{
+    if (this._filters.length == 0)
+        return true;
+    
+    if (this._operator == "AND")
+        return this._filters.every(_testFn, this);
+    
+    return this._filters.some(_testFn, this);
+    
+    function _testFn (pFilter)
+    {
+        let value = pRow[this._columnMap[pFilter.name]];
+        return this._testValue(value, (pFilter.key || pFilter.value), pFilter.operator);
+    }
+}
+
+/**
+ * compares two values with the given operator
+ */
+JditoFilter.prototype._testValue = function (pRowValue, pFilterValue, pOperator)
+{
+    switch (pOperator)
+    {
+        case "CONTAINS":
+            return (new RegExp(pFilterValue)).test(pRowValue);
+        case "CONTAINSNOT":
+            return !(new RegExp(pFilterValue)).test(pRowValue);
+        case "STARTSWITH":
+            return (new RegExp("^" + pFilterValue)).test(pRowValue);
+        case "ENDSWITH":
+            return (new RegExp(pFilterValue + "$")).test(pRowValue);
+        case "EQUAL":
+            return (new RegExp("^" + pFilterValue + "$")).test(pRowValue);
+        case "NOT_EQUAL":
+            return !(new RegExp("^" + pFilterValue + "$")).test(pRowValue);
+        case "LESS":
+            return pRowValue < pFilterValue;
+        case "LESS_OR_EQUAL":
+            return pRowValue <= pFilterValue;
+        case "GREATER":
+            return pRowValue > pFilterValue;
+        case "GREATER_OR_EQUAL":
+            return pRowValue >= pFilterValue;
+        case "ISNULL":
+            return pRowValue == "";
+        case "ISNOTNULL":
+            return pRowValue != "";
+    }
+}
+
+/**
+ * Provides functions for using the filter with jdito recordcontainers. You should only use this
+ * if there is no other, faster way to filter the records
+ * 
+ * Do not instanciate this!
+ * 
+ * @class
+ */
+function JditoFilterUtils () {}
+
+/**
+ * Filters the given records
+ * 
+ * @param {Array} pColumns one dimensional array with all column names, the order has to match the columns of pRecords
+ * @param {Array} pRecords two dimensional array with all records
+ * @param {String|Object} pFilter the value of $local.filter
+ * 
+ * @return {Array} the filtered records
+ */
+JditoFilterUtils.filterRecords = function (pColumns, pRecords, pFilter)
+{
+    if (!pFilter)
+        return pRecords;
+    
+    var filter = new JditoFilter(pColumns, pFilter);
+    
+    return pRecords.filter(function (row)
+        {
+            return this.checkRecord(row);
+        }, filter);
+}
\ No newline at end of file
diff --git a/process/KeywordRegistry_basic/KeywordRegistry_basic.aod b/process/KeywordRegistry_basic/KeywordRegistry_basic.aod
index eddf2366e9f4b3e924943b353909ca3a5959827d..f16c2160c96dbf655bd3d9e8c09fa6cdf23fe58f 100644
--- a/process/KeywordRegistry_basic/KeywordRegistry_basic.aod
+++ b/process/KeywordRegistry_basic/KeywordRegistry_basic.aod
@@ -1,6 +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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>KeywordRegistry_basic</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/KeywordRegistry_basic/process.js</process>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
 </process>
diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js
index 2addda46a43b75ce9367de9691e7cade21cd31eb..dda81268ff389fe8f299b422fcfdb2f0639574e5 100644
--- a/process/KeywordRegistry_basic/process.js
+++ b/process/KeywordRegistry_basic/process.js
@@ -17,47 +17,57 @@
  */
 function $KeywordRegistry(){}
 
-$KeywordRegistry.attributeType = function(){return "AttributeType"};
-$KeywordRegistry.keywordAttributeType = function(){return "KeywordAttributeType"};
-$KeywordRegistry.contractPayment = function(){return "ContractPayment"};
-$KeywordRegistry.contractStatus = function(){return "ContractStatus"};
-$KeywordRegistry.contractType = function(){return "ContractType"};
-$KeywordRegistry.activityDirection = function(){return "ActivityDirection"};
+$KeywordRegistry.attributeType = function(){return "AttributeType";};
+$KeywordRegistry.keywordAttributeType = function(){return "KeywordAttributeType";};
+$KeywordRegistry.contractPayment = function(){return "ContractPayment";};
+$KeywordRegistry.contractStatus = function(){return "ContractStatus";};
+$KeywordRegistry.contractType = function(){return "ContractType";};
 
-$KeywordRegistry.contactStatus = function(){return "ContactStatus"};
-$KeywordRegistry.contactStatus$active = function(){return "BSIC0rel-stat-actv-ae03-b6b04430e90b"};
+$KeywordRegistry.activityDirection = function(){return "ActivityDirection";};
+$KeywordRegistry.activityDirection$incoming = function(){return "BSICacti-0dir-0inc-b8a3-f43e2c73df65";};
+$KeywordRegistry.activityDirection$outgoing = function(){return "BSICacti-0dir-outg-8337-909b0f93143a";};
 
-$KeywordRegistry.currency = function(){return "Currency"};
-$KeywordRegistry.productGroupcode = function(){return "ProductGroupcode"};
-$KeywordRegistry.offerStatus = function(){return "OfferStatus"};
-$KeywordRegistry.organisationType = function(){return "OrganisationType"};
-$KeywordRegistry.personGender = function(){return "PersonGender"};
-$KeywordRegistry.taskStatus = function(){return "TaskStatus"};
-$KeywordRegistry.taskType = function(){return "TaskType"};
+$KeywordRegistry.contactStatus = function(){return "ContactStatus";};
+$KeywordRegistry.contactStatus$active = function(){return "BSIC0rel-stat-actv-ae03-b6b04430e90b";};
 
-$KeywordRegistry.productPricelist = function(){return "ProductPricelist"};
-$KeywordRegistry.productPricelist$standardList = function(){return "02553fc7-4611-4914-8ff5-0b7c4e7531c9"};
+$KeywordRegistry.currency = function(){return "Currency";};
+$KeywordRegistry.productGroupcode = function(){return "ProductGroupcode";};
+$KeywordRegistry.offerStatus = function(){return "OfferStatus";};
+$KeywordRegistry.organisationType = function(){return "OrganisationType";};
+$KeywordRegistry.personGender = function(){return "PersonGender";};
+$KeywordRegistry.taskStatus = function(){return "TaskStatus";};
+$KeywordRegistry.taskStatus$new = function(){return "21bc4d20-1a87-4247-8f7c-8d3a09631850";};
+$KeywordRegistry.taskType = function(){return "TaskType";};
+$KeywordRegistry.taskType$Task = function(){return "4dee8727-8299-422e-ae41-6cdf9de2dfd7";};
 
-$KeywordRegistry.quantityUnit = function(){return "QuantityUnit"};
-$KeywordRegistry.salesprojectMemberRole = function(){return "SalesprojectMemberRole"};
-$KeywordRegistry.salesprojectSource = function(){return "SalesprojectSource"};
-$KeywordRegistry.salesorderState = function(){return "SalesorderState"};
-$KeywordRegistry.salesprojectWonLost = function(){return "SalesprojectWonLost"};
-$KeywordRegistry.stockWarehouse = function(){return "StockWarehouse"};
-$KeywordRegistry.salesprojectProbability = function(){return "SalesprojectProbability"};
-$KeywordRegistry.activityCategory = function(){return "ActivityCategory"};
-$KeywordRegistry.addressType = function(){return "AddressType"};
-$KeywordRegistry.offerProbability = function(){return "OfferProbability"};
-$KeywordRegistry.communicationMedium = function(){return "CommunicationMedium"};
-$KeywordRegistry.salesprojectPricePolitics = function(){return "SalesprojectPricePolitics"};
-$KeywordRegistry.salesprojectWeakness = function(){return "SalesprojectWeakness"};
-$KeywordRegistry.salesprojectStrenght = function(){return "SalesprojectStrenght"};
-$KeywordRegistry.salesprojectState = function(){return "SalesprojectState"};
-$KeywordRegistry.salesprojectPhase = function(){return "SalesprojectPhase"};
-$KeywordRegistry.taskPriority = function(){return "TaskPriority"};
-$KeywordRegistry.taskProgress = function(){return "TaskProgress"};
-$KeywordRegistry.salesprojectCompetitionState = function(){return "SalesprojectCompetitionState"};
-$KeywordRegistry.objectRelationType = function(){return "ObjectRelationType"};
-$KeywordRegistry.deliveryTerm = function(){return "DeliveryTerm"};
-$KeywordRegistry.paymentTerm = function(){return "PaymentTerm"};
+$KeywordRegistry.productPricelist = function(){return "ProductPricelist";};
+$KeywordRegistry.productPricelist$standardList = function(){return "02553fc7-4611-4914-8ff5-0b7c4e7531c9";};
+
+$KeywordRegistry.quantityUnit = function(){return "QuantityUnit";};
+$KeywordRegistry.salesprojectMemberRole = function(){return "SalesprojectMemberRole";};
+$KeywordRegistry.salesprojectSource = function(){return "SalesprojectSource";};
+$KeywordRegistry.salesorderState = function(){return "SalesorderState";};
+$KeywordRegistry.salesprojectWonLost = function(){return "SalesprojectWonLost";};
+$KeywordRegistry.stockWarehouse = function(){return "StockWarehouse";};
+$KeywordRegistry.salesprojectProbability = function(){return "SalesprojectProbability";};
+$KeywordRegistry.activityCategory = function(){return "ActivityCategory";};
+$KeywordRegistry.addressType = function(){return "AddressType";};
+$KeywordRegistry.offerProbability = function(){return "OfferProbability";};
+$KeywordRegistry.communicationMedium = function(){return "CommunicationMedium";};
+$KeywordRegistry.salesprojectPricePolitics = function(){return "SalesprojectPricePolitics";};
+$KeywordRegistry.salesprojectWeakness = function(){return "SalesprojectWeakness";};
+$KeywordRegistry.salesprojectStrenght = function(){return "SalesprojectStrenght";};
+$KeywordRegistry.salesprojectState = function(){return "SalesprojectState";};
+$KeywordRegistry.salesprojectPhase = function(){return "SalesprojectPhase";};
+$KeywordRegistry.taskPriority = function(){return "TaskPriority";};
+$KeywordRegistry.taskPriority$low = function(){return "09072b59-d12f-469b-acbd-18a28232ff70";};
+$KeywordRegistry.taskProgress = function(){return "TaskProgress";};
+$KeywordRegistry.taskProgress$0 = function(){return "ec92271b-eac2-4ec2-be24-ab4abde7e939";};
+$KeywordRegistry.salesprojectCompetitionState = function(){return "SalesprojectCompetitionState";};
+$KeywordRegistry.objectRelationType = function(){return "ObjectRelationType";};
+$KeywordRegistry.deliveryTerm = function(){return "DeliveryTerm";};
+$KeywordRegistry.paymentTerm = function(){return "PaymentTerm";};
+$KeywordRegistry.contactDepartment = function(){return "ContactDepartment";};
+$KeywordRegistry.contactPosition = function(){return "ContactPosition";};
+$KeywordRegistry.contactContactrole = function(){return "ContactContactrole";};
 
diff --git a/process/Keyword_lib/Keyword_lib.aod b/process/Keyword_lib/Keyword_lib.aod
index f835319ec09922acdea7725d29eef29edc8c4b1b..2dd2a647ff95df46a7e1b5d118e021129d1d30d7 100644
--- a/process/Keyword_lib/Keyword_lib.aod
+++ b/process/Keyword_lib/Keyword_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Keyword_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Keyword_lib/process.js</process>
diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js
index 273862a3072e83e7c6d7645f5ba060890b9e7b32..a4527c2594eb3c43724bfa790cb6de3ffd803294 100644
--- a/process/Keyword_lib/process.js
+++ b/process/Keyword_lib/process.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.vars");
 import("system.SQLTYPES");
 import("system.db");
@@ -147,6 +148,47 @@ KeywordUtils.getContainerNames = function()
     return list;
 };
 
+/**
+* provides a translated list of keyword-entry-titles in the system filtered by a containerName;
+* usefull for lists where the key is the name which is then a editable displayValue
+* 
+* @param {String} pContainerName name of the keyword container for filtering
+* 
+* @return {String[]} translated titles as 1D-Array
+*/
+KeywordUtils.getEntryNamesByContainer = function(pContainerName)
+{
+    var sql = SqlCondition.begin()
+                          .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", pContainerName)
+                          .buildSql("select AB_KEYWORD_ENTRY.TITLE from AB_KEYWORD_ENTRY", null, "order by AB_KEYWORD_ENTRY.SORTING asc, AB_KEYWORD_ENTRY.TITLE asc")
+    var list = db.array(db.COLUMN, sql).map(function (v){
+        return translate.text(v);
+    });
+    return list;
+};
+
+
+/**
+* provides a translated list of keyword-entry-titles and its ids in the system filtered by a containerName;
+* usefull for lists where the key is the name which is then a editable displayValue
+* 
+* @param {String} pContainerName name of the keyword container for filtering
+* 
+* @return {String[]} translated titles as 1D-Array
+*/
+KeywordUtils.getEntryNamesAndIdsByContainer = function(pContainerName)
+{
+    var sql = SqlCondition.begin()
+                          .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", pContainerName)
+                          .buildSql("select AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID, AB_KEYWORD_ENTRY.TITLE from AB_KEYWORD_ENTRY", null, "order by AB_KEYWORD_ENTRY.SORTING asc, AB_KEYWORD_ENTRY.TITLE asc")
+                          
+    var list = db.table(sql);
+    for(var i = 0; i<list.length; i = i + 1)
+        list[i][1] = translate.text(list[i][1]);
+    
+    return list;
+};
+
 /**
  * object that provides featrues for a single keyword attribute; initalizes itself on creation with a specific keyword-attribute
  * 
@@ -198,6 +240,29 @@ LanguageKeywordUtils.getResolvedTitleSqlPart = function(pDbFieldName, pLocale)
     return db.translateStatement(resSql);
 };
 
+/**
+ * returns a specific name (translated) - this is normally the view-value of a language
+ * 
+ * @param {String} key id value of the language where the view-value shall be searched
+ *
+ * @return {String} representation of the translated name 
+ * 
+ */
+LanguageKeywordUtils.getViewValue = function(key)
+{
+    if (!key)
+        return "";
+    
+    var sql = SqlCondition.begin()
+    .andPrepare("AB_LANGUAGE.ISO3", key)
+    .buildSql("select AB_LANGUAGE.NAME_LATIN from AB_LANGUAGE");
+    var originalTitle = db.cell(sql);
+    if (originalTitle == "")
+        return "";
+    var translatedTitle = translate.text(originalTitle);
+    return translatedTitle;
+};
+
 
 /**
  * provides methods for interactions with legcy keywords
diff --git a/process/Money_lib/Money_lib.aod b/process/Money_lib/Money_lib.aod
index e374a767e3e98dff0cc30b6c59535cc312e0919a..9c27e1c6debbf49bc099056bddd3fe16f4243480 100644
--- a/process/Money_lib/Money_lib.aod
+++ b/process/Money_lib/Money_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Money_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Money_lib/process.js</process>
diff --git a/process/Neon_lib/Neon_lib.aod b/process/Neon_lib/Neon_lib.aod
index 7434f563e728bd1e8ec0e98e600938175418b6d2..ace4a1e8ec19c194c1d9e00326013f3656cd35b4 100644
--- a/process/Neon_lib/Neon_lib.aod
+++ b/process/Neon_lib/Neon_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Neon_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Neon_lib/process.js</process>
diff --git a/process/ObjectRelation_lib/ObjectRelation_lib.aod b/process/ObjectRelation_lib/ObjectRelation_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..e5a4d95eb356b4bf2900d50e7b7a62ed22355697
--- /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.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
+  <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..710f0c64e95ef07b4835a417bb2f5a216ee9d4ae
--- /dev/null
+++ b/process/ObjectRelation_lib/process.js
@@ -0,0 +1,103 @@
+import("Sql_lib");
+import("system.db");
+
+/**
+ * Class containing utility functions for ObjectRelations
+ * do not create an instance of this
+ * 
+ * @class
+ */
+function ObjectRelationUtils() {}
+
+/**
+ * Get all possible relationTypes by a objectType. (objectrelationtypeId and title)
+ * Normally it only returns the id and title. If you set pFullInfo to true, you will get additional information, too.
+ * 
+ * @param {String} [pObjectType=undefined] the object type to load the relation types for.] 
+ * @param {Boolean} [pFullInfo=false] return also RELATION_TYPE, direction (normal, reverse, same), hierarchy, OBJECT_TYPE dest, OBJECT_TYPE source, objectrelationtypeId1, objectrelationtypeId2, side, objectrelationtypeId, other title
+ * 
+ * @return {String[][]}
+ */
+ObjectRelationUtils.getPossibleRelationTypes = function(pObjectType, pFullInfo, pOnlyFirstSide, pRelationTypeId)
+{
+    var sql = " from AB_OBJECTRELATIONTYPE main \n\
+            left join AB_OBJECTRELATIONTYPE type2 on (type2.AB_OBJECTRELATIONTYPEID <> main.AB_OBJECTRELATIONTYPEID and type2.RELATION_TYPE = main.RELATION_TYPE) ";
+    var cond = "";
+    
+    var params = [];
+    
+    if (pObjectType)
+    {
+        cond = "where case when type2.OBJECT_TYPE is null then main.OBJECT_TYPE else type2.OBJECT_TYPE end = ? "
+        params.push([pObjectType, db.getColumnTypes("AB_OBJECTRELATIONTYPE", ["OBJECT_TYPE"])[0]]);
+    }
+    
+    if (pRelationTypeId)
+    {
+        if (!cond)
+            cond = "where ";
+        else
+            cond += " and ";
+        
+        cond += " main.AB_OBJECTRELATIONTYPEID = ? ";
+        params.push([pRelationTypeId, db.getColumnTypes("AB_OBJECTRELATIONTYPE", ["AB_OBJECTRELATIONTYPEID"])[0]]);
+    }
+    
+    if (pOnlyFirstSide == "1")
+    {
+        if (!cond)
+            cond = "where ";
+        else
+            cond += " and ";
+        
+        cond += " main.SIDE = 1 "
+    }
+    
+    sql += cond;
+    
+    // only id and title:
+    if (pFullInfo == undefined || pFullInfo == false)
+    {
+        sql = "select main.AB_OBJECTRELATIONTYPEID, main.RELATION_TITLE" + sql;
+    }
+    else
+    {
+        sql = "select main.AB_OBJECTRELATIONTYPEID, main.RELATION_TITLE, main.RELATION_TYPE, \n\
+        case when type2.AB_OBJECTRELATIONTYPEID is null then 'same' \n\
+             when main.SIDE = 1 then 'normal'\n\
+             else 'reverse'\n\
+        end direction,\n\
+        main.HIERARCHY, \n\
+        type2.OBJECT_TYPE destObjectType, \n\
+        main.OBJECT_TYPE sourceObjectType, \n\
+        -- typeId of Object2\n\
+        case when main.SIDE = 1 then main.AB_OBJECTRELATIONTYPEID\n\
+             else type2.AB_OBJECTRELATIONTYPEID end objectrelationtypeId1,\n\
+        -- typeId of Object1\n\
+        case when type2.AB_OBJECTRELATIONTYPEID is null or main.SIDE = 2 then main.AB_OBJECTRELATIONTYPEID\n\
+             else type2.AB_OBJECTRELATIONTYPEID end objectrelationtypeId2, \n\
+        main.SIDE,\n\
+        case when type2.AB_OBJECTRELATIONTYPEID is  null then main.AB_OBJECTRELATIONTYPEID else type2.AB_OBJECTRELATIONTYPEID end,\n\
+        type2.RELATION_TITLE" + sql;
+    }
+       
+    // full info:
+    return (db.table([sql, params]));
+}
+
+/**
+ * Get relationType by a RelationTypeId.
+ * returns the objectrelationtypeId, title, RELATION_TYPE, direction (normal, reverse, same), hierarchy, OBJECT_TYPE dest, OBJECT_TYPE source, objectrelationtypeId1, objectrelationtypeId2, side,objectrelationtypeId, other title
+ * 
+ * @param {String} pRelationTypeId the RelationTypeId to load the full relation type for.
+ * 
+ * @return {String[][]}
+ */
+ObjectRelationUtils.getRelationType = function(pRelationTypeId)
+{
+    var data = ObjectRelationUtils.getPossibleRelationTypes(undefined, true, false, pRelationTypeId);
+    if (data.length > 0)
+        return data[0];
+    else
+        return [];
+}
\ No newline at end of file
diff --git a/process/OfferOrder_lib/OfferOrder_lib.aod b/process/OfferOrder_lib/OfferOrder_lib.aod
index dc358ccc3bfe40f08780eb51549282611e1eacdc..0df9d9a624d014c6b4583935732acbdea2b2b99e 100644
--- a/process/OfferOrder_lib/OfferOrder_lib.aod
+++ b/process/OfferOrder_lib/OfferOrder_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>OfferOrder_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/OfferOrder_lib/process.js</process>
diff --git a/process/OfferOrder_lib/process.js b/process/OfferOrder_lib/process.js
index f1c71803107007f3a91e45f0a8f2f465cd23c25d..bb660ba440d2f9ebebe90fa4883372927b681d18 100644
--- a/process/OfferOrder_lib/process.js
+++ b/process/OfferOrder_lib/process.js
@@ -271,8 +271,11 @@ ItemUtils.prototype.insertPartsList = function(columns, productId, assignedTo, c
         
         columns = columns.concat(additionalProductInfo.map(function(item) {return item[0]}));
         var colTypes = db.getColumnTypes(table, columns);
-        // partsList[rootProdId] = root node
-        __itemInsertStatement(partsList[rootProdId], assignedTo, currency, contactId);
+        
+        if (partsList.root != undefined) // if product has a parts list
+        {
+            __itemInsertStatement(partsList.root, assignedTo, currency, contactId);
+        }
 
         if (statements.length > 0)
             db.inserts(statements);
diff --git a/process/Offer_lib/Offer_lib.aod b/process/Offer_lib/Offer_lib.aod
index ab430b8f762a1e2d01245446b6485cc3a844e4f6..41247d62423c487255eb9fe234106031fd8a1b6f 100644
--- a/process/Offer_lib/Offer_lib.aod
+++ b/process/Offer_lib/Offer_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Offer_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Offer_lib/process.js</process>
diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js
index 59d3bcdc1c3cb5b9dab893f1216a965ee0123b0d..74283a23c2230be304a4e970830aa984e2cc19f7 100644
--- a/process/Offer_lib/process.js
+++ b/process/Offer_lib/process.js
@@ -80,7 +80,6 @@ OfferUtils.createNewOffer = function(pSalesprojectId, pRelationId)
     neon.openContext("Offer", null, null, neon.OPERATINGSTATE_NEW, params);
 }
 
-
 /*
  * Open Offer report, the report is translated to the language of the offer
  * 
@@ -149,6 +148,8 @@ OfferUtils.openOfferReport = function (pOfferID)
         );
     var itemData = db.table(offerItemSql);
     
+    if (itemData.length == 0)
+        return;
     
     // TODO: AddrObject implementieren
     //var addrobj = new AddrObject(contactId);
@@ -282,20 +283,26 @@ OfferUtils.openOfferReport = function (pOfferID)
 /**
  * opens an offer in NEW mode with values from an offer
  * 
- * @param pOfferId {String} id of the offer
- * @param pContactId {String} contact id
- * @param pLanguage {String} language
- * @param pCurrency {String} [currency=""]
- * @param pHeader {String} [header=""]
+ * @param {String} pOfferId of the offer
+ * @param {String} pContactId
+ * @param {String} pLanguage
+ * @param {String} [pCurrency=""]
+ * @param {String} [pHeader=""]
+ * @param {String} [pDeliveryTerm=""]
+ * @param {String} [pPaymentTerm=""]
+ * @param {String} [pSalesprojectId=""]
  */
-OfferUtils.copyOffer = function (pOfferId, pContactId, pLanguage, pCurrency, pHeader)
+OfferUtils.copyOffer = function (pOfferId, pContactId, pLanguage, pCurrency, pHeader, pDeliveryTerm, pPaymentTerm, pSalesprojectId)
 {
     var params = {
         "ContactId_param" : pContactId,
         "OfferLanguage_param" : pLanguage,
         "OfferOriginal_Id_param" : pOfferId,
         "OfferCurrency_param" : pCurrency || "",
-        "OfferHeader_param" : pHeader || ""
+        "OfferHeader_param" : pHeader || "",
+        "OfferDeliveryTerm_param" : pDeliveryTerm || "",
+        "OfferPaymentTerm_param" : pPaymentTerm || "",
+        "SalesprojectId_param" : pSalesprojectId || ""
     };
     neon.openContext("Offer", null, null, neon.OPERATINGSTATE_NEW, params);
 }
diff --git a/process/Order_lib/Order_lib.aod b/process/Order_lib/Order_lib.aod
index 9704443eca2342226d460cf7b8580483aa28e11e..3e225851b15f65e8d77e15182de060a04aee4878 100644
--- a/process/Order_lib/Order_lib.aod
+++ b/process/Order_lib/Order_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Order_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Order_lib/process.js</process>
diff --git a/process/Organisation_lib/Organisation_lib.aod b/process/Organisation_lib/Organisation_lib.aod
index 258d3dcfe721d10a42c7ba666a0aa816ec0e9d47..47bca652458c91d875f43aa22721999afeb471e7 100644
--- a/process/Organisation_lib/Organisation_lib.aod
+++ b/process/Organisation_lib/Organisation_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Organisation_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Organisation_lib/process.js</process>
diff --git a/process/Person_lib/Person_lib.aod b/process/Person_lib/Person_lib.aod
index 53a4220efa399d04c905f051c96d5cfbfc5c9d74..04c0795c9a2fcb6fcdd7f580da9ffe3a2be374e9 100644
--- a/process/Person_lib/Person_lib.aod
+++ b/process/Person_lib/Person_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Person_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Person_lib/process.js</process>
diff --git a/process/PostalAddress_lib/PostalAddress_lib.aod b/process/PostalAddress_lib/PostalAddress_lib.aod
index 71e373b8f529e2373213688ee28cc7640d243329..f7af81f2c9b9cb3ab8b20c4faa523894b5df10f7 100644
--- a/process/PostalAddress_lib/PostalAddress_lib.aod
+++ b/process/PostalAddress_lib/PostalAddress_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>PostalAddress_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/PostalAddress_lib/process.js</process>
diff --git a/process/PostalAddress_lib/process.js b/process/PostalAddress_lib/process.js
index 40445e11ecbd90447ef35c2df80f330ee39473fc..bee94a606c965fe9d760c7ada0475ece7858fd8a 100644
--- a/process/PostalAddress_lib/process.js
+++ b/process/PostalAddress_lib/process.js
@@ -22,14 +22,28 @@ function AddressUtils(){}
  * @param {String} pBuildingNo
  * @param {String} pZipCode
  * @param {String} pCity
+ * @param {String} pAddressIdentifier
  * 
  * @return {String}
  */
-AddressUtils.formatOneline = function (pCountry, pAddressLine, pBuildingNo, pZipCode, pCity)
+AddressUtils.formatOneline = function (pCountry, pAddressLine, pBuildingNo, pZipCode, pCity, pAddressIdentifier)
 {
-    return StringUtils.concat(", ", [pCountry, pAddressLine, pBuildingNo, pZipCode, pCity]);
+    return StringUtils.concat(", ", [pCountry, pAddressLine, pBuildingNo, pZipCode, pCity, pAddressIdentifier]);
 };
 
+/**
+ * format the Address in one line as a sql statement
+ * 
+ * @return {String} sql expression that can be used within a select statement
+ */
+AddressUtils.formatOnelineSql = function ()
+{
+    var maskingHelper = new SqlMaskingUtils();
+        var sqlExpression = maskingHelper.concat(["ADDRESS.COUNTRY", "ADDRESS.ADDRESS", "ADDRESS.BUILDINGNO", "ADDRESS.ZIP", "ADDRESS.CITY", "ADDRESS.ADDRIDENTIFIER"], ", ");
+    return sqlExpression;
+};
+
+
 /**
  * returns the formatted address by the ADDRESSID as one line
  * 
@@ -45,7 +59,7 @@ AddressUtils.getFormattedOnlineAddressById = function(pAddressId)
     var addr = "";
     if (addrId) 
     {
-        var select = "select ADDRESS.COUNTRY, ADDRESS.ADDRESS, ADDRESS.BUILDINGNO, ADDRESS.ZIP, ADDRESS.CITY from ADDRESS ";
+        var select = "select ADDRESS.COUNTRY, ADDRESS.ADDRESS, ADDRESS.BUILDINGNO, ADDRESS.ZIP, ADDRESS.CITY, ADDRESS.ADDRIDENTIFIER from ADDRESS ";
         var addrData = db.array(db.ROW, 
             SqlCondition.begin()
             .andPrepare("ADDRESS.ADDRESSID", addrId)
@@ -63,8 +77,8 @@ AddressUtils.getFormattedOnlineAddressById = function(pAddressId)
  * 
  * @return {String}
  */
-AddressUtils.getAddress = function(pRelationId) {
-    var address = db.array(db.ROW, SqlCondition.begin().andPrepare("CONTACT.CONTACTID", pRelationId).buildSql('select CONTACTID, ADDRESS, BUILDINGNO, ZIP, CITY, "NAME", FIRSTNAME, LASTNAME, TITLE from' + ContactUtils.getFullRelationString(), "1=0"));
+AddressUtils.getAddress = function(pContactId) {
+    var address = db.array(db.ROW, SqlCondition.begin().andPrepare("CONTACT.CONTACTID", pContactId).buildSql('select CONTACTID, ADDRESS, BUILDINGNO, ZIP, CITY, "NAME", FIRSTNAME, LASTNAME, TITLE from' + ContactUtils.getFullContactString(), "1=0"));
     
     // TODO: currently there are some relations without standard address. Use Hardcoded one.
     if (!address[1]) {
@@ -75,7 +89,7 @@ AddressUtils.getAddress = function(pRelationId) {
         address[4] = dummyAddress[3];
         
     }
-    var type = ContactUtils.getRelationTypeByRelation(pRelationId);
+    var type = ContactUtils.getContactTypeByContactId(pContactId);
     
     return AddressUtils.formatAddress(type, address[1], address[2], address[3], address[4], address[5], address[6], address[7], address[8]);
 }
@@ -103,7 +117,7 @@ AddressUtils.getAddressById = function(pAddressId) {
         address[4] = dummyAddress[4];
         
     }
-    var type = ContactUtils.getRelationTypeByRelation(address[0]);   
+    var type = ContactUtils.getContactTypeByContactId(address[0]);   
 
     var names = db.array(db.ROW, SqlCondition.begin()
                                              .andPrepare("CONTACT.CONTACTID", address[0])
diff --git a/process/Product_lib/Product_lib.aod b/process/Product_lib/Product_lib.aod
index 3f15eda57c63b66e03045e6bf55e646355106f88..9c72fa0f0cdb72396fc83c73d54fadb87bcfd7ad 100644
--- a/process/Product_lib/Product_lib.aod
+++ b/process/Product_lib/Product_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Product_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Product_lib/process.js</process>
diff --git a/process/Product_lib/process.js b/process/Product_lib/process.js
index e3f595e558d11a04394bb76beef9e4f094bd2cee..4780833eed4d897a49e271e49349fde17c00d5ca 100644
--- a/process/Product_lib/process.js
+++ b/process/Product_lib/process.js
@@ -1,3 +1,4 @@
+import("system.logging");
 import("system.util");
 import("system.SQLTYPES");
 import("system.datetime");
@@ -24,22 +25,29 @@ function ProductUtils() {}
  * 
  * @param {String} pid ProductID
  * @param {String} buySell possible values: PP, SP
+ * @param {String} [onlyStandard=false] if true, only standard price lists are selected.
  * 
  * @example productUtils.getCurrentProductPrice(vars.get("$field.PRODUCTID"), "PP")
  * 
  * @return {Array[]} currently valid product price with currency: [price, "CURRENCY"] or [] if no price found
  */
-ProductUtils.getCurrentProductPrice = function(pid, buySell) {
+ProductUtils.getCurrentProductPrice = function(pid, buySell, onlyStandard) {
     if (pid != undefined && pid != "" && buySell != undefined && buySell != "")
     {
         var today = datetime.clearTime(vars.get("sys.date"), "utc");
-        var actualPriceCondition = SqlCondition.begin()
-                    .andPrepare("PRODUCTPRICE.BUYSELL", buySell)
-                    .andPrepare("PRODUCTPRICE.PRODUCT_ID", pid)
-                    .andPrepare("PRODUCTPRICE.VALID_FROM", today, "# <= ?")
-                    .andSqlCondition(SqlCondition.begin()
-                        .orPrepare("PRODUCTPRICE.VALID_TO", today, "# >= ?")
-                        .or("PRODUCTPRICE.VALID_TO is null"), "1 = 2");
+        var actualPriceCondition = SqlCondition.begin();
+        
+        if (onlyStandard != undefined && onlyStandard)
+        {
+            actualPriceCondition.andPrepare("PRODUCTPRICE.PRICELIST", "02553fc7-4611-4914-8ff5-0b7c4e7531c9");
+        }
+                    
+        actualPriceCondition.andPrepare("PRODUCTPRICE.BUYSELL", buySell)
+                            .andPrepare("PRODUCTPRICE.PRODUCT_ID", pid)
+                            .andPrepare("PRODUCTPRICE.VALID_FROM", today, "# <= ?")
+                            .andSqlCondition(SqlCondition.begin()
+                                .orPrepare("PRODUCTPRICE.VALID_TO", today, "# >= ?")
+                                .or("PRODUCTPRICE.VALID_TO is null"), "1 = 2");
                             
         var productPriceData = db.array(db.ROW, actualPriceCondition.buildSql("select PRICE, CURRENCY from PRODUCTPRICE", "1 = 2", "order by VALID_FROM desc"));
 
@@ -173,6 +181,7 @@ ProductUtils.getProductDetails = function(pid, priceListFilter, additionalProduc
         validPriceLists = true;
         var colsPricelistValid = ["validPP.PRODUCTPRICEID", "validPP.CONTACT_ID", "validPP.PRICELIST", "validPP.PRICE", "validPP.VAT"
                         , "validPP.VALID_FROM", "validPP.VALID_TO", "validPP.BUYSELL", "validPP.FROMQUANTITY", "validPP.CURRENCY"];
+        orderby = orderby.concat(["validPP.VALID_FROM desc", "validPP.FROMQUANTITY desc"]);
 
         cols = cols.concat(colsPricelistValid);
         joins.push("left join PRODUCTPRICE validPP on " 
@@ -182,7 +191,7 @@ ProductUtils.getProductDetails = function(pid, priceListFilter, additionalProduc
                                .andPrepare(["PRODUCTPRICE", "VALID_FROM", "validPP"], datetime.date().toString(), "# <= ?")
                                .andPrepare(["PRODUCTPRICE", "FROMQUANTITY", "validPP"], priceListFilter.quantity, "# <= ?")
                                .andSqlCondition(SqlCondition.begin()
-                                    .orPrepare(["PRODUCTPRICE", "CONTACT_ID", "validPP"], priceListFilter.relationId, "# <= ?")
+                                    .orPrepare(["PRODUCTPRICE", "CONTACT_ID", "validPP"], priceListFilter.relationId)
                                     .orSqlCondition(SqlCondition.begin()
                                         .and("validPP.CONTACT_ID is null")
                                         .andPrepare(["PRODUCTPRICE", "BUYSELL", "validPP"], 'SP'), 
@@ -196,7 +205,7 @@ ProductUtils.getProductDetails = function(pid, priceListFilter, additionalProduc
                             .buildSql("select " + cols.join(", ") + " from PRODUCT " + joins.join(" "),
                                          "1 = 2",
                                          "order by " + orderby.join(", "))
-
+                                         
     var ProductData = db.table(ProductDataSql);
 
     for (var i = 0; i < ProductData.length; i++)
@@ -318,12 +327,14 @@ ProductUtils.checkForIndenticalPriceLists = function(pid, priceList) {
     var PriceLists = this.getProductDetails(pid).PriceLists;
 
     for (var pricelist in PriceLists) {
+        //different pricelist id
         //equal price list
         //equal fromquantity
         //equal currency
         //equal pp/sp
-        if (priceList.priceList == PriceLists[pricelist].priceList 
-            && priceList.fromQuantity == PriceLists[pricelist].fromQuantity 
+        if (priceList.priceListId != PriceLists[pricelist].priceListId
+            && priceList.priceList == PriceLists[pricelist].priceList 
+            && parseFloat(priceList.fromQuantity) == parseFloat(PriceLists[pricelist].fromQuantity) 
             && priceList.buySell == PriceLists[pricelist].buySell
             && priceList.currency == PriceLists[pricelist].currency) {
             
@@ -389,14 +400,15 @@ ProductUtils.removeImage = function(pProductId)
  * @class
  *
  */
-function Prod2ProdUtils(productId) {    
+function Prod2ProdUtils(productId) 
+{    
     this.productId = productId;
     this.data = undefined;
 }
 
 /**
- * Delivers an Object containing parts list structure for passed product "productId" (Constructor parameter)
- * 
+ * Delivers an Object containing parts list structure for passed product "pProductId" (Constructor parameter)
+ *  
  * @return {Object} { $prod2prodid$ { <br>
  *                       ids: [ Array containing child Prod2ProdIds for passed product "pProductId" (Constructor parameter) ] <br>
  *                       , rowdata: [ "PROD2PRODID", "DEST_ID", "SOURCE_ID", "QUANTITY", "OPTIONAL", "TAKEPRICE" ] from DB-Table PROD2PROD <br>
@@ -405,10 +417,13 @@ function Prod2ProdUtils(productId) {
  *                       , quantity: "Quantity" <br>
  *                       , optional: "0" = not optional, "1" = optional <br>
  *                       , takeprice: "0" = no price, "1" = price <br>
+ *                       , productcode: "Productcode" <br>
+ *                       , productid: "Productid" <br>
  *                  } }
  */
-Prod2ProdUtils.prototype.getPartsListObject = function() {
-    return this._relateChilds().getTreeObject();
+Prod2ProdUtils.prototype.getPartsListObject = function() 
+{
+    return this._relateChilds();
 }
 
 /**
@@ -430,9 +445,27 @@ Prod2ProdUtils.prototype.getPartsListObject = function() {
  *                    , "PRODUCTCODE"
  *                    , "PRODUCTID"] ]
  */
-Prod2ProdUtils.prototype.getPartsListForRecordContainer = function() {
-    var tree = this._relateChilds();
-    return tree.toArray(7);
+Prod2ProdUtils.prototype.getPartsListForRecordContainer = function() 
+{
+    var ret = [];
+    var childs = this._relateChilds();
+
+    __push(childs.root);
+
+    function __push(pObj)
+    {
+        for(var i = 0; i < pObj.ids.length; i++)
+        {
+            var rowdata = childs[pObj.ids[i]].rowdata;
+            var UID = util.getNewUUID();
+            var PARENTID = childs[pObj.ids[i]].destid;
+
+            rowdata = [UID, PARENTID].concat(rowdata);
+            ret.push(rowdata);
+            __push( childs[pObj.ids[i]] );
+        }
+    }
+    return ret;
 }
 
 /**
@@ -442,18 +475,21 @@ Prod2ProdUtils.prototype.getPartsListForRecordContainer = function() {
 * 
 * @return {String[]} [ "SOURCE_ID" ]
 */
-Prod2ProdUtils.prototype.getPartsListProdIds = function() {
+Prod2ProdUtils.prototype.getPartsListProdIds = function() 
+{
     var ret = [];
-    var childs = this._relateChilds().getTreeObject();
+    var childs = this._relateChilds();
 
     __push(childs.root);
 
     return ret;
 
-    function __push(pObj) {
-        for (var i = 0; i < pObj.ids.length; i++) {
+    function __push(pObj)
+    {
+        for(var i = 0; i < pObj.ids.length; i++)
+        {
             ret.push(childs[pObj.ids[i]].sourceid);
-            __push(childs[pObj.ids[i]]);
+            __push( childs[pObj.ids[i]] );
         }
     }
 }
@@ -465,7 +501,8 @@ Prod2ProdUtils.prototype.getPartsListProdIds = function() {
 * 
 * @return {String[]} [ "DEST_ID" ]
 */
-Prod2ProdUtils.prototype.getParentProdIds = function() {
+Prod2ProdUtils.prototype.getParentProdIds = function() 
+{
     var ret = [];
     var parents = this._relateParents();
 
@@ -473,10 +510,12 @@ Prod2ProdUtils.prototype.getParentProdIds = function() {
 
     return ret;
 
-    function __push(pObj) {
-        for (var i = 0; i < pObj.ids.length; i++) {
+    function __push(pObj)
+    {
+        for(var i = 0; i < pObj.ids.length; i++)
+        {
             ret.push(parents[pObj.ids[i]].destid);
-            __push(parents[pObj.ids[i]]);
+            __push( parents[pObj.ids[i]] );
         }
     }
 }
@@ -487,9 +526,10 @@ Prod2ProdUtils.prototype.getParentProdIds = function() {
 *
 * @ignore
 */
-Prod2ProdUtils.prototype._initProd2ProdData = function() {
+Prod2ProdUtils.prototype._initProd2ProdData = function()
+{
     if (this.data == undefined) {
-        this.data = db.table("select SOURCE_ID, DEST_ID, PROD2PRODID, QUANTITY, OPTIONAL, TAKEPRICE, PRODUCTCODE, PRODUCTID, SOURCE_ID, DEST_ID "
+        this.data = db.table("select PROD2PRODID, DEST_ID, SOURCE_ID, QUANTITY, OPTIONAL, TAKEPRICE, PRODUCTCODE, PRODUCTID "
                     + "from PROD2PROD join PRODUCT on PROD2PROD.SOURCE_ID = PRODUCTID "
                     + "order by PRODUCTCODE ");
     }
@@ -498,78 +538,77 @@ Prod2ProdUtils.prototype._initProd2ProdData = function() {
 /**
  * object tree to relate products by DEST_ID / SOURCE_ID.
  **/
-Prod2ProdUtils.prototype._buildTree = function(supervised) {
+Prod2ProdUtils.prototype._buildTree = function(pSupervised)
+{
     this._initProd2ProdData();
-    var productId = this.productId;
+
+        var tree = { root: {ids: [], sourceid: this.productId } };
         
-    var tree = DataTree.begin(this.productId).addArray(this.data,
-        function(pUid, pNode)
+        if(pSupervised)
+            tree = { root: {ids: [], destid: this.productId } };
+
+        for (var i = 0; i < this.data.length; i++)
         {
-            if (pUid == productId)
-            {
-                pNode["sourceid"] = productId;
-                if (supervised) 
-                {
-                    pNode["destid"] = productId;
-                }
-            } 
-            else
+            var prod2prodid = this.data[i][0];
+            if ( tree[prod2prodid] == undefined )   
             {
-                pNode["destid"] = pNode.parent;
-                pNode["sourceid"] = pUid;
-                
-                if (pNode.data != undefined) {
-                    pNode["quantity"] = pNode.data[1];
-                    pNode["optional"] = pNode.data[2];
-                    pNode["takeprice"] = pNode.data[3];
-                    pNode["productcode"] = pNode.data[4];
-                    pNode["productid"] = pNode.data[5];
-                }
+                tree[prod2prodid] = {
+                    ids: [] 
+                    , rowdata: this.data[i].slice(0)//copy to get NativeArray for concatenation
+                    , destid: this.data[i][1]
+                    , sourceid: this.data[i][2] 
+                    , quantity: this.data[i][3]
+                    , optional: this.data[i][4]
+                    , takeprice: this.data[i][5]
+                    , productcode: this.data[i][6]
+                    , productid: this.data[i][7]
+                };
             }
         }
-    );
+        
+        return tree;
 
-    return tree;
 }
 
-Prod2ProdUtils.prototype._relateChilds = function() {
+Prod2ProdUtils.prototype._relateChilds = function()
+{
     var tree = this._buildTree(false);
-    __relate(this.productId);
+
+    __relate("root");
 
     return tree;
 
-    function __relate(id) {
-        var treeObject = tree.getTreeObject();
-        if (treeObject[id] != undefined)
+    function __relate(pID)
+    {
+        for ( var id in tree )
         {
-            for (var treeId in treeObject) {
-                if (treeObject[treeId].destid == treeObject[id].sourceid && treeObject[id].ids.indexOf(treeId) == -1) { 
-                    treeObject[id].ids.push(treeId);
-                    __relate(treeId);
-                }    
-            }
+            if ( tree[id].destid == tree[pID].sourceid && tree[pID].ids.indexOf(id) == -1 )
+            {   
+                tree[pID].ids.push(id);
+                __relate(id);
+            }    
         }
     }
 }
 
-Prod2ProdUtils.prototype._relateParents = function() {
+Prod2ProdUtils.prototype._relateParents = function() 
+{
     var tree = this._buildTree(true);
 
-    __relate(this.productId);
+    __relate("root");
 
     return tree;
 
 
-    function __relate(id) {
-        var treeObject = tree.getTreeObject();
-        if (treeObject[id] != undefined)
+    function __relate(pID)
+    {
+        for ( var id in tree )
         {
-            for (var treeId in treeObject) {
-                if (treeObject[treeId].sourceid == treeObject[id].destid && treeObject[id].ids.indexOf(treeId) == -1) {   
-                    treeObject[id].ids.push(treeId);
-                    __relate(treeId);
-                }    
-            }
+            if ( tree[id].sourceid == tree[pID].destid && tree[pID].ids.indexOf(id) == -1 )
+            {   
+                tree[pID].ids.push(id);
+                __relate(id);
+            }    
         }
     }
 }
\ No newline at end of file
diff --git a/process/Proto_lib/Proto_lib.aod b/process/Proto_lib/Proto_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..dd8841dc7aba84fa95c02f339956908458bb7307
--- /dev/null
+++ b/process/Proto_lib/Proto_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.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
+  <name>Proto_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/Proto_lib/process.js</process>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/Proto_lib/process.js b/process/Proto_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..a13e0793805f1ed6623e385129c477d426268ac6
--- /dev/null
+++ b/process/Proto_lib/process.js
@@ -0,0 +1,26 @@
+/**
+ * Methods to manage properties of objects that can be instanciated
+ * Do not create an instance of this itself!
+ *
+ * @class
+ */
+function ProtoPropertyUtils(){}
+
+/**
+ * makes an property of a object semi read-only
+ * this means a property with a undersocre-prefix "_" holds the actual value and the origin prop cannot be written
+ *
+ * @param {Object} pObj the object that holds the property
+ * @param {String} pPropName name of the property within pObj to mark as readonly
+ *
+ * @return void
+ */
+ProtoPropertyUtils.makeSemiReadOnly = function(pObj, pPropName)
+{
+    Object.defineProperty(pObj, pPropName, {
+        enumerable: true,
+        get: function (){
+            return pObj["_" + pPropName];
+        }
+    });
+};
\ No newline at end of file
diff --git a/process/Report_lib/Report_lib.aod b/process/Report_lib/Report_lib.aod
index b19c68dfbdd04bf79a54a83ea1fc0fc5db692b01..b847e04de6288a50fd822dffef554f45c285423f 100644
--- a/process/Report_lib/Report_lib.aod
+++ b/process/Report_lib/Report_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Report_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Report_lib/process.js</process>
diff --git a/process/Report_lib/process.js b/process/Report_lib/process.js
index d1f68a387e970ef771d0896861221c0576bcc52d..af40b179198249a317e34ed06a5f28a202a21c5e 100644
--- a/process/Report_lib/process.js
+++ b/process/Report_lib/process.js
@@ -15,8 +15,8 @@ import("system.vars");
  * reportData.add(moreDataValues);<br>
  * <br>
  * <br>
- * logging.log(reportData.getReportFields().toSource());<br>
- * logging.log(reportData.getReportData().toSource());<br>
+ * logMsg(reportData.getReportFields().toSource());<br>
+ * logMsg(reportData.getReportData().toSource());<br>
  * 
  * @class
  * @param {Array} [pFieldNames=[]] the report fieldnames as an array
diff --git a/process/Salesproject_lib/Salesproject_lib.aod b/process/Salesproject_lib/Salesproject_lib.aod
index 13d8c745ea684e5a5bdcedf8dd60cc60c56f8f0f..06956e427082baea872c1f395aca9c5337032e42 100644
--- a/process/Salesproject_lib/Salesproject_lib.aod
+++ b/process/Salesproject_lib/Salesproject_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Salesproject_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Salesproject_lib/process.js</process>
diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js
index 2386133f8d75ff8c953ed46260d21e16614ee552..380aecbc0df64c6f1984150721286c52dfcecdf7 100644
--- a/process/Salesproject_lib/process.js
+++ b/process/Salesproject_lib/process.js
@@ -1,4 +1,3 @@
-import("system.logging");
 import("system.neon");
 import("system.vars");
 import("system.util");
@@ -81,3 +80,16 @@ Salesproject.getSalesProjectTitleById = function(pSalesProjectId)
                         .andPrepare("SALESPROJECT.SALESPROJECTID", pSalesProjectId)
                         .buildSql("select PROJECTTITLE from SALESPROJECT", "1=0"));
 }
+
+/**
+ * Create a new Salesproject and open the Salesproject context in NEW-mode
+ */
+Salesproject.createNewSalesproject= function(pRelationId)
+{
+    var params = {};
+    
+    if (pRelationId)
+        params["ContactId_param"] = pRelationId;
+    
+    neon.openContext("Salesproject", null, null, neon.OPERATINGSTATE_NEW, params);
+}
diff --git a/process/Sql_lib/Sql_lib.aod b/process/Sql_lib/Sql_lib.aod
index 87263713d4f8d649bdfb0f7ce55c0c9b57dfd413..be614f7e821c6a2eb65bd21911a0db57c6672077 100644
--- a/process/Sql_lib/Sql_lib.aod
+++ b/process/Sql_lib/Sql_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Sql_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Sql_lib/process.js</process>
diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js
index 195c85cb415d1ab8dfcd35cf22bfff512480a6bd..ffeaa776d32b61b284bf2447b4ded80a40b4c140 100644
--- a/process/Sql_lib/process.js
+++ b/process/Sql_lib/process.js
@@ -204,6 +204,46 @@ SqlCondition.prototype.orPrepare = function(field, value, cond, fieldType) {
     return this.or(cond);
 }
 
+/**
+ * same as the "andPrepare"-function but only applied if the passed "value" is truely
+ * @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 "\"
+ * @param {Numeric | Boolean} [fieldType] SQL-column-type; if the fieldType is not given it's loaded automatically;
+ *                              The loaded type is cached if no type is given. So it is also safe to use this in a loop.
+ *                              e.g.
+ *                              for (...) {
+ *                                  cond.andPrepare("SALESPROJECT_CLASSIFICATION.TYPE", entry, "# <> ?")
+ *                              }
+ * @return {SqlCondition} current SqlCondition-object
+ */
+SqlCondition.prototype.andPrepareIfSet = function(field, value, cond, fieldType) {
+    if (value)
+        return this.andPrepare(field, value, cond, fieldType);
+    return this;
+}
+
+/**
+ * same as the "orPrepare"-function but only applied if the passed "value" is truely
+ * @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 "\"
+ * @param {Numeric | Boolean} [fieldType] SQL-column-type; if the fieldType is not given it's loaded automatically;
+ *                              The loaded type is cached if no type is given. So it is also safe to use this in a loop.
+ *                              e.g.
+ *                              for (...) {
+ *                                  cond.andPrepare("SALESPROJECT_CLASSIFICATION.TYPE", entry, "# <> ?")
+ *                              }
+ * @return {SqlCondition} current SqlCondition-object
+ */
+SqlCondition.prototype.orPrepareIfSet = function(field, value, cond, fieldType) {
+    if (value)
+        return this.orPrepare(field, value, cond, fieldType);
+    return this;
+}
+
 /**
  * same as the "andPrepare"-function but with validation of adito-variables functionality
  * @param {String | String[]} field the database field as "tablename.columnname"; e.g. "ORGANISATION.NAME" or as array with column-alias: ["ORGANISATION", "NAME", "myorgAlias"]
@@ -716,7 +756,7 @@ SqlMaskingUtils.prototype.castLob = function(field, targetLength) {
             res = "DBMS_LOB.SUBSTR(" + field + ", " + targetLength + ", 1)";
             break;
         default:
-            res = this.cast(field, "varchar", targetLength);
+            res = this.cast(field, SQLTYPES.VARCHAR, targetLength);
             break;
     }
     return res;
@@ -1062,12 +1102,12 @@ SqlUtils.getSingleColumnType = function(fieldOrTableName, columnName, alias) {
 *
 * sqlPageData(sql, blockSize, function (pData, pRunNo){
 *     var j = pData.length;//pData is the current block with data
-*     logging.log(pRunNo.toString() + "#" + j);//pRunNo is the amount how often the func. has been already called
+*     logMsg(pRunNo.toString() + "#" + j);//pRunNo is the amount how often the func. has been already called
 *     //you can calculate the progress easily by: progress = (blockSize* (pRunNo-1) + pData.length) / (allRows - startOffset)
 *     //example in per cent:
 *     var startOffset = 0;//we did not pass any startOffset to sqlPageData - this is equivalent to zero
 *     var progress = (blockSize* (pRunNo-1) + pData.length) / (allRows - startOffset);
-*     logging.log("progess: " + eMath.roundDec(progress * 100, 2, eMath.ROUND_CEILING) + "%");
+*     logMsg("progess: " + eMath.roundDec(progress * 100, 2, eMath.ROUND_CEILING) + "%");
 *
 *     for (var i = 0; i < j; i++)
 *     {
@@ -1076,7 +1116,7 @@ SqlUtils.getSingleColumnType = function(fieldOrTableName, columnName, alias) {
 *     }
 *
 *     count += pRunNo * 100;
-*     logging.log("count:" + count);//you cannot overwrite a variable of 'sqlPageData' by accident
+*     logMsg("count:" + count);//you cannot overwrite a variable of 'sqlPageData' by accident
 * });
 *
 * logging.show(letValues);//contains orgnames
diff --git a/process/StandardObject_lib/StandardObject_lib.aod b/process/StandardObject_lib/StandardObject_lib.aod
new file mode 100644
index 0000000000000000000000000000000000000000..94c1fcc045a7d0035211ebd8afb1d46832b39065
--- /dev/null
+++ b/process/StandardObject_lib/StandardObject_lib.aod
@@ -0,0 +1,10 @@
+<?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.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
+  <name>StandardObject_lib</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <documentation>%aditoprj%/process/StandardObject_lib/documentation.adoc</documentation>
+  <process>%aditoprj%/process/StandardObject_lib/process.js</process>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/StandardObject_lib/documentation.adoc b/process/StandardObject_lib/documentation.adoc
new file mode 100644
index 0000000000000000000000000000000000000000..894375807dd72b42d194052c09c553dbab27367d
--- /dev/null
+++ b/process/StandardObject_lib/documentation.adoc
@@ -0,0 +1,3 @@
+StandardObject_lib
+==================
+
diff --git a/process/StandardObject_lib/process.js b/process/StandardObject_lib/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e39fc12e4b74103b26e936065aa1367993c2427
--- /dev/null
+++ b/process/StandardObject_lib/process.js
@@ -0,0 +1,306 @@
+import("system.logging");
+import("system.db");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+import("Contact_lib");
+import("Communication_lib");
+
+function StandardObject (pObjectType, pObjectID, pScopeType, pScopeID) {
+    if (!this._isValidType("object", pObjectType))
+        throw new Error("StandardObject: Invalid object type")
+    if (!this._isValidType("scope", pScopeType))
+        throw new Error("StandardObject: Invalid scope type")
+    
+    this.objectType = pObjectType
+    this.objectID = pObjectID
+    this.scopeType = pScopeType
+    this.scopeID = pScopeID
+}
+
+StandardObject.CONST_OBJECT_ADDRESS = function () {
+    return "Address"
+}
+
+StandardObject.CONST_OBJECT_COMMUNICATION = function () {
+    return "Communication"
+}
+
+StandardObject.CONST_SCOPE_PERSON = function () {
+    return "Person"
+}
+
+StandardObject.CONST_SCOPE_ORGANISATION = function () {
+    return "Organisation"
+}
+
+StandardObject.prototype._isValidType = function (pFor, pType) {
+    var validObjectTypes = ["Address", "Communication"]
+    var validScopeTypes = ["Person", "Organisation"]
+    if (pFor === "object") {
+        return validObjectTypes.indexOf(pType) !== -1
+    } else if (pFor === "scope"){
+        return validScopeTypes.indexOf(pType) !== -1
+    } else {
+        return false;
+    }
+}
+
+/**
+ * Asserts the object type of this instance against the
+ * given type.
+ * 
+ * @throws Error if assertion fails.
+ */
+StandardObject.prototype._assertObjectType = function (pType) {
+    if (this.objectType !== pType)
+        throw new Error("Object assertion: Invalid type");
+}
+
+/**
+ * Asserts the scope type of this instance against the
+ * given type.
+ * 
+ * @throws Error if assertion fails.
+ */
+StandardObject.prototype._assertScopeType = function (pType) {
+    if (this.scopeType !== pType)
+        throw new Error("Scope assertion: Invalid type");
+}
+
+/**
+ * Asserts that the object ID is NOT null.
+ * 
+ * @throws Error if assertion fails.
+ */
+StandardObject.prototype._assertObjectIdNotNull = function () {
+    if (this.objectID === null)
+        throw new Error("Object assertion: ID is null");
+}
+
+/**
+ * Asserts that the scope ID is NOT null.
+ * 
+ * @throws Error if assertion fails.
+ */
+StandardObject.prototype._assertScopeIdNotNull = function () {
+    if (this.scopeID === null)
+        throw new Error("Scope assertion: ID is null");
+}
+
+/**
+ * Shall be executed in the `valueProcess` of the `ADDRESS_ID` in the
+ * `Person` entity. This function will take care about the standard address
+ * of the linked organisation.o
+ * 
+ * @param pSelectedOrganisationID The ID of the currently selected organisation.
+ * @return Standard address to apply to the field or null
+ * (if no standard address was found)
+ */
+StandardObject.prototype.onPersonValueChange = function (pSelectedOrganisationID) {
+    this._assertScopeIdNotNull();
+    
+    // Check if the organisation has an standard address
+    var addressID = this._getCompanyStandardAddress(pSelectedOrganisationID);
+    
+    return addressID;
+}
+
+/**
+ * Shall be executed on the `onDBInsert` process of the recordContainer
+ * of the object type (Address or Communication). This algorithm works
+ * on a "random" basis: Which object gets first inserted will get the
+ * place as standard.
+ */
+StandardObject.prototype.onObjectInsert = function () {
+    this._assertObjectIdNotNull();
+    this._assertScopeIdNotNull(); 
+    
+    if (this.objectType === StandardObject.CONST_OBJECT_ADDRESS()) {
+        this._onAddressInsert();
+    } else if (this.objectType === StandardObject.CONST_OBJECT_COMMUNICATION) {
+        this._onCommunicationInsert();
+    }
+}
+
+/**
+ * Shall be execute only on the `onDBInsert` process of the recordContainer
+ * of the `Address` entity. This will set the standard address on the
+ * contact if it's currently null.
+ */
+StandardObject.prototype._onAddressInsert = function () {
+    // Assert
+    this._assertObjectType(StandardObject.CONST_OBJECT_ADDRESS());
+    
+    if (!this._hasContactStandardAddress(this.scopeID)) {
+        this._setContactStandardAddress(this.objectID, this.scopeID);
+    }
+}
+
+StandardObject.prototype.onPersonUpdate = function (pOrganisationID) {
+    // Assert
+    this._assertScopeType(StandardObject.CONST_SCOPE_PERSON());
+    
+    var isOrganisationAddress = this._isOrganisationAddress(this.scopeID);
+    
+    if (isOrganisationAddress) {
+        // Update to new address of org
+        var addressID = this._getCompanyStandardAddress(pOrganisationID);
+        
+        this._setContactStandardAddress(addressID, this.scopeID);
+    }
+}
+
+StandardObject.prototype.onCommunicationInsert = function (pMediumID) {
+    // Assert
+    this._assertObjectType(StandardObject.CONST_OBJECT_COMMUNICATION());
+    this._assertObjectIdNotNull();
+    this._assertScopeIdNotNull();
+    
+    var mediumCategory = this._getMediumCategory(pMediumID);
+    
+    var hasStandard = this._hasStandardCommunicationByMedium(this.scopeID, mediumCategory);
+    if (!hasStandard) {
+        this._setStandardCommunication(this.objectID, 1);
+    }
+}
+
+StandardObject.prototype.onCommunicationUpdate = function (pMediumID) {
+    // Assert
+    this._assertObjectType(StandardObject.CONST_OBJECT_COMMUNICATION());
+    this._assertObjectIdNotNull();
+    this._assertScopeIdNotNull();
+    
+    this._setStandardCommunication(this.objectID, 0);
+    
+    var mediumCategory = this._getMediumCategory(pMediumID);
+    
+    var contactID = this._getContactIdByCommunication(this.objectID);
+    
+    var hasStandard = this._hasStandardCommunicationByMedium(contactID, mediumCategory);
+    if (!hasStandard)
+        this._setStandardCommunication(this.objectID, 1);
+}
+
+/**
+ * Checks if the given contact ID has any address ID set. If there is a standard
+ * address it will return `true`, otherwise `false`. This function asserts that
+ * it's currently working on a `Address` object.
+ * 
+ * @param pContactID Contact ID to check.
+ * @return If the contact ID has standard address.
+ */
+StandardObject.prototype._hasContactStandardAddress = function (pContactID) {
+    this._assertObjectType(StandardObject.CONST_OBJECT_ADDRESS());
+    
+    var databaseResult = db.cell("select ADDRESS_ID from CONTACT"
+        + " where CONTACTID = '" + pContactID + "'");
+    
+    return databaseResult !== "";
+}
+
+/**
+ * Will set the given address ID on the given contact ID. This function asserts
+ * that it's currently working on an `Address` object.
+ * 
+ * @param pAddressID New address ID to set on the contact.
+ * @param pContactID The contact ID to set the address ID on. 
+ */
+StandardObject.prototype._setContactStandardAddress = function (pAddressID, pContactID) {
+    // Assert.
+    this._assertObjectType(StandardObject.CONST_OBJECT_ADDRESS());
+    
+    // Update data.
+    db.updateData(
+        "CONTACT", 
+        ["ADDRESS_ID"], 
+        db.getColumnTypes("CONTACT", ["ADDRESS_ID"]), 
+        [pAddressID], 
+        "CONTACTID = '" + pContactID + "'");
+}
+
+/**
+ * Will return the standard address of the given organisation. If the organisation
+ * has no standard address set it will just return null.
+ * 
+ * @return Standard address of the organisation or null.
+ */
+StandardObject.prototype._getCompanyStandardAddress = function (pOrganisationID) {
+    var addressIdResult = db.cell("select ADDRESS_ID from CONTACT"
+        + " where ORGANISATION_ID = '" + pOrganisationID + "'"
+        + " and ADDRESS_ID is not null and PERSON_ID is null");
+    
+    if (addressIdResult === "")
+        return null;
+    return addressIdResult;
+}
+
+/**
+ * Checks if the given contact ID already has a standard set with the given medium
+ * category.
+ * 
+ * @param pContactID {String} Contact ID to check.
+ * @param pMediumCategory {String} Medium category to check.
+ * @return {Boolean} If the contact already has a standard addres with the given
+ * medium category.
+ */
+StandardObject.prototype._hasStandardCommunicationByMedium = function (pContactID, pMediumCategory) {   
+    var dbResult = db.array(db.COLUMN, "select CHAR_VALUE from COMMUNICATION"
+        + " left join AB_KEYWORD_ENTRY on KEYID = MEDIUM_ID"
+        + " left join AB_KEYWORD_ATTRIBUTERELATION on AB_KEYWORD_ENTRY_ID = AB_KEYWORD_ENTRYID"
+        + " where STANDARD = 1 and CONTACT_ID = '" + pContactID + "' and KEYID in ('" + CommUtil.getMediumIdsByCategory(pMediumCategory).join("', '") +  "')");
+    
+    return dbResult.indexOf(pMediumCategory) !== -1;
+}
+
+/**
+ * Resolves the given pMediumID with the category.
+ * 
+ * @param pMediumID {String} ID of the medium to resolve.
+ * @return {String} Resovled category.
+ */
+StandardObject.prototype._getMediumCategory = function (pMediumID) {
+    var categories = KeywordUtils.getAttributeRelationsByKey(pMediumID, $KeywordRegistry.communicationMedium())
+    
+    return categories.category;
+}
+
+/**
+ * Will set the given communication ID as standard. (Will update the `STANDARD`
+ * column.)
+ * 
+ * @param pCommunicationID {String} The communication ID to set as standard.
+ * @param pValue {Number} 0 or 1 (boolean)
+ */
+StandardObject.prototype._setStandardCommunication = function (pCommunicationID, pValue) {
+    // Assert.
+    this._assertObjectType(StandardObject.CONST_OBJECT_COMMUNICATION());
+    
+    // Update data.
+    db.updateData(
+        "COMMUNICATION", 
+        ["STANDARD"], 
+        db.getColumnTypes("COMMUNICATION", ["STANDARD"]), 
+        [pValue], 
+        "COMMUNICATIONID = '" + pCommunicationID + "'");
+}
+
+/**
+ * Will return the Contact ID by the given communication ID.
+ * 
+ * @param pCommunicationID {String} Communication ID to get the contact ID for.
+ * @return The contact ID.
+ */
+StandardObject.prototype._getContactIdByCommunication = function (pCommunicationID) {
+    return db.cell("select CONTACT_ID from COMMUNICATION where COMMUNICATIONID = '" + pCommunicationID + "'");
+}
+
+StandardObject.prototype._isOrganisationAddress = function (pAddressID) {
+    var contactID = db.cell("select CONTACTID from CONTACT where ADDRESS_ID = '" + pAddressID + "'");
+    
+    if (contactID === "")
+        return false;
+    
+    var contactType = ContactUtils.getContactTypeByContactId(contactID);
+    
+    return contactType === 1;
+}
\ No newline at end of file
diff --git a/process/Timetracking_lib/Timetracking_lib.aod b/process/Timetracking_lib/Timetracking_lib.aod
index f993357a8648d4a835f33fc6a82bc08c5a57412c..b514721991f2a2544cf57c10e3bc5d89c0571d7b 100644
--- a/process/Timetracking_lib/Timetracking_lib.aod
+++ b/process/Timetracking_lib/Timetracking_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Timetracking_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Timetracking_lib/process.js</process>
diff --git a/process/Util_lib/Util_lib.aod b/process/Util_lib/Util_lib.aod
index c366112be941a016e291c1ce3312ca531b2cc95c..18ccba5128774c467915662c198183f2f6f93744 100644
--- a/process/Util_lib/Util_lib.aod
+++ b/process/Util_lib/Util_lib.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>Util_lib</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/Util_lib/process.js</process>
diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js
index 3b5cc6b09496cf7cfb89ccafdaafcf635dc62bc4..d6cde464c42170fbce7086f0f39022c393a26545 100644
--- a/process/Util_lib/process.js
+++ b/process/Util_lib/process.js
@@ -1,6 +1,6 @@
+import("system.logging");
 import("system.neon");
 import("system.project");
-import("system.logging");
 import("system.process");
 import("system.db");
 import("system.util");
@@ -39,6 +39,72 @@ StringUtils.concat = function(pSeparator, pElements)
    return res;
 };
 
+/**
+ * Class containing static utility functions for numbers
+ * Do not create an instance of this
+ * 
+ * @class
+ */
+function NumberUtils(){}
+
+/**
+ * Check iv the value is inside of the min / max values. 
+ * INCLUDING min / max
+ *
+ * @param {Number} pValue value to check
+ * @param {Number} pMin min value INCLUSIVE
+ * @param {Number} pMax max value INCLUSIVE 
+ * @param {Boolean} [pIgnoreNull=true] return True if pValue is null
+ * 
+ * @return {Boolean}
+ */
+NumberUtils.isInside = function(pValue, pMin, pMax, pIgnoreNull)
+{
+    if (pIgnoreNull == undefined)
+        pIgnoreNull = true;
+    
+    return pValue >= pMin && pValue <= pMax || pIgnoreNull && (pValue == null || isNaN(pValue));
+};
+
+/**
+ * For use in validationProcess. Calls result.string(...) with error message, if number is not inside of the given values
+ * INCLUDING min / max.
+ * 
+ * @param {Number} pTitle title to display in error message. Should be the name of the field and it will be translated.
+ * @param {Number} pValue value to check
+ * @param {Number} pMin min value INCLUSIVE
+ * @param {Number} pMax max value INCLUSIVE 
+ * @param {Boolean} [pIgnoreNull=true] return True if pValue is null
+ * 
+ * @return {String|False} returns the error message or false 
+ * 
+ * @example
+ *  var value = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.DISCOUNT")); <br>
+ *   <br>
+ *  var validationResult = NumberUtils.validateIsBetweenFloat("Discount", value, 0, 100); <br>
+ *   <br>
+ *  if (validationResult) <br>
+ *  { <br>
+ *      result.string(validationResult); <br>
+ *  } <br>
+ */
+NumberUtils.validateIsBetweenFloat = function(pTitle, pValue, pMin, pMax, pIgnoreNull)
+{
+    if(pValue.includes(","))
+        pValue = pValue.replace(",", ".");
+    
+    var discount = parseFloat(pValue);
+    
+    if(isNaN(discount))
+        return false;
+    
+    if (!NumberUtils.isInside(discount, 0, 100, pIgnoreNull))
+    {
+        return (translate.withArguments("${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3", [translate.text(pTitle), discount, pMin, pMax]));
+    }
+    return false;
+}
+
 /**
  * Class containing static utility functions for use with arrays
  * Do not create an instance of this!
diff --git a/process/_test_clientProcess/_test_clientProcess.aod b/process/_test_clientProcess/_test_clientProcess.aod
index 71b66312f6dd84b5369075feff91e149de0a0dcc..fed7f21f22aef10ea93a966bab6cf4f06973d949 100644
--- a/process/_test_clientProcess/_test_clientProcess.aod
+++ b/process/_test_clientProcess/_test_clientProcess.aod
@@ -1,7 +1,10 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>_test_clientProcess</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/_test_clientProcess/process.js</process>
   <alias>Data_alias</alias>
+  <variants>
+    <element>EXECUTABLE</element>
+  </variants>
 </process>
diff --git a/process/autostartNeon/autostartNeon.aod b/process/autostartNeon/autostartNeon.aod
index 6db0d823bdcfd3f4f2665450c8a52274d11cce85..348fc7c6ca8c2be930aa7723be1d1012d813380c 100644
--- a/process/autostartNeon/autostartNeon.aod
+++ b/process/autostartNeon/autostartNeon.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>autostartNeon</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/autostartNeon/process.js</process>
diff --git a/process/indexsearch_patternextension/indexsearch_patternextension.aod b/process/indexsearch_patternextension/indexsearch_patternextension.aod
index 88ec85ec6e55943e74b601b9a1e7ccd5158fb58d..b7e2519c6746699347c0e1c7d199e304db788d48 100644
--- a/process/indexsearch_patternextension/indexsearch_patternextension.aod
+++ b/process/indexsearch_patternextension/indexsearch_patternextension.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>indexsearch_patternextension</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/indexsearch_patternextension/process.js</process>
diff --git a/process/runIndexer_ws/runIndexer_ws.aod b/process/runIndexer_ws/runIndexer_ws.aod
index 264fd8f40a7613da5dc3435d16d19a904e2e64f6..3264bb28ba9b6c1c59d25074ff1f807ca770cbe8 100644
--- a/process/runIndexer_ws/runIndexer_ws.aod
+++ b/process/runIndexer_ws/runIndexer_ws.aod
@@ -1,5 +1,5 @@
 <?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.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.0">
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
   <name>runIndexer_ws</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <process>%aditoprj%/process/runIndexer_ws/process.js</process>
@@ -7,4 +7,5 @@
   <style>REST</style>
   <loginTypeId>internal.none</loginTypeId>
   <restrictedRoles />
+  <alias>Data_alias</alias>
 </process>
diff --git a/report/Offer_report/reportData.jrxml b/report/Offer_report/reportData.jrxml
index 655c1c8169be52ea690c238ed1a74fe12a714a30..621f6a5eed97ae0c86c7206d3aae0377138b8f01 100644
--- a/report/Offer_report/reportData.jrxml
+++ b/report/Offer_report/reportData.jrxml
@@ -24,7 +24,7 @@
 	<parameter name="OfferDeliveryTerm" class="java.lang.String"/>
 	<parameter name="responsible" class="java.lang.String"/>
 	<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
-		<defaultValueExpression><![CDATA["C:\\entwicklungszweige\\0.0\\project\\xRM-Basic5.1\\report\\Offer_report\\"]]></defaultValueExpression>
+		<defaultValueExpression><![CDATA["C:\\adito\\0.0\\project\\basic 2019\\report\\Offer_report\\"]]></defaultValueExpression>
 	</parameter>
 	<parameter name="adito.datasource.subdata" class="java.lang.Object"/>
 	<parameter name="SUMITEMSUM" class="java.lang.Double"/>
diff --git a/report/Organisation_report/reportData.jrxml b/report/Organisation_report/reportData.jrxml
index 77d145f5a1945d085d9029f0efad16e510ef0207..b0c34aca470d12608851f89e298a6ddc4f21b19f 100644
--- a/report/Organisation_report/reportData.jrxml
+++ b/report/Organisation_report/reportData.jrxml
@@ -210,7 +210,9 @@
 		</band>
 		<band height="19">
 			<textField>
-				<reportElement x="0" y="2" width="100" height="15" forecolor="#0033FF" uuid="4b8833cc-3fda-4a75-ae61-83fbfe995f72"/>
+				<reportElement x="0" y="2" width="100" height="15" forecolor="#0033FF" uuid="4b8833cc-3fda-4a75-ae61-83fbfe995f72">
+					<printWhenExpression><![CDATA[$P{ORGAttr} != null && !$P{ORGAttr}.equals("")]]></printWhenExpression>
+				</reportElement>
 				<textElement>
 					<font fontName="Segoe UI" size="8" isUnderline="true"/>
 				</textElement>
@@ -226,7 +228,9 @@
 				<textFieldExpression><![CDATA[$P{ORGAttr}]]></textFieldExpression>
 			</textField>
 			<frame>
-				<reportElement stretchType="RelativeToBandHeight" x="0" y="2" width="555" height="16" uuid="62244829-371e-4972-b91d-cca3c857b15e"/>
+				<reportElement stretchType="RelativeToBandHeight" x="0" y="2" width="555" height="16" isPrintInFirstWholeBand="true" uuid="62244829-371e-4972-b91d-cca3c857b15e">
+					<printWhenExpression><![CDATA[$P{ORGAttr} != null && !$P{ORGAttr}.equals("")]]></printWhenExpression>
+				</reportElement>
 				<box>
 					<pen lineWidth="1.0"/>
 					<topPen lineWidth="1.0"/>
diff --git a/role/PROJECT_Administrator/PROJECT_Administrator.aod b/role/PROJECT_Administrator/PROJECT_Administrator.aod
new file mode 100644
index 0000000000000000000000000000000000000000..49266936de0d7480ee3bcb1c58c4c1d84b0e9a05
--- /dev/null
+++ b/role/PROJECT_Administrator/PROJECT_Administrator.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<role xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/role/1.2.0">
+  <name>PROJECT_Administrator</name>
+  <title>Administrator</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</role>
diff --git a/role/PROJECT_Everyone/PROJECT_Everyone.aod b/role/PROJECT_Everyone/PROJECT_Everyone.aod
new file mode 100644
index 0000000000000000000000000000000000000000..f14d5573e8636f6ba242e101e0debbafbd7e23ef
--- /dev/null
+++ b/role/PROJECT_Everyone/PROJECT_Everyone.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<role xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/role/1.2.0">
+  <name>PROJECT_Everyone</name>
+  <title>Everyone</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</role>
diff --git a/role/PROJECT_FieldStaff/PROJECT_FieldStaff.aod b/role/PROJECT_FieldStaff/PROJECT_FieldStaff.aod
new file mode 100644
index 0000000000000000000000000000000000000000..5dafdb429b00e80d5240f8919a1c2807fffc6ad8
--- /dev/null
+++ b/role/PROJECT_FieldStaff/PROJECT_FieldStaff.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<role xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/role/1.2.0">
+  <name>PROJECT_FieldStaff</name>
+  <title>Field staff</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</role>
diff --git a/role/PROJECT_HumanResources/PROJECT_HumanResources.aod b/role/PROJECT_HumanResources/PROJECT_HumanResources.aod
new file mode 100644
index 0000000000000000000000000000000000000000..3f8a7fd6594d4240ab99cefaf74299c5e7f04150
--- /dev/null
+++ b/role/PROJECT_HumanResources/PROJECT_HumanResources.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<role xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/role/1.2.0">
+  <name>PROJECT_HumanResources</name>
+  <title>Human Resources</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</role>
diff --git a/role/PROJECT_Marketing/PROJECT_Marketing.aod b/role/PROJECT_Marketing/PROJECT_Marketing.aod
new file mode 100644
index 0000000000000000000000000000000000000000..f28c9ae8f6709bd9259e4c27e44eff8960812378
--- /dev/null
+++ b/role/PROJECT_Marketing/PROJECT_Marketing.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<role xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/role/1.2.0">
+  <name>PROJECT_Marketing</name>
+  <title>Marketing</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</role>
diff --git a/role/PROJECT_OfficeStaff/PROJECT_OfficeStaff.aod b/role/PROJECT_OfficeStaff/PROJECT_OfficeStaff.aod
new file mode 100644
index 0000000000000000000000000000000000000000..9b70512446b0341a4d9faf6500f963b548f1c745
--- /dev/null
+++ b/role/PROJECT_OfficeStaff/PROJECT_OfficeStaff.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<role xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/role/1.2.0">
+  <name>PROJECT_OfficeStaff</name>
+  <title>Office staff</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</role>
diff --git a/role/PROJECT_Project/PROJECT_Project.aod b/role/PROJECT_Project/PROJECT_Project.aod
new file mode 100644
index 0000000000000000000000000000000000000000..ecc4f7aae414ccb4a5666e7e85517cbb967e2d8a
--- /dev/null
+++ b/role/PROJECT_Project/PROJECT_Project.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<role xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/role/1.2.0">
+  <name>PROJECT_Project</name>
+  <title>Project</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</role>
diff --git a/role/PROJECT_ProjectManagement/PROJECT_ProjectManagement.aod b/role/PROJECT_ProjectManagement/PROJECT_ProjectManagement.aod
new file mode 100644
index 0000000000000000000000000000000000000000..8016375c8bea14a5dcbf700fef8d73a2594f49eb
--- /dev/null
+++ b/role/PROJECT_ProjectManagement/PROJECT_ProjectManagement.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<role xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/role/1.2.0">
+  <name>PROJECT_ProjectManagement</name>
+  <title>Project Management</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</role>
diff --git a/role/PROJECT_Resource/PROJECT_Resource.aod b/role/PROJECT_Resource/PROJECT_Resource.aod
new file mode 100644
index 0000000000000000000000000000000000000000..e6904e26c263922ce1ebc0fd76ffb6fd708170fd
--- /dev/null
+++ b/role/PROJECT_Resource/PROJECT_Resource.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<role xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/role/1.2.0">
+  <name>PROJECT_Resource</name>
+  <title>Resource</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</role>
diff --git a/role/PROJECT_Service/PROJECT_Service.aod b/role/PROJECT_Service/PROJECT_Service.aod
new file mode 100644
index 0000000000000000000000000000000000000000..7d586ddd20ca149d4848ed62e3ef19a747831c53
--- /dev/null
+++ b/role/PROJECT_Service/PROJECT_Service.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<role xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/role/1.2.0">
+  <name>PROJECT_Service</name>
+  <title>Service</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</role>
diff --git a/role/PROJECT_Support/PROJECT_Support.aod b/role/PROJECT_Support/PROJECT_Support.aod
new file mode 100644
index 0000000000000000000000000000000000000000..39c787876828fb6d9faeb1e18e1270c6a862fad1
--- /dev/null
+++ b/role/PROJECT_Support/PROJECT_Support.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<role xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/role/1.2.0">
+  <name>PROJECT_Support</name>
+  <title>Support</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+</role>